{
  "version": 3,
  "sources": ["/cdn/shop/t/4/assets/product-tabs.js?mvary=mobile"],
  "sourcesContent": ["if (!customElements.get('product-tabs')) {\n  customElements.define(\n    'product-tabs',\n    class ProductTabs extends HTMLDivElement {\n      constructor() {\n        super();\n      }\n\n      connectedCallback() {\n        this.sectionId = this.dataset.sectionId;\n        this.tabPanels = this.querySelector('.tabs__panels');\n        this.tabBtns = this.querySelectorAll('.tabs__btn');\n        this.currentIndex = 0;\n        this.init();\n      }\n\n      init() {\n        this.tabBtns.forEach((btn) => {\n          btn.addEventListener('click', this.onClick.bind(this));\n        });\n\n        if (Shopify.designMode) {\n          this.addEventListener('shopify:block:select', (e) => {\n            if (e.detail.sectionId != this.sectionId) return;\n            let { target } = e;\n            const index = Number(target.dataset.index);\n\n            this.setActiveTab(index);\n          });\n        }\n      }\n\n      onClick(e) {\n        e.preventDefault();\n        const { target } = e;\n        const button = target.closest('button');\n        const index = Number(button.dataset.index);\n        this.setActiveTab(index);\n      }\n\n      setActiveTab(index) {\n        if (this.currentIndex === index) return;\n\n        let newTab, newBtn, currentItem;\n\n        currentItem = this.tabBtns[this.currentIndex];\n        newBtn = this.tabBtns[index];\n\n        currentItem.classList.remove('active');\n        newBtn.classList.add('active');\n\n        const tabPanel = this.tabPanels.querySelectorAll('.tabs__panel');\n        tabPanel.forEach((panel) => {\n          panel.hidden = true;\n        });\n\n        newTab = this.tabPanels.querySelector(`.tabs__panel[data-index=\"${index}\"]`);\n\n        if (!newTab) {\n          const template = this.tabPanels.querySelector(`template[data-index=\"${index}\"]`);\n          newTab = template.content.cloneNode(true).firstElementChild;\n          this.tabPanels.appendChild(newTab);\n        }\n        const translateY = FoxTheme.config.motionReduced ? 0 : 2.5;\n\n        FoxTheme.Motion.animate(newTab, { transform: `translateY(${translateY}rem)`, opacity: 0.01 }, { duration: 0 });\n\n        newTab.hidden = false;\n        this.fixBlurryImagesOnSafari(newTab);\n\n        setTimeout(() => {\n          FoxTheme.Motion.animate(\n            newTab,\n            { transform: 'translateY(0)', opacity: 1 },\n            { duration: 0.5, delay: this.animationDelay, easing: [0, 0, 0.3, 1] }\n          );\n        }, 50);\n\n        this.currentIndex = index;\n\n        this.dispatchEvent(\n          new CustomEvent('tabChange', {\n            bubbles: true,\n            detail: { selectedIndex: index, selectedTab: newTab },\n          })\n        );\n      }\n\n      /**\n       * Fix for Safari 15.6: force images to reload with correct size after becoming visible\n       * @param {*} container\n       * @returns\n       */\n      fixBlurryImagesOnSafari(tab) {\n        const isOldSafari =\n          /^((?!chrome|android).)*safari/i.test(navigator.userAgent) && navigator.userAgent.includes('Version/15.');\n\n        if (!isOldSafari) return;\n\n        if (tab.classList.contains('images-loaded')) return;\n        tab.classList.add('images-loaded');\n\n        const images = tab.querySelectorAll('img[srcset]');\n        images.forEach((img) => {\n          const src = img.currentSrc || img.src;\n          img.srcset = img.srcset; // Trick to trigger evaluation.\n          img.src = ''; // Force reload.\n          img.src = src;\n        });\n      }\n    },\n    { extends: 'div' }\n  );\n}\n"],
  "mappings": "AAAK,eAAe,IAAI,cAAc,GACpC,eAAe,OACb,eACA,cAA0B,cAAe,CACvC,aAAc,CACZ,MAAM,CACR,CAEA,mBAAoB,CAClB,KAAK,UAAY,KAAK,QAAQ,UAC9B,KAAK,UAAY,KAAK,cAAc,eAAe,EACnD,KAAK,QAAU,KAAK,iBAAiB,YAAY,EACjD,KAAK,aAAe,EACpB,KAAK,KAAK,CACZ,CAEA,MAAO,CACL,KAAK,QAAQ,QAAS,KAAQ,CAC5B,IAAI,iBAAiB,QAAS,KAAK,QAAQ,KAAK,IAAI,CAAC,CACvD,CAAC,EAEG,QAAQ,YACV,KAAK,iBAAiB,uBAAyB,GAAM,CACnD,GAAI,EAAE,OAAO,WAAa,KAAK,UAAW,OAC1C,GAAI,CAAE,MAAO,EAAI,EACjB,MAAM,MAAQ,OAAO,OAAO,QAAQ,KAAK,EAEzC,KAAK,aAAa,KAAK,CACzB,CAAC,CAEL,CAEA,QAAQ,EAAG,CACT,EAAE,eAAe,EACjB,KAAM,CAAE,MAAO,EAAI,EACb,OAAS,OAAO,QAAQ,QAAQ,EAChC,MAAQ,OAAO,OAAO,QAAQ,KAAK,EACzC,KAAK,aAAa,KAAK,CACzB,CAEA,aAAa,MAAO,CAClB,GAAI,KAAK,eAAiB,MAAO,OAEjC,IAAI,OAAQ,OAAQ,YAEpB,YAAc,KAAK,QAAQ,KAAK,YAAY,EAC5C,OAAS,KAAK,QAAQ,KAAK,EAE3B,YAAY,UAAU,OAAO,QAAQ,EACrC,OAAO,UAAU,IAAI,QAAQ,EAEZ,KAAK,UAAU,iBAAiB,cAAc,EACtD,QAAS,OAAU,CAC1B,MAAM,OAAS,EACjB,CAAC,EAED,OAAS,KAAK,UAAU,cAAc,4BAA4B,KAAK,IAAI,EAEtE,SAEH,OADiB,KAAK,UAAU,cAAc,wBAAwB,KAAK,IAAI,EAC7D,QAAQ,UAAU,EAAI,EAAE,kBAC1C,KAAK,UAAU,YAAY,MAAM,GAEnC,MAAM,WAAa,SAAS,OAAO,cAAgB,EAAI,IAEvD,SAAS,OAAO,QAAQ,OAAQ,CAAE,UAAW,cAAc,UAAU,OAAQ,QAAS,GAAK,EAAG,CAAE,SAAU,CAAE,CAAC,EAE7G,OAAO,OAAS,GAChB,KAAK,wBAAwB,MAAM,EAEnC,WAAW,IAAM,CACf,SAAS,OAAO,QACd,OACA,CAAE,UAAW,gBAAiB,QAAS,CAAE,EACzC,CAAE,SAAU,GAAK,MAAO,KAAK,eAAgB,OAAQ,CAAC,EAAG,EAAG,GAAK,CAAC,CAAE,CACtE,CACF,EAAG,EAAE,EAEL,KAAK,aAAe,MAEpB,KAAK,cACH,IAAI,YAAY,YAAa,CAC3B,QAAS,GACT,OAAQ,CAAE,cAAe,MAAO,YAAa,MAAO,CACtD,CAAC,CACH,CACF,CAOA,wBAAwB,IAAK,CAM3B,GAFI,EAFF,iCAAiC,KAAK,UAAU,SAAS,GAAK,UAAU,UAAU,SAAS,aAAa,IAItG,IAAI,UAAU,SAAS,eAAe,EAAG,OAC7C,IAAI,UAAU,IAAI,eAAe,EAElB,IAAI,iBAAiB,aAAa,EAC1C,QAAS,KAAQ,CACtB,MAAM,IAAM,IAAI,YAAc,IAAI,IAClC,IAAI,OAAS,IAAI,OACjB,IAAI,IAAM,GACV,IAAI,IAAM,GACZ,CAAC,CACH,CACF,EACA,CAAE,QAAS,KAAM,CACnB",
  "names": []
}
