{% set MEDIA_OBJECT_DEFAULTS = {
  className: '',
  caption: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus, asperiores aspernatur autem distinctio dolor ducimus ex ipsa odio omnis ratione reiciendis, rerum sit temporibus ullam velit voluptates voluptatibus? Cupiditate, neque?',
  useFancybox: false,
  fancyboxIcon: 'icons/search',
  galleryID: '',
  media: {
    isVideo: false,
    sources: [
      { media: 1200, size: '1060x530' },
      { media: 767, size: '727x417' },
      { media: 460, size: '316x230' }
    ],
    image: {
      src: '320x160'
    }
  }
} %}

{% macro MediaObject(settings = {}) %}
  {% set settings = merge(
    MEDIA_OBJECT_DEFAULTS,
    settings,
    {
      media: merge(
        settings.media,
        {
          className: 'media-object__picture',
          image: merge(settings.media.image, { className: 'media-object__image' })
        }
      )
    }
  ) %}

  {% set classNames = [
    settings.className,
    'media-object--video' if settings.media.isVideo,
    'media-object--fancy-box-video' if settings.media.isVideo and settings.useFancybox
  ] %}

  {% set content %}
    {% if settings.media.isVideo %}
      {% set videoSettings = {
        sources: settings.media.sources,
        attrs: merge(settings.media.attrs, { controls: settings.media.isVideo and not settings.useFancybox })
      } %}

      {{ Video(videoSettings) }}
    {% else %}
      {{ Image(settings.media) }}
    {% endif %}
  {% endset %}

  <figure class='media-object {{ setClass(classNames) }}'>
    {% if settings.useFancybox %}
      {% set uid = settings.galleryID if settings.galleryID else 'media-object-gallery-' + unique() %}
      {% set format = '1920x1080.mp4' if settings.media.isVideo else 'jpg' %}
      {% set fancyHref = settings.media.sources[0].src if settings.media.isVideo else Helpers.getPlaceholderImageURL( size = '1920x1080', format = format ) %}

      <a href= "{{ fancyHref }}"
         data-fancybox="{{ uid }}"
         class='media-object__link'
      >
        {% if settings.fancyboxIcon %}
          <span class="media-object__icon" aria-hidden="true">
            {{ Helpers.svg(settings.fancyboxIcon) }}
          </span>
        {% endif %}
        {{ content | safe }}
      </a>
    {% else %}
      {{ content | safe }}
    {% endif %}
    {% if settings.caption %}
      <figcaption class='media-object__figcaption'>{{ settings.caption | safe }}</figcaption>
    {% endif %}
  </figure>
{% endmacro %}
