{
  "version": 3,
  "sources": ["/cdn/shop/t/39/assets/product-media-slider.js?v0a76de0000007546=85533485796059277261777893141"],
  "sourcesContent": ["import { S as Swiper, A as A11y, N as Navigation } from './a11y-F8w-t6Vr.js';\nimport { P as Pagination } from './pagination-Dw_1wJjf.js';\nimport { A as Autoplay, S as Scrollbar } from './autoplay-qizOvqdu.js';\nimport { T as Thumb } from './thumbs-DDNPYh3W.js';\n\n/**\n * Get the index of a node in its parent\n * @param {HTMLElement} node\n * @returns {number}\n */\nfunction getNodeIndex(node) {\n  return Array.from(node.parentNode.children).indexOf(node);\n}\n\nif (!customElements.get('product-media-slider')) {\n  class ProductMediaSlider extends HTMLElement {\n    constructor() {\n      super();\n\n      this.options = {\n        slideActiveClass: '!border-primary',\n      };\n\n      // Create elements\n      this.thumbSlider();\n      this.mainSlider();\n\n      // Reduce actions (So the event can also be removed)\n      this.reducer = {\n        slideToVariant: (e) => this.slideToVariant(e),\n      };\n\n      // Listen for variant change and go to slide\n      document.addEventListener('variant-change', this.reducer.slideToVariant);\n    }\n\n    /*\n     * Create thumb slider\n     */\n    thumbSlider() {\n      // Check if Swiper exists\n      if (!Swiper) {\n        return false;\n      }\n\n      // Get Thumbnails slider element & Set swiper options\n      this.swiperThumbs = this.querySelector('[data-product-media-thumbnails-slider]');\n      this.swiperThumbsOptions = {\n        modules: [A11y, Autoplay, Navigation, Pagination, Scrollbar],\n        threshold: 10,\n        spaceBetween: 12,\n        direction: 'vertical',\n        slidesPerView: 'auto',\n        watchSlidesProgress: true,\n        slideActiveClass: this.options.slideActiveClass,\n        navigation: {\n          nextEl: '.swiper-button-thumbnails-next',\n          prevEl: '.swiper-button-thumbnails-prev',\n        },\n      };\n\n      // Create Thumbnails slider\n      this.swiperThumbsInstance = new Swiper(this.swiperThumbs, this.swiperThumbsOptions);\n\n      // Rebuild Swiper in design mode after delay\n      if (Shopify.designMode && this.swiperThumbsInstance) {\n        window.addEventListener('shopify:section:load', () => {\n          setTimeout(() => {\n            this.swiperThumbsInstance.update();\n          }, 300);\n        });\n      }\n    }\n\n    /*\n     * Create main slider\n     */\n    mainSlider() {\n      // Check if Swiper exists\n      if (typeof Swiper == 'undefined') {\n        return false;\n      }\n\n      // Get swiper element\n      this.swiperMain = this.querySelector('[data-product-media-slider]');\n\n      // Get thumb options\n      let thumbOptions;\n      if (this.swiperThumbsInstance) {\n        thumbOptions = {\n          modules: [A11y, Autoplay, Navigation, Pagination, Scrollbar, Thumb],\n          thumbs: {\n            swiper: this.swiperThumbsInstance,\n            slideThumbActiveClass: this.options.slideActiveClass,\n          },\n          pagination: {\n            el: '.swiper-pagination--product-media',\n            type: 'bullets',\n            clickable: true,\n          },\n        };\n      }\n\n      // Get initial slide and swiper index\n      let initialSlideIndex = 0;\n      const initalVariant = parseInt(this.swiperMain.dataset.productMediaSlider);\n\n      if (initalVariant) {\n        const initialSlide = this.matchVariantIdWithSlide(initalVariant);\n        initialSlideIndex = initialSlide ? initialSlide : initialSlideIndex;\n      }\n\n      // Swiper options\n      this.swiperMainOptions = {\n        threshold: 10,\n        direction: 'horizontal',\n        initialSlide: initialSlideIndex,\n        navigation: {\n          prevEl: this.querySelector('.product-media-slider__button-prev'),\n          nextEl: this.querySelector('.product-media-slider__button-next'),\n        },\n        ...thumbOptions,\n      };\n\n      // Create Main slider\n      this.swiperMainInstance = new Swiper(this.swiperMain, this.swiperMainOptions);\n\n      // Rebuid Swiper in design mode\n      if (Shopify.designMode && this.swiperMainInstance) {\n        window.addEventListener('shopify:section:load', () => {\n          this.swiperMainInstance.update();\n        });\n      }\n    }\n\n    /*\n     * Slide to variant\n     * @Param e {object}: event object with variant\n     */\n    slideToVariant(e) {\n      if (e?.detail?.variant?.id) {\n        const slideIndex = this.matchVariantIdWithSlide(e.detail.variant.id);\n        if (typeof slideIndex == 'number') {\n          this.goToSlide(slideIndex);\n        }\n      }\n    }\n\n    /*\n     * Match variant id with slide\n     * @param id {int}: variant id\n     */\n    matchVariantIdWithSlide(id) {\n      if (!id || !this.swiperMain) {\n        return false;\n      }\n\n      // Get slides\n      const slides = this.swiperMain.querySelectorAll('[data-product-variant-image]');\n\n      // Match id with slides id's\n      const slide = [...slides].find((slide) => {\n        // Get variant id's attached to slide\n        const slideVariants = JSON.parse(slide.dataset.productVariantImage);\n\n        // Check if variant id match the slide variant id's\n        if (slideVariants.includes(id)) {\n          return slide;\n        }\n      });\n\n      // return false if no slide found\n      if (!slide) {\n        return false;\n      }\n\n      // return matched slide index\n      return getNodeIndex(slide);\n    }\n\n    /*\n     * go to slide\n     * @param slide {node} / {int}: slide node / index\n     */\n    goToSlide(slide) {\n      if ((typeof slide != 'number' && typeof slide != 'object') || !this.swiperMainInstance) {\n        return false;\n      }\n\n      // Get index, transform node to slide index or string to int\n      const index = typeof slide == 'number' ? parseInt(slide) : getNodeIndex(slide);\n\n      // go to slide\n      this.swiperMainInstance.slideTo(index);\n    }\n  }\n\n  window.ProductMediaSlider = ProductMediaSlider;\n\n  customElements.define('product-media-slider', ProductMediaSlider);\n}\n"],
  "mappings": "AAAA,OAAS,KAAK,OAAQ,KAAK,KAAM,KAAK,eAAkB,qBACxD,OAAS,KAAK,eAAkB,2BAChC,OAAS,KAAK,SAAU,KAAK,cAAiB,yBAC9C,OAAS,KAAK,UAAa,uBAO3B,SAAS,aAAa,KAAM,CAC1B,OAAO,MAAM,KAAK,KAAK,WAAW,QAAQ,EAAE,QAAQ,IAAI,CAC1D,CAEA,GAAI,CAAC,eAAe,IAAI,sBAAsB,EAAG,CAC/C,MAAM,2BAA2B,WAAY,CAC3C,aAAc,CACZ,MAAM,EAEN,KAAK,QAAU,CACb,iBAAkB,iBACpB,EAGA,KAAK,YAAY,EACjB,KAAK,WAAW,EAGhB,KAAK,QAAU,CACb,eAAiB,GAAM,KAAK,eAAe,CAAC,CAC9C,EAGA,SAAS,iBAAiB,iBAAkB,KAAK,QAAQ,cAAc,CACzE,CAKA,aAAc,CAEZ,GAAI,CAAC,OACH,MAAO,GAIT,KAAK,aAAe,KAAK,cAAc,wCAAwC,EAC/E,KAAK,oBAAsB,CACzB,QAAS,CAAC,KAAM,SAAU,WAAY,WAAY,SAAS,EAC3D,UAAW,GACX,aAAc,GACd,UAAW,WACX,cAAe,OACf,oBAAqB,GACrB,iBAAkB,KAAK,QAAQ,iBAC/B,WAAY,CACV,OAAQ,iCACR,OAAQ,gCACV,CACF,EAGA,KAAK,qBAAuB,IAAI,OAAO,KAAK,aAAc,KAAK,mBAAmB,EAG9E,QAAQ,YAAc,KAAK,sBAC7B,OAAO,iBAAiB,uBAAwB,IAAM,CACpD,WAAW,IAAM,CACf,KAAK,qBAAqB,OAAO,CACnC,EAAG,GAAG,CACR,CAAC,CAEL,CAKA,YAAa,CAEX,GAAI,OAAO,OAAU,IACnB,MAAO,GAIT,KAAK,WAAa,KAAK,cAAc,6BAA6B,EAGlE,IAAI,aACA,KAAK,uBACP,aAAe,CACb,QAAS,CAAC,KAAM,SAAU,WAAY,WAAY,UAAW,KAAK,EAClE,OAAQ,CACN,OAAQ,KAAK,qBACb,sBAAuB,KAAK,QAAQ,gBACtC,EACA,WAAY,CACV,GAAI,oCACJ,KAAM,UACN,UAAW,EACb,CACF,GAIF,IAAI,kBAAoB,EACxB,MAAM,cAAgB,SAAS,KAAK,WAAW,QAAQ,kBAAkB,EAEzE,GAAI,cAAe,CACjB,MAAM,aAAe,KAAK,wBAAwB,aAAa,EAC/D,kBAAoB,cAA8B,iBACpD,CAGA,KAAK,kBAAoB,CACvB,UAAW,GACX,UAAW,aACX,aAAc,kBACd,WAAY,CACV,OAAQ,KAAK,cAAc,oCAAoC,EAC/D,OAAQ,KAAK,cAAc,oCAAoC,CACjE,EACA,GAAG,YACL,EAGA,KAAK,mBAAqB,IAAI,OAAO,KAAK,WAAY,KAAK,iBAAiB,EAGxE,QAAQ,YAAc,KAAK,oBAC7B,OAAO,iBAAiB,uBAAwB,IAAM,CACpD,KAAK,mBAAmB,OAAO,CACjC,CAAC,CAEL,CAMA,eAAe,EAAG,CAChB,GAAI,GAAG,QAAQ,SAAS,GAAI,CAC1B,MAAM,WAAa,KAAK,wBAAwB,EAAE,OAAO,QAAQ,EAAE,EAC/D,OAAO,YAAc,UACvB,KAAK,UAAU,UAAU,CAE7B,CACF,CAMA,wBAAwB,GAAI,CAC1B,GAAI,CAAC,IAAM,CAAC,KAAK,WACf,MAAO,GAOT,MAAM,MAAQ,CAAC,GAHA,KAAK,WAAW,iBAAiB,8BAA8B,CAGtD,EAAE,KAAMA,QAAU,CAKxC,GAHsB,KAAK,MAAMA,OAAM,QAAQ,mBAAmB,EAGhD,SAAS,EAAE,EAC3B,OAAOA,MAEX,CAAC,EAGD,OAAK,MAKE,aAAa,KAAK,EAJhB,EAKX,CAMA,UAAU,MAAO,CACf,GAAK,OAAO,OAAS,UAAY,OAAO,OAAS,UAAa,CAAC,KAAK,mBAClE,MAAO,GAIT,MAAM,MAAQ,OAAO,OAAS,SAAW,SAAS,KAAK,EAAI,aAAa,KAAK,EAG7E,KAAK,mBAAmB,QAAQ,KAAK,CACvC,CACF,CAEA,OAAO,mBAAqB,mBAE5B,eAAe,OAAO,uBAAwB,kBAAkB,CAClE",
  "names": ["slide"]
}
