{
  "version": 3,
  "sources": ["/cdn/shop/t/51/assets/media-gallery.js?vlx_pdp_media_fix=260615_trento"],
  "sourcesContent": ["if (!customElements.get('media-gallery')) {\n  customElements.define(\n    'media-gallery',\n    class MediaGallery extends HTMLElement {\n      constructor() {\n        super();\n\n        this.selectors = {\n          viewer: '[id^=\"GalleryViewer\"]',\n          thumbnails: '[id^=\"GalleryThumbnails\"]',\n          mediaList: '[id^=\"Slider-Gallery\"]',\n          mediaItems: ['.product__media-item'],\n        };\n\n        this.sliderInstance = false;\n        this.thumbsInstance = false;\n        this.vlxInitialVariantMediaSkipped = false;\n        this.isInitialized = false;\n        this.isInitializing = false;\n        this.connectionToken = 0;\n        this.mobileMediaQuery = null;\n        this.mediaQueryChangeHandler = null;\n        this.galleryClickHandler = this.handleGalleryClick.bind(this);\n        this.galleryOpenContext = null;\n        this.pendingMediaLayoutAfterClose = false;\n        this.isTearingDown = false;\n      }\n\n      connectedCallback() {\n        this.isTearingDown = false;\n        const connectionToken = ++this.connectionToken;\n        FoxTheme.Motion.inView(this, () => {\n          if (!this.isConnected || connectionToken !== this.connectionToken) return;\n          this.init();\n        });\n      }\n\n      disconnectedCallback() {\n        this.isTearingDown = true;\n        this.connectionToken += 1;\n\n        if (this.mobileMediaQuery && this.mediaQueryChangeHandler) {\n          if (this.mobileMediaQuery.removeEventListener) {\n            this.mobileMediaQuery.removeEventListener('change', this.mediaQueryChangeHandler);\n          } else if (this.mobileMediaQuery.removeListener) {\n            this.mobileMediaQuery.removeListener(this.mediaQueryChangeHandler);\n          }\n        }\n        this.removeEventListener('click', this.galleryClickHandler);\n\n        const lightbox = this.lightbox;\n        if (lightbox) {\n          if (lightbox.pswp) lightbox.pswp.close();\n          lightbox.destroy();\n        }\n        this.destroySlider();\n\n        this.lightbox = null;\n        this.elements = null;\n        this.mobileMediaQuery = null;\n        this.mediaQueryChangeHandler = null;\n        this.galleryOpenContext = null;\n        this.pendingMediaLayoutAfterClose = false;\n        this.isInitialized = false;\n        this.isInitializing = false;\n        this.vlxInitialVariantMediaSkipped = false;\n        this.removeAttribute('data-vlx-gallery-ready');\n        const galleryButton = this.querySelector('[data-vlx-gallery-more]');\n        if (galleryButton) galleryButton.hidden = true;\n      }\n\n      init() {\n        if (this.isInitialized || this.isInitializing || !this.isConnected) return;\n\n        this.isInitializing = true;\n        try {\n          this.elements = window.FoxTheme.utils.queryDomNodes(this.selectors, this);\n          this.mediaLayout = this.dataset.mediaLayout;\n          this.onlyImage = this.dataset.onlyImage === 'true';\n          this.enableDesktopSlider = this.dataset.enableDesktopSlider === 'true';\n          this.enableMobileThumbnails = this.dataset.enableMobileThumbnails === 'true';\n          this.enableImageZoom = this.dataset.enableImageZoom === 'true';\n          this.context = this.dataset.context;\n          this.setSliderOptions();\n\n          this.mobileMediaQuery = window.matchMedia(FoxTheme.config.mediaQueryMobile);\n          this.mediaQueryChangeHandler = this.updateMediaLayout.bind(this);\n          if (this.mobileMediaQuery.addEventListener) {\n            this.mobileMediaQuery.addEventListener('change', this.mediaQueryChangeHandler);\n          } else if (this.mobileMediaQuery.addListener) {\n            this.mobileMediaQuery.addListener(this.mediaQueryChangeHandler);\n          }\n          this.addEventListener('click', this.galleryClickHandler);\n\n          if (this.enableImageZoom) {\n            try {\n              this.initImageZoom();\n            } catch (error) {\n              this.lightbox = null;\n            }\n          }\n\n          this.isInitialized = true;\n          this.updateMediaLayout();\n        } finally {\n          this.isInitializing = false;\n        }\n      }\n\n      setSliderOptions() {\n        const mediaItemGap = parseInt(this.dataset.mediaItemGap);\n        const mediaItemGapMobile = parseInt(this.dataset.mediaItemGapMobile);\n        const mediaItemsCount = this.querySelectorAll('.product__media-item').length;\n        const enableLoop = mediaItemsCount > 1;\n\n        this.sliderOptions = {\n          init: false,\n          slidesPerView: 1,\n          spaceBetween: mediaItemGapMobile,\n          loop: enableLoop,\n          grabCursor: true,\n          allowTouchMove: true,\n          autoHeight: true,\n          breakpoints: {\n            768: {\n              spaceBetween: mediaItemGap,\n            },\n          },\n          navigation: {\n            nextEl: this.querySelector('.swiper-button-next'),\n            prevEl: this.querySelector('.swiper-button-prev'),\n          },\n          pagination: {\n            el: this.querySelector('.swiper-pagination'),\n            clickable: true,\n            type: 'fraction',\n          },\n          threshold: 2,\n        };\n\n        this.thumbsOptions = {\n          slidesPerView: 4,\n          breakpoints: {\n            461: {\n              slidesPerView: 5,\n              direction: 'horizontal',\n            },\n          },\n          spaceBetween: mediaItemGapMobile,\n          loop: false,\n          freeMode: true,\n          watchSlidesProgress: true,\n          threshold: 2,\n          breakpoints: {\n            768: {\n              spaceBetween: mediaItemGap,\n            },\n          },\n        };\n\n        switch (this.mediaLayout) {\n          case 'vertical-carousel':\n            this.thumbsOptions.breakpoints = {\n              ...this.thumbsOptions.breakpoints,\n              768: {\n                direction: 'vertical',\n                slidesPerView: 'auto',\n                spaceBetween: mediaItemGap,\n              },\n            };\n            break;\n          case 'carousel':\n            this.thumbsOptions.breakpoints = {\n              ...this.thumbsOptions.breakpoints,\n              1024: {\n                slidesPerView: 5,\n              },\n              1536: {\n                slidesPerView: 7,\n              },\n            };\n            break;\n        }\n      }\n\n      updateMediaLayout() {\n        if (!this.elements) return;\n\n        const isMobile = this.mobileMediaQuery ? this.mobileMediaQuery.matches : FoxTheme.config.mqlMobile;\n        const galleryButton = this.querySelector('[data-vlx-gallery-more]');\n        const canUseDesktopGallery = this.canUseDesktopGallery();\n\n        this.removeAttribute('data-vlx-gallery-ready');\n        if (galleryButton) galleryButton.hidden = true;\n\n        if (this.galleryOpenContext?.isDesktop && this.lightbox?.pswp && isMobile) {\n          this.pendingMediaLayoutAfterClose = true;\n          this.lightbox.pswp.close();\n          return;\n        }\n\n        if (!isMobile && canUseDesktopGallery) {\n          this.setAttribute('data-vlx-gallery-ready', 'true');\n          galleryButton.hidden = false;\n        }\n\n        if (this.dataset.heroGrid === 'true' && !isMobile) {\n          this.destroySlider();\n          return;\n        }\n\n        if (isMobile) {\n          this.initSlider();\n        } else {\n          if (this.enableDesktopSlider) {\n            this.initSlider();\n          } else {\n            this.destroySlider();\n          }\n        }\n      }\n\n      initSlider() {\n        if (typeof this.sliderInstance !== 'object') {\n          if ((this.enableDesktopSlider || this.enableMobileThumbnails) && this.elements.thumbnails) {\n            this.thumbsInstance = new window.FoxTheme.Carousel(this.elements.thumbnails, this.thumbsOptions);\n            this.thumbsInstance.init();\n\n            this.sliderOptions.thumbs = {\n              swiper: this.thumbsInstance.slider,\n              autoScrollOffset: 2,\n            };\n          }\n\n          this.sliderInstance = new window.FoxTheme.Carousel(this.elements.viewer, this.sliderOptions, [\n            FoxTheme.Swiper.Thumbs,\n          ]);\n          this.sliderInstance.init();\n\n          this.handleSliderAfterInit();\n          this.handleSlideChange();\n\n          this.sliderInstance.slider.init();\n        }\n      }\n\n      destroySlider() {\n        if (this.sliderInstance && typeof this.sliderInstance === 'object' && this.sliderInstance.slider) {\n          this.sliderInstance.slider.destroy();\n        }\n        this.sliderInstance = false;\n\n        if (this.thumbsInstance && typeof this.thumbsInstance === 'object' && this.thumbsInstance.slider) {\n          this.thumbsInstance.slider.destroy();\n        }\n        this.thumbsInstance = false;\n      }\n\n      initThumbsSlider() {\n        if (typeof this.thumbsInstance !== 'object') {\n          this.thumbsInstance = new window.FoxTheme.Carousel(this.selectors.thumbnails, this.thumbsOptions);\n          this.thumbsInstance.init();\n        }\n      }\n\n      initImageZoom() {\n        const mediaNodes = this.getLiveMediaNodes();\n        const dataSource = mediaNodes.map((media) => {\n          const mediaType = media.dataset.mediaType;\n          if (mediaType === 'model') {\n            const model = media.querySelector('product-model');\n            return {\n              id: media.dataset.mediaIndex,\n              html: model ? `<div class=\"pswp__item--model\">${model.outerHTML}</div>` : '',\n              mediaType,\n            };\n          }\n          if (mediaType === 'video' || mediaType === 'external_video') {\n            const video = media.querySelector('video-element');\n            return {\n              id: media.dataset.mediaIndex,\n              html: video ? `<div class=\"pswp__item--${mediaType}\">${video.outerHTML}</div>` : '',\n              mediaType,\n            };\n          }\n          if (mediaType === 'image') {\n            return {\n              id: media.dataset.mediaIndex,\n              src: media.dataset.src,\n              width: media.dataset.pswpWidth,\n              height: media.dataset.pswpHeight,\n              mediaType,\n            };\n          }\n          return null;\n        }).filter(Boolean);\n\n        const lightbox = new window.FoxTheme.PhotoSwipeLightbox({\n          dataSource,\n          pswpModule: window.FoxTheme.PhotoSwipe,\n          bgOpacity: 1,\n          arrowPrev: false,\n          arrowNext: false,\n          zoom: false,\n          close: false,\n          counter: false,\n          preloader: false,\n        });\n        this.lightbox = lightbox;\n\n        lightbox.addFilter('thumbEl', (thumbEl, data, index) => {\n          const context = this.galleryOpenContext;\n          if (context?.isDesktop && context.lightbox === lightbox) {\n            return context.trigger?.matches('.js-photoswipe--zoom')\n              ? context.mediaNodes[index]?.querySelector('img') || null\n              : null;\n          }\n\n          if (this.sliderInstance && this.sliderInstance.slider) {\n            const { slides, activeIndex } = this.sliderInstance.slider;\n            if (slides[activeIndex]) {\n              const image = slides[activeIndex].querySelector('img');\n              if (image) return image;\n            }\n          }\n          return thumbEl;\n        });\n\n        lightbox.addFilter('placeholderSrc', (placeholderSrc, { data }, index) => {\n          const context = this.galleryOpenContext;\n          if (context?.isDesktop && context.lightbox === lightbox) {\n            return context.dataSource[index]?.msrc || placeholderSrc;\n          }\n\n          if (this.sliderInstance && this.sliderInstance.slider) {\n            const { slides, activeIndex } = this.sliderInstance.slider;\n            if (slides[activeIndex]) {\n              const image = slides[activeIndex].querySelector('img');\n              if (image) return image.src;\n            }\n          }\n          return placeholderSrc;\n        });\n\n        let lastLightboxIndex = null;\n        lightbox.on('change', () => {\n          if (typeof window.pauseAllMedia === 'function') window.pauseAllMedia(this);\n          if (this.galleryOpenContext?.isDesktop && this.galleryOpenContext.lightbox === lightbox) {\n            this.updateDesktopGalleryUi(lightbox.pswp);\n          }\n        });\n\n        lightbox.on('close', () => {\n          if (lightbox.pswp && !(this.galleryOpenContext?.isDesktop && this.galleryOpenContext.lightbox === lightbox)) {\n            lastLightboxIndex = lightbox.pswp.currIndex;\n          }\n        });\n\n        lightbox.on('destroy', () => {\n          const context = this.galleryOpenContext;\n          if (context?.isDesktop && context.lightbox === lightbox) {\n            this.restorePresentationOptions(lightbox.options, context.savedOptions);\n            this.galleryOpenContext = null;\n\n            if (!this.isTearingDown) this.focusGalleryTrigger(context.trigger);\n            if (this.pendingMediaLayoutAfterClose) {\n              this.pendingMediaLayoutAfterClose = false;\n              window.requestAnimationFrame(() => {\n                if (this.isConnected) this.updateMediaLayout();\n              });\n            }\n          } else if (this.sliderInstance && this.sliderInstance.slider && lastLightboxIndex !== null) {\n            const slider = this.sliderInstance.slider;\n            const targetIndex = lastLightboxIndex;\n            const currentIndex = typeof slider.realIndex === 'number' ? slider.realIndex : slider.activeIndex;\n\n            if (targetIndex >= 0 && currentIndex !== targetIndex) {\n              window.requestAnimationFrame(() => {\n                if (!this.isConnected || !this.sliderInstance?.slider) return;\n                if (slider.params.loop && typeof slider.slideToLoop === 'function') {\n                  slider.slideToLoop(targetIndex, 0, false);\n                } else {\n                  slider.slideTo(targetIndex, 0, false);\n                }\n              });\n            }\n            lastLightboxIndex = null;\n          }\n        });\n\n        lightbox.on('pointerDown', (event) => {\n          if (lightbox.pswp?.currSlide?.data?.mediaType !== 'image') event.preventDefault();\n        });\n\n        lightbox.on('uiRegister', () => {\n          const pswp = lightbox.pswp;\n          const context = this.galleryOpenContext;\n          if (context?.isDesktop && context.lightbox === lightbox) {\n            pswp.element.classList.add('vlx-pdp-desktop-gallery');\n            pswp.element.setAttribute('role', 'dialog');\n            pswp.element.setAttribute('aria-modal', 'true');\n            pswp.element.setAttribute('aria-label', this.dataset.vlxGalleryLabel || '');\n\n            pswp.ui.registerElement({\n              name: 'vlx-gallery-prev',\n              ariaLabel: this.dataset.vlxPreviousLabel,\n              order: 1,\n              isButton: true,\n              appendTo: 'root',\n              html: '<svg aria-hidden=\"true\" focusable=\"false\" viewBox=\"0 0 20 20\"><path d=\"M12.5 3.5 6 10l6.5 6.5\" /></svg>',\n              onInit: (element) => {\n                context.previousButton = element;\n              },\n              onClick: (event, element, instance) => instance.prev(),\n            });\n            pswp.ui.registerElement({\n              name: 'vlx-gallery-next',\n              ariaLabel: this.dataset.vlxNextLabel,\n              order: 2,\n              isButton: true,\n              appendTo: 'root',\n              html: '<svg aria-hidden=\"true\" focusable=\"false\" viewBox=\"0 0 20 20\"><path d=\"m7.5 3.5 6.5 6.5-6.5 6.5\" /></svg>',\n              onInit: (element) => {\n                context.nextButton = element;\n              },\n              onClick: (event, element, instance) => instance.next(),\n            });\n            pswp.ui.registerElement({\n              name: 'vlx-gallery-close',\n              ariaLabel: this.dataset.vlxCloseLabel,\n              order: 3,\n              isButton: true,\n              appendTo: 'root',\n              html: '<svg aria-hidden=\"true\" focusable=\"false\" viewBox=\"0 0 20 20\"><path d=\"m5 5 10 10M15 5 5 15\" /></svg>',\n              onInit: (element) => {\n                context.closeButton = element;\n              },\n              onClick: (event, element, instance) => instance.close(),\n            });\n            pswp.ui.registerElement({\n              name: 'vlx-gallery-thumbnails',\n              className: 'vlx-pdp-gallery__thumbs',\n              appendTo: 'root',\n              isButton: false,\n              onInit: (element, instance) => {\n                const track = document.createElement('div');\n                track.className = 'vlx-pdp-gallery__thumbs-track';\n                const buttons = context.dataSource.map((image, index) => {\n                  const button = document.createElement('button');\n                  button.type = 'button';\n                  button.className = 'vlx-pdp-gallery__thumb';\n                  button.setAttribute('aria-label', this.formatGalleryLabel(this.dataset.vlxChooseLabel, index + 1));\n                  button.dataset.galleryIndex = String(index);\n\n                  const thumbnail = document.createElement('img');\n                  thumbnail.src = image.msrc;\n                  thumbnail.alt = '';\n                  thumbnail.loading = 'lazy';\n                  thumbnail.draggable = false;\n                  button.appendChild(thumbnail);\n                  button.addEventListener('click', (event) => {\n                    event.preventDefault();\n                    instance.goTo(index);\n                  });\n                  track.appendChild(button);\n                  return button;\n                });\n                element.appendChild(track);\n                context.thumbnailTrack = track;\n                context.thumbnailButtons = buttons;\n                this.updateDesktopGalleryUi(instance);\n              },\n            });\n            pswp.ui.registerElement({\n              name: 'vlx-gallery-status',\n              className: 'vlx-pdp-gallery__status',\n              appendTo: 'root',\n              isButton: false,\n              onInit: (element, instance) => {\n                element.setAttribute('role', 'status');\n                element.setAttribute('aria-live', 'polite');\n                element.setAttribute('aria-atomic', 'true');\n                context.statusElement = element;\n                this.updateDesktopGalleryUi(instance);\n              },\n            });\n            return;\n          }\n\n          if (!this.onlyImage) {\n            pswp.ui.registerElement({\n              name: 'next',\n              ariaLabel: 'Next slide',\n              order: 3,\n              isButton: true,\n              html: '<svg class=\"pswp-icon-next flip-x\" viewBox=\"0 0 100 100\"><path d=\"M 10,50 L 60,100 L 65,90 L 25,50  L 65,10 L 60,0 Z\"></path></svg>',\n              onClick: (event, element, instance) => instance.next(),\n            });\n            pswp.ui.registerElement({\n              name: 'prev',\n              ariaLabel: 'Previous slide',\n              order: 1,\n              isButton: true,\n              html: '<svg class=\"pswp-icon-prev rtl-flip-x\" viewBox=\"0 0 100 100\"><path d=\"M 10,50 L 60,100 L 65,90 L 25,50  L 65,10 L 60,0 Z\"></path></svg>',\n              onClick: (event, element, instance) => instance.prev(),\n            });\n          }\n          pswp.ui.registerElement({\n            name: 'close-zoom',\n            ariaLabel: 'Close zoom image',\n            order: 2,\n            isButton: true,\n            html: '<svg xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\" role=\"presentation\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line></svg>',\n            onClick: (event, element, instance) => instance.close(),\n          });\n        });\n\n        lightbox.init();\n      }\n\n      getLiveMediaNodes() {\n        if (!this.elements?.mediaList) return [];\n        return [...this.elements.mediaList.children].filter(\n          (media) => media.matches('.product__media-item') && !media.classList.contains('swiper-slide-duplicate')\n        );\n      }\n\n      canUseDesktopGallery() {\n        if (\n          this.context !== 'product' ||\n          this.dataset.vlxGalleryEligible !== 'true' ||\n          this.dataset.heroGrid !== 'true' ||\n          !this.enableImageZoom ||\n          !this.querySelector('[data-vlx-gallery-more]') ||\n          typeof this.lightbox?.loadAndOpen !== 'function'\n        ) {\n          return false;\n        }\n\n        const requiredLabels = [\n          this.dataset.vlxGalleryLabel,\n          this.dataset.vlxPreviousLabel,\n          this.dataset.vlxNextLabel,\n          this.dataset.vlxCloseLabel,\n          this.dataset.vlxChooseLabel,\n          this.dataset.vlxPositionTemplate,\n        ];\n        if (requiredLabels.some((label) => !label)) return false;\n\n        const mediaNodes = this.getLiveMediaNodes();\n        if (mediaNodes.length <= 3) return false;\n\n        const mediaIds = new Set();\n        return mediaNodes.every((media) => {\n          const id = media.dataset.mediaId;\n          const width = Number(media.dataset.pswpWidth);\n          const height = Number(media.dataset.pswpHeight);\n          const isValid =\n            media.dataset.mediaType === 'image' &&\n            Boolean(id) &&\n            !mediaIds.has(id) &&\n            Boolean(media.dataset.src) &&\n            Boolean(media.dataset.vlxThumbnailSrc) &&\n            Number.isFinite(width) &&\n            width > 0 &&\n            Number.isFinite(height) &&\n            height > 0;\n          if (id) mediaIds.add(id);\n          return isValid;\n        });\n      }\n\n      buildDesktopGallerySnapshot() {\n        const mediaNodes = this.getLiveMediaNodes();\n        const mediaIds = new Set();\n        const dataSource = [];\n        for (const media of mediaNodes) {\n          const id = media.dataset.mediaId;\n          const width = Number(media.dataset.pswpWidth);\n          const height = Number(media.dataset.pswpHeight);\n          const image = media.querySelector('img');\n          if (\n            media.dataset.mediaType !== 'image' ||\n            !id ||\n            mediaIds.has(id) ||\n            !media.dataset.src ||\n            !media.dataset.vlxThumbnailSrc ||\n            !Number.isFinite(width) ||\n            width <= 0 ||\n            !Number.isFinite(height) ||\n            height <= 0\n          ) {\n            return null;\n          }\n          mediaIds.add(id);\n          dataSource.push({\n            id,\n            src: media.dataset.src,\n            width,\n            height,\n            alt: image?.getAttribute('alt')?.trim() || this.formatGalleryPosition(dataSource.length + 1, mediaNodes.length),\n            msrc: media.dataset.vlxThumbnailSrc,\n            mediaType: 'image',\n          });\n        }\n        return { mediaNodes, dataSource };\n      }\n\n      formatGalleryLabel(template, index) {\n        return String(template || '').replace('__INDEX__', String(index));\n      }\n\n      formatGalleryPosition(index, total) {\n        return String(this.dataset.vlxPositionTemplate || '')\n          .replace('__INDEX__', String(index))\n          .replace('__TOTAL__', String(total));\n      }\n\n      savePresentationOptions(options) {\n        const optionNames = [\n          'dataSource',\n          'loop',\n          'paddingFn',\n          'showHideAnimationType',\n          'showAnimationDuration',\n          'hideAnimationDuration',\n          'returnFocus',\n          'zoom',\n          'imageClickAction',\n          'tapAction',\n          'doubleTapAction',\n        ];\n        return optionNames.map((name) => ({\n          name,\n          hadOwnValue: Object.prototype.hasOwnProperty.call(options, name),\n          value: options[name],\n        }));\n      }\n\n      restorePresentationOptions(options, savedOptions) {\n        if (!options || !savedOptions) return;\n        savedOptions.forEach(({ name, hadOwnValue, value }) => {\n          if (hadOwnValue) {\n            options[name] = value;\n          } else {\n            delete options[name];\n          }\n        });\n      }\n\n      openDesktopGallery(trigger) {\n        if (!this.canUseDesktopGallery() || this.mobileMediaQuery?.matches) return false;\n        if (this.galleryOpenContext?.isDesktop) return false;\n        const snapshot = this.buildDesktopGallerySnapshot();\n        if (!snapshot || snapshot.dataSource.length <= 3) return false;\n\n        const isMoreButton = trigger.hasAttribute('data-vlx-gallery-more');\n        const targetId = isMoreButton\n          ? snapshot.mediaNodes[3]?.dataset.mediaId\n          : trigger.dataset.mediaId;\n        const targetIndex = snapshot.dataSource.findIndex((image) => image.id === targetId);\n        if (targetIndex < 0) return false;\n\n        const lightbox = this.lightbox;\n        const context = {\n          isDesktop: true,\n          lightbox,\n          trigger,\n          mediaNodes: snapshot.mediaNodes,\n          dataSource: snapshot.dataSource,\n          savedOptions: this.savePresentationOptions(lightbox.options),\n          thumbnailButtons: [],\n        };\n        context.dataSource = snapshot.dataSource.map((image) => ({ ...image }));\n        this.galleryOpenContext = context;\n\n        const options = lightbox.options;\n        options.loop = false;\n        options.paddingFn = () => {\n          const shortViewport = window.innerHeight < 600;\n          const sidePadding = Math.max(72, (window.innerWidth - 1200) / 2);\n          return {\n            top: shortViewport ? 56 : 72,\n            right: sidePadding,\n            bottom: shortViewport ? 88 : 112,\n            left: sidePadding,\n          };\n        };\n        options.showHideAnimationType = 'fade';\n        options.showAnimationDuration = window.matchMedia('(prefers-reduced-motion: reduce)').matches ? 0 : 180;\n        options.hideAnimationDuration = window.matchMedia('(prefers-reduced-motion: reduce)').matches ? 0 : 180;\n        options.returnFocus = false;\n        options.zoom = false;\n        options.imageClickAction = 'zoom';\n        options.tapAction = 'zoom';\n        options.doubleTapAction = 'zoom';\n\n        try {\n          const opened = lightbox.loadAndOpen(targetIndex, context.dataSource);\n          if (opened === false) {\n            this.restorePresentationOptions(options, context.savedOptions);\n            this.galleryOpenContext = null;\n            return false;\n          }\n          return true;\n        } catch (error) {\n          this.restorePresentationOptions(options, context.savedOptions);\n          this.galleryOpenContext = null;\n          return false;\n        }\n      }\n\n      openLegacyGallery(trigger) {\n        if (!this.lightbox || trigger.dataset.mediaType !== 'image') return false;\n        const index = Number(trigger.dataset.mediaIndex);\n        if (!Number.isFinite(index) || index < 0) return false;\n        try {\n          return this.lightbox.loadAndOpen(index) !== false;\n        } catch (error) {\n          return false;\n        }\n      }\n\n      handleGalleryClick(event) {\n        const clickedElement = event.target instanceof Element ? event.target : event.target?.parentElement;\n        if (!clickedElement) return;\n\n        const moreButton = clickedElement.closest('[data-vlx-gallery-more]');\n        if (moreButton && this.contains(moreButton)) {\n          event.preventDefault();\n          this.openDesktopGallery(moreButton);\n          return;\n        }\n\n        const zoomButton = clickedElement.closest('.js-photoswipe--zoom');\n        if (!zoomButton || !this.contains(zoomButton) || zoomButton.dataset.mediaType !== 'image') return;\n        event.preventDefault();\n        if (this.dataset.vlxGalleryReady === 'true' && !this.mobileMediaQuery?.matches) {\n          this.openDesktopGallery(zoomButton);\n          return;\n        }\n        this.openLegacyGallery(zoomButton);\n      }\n\n      updateDesktopGalleryUi(pswp) {\n        const context = this.galleryOpenContext;\n        if (!context?.isDesktop || context.lightbox?.pswp !== pswp || !pswp) return;\n\n        const activeIndex = Math.max(0, Math.min(pswp.currIndex || 0, context.dataSource.length - 1));\n        if (context.previousButton) context.previousButton.disabled = activeIndex === 0;\n        if (context.nextButton) context.nextButton.disabled = activeIndex === context.dataSource.length - 1;\n        context.thumbnailButtons?.forEach((button, index) => {\n          if (index === activeIndex) {\n            button.setAttribute('aria-current', 'true');\n          } else {\n            button.removeAttribute('aria-current');\n          }\n        });\n        if (context.statusElement) {\n          context.statusElement.textContent = this.formatGalleryPosition(activeIndex + 1, context.dataSource.length);\n        }\n\n        const activeThumbnail = context.thumbnailButtons?.[activeIndex];\n        const track = context.thumbnailTrack;\n        if (activeThumbnail && track) {\n          const trackBounds = track.getBoundingClientRect();\n          const activeBounds = activeThumbnail.getBoundingClientRect();\n          if (activeBounds.left < trackBounds.left) {\n            track.scrollLeft -= trackBounds.left - activeBounds.left;\n          } else if (activeBounds.right > trackBounds.right) {\n            track.scrollLeft += activeBounds.right - trackBounds.right;\n          }\n        }\n      }\n\n      focusGalleryTrigger(trigger) {\n        if (!this.isConnected) return;\n        let focusTarget = trigger;\n        const canFocusTrigger =\n          focusTarget?.isConnected && focusTarget.getClientRects().length > 0 && !focusTarget.disabled;\n        if (!canFocusTrigger) {\n          focusTarget = this.querySelector('[data-vlx-gallery-more]:not([hidden])');\n        }\n        if (!focusTarget || focusTarget.getClientRects().length === 0) {\n          focusTarget = [...this.querySelectorAll('.js-photoswipe--zoom')].find((button) => button.getClientRects().length > 0);\n        }\n        if (!focusTarget) return;\n        try {\n          focusTarget.focus({ preventScroll: true });\n        } catch (error) {\n          focusTarget.focus();\n        }\n      }\n\n      handleSliderAfterInit() {\n        this.sliderInstance.slider.on('afterInit', (swiper) => {\n          const { slides, activeIndex } = swiper;\n\n          if (slides[activeIndex]) {\n            this.updateGalleryCounter(swiper);\n\n            const isModelMediaType = slides[activeIndex].dataset.mediaType === 'model';\n            this.toggleSliderDraggableState(!isModelMediaType);\n          }\n        });\n      }\n\n      handleSlideChange() {\n        this.sliderInstance.slider.on('realIndexChange', (swiper) => {\n          const { slides, activeIndex, thumbs } = swiper;\n          const syncIndex = typeof swiper.realIndex === 'number' ? swiper.realIndex : activeIndex;\n\n          if (thumbs.swiper) {\n            thumbs.swiper.slideTo(syncIndex);\n          }\n\n          if (slides[activeIndex]) {\n            this.updateGalleryCounter(swiper);\n            this.playActiveMedia(slides[activeIndex]);\n\n            const isModelMediaType = slides[activeIndex].dataset.mediaType === 'model';\n            this.toggleSliderDraggableState(!isModelMediaType);\n          }\n        });\n      }\n\n      updateGalleryCounter(swiper) {\n        const counter = this.querySelector('.product__media-gallery-counter');\n        if (!counter || !swiper) return;\n\n        const current = counter.querySelector('.current-slide');\n        const total = counter.querySelector('.total-slides');\n        const totalSlides =\n          this.querySelectorAll('.product__media-item:not(.swiper-slide-duplicate)').length || swiper.slides.length;\n        const activeSlide = (typeof swiper.realIndex === 'number' ? swiper.realIndex : swiper.activeIndex) + 1;\n\n        if (current) current.textContent = activeSlide;\n        if (total && totalSlides) total.textContent = totalSlides;\n      }\n\n      toggleSliderDraggableState(isDraggable) {\n        if (this.sliderInstance.slider.allowTouchMove !== isDraggable) {\n          this.sliderInstance.slider.allowTouchMove = isDraggable;\n        }\n      }\n\n      playActiveMedia(selected) {\n        const deferredMedia = selected.querySelector('product-model');\n        if (deferredMedia) deferredMedia.loadContent(false);\n      }\n\n      getFeaturedMedia(variant) {\n        return (\n          variant?.featured_media ||\n          (variant?.featured_image\n            ? {\n                id: variant.featured_image.id,\n                position: variant.featured_image.position || 0,\n                media_type: 'image',\n                src: variant.featured_image.src,\n              }\n            : null)\n        );\n      }\n\n      getMediaSrcKey(src) {\n        if (!src) return '';\n\n        try {\n          const mediaUrl = new URL(src, window.location.origin);\n          return decodeURIComponent(mediaUrl.pathname.split('/').pop() || '')\n            .toLowerCase()\n            .replace(/_(pico|icon|thumb|small|compact|medium|large|grande|master|[0-9]+x[0-9]*|x[0-9]+)(?=\\.)/, '');\n        } catch (error) {\n          return '';\n        }\n      }\n\n      findMediaItemForFeaturedMedia(featuredMedia) {\n        if (!featuredMedia) return null;\n\n        const featuredMediaSrcKey = this.getMediaSrcKey(\n          featuredMedia.src || featuredMedia.preview_image?.src || featuredMedia.url\n        );\n\n        return (\n          this.elements.mediaItems.find((media) => media.dataset.mediaId == featuredMedia.id) ||\n          this.elements.mediaItems.find((media) => {\n            const mediaSrcKey = this.getMediaSrcKey(media.dataset.src || media.querySelector('img')?.src);\n            return featuredMediaSrcKey && mediaSrcKey === featuredMediaSrcKey;\n          }) ||\n          null\n        );\n      }\n\n      getSlug(value) {\n        return String(value || '')\n          .toLowerCase()\n          .normalize('NFD')\n          .replace(/[\\u0300-\\u036f]/g, '')\n          .replace(/\u00E4/g, 'ae')\n          .replace(/\u00F6/g, 'oe')\n          .replace(/\u00FC/g, 'ue')\n          .replace(/\u00DF/g, 'ss')\n          .replace(/[^a-z0-9]+/g, '-')\n          .replace(/^-+|-+$/g, '');\n      }\n\n      findMediaItemForVariantColor(variant) {\n        const color = variant?.option1 || variant?.options?.[0];\n        const colorSlug = this.getSlug(color);\n        if (!colorSlug) return null;\n\n        return (\n          this.elements.mediaItems.find((media) => {\n            const mediaSrcKey = this.getMediaSrcKey(media.dataset.src || media.querySelector('img')?.src);\n            return mediaSrcKey.includes(`-${colorSlug}-front.`);\n          }) ||\n          this.elements.mediaItems.find((media) => {\n            const mediaSrcKey = this.getMediaSrcKey(media.dataset.src || media.querySelector('img')?.src);\n            return mediaSrcKey.includes(`-${colorSlug}-`);\n          }) ||\n          null\n        );\n      }\n\n      setActiveMedia(variant) {\n        if (!variant) return;\n\n        const hasVariantUrl = new URLSearchParams(window.location.search).has('variant');\n        if (\n          this.dataset.vlxFirstMediaOnLoad === 'true' &&\n          this.context === 'product' &&\n          !this.vlxInitialVariantMediaSkipped &&\n          !hasVariantUrl\n        ) {\n          this.vlxInitialVariantMediaSkipped = true;\n          return;\n        }\n\n        this.vlxInitialVariantMediaSkipped = true;\n\n        const featuredMedia = this.getFeaturedMedia(variant);\n        if (!featuredMedia) return;\n\n        const selectedMedia =\n          this.findMediaItemForFeaturedMedia(featuredMedia) || this.findMediaItemForVariantColor(variant);\n        if (this.sliderInstance.slider) {\n          const slideIndex = selectedMedia\n            ? Number(selectedMedia.dataset.mediaIndex)\n            : Math.min(this.elements.mediaItems.length - 1, Math.max(0, (featuredMedia.position || 1) - 1));\n          if (this.sliderInstance.slider.params.loop && typeof this.sliderInstance.slider.slideToLoop === 'function') {\n            this.sliderInstance.slider.slideToLoop(slideIndex, 0, false);\n          } else {\n            this.sliderInstance.slider.slideTo(slideIndex, 0, false);\n          }\n        } else {\n          this.sortMediaItems(variant, featuredMedia);\n        }\n      }\n\n      sortMediaItems(variant, featuredMedia) {\n        if (!featuredMedia) featuredMedia = this.getFeaturedMedia(variant);\n        if (!featuredMedia) return;\n\n        let newMedias = this.elements.mediaItems;\n\n        // Reset ordering.\n        newMedias.sort(function (a, b) {\n          return a.dataset.mediaIndex - b.dataset.mediaIndex;\n        });\n\n        const selectedMedia =\n          this.findMediaItemForFeaturedMedia(featuredMedia) || this.findMediaItemForVariantColor(variant);\n        newMedias.some((media, index) => {\n          if (media === selectedMedia) {\n            const [element] = newMedias.splice(index, 1);\n            newMedias.unshift(element);\n            return true;\n          }\n        });\n\n        this.elements.mediaList.innerHTML = '';\n        newMedias.forEach((media) => {\n          this.elements.mediaList.appendChild(media);\n        });\n\n        if (!FoxTheme.config.mqlMobile && this.context !== 'quickview') {\n          const sortedSelectedMedia =\n            this.findMediaItemForFeaturedMedia(featuredMedia) || this.findMediaItemForVariantColor(variant);\n          if (sortedSelectedMedia) window.scrollTo({ top: sortedSelectedMedia.offsetTop, behavior: 'smooth' });\n        }\n      }\n    }\n  );\n}\n"],
  "mappings": "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",
  "names": []
}
