{#
/**
 * @file
 * FigureVideo with Twicpics component.
 *
 * @param string $twic_domain
 *   The Twicpics domain to use.
 * @param string $twic_path
 *   The Twicpics path to use.
 * @param object $twic_transform
 *   Custom transforms for Twicpics.
 */
#}

{% extends '@ui-pkg/FigureVideo/FigureVideo.twig' %}

{% set twic_param = 'v1' %}
{% if twic_transform is defined %}
  {% set formatted_transform = [] %}
  {% for key, value in twic_transform %}
    {% set formatted_transform = formatted_transform|merge(['%s=%s'|format(key, value)]) %}
  {% endfor %}
  {% set formatted_transform = formatted_transform|join('/') %}

  {% set twic_param = 'v1/%s'|format(formatted_transform) %}
  {% set attr = (attr ?? {})|merge({ data_option_transform: formatted_transform }) %}
{% endif %}

{% if twic_domain is defined %}
  {% set attr = (attr ?? {})|merge({ data_option_domain: twic_domain }) %}
{% endif %}

{% if twic_path is defined %}
  {% set attr = (attr ?? {})|merge({ data_option_path: twic_path }) %}
{% endif %}

{% block sources %}
  {% if sources is empty %}
    {% set twic_src =
      twig_toolkit_url(src).withQueryParameter('twic', twic_param).withScheme('https')
    %}

    {% if twic_domain is defined %}
      {% set twic_src = twic_src.withHost(twic_domain) %}
    {% endif %}

    {% if twic_path is defined %}
      {% set twic_src = twic_src.withPath(twic_path ~ twic_src.getPath()) %}
    {% endif %}

    {% set sources = [
      {
        src: twic_src.withQueryParameter('twic', '%s/output=%s'|format(twic_param, 'h265')),
        data_output: lazy ? 'h265' : false,
        type: 'video/mp4;codecs=hvc1'
      },
      {
        src: twic_src.withQueryParameter('twic', '%s/output=%s'|format(twic_param, 'vp9')),
        data_output: lazy ? 'vp9' : false,
        type: 'video/webm;codecs=vp9'
      },
      {
        src: twic_src.withQueryParameter('twic', '%s/output=%s'|format(twic_param, 'h264')),
        data_output: lazy ? 'h264' : false
      }
    ] %}
  {% endif %}

  {% for source in sources %}
    {% if twic_src is empty and source.src is not empty %}
      {% set source_twic_src =
        twig_toolkit_url(source.src).withQueryParameter('twic', twic_param).withScheme('https')
      %}

      {% if twic_domain is defined %}
        {% set source_twic_src = source_twic_src.withHost(twic_domain) %}
      {% endif %}

      {% if twic_path is defined %}
        {% set source_twic_src = source_twic_src.withPath(twic_path ~ source_twic_src.getPath()) %}
      {% endif %}
    {% else %}
      {% set source_twic_src = source.src %}
    {% endif %}

    <source {{
      html_attributes(
        merge_html_attributes(
          source,
          {
            src: lazy ? false : source_twic_src|default(false),
            data_src: lazy ? source_twic_src|default(false) : false
          }
        )
      )
      }} />
  {% endfor %}
{% endblock %}
