{
  "version": 3,
  "sources": ["/cdn/shop/t/49/assets/klaviyo-bis.js?nocache=1792488795274"],
  "sourcesContent": ["/**\n * Klaviyo renders its \"Notify me\" button into [klaviyo-bis-trigger] once, on page\n * load. The variant picker morphs the buy-buttons block, which replaces that\n * element and drops the injected button, so re-run Klaviyo's back in stock\n * initialisation after every variant change.\n */\n(function () {\n  const TRIGGER_SELECTOR = '[klaviyo-bis-trigger]';\n\n  function reinitialize() {\n    const trigger = document.querySelector(TRIGGER_SELECTOR);\n    if (!trigger || trigger.children.length > 0) return;\n\n    const klaviyo = window.klaviyo;\n    if (!klaviyo || typeof klaviyo.enable !== 'function') return;\n\n    klaviyo.enable('backinstock');\n  }\n\n  document.addEventListener('variant:update', () => {\n    requestAnimationFrame(reinitialize);\n  });\n\n  // Theme Notify Me buttons stay hidden (see buy-buttons.liquid) unless the form is live. Klaviyo's\n  // public forms feed only lists live forms, so a form in draft keeps them hidden.\n  const config = /** @type {any} */ (window).klaviyoBisConfig;\n  if (config) {\n    fetch(`https://static-forms.klaviyo.com/forms/api/v7/${config.companyId}/full-forms`)\n      .then((response) => response.json())\n      .then((data) => {\n        const live = data.full_forms?.some(\n          (/** @type {any} */ form) => form.form_id === config.formId && form.live_form_versions?.length\n        );\n        if (live) document.documentElement.classList.add('klaviyo-bis-live');\n      })\n      .catch(() => {});\n  }\n\n  /** @type {string | null} */\n  let urlBeforeCardForm = null;\n  /** @type {string | undefined} */\n  let cardFormId;\n  let cardFormOpened = false;\n\n  function restoreUrl() {\n    if (!urlBeforeCardForm) return;\n    history.replaceState(history.state, '', urlBeforeCardForm);\n    urlBeforeCardForm = null;\n  }\n\n  document.addEventListener('click', (event) => {\n    const button = event.target.closest('[data-klaviyo-bis-form-id]');\n    if (!button) return;\n\n    const klaviyo = window.klaviyo;\n    if (!klaviyo || typeof klaviyo.openForm !== 'function') return;\n\n    // Product cards: Klaviyo reads the product and variant from the page URL, so point it at the\n    // card's product until the form closes\n    const { productHandle } = button.dataset;\n    const variantId = button.closest('.notify-me-trigger')?.dataset.variantId;\n    if (productHandle && variantId) {\n      urlBeforeCardForm = window.location.href;\n      const productUrl = new URL(`/products/${productHandle}`, window.location.origin);\n      productUrl.searchParams.set('variant', variantId);\n      history.replaceState(history.state, '', productUrl);\n      cardFormId = button.dataset.klaviyoBisFormId;\n      cardFormOpened = false;\n      // The form never opens while it's in draft in Klaviyo, so don't leave the URL changed\n      setTimeout(() => {\n        if (!cardFormOpened) restoreUrl();\n      }, 3000);\n    }\n\n    klaviyo.openForm(button.dataset.klaviyoBisFormId);\n  });\n\n  window.addEventListener('klaviyoForms', (event) => {\n    const detail = /** @type {CustomEvent} */ (event).detail;\n    if (!urlBeforeCardForm || detail?.formId !== cardFormId) return;\n    if (detail.type === 'open') cardFormOpened = true;\n    if (detail.type === 'close') restoreUrl();\n  });\n\n  const BIS_EMAIL_SELECTOR = '[aria-label=\"Back in Stock Alerts\"] input[name=\"email\"]';\n\n  /** @param {string} email @param {number} [attempt] */\n  function prefillEmail(email, attempt = 0) {\n    /** @type {HTMLInputElement | null} */\n    const input = document.querySelector(BIS_EMAIL_SELECTOR);\n    if (!input) {\n      if (attempt < 20) requestAnimationFrame(() => prefillEmail(email, attempt + 1));\n      return;\n    }\n    if (input.value) return;\n\n    Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value')?.set?.call(input, email);\n    input.dispatchEvent(new Event('input', { bubbles: true }));\n    input.dispatchEvent(new Event('change', { bubbles: true }));\n  }\n\n  window.addEventListener('klaviyoForms', (event) => {\n    const email = /** @type {any} */ (window).klaviyoBisEmail;\n    if (!email || /** @type {CustomEvent} */ (event).detail?.type !== 'open') return;\n    prefillEmail(email);\n  });\n\n  const BIS_FORM_SELECTOR = '[aria-label=\"Back in Stock Alerts\"] form.klaviyo-form';\n  /** @type {HTMLElement | null} */\n  let submittedEmailRow = null;\n\n  /** @param {number} [attempt] */\n  function showSubmittedEmail(attempt = 0) {\n    const form = document.querySelector(BIS_FORM_SELECTOR);\n    const buttonRow = form?.querySelector('.klaviyo-form-button')?.closest('[data-testid=\"form-row\"]');\n    if (!submittedEmailRow || !buttonRow || form?.querySelector('input[name=\"email\"]')) {\n      if (attempt < 300) requestAnimationFrame(() => showSubmittedEmail(attempt + 1));\n      return;\n    }\n    buttonRow.before(submittedEmailRow);\n    submittedEmailRow = null;\n  }\n\n  /** @param {Event} event */\n  function copyEmailRow(event) {\n    const form = /** @type {HTMLElement} */ (event.target).closest?.(BIS_FORM_SELECTOR);\n    const input = /** @type {HTMLInputElement | null | undefined} */ (form?.querySelector('input[name=\"email\"]'));\n    if (!input?.value) return;\n\n    const row = /** @type {HTMLElement | null} */ (input.closest('[data-testid=\"form-row\"]')?.cloneNode(true));\n    const copy = row?.querySelector('input');\n    if (!row || !copy) return;\n    copy.removeAttribute('name');\n    copy.removeAttribute('id');\n    copy.value = input.value;\n    copy.readOnly = true;\n    copy.tabIndex = -1;\n    submittedEmailRow = row;\n    showSubmittedEmail();\n  }\n\n  document.addEventListener(\n    'click',\n    (event) => {\n      if (/** @type {HTMLElement} */ (event.target).closest?.('.klaviyo-form-button')) copyEmailRow(event);\n    },\n    true\n  );\n  document.addEventListener('submit', copyEmailRow, true);\n\n  const BIS_CLOSE_SELECTOR = '[aria-label=\"Back in Stock Alerts\"] .klaviyo-close-form';\n  const closeBisForm = () => /** @type {HTMLElement | null} */ (document.querySelector(BIS_CLOSE_SELECTOR))?.click();\n\n  window.addEventListener('klaviyoForms', (event) => {\n    const detail = /** @type {CustomEvent} */ (event).detail;\n    if (detail?.type !== 'submit' || detail.formId !== config?.formId) return;\n    setTimeout(closeBisForm, 2900);\n  });\n\n  document.addEventListener('click', (event) => {\n    const target = /** @type {HTMLElement} */ (event.target);\n    if (target.matches?.('[aria-label=\"Back in Stock Alerts\"] [data-testid=\"form-row\"]:has([data-color=\"#dff0d8\" i]) p')) {\n      closeBisForm();\n    }\n  });\n})();\n"],
  "mappings": "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",
  "names": []
}
