{
  "version": 3,
  "sources": ["/cdn/shop/t/64/assets/stackhouse-marketing-popup-guard.js?codex_v=20260725a"],
  "sourcesContent": ["(function initializeStackhouseMarketingPopupGuard(global) {\n  'use strict';\n\n  if (!global || !global.document || global.StackhouseMarketingPopupGuard) return;\n\n  var document = global.document;\n  var policy = global.StackhouseMarketingPopupPolicy || {};\n  var routeSuppressed = policy.routeSuppressed === true;\n  var locks = {};\n  var nextTokenId = 1;\n  var observer = null;\n  var pendingTriggerToken = null;\n  var pendingTriggerTimer = null;\n  var popupDialogSelector = [\n    '[role=\"dialog\"][aria-label=\"POPUP Form\"]',\n    '[role=\"dialog\"][aria-label=\"Popup Form\"]',\n    '[role=\"dialog\"][data-testid=\"POPUP\"]'\n  ].join(',');\n  var popupCloseSelector = [\n    'button[aria-label=\"Close dialog\"]',\n    'button[aria-label=\"Close Dialog\"]',\n    'button[aria-label=\"Close form\"]',\n    'button[aria-label=\"Close Form\"]',\n    '[data-testid=\"close-form\"]',\n    '.klaviyo-close-form'\n  ].join(',');\n\n  function activeLockCount() {\n    return Object.keys(locks).length;\n  }\n\n  function isSuppressed() {\n    return routeSuppressed || activeLockCount() > 0;\n  }\n\n  function visible(element) {\n    if (!element || !element.isConnected || element.hidden) return false;\n    var style = global.getComputedStyle ? global.getComputedStyle(element) : null;\n    if (style && (style.display === 'none' || style.visibility === 'hidden')) return false;\n    return true;\n  }\n\n  function marketingDialogs(root) {\n    var scope = root && root.querySelectorAll ? root : document;\n    var dialogs = [];\n    if (scope.matches && scope.matches(popupDialogSelector)) dialogs.push(scope);\n    Array.prototype.push.apply(dialogs, Array.prototype.slice.call(scope.querySelectorAll(popupDialogSelector)));\n    return dialogs.filter(function uniqueVisible(dialog, index) {\n      return dialogs.indexOf(dialog) === index && visible(dialog);\n    });\n  }\n\n  function dismissDialog(dialog) {\n    if (!dialog || dialog.dataset.stackhouseDismissRequested === 'true') return false;\n    var closeButton = dialog.querySelector(popupCloseSelector);\n    if (!closeButton) return false;\n    dialog.dataset.stackhouseDismissRequested = 'true';\n    closeButton.click();\n    global.setTimeout(function clearDismissMarker() {\n      if (dialog && dialog.isConnected) delete dialog.dataset.stackhouseDismissRequested;\n    }, 500);\n    return true;\n  }\n\n  function dismissOpenForms(root) {\n    if (!isSuppressed()) return 0;\n    return marketingDialogs(root).reduce(function dismissCount(count, dialog) {\n      return count + (dismissDialog(dialog) ? 1 : 0);\n    }, 0);\n  }\n\n  function policyDetail() {\n    return {\n      suppressed: isSuppressed(),\n      routeSuppressed: routeSuppressed,\n      routeReason: policy.reason || '',\n      dynamicLockCount: activeLockCount()\n    };\n  }\n\n  function notify() {\n    if (document.documentElement) {\n      document.documentElement.setAttribute(\n        'data-stackhouse-marketing-popup-suppressed',\n        isSuppressed() ? 'true' : 'false'\n      );\n    }\n    if (typeof global.CustomEvent === 'function') {\n      global.dispatchEvent(new global.CustomEvent(\n        'stackhouse:marketing-popup-suppression-changed',\n        { detail: policyDetail() }\n      ));\n    }\n    if (isSuppressed()) {\n      dismissOpenForms(document);\n      global.setTimeout(function retryDismiss() {\n        dismissOpenForms(document);\n      }, 80);\n    }\n  }\n\n  function acquire(owner) {\n    var token = 'marketing-popup-lock-' + nextTokenId++;\n    locks[token] = String(owner || 'storefront-overlay').slice(0, 120);\n    notify();\n    return token;\n  }\n\n  function release(token) {\n    if (!token || !Object.prototype.hasOwnProperty.call(locks, token)) return false;\n    delete locks[token];\n    notify();\n    return true;\n  }\n\n  function shouldLoadScript(url) {\n    var source = String(url || '').toLowerCase();\n    if (source.indexOf('klaviyo') === -1) return true;\n    return !isSuppressed();\n  }\n\n  function observeMarketingForms() {\n    if (observer || !global.MutationObserver || !document.documentElement) return;\n    observer = new global.MutationObserver(function onMarketingMutation(mutations) {\n      if (!isSuppressed()) return;\n      var marketingMarkupChanged = mutations.some(function inspectMutation(mutation) {\n        if (mutation.type === 'attributes') return true;\n        return Array.prototype.slice.call(mutation.addedNodes || []).some(function inspectNode(node) {\n          return node && node.nodeType === 1;\n        });\n      });\n      if (marketingMarkupChanged) dismissOpenForms(document);\n    });\n    observer.observe(document.documentElement, {\n      attributes: true,\n      attributeFilter: ['aria-label', 'class', 'data-testid', 'hidden', 'role', 'style'],\n      childList: true,\n      subtree: true\n    });\n  }\n\n  document.addEventListener('click', function temporarilySuppressForModalTrigger(event) {\n    var trigger = event.target && event.target.closest\n      ? event.target.closest(\n        '.open__popup, header .shop > a, [data-cart-drawer-trigger], form[action*=\"/cart/add\"], [data-add-to-cart]'\n      )\n      : null;\n    if (!trigger) return;\n\n    if (pendingTriggerToken) release(pendingTriggerToken);\n    if (pendingTriggerTimer) global.clearTimeout(pendingTriggerTimer);\n    pendingTriggerToken = acquire('pending-storefront-modal');\n    pendingTriggerTimer = global.setTimeout(function releasePendingTrigger() {\n      release(pendingTriggerToken);\n      pendingTriggerToken = null;\n      pendingTriggerTimer = null;\n    }, 1000);\n  }, true);\n\n  global.addEventListener('klaviyoForms', function suppressLateMarketingForm(event) {\n    if (!event || !event.detail || event.detail.type !== 'open' || !isSuppressed()) return;\n    var schedule = global.requestAnimationFrame || function scheduleFallback(callback) {\n      return global.setTimeout(callback, 0);\n    };\n    schedule(function dismissAfterOpenEvent() {\n      dismissOpenForms(document);\n    });\n  });\n\n  global.StackhouseMarketingPopupGuard = {\n    acquire: acquire,\n    activeLockCount: activeLockCount,\n    dismissOpenForms: dismissOpenForms,\n    isRouteSuppressed: function isRouteSuppressed() {\n      return routeSuppressed;\n    },\n    isSuppressed: isSuppressed,\n    policy: policyDetail,\n    release: release,\n    shouldLoadScript: shouldLoadScript\n  };\n\n  observeMarketingForms();\n  notify();\n})(window);\n"],
  "mappings": "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",
  "names": []
}
