{
  "version": 3,
  "sources": ["/cdn/shop/t/4/assets/product-slider.js?mvary=mobile"],
  "sourcesContent": ["/**\n * Using for recomendation products and recent view products\n */\nif (!customElements.get('product-slider')) {\n  customElements.define(\n    'product-slider',\n    class ProductSlider extends HTMLElement {\n      constructor() {\n        super();\n      }\n\n      connectedCallback() {\n        this.selectors = {\n          productsWrap: '.products-grid-wrap',\n          products: '.products-grid',\n          nextEl: '.swiper-button-next',\n          prevEl: '.swiper-button-prev',\n          pagination: '.swiper-pagination',\n        };\n        this.classes = {\n          grid: 'f-grid',\n          swiper: 'swiper',\n          swiperWrapper: 'swiper-wrapper',\n        };\n\n        this.sectionId = this.dataset.sectionId;\n        this.elements = FoxTheme.utils.queryDomNodes(this.selectors, this);\n        this.elements.section = this.closest(`.section-${this.sectionId}`);\n\n        this.enableSlider = this.dataset.enableSlider === 'true';\n        this.items = parseInt(this.dataset.items);\n        this.tabletItems = parseInt(this.dataset.tabletItems);\n        this.totalItems = parseInt(this.dataset.totalItems);\n        this.paginationType = this.dataset.paginationType || 'bullets';\n\n        this.sliderInstance = false;\n\n        if (!this.enableSlider) return;\n\n        if (!this.elements.productsWrap || !this.elements.products) return;\n\n        const mql = window.matchMedia(FoxTheme.config.mediaQueryMobile);\n        mql.onchange = this.init.bind(this);\n\n        const mqlTablet = window.matchMedia(FoxTheme.config.mediaQueryTablet);\n        mqlTablet.onchange = this.init.bind(this);\n\n        this.init();\n      }\n\n      init() {\n        if (FoxTheme.config.mqlMobile) {\n          this.destroySlider();\n        } else {\n          const currentItems = FoxTheme.config.mqlTablet ? this.tabletItems : this.items;\n\n          if (this.totalItems > currentItems) {\n            this.initSlider();\n          } else {\n            this.destroySlider();\n          }\n        }\n      }\n\n      initSlider() {\n        if (typeof this.sliderInstance === 'object') return;\n\n        const columnGap = window.getComputedStyle(this.elements.products).getPropertyValue('--f-column-gap');\n        const spaceBetween = parseFloat(columnGap.replace('rem', '')) * 10;\n\n        this.sliderOptions = {\n          slidesPerView: 2,\n          spaceBetween: spaceBetween,\n          navigation: {\n            nextEl: this.elements.nextEl,\n            prevEl: this.elements.prevEl,\n          },\n          pagination: {\n            el: this.elements.pagination,\n            type: this.paginationType,\n          },\n          breakpoints: {\n            768: {\n              slidesPerView: this.tabletItems,\n            },\n            1024: {\n              slidesPerView: this.items,\n            },\n          },\n          loop: false,\n          threshold: 2,\n          mousewheel: {\n            enabled: true,\n            forceToAxis: true,\n          },\n        };\n\n        this.elements.productsWrap.classList.add(this.classes.swiper);\n        this.elements.products.classList.remove(this.classes.grid);\n        this.elements.products.classList.add(this.classes.swiperWrapper);\n\n        this.sliderInstance = new window.FoxTheme.Carousel(this.elements.productsWrap, this.sliderOptions, [\n          FoxTheme.Swiper.Mousewheel,\n        ]);\n        this.sliderInstance.init();\n        this.handleAccessibility();\n        this.fixQuickviewDuplicate();\n        this.calcNavButtonsPosition();\n      }\n\n      handleAccessibility() {\n        const focusableElements = FoxTheme.a11y.getFocusableElements(this);\n\n        focusableElements.forEach((element) => {\n          element.addEventListener('focusin', (event) => {\n            if (event.relatedTarget !== null) {\n              if (element.closest('.swiper-slide')) {\n                const slide = element.closest('.swiper-slide');\n                this.sliderInstance.slider.slideTo(this.sliderInstance.slider.slides.indexOf(slide));\n              }\n            } else {\n              element.blur();\n            }\n          });\n        });\n      }\n\n      destroySlider() {\n        this.elements.productsWrap.classList.remove(this.classes.swiper);\n        this.elements.products.classList.remove(this.classes.swiperWrapper);\n        this.elements.products.classList.add(this.classes.grid);\n        if (typeof this.sliderInstance !== 'object') return;\n        this.sliderInstance.slider.destroy();\n        this.sliderInstance = false;\n      }\n\n      fixQuickviewDuplicate() {\n        let modalIds = [];\n        Array.from(this.querySelectorAll('quick-view-modal')).forEach((modal) => {\n          const modalID = modal.getAttribute('id');\n          if (modalIds.includes(modalID)) {\n            modal.remove();\n          } else {\n            modalIds.push(modalID);\n          }\n        });\n      }\n\n      calcNavButtonsPosition() {\n        if (this.dataset.navigationPosition !== 'center_image') return;\n\n        const firstMedia = this.querySelector('.product-card__image-wrapper');\n        const controls = this.querySelector('.swiper-controls');\n        if (controls && firstMedia && firstMedia.clientHeight > 0) {\n          controls.style.setProperty('--swiper-navigation-top-offset', parseInt(firstMedia.clientHeight) / 2 + 'px');\n        }\n      }\n    }\n  );\n}\n"],
  "mappings": "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",
  "names": []
}
