{
  "version": 3,
  "sources": ["/cdn/shop/t/27/assets/iam-klaviyo-subscribe.js?iam_worker=20260615"],
  "sourcesContent": ["(() => {\n  if (window.IAMKlaviyoSubscribe?.initialized) {\n    window.IAMKlaviyoSubscribe.initAllKlaviyoForms?.();\n    return;\n  }\n\n  const KLAVIYO_TIMEOUT_MS = 15000;\n  const IAM_KLAVIYO_ENDPOINT = 'https://subscribe.houseofiam.com/subscribe';\n  const initialized = new WeakSet();\n\n  function initAllKlaviyoForms(root = document) {\n    root.querySelectorAll('[data-iam-klaviyo-form]').forEach(initKlaviyoForm);\n  }\n\n  function revealGuideSignupElement(target, trigger) {\n    if (!target) return;\n\n    target.hidden = false;\n    target.classList.add('is-revealed');\n\n    if (trigger) {\n      trigger.setAttribute('aria-expanded', 'true');\n      if (!trigger.matches('[data-iam-pdp-guide-toggle], .iam-pdp-guide-link')) {\n        trigger.hidden = true;\n        trigger.style.display = 'none';\n      }\n    }\n\n    const email = target.querySelector('[data-iam-klaviyo-email]');\n    if (email && !email.disabled) {\n      window.requestAnimationFrame(() => email.focus({ preventScroll: true }));\n    }\n  }\n\n  function revealGuideSignup(targetSelector, trigger) {\n    if (!targetSelector) return;\n\n    revealGuideSignupElement(document.querySelector(targetSelector), trigger);\n  }\n\n  function initKlaviyoForm(form) {\n    if (!form || initialized.has(form)) return;\n    initialized.add(form);\n\n    const companyId = form.dataset.companyId?.trim();\n    const source = form.dataset.source?.trim() || 'Website signup';\n    const sourceListOverrides = {\n      'Homepage stay close': 'UgP77k',\n      'Website welcome slide-up': 'YzUr8F',\n    };\n    const listId = sourceListOverrides[source] || form.dataset.listId?.trim();\n    const successMessage = form.dataset.successMessage?.trim() || 'Thanks \u2014 you\u2019re in.';\n    const email = form.querySelector('[data-iam-klaviyo-email]');\n    const status = form.querySelector('[data-iam-klaviyo-status]');\n    const success = form.querySelector('[data-iam-klaviyo-success]');\n    const submitButton = form.querySelector('[type=\"submit\"]');\n\n    if (!companyId || !listId || !email || !status) return;\n\n    form.addEventListener('submit', async (event) => {\n      event.preventDefault();\n\n      const value = email.value.trim();\n      status.hidden = false;\n      status.classList.remove('is-success', 'is-error');\n\n      if (!isValidEmailAddress(value) || !email.checkValidity()) {\n        status.textContent = 'Enter a valid email address.';\n        status.classList.add('is-error');\n        email.focus();\n        return;\n      }\n\n      if (submitButton) {\n        submitButton.disabled = true;\n        submitButton.dataset.originalText = submitButton.dataset.originalText || submitButton.textContent;\n        submitButton.textContent = 'Submitting\u2026';\n      }\n\n      status.textContent = 'Submitting\u2026';\n\n      try {\n        await subscribeEmailToKlaviyo({ email: value, companyId, listId, customSource: source });\n\n        if (success) {\n          status.textContent = '';\n          status.hidden = true;\n        } else {\n          status.textContent = successMessage;\n        }\n\n        status.classList.add('is-success');\n        form.classList.add('is-success');\n        email.disabled = true;\n\n        if (submitButton) {\n          submitButton.disabled = true;\n          submitButton.hidden = Boolean(success);\n          submitButton.textContent = successMessage;\n        }\n\n        if (success) success.hidden = false;\n      } catch (error) {\n        console.error('Klaviyo form signup failed.', error);\n        status.textContent = \"We couldn't submit your email right now. Please try again.\";\n        status.classList.add('is-error');\n\n        if (submitButton) {\n          submitButton.disabled = false;\n          submitButton.textContent = submitButton.dataset.originalText || 'Submit';\n        }\n      }\n    });\n  }\n\n  function isValidEmailAddress(value) {\n    // Browser email validation allows single-label domains like \u201Cname@c\u201D,\n    // but Klaviyo rejects them. Require a normal dotted domain so users see\n    // the validation message before submission instead of a generic API error.\n    return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$/.test(value);\n  }\n\n  async function subscribeEmailToKlaviyo({ email, companyId, listId, customSource }) {\n    const controller = new AbortController();\n    const timeout = window.setTimeout(() => controller.abort(), KLAVIYO_TIMEOUT_MS);\n\n    let response;\n\n    try {\n      response = await fetch(IAM_KLAVIYO_ENDPOINT, {\n        method: 'POST',\n        signal: controller.signal,\n        headers: {\n          'Content-Type': 'application/json',\n          Accept: 'application/json',\n        },\n        body: JSON.stringify({\n          email,\n          companyId,\n          listId,\n          customSource,\n        }),\n      });\n    } catch (error) {\n      if (error?.name === 'AbortError') {\n        throw new Error('Klaviyo request timed out.');\n      }\n\n      throw error;\n    } finally {\n      window.clearTimeout(timeout);\n    }\n\n    if (response.status === 202) return;\n\n    let detail = 'Subscription failed.';\n\n    try {\n      const payload = await response.json();\n      detail = payload?.errors?.[0]?.detail || detail;\n    } catch {\n      // Ignore malformed error responses and use the default message.\n    }\n\n    throw new Error(detail);\n  }\n\n  window.IAMKlaviyoSubscribe = {\n    initialized: true,\n    initAllKlaviyoForms,\n  };\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', () => initAllKlaviyoForms());\n  } else {\n    initAllKlaviyoForms();\n  }\n\n  document.addEventListener('shopify:section:load', (event) => {\n    initAllKlaviyoForms(event.target);\n  });\n\n  document.addEventListener('click', (event) => {\n    const guideTrigger = event.target.closest('[data-iam-guide-toggle]');\n    if (guideTrigger) {\n      event.preventDefault();\n      revealGuideSignup(guideTrigger.getAttribute('data-iam-guide-toggle'), guideTrigger);\n      return;\n    }\n\n    const pdpGuideTrigger = event.target.closest('[data-iam-pdp-guide-toggle], [data-iam-pdp-guide-scope] a[href=\"#microdosing-starter-guide-signup\"], .iam-accordion-section a[href=\"#microdosing-starter-guide-signup\"]');\n    if (!pdpGuideTrigger) return;\n\n    event.preventDefault();\n    const scope = pdpGuideTrigger.closest('[data-iam-pdp-guide-scope]') || pdpGuideTrigger.closest('.shopify-section') || document;\n    revealGuideSignupElement(scope.querySelector('[data-iam-pdp-guide-form]'), pdpGuideTrigger);\n  });\n})();\n"],
  "mappings": "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",
  "names": []
}
