{
  "version": 3,
  "sources": ["/cdn/shop/t/2/assets/hemios-footer-newsletter.js?codex=footer-welcome10-popup-sync-20260906"],
  "sourcesContent": ["(function () {\n  \"use strict\";\n\n  function initFooterNewsletter() {\n    var form = document.getElementById(\"footer-newsletter-form\");\n    var popup = document.querySelector(\"[data-footer-discount-success]\");\n    if (!form || !popup || form.dataset.footerNewsletterReady === \"true\") return;\n\n    var emailInput = form.querySelector(\"[data-footer-newsletter-email]\");\n    var submitButton = form.querySelector(\"[data-footer-newsletter-submit]\");\n    var closeButton = popup.querySelector(\"[data-footer-discount-close]\");\n    var copyButton = popup.querySelector(\"[data-footer-discount-copy]\");\n    var copyStatus = popup.querySelector(\"[data-footer-discount-status]\");\n    var discountMessage = popup.querySelector(\"[data-footer-discount-message]\");\n    var discountNote = popup.querySelector(\"[data-footer-discount-note]\");\n    var discountCode = popup.getAttribute(\"data-discount-code\") || \"WELCOME10\";\n    var newsletterSucceeded = popup.getAttribute(\"data-footer-newsletter-succeeded\") === \"true\";\n    var discountRedirectSucceeded = new URL(window.location.href).searchParams.get(\"footer_discount\") === discountCode;\n    var pendingStorageKey = \"hemios-footer-newsletter-pending\";\n    var pendingLifetime = 10 * 60 * 1000;\n\n    form.dataset.footerNewsletterReady = \"true\";\n\n    function openPopup() {\n      popup.hidden = false;\n      popup.classList.add(\"is-ready\");\n      document.body.classList.add(\"footer-discount-open\");\n      if (emailInput && emailInput.blur) emailInput.blur();\n      window.setTimeout(function () {\n        if (copyButton && copyButton.focus) copyButton.focus({ preventScroll: true });\n      }, 0);\n    }\n\n    function closePopup() {\n      popup.classList.remove(\"is-ready\");\n      popup.hidden = true;\n      document.body.classList.remove(\"footer-discount-open\");\n      if (submitButton && submitButton.focus) submitButton.focus({ preventScroll: true });\n    }\n\n    function setCopied() {\n      if (copyStatus) copyStatus.textContent = \"Copied to clipboard\";\n      if (copyButton) {\n        copyButton.setAttribute(\"data-copied\", \"true\");\n        copyButton.setAttribute(\"aria-label\", \"Copied discount code \" + discountCode);\n      }\n    }\n\n    function copyCode(event) {\n      event.preventDefault();\n      if (navigator.clipboard && navigator.clipboard.writeText) {\n        navigator.clipboard.writeText(discountCode).then(setCopied).catch(function () {});\n        return;\n      }\n\n      var selection = window.getSelection && window.getSelection();\n      if (!selection || !document.createRange) return;\n      var range = document.createRange();\n      range.selectNodeContents(copyButton);\n      selection.removeAllRanges();\n      selection.addRange(range);\n      try {\n        if (document.execCommand(\"copy\")) setCopied();\n      } catch (error) {}\n      selection.removeAllRanges();\n    }\n\n    function setDiscountState(applied) {\n      if (discountMessage) {\n        discountMessage.textContent = applied\n          ? \"Your 10% discount has been added and will apply automatically at checkout when eligible.\"\n          : \"Your code is ready, but we could not add it to checkout automatically.\";\n      }\n      if (copyStatus) {\n        copyStatus.textContent = applied\n          ? discountCode + \" added to checkout\"\n          : \"Copy the code or tap SHOP NOW\";\n      }\n      if (discountNote) {\n        discountNote.textContent = applied\n          ? \"One use per customer.\"\n          : \"SHOP NOW applies the code through Shopify's secure discount link.\";\n      }\n    }\n\n    function setApplyingState() {\n      if (discountMessage) {\n        discountMessage.textContent = \"Adding your 10% discount to checkout\u2026\";\n      }\n      if (copyStatus) {\n        copyStatus.textContent = discountCode + \" is ready\";\n      }\n      if (discountNote) {\n        discountNote.textContent = \"You can copy the code or tap SHOP NOW while we finish.\";\n      }\n    }\n\n    function storePendingSubmission() {\n      try {\n        window.sessionStorage.setItem(pendingStorageKey, JSON.stringify({\n          code: discountCode,\n          createdAt: Date.now()\n        }));\n      } catch (error) {}\n    }\n\n    function clearPendingSubmission() {\n      try {\n        window.sessionStorage.removeItem(pendingStorageKey);\n      } catch (error) {}\n    }\n\n    function hasRecentPendingSubmission() {\n      try {\n        var stored = JSON.parse(window.sessionStorage.getItem(pendingStorageKey) || \"null\");\n        var isRecent = stored &&\n          stored.code === discountCode &&\n          Date.now() - Number(stored.createdAt || 0) < pendingLifetime;\n        if (!isRecent) clearPendingSubmission();\n        return Boolean(isRecent);\n      } catch (error) {\n        clearPendingSubmission();\n        return false;\n      }\n    }\n\n    function cartContainsDiscount(cart) {\n      var codes = cart && Array.isArray(cart.discount_codes) ? cart.discount_codes : [];\n      var applications = cart && Array.isArray(cart.cart_level_discount_applications)\n        ? cart.cart_level_discount_applications\n        : [];\n      var normalizedCode = discountCode.toUpperCase();\n\n      return codes.some(function (entry) {\n        return entry && String(entry.code || entry.title || \"\").toUpperCase() === normalizedCode;\n      }) || applications.some(function (entry) {\n        return entry && String(entry.code || entry.title || \"\").toUpperCase() === normalizedCode;\n      });\n    }\n\n    function requestCart() {\n      var root = window.Shopify && window.Shopify.routes && window.Shopify.routes.root\n        ? window.Shopify.routes.root\n        : \"/\";\n      if (root.charAt(root.length - 1) !== \"/\") root += \"/\";\n\n      return window.fetch(root + \"cart.js\", {\n        credentials: \"same-origin\",\n        headers: { Accept: \"application/json\" }\n      }).then(function (response) {\n        if (!response.ok) throw new Error(\"Cart request failed\");\n        return response.json();\n      });\n    }\n\n    function announceDiscountApplied() {\n      if (typeof CustomEvent !== \"function\") return;\n      document.dispatchEvent(new CustomEvent(\"hemios:discount-applied\", {\n        detail: { code: discountCode }\n      }));\n    }\n\n    function applyDiscountToCart() {\n      var root = window.Shopify && window.Shopify.routes && window.Shopify.routes.root\n        ? window.Shopify.routes.root\n        : \"/\";\n      if (root.charAt(root.length - 1) !== \"/\") root += \"/\";\n\n      return window.fetch(root + \"cart/update.js\", {\n        method: \"POST\",\n        credentials: \"same-origin\",\n        headers: {\n          Accept: \"application/json\",\n          \"Content-Type\": \"application/json\"\n        },\n        body: JSON.stringify({ discount: discountCode })\n      }).then(function (response) {\n        if (!response.ok) throw new Error(\"Discount update failed\");\n        return response.json();\n      }).then(function (cart) {\n        var codes = cart && Array.isArray(cart.discount_codes) ? cart.discount_codes : [];\n        var matchingCode = codes.find(function (entry) {\n          return entry && String(entry.code || \"\").toLowerCase() === discountCode.toLowerCase();\n        });\n        if (!matchingCode || (matchingCode.applicable === false && Number(cart && cart.item_count) > 0)) {\n          throw new Error(\"Discount is not applicable\");\n        }\n        return cart;\n      });\n    }\n\n    function clearNewsletterSuccessQuery() {\n      var currentUrl = new URL(window.location.href);\n      currentUrl.searchParams.delete(\"customer_posted\");\n      currentUrl.searchParams.delete(\"contact_posted\");\n      currentUrl.searchParams.delete(\"footer_discount\");\n      window.history.replaceState(\n        window.history.state,\n        \"\",\n        currentUrl.pathname + currentUrl.search + currentUrl.hash\n      );\n    }\n\n    function submitEmail() {\n      if (form.reportValidity && !form.reportValidity()) return;\n      storePendingSubmission();\n      form.setAttribute(\"aria-busy\", \"true\");\n      if (submitButton) submitButton.disabled = true;\n    }\n\n    form.addEventListener(\"submit\", submitEmail);\n    if (copyButton) copyButton.addEventListener(\"click\", copyCode);\n    if (closeButton) closeButton.addEventListener(\"click\", closePopup);\n    popup.addEventListener(\"click\", function (event) {\n      if (event.target === popup) closePopup();\n    });\n    document.addEventListener(\"keydown\", function (event) {\n      if (event.key === \"Escape\" && !popup.hidden) closePopup();\n    });\n\n    if (discountRedirectSucceeded) {\n      clearPendingSubmission();\n      clearNewsletterSuccessQuery();\n      setDiscountState(true);\n      openPopup();\n      announceDiscountApplied();\n      return;\n    }\n\n    if (newsletterSucceeded) {\n      clearPendingSubmission();\n      clearNewsletterSuccessQuery();\n      setApplyingState();\n      openPopup();\n      if (typeof window.fetch !== \"function\") {\n        setDiscountState(false);\n        return;\n      }\n\n      applyDiscountToCart().then(function () {\n        setDiscountState(true);\n        announceDiscountApplied();\n      }).catch(function () {\n        setDiscountState(false);\n      });\n      return;\n    }\n\n    if (hasRecentPendingSubmission() && !form.querySelector(\".footer-newsletter-error\") && typeof window.fetch === \"function\") {\n      requestCart().then(function (cart) {\n        if (!cartContainsDiscount(cart)) return;\n        clearPendingSubmission();\n        clearNewsletterSuccessQuery();\n        setDiscountState(true);\n        openPopup();\n        announceDiscountApplied();\n      }).catch(function () {\n        // Keep the short-lived pending marker so a slow redirect can be recovered after reload.\n      });\n    }\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", initFooterNewsletter);\n  } else {\n    initFooterNewsletter();\n  }\n})();\n"],
  "mappings": "CAAC,UAAY,CACX,aAEA,SAAS,sBAAuB,CAC9B,IAAI,KAAO,SAAS,eAAe,wBAAwB,EACvD,MAAQ,SAAS,cAAc,gCAAgC,EACnE,GAAI,CAAC,MAAQ,CAAC,OAAS,KAAK,QAAQ,wBAA0B,OAAQ,OAEtE,IAAI,WAAa,KAAK,cAAc,gCAAgC,EAChE,aAAe,KAAK,cAAc,iCAAiC,EACnE,YAAc,MAAM,cAAc,8BAA8B,EAChE,WAAa,MAAM,cAAc,6BAA6B,EAC9D,WAAa,MAAM,cAAc,+BAA+B,EAChE,gBAAkB,MAAM,cAAc,gCAAgC,EACtE,aAAe,MAAM,cAAc,6BAA6B,EAChE,aAAe,MAAM,aAAa,oBAAoB,GAAK,YAC3D,oBAAsB,MAAM,aAAa,kCAAkC,IAAM,OACjF,0BAA4B,IAAI,IAAI,OAAO,SAAS,IAAI,EAAE,aAAa,IAAI,iBAAiB,IAAM,aAClG,kBAAoB,mCACpB,gBAAkB,IAAU,IAEhC,KAAK,QAAQ,sBAAwB,OAErC,SAAS,WAAY,CACnB,MAAM,OAAS,GACf,MAAM,UAAU,IAAI,UAAU,EAC9B,SAAS,KAAK,UAAU,IAAI,sBAAsB,EAC9C,YAAc,WAAW,MAAM,WAAW,KAAK,EACnD,OAAO,WAAW,UAAY,CACxB,YAAc,WAAW,OAAO,WAAW,MAAM,CAAE,cAAe,EAAK,CAAC,CAC9E,EAAG,CAAC,CACN,CAEA,SAAS,YAAa,CACpB,MAAM,UAAU,OAAO,UAAU,EACjC,MAAM,OAAS,GACf,SAAS,KAAK,UAAU,OAAO,sBAAsB,EACjD,cAAgB,aAAa,OAAO,aAAa,MAAM,CAAE,cAAe,EAAK,CAAC,CACpF,CAEA,SAAS,WAAY,CACf,aAAY,WAAW,YAAc,uBACrC,aACF,WAAW,aAAa,cAAe,MAAM,EAC7C,WAAW,aAAa,aAAc,wBAA0B,YAAY,EAEhF,CAEA,SAAS,SAAS,MAAO,CAEvB,GADA,MAAM,eAAe,EACjB,UAAU,WAAa,UAAU,UAAU,UAAW,CACxD,UAAU,UAAU,UAAU,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,UAAY,CAAC,CAAC,EAChF,MACF,CAEA,IAAI,UAAY,OAAO,cAAgB,OAAO,aAAa,EAC3D,GAAI,GAAC,WAAa,CAAC,SAAS,aAC5B,KAAI,MAAQ,SAAS,YAAY,EACjC,MAAM,mBAAmB,UAAU,EACnC,UAAU,gBAAgB,EAC1B,UAAU,SAAS,KAAK,EACxB,GAAI,CACE,SAAS,YAAY,MAAM,GAAG,UAAU,CAC9C,OAAS,MAAO,CAAC,CACjB,UAAU,gBAAgB,EAC5B,CAEA,SAAS,iBAAiB,QAAS,CAC7B,kBACF,gBAAgB,YAAc,QAC1B,2FACA,0EAEF,aACF,WAAW,YAAc,QACrB,aAAe,qBACf,iCAEF,eACF,aAAa,YAAc,QACvB,wBACA,oEAER,CAEA,SAAS,kBAAmB,CACtB,kBACF,gBAAgB,YAAc,8CAE5B,aACF,WAAW,YAAc,aAAe,aAEtC,eACF,aAAa,YAAc,yDAE/B,CAEA,SAAS,wBAAyB,CAChC,GAAI,CACF,OAAO,eAAe,QAAQ,kBAAmB,KAAK,UAAU,CAC9D,KAAM,aACN,UAAW,KAAK,IAAI,CACtB,CAAC,CAAC,CACJ,OAAS,MAAO,CAAC,CACnB,CAEA,SAAS,wBAAyB,CAChC,GAAI,CACF,OAAO,eAAe,WAAW,iBAAiB,CACpD,OAAS,MAAO,CAAC,CACnB,CAEA,SAAS,4BAA6B,CACpC,GAAI,CACF,IAAI,OAAS,KAAK,MAAM,OAAO,eAAe,QAAQ,iBAAiB,GAAK,MAAM,EAC9E,SAAW,QACb,OAAO,OAAS,cAChB,KAAK,IAAI,EAAI,OAAO,OAAO,WAAa,CAAC,EAAI,gBAC/C,OAAK,UAAU,uBAAuB,EAC/B,EAAQ,QACjB,OAAS,MAAO,CACd,8BAAuB,EAChB,EACT,CACF,CAEA,SAAS,qBAAqB,KAAM,CAClC,IAAI,MAAQ,MAAQ,MAAM,QAAQ,KAAK,cAAc,EAAI,KAAK,eAAiB,CAAC,EAC5E,aAAe,MAAQ,MAAM,QAAQ,KAAK,gCAAgC,EAC1E,KAAK,iCACL,CAAC,EACD,eAAiB,aAAa,YAAY,EAE9C,OAAO,MAAM,KAAK,SAAU,MAAO,CACjC,OAAO,OAAS,OAAO,MAAM,MAAQ,MAAM,OAAS,EAAE,EAAE,YAAY,IAAM,cAC5E,CAAC,GAAK,aAAa,KAAK,SAAU,MAAO,CACvC,OAAO,OAAS,OAAO,MAAM,MAAQ,MAAM,OAAS,EAAE,EAAE,YAAY,IAAM,cAC5E,CAAC,CACH,CAEA,SAAS,aAAc,CACrB,IAAI,KAAO,OAAO,SAAW,OAAO,QAAQ,QAAU,OAAO,QAAQ,OAAO,KACxE,OAAO,QAAQ,OAAO,KACtB,IACJ,OAAI,KAAK,OAAO,KAAK,OAAS,CAAC,IAAM,MAAK,MAAQ,KAE3C,OAAO,MAAM,KAAO,UAAW,CACpC,YAAa,cACb,QAAS,CAAE,OAAQ,kBAAmB,CACxC,CAAC,EAAE,KAAK,SAAU,SAAU,CAC1B,GAAI,CAAC,SAAS,GAAI,MAAM,IAAI,MAAM,qBAAqB,EACvD,OAAO,SAAS,KAAK,CACvB,CAAC,CACH,CAEA,SAAS,yBAA0B,CAC7B,OAAO,aAAgB,YAC3B,SAAS,cAAc,IAAI,YAAY,0BAA2B,CAChE,OAAQ,CAAE,KAAM,YAAa,CAC/B,CAAC,CAAC,CACJ,CAEA,SAAS,qBAAsB,CAC7B,IAAI,KAAO,OAAO,SAAW,OAAO,QAAQ,QAAU,OAAO,QAAQ,OAAO,KACxE,OAAO,QAAQ,OAAO,KACtB,IACJ,OAAI,KAAK,OAAO,KAAK,OAAS,CAAC,IAAM,MAAK,MAAQ,KAE3C,OAAO,MAAM,KAAO,iBAAkB,CAC3C,OAAQ,OACR,YAAa,cACb,QAAS,CACP,OAAQ,mBACR,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAU,CAAE,SAAU,YAAa,CAAC,CACjD,CAAC,EAAE,KAAK,SAAU,SAAU,CAC1B,GAAI,CAAC,SAAS,GAAI,MAAM,IAAI,MAAM,wBAAwB,EAC1D,OAAO,SAAS,KAAK,CACvB,CAAC,EAAE,KAAK,SAAU,KAAM,CACtB,IAAI,MAAQ,MAAQ,MAAM,QAAQ,KAAK,cAAc,EAAI,KAAK,eAAiB,CAAC,EAC5E,aAAe,MAAM,KAAK,SAAU,MAAO,CAC7C,OAAO,OAAS,OAAO,MAAM,MAAQ,EAAE,EAAE,YAAY,IAAM,aAAa,YAAY,CACtF,CAAC,EACD,GAAI,CAAC,cAAiB,aAAa,aAAe,IAAS,OAAO,MAAQ,KAAK,UAAU,EAAI,EAC3F,MAAM,IAAI,MAAM,4BAA4B,EAE9C,OAAO,IACT,CAAC,CACH,CAEA,SAAS,6BAA8B,CACrC,IAAI,WAAa,IAAI,IAAI,OAAO,SAAS,IAAI,EAC7C,WAAW,aAAa,OAAO,iBAAiB,EAChD,WAAW,aAAa,OAAO,gBAAgB,EAC/C,WAAW,aAAa,OAAO,iBAAiB,EAChD,OAAO,QAAQ,aACb,OAAO,QAAQ,MACf,GACA,WAAW,SAAW,WAAW,OAAS,WAAW,IACvD,CACF,CAEA,SAAS,aAAc,CACjB,KAAK,gBAAkB,CAAC,KAAK,eAAe,IAChD,uBAAuB,EACvB,KAAK,aAAa,YAAa,MAAM,EACjC,eAAc,aAAa,SAAW,IAC5C,CAYA,GAVA,KAAK,iBAAiB,SAAU,WAAW,EACvC,YAAY,WAAW,iBAAiB,QAAS,QAAQ,EACzD,aAAa,YAAY,iBAAiB,QAAS,UAAU,EACjE,MAAM,iBAAiB,QAAS,SAAU,MAAO,CAC3C,MAAM,SAAW,OAAO,WAAW,CACzC,CAAC,EACD,SAAS,iBAAiB,UAAW,SAAU,MAAO,CAChD,MAAM,MAAQ,UAAY,CAAC,MAAM,QAAQ,WAAW,CAC1D,CAAC,EAEG,0BAA2B,CAC7B,uBAAuB,EACvB,4BAA4B,EAC5B,iBAAiB,EAAI,EACrB,UAAU,EACV,wBAAwB,EACxB,MACF,CAEA,GAAI,oBAAqB,CAKvB,GAJA,uBAAuB,EACvB,4BAA4B,EAC5B,iBAAiB,EACjB,UAAU,EACN,OAAO,OAAO,OAAU,WAAY,CACtC,iBAAiB,EAAK,EACtB,MACF,CAEA,oBAAoB,EAAE,KAAK,UAAY,CACrC,iBAAiB,EAAI,EACrB,wBAAwB,CAC1B,CAAC,EAAE,MAAM,UAAY,CACnB,iBAAiB,EAAK,CACxB,CAAC,EACD,MACF,CAEI,2BAA2B,GAAK,CAAC,KAAK,cAAc,0BAA0B,GAAK,OAAO,OAAO,OAAU,YAC7G,YAAY,EAAE,KAAK,SAAU,KAAM,CAC5B,qBAAqB,IAAI,IAC9B,uBAAuB,EACvB,4BAA4B,EAC5B,iBAAiB,EAAI,EACrB,UAAU,EACV,wBAAwB,EAC1B,CAAC,EAAE,MAAM,UAAY,CAErB,CAAC,CAEL,CAEI,SAAS,aAAe,UAC1B,SAAS,iBAAiB,mBAAoB,oBAAoB,EAElE,qBAAqB,CAEzB,GAAG",
  "names": []
}
