{
  "version": 3,
  "sources": ["/cdn/shop/t/19/assets/newsletter-popup.js?ocv=newsletter-trigger-20260504-2"],
  "sourcesContent": ["// ========================================\n// Newsletter Popup Runtime\n// Intent-based trigger + dismiss persistence\n// Native custom element: <newsletter-popup> (Faz 5 migration)\n// ========================================\n\nclass NewsletterPopup extends HTMLElement {\n  connectedCallback() {\n    const STORAGE_KEY = \"santo_newsletter_dismissed\";\n    const LEGACY_STORAGE_KEYS = [\"santo_\u2026ssed\", \"***\"];\n    const STORAGE_KEY_SUBSCRIBED = \"santo_newsletter_subscribed\";\n    const flyout = this;\n\n    const dismissDays = parseInt(flyout.dataset.dismissDays, 10) || 7;\n    const configuredScrollThreshold = parseInt(flyout.dataset.scrollPercent, 10) || 30;\n    const configuredDelayMs = parseInt(flyout.dataset.delayMs, 10) || 10000;\n    const scrollThreshold = Math.max(configuredScrollThreshold, 50);\n    const delayMs = Math.max(configuredDelayMs, 20000);\n    const hasDesktopPointer = window.matchMedia(\"(hover: hover) and (pointer: fine)\").matches;\n    const closeBtn = flyout.querySelector(\"#newsletter-popup-close\");\n    const form = flyout.querySelector(\"#newsletter-popup-form\");\n    const successEl = flyout.querySelector(\"#newsletter-popup-success\");\n\n    flyout.setAttribute(\"aria-hidden\", \"true\");\n\n    function getDismissedAt() {\n      const currentValue = localStorage.getItem(STORAGE_KEY);\n      if (currentValue) return currentValue;\n\n      for (const legacyKey of LEGACY_STORAGE_KEYS) {\n        const legacyValue = localStorage.getItem(legacyKey);\n        if (legacyValue) return legacyValue;\n      }\n\n      return null;\n    }\n\n    function isDismissed() {\n      try {\n        if (localStorage.getItem(STORAGE_KEY_SUBSCRIBED) === \"true\") return true;\n        const value = getDismissedAt();\n        if (!value) return false;\n        return Date.now() - parseInt(value, 10) < dismissDays * 86400000;\n      } catch (error) {\n        return false;\n      }\n    }\n\n    function dismiss() {\n      try {\n        localStorage.setItem(STORAGE_KEY, Date.now().toString());\n      } catch (error) {}\n      flyout.classList.remove(\"is-visible\");\n      flyout.setAttribute(\"aria-hidden\", \"true\");\n    }\n\n    function show() {\n      if (flyout.classList.contains(\"is-visible\")) return;\n      flyout.classList.add(\"is-visible\");\n      flyout.setAttribute(\"aria-hidden\", \"false\");\n    }\n\n    if (closeBtn) {\n      closeBtn.addEventListener(\"click\", function (event) {\n        event.preventDefault();\n        dismiss();\n      });\n    }\n\n    document.addEventListener(\"keydown\", function (event) {\n      if (event.key === \"Escape\" && flyout.classList.contains(\"is-visible\")) dismiss();\n    });\n\n    // GER\u00C7EK-BA\u015EARI d\u00F6n\u00FC\u015F\u00FC (11 Haz 2026, Hakan: \"subscribed hi\u00E7 yazm\u0131yor,\n    // direkt kayboluyor\"). Shopify customer formu native POST eder; bot\n    // korumasi (hCaptcha) gerekirse /challenge'a g\u00F6t\u00FCr\u00FCr ve BA\u015EARIDA sayfay\u0131\n    // ?customer_posted=true ile y\u00FCkler. Success YALNIZCA bu kan\u0131tla g\u00F6sterilir \u2014\n    // submit eventinde success g\u00F6stermek sahte-ba\u015Far\u0131yd\u0131 (POST captcha'da\n    // kesilse bile \"te\u015Fekk\u00FCrler\" \u00E7\u0131k\u0131yor + subscribed yaz\u0131l\u0131yordu).\n    if (new URLSearchParams(window.location.search).get(\"customer_posted\") === \"true\") {\n      try {\n        localStorage.setItem(STORAGE_KEY_SUBSCRIBED, \"true\");\n      } catch (error) {}\n      if (form) form.style.display = \"none\";\n      if (successEl) successEl.classList.add(\"is-visible\");\n      show();\n      setTimeout(dismiss, 5000);\n      return;\n    }\n\n    if (isDismissed()) return;\n\n    let shown = false;\n    let delaySatisfied = false;\n    let scrollDepthSatisfied = false;\n    let exitIntentSatisfied = false;\n\n    function cleanupTriggers() {\n      window.removeEventListener(\"scroll\", onScroll);\n      document.removeEventListener(\"mouseleave\", onExitIntent);\n    }\n\n    // Cart drawer a\u00E7\u0131kken popup'\u0131 engelle (Hakan Bey 8 Haz 2026:\n    // \"card drawer a\u00E7\u0131kken, newsletter popup'\u0131 a\u00E7\u0131lmas\u0131n.\").\n    // E6 kilidi: cart-drawer.js / global.js'e DOKUNULMAZ \u2014 burada sadece\n    // drawer'\u0131n a\u00E7\u0131k-durum sinyalini (#CartDrawer.is-open, ge\u00E7i\u015Fte .is-opening)\n    // READ-ONLY okuyoruz.\n    function isCartDrawerOpen() {\n      const cart = document.getElementById(\"CartDrawer\");\n      return !!(\n        cart &&\n        (cart.classList.contains(\"is-open\") || cart.classList.contains(\"is-opening\"))\n      );\n    }\n\n    function maybeShow() {\n      if (shown || !delaySatisfied || isDismissed()) return;\n      // Drawer a\u00E7\u0131kken g\u00F6sterme. shown=false kal\u0131r + trigger'lar canl\u0131 kal\u0131r \u2192\n      // drawer kapan\u0131p kullan\u0131c\u0131 tekrar scroll/exit-intent \u00FCretti\u011Finde normal a\u00E7\u0131l\u0131r.\n      if (isCartDrawerOpen()) return;\n      const hasQualifiedIntent = exitIntentSatisfied || scrollDepthSatisfied;\n      if (!hasQualifiedIntent) return;\n\n      shown = true;\n      show();\n      cleanupTriggers();\n    }\n\n    function onScroll() {\n      if (shown) return;\n      const availableScroll =\n        Math.max(document.documentElement.scrollHeight, document.body.scrollHeight) -\n        window.innerHeight;\n      const scrollPercent = availableScroll > 0 ? (window.scrollY / availableScroll) * 100 : 0;\n\n      if (scrollPercent >= scrollThreshold) {\n        scrollDepthSatisfied = true;\n        maybeShow();\n      }\n    }\n\n    function onExitIntent(event) {\n      if (shown || !hasDesktopPointer || event.clientY > 8) return;\n      exitIntentSatisfied = true;\n      maybeShow();\n    }\n\n    window.addEventListener(\"scroll\", onScroll, { passive: true });\n    if (hasDesktopPointer) document.addEventListener(\"mouseleave\", onExitIntent);\n\n    setTimeout(function () {\n      delaySatisfied = true;\n      maybeShow();\n    }, delayMs);\n\n    // NOT: form submit handler'\u0131 B\u0130L\u0130N\u00C7L\u0130 YOK \u2014 native submission'a kar\u0131\u015F\u0131lmaz.\n    // Taray\u0131c\u0131 /contact'a POST eder; captcha challenge'\u0131 g\u00F6r\u00FCn\u00FCr kal\u0131r; ba\u015Far\u0131\n    // ?customer_posted=true d\u00F6n\u00FC\u015F\u00FCyle yukar\u0131da i\u015Flenir.\n  }\n}\n\nif (!customElements.get(\"newsletter-popup\"))\n  customElements.define(\"newsletter-popup\", NewsletterPopup);\n"],
  "mappings": "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",
  "names": []
}
