{
  "version": 3,
  "sources": ["/cdn/shop/t/17/assets/media-gallery.js?nini_variant_gallery=20260618b"],
  "sourcesContent": ["if (!customElements.get('media-gallery')) {\n  customElements.define(\n    'media-gallery',\n    class MediaGallery extends HTMLElement {\n      constructor() {\n        super();\n        this.elements = {\n          liveRegion: this.querySelector('[id^=\"GalleryStatus\"]'),\n          viewer: this.querySelector('[id^=\"GalleryViewer\"]'),\n          thumbnails: this.querySelector('[id^=\"GalleryThumbnails\"]'),\n        };\n        this.mql = window.matchMedia('(min-width: 750px)');\n        if (!this.elements.thumbnails) return;\n\n        this.elements.viewer.addEventListener('slideChanged', debounce(this.onSlideChanged.bind(this), 500));\n        this.elements.thumbnails.querySelectorAll('[data-target]').forEach((mediaToSwitch) => {\n          mediaToSwitch\n            .querySelector('button')\n            .addEventListener('click', this.setActiveMedia.bind(this, mediaToSwitch.dataset.target, false));\n        });\n        this.elements.thumbnails.addEventListener('click', this.onThumbnailClick.bind(this));\n        this.elements.viewer.addEventListener('click', this.onViewerMediaClick.bind(this), true);\n        if (this.dataset.desktopLayout.includes('thumbnail') && this.mql.matches) this.removeListSemantic();\n      }\n\n      onSlideChanged(event) {\n        if (!event || !event.detail || !event.detail.currentElement) return;\n        const thumbnail = this.elements.thumbnails.querySelector(\n          `[data-target=\"${event.detail.currentElement.dataset.mediaId}\"]`\n        );\n        this.setActiveThumbnail(thumbnail);\n      }\n\n      onThumbnailClick(event) {\n        const thumbnail = event.target.closest('[data-target]');\n        if (!thumbnail || !this.elements.thumbnails.contains(thumbnail)) return;\n\n        event.preventDefault();\n        this.setActiveMedia(thumbnail.dataset.target, false);\n      }\n\n      onViewerMediaClick(event) {\n        const mediaItem = event.target.closest('.product__media-item[data-media-id]');\n        if (!mediaItem || !this.elements.viewer.contains(mediaItem) || mediaItem.classList.contains('is-active')) return;\n\n        event.preventDefault();\n        event.stopPropagation();\n        this.setActiveMedia(mediaItem.dataset.mediaId, false);\n      }\n\n      setActiveMedia(mediaId, prepend) {\n        const mediaSelector = `[data-media-id=\"${mediaId}\"]`;\n        const activeMedia =\n          this.elements.viewer.querySelector(mediaSelector) ||\n          this.createMissingVariantMedia(mediaId) ||\n          this.elements.viewer.querySelector('[data-media-id]');\n        if (!activeMedia) {\n          return;\n        }\n        this.elements.viewer.querySelectorAll('[data-media-id]').forEach((element) => {\n          element.classList.remove('is-active');\n        });\n        activeMedia?.classList?.add('is-active');\n\n        if (prepend) {\n          activeMedia.parentElement.firstChild !== activeMedia && activeMedia.parentElement.prepend(activeMedia);\n\n          if (this.elements.thumbnails) {\n            const activeThumbnail = this.elements.thumbnails.querySelector(`[data-target=\"${mediaId}\"]`);\n            activeThumbnail.parentElement.firstChild !== activeThumbnail && activeThumbnail.parentElement.prepend(activeThumbnail);\n          }\n\n          if (this.elements.viewer.slider) this.elements.viewer.resetPages();\n        }\n\n        this.preventStickyHeader();\n        window.setTimeout(() => {\n          if (!this.mql.matches || this.elements.thumbnails) {\n            activeMedia.parentElement.scrollTo({ left: activeMedia.offsetLeft });\n          }\n          const activeMediaRect = activeMedia.getBoundingClientRect();\n          // Don't scroll if the image is already in view\n          if (activeMediaRect.top > -0.5) return;\n          const top = activeMediaRect.top + window.scrollY;\n          window.scrollTo({ top: top, behavior: 'smooth' });\n        });\n        this.playActiveMedia(activeMedia);\n\n        if (!this.elements.thumbnails) return;\n        const activeThumbnail = this.elements.thumbnails.querySelector(`[data-target=\"${mediaId}\"]`);\n        this.setActiveThumbnail(activeThumbnail);\n        this.announceLiveRegion(activeMedia, activeThumbnail.dataset.mediaPosition);\n      }\n\n      createMissingVariantMedia(mediaId) {\n        const mediaItems = Array.from(this.elements.viewer.querySelectorAll('.product__media-item[data-media-id]'));\n        const templateMedia = mediaItems.find((item) => item.querySelector('.product__modal-opener--image img'));\n        const rawMediaId = mediaId?.split('-').pop();\n        const modalImage = document.querySelector(`product-modal [data-media-id=\"${rawMediaId}\"]`);\n        const thumbnailImage = this.elements.thumbnails?.querySelector(`[data-target=\"${mediaId}\"] img`);\n        const sourceImage = modalImage || thumbnailImage;\n\n        if (!templateMedia || !sourceImage || !rawMediaId) return null;\n\n        const fallbackMedia = templateMedia.cloneNode(true);\n        fallbackMedia.id = `Slide-${mediaId}`;\n        fallbackMedia.dataset.mediaId = mediaId;\n        fallbackMedia.dataset.niniVariantFallback = 'true';\n        fallbackMedia.classList.remove('is-active');\n        fallbackMedia.querySelectorAll('[id]').forEach((element) => {\n          element.id = `${element.id}-${rawMediaId}`;\n        });\n\n        const fallbackImage = fallbackMedia.querySelector('.product__modal-opener--image img');\n        if (!fallbackImage) return null;\n\n        const sourceSrcset = sourceImage.getAttribute('srcset');\n        const sourceSizes = sourceImage.getAttribute('sizes');\n        if (sourceSrcset) {\n          fallbackImage.setAttribute('srcset', sourceSrcset);\n        } else {\n          fallbackImage.removeAttribute('srcset');\n        }\n        if (sourceSizes) fallbackImage.setAttribute('sizes', sourceSizes);\n        fallbackImage.src = sourceImage.getAttribute('src') || sourceImage.currentSrc || sourceImage.src;\n        fallbackImage.alt = sourceImage.alt || thumbnailImage?.alt || fallbackImage.alt;\n        fallbackImage.loading = 'eager';\n\n        fallbackMedia.querySelectorAll('[data-media-id]').forEach((element) => {\n          element.dataset.mediaId = rawMediaId;\n        });\n\n        templateMedia.parentElement.append(fallbackMedia);\n        return fallbackMedia;\n      }\n\n      setActiveThumbnail(thumbnail) {\n        if (!this.elements.thumbnails || !thumbnail) return;\n\n        this.elements.thumbnails\n          .querySelectorAll('button')\n          .forEach((element) => element.removeAttribute('aria-current'));\n        thumbnail.querySelector('button').setAttribute('aria-current', true);\n        if (this.elements.thumbnails.isSlideVisible(thumbnail, 10)) return;\n\n        this.elements.thumbnails.slider.scrollTo({ left: thumbnail.offsetLeft });\n      }\n\n      announceLiveRegion(activeItem, position) {\n        const image = activeItem.querySelector('.product__modal-opener--image img');\n        if (!image) return;\n        image.onload = () => {\n          this.elements.liveRegion.setAttribute('aria-hidden', false);\n          this.elements.liveRegion.innerHTML = window.accessibilityStrings.imageAvailable.replace('[index]', position);\n          setTimeout(() => {\n            this.elements.liveRegion.setAttribute('aria-hidden', true);\n          }, 2000);\n        };\n        image.src = image.src;\n      }\n\n      playActiveMedia(activeItem) {\n        window.pauseAllMedia();\n        const deferredMedia = activeItem.querySelector('.deferred-media');\n        if (deferredMedia) deferredMedia.loadContent(false);\n      }\n\n      preventStickyHeader() {\n        this.stickyHeader = this.stickyHeader || document.querySelector('sticky-header');\n        if (!this.stickyHeader) return;\n        this.stickyHeader.dispatchEvent(new Event('preventHeaderReveal'));\n      }\n\n      removeListSemantic() {\n        if (!this.elements.viewer.slider) return;\n        this.elements.viewer.slider.setAttribute('role', 'presentation');\n        this.elements.viewer.sliderItems.forEach((slide) => slide.setAttribute('role', 'presentation'));\n      }\n    }\n  );\n}\n"],
  "mappings": "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",
  "names": ["activeThumbnail"]
}
