aboutsummaryrefslogtreecommitdiff
path: root/templates/components/image.html
blob: c8230e1f637025c6b61c1f078f6021d12ec861cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
{% component image(page, config, sources, caption="", class="", alt="", w=0, h=0) %}
{%- if caption %}<figure class="fi{% if class %} {{class}}{% endif %}">{% endif  %}
<picture{% if class %} class="{{class}}"{% endif %}>
  {%- for src in sources %}

  {%- set video = src | split(pat="/") | last %}
  {%- set dirtest = src | trim_start(pat="./") %}
  {%- if dirtest is containing(pat="/") %} {%- set reldir = true %} {%- endif %}
  {%- if page and page.path %}{%- set pagepath = page.path %}{%- elif section and section.path %}{%- set pagepath = section.path %}{%- endif %}

  {%- if src is starting_with(pat="./") and reldir %}{# Relative Path #}
    {%- set path = (src | trim_start(pat="./") | split(pat="/"))[:-1] | join(sep="/") | trim_start(pat="/") -%}
    {%- set path = path ~ "/" %}
    {%- if not w or not h %}
      {%- if page.lang != config.default_language %}
        {%- set metapath = (pagepath ~ path ~ video) | replace(from="/" ~ page.lang ~ "/", to="/") %}
      {%- else %}
        {%- set metapath = pagepath ~ path ~ video %}
      {%- endif %}
      {%- set meta = get_image_metadata(path=metapath) %}
      {%- set w = meta.width %}
      {%- set h = meta.height %}
    {%- endif %}

  {%- elif src is starting_with(pat="/") %}{# Root Path #}
    {%- set rootpath = (src | split(pat="/"))[:-1] | join(sep="/") -%}
    {%- set path = (config.base_url if config else "") ~ rootpath ~ "/"  %}
    {%- if not w or not h %}
      {%- set metapath = rootpath ~ "/" ~ video %}
      {%- set meta = get_image_metadata(path=metapath) %}
      {%- set w = meta.width %}
      {%- set h = meta.height %}
    {%- endif %}

  {%- else %}{# Same Directory Path #}
    {%- set path = "" %}
    {%- if not w or not h %}
      {%- if page.lang != config.default_language %}
        {%- set metapath = (pagepath ~ video) | replace(from="/" ~ page.lang ~ "/", to="/") %}
      {%- else %}
        {%- set metapath = pagepath ~ video %}
      {%- endif %}
      {%- set meta = get_image_metadata(path=metapath) %}
      {%- set w = meta.width %}
      {%- set h = meta.height %}
    {%- endif %}

  {%- endif %}

  {%- set type = src | split(pat=".") | last  %}
  {%- if type is matching(pat="^mov$") %}{%- set type = "quicktime"  %}{% endif  %}
  {%- if loop.last %}
  {%- if not alt %}
    {%- set alt = video | split(pat=".") | first %}
  {%- endif %}
  <img src="{{ path | safe }}{{ video | safe }}" alt="{{ alt }}"{% if w %} width="{{w}}"{% endif %}{% if h %} height="{{h}}"{% endif %} loading="lazy" />
  {%- else %}
  <source srcset="{{ path | safe }}{{ video | safe }}" type="{{ 'image/' ~ type }}" />
  {%- endif %}
  {%- endfor %}
</picture>
{%- if caption %}<figcaption>{{caption}}</figcaption></figure>{% endif  %}

{% endcomponent image %}