{
  "version": 3,
  "sources": ["/cdn/shop/t/92/assets/pdp-clean-v4-variants-v837.js?lly=laley-custom-20260921-epostsjekk-v860"],
  "sourcesContent": ["/* ============================================================\n   Laley PDP Clean v4 \u2014 variants v837\n   Modul\u00E6r PDP-runtime. Den gamle v3-monolitten er kun historisk arkiv.\n   Registrerer metoder p\u00E5 LaleyPDP.prototype via PDP.registerModule.\n   Krever pdp-clean-v4-core.js lastet f\u00F8rst (defer-rekkef\u00F8lge i product-clean-v3-1.liquid).\n   ============================================================ */\n(() => {\n  const PDP = window.LaleyPDPCleanV4;\n  if (!PDP || typeof PDP.registerModule !== 'function') {\n    console.error('[PDP] Kjerne mangler \u2014 hopper over modul: variants');\n    return;\n  }\n  const { cssEscape, readJSON } = PDP.utils;\n\n  PDP.registerModule('variants', {\n    cleanVariantLabel(variant) {\n      const title = String(variant?.title || '').trim();\n      if (!title || /^default title$/i.test(title)) return '';\n      return title;\n    },\n\n    // Shopify option index of the size dimension (or -1 if the product has none).\n    sizeOptionIndex() {\n      const sizeGroup = this.optionGroups.find((group) => group.hasAttribute('data-pdp-size-group'));\n      const input = sizeGroup?.querySelector('[data-pdp-option-input][data-option-index]');\n      return input ? Number(input.dataset.optionIndex) : -1;\n    },\n\n    // Human label for a sold-out notice. Prefer the SIZE value alone (\"S\") \u2014 the\n    // selected colour is already visible in the swatch, so the technical variant\n    // title (\"S / Black\") is noise. Only when the product has no size dimension do\n    // we fall back to its single stored option value (the localized colour name).\n    soldOutNoticeLabel(variant) {\n      const idx = this.sizeOptionIndex();\n      const sizeValue = idx >= 0 ? variant?.options?.[idx] : null;\n      if (sizeValue) return String(sizeValue).trim();\n      return this.cleanVariantLabel(variant);\n    },\n\n    optionGroupDisplayName(group) {\n      const triggerName = group?.querySelector?.('.pdp-clean__dropdown-trigger-name')?.textContent?.trim();\n      if (triggerName) return triggerName;\n      const legendText = group?.querySelector?.('legend')?.textContent || '';\n      const name = legendText.split(':')[0].replace(/\\s+/g, ' ').trim();\n      return name || 'delen';\n    },\n\n    requiredOptionGroups() {\n      return this.optionGroups.filter((group) => (\n        group.hasAttribute('data-pdp-size-group')\n        || group.hasAttribute('data-pdp-length-group')\n      ));\n    },\n\n    awaitingSizeCtaLabel() {\n      const groups = this.requiredOptionGroups();\n      const hasLength = groups.some((group) => group.hasAttribute('data-pdp-length-group'));\n      if (hasLength) {\n        const next = groups.find((group) => !group.querySelector('[data-pdp-option-input]:checked'));\n        return next?.hasAttribute('data-pdp-length-group') ? window.LaleyTranslate(\"choose_a_leg_length_af7005\", \"Velg benlengde\") : window.LaleyTranslate(\"choose_a_size_28892d\", \"Velg st\u00F8rrelse\");\n      }\n      if (groups.length < 2) return window.LaleyTranslate(\"choose_a_size_28892d\", \"Velg st\u00F8rrelse\");\n      const sharedPicker = this.section.querySelector('[data-pdp-bundle-shared]:not([hidden])');\n      if (sharedPicker) return window.LaleyTranslate(\"choose_a_size_28892d\", \"Velg st\u00F8rrelse\");\n      const missing = groups.filter((group) => !group.querySelector('[data-pdp-option-input]:checked'));\n      if (missing.length !== 1) return window.LaleyTranslate(\"choose_sizes_578b54\", \"Velg st\u00F8rrelser\");\n      const name = this.optionGroupDisplayName(missing[0]).toLocaleLowerCase('nb-NO');\n      if (name.includes('barn')) return window.LaleyTranslate(\"choose_a_child_size_f7005e\", \"Velg barnest\u00F8rrelse\");\n      if (name.includes('voksen')) return window.LaleyTranslate(\"choose_an_adult_size_3cbe8b\", \"Velg voksenst\u00F8rrelse\");\n      if (this.bundle) return window.LaleyTranslate(\"choose_sizes_578b54\", \"Velg st\u00F8rrelser\");\n      return `${window.LaleyTranslate(\"choose_29b2bf\", \"Velg \")}${name}`;\n    },\n\n    variantFromInput() {\n      const id = this.variantInput?.value || this.section.querySelector('[data-pdp-variant-id]')?.value;\n      return this.variants.find((variant) => String(variant.id) === String(id));\n    },\n\n    variantFromUrl() {\n      const id = new URLSearchParams(window.location.search).get('variant');\n      if (!id) return null;\n      return this.variants.find((variant) => String(variant.id) === String(id)) || null;\n    },\n\n    hasRequiredSizeSelection() {\n      const groups = this.requiredOptionGroups();\n      if (!groups.length) return true;\n      if (!this.requiresSizeSelection && !groups.some((group) => group.hasAttribute('data-pdp-length-group'))) return true;\n      return groups.every((group) => Boolean(group.querySelector('[data-pdp-option-input]:checked')));\n    },\n\n    // \u2500\u2500 ONE authoritative purchase-state resolver \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n    // Every consumer (main CTA, sticky, variant status, Klarna, purchase options,\n    // BIS panel, analytics) reads this \u2014 no module re-derives priority. Liquid\n    // renders the matching initial state in first HTML so there is no flash.\n    isFullySoldOut() {\n      if (this.section?.dataset?.pdpFullySoldOut === 'true') {\n        return !this.variants.some((variant) => variant.available);\n      }\n      return this.variants.length > 0 && this.variants.every((variant) => !variant.available);\n    },\n\n    purchaseMode(variant) {\n      const v = variant === undefined ? this.currentVariant : variant;\n      if (this.section?.dataset?.pdpComingSoon === 'true' && !this.hasRequiredSizeSelection()) return 'awaiting_size';\n      if (this.section?.dataset?.pdpComingSoon === 'true') return 'coming_soon';\n      if (!this.hasRequiredSizeSelection()) return 'awaiting_size';\n      if (this.isFullySoldOut()) return 'fully_sold_out';\n      if (!v || !v.available) return 'selected_variant_sold_out';\n      return 'purchasable';\n    },\n\n    isRestockMode(mode) {\n      return mode === 'fully_sold_out' || mode === 'selected_variant_sold_out';\n    },\n\n    // Restock analytics on the existing CustomEvent contract \u2014 no new vendor, no PII\n    // (product/variant IDs + non-identifying size only; never email/phone). Every\n    // emission is de-duplicated: an identical event+variant+size+source inside a short\n    // window is dropped, so re-renders and double activations can't double-count.\n    emitRestockAnalytics(eventName, extra = {}) {\n      const mode = extra.state || this.purchaseMode();\n      const variant = extra.variant || this.currentVariant;\n      const detail = {\n        event: eventName,\n        product_id: this.section?.dataset?.productId || null,\n        product_handle: this.section?.dataset?.productHandle || null,\n        variant_id: extra.hasVariant === false ? null : (variant?.id || null),\n        size: extra.size || null,\n        source: extra.source || null,\n        state: this.isRestockMode(mode) ? mode : null,\n      };\n      const key = `${eventName}|${detail.variant_id}|${detail.size}|${detail.source}`;\n      const now = (window.performance && performance.now) ? performance.now() : 0;\n      this._analyticsSeen = this._analyticsSeen || new Map();\n      const last = this._analyticsSeen.get(key);\n      if (last != null && (now - last) < 600) return;\n      this._analyticsSeen.set(key, now);\n      document.dispatchEvent(new CustomEvent('laley:analytics', { bubbles: true, detail }));\n    },\n\n    // Drives the chrome that is NOT the button: fully-sold-out banner, Klarna,\n    // purchase options, and BIS-panel visibility, all from the resolved mode.\n    applyPurchaseChrome(mode) {\n      // Et helt utsolgt produkt beholder \u00E9n rolig statusmelding mens kunden\n      // velger st\u00F8rrelser. CTA-en kan samtidig eie neste steg: \u00ABVelg st\u00F8rrelser\u00BB.\n      const fully = mode === 'fully_sold_out' || (mode === 'awaiting_size' && this.isFullySoldOut());\n      const restock = this.isRestockMode(mode) || fully;\n\n      const banner = this.section.querySelector('[data-pdp-fully-soldout-msg]');\n      if (banner) banner.hidden = !fully;\n\n      const klarna = this.section.querySelector('.pdp-clean__klarna');\n      if (klarna) klarna.hidden = restock;\n\n      const options = this.purchaseOptionsWrap || this.section.querySelector('[data-pdp-purchase-options]');\n      if (options && restock) options.hidden = true;\n      // (purchasable restore is handled by updatePurchaseOptionsForVariant)\n\n      // Impression fires ONCE when the UI enters a visible restock state \u2014 not on\n      // every re-render, and not again while it stays in restock. Resets on leaving.\n      if (restock) {\n        if (!this._restockImpressionFired) {\n          this._restockImpressionFired = true;\n          this.emitRestockAnalytics('restock_cta_impression', { state: mode });\n        }\n      } else {\n        this._restockImpressionFired = false;\n      }\n    },\n\n    selectedOptions() {\n      if (!this.optionGroups.length) return this.currentVariant?.options || [];\n      // Index by the input's real Shopify option position, NOT picker DOM order.\n      // The template renders colour before size for visual reasons, but Shopify's\n      // option order can be the reverse (e.g. variant title \"XS / Black\" \u2192 size is\n      // option 1). findVariant/updateSelectedLabels/updateOptionStates all read this\n      // back by data-option-index, so it must be index-aligned or the values swap.\n      const opts = [];\n      this.optionGroups.forEach((group) => {\n        const checked = group.querySelector('[data-pdp-option-input]:checked');\n        if (!checked) return;\n        const idx = Number(checked.dataset.optionIndex);\n        opts[idx] = checked.value;\n      });\n      return opts;\n    },\n\n    notificationSelectionLabel() {\n      if (!this.bundle) return '';\n      const groups = this.optionGroups.filter((group) => group.hasAttribute('data-pdp-size-group'));\n      if (groups.length < 2) return '';\n      const parts = groups.map((group) => {\n        const selected = group.querySelector('[data-pdp-option-input]:checked');\n        if (!selected) return '';\n        let name = this.optionGroupDisplayName(group)\n          .replace(/\\s+for\\s+varsling.*$/i, '')\n          .replace(/est\u00F8rrelse.*$/i, '')\n          .replace(/st\u00F8rrelse.*$/i, '')\n          .trim();\n        if (!name) name = window.LaleyTranslate(\"size_cf6874\", \"St\u00F8rrelse\");\n        return `${name}: ${selected.value}`;\n      }).filter(Boolean);\n      return parts.length === groups.length ? parts.join(' \u00B7 ') : '';\n    },\n\n    syncNotificationContext(variant = this.currentVariant) {\n      const variantId = String(variant?.id || '').trim();\n      const selection = this.notificationSelectionLabel();\n      const isLaunch = this.section?.dataset?.pdpComingSoon === 'true';\n      const targets = [\n        this.atc?.matches?.('[data-kk-waitlist], [data-kk-restock]') ? this.atc : null,\n        this.section.querySelector('[data-pdp-coming-soon-cta]'),\n        this.section.querySelector('[data-pdp-restock-trigger]'),\n      ].filter((target, index, list) => target && list.indexOf(target) === index);\n\n      targets.forEach((target) => {\n        if (!target.dataset.kkBaseSubcopy) target.dataset.kkBaseSubcopy = target.dataset.kkSubcopy || '';\n        if (variantId) target.dataset.kkVariantId = variantId;\n        else target.removeAttribute('data-kk-variant-id');\n        if (!selection) {\n          target.dataset.kkSubcopy = target.dataset.kkBaseSubcopy;\n          return;\n        }\n        target.dataset.kkSubcopy = isLaunch\n          ? `${selection}. Vi varsler deg ved lansering.`\n          : `${selection}${window.LaleyTranslate(\"we_will_let_you_know_when_the_set_is_back_65d5cb\", \". Vi varsler deg n\u00E5r settet er tilbake.\")}`;\n      });\n    },\n\n    findVariant(options = this.selectedOptions()) {\n      if (!options.length) return this.variants[0] || null;\n      return this.variants.find((variant) => {\n        return variant.options.length === options.length && variant.options.every((option, index) => option === options[index]);\n      }) || null;\n    },\n\n    syncOptionInputsToVariant(variant) {\n      if (!variant?.options?.length) return;\n      variant.options.forEach((value, index) => {\n        const input = this.section.querySelector(`[data-pdp-option-input][data-option-index=\"${index}\"][value=\"${cssEscape(value)}\"]`);\n        if (input && !input.checked) input.checked = true;\n      });\n    },\n\n    restoreSiblingSizeSelection() {\n      const key = 'laley:pdp:sibling-size';\n      let pending = null;\n      try {\n        pending = JSON.parse(window.sessionStorage.getItem(key) || 'null');\n        window.sessionStorage.removeItem(key);\n      } catch (error) {\n        return false;\n      }\n      if (!pending || pending.path !== window.location.pathname) return false;\n      if (Date.now() - Number(pending.savedAt || 0) > 30000) return false;\n\n      const groups = this.optionGroups.filter((group) => group.hasAttribute('data-pdp-size-group'));\n      const values = Array.isArray(pending.values) ? pending.values : [];\n      if (!groups.length || !values.length) return false;\n\n      const matches = groups.map((group, index) => {\n        const value = values[index] || values[0];\n        return Array.from(group.querySelectorAll('[data-pdp-option-input]'))\n          .find((input) => input.value === value && !input.disabled) || null;\n      });\n      if (matches.some((input) => !input)) return false;\n      matches.forEach((input) => { input.checked = true; });\n      return Boolean(this.findVariant());\n    },\n\n    bindOptions() {\n      this.optionInputs.forEach((input) => {\n        this.on(input, 'change', () => {\n          // CP-stil affordance: ATC sier \"Velg din st\u00F8rrelse\" inntil bruker\n          // har trigget minst \u00E9n option-change. Etter f\u00F8rste klikk: vis pris.\n          this.userPicked = true;\n          const variant = this.findVariant();\n          this.renderVariant(variant, { updateUrl: true, syncGallery: true, behavior: 'smooth' });\n          this.updateOptionStates();\n          // Restock: a size was chosen for varsling (only size inputs, only in a restock mode).\n          if (input.closest('[data-pdp-size-group]') && this.isRestockMode(this.purchaseMode())) {\n            this.emitRestockAnalytics('restock_size_selected', { size: input.value });\n          }\n          // Lukk dropdown etter valg + oppdater trigger-verdi\n          const dropdown = input.closest('[data-pdp-dropdown]');\n          if (dropdown) {\n            dropdown.open = false;\n            const trigger = dropdown.querySelector('[data-pdp-dropdown-value]');\n            if (trigger) trigger.textContent = input.checked ? (input.dataset.pdpDisplayValue || input.value) : '';\n            dropdown.querySelector('.pdp-clean__dropdown-trigger')?.focus({ preventScroll: true });\n          }\n        });\n      });\n    },\n\n    bindDropdowns() {\n      const dropdowns = Array.from(this.section.querySelectorAll('[data-pdp-dropdown]'));\n      if (!dropdowns.length) return;\n\n      const syncExpanded = (dropdown) => {\n        const trigger = dropdown.querySelector('.pdp-clean__dropdown-trigger');\n        if (trigger) trigger.setAttribute('aria-expanded', dropdown.open ? 'true' : 'false');\n      };\n\n      dropdowns.forEach((dropdown) => {\n        const trigger = dropdown.querySelector('.pdp-clean__dropdown-trigger');\n        syncExpanded(dropdown);\n        this.on(dropdown, 'toggle', () => {\n          syncExpanded(dropdown);\n          if (!dropdown.open) return;\n          dropdowns.forEach((other) => {\n            if (other === dropdown || !other.open) return;\n            other.open = false;\n            syncExpanded(other);\n          });\n        });\n        this.on(dropdown, 'keydown', (event) => {\n          if (event.key !== 'Escape' || !dropdown.open) return;\n          event.preventDefault();\n          dropdown.open = false;\n          syncExpanded(dropdown);\n          trigger.focus({ preventScroll: true });\n        });\n      });\n\n      this.on(document, 'pointerdown', (event) => {\n        dropdowns.forEach((dropdown) => {\n          if (!dropdown.open || dropdown.contains(event.target)) return;\n          dropdown.open = false;\n          syncExpanded(dropdown);\n        });\n      });\n    },\n\n    updateOptionStates() {\n      if (!this.optionInputs.length) return;\n      const selected = this.selectedOptions();\n      const bundleSizeIndexes = typeof this.bundleSizeOptionIndexes === 'function'\n        ? this.bundleSizeOptionIndexes()\n        : new Set();\n\n      this.optionInputs.forEach((input) => {\n        const optionIndex = Number(input.dataset.optionIndex);\n        const candidate = selected.slice();\n        candidate[optionIndex] = input.value;\n        const isBundleSizeOption = bundleSizeIndexes.size > 1 && bundleSizeIndexes.has(optionIndex);\n\n        const matches = this.variants.filter((variant) => {\n          return variant.options.every((value, index) => {\n            if (index === optionIndex) return value === input.value;\n            // Bundle-deler skal ikke arve \"utsolgt\" fra en annen valgt del.\n            // Eks: genser XL finnes selv om shorts XL er utsolgt.\n            if (isBundleSizeOption && bundleSizeIndexes.has(index)) return true;\n            return !candidate[index] || value === candidate[index];\n          });\n        });\n\n        const exists = matches.length > 0;\n        const anyAvailable = matches.some((variant) => variant.available);\n        const isComingSoon = this.section?.dataset?.pdpComingSoon === 'true';\n        const productFullySoldOut = this.isFullySoldOut();\n        const label = this.section.querySelector(`label[for=\"${cssEscape(input.id)}\"]`);\n\n        input.disabled = !exists;\n        // Produktstatusen over velgeren eier \u00ABKommer snart\u00BB/helt utsolgt.\n        // Gjenta bare \u00ABUtsolgt\u00BB per st\u00F8rrelse n\u00E5r andre st\u00F8rrelser kan kj\u00F8pes.\n        if (label) label.dataset.soldout = !isComingSoon && !productFullySoldOut && exists && !anyAvailable ? 'true' : 'false';\n      });\n      if (typeof this.updateBundleSharedState === 'function') this.updateBundleSharedState();\n    },\n\n\n    renderVariant(variant, options = {}) {\n      this.currentVariant = variant || null;\n      // Egen, stabil variantkilde for kj\u00F8psintegrasjoner. Klaviyo BIS kan\n      // erstatte eller t\u00F8mme Shopifys skjulte input, men skal ikke kunne gj\u00F8re\n      // den synlige kj\u00F8psbeslutningen tvetydig.\n      this.section.dataset.pdpCurrentVariantId = variant?.id ? String(variant.id) : '';\n      this.clearError();\n\n      if (this.variantInput && variant) {\n        this.variantInput.value = variant.id;\n        this.variantInput.dispatchEvent(new Event('change', { bubbles: true }));\n      }\n\n      this.updateSelectedLabels();\n      this.updatePrice(variant);\n      this.updateButtons(variant);\n      if (typeof this.updatePurchaseOptionsForVariant === 'function') this.updatePurchaseOptionsForVariant(variant);\n      this.updateVariantStatus(variant);\n      this.updateBis(variant);\n      if (typeof this.updateBundle === 'function') this.updateBundle(variant);\n      this.syncNotificationContext(variant);\n      if (typeof this.updateStickyContent === 'function') this.updateStickyContent(variant);\n      this.updateSizePillsStock();\n\n      if (options.syncGallery && variant) this.syncGalleryToVariant(variant, options.behavior || 'smooth');\n      if (options.updateUrl && variant) this.updateUrl(variant);\n\n      document.dispatchEvent(new CustomEvent('variant:change', {\n        bubbles: true,\n        detail: {\n          variant,\n          productId: this.section.dataset.productId,\n          sectionId: this.section.dataset.sectionId,\n        },\n      }));\n\n      // Variant-listeners kan erstatte eller rydde et utilgjengelig ID-felt.\n      // Hent derfor den levende noden p\u00E5 nytt f\u00F8r varslingen leser den eksakte\n      // setkombinasjonen; add-to-cart er fortsatt sperret av purchaseMode.\n      const liveVariantInput = this.section.querySelector('[data-pdp-variant-id]');\n      if (liveVariantInput) {\n        this.variantInput = liveVariantInput;\n        this.variantInput.value = variant?.id || '';\n      }\n    },\n\n    updateSelectedLabels() {\n      const selected = this.selectedOptions();\n      this.section.querySelectorAll('[data-pdp-selected-option]').forEach((label) => {\n        const index = Number(label.dataset.optionIndex);\n        if (selected[index]) {\n          const group = this.optionGroups.find((item) => Number(item.dataset.optionIndex) === index);\n          const input = group?.querySelector('[data-pdp-option-input]:checked');\n          label.textContent = input?.dataset.pdpDisplayValue || this.localizeColor(selected[index]);\n        } else {\n          const group = this.optionGroups.find((item) => Number(item.dataset.optionIndex) === index);\n          const isColor = Boolean(group?.hasAttribute('data-pdp-color-group') || group?.querySelector('.pdp-clean__option--swatch'));\n          label.textContent = isColor ? '' : window.LaleyTranslate(\"choose_c8aa94\", \"Velg\");\n        }\n        const note = this.section.querySelector(`.pdp-clean__picker-note[data-option-index=\"${index}\"]`);\n        if (!note) return;\n        const input = this.section.querySelector(`[data-pdp-option-input][data-option-index=\"${index}\"]:checked`);\n        const copy = input?.dataset.pdpComingSoon === 'true'\n          ? window.LaleyTranslate(\"coming_soon_get_notified_at_launch_685f9a\", \"Kommer snart \u2013 f\u00E5 varsel n\u00E5r den slippes\")\n          : (input?.dataset.pdpOptionNote || '');\n        note.textContent = copy;\n        note.hidden = !copy;\n      });\n    },\n\n    // Norsk VISNINGSNAVN for fargeverdier. Dictionary kommer fra theme-setting\n    // (data-pdp-color-map = \"Black:Svart, ...\"), s\u00E5 det er en redigerbar kilde, ikke\n    // hardkodet. Variantverdien beholdes uendret (f.eks. \"Black\"); kun visning byttes.\n    // Ukjente verdier (st\u00F8rrelser som XS) returneres uendret.\n    localizeColor(value) {\n      if (!this._colorMap) {\n        this._colorMap = {};\n        (this.section.dataset.pdpColorMap || '').split(',').forEach((pair) => {\n          const i = pair.indexOf(':');\n          if (i === -1) return;\n          const k = pair.slice(0, i).trim().toLowerCase().replace(/\\s+/g, '');\n          const v = pair.slice(i + 1).trim();\n          if (k && v) this._colorMap[k] = v;\n        });\n      }\n      const key = String(value).toLowerCase().replace(/\\s+/g, '');\n      return this._colorMap[key] || value;\n    },\n\n    updatePrice(variant) {\n      if (!variant) return;\n      if (this.priceCurrent) this.priceCurrent.textContent = this.money(variant.price);\n      if (this.priceCompare) {\n        this.priceCompare.textContent = variant.compareAtPrice ? this.money(variant.compareAtPrice) : '';\n        this.priceCompare.hidden = !variant.isOnSale;\n      }\n      if (this.priceSaving) {\n        const savingAmount = Math.max(0, Number(variant.compareAtPrice || 0) - Number(variant.price || 0));\n        const hasSaving = !this.bundle && variant.isOnSale && savingAmount > 0 && Number(variant.savingPercent) > 0;\n        this.priceSaving.textContent = hasSaving\n          ? `${window.LaleyTranslate(\"save_ab43ab\", \"Spar \")}${this.money(savingAmount)}${Number(variant.savingPercent) >= 20 ? ` (${variant.savingPercent}%)` : ''}`\n          : '';\n        this.priceSaving.hidden = !hasSaving;\n      }\n      const priceWrap = this.section.querySelector('[data-pdp-price-wrap]');\n      if (priceWrap) priceWrap.classList.toggle('is-on-sale', !!variant.isOnSale);\n    },\n\n    updateButtons(variant) {\n      if (!this.atc) return;\n      const mode = this.purchaseMode(variant);\n      // dataset.mode drives runPrimaryAction: kundeklubb | pick | bis | add.\n      if (mode === 'coming_soon') {\n        this.atc.disabled = false;\n        this.atc.type = 'button';\n        this.atc.dataset.mode = 'kundeklubb';\n        this.atc.textContent = window.LaleyTranslate(\"notify_me_e4f9e1\", \"Varsle meg\");\n      } else if (mode === 'fully_sold_out' || mode === 'selected_variant_sold_out') {\n        this.atc.disabled = false;\n        this.atc.type = 'button';\n        this.atc.dataset.mode = 'bis';\n        // Utsolgt st\u00F8rrelse: knappen sier selv hvilken st\u00F8rrelse varselet\n        // gjelder, i stedet for en egen varselboks (Sondre 10.10.26: boksen s\u00E5\n        // gammeldags ut). Hele produktet utsolgt eller lansering: \u00ABVarsle meg\u00BB.\n        const soldLabel = mode === 'selected_variant_sold_out' && variant && !variant.comingSoon\n          ? this.soldOutNoticeLabel(variant) : '';\n        this.atc.textContent = soldLabel\n          ? `Varsle meg n\u00E5r ${soldLabel} er tilbake`\n          : window.LaleyTranslate(\"notify_me_e4f9e1\", \"Varsle meg\");\n      } else if (mode === 'awaiting_size') {\n        // Ingen falsk add-to-cart f\u00F8r st\u00F8rrelse er valgt (pick-mode fokuserer pickeren).\n        this.atc.disabled = false;\n        this.atc.type = 'button';\n        this.atc.dataset.mode = 'pick';\n        this.atc.textContent = this.awaitingSizeCtaLabel();\n      } else if (!variant) {\n        this.atc.disabled = true;\n        this.atc.type = 'button';\n        this.atc.dataset.mode = 'unavailable';\n        this.atc.textContent = window.LaleyTranslate(\"choose_options_05d216\", \"Velg alternativer\");\n      } else {\n        this.atc.disabled = false;\n        this.atc.type = 'submit';\n        this.atc.dataset.mode = 'add';\n        // Bare \u00ABLegg i handlekurv\u00BB, som i den klebrige linja. Prisen st\u00E5r rett\n        // under tittelen (Sondre 10.10.26: \u00ABlitt rotete, bare skriv legg i\n        // handlekurv\u00BB).\n        this.atc.textContent = window.LaleyTranslate(\"add_to_cart_746b8a\", \"Legg i handlekurv\");\n      }\n      this.applyPurchaseChrome(mode);\n    },\n\n    updateSizePillsStock() {\n      // Pills retain availability/launch affordances. Scarcity belongs only\n      // to the exact selected variant's single shared status below all options.\n      const productComingSoon = this.section?.dataset?.pdpComingSoon === 'true';\n      const productFullySoldOut = this.isFullySoldOut();\n      const stockLabel = (variant) => {\n        // Produktets ene statusmerke over tittel/valg eier lanseringsstatusen.\n        // Gjentatt \"Kommer snart\" ved hver st\u00F8rrelse skaper st\u00F8y, s\u00E6rlig i sett.\n        if (variant?.comingSoon) return productComingSoon ? null : { text: window.LaleyTranslate(\"coming_soon_cdfda8\", \"Kommer snart\"), cls: 'is-soon' };\n        if (!variant || !variant.available) return productFullySoldOut ? null : { text: window.LaleyTranslate(\"sold_out_b24d82\", \"Utsolgt\"), cls: 'is-out' };\n        return null;\n      };\n\n      // Iterer over alle \"size-like\" grupper (alle ikke-color picker-groups),\n      // b\u00E5de dropdown og inline pills. Inline pills trenger like tydelig lagerstatus.\n      const sizeGroups = this.optionGroups.filter((g) => !g.hasAttribute('data-pdp-color-group') && !g.querySelector('.pdp-clean__option--swatch'));\n      const bundleSizeIndexes = typeof this.bundleSizeOptionIndexes === 'function'\n        ? this.bundleSizeOptionIndexes()\n        : new Set();\n      sizeGroups.forEach((sizeGroup) => {\n        const sizeOptionIndex = Number(sizeGroup.dataset.optionIndex);\n        const isBundleSizeGroup = bundleSizeIndexes.size > 1 && bundleSizeIndexes.has(sizeOptionIndex);\n        const otherOptionValues = this.optionGroups\n          .filter((g) => g !== sizeGroup)\n          .map((g) => ({\n            index: Number(g.dataset.optionIndex),\n            value: g.querySelector('[data-pdp-option-input]:checked')?.value || null,\n          }))\n          .filter((other) => !(isBundleSizeGroup && bundleSizeIndexes.has(other.index)));\n\n        sizeGroup.querySelectorAll('[data-pdp-option-input]').forEach((input) => {\n          const sizeValue = input.value;\n          const matches = this.variants.filter((v) => {\n            if (v.options[sizeOptionIndex] !== sizeValue) return false;\n            return otherOptionValues.every((other) => {\n              if (other.value === null) return true;\n              return v.options[other.index] === other.value;\n            });\n          });\n          const variant = matches.find((v) => v.available) || matches[0] || null;\n          const label = input.nextElementSibling;\n          const stockEl = label?.querySelector('[data-pdp-option-stock]');\n          if (!stockEl) return;\n          stockEl.classList.remove('is-low', 'is-soon', 'is-out');\n          const info = stockLabel(variant);\n          if (info) {\n            stockEl.textContent = info.text;\n            stockEl.classList.add(info.cls);\n            stockEl.hidden = false;\n          } else {\n            stockEl.hidden = true;\n            stockEl.textContent = '';\n          }\n        });\n      });\n      this.updateSizeNote();\n    },\n\n    // Both main and sticky presentations consume the same selected-only copy.\n    // The server exposes exact counts only for 1\u20136; 7\u20139 use the generic bucket.\n    selectedLowStockCopy(variant) {\n      if (this.section?.dataset?.pdpComingSoon === 'true' || !this.hasRequiredSizeSelection()) return '';\n      if (!variant?.available || variant.comingSoon || variant.stockState !== 'low') return '';\n      const selected = this.selectedOptions();\n      if (this.optionGroups.some((group) => !selected[Number(group.dataset.optionIndex)])) return '';\n      const exact = this.findVariant(selected);\n      if (!exact || String(exact.id) !== String(variant.id)) return '';\n      if (variant.lowCount != null) {\n        const count = Number(variant.lowCount);\n        if (Number.isInteger(count) && count >= 1 && count <= 6) return `${count} igjen!`;\n        if (!Number.isInteger(count) || count < 7 || count >= 10) return '';\n      }\n      const few = String(window.LaleyTranslate(\"few_left_362935\", \"F\u00E5 igjen\")).trim().replace(/[.!?]+$/, '');\n      return `${few}!`;\n    },\n\n    // One static slot describes only the exact, fully selected purchasable variant.\n    updateSizeNote() {\n      const note = this.section.querySelector('[data-pdp-size-note]');\n      if (!note) return;\n      const text = this.selectedLowStockCopy(this.findVariant(this.selectedOptions()));\n      if (note.textContent !== text) note.textContent = text;\n      note.hidden = !text;\n    },\n\n    updateVariantStatus(variant) {\n      // Scarcity uses the single selected-variant note. This separate line\n      // remains for the existing sold-out/bundle/launch context only.\n      const slot = this.section.querySelector('[data-pdp-variant-status]');\n      const text = slot?.querySelector('[data-pdp-variant-status-text]');\n      if (!slot || !text) return;\n      // Partial mixed choices have their own contextual note, not a stale variant notice.\n      if (!variant || (this.bundle && !this.hasRequiredSizeSelection())) {\n        slot.removeAttribute('aria-label');\n        slot.hidden = true;\n        text.replaceChildren();\n        return;\n      }\n      slot.classList.remove('is-soldout', 'is-low');\n      // Fully sold out is owned by the [data-pdp-fully-soldout-msg] banner \u2014 don't\n      // also render the per-variant \"X er utsolgt\" line (that is the PARTIAL case).\n      if (this.purchaseMode(variant) === 'fully_sold_out') {\n        slot.removeAttribute('aria-label');\n        slot.hidden = true;\n        text.replaceChildren();\n        return;\n      }\n      if (!variant.available) {\n        if (this.section?.dataset?.pdpSelfcare === 'true') {\n          slot.removeAttribute('aria-label');\n          slot.hidden = true;\n          text.replaceChildren();\n          return;\n        }\n        const label = this.soldOutNoticeLabel(variant);\n        const sharedPill = this.section.querySelector('[data-pdp-bundle-shared]:not([hidden]) .pdp-clean__bundle-shared-pill.is-selected[data-soldout=\"true\"]');\n        if (sharedPill) {\n          slot.removeAttribute('aria-label');\n          slot.hidden = true;\n          text.replaceChildren();\n          return;\n        }\n        const bundleStatus = typeof this.bundleMixedStatusCopy === 'function'\n          ? this.bundleMixedStatusCopy(variant)\n          : null;\n        // Vanlig utsolgt st\u00F8rrelse: kj\u00F8psknappen sier det (\u00ABVarsle meg n\u00E5r S/M\n        // er tilbake\u00BB), og st\u00F8rrelsesknappen sier \u00ABUtsolgt\u00BB. Linja brukes bare\n        // n\u00E5r den forteller noe mer: sett med blandet lager og lansering.\n        if (!bundleStatus && !variant.comingSoon) {\n          slot.removeAttribute('aria-label');\n          slot.hidden = true;\n          text.replaceChildren();\n          return;\n        }\n        const title = document.createElement('strong');\n        const copy = document.createElement('span');\n        title.textContent = variant.comingSoon ? window.LaleyTranslate(\"coming_soon_cdfda8\", \"Kommer snart\") : (bundleStatus?.title || (label ? `${label}${window.LaleyTranslate(\"is_sold_out_7b5120\", \" er utsolgt\")}` : window.LaleyTranslate(\"sold_out_b24d82\", \"Utsolgt\")));\n        copy.textContent = variant.comingSoon ? window.LaleyTranslate(\"notify_me_at_launch_c573fa\", \"Varsle meg ved lansering\") : (bundleStatus?.copy || window.LaleyTranslate(\"get_notified_when_it_is_back_a714ad\", \"F\u00E5 beskjed n\u00E5r den er tilbake\"));\n        text.replaceChildren(title, copy);\n        slot.setAttribute('aria-label', [title.textContent, copy.textContent].filter(Boolean).join('. '));\n        slot.classList.add('is-soldout');\n        slot.hidden = false;\n      } else {\n        slot.removeAttribute('aria-label');\n        slot.hidden = true;\n      }\n    },\n\n    updateBis(variant) {\n      // State-maskin for sold-out/Varsle-meg-flow.\n      // Klaviyo injekter <a class=\"klaviyo-bis-trigger\"> direkte i form n\u00E5r\n      // den vurderer current variant som sold-out. Vi:\n      //   1. Setter data-variant-available p\u00E5 root for CSS-targeting\n      //   2. Flytter Klaviyo-trigger inn i v\u00E5r [data-pdp-bis]-slot\n      //   3. Skjuler trigger n\u00E5r variant er available\n      const isAvailable = Boolean(variant && variant.available);\n      this.section.dataset.variantAvailable = isAvailable ? 'true' : 'false';\n\n      const injectedTrigger = this.form?.querySelector('.klaviyo-bis-trigger')\n        || this.section.querySelector('.klaviyo-bis-trigger');\n\n      if (this.bis && injectedTrigger && !this.bis.contains(injectedTrigger)) {\n        this.bis.appendChild(injectedTrigger);\n      }\n\n      const hasTriggerInSlot = Boolean(this.bis?.querySelector('.klaviyo-bis-trigger'));\n\n      if (isAvailable) {\n        if (this.bis) this.bis.hidden = true;\n        if (injectedTrigger) injectedTrigger.hidden = true;\n        return;\n      }\n      // Sold-out: vis BIS-slot hvis Klaviyo har plassert trigger\n      if (this.bis) this.bis.hidden = !hasTriggerInSlot;\n      if (injectedTrigger) injectedTrigger.hidden = false;\n    },\n\n    bindBisObserver() {\n      // Klaviyo injekter trigger asynkront \u2014 observer b\u00E5de section + form\n      // (form refereres ikke alltid f\u00F8r Klaviyo hydrerer).\n      if (!this.section) return;\n      let raf = null;\n      const schedule = () => {\n        if (raf) return;\n        raf = window.requestAnimationFrame(() => {\n          raf = null;\n          // Klaviyo kan hydrerer BIS ved \u00E5 erstatte formnoder. Hold den cachede\n          // referansen og verdien synkron uten polling eller ekstra nettverkskall.\n          const liveVariantInput = this.section.querySelector('[data-pdp-variant-id]');\n          if (liveVariantInput) {\n            this.variantInput = liveVariantInput;\n            const mode = this.purchaseMode();\n            const needsExactNotificationVariant = this.section?.dataset?.pdpComingSoon === 'true'\n              || this.isRestockMode(mode);\n            if (this.currentVariant && this.hasRequiredSizeSelection() && needsExactNotificationVariant) {\n              this.variantInput.value = this.currentVariant.id;\n            }\n          }\n          this.updateBis(this.currentVariant);\n        });\n      };\n      const observer = new MutationObserver(schedule);\n      observer.observe(this.section, { childList: true, subtree: true });\n      this.unsubs.push(() => {\n        if (raf) window.cancelAnimationFrame(raf);\n        observer.disconnect();\n      });\n    },\n\n    updateUrl(variant) {\n      if (!window.history?.replaceState || !variant?.id) return;\n      const url = new URL(window.location.href);\n      url.searchParams.set('variant', variant.id);\n      window.history.replaceState({ path: url.toString() }, '', url.toString());\n    },\n  });\n})();\n"],
  "mappings": "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",
  "names": ["input"]
}
