{
  "version": 3,
  "sources": ["/cdn/shop/t/28/assets/notification-signup.js"],
  "sourcesContent": ["(function () {\n  const ACCOUNT_FIRST_TARGET_TYPES = new Set([\"product\", \"artist\", \"label\"]);\n\n  function bindRevealButtons(root) {\n    const buttons = (root || document).querySelectorAll(\".notification-signup-toggle\");\n    buttons.forEach((button) => {\r\n      if (button.dataset.notifyRevealBound === \"true\") {\r\n        return;\r\n      }\r\n      button.dataset.notifyRevealBound = \"true\";\n      button.addEventListener(\"click\", async function () {\n        const form = button.closest(\".notification-signup-form\");\n        const panel = form ? form.querySelector(\".notification-signup-panel\") : null;\n        const emailInput = panel ? panel.querySelector('input[type=\"email\"]') : null;\n        const messageNode = form ? form.querySelector(\".notification-signup-message\") : null;\n\n        if (form && form.dataset.targetType === \"product\") {\n          button.disabled = true;\n          setMessage(messageNode, \"\", \"\");\n          try {\n            const subscribed = await tryAccountSubscribe(form);\n            if (subscribed) {\n              showSuccess(form, messageNode, button, \"You are subscribed.\");\n              return;\n            }\n          } catch (error) {\n            // Fall through to the email field when the storefront cannot prove customer identity.\n          } finally {\n            if (form.dataset.notifySubscribed !== \"true\") {\n              button.disabled = false;\n            }\n          }\n        }\n\n        if (!panel) {\n          return;\n        }\n\n        form.classList.add(\"is-revealed\");\n        form.dataset.accountFallbackRevealed = \"true\";\n        panel.hidden = false;\n        button.hidden = true;\n        button.setAttribute(\"aria-expanded\", \"true\");\n        if (emailInput) {\n          emailInput.focus();\r\n        }\r\n      });\r\n    });\r\n  }\r\n\r\n  function bindForms(root) {\r\n    const forms = (root || document).querySelectorAll(\".notification-signup-form\");\r\n    forms.forEach((form) => {\r\n      if (form.dataset.notifyBound === \"true\") {\n        return;\n      }\n      form.dataset.notifyBound = \"true\";\n      prepareAccountFirstForm(form);\n      form.addEventListener(\"submit\", onSubmit);\n    });\n  }\n\r\n  async function onSubmit(event) {\r\n    event.preventDefault();\r\n    const form = event.currentTarget;\r\n    const endpoint = form.dataset.endpoint || \"\";\r\n    const targetType = form.dataset.targetType || \"\";\r\n    const targetLabel = form.dataset.targetLabel || \"\";\r\n    const targetValue = form.dataset.targetValue || \"\";\r\n    const productGid = form.dataset.productGid || \"\";\r\n    const emailInput = form.querySelector('[name=\"email\"]');\r\n    const messageNode = form.querySelector(\".notification-signup-message\");\r\n    const submitButton = form.querySelector('button[type=\"submit\"]');\r\n\r\n    if (!endpoint || !emailInput || !submitButton) {\r\n      return;\r\n    }\r\n\r\n    setMessage(messageNode, \"\", \"\");\n    submitButton.disabled = true;\n\n    if (canUseAccountSubscribe(form) && form.dataset.accountFallbackRevealed !== \"true\") {\n      try {\n        const subscribed = await tryAccountSubscribe(form);\n        if (subscribed) {\n          showSuccess(form, messageNode, submitButton, \"You are subscribed.\");\n          return;\n        }\n        revealEmailFallback(form, emailInput);\n        return;\n      } catch (error) {\n        setMessage(messageNode, error.message || \"Something went wrong. Please try again.\", \"error\");\n        return;\n      } finally {\n        if (form.dataset.notifySubscribed !== \"true\") {\n          submitButton.disabled = false;\n        }\n      }\n    }\n\n    if (emailInput.type === \"email\" && !emailInput.value) {\n      revealEmailFallback(form, emailInput);\n      if (typeof emailInput.reportValidity === \"function\") {\n        emailInput.reportValidity();\n      }\n      submitButton.disabled = false;\n      return;\n    }\n\n    const payload = buildSubscriptionPayload(form, emailInput.value);\n\n    try {\n      const response = await fetch(endpoint.replace(/\\/+$/, \"\") + \"/subscribe\", {\n        method: \"POST\",\n        headers: { \"Content-Type\": \"application/json\" },\r\n        body: JSON.stringify(payload),\r\n      });\r\n      const data = await response.json();\r\n      if (!response.ok || !data.ok) {\r\n        throw new Error(data.error || \"Request failed.\");\r\n      }\r\n\r\n      if (emailInput.type === \"email\") {\n        emailInput.value = \"\";\n      }\n      if (data.status === \"already_subscribed\") {\n        showSuccess(form, messageNode, submitButton, \"You are subscribed.\");\n      } else {\n        showSuccess(form, messageNode, submitButton, \"You are subscribed.\");\n      }\n    } catch (error) {\n      setMessage(messageNode, error.message || \"Something went wrong. Please try again.\", \"error\");\n    } finally {\n      if (form.dataset.notifySubscribed !== \"true\") {\n        submitButton.disabled = false;\n      }\n    }\n  }\n\n  function prepareAccountFirstForm(form) {\n    if (!form || form.dataset.targetType === \"product\" || !canUseAccountSubscribe(form)) {\n      return;\n    }\n\n    const emailInput = form.querySelector('input[type=\"email\"][name=\"email\"]');\n    if (!emailInput) {\n      return;\n    }\n\n    if (!emailInput.dataset.notifyOriginalRequired) {\n      emailInput.dataset.notifyOriginalRequired = emailInput.required ? \"true\" : \"false\";\n    }\n\n    const wrapper = emailInput.closest(\".field\") || emailInput;\n    wrapper.hidden = true;\n    emailInput.required = false;\n  }\n\n  function revealEmailFallback(form, emailInput) {\n    if (!form || !emailInput || emailInput.type !== \"email\") {\n      return;\n    }\n\n    const wrapper = emailInput.closest(\".field\") || emailInput;\n    wrapper.hidden = false;\n    form.dataset.accountFallbackRevealed = \"true\";\n    if (emailInput.dataset.notifyOriginalRequired === \"true\") {\n      emailInput.required = true;\n    }\n    emailInput.focus();\n  }\n\n  function canUseAccountSubscribe(form) {\n    const targetType = form ? form.dataset.targetType || \"\" : \"\";\n    if (!ACCOUNT_FIRST_TARGET_TYPES.has(targetType)) {\n      return false;\n    }\n    if (targetType === \"product\" && !form.dataset.productGid) {\n      return false;\n    }\n    return true;\n  }\n\n  function buildSubscriptionPayload(form, email) {\n    const targetType = form.dataset.targetType || \"\";\n    const productGid = form.dataset.productGid || \"\";\n    const payload = {\n      email: email || \"\",\n      target_type: targetType,\n      target_label: form.dataset.targetLabel || \"\",\n    };\n\n    if (targetType === \"product\") {\n      payload.product_gid = productGid;\n      payload.target_key = productGid;\n    } else {\n      payload.target_value = form.dataset.targetValue || \"\";\n    }\n\n    return payload;\n  }\n\n  async function tryAccountSubscribe(form) {\n    const response = await fetch(\"/apps/wantlist/subscribe\", {\n      method: \"POST\",\n      credentials: \"same-origin\",\n      headers: {\n        Accept: \"application/json\",\n        \"Content-Type\": \"application/json\",\n      },\n      body: JSON.stringify(buildSubscriptionPayload(form, \"\")),\n    });\n\n    if (response.status === 401 || response.status === 403 || response.status === 409) {\n      return false;\n    }\n\n    const data = await response.json();\n    if (!response.ok || !data.ok) {\n      throw new Error(data.error || \"Request failed.\");\n    }\n    return true;\n  }\n\n  function setMessage(node, text, status) {\n    if (!node) {\r\n      return;\r\n    }\r\n    node.textContent = text;\r\n    node.dataset.status = status || \"\";\n  }\n\n  function showSuccess(form, messageNode, submitButton, text) {\n    const cardForm = form && (\n      form.classList.contains(\"notification-signup--card\")\n      || form.closest(\".notification-signup--card\")\n    );\n    const productForm = form && form.dataset.targetType === \"product\";\n\n    if (cardForm || productForm) {\n      const panel = form.querySelector(\".notification-signup-panel\");\n      const toggle = form.querySelector(\".notification-signup-toggle\");\n      const button = toggle || submitButton;\n\n      if (panel) {\n        panel.hidden = true;\n      }\n      form.classList.remove(\"is-revealed\");\n      if (button) {\n        button.hidden = false;\n        button.disabled = true;\n        button.setAttribute(\"aria-expanded\", \"false\");\n        setButtonText(button, text);\n      }\n      form.dataset.notifySubscribed = \"true\";\n      setMessage(messageNode, \"\", \"success\");\n      return;\n    }\n\n    setMessage(messageNode, text, \"success\");\n  }\n\n  function setButtonText(button, text) {\n    const label = button.querySelector(\"span\") || button;\n    label.textContent = text;\n  }\n\r\n  function bind(root) {\n    bindRevealButtons(root || document);\n    bindForms(root || document);\n  }\n\n  window.FurtherNotificationSignup = window.FurtherNotificationSignup || {};\n  window.FurtherNotificationSignup.bind = bind;\n\n  document.addEventListener(\"DOMContentLoaded\", function () {\n    bind(document);\n  });\n\n  document.addEventListener(\"shopify:section:load\", function (event) {\n    bind(event.target);\n  });\n})();\n"],
  "mappings": "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",
  "names": []
}
