{
  "version": 3,
  "sources": ["/cdn/shop/t/74/assets/product-eda0465a.js?philips=2031"],
  "sourcesContent": ["import { d as disableTabulationOnNotActiveSlidesWithModel } from \"./disableTabulationOnNotActiveSlidesWithModel-38e80234.js\";\nconst selectors$2 = {\n  container: \"[data-js-product-container]\",\n  form: \"[data-js-product-form]\",\n  product: \"[data-js-product-json]\",\n  sku: \".js-product-sku\",\n  price: \".js-price\",\n  productPrice: \"[data-product-price]\",\n  productPriceOld: \"[data-price-old]\",\n  priceUnit: \"[data-js-unit-price]\",\n  productPriceDiscount: \"[data-product-price-discount]\",\n  variantId: '[name=\"id\"]',\n  submit: '[type=\"submit\"]',\n  quantityError: \".js-product-quantity-error\",\n  variants: \"[data-js-product-variant]\",\n  isPreset: \"[data-is-preset]\",\n  productInventory: \"[data-product-inventory]\",\n  lowStockText: \".js-product-low-stock-msg\",\n  highStockText: \".js-product-high-stock-msg\",\n  additionalQuantityInput: \"[data-quantity-input-additional]\",\n  stickyBar: \".js-sticky-add-to-cart\",\n  stickyBarButton: \".js-sticky-add-to-cart-button\",\n  recipientCheckbox: \".js-recipient-form-checkbox\",\n  recipientFieldsContainer: \".js-recipient-form-fields\",\n  recipientField: \".js-recipient-form-field\",\n  recipientTimeZoneOffset: \".js-recipient-form-timezone-offset\",\n  recipientNoJsControl: \".js-recipient-form-no-js-control\",\n  customFieldGroup: \".js-custom-field-block\",\n  customFieldInput: \".js-custom-field-input\",\n  customFieldCheckbox: \".js-custom-field-checkbox\",\n  animate: \".js-animate\",\n  breaksVal: \".js-price-breaks-val\",\n  volumePricing: \".js-product-volume-pricing\",\n  quantityRuleMin: \".js-product-quantity-rule-min\",\n  quantityRuleMax: \".js-product-quantity-rule-max\",\n  quantityRuleIncrement: \".js-product-quantity-rule-increment\",\n  quantityRuleMinVal: \".js-product-quantity-rule-min-val\",\n  quantityRuleMaxVal: \".js-product-quantity-rule-max-val\",\n  quantityRuleIncrementVal: \".js-product-quantity-rule-increment-val\",\n  volumePricingList: \".js-product-volume-pricing-list\",\n  volumePricingJSON: \"[data-product-qty-breaks-json]\",\n  volumePricingShowMore: \".js-product-volume-pricing-show-more\",\n  priceVolume: \".js-price-volume\",\n  formError: \".js-form-error\",\n  swatchLabelName: \".js-swatch-label-name\",\n  quantityRules: \".js-product-quantity-rules\",\n  productAddToCartText: \".js-product-add-to-cart-button-text\"\n};\nlet classes = {};\nconst attributes = {\n  id: \"id\",\n  isCurrencyEnabled: \"data-currency-code-enabled\"\n};\nconst ProductForm = () => {\n  let convertFormData;\n  let QuantityWidget;\n  let cssClasses;\n  let formatMoney;\n  let getUrlWithVariant;\n  let containers = [];\n  let forms = [];\n  function init2() {\n    window.themeCore.utils.arrayIncludes;\n    convertFormData = window.themeCore.utils.convertFormData;\n    QuantityWidget = window.themeCore.utils.QuantityWidget;\n    cssClasses = window.themeCore.utils.cssClasses;\n    formatMoney = window.themeCore.utils.formatMoney;\n    getUrlWithVariant = window.themeCore.utils.getUrlWithVariant;\n    classes = {\n      ...cssClasses,\n      onSale: \"price--on-sale\",\n      hidePrice: \"price--hide\",\n      animate: \"js-animate\",\n      animated: \"animated\"\n    };\n    containers = findContainers();\n    forms = setForms();\n    setEventListeners();\n    bindPhilipsBundlePriceRefresh();\n    bindBundleAddInterceptor();\n    setEventBusListeners2();\n    initOptions();\n    showOptions();\n    initStickyBar();\n    initRecipientForm();\n  }\n  function bindBundleAddInterceptor() {\n    const themeCore = window.themeCore;\n    const cartApi = themeCore && themeCore.CartApi;\n    if (!cartApi || typeof cartApi.makeRequest !== \"function\" || themeCore.__philipsCartApiWrapped) {\n      return;\n    }\n    const originalMakeRequest = cartApi.makeRequest.bind(cartApi);\n    const actions = cartApi.actions || {};\n    themeCore.CartApi = {\n      actions,\n      makeRequest(action, ...params) {\n      const isAddOne = action === actions.ADD_TO_CART || action === \"addItem\";\n      if (!isAddOne) {\n        return originalMakeRequest(action, ...params);\n      }\n      const originalItem = params[0];\n      if (!originalItem || Array.isArray(originalItem)) {\n        return originalMakeRequest(action, ...params);\n      }\n      const mainVariantId = Number(originalItem.id);\n      if (!Number.isFinite(mainVariantId) || mainVariantId <= 0) {\n        return originalMakeRequest(action, ...params);\n      }\n      const formEntity = forms.find((entity) => {\n        const variantInput = entity && entity.container && entity.container.querySelector('[name=\"id\"]');\n        return Number(variantInput && variantInput.value) === mainVariantId;\n      });\n      if (!formEntity) {\n        return originalMakeRequest(action, ...params);\n      }\n      const mainQty = Math.max(1, parseInt(originalItem.quantity, 10) || 1);\n      const bundleQty = getQuantityFromQuantityInput(formEntity.form, formEntity.container);\n      const bundleItems = getSelectedBundleCartItems(formEntity.container, bundleQty);\n      if (!bundleItems.length) {\n        return originalMakeRequest(action, ...params);\n      }\n      const mainItem = { id: mainVariantId, quantity: mainQty };\n      if (originalItem.properties && typeof originalItem.properties === \"object\") {\n        mainItem.properties = originalItem.properties;\n      }\n      const mergedItems = [mainItem, ...bundleItems];\n      return originalMakeRequest(actions.ADD_TO_CART_MANY || \"addItems\", mergedItems);\n      }\n    };\n    themeCore.__philipsCartApiWrapped = true;\n  }\n  function setEventListeners() {\n    forms.forEach(({ container, form }) => {\n      const formId = form.getAttribute(\"id\");\n      const formEntity = forms.find((f) => f.form === form);\n      const formElements = [...container.querySelectorAll(`[form=${formId}]`)];\n      formElements.forEach((formElement) => {\n        formElement.addEventListener(\"change\", onChangeForm);\n      });\n      container.addEventListener(\"change\", (event) => {\n        const target = event.target;\n        if (!target || !target.closest(\"[data-js-bundle-line]\")) {\n          return;\n        }\n        refreshBundleAwarePrice(container);\n      });\n      container.addEventListener(\"bundle:variant:change\", (event) => {\n        refreshBundleAwarePrice(container);\n      });\n      container.addEventListener(\"click\", (event) => {\n        const target = event.target;\n        if (!target || !target.closest(\".product-bundle__variant-option\")) {\n          return;\n        }\n        refreshBundleAwarePrice(container);\n      });\n      container.addEventListener(\"click\", (event) => {\n        const submitBtn = event.target && event.target.closest && event.target.closest(selectors$2.submit);\n        if (!submitBtn) {\n          return;\n        }\n        const linkedFormId = submitBtn.getAttribute(\"form\");\n        const isCurrentFormSubmit = linkedFormId ? linkedFormId === formId : submitBtn.closest(\"form\") === form;\n        if (!isCurrentFormSubmit) {\n          return;\n        }\n        event.preventDefault();\n        console.warn(\"[PDP bundle][submit] submit button clicked\", {\n          formId,\n          buttonType: submitBtn.getAttribute(\"type\"),\n          buttonText: (submitBtn.textContent || \"\").trim()\n        });\n        if (!formEntity) {\n          console.error(\"[PDP bundle][submit] form entity not found from click\");\n          return;\n        }\n        handleBundleAwareSubmit(formEntity, form);\n      });\n      form.addEventListener(\"submit\", onFormSubmit);\n    });\n    window.themeCore.EventBus.listen(\"cart:updated\", function(cartData) {\n      if (!cartData) {\n        return;\n      }\n      if (!cartData.items) {\n        return;\n      }\n      containers.forEach(function(container) {\n        const variantSelector = container.querySelector(\"[name=id]\");\n        variantSelector.dispatchEvent(new Event(\"change\", { bubbles: true }));\n      });\n    });\n  }\n  function setEventBusListeners2() {\n    if (forms.length) {\n      forms.forEach(({ form }) => {\n        const formId = form.getAttribute(\"id\");\n        window.themeCore.EventBus.listen(`form:${formId}:change-variant`, updateForm);\n      }); \n    }\n  }\n  function updateForm({ currentVariant, elements, container, form, product, isTrusted }) {\n    const formEntity = forms.find((entity) => entity.container === container);\n    if (formEntity && currentVariant) {\n      formEntity.lastKnownVariant = currentVariant;\n    }\n    updateOptions({\n      product,\n      elements,\n      form\n    });\n    const quantityVariantInCart = getVariantCountInCart(currentVariant);\n    if (currentVariant) {\n      updateVariantId(elements, currentVariant);\n      syncVariantIdSelect(container, currentVariant);\n    }\n    if (isTrusted) {\n      updateSwatchLabelName(currentVariant, container);\n      updateSku(elements, currentVariant);\n      updateSku({ skuContainer: elements.mobileSkuContainer }, currentVariant);\n      updatePrice(elements, currentVariant, container, product);\n      updateErrorMessages(elements);\n      updateAddToCart(elements, currentVariant);\n      updateStockStatus(container, currentVariant);\n      updatePickupAvailability(currentVariant, container);\n    }\n    updateVolumePricing(container, currentVariant, quantityVariantInCart, isTrusted);\n    updateQuantityRules(container, currentVariant);\n    updateQuantityLabelCartCount(container, quantityVariantInCart);\n  }\n  function updatePickupAvailability(variant, container) {\n    const pickUpAvailability = container.querySelector(\"pickup-availability\");\n    if (!pickUpAvailability) {\n      return;\n    }\n    if (variant && variant.available) {\n      pickUpAvailability.fetchAvailability(variant.id);\n    } else {\n      pickUpAvailability.removeAttribute(\"available\");\n      pickUpAvailability.innerHTML = \"\";\n    }\n  }\n  function updateSwatchLabelName(variant, container) {\n    const swatchNameEl = container.querySelector(selectors$2.swatchLabelName);\n    if (!swatchNameEl) {\n      return;\n    }\n    if (!variant) {\n      const swatchName = swatchNameEl.getAttribute(\"data-swatch-name\");\n      const swatchOptionSelected = container.querySelector(`[data-option='${swatchName}']:checked`);\n      if (swatchOptionSelected) {\n        swatchNameEl.textContent = swatchOptionSelected.value;\n      }\n      return;\n    }\n    const optionPosition = swatchNameEl.getAttribute(\"data-swatch-position\");\n    const optionLabel = \"option\" + optionPosition;\n    const optionName = variant[optionLabel];\n    if (!optionName) {\n      return;\n    }\n    swatchNameEl.textContent = optionName;\n  }\n  function bindPhilipsBundlePriceRefresh() {\n    if (window.__philipsBundlePriceUpdateBound) {\n      return;\n    }\n    window.__philipsBundlePriceUpdateBound = true;\n    document.addEventListener(\"philips-bundle-update\", function(ev) {\n      const el = ev.target;\n      if (!el || typeof el.closest !== \"function\") {\n        return;\n      }\n      const container2 = el.closest(selectors$2.container);\n      if (!container2) {\n        return;\n      }\n      refreshBundleAwarePrice(container2);\n    });\n  }\n  function getBundlePriceTotals(container) {\n    const totals = {\n      price: 0,\n      compareAt: 0\n    };\n    if (!container) {\n      return totals;\n    }\n    const bundleLines = [...container.querySelectorAll(\"[data-js-bundle-line]\")];\n    bundleLines.forEach((line) => {\n      const checkbox = line.querySelector(\".js-bundle-line-checkbox\");\n      if (!checkbox || !checkbox.checked || checkbox.disabled) {\n        return;\n      }\n      const linePrice = Number(line.getAttribute(\"data-price-cents\"));\n      const lineCompareAt = Number(line.getAttribute(\"data-compare-at-cents\"));\n      const normalizedPrice = Number.isFinite(linePrice) && linePrice >= 0 ? linePrice : 0;\n      const normalizedCompareAt = Number.isFinite(lineCompareAt) && lineCompareAt >= 0 ? lineCompareAt : normalizedPrice;\n      totals.price += normalizedPrice;\n      totals.compareAt += normalizedCompareAt;\n    });\n    return totals;\n  }\n  function getFallbackVariant(variants) {\n    if (!variants || !variants.length) {\n      return null;\n    }\n    const urlVariantId = parseInt(new URLSearchParams(window.location.search).get(\"variant\"), 10);\n    if (Number.isFinite(urlVariantId)) {\n      const fromUrl = variants.find((variant) => variant.id === urlVariantId);\n      if (fromUrl) {\n        return fromUrl;\n      }\n    }\n    const firstAvailable = variants.find((variant) => variant.available);\n    if (firstAvailable) {\n      return firstAvailable;\n    }\n    return variants[0];\n  }\n  function resolveCurrentVariant(formEntity) {\n    if (!formEntity || !formEntity.product || !formEntity.product.variants) {\n      return null;\n    }\n    const { product, form, elements, container } = formEntity;\n    const variants = product.variants;\n    if (form) {\n      const formData = new FormData(form);\n      const optionKeys = [...formData.keys()].filter((key) => key.startsWith(\"option\"));\n      const options = {};\n      optionKeys.forEach((key) => {\n        options[key] = formData.get(key);\n      });\n      if (Object.keys(options).some((key) => options[key])) {\n        const fromOptions = variants.find((variant) => Object.keys(options).every((key) => String(variant[key] ?? \"\") === String(options[key] ?? \"\")));\n        if (fromOptions) {\n          return fromOptions;\n        }\n      }\n    }\n    const formId = form && form.getAttribute(\"id\");\n    if (formId && container) {\n      const externalOptions = {};\n      container.querySelectorAll(`[form=\"${formId}\"][name^=\"option\"]`).forEach((el) => {\n        const name = el.getAttribute(\"name\");\n        if (!name) {\n          return;\n        }\n        if (el.type === \"radio\") {\n          if (el.checked) {\n            externalOptions[name] = el.value;\n          }\n        } else if (el.tagName === \"SELECT\") {\n          externalOptions[name] = el.value;\n        }\n      });\n      const externalKeys = Object.keys(externalOptions).filter((key) => externalOptions[key] != null && externalOptions[key] !== \"\");\n      if (externalKeys.length) {\n        const fromExternalOptions = variants.find((variant) => externalKeys.every((key) => String(variant[key] ?? \"\") === String(externalOptions[key] ?? \"\")));\n        if (fromExternalOptions) {\n          return fromExternalOptions;\n        }\n      }\n    }\n    const variantIdContainers = elements.variantIdContainers || [];\n    for (let i = 0; i < variantIdContainers.length; i++) {\n      const currentVariantId = parseInt(variantIdContainers[i].value, 10);\n      if (!Number.isFinite(currentVariantId)) {\n        continue;\n      }\n      const fromId = variants.find((variant) => variant.id === currentVariantId);\n      if (fromId) {\n        return fromId;\n      }\n    }\n    if (variants.length === 1) {\n      return variants[0];\n    }\n    return getFallbackVariant(variants);\n  }\n  function refreshBundleAwarePrice(container) {\n    const formEntity = forms.find((formEntity2) => formEntity2.container === container);\n    if (!formEntity) {\n      return;\n    }\n    let currentVariant = resolveCurrentVariant(formEntity);\n    if (!currentVariant && formEntity.lastKnownVariant) {\n      currentVariant = formEntity.lastKnownVariant;\n    }\n    if (currentVariant) {\n      formEntity.lastKnownVariant = currentVariant;\n    }\n    updatePrice(formEntity.elements, currentVariant, container, formEntity.product);\n  }\n  function getMainCompareAtForBundlePrice(variant) {\n    const variantPrice = Number(variant && variant.price) || 0;\n    const variantCompareAt = Number(variant && variant.compare_at_price) || 0;\n    if (variantCompareAt > variantPrice) {\n      return variantCompareAt;\n    }\n    return variantPrice;\n  }\n  function updatePrice(elements, variant, container = null, product = null) {\n    const { priceContainers } = elements;\n    if (!variant) {\n      priceContainers.forEach((priceContainer) => priceContainer.classList.add(classes.hidePrice));\n      updateUnitPrice(priceContainers, {});\n      return;\n    }\n    if (!priceContainers.length) {\n      return;\n    }\n    priceContainers.forEach((priceContainer) => {\n      const isCurrencyEnabled = priceContainer.hasAttribute(attributes.isCurrencyEnabled);\n      const format = isCurrencyEnabled ? window.themeCore.objects.shop.money_with_currency_format : window.themeCore.objects.shop.money_format;\n      const variantPrice = Number(variant.price) || 0;\n      const variantCompareAt = getMainCompareAtForBundlePrice(variant);\n      const bundleTotals = getBundlePriceTotals(container);\n      const totalPrice = variantPrice + bundleTotals.price;\n      const totalCompareAt = variantCompareAt + bundleTotals.compareAt;\n      const onSale = totalCompareAt > totalPrice;\n      const moneyPrice = formatMoney(totalPrice, format);\n      const moneyPriceOld = formatMoney(totalCompareAt, format);\n      priceContainer.classList.remove(classes.hidePrice);\n      if (onSale) {\n        priceContainer.classList.add(classes.onSale);\n        const saleEl = priceContainer.querySelector('.price__sale');\n        const regularEl = priceContainer.querySelector('.price__regular');\n        if (saleEl) saleEl.style.display = 'flex';\n        if (regularEl) regularEl.style.display = 'none';\n\n        const productPriceDiscount = priceContainer.querySelector(selectors$2.productPriceDiscount);\n        if (productPriceDiscount && totalCompareAt > 0) {\n          const discountPercentage = (totalCompareAt - totalPrice) / totalCompareAt * 100;\n          productPriceDiscount.innerHTML = `-${Math.ceil(discountPercentage)}%`;\n        }\n      } else {\n        priceContainer.classList.remove(classes.onSale);\n        const saleEl = priceContainer.querySelector('.price__sale');\n        const regularEl = priceContainer.querySelector('.price__regular');\n        if (saleEl) saleEl.style.display = 'none';\n        if (regularEl) regularEl.style.display = 'block';\n      }\n      const productPrice = priceContainer.querySelectorAll(selectors$2.productPrice);\n      const productPriceOld = priceContainer.querySelectorAll(selectors$2.productPriceOld);\n      productPrice.forEach((element) => element.innerHTML = moneyPrice);\n      productPriceOld.forEach((element) => element.innerHTML = moneyPriceOld);\n    });\n    updateUnitPrice(priceContainers, variant);\n  }\n  function updateUnitPrice(priceContainers, variant) {\n    priceContainers.forEach((priceContainer) => {\n      const unitPrice = [...priceContainer.querySelectorAll(selectors$2.priceUnit)];\n      if (!unitPrice.length) {\n        return;\n      }\n      const unitPriceContainerEl = unitPrice.find((element) => element.dataset.jsUnitPrice === \"container\");\n      const unitPriceMoneyEl = unitPrice.find((element) => element.dataset.jsUnitPrice === \"money\");\n      const unitPriceReferenceEl = unitPrice.find((element) => element.dataset.jsUnitPrice === \"reference\");\n      const variantUnitPrice = variant.unit_price;\n      const variantUnitPriceMeasurement = variant.unit_price_measurement;\n      if (unitPriceMoneyEl) {\n        if (variantUnitPrice) {\n          const format = window.themeCore.objects.shop.money_format;\n          unitPriceMoneyEl.innerHTML = formatMoney(variantUnitPrice, format);\n        } else {\n          unitPriceMoneyEl.innerHTML = \"\";\n        }\n      }\n      if (unitPriceReferenceEl) {\n        if (variantUnitPriceMeasurement) {\n          const referenceValue = variantUnitPriceMeasurement.reference_value;\n          const referenceUnit = variantUnitPriceMeasurement.reference_unit;\n          unitPriceReferenceEl.innerHTML = referenceValue !== 1 ? referenceValue + referenceUnit : referenceUnit;\n        } else {\n          unitPriceReferenceEl.innerHTML = \"\";\n        }\n      }\n      if (unitPriceContainerEl && (variantUnitPrice || variantUnitPriceMeasurement)) {\n        unitPriceContainerEl.classList.remove(window.themeCore.utils.cssClasses.hidden);\n      } else {\n        unitPriceContainerEl.classList.add(window.themeCore.utils.cssClasses.hidden);\n      }\n    });\n  }\n  function updateSku({ skuContainer }, variant) {\n    if (!skuContainer) {\n      return;\n    }\n    let sku = null;\n    if (variant) {\n      sku = variant.sku;\n    }\n    if (!sku) {\n      const isPreset = skuContainer.closest(selectors$2.isPreset);\n      if (isPreset && isPreset.dataset.isPreset === \"true\") {\n        return;\n      }\n      skuContainer.innerHTML = \"\";\n      return;\n    }\n    const skuText = skuContainer.dataset.skuText;\n    skuContainer.innerHTML = skuText ? skuText.replaceAll(\"{SKU}\", sku).replaceAll(\"{sku}\", sku) : sku;\n  }\n  function syncVariantIdSelect(container, variant) {\n    if (!container || !variant) {\n      return;\n    }\n    const idStr = String(variant.id);\n    const variantSelect = container.querySelector(\"[data-js-product-variant] select[name='id']\");\n    if (!variantSelect) {\n      return;\n    }\n    if ([...variantSelect.options].some((opt) => String(opt.value) === idStr)) {\n      variantSelect.value = idStr;\n    }\n  }\n  function updateVariantId({ variantIdContainers }, variant) {\n    if (!variant) {\n      return;\n    }\n    const idStr = String(variant.id);\n    if (variantIdContainers && variantIdContainers.length) {\n      variantIdContainers.forEach((variantIdContainer) => {\n        if (variantIdContainer.tagName === \"SELECT\") {\n          if ([...variantIdContainer.options].some((opt) => String(opt.value) === idStr)) {\n            variantIdContainer.value = idStr;\n          }\n        } else {\n          variantIdContainer.value = idStr;\n        }\n      });\n    }\n  }\n  function updateErrorMessages({ quantityError }) {\n    if (!quantityError) {\n      return;\n    }\n    quantityError.innerHTML = \"\";\n  }\n  function updateAddToCart({ submit }, currentVariant) {\n    const removeDisabled = () => submit.forEach((button) => button.removeAttribute(\"disabled\"));\n    const setDisabled = () => submit.forEach((button) => button.setAttribute(\"disabled\", \"disabled\"));\n    const setSubmitText = (text) => submit.forEach((button) => {\n      const buttonText = button.querySelector(selectors$2.productAddToCartText);\n      buttonText.innerText = text;\n    });\n    const isPreorderTemplate = submit.some((button) => button.hasAttribute(\"data-preorder\"));\n    const soldOut = window.themeCore.translations.get(\"products.product.sold_out\");\n    const unavailable = window.themeCore.translations.get(\"products.product.unavailable\");\n    const preOrder = window.themeCore.translations.get(\"products.product.pre_order\");\n    const addToCart = isPreorderTemplate ? preOrder : window.themeCore.translations.get(\"products.product.add_to_cart\");\n    if (currentVariant && currentVariant.available) {\n      removeDisabled();\n      setSubmitText(addToCart);\n    } else if (currentVariant && !currentVariant.available) {\n      setDisabled();\n      setSubmitText(soldOut);\n    } else {\n      setDisabled();\n      setSubmitText(unavailable);\n    }\n  }\n  function updateStockStatus(container, variant) {\n    const productInventoryInfo = container.querySelector(selectors$2.productInventory);\n    if (!productInventoryInfo) {\n      return;\n    }\n    const lowStockTreshold = productInventoryInfo.getAttribute(\"data-low-stock-threshold\");\n    const lowStockMessage = container.querySelector(selectors$2.lowStockText);\n    const highStockMessage = container.querySelector(selectors$2.highStockText);\n    if (!variant || !variant.available) {\n      highStockMessage.classList.add(window.themeCore.utils.cssClasses.hidden);\n      lowStockMessage.classList.add(window.themeCore.utils.cssClasses.hidden);\n      return;\n    }\n    const inventoryJSON = JSON.parse(productInventoryInfo.innerText);\n    const currentInventory = inventoryJSON.find((variantInventory) => variantInventory.id === variant.id);\n    const canSellAfterZero = currentInventory.inventory_policy === \"continue\" || currentInventory.inventory_management === null;\n    if (!canSellAfterZero && currentInventory.inventory_quantity <= lowStockTreshold) {\n      lowStockMessage.classList.remove(window.themeCore.utils.cssClasses.hidden);\n      highStockMessage.classList.add(window.themeCore.utils.cssClasses.hidden);\n    }\n    if (currentInventory.inventory_quantity > lowStockTreshold || canSellAfterZero) {\n      highStockMessage.classList.remove(window.themeCore.utils.cssClasses.hidden);\n      lowStockMessage.classList.add(window.themeCore.utils.cssClasses.hidden);\n    }\n  }\n  function updateQuantityRules(container, variant) {\n    const currentContainerData = forms.find((form) => form.container === container);\n    const quantityWidgetEl = currentContainerData.elements.quantityWidgetEl;\n    const quantityRules = container.querySelector(selectors$2.quantityRules);\n    if (!quantityRules) {\n      return;\n    }\n    if (!variant || variant && !variant.quantity_rule) {\n      quantityRules.classList.add(cssClasses.hidden);\n      return;\n    } else {\n      quantityRules.classList.remove(cssClasses.hidden);\n    }\n    const variantQuantityRules = variant.quantity_rule;\n    const quantityRuleIncrement = quantityRules.querySelector(selectors$2.quantityRuleIncrement);\n    const quantityRuleMin = quantityRules.querySelector(selectors$2.quantityRuleMin);\n    const quantityRuleMax = quantityRules.querySelector(selectors$2.quantityRuleMax);\n    const quantityRuleIncrementVal = quantityRules.querySelector(selectors$2.quantityRuleIncrementVal);\n    const quantityRuleMinVal = quantityRules.querySelector(selectors$2.quantityRuleMinVal);\n    const quantityRuleMaxVal = quantityRules.querySelector(selectors$2.quantityRuleMaxVal);\n    if (quantityRuleIncrementVal) {\n      quantityRuleIncrementVal.textContent = window.themeCore.translations.get(\"products.product.increments_of\", { number: variantQuantityRules.increment });\n      quantityWidgetEl.setIncrement(variantQuantityRules.increment);\n      variantQuantityRules.increment > 1 ? quantityRuleIncrement.classList.remove(cssClasses.hidden) : quantityRuleIncrement.classList.add(cssClasses.hidden);\n    }\n    if (quantityRuleMinVal) {\n      quantityRuleMinVal.textContent = window.themeCore.translations.get(\"products.product.minimum_of\", { number: variantQuantityRules.min });\n      quantityWidgetEl.setMin(variantQuantityRules.min);\n      quantityWidgetEl.toggleDecrease();\n      quantityWidgetEl.toggleIncrease();\n      variantQuantityRules.min > 1 ? quantityRuleMin.classList.remove(cssClasses.hidden) : quantityRuleMin.classList.add(cssClasses.hidden);\n    }\n    if (quantityRuleMaxVal) {\n      if (variantQuantityRules.max !== null) {\n        quantityRuleMaxVal.textContent = window.themeCore.translations.get(\"products.product.maximum_of\", { number: variantQuantityRules.max });\n        quantityRuleMax.classList.remove(cssClasses.hidden);\n        quantityWidgetEl.setMax(variantQuantityRules.max);\n      } else {\n        quantityRuleMaxVal.textContent = \"\";\n        quantityRuleMax.classList.add(cssClasses.hidden);\n        quantityWidgetEl.setMax(\"\");\n      }\n      quantityWidgetEl.toggleDecrease();\n      quantityWidgetEl.toggleIncrease();\n    }\n    if (variantQuantityRules.increment < 2 && variantQuantityRules.min < 2 && variantQuantityRules.max === null) {\n      quantityRules.classList.add(cssClasses.hidden);\n    } else {\n      quantityRules.classList.remove(cssClasses.hidden);\n    }\n  }\n  function updateVolumePricing(container, variant, quantity, isTrusted) {\n    const currentContainerData = forms.find((form) => form.container === container);\n    const quantityWidgetEl = currentContainerData.elements.quantityWidgetEl;\n    const currentVariantEl = container.querySelector(\"[name=id]\");\n    if (!currentVariantEl) {\n      return;\n    }\n    const volumePricing = container.querySelector(selectors$2.volumePricing);\n    const volumePricingList = container.querySelector(selectors$2.volumePricingList);\n    const volumePricingJSONEl = container.querySelector(selectors$2.volumePricingJSON);\n    let quantityBreaks = null;\n    if (!volumePricingJSONEl || !volumePricing) {\n      return;\n    }\n    if (variant) {\n      const volumePricingJSON = JSON.parse(volumePricingJSONEl.innerHTML);\n      quantityBreaks = volumePricingJSON[variant.id].quantity_price_breaks;\n      updateVariantVolumePrice(quantityBreaks);\n      if (!isTrusted) {\n        return;\n      }\n      if (quantityBreaks.length) {\n        renderVolumePriceList(quantityBreaks);\n        volumePricing.classList.remove(cssClasses.hidden);\n      } else {\n        volumePricing.classList.add(cssClasses.hidden);\n      }\n    } else {\n      volumePricing.classList.add(cssClasses.hidden);\n    }\n    function renderVolumePriceList(quantityBreaks2) {\n      const showMoreBtn = container.querySelector(selectors$2.volumePricingShowMore);\n      const moneyFormat = window.themeCore.objects.shop.money_with_currency_format;\n      const priceTranslation = window.themeCore.translations.get(\"products.product.volume_pricing.each\", {\n        price: formatMoney(variant.price, moneyFormat)\n      });\n      showMoreBtn.addEventListener(\"click\", function(e) {\n        e.preventDefault();\n        let listHiddenItems = volumePricingList.querySelectorAll(\".is-hidden\");\n        if (!listHiddenItems.length) {\n          return;\n        }\n        listHiddenItems.forEach(function(listItem) {\n          listItem.classList.remove(cssClasses.hidden);\n        });\n        showMoreBtn.classList.add(cssClasses.hidden);\n      });\n      volumePricingList.innerHTML = \"\";\n      let defaultMinPriceHTML = `\n\t\t\t\t<li class=\"product-volume-pricing__list-item\">\n\t\t\t\t\t<span>${variant.quantity_rule.min}<span aria-hidden>+</span></span>\n\t\t\t\t\t<span>${priceTranslation}</span>\n\t\t\t\t</li>\n\t\t\t`;\n      volumePricingList.insertAdjacentHTML(\"beforeend\", defaultMinPriceHTML);\n      quantityBreaks2.forEach(function(quantityBreak, i) {\n        let hiddenClass = i >= 2 ? `${cssClasses.hidden}` : \"\";\n        let quantityBreakHTML = `\n\t\t\t\t\t<li class=\"product-volume-pricing__list-item ${hiddenClass}\">\n\t\t\t\t\t\t<span>${quantityBreak.minimum_quantity}<span aria-hidden>+</span></span>\n\t\t\t\t\t\t<span>${quantityBreak.price_each}</span>\n\t\t\t\t\t</li>\n\t\t\t\t`;\n        volumePricingList.insertAdjacentHTML(\"beforeend\", quantityBreakHTML);\n      });\n      if (quantityBreaks2.length >= 3) {\n        showMoreBtn.classList.remove(cssClasses.hidden);\n      } else {\n        showMoreBtn.classList.add(cssClasses.hidden);\n      }\n    }\n    function updateVariantVolumePrice(quantityBreaks2) {\n      const priceEls = container.querySelectorAll(selectors$2.priceVolume);\n      const moneyFormat = window.themeCore.objects.shop.money_with_currency_format;\n      const priceTranslation = window.themeCore.translations.get(\"products.product.volume_pricing.price_at_each\", {\n        price: formatMoney(variant.price, moneyFormat)\n      });\n      if (!priceEls.length) {\n        return;\n      }\n      if (!variant) {\n        priceEls.forEach((el) => el.classList.add(cssClasses.hidden));\n        return;\n      }\n      if (!quantityBreaks2 || !quantityBreaks2.length) {\n        priceEls.forEach((el) => el.innerHTML = priceTranslation);\n        priceEls.forEach((el) => el.classList.remove(cssClasses.hidden));\n        return;\n      }\n      const currentBreak = quantityBreaks2.findLast((qtyBreak) => {\n        return Number(quantity) + Number(quantityWidgetEl.quantity.value) >= qtyBreak.minimum_quantity;\n      });\n      if (!currentBreak) {\n        priceEls.forEach((el) => el.innerHTML = priceTranslation);\n        priceEls.forEach((el) => el.classList.remove(cssClasses.hidden));\n        return;\n      }\n      priceEls.forEach((el) => el.innerHTML = currentBreak.price_at_each);\n      priceEls.forEach((el) => el.classList.remove(cssClasses.hidden));\n    }\n  }\n  function getVariantCountInCart(variant) {\n    const cartData = window.themeCore.cartObject;\n    if (!cartData || !variant) {\n      return;\n    }\n    if (!cartData.items.length) {\n      return 0;\n    }\n    const currentVariant = cartData.items.find(function(item) {\n      return item.variant_id === variant.id;\n    });\n    if (!currentVariant) {\n      return 0;\n    }\n    return currentVariant.quantity;\n  }\n  function updateQuantityLabelCartCount(container, quantity) {\n    if (!container) {\n      return;\n    }\n    const priceBreaksEl = container.querySelector(selectors$2.breaksVal);\n    if (!priceBreaksEl) {\n      return;\n    }\n    priceBreaksEl.classList.toggle(cssClasses.hidden, !quantity);\n    if (!quantity) {\n      priceBreaksEl.innerHTML = \"\";\n    }\n    priceBreaksEl.innerHTML = window.themeCore.translations.get(\"products.product.quantity_in_cart\", { quantity });\n  }\n  function onChangeForm({ currentTarget: targetFormElement, target, isTrusted }) {\n    const formId = targetFormElement.getAttribute(\"form\");\n    const currentFormEntity = forms.find(({ form, elements: { optionElements } }) => {\n      const currentFormId = form.getAttribute(\"id\");\n      return currentFormId === formId && (optionElements.includes(target) || target.name === \"id\");\n    });\n    if (!currentFormEntity) {\n      return;\n    }\n    currentFormEntity.findVariant = {\n      isId: target.name === \"id\",\n      target\n    };\n    currentFormEntity.isTrusted = isTrusted;\n    findCurrentVariant(currentFormEntity);\n  }\n  function validateCustomFields(arr) {\n    const MINIMAL_SCROLL_OFFSET = 32;\n    let error = false;\n    let invalidObj = null;\n    arr.forEach(function(obj) {\n      const inputValue = obj.input.value.trim();\n      if (obj.checkbox) {\n        if (obj.checkbox.checked && !inputValue.length) {\n          obj.input.classList.add(\"error\");\n          obj.checkbox.classList.remove(\"error\");\n          invalidObj = obj;\n          error = true;\n        } else if (!obj.checkbox.checked && inputValue.length) {\n          obj.input.classList.remove(\"error\");\n          obj.checkbox.classList.add(\"error\");\n          invalidObj = obj;\n          error = true;\n        } else {\n          obj.input.classList.remove(\"error\");\n          obj.checkbox.classList.remove(\"error\");\n        }\n      }\n    });\n    if (invalidObj) {\n      const elementY = getElementY(invalidObj.input);\n      const targetY = document.body.scrollHeight - elementY < window.innerHeight ? document.body.scrollHeight - window.innerHeight - MINIMAL_SCROLL_OFFSET : elementY - MINIMAL_SCROLL_OFFSET;\n      window.scrollTo({\n        top: targetY,\n        behavior: \"smooth\"\n      });\n    }\n    return error;\n  }\n  function getElementY(element) {\n    return window.pageYOffset + element.getBoundingClientRect().top;\n  }\n  function getQuantityFromQuantityInput(formRoot, container) {\n    let qtyInput = formRoot && typeof formRoot.querySelector === \"function\" ? formRoot.querySelector('input[name=\"quantity\"]') : null;\n    if (!qtyInput && container && typeof container.querySelector === \"function\") {\n      qtyInput = container.querySelector('input[name=\"quantity\"]');\n    }\n    const raw = qtyInput && qtyInput.value;\n    const n = parseInt(raw, 10);\n    return Math.max(1, Number.isFinite(n) && n > 0 ? n : 1);\n  }\n  function getSelectedBundleCartItems(container, quantity = 1) {\n    if (!container) {\n      return [];\n    }\n    const items = [];\n    const bundleLines = [...container.querySelectorAll(\"[data-js-bundle-line]\")];\n    console.log(\"[PDP bundle][submit] total bundle lines:\", bundleLines.length);\n    bundleLines.forEach((line) => {\n      const checkbox = line.querySelector(\".js-bundle-line-checkbox\");\n      const variantIdRaw = line.getAttribute(\"data-variant-id\");\n      console.log(\"[PDP bundle][submit] line state\", {\n        variantIdRaw,\n        checked: !!(checkbox && checkbox.checked),\n        disabled: !!(checkbox && checkbox.disabled)\n      });\n      if (!checkbox || !checkbox.checked || checkbox.disabled) {\n        return;\n      }\n      const variantId = Number(variantIdRaw);\n      if (!Number.isFinite(variantId) || variantId <= 0) {\n        console.warn(\"[PDP bundle][submit] invalid variant id:\", variantIdRaw);\n        return;\n      }\n      items.push({\n        id: variantId,\n        quantity: Math.max(1, parseInt(quantity, 10) || 1)\n      });\n    });\n    console.log(\"[PDP bundle][submit] selected bundle items:\", items);\n    return items;\n  }\n  function onFormSubmit(event) {\n    const target = event.target; \n    event.preventDefault(); \n    console.warn(\"[PDP bundle][submit] onFormSubmit fired\", {\n      targetId: target && target.getAttribute ? target.getAttribute(attributes.id) : null\n    });\n    const form = forms.find((f) => f.id === target.getAttribute(attributes.id));\n    if (!form) {\n      console.error(\"[PDP bundle][submit] form not found for submit target\");\n      return;\n    }\n    handleBundleAwareSubmit(form, target);\n  }\n  function handleBundleAwareSubmit(form, targetFormEl) {\n    if (!form) {\n      return;\n    }\n    if (form.__bundleSubmitInProgress) {\n      console.warn(\"[PDP bundle][submit] ignored duplicate submit\");\n      return;\n    }\n    form.__bundleSubmitInProgress = true;\n    const customFieldElementsArr = form.elements.customFieldElements;\n    if (customFieldElementsArr) {\n      let isError = validateCustomFields(customFieldElementsArr);\n      if (isError) {\n        form.__bundleSubmitInProgress = false;\n        return;\n      }\n    }\n    if (form) {\n      const { submit } = form.elements;\n      submit.forEach((button) => button.classList.add(classes.loading));\n    }\n    const formData = new FormData(targetFormEl || form.form);\n    const serialized = convertFormData(formData);\n    const mainVariantId = Number(serialized && serialized.id);\n    const mainQuantity = Math.max(1, parseInt(serialized && serialized.quantity, 10) || 1);\n    const formRoot = targetFormEl || form.form;\n    const bundleQuantity = getQuantityFromQuantityInput(formRoot, form && form.container);\n    if (!Number.isFinite(mainVariantId) || mainVariantId <= 0) {\n      form.__bundleSubmitInProgress = false;\n      onFormSubmitError({\n        description: \"Invalid product variant.\"\n      }, form);\n      return;\n    }\n    const mainItem = {\n      id: mainVariantId,\n      quantity: mainQuantity\n    };\n    if (serialized && serialized.properties && typeof serialized.properties === \"object\") {\n      mainItem.properties = serialized.properties;\n    }\n    const bundleItems = getSelectedBundleCartItems(form && form.container, bundleQuantity);\n    const action = bundleItems.length ? window.themeCore.CartApi.actions.ADD_TO_CART_MANY : window.themeCore.CartApi.actions.ADD_TO_CART;\n    const payload = bundleItems.length ? [mainItem, ...bundleItems] : mainItem;\n    console.log(\"[PDP bundle][submit] main serialized item:\", mainItem);\n    console.log(\"[PDP bundle][submit] action:\", action);\n    console.log(\"[PDP bundle][submit] payload:\", payload);\n    window.themeCore.CartApi.makeRequest(action, payload).then((response) => {\n      console.log(\"[PDP bundle][submit] add success:\", response);\n      onFormSubmitSuccess(response, form);\n    }).catch((error) => {\n      console.error(\"[PDP bundle][submit] add error:\", error);\n      onFormSubmitError(error, form);\n    });\n  }\n  function onFormSubmitSuccess(success, form) {\n    if (!form) {\n      return;\n    }\n    form.__bundleSubmitInProgress = false;\n    const formElement = form.container;\n    const { quantityWidget, submit } = form.elements;\n    quantityWidget && quantityWidget.setValue(0);\n    submit.forEach((button) => button.classList.remove(classes.loading));\n    resetRecipientForm(formElement);\n    window.themeCore.CartApi.makeRequest(window.themeCore.CartApi.actions.GET_CART);\n  }\n  function onFormSubmitError(error, form) {\n    if (!form) {\n      return;\n    }\n    form.__bundleSubmitInProgress = false;\n    const formElement = form.container;\n    const hasRecipientForm = formElement.querySelector(selectors$2.recipientCheckbox);\n    let { description } = error;\n    const { quantityError, submit } = form.elements;\n    if (typeof description === \"object\" && hasRecipientForm) {\n      const sectionID = form.container.dataset.sectionId;\n      let errors = error.errors;\n      const errorMessages = formElement.querySelectorAll(selectors$2.formError);\n      const recipientFormFields = formElement.querySelectorAll(selectors$2.recipientField);\n      if (errorMessages.length && recipientFormFields.length) {\n        errorMessages.forEach(function(messageEl) {\n          messageEl.classList.add(classes.hidden);\n          messageEl.innerText = \"\";\n        });\n        recipientFormFields.forEach(function(field) {\n          field.setAttribute(\"aria-invalid\", false);\n          field.removeAttribute(\"aria-describedby\");\n        });\n      }\n      return Object.entries(errors).forEach(([key, value]) => {\n        const errorMessageId = `RecipientForm-${key}-error-${sectionID}`;\n        const errorMessageElement = formElement.querySelector(`#${errorMessageId}`);\n        const inputId = `Recipient-${key}-${sectionID}`;\n        const inputElement = formElement.querySelector(`#${inputId}`);\n        let message = `${value.join(\", \")}`;\n        if (key === \"send_on\") {\n          message = `${value.join(\", \")}`;\n        }\n        if (errorMessageElement) {\n          errorMessageElement.innerText = message;\n          errorMessageElement.classList.remove(classes.hidden);\n        }\n        if (inputElement) {\n          inputElement.setAttribute(\"aria-invalid\", true);\n          inputElement.setAttribute(\"aria-describedby\", errorMessageId);\n        }\n        submit.forEach((button) => button.classList.remove(classes.loading));\n      });\n    }\n    quantityError && (quantityError.innerHTML = description);\n    submit.forEach((button) => button.classList.remove(classes.loading));\n  }\n  function findCurrentVariant({ container, form, product, elements, findVariant, isTrusted = true }, firstInitialization = false) {\n    const variants = product.variants;\n    const formData = new FormData(form);\n    const sectionId = container.dataset.sectionId;\n    const formId = form.getAttribute(\"id\");\n    let currentVariant;\n    const optionKeys = [...formData.keys()].filter((key) => key.startsWith(\"option\"));\n    let options = {};\n    optionKeys.forEach((key) => options[key] = formData.get(key));\n    if (Object.keys(options).some((key) => options[key])) {\n      currentVariant = variants.find((variant) => Object.keys(options).every((key) => String(variant[key] ?? \"\") === String(options[key] ?? \"\")));\n    } else if (findVariant && findVariant.isId) {\n      currentVariant = variants.find((variant) => Number(findVariant.target.value) === variant.id);\n    } else if (firstInitialization) {\n      currentVariant = getFallbackVariant(variants);\n    } else {\n      return;\n    }\n    window.themeCore.EventBus.emit(`form:${formId}:change-variant`, {\n      container,\n      form,\n      product,\n      currentVariant,\n      elements,\n      isTrusted\n    });\n    if (currentVariant) {\n      window.themeCore.EventBus.emit(`pdp:section-${sectionId}:change-variant`, {\n        variantId: currentVariant.id,\n        variant: currentVariant,\n        product,\n        firstInitialization\n      });\n      document.dispatchEvent(\n        new CustomEvent(\"product:variant:change\", {\n          detail: currentVariant.id\n        })\n      );\n    } else {\n      document.dispatchEvent(\n        new CustomEvent(\"product:variant:change\", {\n          detail: null\n        })\n      );\n    }\n    if (currentVariant) {\n      syncVariantIdSelect(container, currentVariant);\n    }\n    if (isEnableHistoryState(form)) {\n      updateHistoryState(currentVariant);\n    }\n  }\n  function updateHistoryState(variant) {\n    if (!variant) {\n      return null;\n    }\n    const url = getUrlWithVariant(window.location.href, variant.id);\n    window.history.replaceState({ path: url }, \"\", url);\n  }\n  function isEnableHistoryState(form) {\n    return form.dataset.enableHistoryState || false;\n  }\n  function initOptions() {\n    forms.forEach((form) => {\n      updateOptions(form);\n      findCurrentVariant(form, true);\n    });\n  }\n  function updateOptions(formEntity) {\n    const {\n      product,\n      elements: { optionElements },\n      form\n    } = formEntity;\n    const formData = new FormData(form);\n    const selected = {\n      option1: null,\n      option2: null,\n      option3: null\n    };\n    for (const [key, value] of formData.entries()) {\n      if (Object.keys(selected).includes(key)) {\n        selected[key] = value;\n      }\n    }\n    const existingOptions = Object.keys(selected).filter((key) => selected[key]);\n    existingOptions.forEach((option, index) => {\n      const currentElements = optionElements.filter(({ name }) => option === name);\n      currentElements.forEach((currentElement) => {\n        const { value, name } = currentElement;\n        const variantOptions = {};\n        product.options.forEach((option2, currentIndex) => {\n          const key = `option${currentIndex + 1}`;\n          if (currentIndex < index) {\n            variantOptions[key] = selected[key];\n          }\n        });\n        variantOptions[name] = value;\n        const availableVariant = product.variants.find((variant) => Object.keys(variantOptions).every((key) => variantOptions[key] === variant[key]) && variant.available);\n        setAvailable(currentElement, !!availableVariant);\n      });\n    });\n  }\n  function setAvailable(input, available) {\n    let label = input.nextElementSibling;\n    if (input.matches(\"select\")) {\n      return;\n    }\n    if (available) {\n      label.classList.remove(cssClasses.disabled);\n    } else {\n      label.classList.add(cssClasses.disabled);\n    }\n  }\n  function findContainers() {\n    return [...document.querySelectorAll(selectors$2.container)];\n  }\n  function setForms() {\n    return containers.reduce((acc, container) => {\n      const productJsonTag = container.querySelector(selectors$2.product);\n      const form = container.querySelector(selectors$2.form);\n      let product = {};\n      try {\n        product = JSON.parse(productJsonTag.innerHTML);\n      } catch (e) {\n        return acc;\n      }\n      const findFormSubmitButtons = () => {\n        return [...container.querySelectorAll(selectors$2.submit)].filter((button) => {\n          const isInsideForm = button.closest(selectors$2.form);\n          const buttonForm = button.getAttribute(\"form\");\n          const formId = form.getAttribute(\"id\");\n          return isInsideForm || buttonForm === formId;\n        });\n      };\n      const id = form.getAttribute(attributes.id);\n      const submit = findFormSubmitButtons();\n      const skuContainer = container.querySelector(selectors$2.sku);\n      const priceContainers = [...container.querySelectorAll(selectors$2.price)];\n      const quantityError = container.querySelector(selectors$2.quantityError);\n      const variantIdContainers = [...container.querySelectorAll(selectors$2.variantId)];\n      const optionElements = [...container.querySelectorAll(\"[data-option]\")];\n      let mobileSkuContainer = null;\n      const additionalQuantityInput = container.querySelector(selectors$2.additionalQuantityInput);\n      const quantityWidgetEl = QuantityWidget(container, {\n        onQuantityChange: (widget) => {\n          updateErrorMessages({ quantityError });\n          variantIdContainers.forEach(function(variantContainer) {\n            variantContainer.dispatchEvent(new Event(\"change\", { bubbles: true }));\n          });\n          additionalQuantityInput && (additionalQuantityInput.value = widget.quantity.value);\n        }\n      }).init();\n      additionalQuantityInput && additionalQuantityInput.addEventListener(\"input\", () => {\n        if (additionalQuantityInput.value !== quantityWidgetEl.value) {\n          quantityWidgetEl.setValue(additionalQuantityInput.value);\n          quantityWidgetEl.dispatch();\n        }\n      });\n      const customFieldBlocks = [...container.querySelectorAll(selectors$2.customFieldGroup)];\n      const customFieldElements = customFieldBlocks.map(function(customFieldBlock) {\n        let input = customFieldBlock.querySelector(selectors$2.customFieldInput);\n        let checkbox = customFieldBlock.querySelector(selectors$2.customFieldCheckbox);\n        return {\n          input,\n          checkbox\n        };\n      });\n      return [\n        ...acc,\n        {\n          id,\n          container,\n          form,\n          product,\n          lastKnownVariant: getFallbackVariant(product.variants),\n          elements: {\n            skuContainer,\n            priceContainers,\n            quantityWidgetEl,\n            quantityError,\n            variantIdContainers,\n            submit,\n            mobileSkuContainer,\n            optionElements,\n            customFieldElements\n          }\n        }\n      ];\n    }, []);\n  }\n  function initStickyBar() {\n    containers.forEach((container) => {\n      const stickyBar = container.querySelector(selectors$2.stickyBar);\n      const mainButton = container.querySelector(selectors$2.submit);\n      if (!stickyBar || !mainButton) {\n        return;\n      }\n      const observer = new IntersectionObserver((entries) => {\n        entries.forEach((entry) => {\n          const rect = mainButton.getBoundingClientRect();\n          stickyBar.classList.toggle(window.themeCore.utils.cssClasses.active, !entry.isIntersecting && rect.bottom < 0);\n          if (!entry.isIntersecting) {\n            const animate = stickyBar.closest(selectors$2.animate);\n            animate && animate.classList.remove(classes.animate);\n            animate && animate.classList.add(classes.animated);\n          }\n        });\n      }, {});\n      observer.observe(mainButton);\n      stickyBar.addEventListener(\"click\", (event) => {\n        const stickyBarButton = event.target.closest(selectors$2.stickyBarButton);\n        if (!stickyBarButton) {\n          return;\n        }\n        mainButton.focus();\n      });\n    });\n  }\n  function initRecipientForm() {\n    containers.forEach((container) => {\n      const recipientCheckbox = container.querySelector(selectors$2.recipientCheckbox);\n      const recipientFormFieldsContainer = container.querySelector(selectors$2.recipientFieldsContainer);\n      const recipientFormFields = container.querySelectorAll(selectors$2.recipientField);\n      const recipientTimeZoneOffset = container.querySelector(selectors$2.recipientTimeZoneOffset);\n      const recipientControlNoJsCheckbox = container.querySelector(selectors$2.recipientNoJsControl);\n      if (!recipientCheckbox || !recipientFormFieldsContainer || !recipientFormFields || !recipientTimeZoneOffset) {\n        return;\n      }\n      recipientTimeZoneOffset.value = (/* @__PURE__ */ new Date()).getTimezoneOffset().toString();\n      recipientControlNoJsCheckbox.disabled = true;\n      recipientCheckbox.disabled = false;\n      disableInputFields();\n      recipientCheckbox.addEventListener(\"change\", function() {\n        if (recipientCheckbox.checked) {\n          recipientFormFieldsContainer.classList.remove(classes.hidden);\n          enableInputFields();\n        } else {\n          recipientFormFieldsContainer.classList.add(classes.hidden);\n          disableInputFields();\n        }\n      });\n      function disableInputFields() {\n        recipientFormFields.forEach(function(field) {\n          field.disabled = true;\n        });\n        recipientTimeZoneOffset.disabled = true;\n      }\n      function enableInputFields() {\n        recipientFormFields.forEach(function(field) {\n          field.disabled = false;\n        });\n        recipientTimeZoneOffset.disabled = false;\n      }\n    });\n  }\n  function recipientFormClearErrors(form) {\n    const recipientCheckbox = form.querySelector(selectors$2.recipientCheckbox);\n    if (!recipientCheckbox) {\n      return;\n    }\n    const recipientFormFieldsContainer = form.querySelector(selectors$2.recipientFieldsContainer);\n    const errorMessages = recipientFormFieldsContainer.querySelectorAll(selectors$2.formError);\n    const recipientFormFields = form.querySelectorAll(selectors$2.recipientField);\n    if (!errorMessages || !recipientFormFields) {\n      return;\n    }\n    errorMessages.forEach(function(messageEl) {\n      messageEl.classList.add(classes.hidden);\n      messageEl.innerText = \"\";\n    });\n    recipientFormFields.forEach(function(field) {\n      field.setAttribute(\"aria-invalid\", false);\n      field.removeAttribute(\"aria-describedby\");\n    });\n  }\n  function recipientFormClearInputs(form) {\n    const recipientCheckbox = form.querySelector(selectors$2.recipientCheckbox);\n    if (!recipientCheckbox) {\n      return;\n    }\n    const recipientFormFields = form.querySelectorAll(selectors$2.recipientField);\n    if (!recipientFormFields) {\n      return;\n    }\n    recipientFormFields.forEach(function(field) {\n      field.value = \"\";\n    });\n  }\n  function resetRecipientForm(form) {\n    const recipientCheckbox = form.querySelector(selectors$2.recipientCheckbox);\n    if (!recipientCheckbox) {\n      return;\n    }\n    if (recipientCheckbox.checked) {\n      recipientCheckbox.checked = false;\n      recipientCheckbox.dispatchEvent(new Event(\"change\"));\n      recipientFormClearErrors(form);\n      recipientFormClearInputs(form);\n    }\n  }\n  function showOptions() {\n    containers.forEach((form) => {\n      const variants = form.querySelector(selectors$2.variants);\n      if (variants && variants.dataset.jsProductVariant !== \"no-hidden\") {\n        variants.classList.add(cssClasses.hidden);\n        variants.addEventListener(\"change\", () => {\n        });\n      }\n    });\n  }\n  function allForms() {\n    return forms;\n  }\n  return Object.freeze({\n    init: init2,\n    allForms\n  });\n};\nconst selectors$1 = {\n  container: \"[data-zoom-container]\",\n  media: \"[data-zoom-media]\",\n  modal: \"[data-zoom-modal]\",\n  toggle: \"[data-zoom-modal-toggle]\",\n  content: \"[data-zoom-content]\",\n  slider: \"[data-zoom-slider]\",\n  slide: \"[data-zoom-slide]\",\n  prevSlide: \".swiper-button-prev\",\n  nextSlide: \".swiper-button-next\",\n  button: \"[data-js-zoom-button]\",\n  productSlider: \"[data-js-product-media-slider]\",\n  productSliderWrapper: \".swiper-wrapper\",\n  notInitedIframe: \".js-video.js-video-youtube, .js-video:empty\"\n};\nconst breakpoints = {\n  afterMedium: 1200\n};\nconst Zoom = (context = document) => {\n  const Swiper = window.themeCore.utils.Swiper;\n  const off = window.themeCore.utils.off;\n  const on = window.themeCore.utils.on;\n  const Toggle2 = window.themeCore.utils.Toggle;\n  const VIDEO_TYPES = window.themeCore.utils.VIDEO_TYPES;\n  const Video2 = window.themeCore.utils.Video;\n  let containers = null;\n  let isDrag = false;\n  async function init2() {\n    containers = getContainers();\n    containers.forEach((container) => {\n      if (!container.media.length) {\n        return;\n      }\n      container.modal.init();\n      initVideos2(container);\n      container.slider = initMediaSlider(container);\n      const observer = new MutationObserver(() => {\n        if (container.el.querySelector(selectors$1.notInitedIframe)) {\n          return;\n        }\n        disableTabulationOnNotActiveSlidesWithModel(container.slider);\n        observer.disconnect();\n      });\n      const observerOptions = {\n        attributes: true,\n        childList: true,\n        subtree: true\n      };\n      observer.observe(container.el, observerOptions);\n      zoomMove(container);\n    });\n    setEventListeners();\n  }\n  function zoomMove(container) {\n    let pos = { top: 0, left: 0, x: 0, y: 0 };\n    const mouseDownHandler = function(e) {\n      if (window.innerWidth < breakpoints.afterMedium) {\n        return;\n      }\n      pos = {\n        x: e.clientX,\n        y: e.clientY\n      };\n      on(\"mousemove\", document, mouseMoveHandler);\n      on(\"mouseup\", document, mouseUpHandler);\n    };\n    const mouseMoveHandler = function(e) {\n      const dx = e.clientX - pos.x;\n      const dy = e.clientY - pos.y;\n      isDrag = Boolean(dx + dy);\n    };\n    const mouseUpHandler = function() {\n      off(\"mousemove\", document, mouseMoveHandler);\n      off(\"mouseup\", document, mouseUpHandler);\n    };\n    on(\"mousedown\", container.el, mouseDownHandler);\n  }\n  function setEventListeners() {\n    containers.forEach((container) => {\n      on(\"click\", container.el, (e) => onTriggerClick(e, container));\n      on(\"click\", container.el, (e) => onSlideClick(e, container));\n      on(\"click\", container.el, (e) => onButtonClick(e, container));\n      window.themeCore.EventBus.listen(\n        `Toggle:${container.modalEl.id}:close`,\n        (e) => onZoomModalClose(e, container)\n      );\n    });\n  }\n  function getContainers() {\n    return [...context.querySelectorAll(selectors$1.container)].map(\n      (container) => {\n        const media = [...container.querySelectorAll(selectors$1.media)];\n        const slides = [...container.querySelectorAll(selectors$1.slide)];\n        const content = container.querySelector(selectors$1.content);\n        const modalEl = container.querySelector(selectors$1.modal);\n        const sliderEl = container.querySelector(selectors$1.slider);\n        const button = container.querySelector(selectors$1.button);\n        const modal = Toggle2({\n          toggleSelector: modalEl.id\n        });\n        return {\n          el: container,\n          sliderEl,\n          slides,\n          modalEl,\n          modal,\n          media,\n          content,\n          button\n        };\n      }\n    );\n  }\n  function initVideos2({ slides }) {\n    slides.forEach((slide) => {\n      const [video] = Video2({\n        videoContainer: slide,\n        options: {\n          youtube: {\n            controls: 1,\n            showinfo: 1\n          }\n        }\n      }).init();\n      if (video) {\n        slide.video = video;\n      }\n    });\n  }\n  function initMediaSlider({ sliderEl, slides }) {\n    return new Swiper(sliderEl, {\n      slidesPerView: 1,\n      allowTouchMove: false,\n      zoom: {\n        maxRatio: 3,\n        minRatio: 1\n      },\n      navigation: {\n        prevEl: selectors$1.prevSlide,\n        nextEl: selectors$1.nextSlide\n      },\n      on: {\n        beforeSlideChangeStart: function(slider) {\n          if (slider && slider.zoom && typeof slider.zoom.out === \"function\") {\n            slider.zoom.out();\n          }\n        },\n        slideChange: function(swiper) {\n          pauseAllVideos(slides);\n          disableTabulationOnNotActiveSlidesWithModel(swiper);\n        }\n      }\n    });\n  }\n  function pauseAllVideos(slides) {\n    const videoSlides = slides.filter((slide) => slide.video);\n    if (!videoSlides.length) {\n      return;\n    }\n    videoSlides.forEach(({ video }) => {\n      if (VIDEO_TYPES.youtube === video.type) {\n        video.player.pauseVideo();\n      } else {\n        video.player.pause();\n      }\n    });\n  }\n  function onTriggerClick(event, container) {\n    const media = event.target.closest(selectors$1.media);\n    if (!media || !container.media.length) {\n      return;\n    }\n    const mediaId = media.dataset.zoomMedia;\n    const index = container.slides.findIndex(\n      (slide) => slide.dataset.zoomSlide === mediaId\n    );\n    container.slider.slideTo(index, 0);\n    document.querySelector(\":root\").style.setProperty(\"--page-height\", ` ${window.innerHeight}px`);\n    container.modal.open(container.modalEl);\n    disableTabulationOnNotActiveSlidesWithModel(container.slider);\n    window.themeCore.EventBus.emit(\"product:zoom:open\");\n  }\n  function onSlideClick(event, container) {\n    const slide = event.target.closest(selectors$1.slide);\n    if (!slide || isDrag) {\n      isDrag = false;\n      return;\n    }\n    container.slider.zoom.toggle();\n  }\n  function onButtonClick(event, container) {\n    const button = event.target.closest(selectors$1.button);\n    if (!button) {\n      return;\n    }\n    const galleryLayout = container.el.dataset.mediaLayout;\n    const productSlider = container.el.querySelector(\n      selectors$1.productSlider\n    );\n    if (!productSlider) {\n      return;\n    }\n    let media = null;\n    switch (galleryLayout) {\n      case \"carousel\":\n        media = productSlider.querySelector(\".swiper-slide-active\");\n        break;\n      case \"stacked\":\n        media = [...productSlider.querySelectorAll(\".swiper-slide\")][0];\n        break;\n      case \"stacked_2_col\":\n        media = [...productSlider.querySelectorAll(\".swiper-slide\")][0];\n        break;\n      default:\n        media = [...productSlider.querySelectorAll(\".swiper-slide\")][0];\n        return;\n    }\n    if (!media || !container.media.length) {\n      return;\n    }\n    const mediaId = media.dataset.zoomMedia || media.dataset.zoomMediaHtmlVideo;\n    const index = container.slides.findIndex(\n      (slide) => slide.dataset.zoomSlide === mediaId\n    );\n    container.slider.slideTo(index, 0);\n    document.querySelector(\":root\").style.setProperty(\"--page-height\", ` ${window.innerHeight}px`);\n    container.modal.open(container.modalEl);\n    disableTabulationOnNotActiveSlidesWithModel(container.slider);\n    window.themeCore.EventBus.emit(\"product:zoom:open\");\n  }\n  function onZoomModalClose(event, container) {\n    if (!event) {\n      return;\n    }\n    container.slider.zoom.out();\n    pauseAllVideos(container.slides);\n  }\n  return Object.freeze({\n    init: init2\n  });\n};\nconst ProductCarousel = ({ config, selectors: selectors2, sectionId }) => {\n  const Swiper = window.themeCore.utils.Swiper;\n  const extendDefaults = window.themeCore.utils.extendDefaults;\n  const defaultSelectors = {\n    slider: \".js-product-media-slider\",\n    sliderNavigationNext: \".js-product-media-slider-next\",\n    sliderNavigationPrev: \".js-product-media-slider-prev\",\n    thumbNavigationNext: \".js-product-media-thumb-next\",\n    thumbNavigationPrev: \".js-product-media-thumb-prev\",\n    sliderSlideVariantId: \".js-product-gallery-slide-variant\",\n    sliderThumbnails: \".js-product-media-slider-thumbnails\",\n    sliderPagination: \".product-media__slider-pagination\",\n    activeClass: \".swiper-slide-active\",\n    modelPoster: \".js-product-media-model-poster\",\n    notInitedIframe: \".js-video.js-video-youtube, .js-video:empty\"\n  };\n  selectors2 = extendDefaults(defaultSelectors, selectors2);\n  let Slider = null;\n  let Thumbnails = null;\n  let initiated = false;\n  function init2() {\n    if (initiated) {\n      return Slider;\n    }\n    const mainSlider = document.querySelector(selectors2.slider);\n    const sliderThumbnails = document.querySelector(selectors2.sliderThumbnails);\n    let sliderAutoHeight = mainSlider.dataset.autoHeight;\n    const thumbnailsPosition = sliderThumbnails.dataset.thumbnailsPosition;\n    let thumbnailsDirections = \"horizontal\";\n    if (thumbnailsPosition === \"left\") {\n      thumbnailsDirections = \"vertical\";\n    }\n    if (thumbnailsDirections === \"horizontal\") {\n      Thumbnails = new Swiper(selectors2.sliderThumbnails, {\n        direction: thumbnailsDirections,\n        slidesPerView: 5,\n        spaceBetween: 16,\n        freeMode: true,\n        watchSlidesProgress: true,\n        a11y: {\n          slideRole: \"\"\n        },\n        threshold: 10\n      });\n    } else {\n      Thumbnails = new Swiper(selectors2.sliderThumbnails, {\n        direction: thumbnailsDirections,\n        freeMode: true,\n        watchSlidesProgress: true,\n        threshold: 10,\n        breakpoints: {\n          1200: {\n            slidesPerView: 4,\n            spaceBetween: 10\n          }\n        }\n      });\n    }\n    Thumbnails.$el.on(\"keydown\", (e) => {\n      if (e.keyCode !== 13 && e.keyCode !== 32) {\n        return;\n      }\n      const slideIndex = e.target.dataset.slideIndex;\n      if (!slideIndex)\n        return;\n      Thumbnails.slideTo(slideIndex);\n      Slider.slideTo(slideIndex);\n    });\n    let prevArrow = document.querySelector(selectors2.sliderNavigationPrev);\n    let nextArrow = document.querySelector(selectors2.sliderNavigationNext);\n    let dynamicPagination = document.querySelector(selectors2.slider).getAttribute(\"data-dynamic-pagination\");\n    dynamicPagination = dynamicPagination === \"true\";\n    sliderAutoHeight = sliderAutoHeight === \"true\";\n    Slider = new Swiper(selectors2.slider, {\n      ...config,\n      autoHeight: sliderAutoHeight,\n      spaceBetween: 8,\n      navigation: {\n        nextEl: nextArrow,\n        prevEl: prevArrow\n      },\n      pagination: {\n        el: selectors2.sliderPagination,\n        clickable: true,\n        dynamicBullets: dynamicPagination\n      },\n      thumbs: {\n        swiper: Thumbnails\n      }\n    });\n    let thumbPrevButton = document.querySelector(selectors2.thumbNavigationPrev);\n    let thumbNextButton = document.querySelector(selectors2.thumbNavigationNext);\n    if (thumbnailsDirections === \"vertical\" && thumbPrevButton && thumbNextButton) {\n      Slider.on(\"slideChange\", function() {\n        if (this.activeIndex === 0) {\n          thumbPrevButton.setAttribute(\"disabled\", \"\");\n          thumbPrevButton.classList.add(\"swiper-button-disabled\");\n        } else {\n          thumbPrevButton.removeAttribute(\"disabled\");\n          thumbPrevButton.classList.remove(\"swiper-button-disabled\");\n        }\n        if (this.slides.length - 1 === this.activeIndex) {\n          thumbNextButton.setAttribute(\"disabled\", \"\");\n          thumbNextButton.classList.add(\"swiper-button-disabled\");\n        } else {\n          thumbNextButton.removeAttribute(\"disabled\", \"\");\n          thumbNextButton.classList.remove(\"swiper-button-disabled\");\n        }\n      });\n      thumbPrevButton.addEventListener(\"click\", function() {\n        Slider.slidePrev();\n      });\n      thumbNextButton.addEventListener(\"click\", function() {\n        Slider.slideNext();\n      });\n    }\n    Slider.on(\"slideChange\", function(swiper) {\n      const activeSlide = swiper.slides[swiper.activeIndex];\n      if (!activeSlide) {\n        return;\n      }\n      swiper.allowTouchMove = !(activeSlide.hasAttribute(\"data-model-slide\") && !activeSlide.querySelector(selectors2.modelPoster));\n    });\n    const targetNode = document.querySelector(selectors2.slider);\n    const observer = new MutationObserver(() => {\n      if (targetNode.querySelector(selectors2.notInitedIframe)) {\n        return;\n      }\n      disableTabulationOnNotActiveSlidesWithModel(Slider);\n      observer.disconnect();\n    });\n    const observerOptions = {\n      attributes: true,\n      childList: true,\n      subtree: true\n    };\n    observer.observe(targetNode, observerOptions);\n    setEventBusListeners2();\n    initiated = true;\n  }\n  function setEventBusListeners2() {\n    if (!Slider) {\n      return;\n    }\n    Slider.on(\"slideChange\", function(swiper) {\n      window.themeCore.EventBus.emit(\"product-slider:slide-change\");\n      disableTabulationOnNotActiveSlidesWithModel(swiper);\n    });\n    window.themeCore.EventBus.listen(`pdp:section-${sectionId}:change-variant`, onChangeVariant);\n  }\n  function onChangeVariant({ variantId }) {\n    if (!Slider) {\n      return;\n    }\n    const currentIndex = [...Slider.slides].findIndex((slide) => {\n      const slideVariantIdEl = slide.querySelector(selectors2.sliderSlideVariantId);\n      if (!slideVariantIdEl) {\n        return false;\n      }\n      const slideVariantIds = slideVariantIdEl.dataset.variantId;\n      return slideVariantIds.includes(variantId);\n    });\n    if (!currentIndex && currentIndex !== 0) {\n      return;\n    }\n    Slider.slideTo(currentIndex);\n  }\n  function destroy() {\n    if (Slider && initiated) {\n      Slider.destroy();\n      Slider = null;\n    }\n    if (Thumbnails && initiated) {\n      Thumbnails.destroy();\n      Thumbnails = null;\n    }\n    initiated = false;\n  }\n  function disableSwipe() {\n    Slider.allowTouchMove = false;\n  }\n  return Object.freeze({\n    init: init2,\n    destroy,\n    disableSwipe\n  });\n};\nconst ProductStickyForm = (section) => {\n  const on = window.themeCore.utils.on;\n  const DEFAULT_HEADER_HEIGHT = 1;\n  const STICKY_SCROLL_KOEFICIENT = 100;\n  const selectors2 = {\n    stickyContainer: \".js-product-sticky-container\",\n    headerContentWrapper: \"[data-header-container]\",\n    headerSticky: \"[data-header-sticky]\",\n    cssRoot: \":root\"\n  };\n  const cssVariables = {\n    headerHeightStatic: \"--header-height-static\"\n  };\n  const breakpoints2 = {\n    afterMedium: 1200\n  };\n  const stickyContainers = [\n    ...section.querySelectorAll(selectors2.stickyContainer)\n  ];\n  const cssRoot = document.querySelector(selectors2.cssRoot);\n  let headerHeight = getHeaderHeight();\n  let windowHeight = window.innerHeight;\n  let oldScrollPosition = window.scrollY;\n  function getHeaderHeight() {\n    const header = document.querySelector(selectors2.headerContentWrapper);\n    if (!header) {\n      return DEFAULT_HEADER_HEIGHT;\n    }\n    const isHeaderSticky = header.closest(selectors2.headerSticky);\n    if (!isHeaderSticky) {\n      return DEFAULT_HEADER_HEIGHT;\n    }\n    const headerHeightStaticValue = cssRoot.style.getPropertyValue(cssVariables.headerHeightStatic);\n    return headerHeightStaticValue ? parseInt(headerHeightStaticValue) : DEFAULT_HEADER_HEIGHT;\n  }\n  function init2() {\n    if (stickyContainers) {\n      const smallerContainer = stickyContainers.reduce(\n        (acc, container) => container.offsetHeight > (acc && acc.offsetHeight) ? acc : container\n      );\n      initStickyContainer(smallerContainer);\n    }\n  }\n  function initStickyContainer(container) {\n    if (!container || !section) {\n      return;\n    }\n    container.style.top = headerHeight + \"px\";\n    on(\"scroll\", () => {\n      onScroll(container);\n    });\n  }\n  function onScroll(container) {\n    if (window.innerWidth < breakpoints2.afterMedium) {\n      return;\n    }\n    headerHeight = getHeaderHeight();\n    let containerHeight = container.getBoundingClientRect().height || 0;\n    let differentHeights = windowHeight - containerHeight + headerHeight;\n    setTimeout(() => {\n      let currentScrollPosition = window.scrollY;\n      windowHeight = window.innerHeight;\n      containerHeight = container.getBoundingClientRect().height || 0;\n      if (differentHeights < headerHeight) {\n        if (oldScrollPosition > differentHeights) {\n          section.style.top = `${windowHeight - containerHeight}px`;\n        } else {\n          section.style.top = `${oldScrollPosition}px`;\n        }\n      }\n      if (currentScrollPosition > oldScrollPosition) {\n        let containerTopPosition = parseInt(\n          container.style.top.replace(\"px\", \"\")\n        );\n        if (!containerTopPosition) {\n          return;\n        }\n        if (containerTopPosition > windowHeight - containerHeight - Math.ceil(\n          container.clientHeight / STICKY_SCROLL_KOEFICIENT\n        )) {\n          container.style.top = `${containerTopPosition - Math.ceil(\n            container.clientHeight / STICKY_SCROLL_KOEFICIENT\n          )}px`;\n        }\n      } else if (currentScrollPosition < oldScrollPosition) {\n        let containerTopPosition = parseInt(\n          container.style.top.replace(\"px\", \"\")\n        );\n        if (!containerTopPosition) {\n          return;\n        }\n        if (containerTopPosition < headerHeight) {\n          container.style.top = `${containerTopPosition + Math.ceil(\n            container.clientHeight / STICKY_SCROLL_KOEFICIENT\n          )}px`;\n        }\n      }\n      oldScrollPosition = window.scrollY;\n    }, 0);\n  }\n  return Object.freeze({\n    init: init2\n  });\n};\nconst ProductNotifyMe = (section) => {\n  const sectionId = section && section.dataset.sectionId;\n  const selectors2 = {\n    notifyMeButtonWrapper: \".js-notify-me-button-wrapper\",\n    notifyMeButton: \".js-notify-me-button\",\n    notifyMePopup: \".js-notify-me-popup\",\n    notifyMeForm: \".js-notify-me-form\",\n    notifyMeFormStatus: \".js-notify-me-form-status\",\n    notifyMeFormInputMessage: \"[name='contact[message]']\",\n    notifyMeFormInputProductURL: \"[name='contact[ProductURL]']\"\n  };\n  const placeholders = {\n    productTitle: \"{{ product_title }}\"\n  };\n  const cssClasses = {\n    active: \"is-active\",\n    hidden: \"is-hidden\",\n    isPosted: \"is-posted\",\n    isNotifyMeActive: \"is-notify-me-popup-active\"\n  };\n  const searchParams = {\n    contactPosted: \"contact_posted\",\n    contactProductUrl: \"contact[ProductURL]\",\n    contactMessage: \"contact[message]\",\n    formType: \"form_type\"\n  };\n  const Toggle2 = window.themeCore.utils.Toggle;\n  const on = window.themeCore.utils.on;\n  let notifyMeButtonWrapper = null;\n  let notifyMeButton = null;\n  let notifyMePopup = null;\n  let notifyMeForm = null;\n  let notifyMeFormInputMessage = null;\n  let notifyMeFormInputProductURL = null;\n  let notifyMePopupToggle = null;\n  let notifyMeFormStatus = null;\n  let notifyMeFormId = null;\n  let changeVariantIsFired = false;\n  function init2() {\n    if (!section || !sectionId) {\n      return false;\n    }\n    notifyMeButtonWrapper = section.querySelector(selectors2.notifyMeButtonWrapper);\n    notifyMeButton = section.querySelector(selectors2.notifyMeButton);\n    notifyMePopup = section.querySelector(selectors2.notifyMePopup);\n    notifyMeForm = section.querySelector(selectors2.notifyMeForm);\n    if (!notifyMeButton || !notifyMePopup || !notifyMeForm) {\n      return false;\n    }\n    notifyMeFormId = notifyMeForm.id;\n    notifyMeFormInputMessage = notifyMeForm.querySelector(selectors2.notifyMeFormInputMessage);\n    notifyMeFormInputProductURL = notifyMeForm.querySelector(selectors2.notifyMeFormInputProductURL);\n    notifyMeFormStatus = notifyMeForm.querySelector(selectors2.notifyMeFormStatus);\n    if (!notifyMeFormInputMessage || !notifyMeFormInputProductURL || !notifyMeFormStatus) {\n      return;\n    }\n    initToggle();\n    initFormStatus();\n    setEventBusListeners2();\n  }\n  function initToggle() {\n    notifyMePopupToggle = Toggle2({\n      toggleSelector: notifyMePopup.id\n    });\n    notifyMePopupToggle.init();\n    on(\"click\", notifyMePopup, function(e) {\n      if (e.target == this) {\n        notifyMePopupToggle.close(notifyMePopup);\n      }\n    });\n    window.themeCore.EventBus.listen(`Toggle:${notifyMePopup.id}:close`, closeNotifyMePopup);\n    window.themeCore.EventBus.listen(`Toggle:${notifyMePopup.id}:open`, openNotifyMePopup);\n  }\n  function initFormStatus() {\n    if (isCurrentFormPosted()) {\n      notifyMeForm.classList.add(cssClasses.isPosted);\n      notifyMePopupToggle.open(notifyMePopup);\n    }\n  }\n  function isCurrentFormPosted() {\n    return window.location.hash.includes(`#${notifyMeFormId}`) && notifyMeFormStatus.dataset.formStatus === \"posted\";\n  }\n  function closeNotifyMePopup() {\n    if (isCurrentFormPosted()) {\n      setTimeout(() => {\n        notifyMeForm.classList.remove(cssClasses.isPosted);\n        section.classList.remove(cssClasses.isNotifyMeActive);\n      }, 400);\n      let newUrl = new URL(window.location.href);\n      newUrl.hash = \"\";\n      newUrl.searchParams.delete(searchParams.contactPosted);\n      newUrl.searchParams.delete(searchParams.contactProductUrl);\n      newUrl.searchParams.delete(searchParams.contactMessage);\n      newUrl.searchParams.delete(searchParams.formType);\n      window.history.replaceState({}, null, newUrl.toString());\n    }\n  }\n  function openNotifyMePopup() {\n    section.classList.add(cssClasses.isNotifyMeActive);\n  }\n  function setEventBusListeners2() {\n    window.themeCore.EventBus.listen(`pdp:section-${sectionId}:change-variant`, onChangeVariant);\n    if (!changeVariantIsFired) {\n      const productElementJSON = section.querySelector(\"[data-js-product-json]\");\n      let productJSON;\n      try {\n        productJSON = JSON.parse(productElementJSON.innerText);\n      } catch {\n        productJSON = null;\n      }\n      if (!productJSON) {\n        return;\n      }\n      if (productJSON.has_only_default_variant) {\n        updateFormFields(productJSON.variants[0], productJSON);\n        updateNotifyMeButton(productJSON.variants[0]);\n      }\n    }\n  }\n  function onChangeVariant({ variant, product }) {\n    changeVariantIsFired = true;\n    if (!variant || !product) {\n      return false;\n    }\n    updateNotifyMeButton(variant);\n    updateFormFields(variant, product);\n  }\n  function updateFormFields(variant, product) {\n    const variantAvailable = variant.available;\n    const variantId = variant.id;\n    const productURL = product.url;\n    const productTitle = product.title;\n    if (variantAvailable || !variantId || !productURL || !productTitle) {\n      notifyMeFormInputMessage.value = \"\";\n      notifyMeFormInputProductURL.value = \"\";\n      return false;\n    }\n    const variantURL = `${window.location.origin}${productURL}?variant=${variantId}`;\n    const notifyMeMessage = notifyMeFormInputMessage.dataset.notifyMeMessage;\n    notifyMeFormInputMessage.value = notifyMeMessage.replace(placeholders.productTitle, productTitle);\n    notifyMeFormInputProductURL.value = variantURL;\n  }\n  function updateNotifyMeButton(variant) {\n    const variantAvailable = variant.available;\n    if (variantAvailable) {\n      notifyMeButtonWrapper.classList.add(cssClasses.hidden);\n      notifyMeButton.classList.remove(cssClasses.active);\n    } else {\n      notifyMeButton.classList.add(cssClasses.active);\n      notifyMeButtonWrapper.classList.remove(cssClasses.hidden);\n    }\n  }\n  return Object.freeze({\n    init: init2\n  });\n};\nconst ProductAskQuestion = (section) => {\n  const sectionId = section && section.dataset.sectionId;\n  const selectors2 = {\n    askQuestionButton: \".js-ask-question-button\",\n    askQuestionPopup: \".js-ask-question-popup\",\n    askQuestionForm: \".js-ask-question-form\",\n    askQuestionFormStatus: \".js-ask-question-form-status\",\n    askQuestionFormInputProductURL: \"[name='contact[product_url]']\"\n  };\n  const cssClasses = {\n    active: \"is-active\",\n    isPosted: \"is-posted\",\n    isNotifyMeActive: \"is-ask-question-popup-active\"\n  };\n  const searchParams = {\n    contactPosted: \"contact_posted\",\n    contactProductUrl: \"contact[product_url]\",\n    contactMessage: \"contact[body]\",\n    formType: \"form_type\"\n  };\n  const Toggle2 = window.themeCore.utils.Toggle;\n  const on = window.themeCore.utils.on;\n  let askQuestionButton = null;\n  let askQuestionPopup = null;\n  let askQuestionForm = null;\n  let askQuestionFormInputProductURL = null;\n  let askQuestionPopupToggle = null;\n  let askQuestionFormStatus = null;\n  let askQuestionFormId = null;\n  let changeVariantIsFired = false;\n  function init2() {\n    if (!section || !sectionId) {\n      return false;\n    }\n    askQuestionButton = section.querySelector(selectors2.askQuestionButton);\n    askQuestionPopup = section.querySelector(selectors2.askQuestionPopup);\n    askQuestionForm = section.querySelector(selectors2.askQuestionForm);\n    if (!askQuestionButton || !askQuestionPopup || !askQuestionForm) {\n      return false;\n    }\n    askQuestionFormId = askQuestionForm.id;\n    askQuestionFormInputProductURL = askQuestionForm.querySelector(selectors2.askQuestionFormInputProductURL);\n    askQuestionFormStatus = askQuestionForm.querySelector(selectors2.askQuestionFormStatus);\n    if (!askQuestionFormInputProductURL || !askQuestionFormStatus) {\n      return;\n    }\n    initToggle();\n    initFormStatus();\n    setEventBusListeners2();\n  }\n  function initToggle() {\n    askQuestionPopupToggle = Toggle2({\n      toggleSelector: askQuestionPopup.id\n    });\n    askQuestionPopupToggle.init();\n    on(\"click\", askQuestionPopup, function(e) {\n      if (e.target == this) {\n        askQuestionPopupToggle.close(askQuestionPopup);\n      }\n    });\n    window.themeCore.EventBus.listen(`Toggle:${askQuestionPopup.id}:close`, closeAskQuestionPopup);\n    window.themeCore.EventBus.listen(`Toggle:${askQuestionPopup.id}:open`, openQuestionPopup);\n  }\n  function initFormStatus() {\n    if (isCurrentFormPosted()) {\n      askQuestionForm.classList.add(cssClasses.isPosted);\n      askQuestionPopupToggle.open(askQuestionPopup);\n    }\n  }\n  function isCurrentFormPosted() {\n    return window.location.hash.includes(`#${askQuestionFormId}`) && askQuestionFormStatus.dataset.formStatus === \"posted\";\n  }\n  function closeAskQuestionPopup() {\n    if (isCurrentFormPosted()) {\n      setTimeout(() => {\n        askQuestionForm.classList.remove(cssClasses.isPosted);\n        section.classList.remove(cssClasses.isNotifyMeActive);\n      }, 400);\n      let newUrl = new URL(window.location.href);\n      newUrl.hash = \"\";\n      newUrl.searchParams.delete(searchParams.contactPosted);\n      newUrl.searchParams.delete(searchParams.contactProductUrl);\n      newUrl.searchParams.delete(searchParams.contactMessage);\n      newUrl.searchParams.delete(searchParams.formType);\n      window.history.replaceState({}, null, newUrl.toString());\n    }\n  }\n  function openQuestionPopup() {\n    section.classList.add(cssClasses.isNotifyMeActive);\n  }\n  function setEventBusListeners2() {\n    window.themeCore.EventBus.listen(`pdp:section-${sectionId}:change-variant`, onChangeVariant);\n    if (!changeVariantIsFired) {\n      const productElementJSON = section.querySelector(\"[data-js-product-json]\");\n      let productJSON;\n      try {\n        productJSON = JSON.parse(productElementJSON.innerText);\n      } catch {\n        productJSON = null;\n      }\n      if (!productJSON) {\n        return;\n      }\n      if (productJSON.has_only_default_variant) {\n        updateFormFields(productJSON.variants[0], productJSON);\n      }\n    }\n  }\n  function onChangeVariant({ variant, product }) {\n    changeVariantIsFired = true;\n    if (!variant || !product) {\n      return false;\n    }\n    updateFormFields(variant, product);\n  }\n  function updateFormFields(variant, product) {\n    const variantId = variant.id;\n    const productURL = product.url;\n    if (!variantId || !productURL) {\n      askQuestionFormInputProductURL.value = \"\";\n      return false;\n    }\n    const variantURL = `${window.location.origin}${productURL}?variant=${variantId}`;\n    askQuestionFormInputProductURL.value = variantURL;\n  }\n  return Object.freeze({\n    init: init2\n  });\n};\nconst ProductMediaScroller = (section) => {\n  const selectors2 = {\n    mediaContainer: \".js-product-media-container\",\n    mediaItem: \".js-product-media-item\",\n    mediaItemVariant: \".js-product-media-item-variant\",\n    header: \".js-header\",\n    cssRoot: \":root\"\n  };\n  const attributes2 = {\n    enableMediaScroller: \"data-enable-media-scroller\",\n    staticHeader: \"data-static-header\",\n    hideOnScrollHeader: \"data-hide-on-scroll-down\"\n  };\n  const cssVariables = {\n    headerHeightStatic: \"--header-height-static\",\n    headerHeight: \"--header-height\"\n  };\n  const breakpoints2 = {\n    afterMedium: \"(min-width: 1200px)\"\n  };\n  const sectionId = section && section.dataset.sectionId;\n  const cssRoot = document.querySelector(selectors2.cssRoot);\n  let previousVariantId;\n  function init2() {\n    if (!section) {\n      return;\n    }\n    const mediaContainer = section.querySelector(selectors2.mediaContainer);\n    if (!mediaContainer) {\n      return;\n    }\n    const enableMediaScroller = mediaContainer.hasAttribute(attributes2.enableMediaScroller);\n    if (!enableMediaScroller) {\n      return;\n    }\n    setEventBusListeners2();\n  }\n  function setEventBusListeners2() {\n    window.themeCore.EventBus.listen(`pdp:section-${sectionId}:change-variant`, onChangeVariant);\n  }\n  function onChangeVariant({ variantId, firstInitialization }) {\n    if (previousVariantId === variantId) {\n      return;\n    }\n    previousVariantId = variantId;\n    const isDesktop = window.matchMedia(breakpoints2.afterMedium).matches;\n    if (!isDesktop || firstInitialization) {\n      return;\n    }\n    const mediaContainer = section.querySelector(selectors2.mediaContainer);\n    const mediaItems = mediaContainer.querySelectorAll(selectors2.mediaItem);\n    const currentMediaItem = [...mediaItems].find((mediaItem) => {\n      const mediaItemVariant = mediaItem.querySelector(selectors2.mediaItemVariant);\n      if (!mediaItemVariant) {\n        return false;\n      }\n      const mediaItemVariantIds = mediaItemVariant.dataset.variantId;\n      return mediaItemVariantIds.includes(variantId);\n    });\n    if (!currentMediaItem) {\n      return null;\n    }\n    scrollToElement(currentMediaItem);\n  }\n  function scrollToElement(element) {\n    const sectionBoundingClientRect = section.getBoundingClientRect();\n    const elementBoundingClientRect = element.getBoundingClientRect();\n    const elementTopOffset = Math.round(elementBoundingClientRect.top);\n    const sectionTopOffset = Math.round(sectionBoundingClientRect.top);\n    const sectionBottomOffset = Math.round(sectionBoundingClientRect.bottom);\n    const windowScrollY = Math.round(window.scrollY);\n    const scrollOffset = 8;\n    let scrollTo = windowScrollY + elementTopOffset - scrollOffset;\n    const containerTop = windowScrollY + sectionTopOffset - scrollOffset;\n    const containerBottom = windowScrollY + sectionBottomOffset + scrollOffset;\n    scrollTo = Math.max(scrollTo, containerTop);\n    const currentHeaderHeight = getCurrentHeaderHeight();\n    const currentScrollTo = scrollTo - currentHeaderHeight;\n    if (Math.abs(windowScrollY - currentScrollTo) <= 1) {\n      return;\n    }\n    const headerHeight = getHeaderHeight(windowScrollY, scrollTo);\n    scrollTo = scrollTo - headerHeight;\n    scrollTo = Math.min(scrollTo, containerBottom - window.innerHeight);\n    window.scrollTo({\n      top: scrollTo,\n      behavior: \"smooth\"\n    });\n  }\n  function getCurrentHeaderHeight() {\n    const header = document.querySelector(selectors2.header);\n    if (!header) {\n      return 0;\n    }\n    const isHeaderStatic = header.hasAttribute(attributes2.staticHeader);\n    if (isHeaderStatic) {\n      return 0;\n    }\n    const headerHeightValue = cssRoot.style.getPropertyValue(cssVariables.headerHeight);\n    return headerHeightValue ? parseInt(headerHeightValue) : 0;\n  }\n  function getHeaderHeight(windowScrollY, scrollTo) {\n    const header = document.querySelector(selectors2.header);\n    if (!header) {\n      return 0;\n    }\n    const isHeaderStatic = header.hasAttribute(attributes2.staticHeader);\n    const isHideOnScrollHeader = header.hasAttribute(attributes2.hideOnScrollHeader);\n    const headerHeightStaticValue = cssRoot.style.getPropertyValue(cssVariables.headerHeightStatic);\n    const headerHeightStatic = headerHeightStaticValue ? parseInt(headerHeightStaticValue) : 0;\n    if (isHeaderStatic || isHideOnScrollHeader && windowScrollY < scrollTo - headerHeightStatic) {\n      return 0;\n    }\n    return headerHeightStatic;\n  }\n  return Object.freeze({\n    init: init2\n  });\n};\nconst ProductSection = (section) => {\n  const Toggle2 = window.themeCore.utils.Toggle;\n  const isElementInViewport = window.themeCore.utils.isElementInViewport;\n  const off = window.themeCore.utils.off;\n  const on = window.themeCore.utils.on;\n  const cssClasses = window.themeCore.utils.cssClasses;\n  const selectors2 = {\n    mediaContainer: \".js-product-media-container\",\n    thumbnailsStacked: \".js-product-media-thumbnails-stacked\",\n    thumbnailsSlide: \".js-product-media-thumbnails-slide\",\n    slide: \".js-product-gallery-slide\",\n    modelButton: \".js-product-media-model-button\",\n    modelPoster: \".js-product-media-model-poster\",\n    modelContent: \".js-product-media-model-content\"\n  };\n  const sectionId = section && section.dataset.sectionId;\n  const carouselSelectors = {\n    slider: `.js-product-media-slider-${sectionId}`,\n    sliderNavigationNext: `.js-product-media-slider-next-${sectionId}`,\n    sliderNavigationPrev: `.js-product-media-slider-prev-${sectionId}`,\n    thumbNavigationNext: `.js-product-media-thumb-next-${sectionId}`,\n    thumbNavigationPrev: `.js-product-media-thumb-prev-${sectionId}`,\n    sliderSlideVariantId: `.js-product-gallery-slide-variant-${sectionId}`,\n    sliderThumbnails: `.js-product-media-slider-thumbnails-${sectionId}`,\n    sliderPagination: `.product-media__slider-pagination-${sectionId}`\n  };\n  const mediaContainerClasses = {\n    stacked: \"product-media--layout-stacked\",\n    stacked_2_col: \"product-media--layout-stacked_2_col\",\n    stacked_2_col_with_big_img: \"product-media--layout-stacked_2_col_with_big_image\",\n    slider: \"product-media--layout-carousel\"\n  };\n  const drawersSelectors = {\n    sizeGuideDrawer: `productSizeGuideDrawer-${sectionId}`,\n    descriptionDrawer: `descriptionDrawer-${sectionId}`,\n    customDrawer1: `productDrawer1-${sectionId}`,\n    customDrawer2: `productDrawer2-${sectionId}`\n  };\n  let Carousel = null;\n  function init2() {\n    const ProductZoom = Zoom(section);\n    Carousel = ProductCarousel({\n      selectors: carouselSelectors,\n      sectionId\n    });\n    const productStickyForms = ProductStickyForm(section);\n    ProductZoom.init();\n    productStickyForms.init();\n    initCarousel();\n    setDrawers();\n    initModelButtons();\n    initNotifyMe();\n    initAskQuestion();\n    const productHandle = section.dataset.productHandle;\n    if (!productHandle) {\n      return;\n    }\n    let recentlyViewed = localStorage.getItem(\"theme_recently_viewed\");\n    if (recentlyViewed) {\n      try {\n        recentlyViewed = JSON.parse(recentlyViewed);\n        recentlyViewed = [.../* @__PURE__ */ new Set([...recentlyViewed, productHandle])];\n        recentlyViewed = recentlyViewed.slice(-11);\n        localStorage.setItem(\"theme_recently_viewed\", JSON.stringify(recentlyViewed));\n      } catch (e) {\n        console.log(e);\n      } finally {\n        return;\n      }\n    }\n    localStorage.setItem(\"theme_recently_viewed\", `[\"${productHandle}\"]`);\n  }\n  function initCarousel() {\n    const mediaContainer = section.querySelector(selectors2.mediaContainer);\n    if (!mediaContainer) {\n      return;\n    }\n    const mediaLayout = mediaContainer.dataset.mediaLayout;\n    if (!mediaLayout) {\n      return;\n    }\n    if (mediaLayout === \"carousel\") {\n      Carousel.init();\n    }\n    if (mediaLayout === \"stacked\" || mediaLayout === \"stacked_2_col\" || mediaLayout === \"stacked_2_col_with_big_image\") {\n      updateMedia();\n      on(\"scroll\", document, onScroll);\n      activeDragThumbnail();\n      on(\"resize\", updateMedia);\n      ProductMediaScroller(section).init();\n    }\n  }\n  function updateMedia() {\n    const mediaContainer = section.querySelector(selectors2.mediaContainer);\n    if (!mediaContainer) {\n      return;\n    }\n    const mediaLayout = mediaContainer.dataset.mediaLayout;\n    let stackedClass = mediaContainerClasses.stacked;\n    if (mediaLayout === \"stacked_2_col\") {\n      stackedClass = mediaContainerClasses.stacked_2_col;\n    } else if (mediaLayout === \"stacked_2_col_with_big_image\") {\n      stackedClass = mediaContainerClasses.stacked_2_col_with_big_img;\n    }\n    if (window.innerWidth > 1199) {\n      Carousel.destroy();\n      mediaContainer.classList.add(stackedClass);\n      mediaContainer.classList.remove(mediaContainerClasses.slider);\n    } else {\n      Carousel.init();\n      mediaContainer.classList.add(mediaContainerClasses.slider);\n      mediaContainer.classList.remove(stackedClass);\n    }\n  }\n  function onScroll() {\n    off(\"scroll\", document, onScroll);\n    const mediaContainer = section.querySelector(selectors2.mediaContainer);\n    const thumbnailsStacked = section.querySelector(selectors2.thumbnailsStacked);\n    if (!mediaContainer || !thumbnailsStacked) {\n      return;\n    }\n    const slides = [...mediaContainer.querySelectorAll(selectors2.slide)];\n    slides.forEach((slide) => {\n      setTimeout(() => {\n        if (isElementInViewport(slide, thumbnailsStacked, 200)) {\n          const thumbnails = [...thumbnailsStacked.querySelectorAll(selectors2.thumbnailsSlide)];\n          thumbnails.forEach((thumbnail) => {\n            thumbnail.classList.remove(cssClasses.active);\n          });\n          const currentThumbnail = thumbnails.find((thumbnail) => thumbnail.dataset.mediaId === slide.dataset.mediaId);\n          if (currentThumbnail) {\n            currentThumbnail.classList.add(cssClasses.active);\n            const offsetTopThumbnail = currentThumbnail.offsetTop;\n            const offsetHeightContainer = thumbnailsStacked.offsetHeight / 2;\n            const offsetHeightThumbnail = currentThumbnail.offsetHeight / 2;\n            const scroll = offsetTopThumbnail - offsetHeightContainer + offsetHeightThumbnail;\n            thumbnailsStacked.scroll(0, scroll);\n          }\n        }\n        on(\"scroll\", document, onScroll);\n      }, 700);\n    });\n  }\n  function activeDragThumbnail() {\n    const thumbnail = section.querySelector(selectors2.thumbnailsStacked);\n    if (!thumbnail) {\n      return;\n    }\n    let pos = { top: 0, left: 0, x: 0, y: 0 };\n    let isDrag = false;\n    const mouseDownHandler = function(e) {\n      thumbnail.style.cursor = \"grabbing\";\n      thumbnail.style.userSelect = \"none\";\n      thumbnail.style.scrollBehavior = \"auto\";\n      pos = {\n        left: thumbnail.scrollLeft,\n        top: thumbnail.scrollTop,\n        // Get the current mouse position\n        x: e.clientX,\n        y: e.clientY\n      };\n      on(\"mousemove\", document, mouseMoveHandler);\n      on(\"mouseup\", document, mouseUpHandler);\n    };\n    const mouseMoveHandler = function(e) {\n      const dx = e.clientX - pos.x;\n      const dy = e.clientY - pos.y;\n      isDrag = Boolean(dx + dy);\n      thumbnail.scrollTop = pos.top - dy;\n      thumbnail.scrollLeft = pos.left - dx;\n    };\n    const mouseUpHandler = function() {\n      const anchors = [...thumbnail.querySelectorAll(\"a\")];\n      if (anchors && isDrag) {\n        const preventDefault = (e) => {\n          e.preventDefault();\n          anchors.forEach((anchor) => {\n            off(\"click\", anchor, preventDefault);\n          });\n          isDrag = false;\n        };\n        anchors.forEach((anchor) => {\n          on(\"click\", anchor, preventDefault);\n        });\n      }\n      document.removeEventListener(\"mousemove\", mouseMoveHandler);\n      document.removeEventListener(\"mouseup\", mouseUpHandler);\n      thumbnail.style.cursor = \"grab\";\n      thumbnail.style.removeProperty(\"user-select\");\n      thumbnail.style.scrollBehavior = \"smooth\";\n    };\n    on(\"mousedown\", thumbnail, mouseDownHandler);\n  }\n  function setDrawers() {\n    try {\n      setToggleDrawer(drawersSelectors.sizeGuideDrawer, { hasFullWidth: true });\n      setToggleDrawer(drawersSelectors.descriptionDrawer);\n      setToggleDrawer(drawersSelectors.customDrawer1);\n      setToggleDrawer(drawersSelectors.customDrawer2);\n    } catch (e) {\n    }\n  }\n  function setToggleDrawer(selector, options = {}) {\n    const toggleButton = document.querySelector(`[data-js-toggle=\"${selector}\"]`);\n    if (!toggleButton) {\n      return;\n    }\n    const ToggleDrawer = Toggle2({\n      toggleSelector: selector,\n      ...options\n    });\n    ToggleDrawer.init();\n    if (selector === drawersSelectors.sizeGuideDrawer) {\n      let sizeGuideDrawer = document.getElementById(drawersSelectors.sizeGuideDrawer);\n      if (!sizeGuideDrawer) {\n        return;\n      }\n      on(\"click\", sizeGuideDrawer, function(e) {\n        if (e.target == this) {\n          ToggleDrawer.close(sizeGuideDrawer);\n        }\n      });\n    }\n  }\n  function initModelButtons() {\n    const modelButtons = [...section.querySelectorAll(selectors2.modelButton)];\n    if (!modelButtons.length) {\n      return;\n    }\n    section.addEventListener(\"click\", (event) => {\n      const button = event.target.closest(selectors2.modelButton);\n      if (!button) {\n        return;\n      }\n      const container = button.parentElement;\n      const poster = container.querySelector(selectors2.modelPoster);\n      const content = container.querySelector(selectors2.modelContent);\n      if (!poster || !content) {\n        return;\n      }\n      poster.remove();\n      button.remove();\n      content.classList.remove(cssClasses.hidden);\n      Carousel.disableSwipe();\n    });\n  }\n  function initNotifyMe() {\n    const productNotifyMe = ProductNotifyMe(section);\n    productNotifyMe.init();\n  }\n  function initAskQuestion() {\n    const productAskQuestion = ProductAskQuestion(section);\n    productAskQuestion.init();\n  }\n  return Object.freeze({\n    init: init2\n  });\n};\nconst selectors = {\n  section: '[data-section-type=\"product\"]',\n  productAvailabilityToggleSelector: \"[data-js-toggle-selector]\",\n  video: \".js-video\",\n  slide: \".js-product-gallery-slide\"\n};\nconst videos = [];\nlet Video;\nlet sections;\nlet ProductForms;\nlet Toggle;\nasync function init(sectionId) {\n  Video = window.themeCore.utils.Video;\n  Toggle = window.themeCore.utils.Toggle;\n  sections = [...document.querySelectorAll(selectors.section)].filter((section) => !sectionId || section.closest(`#shopify-section-${sectionId}`));\n  ProductForms = ProductForm();\n  sections.forEach(initSection);\n  ProductForms.init();\n  initVideos();\n  setEventBusListeners();\n  window.themeCore.EventBus.emit(\"product:loaded\");\n}\nfunction initSection(section) {\n  const productSection = ProductSection(section);\n  window.themeCore.EventBus.listen(\n    `pickup-availability-drawer:productAvailability-pickup-availability__${section.dataset.sectionId}:loaded`,\n    () => {\n      const productAvailabilityToggles = [\n        ...document.querySelectorAll(\n          selectors.productAvailabilityToggleSelector\n        )\n      ];\n      const productAvailabilityToggle = productAvailabilityToggles.find(\n        (toggle) => {\n          return toggle.dataset.jsToggle === `productAvailability-pickup-availability__${section.dataset.sectionId}`;\n        }\n      );\n      const productAvailability = Toggle({\n        toggleSelector: productAvailabilityToggle.dataset.target\n      });\n      productAvailability.init();\n    }\n  );\n  productSection.init();\n}\nfunction pauseVideoPlayers() {\n  if (!videos.length)\n    return;\n  videos.forEach(({ player }) => {\n    try {\n      player.pauseVideo();\n    } catch (e) {\n    }\n    try {\n      player.pause();\n    } catch (e) {\n    }\n  });\n}\nfunction setEventBusListeners() {\n  window.themeCore.EventBus.listen(\"product-slider:slide-change\", pauseVideoPlayers);\n  window.themeCore.EventBus.listen(\"product:zoom:open\", pauseVideoPlayers);\n}\nfunction initVideos() {\n  const slides = [...document.querySelectorAll(selectors.slide)];\n  slides.forEach((slide) => {\n    const [video] = Video({\n      videoContainer: slide,\n      options: {\n        youtube: {\n          controls: 1,\n          showinfo: 1\n        }\n      }\n    }).init();\n    if (video) {\n      videos.push(video);\n    }\n  });\n}\nconst Product = () => {\n  return Object.freeze({\n    init\n  });\n};\nexport {\n  Product as P\n};\n"],
  "mappings": "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",
  "names": []
}
