{ "version": 3, "sources": ["../../javascript/integrations/amplitude-consent.js", "../../javascript/amplitude-consent.js"], "sourcesContent": ["export const AMPLITUDE_CONSENT_CHANGED = 'aboalarm:amplitudeConsentChanged'\nexport const AMPLITUDE_SDK_LOADED = 'aboalarm:amplitudeSdkLoaded'\n\n// Klaro signals consent; executable code stays in this bundle instead of a\n// cloned inline script whose nonce is hidden by the browser.\nexport function createAmplitudeConsent({ win = window, config = {} } = {}) {\n let consent = false\n let initialized = false\n let started = false\n let ready = false\n let notifiedLegacy = false\n let disposed = false\n const listeners = new Set()\n\n const snapshot = () => ({ consent, ready })\n const publish = () => {\n listeners.forEach((listener) => {\n try {\n listener(snapshot())\n } catch {\n // An analytics subscriber must not break the consent callback.\n }\n })\n }\n\n const activate = () => {\n if (disposed) return\n ready = false\n try {\n const instance = win.amplitude?.getInstance?.()\n if (!instance) return\n instance.setOptOut(!consent)\n if (!consent) return\n if (!notifiedLegacy) {\n if (config.domain) instance.identify(new win.amplitude.Identify().set('domain', config.domain))\n notifiedLegacy = true\n // Existing CS events waiting in the shared wrapper retain their hook.\n win.dispatchEvent(new win.Event('volders:amplitudeConsentIsGiven'))\n }\n ready = true\n } catch {\n ready = false\n } finally {\n publish()\n }\n }\n\n const sync = () => {\n if (disposed) return\n consent = readAmplitudeConsent(win)\n ready = false\n if (initialized) return activate()\n publish()\n if (!consent || started || !config.apiKey) return\n try {\n // Do not enqueue init in the loader stub: consent could be revoked\n // before the external script arrives and drains that queue.\n if (typeof win.amplitude?.runQueuedFunctions !== 'function') return\n const instance = win.amplitude?.getInstance?.()\n if (!instance?.init || !instance?.onInit) return\n started = true\n instance.init(config.apiKey)\n instance.onInit(() => {\n initialized = true\n activate()\n })\n } catch {\n started = false\n }\n }\n\n win.addEventListener(AMPLITUDE_CONSENT_CHANGED, sync)\n win.addEventListener(AMPLITUDE_SDK_LOADED, sync)\n sync()\n return Object.freeze({\n getSnapshot: snapshot,\n subscribe(listener) {\n listeners.add(listener)\n return () => listeners.delete(listener)\n },\n dispose() {\n disposed = true\n ready = false\n win.removeEventListener(AMPLITUDE_CONSENT_CHANGED, sync)\n win.removeEventListener(AMPLITUDE_SDK_LOADED, sync)\n listeners.clear()\n },\n })\n}\n\nexport function bindAmplitudeConsent(win = window) {\n if (win.aboalarmAmplitude) return win.aboalarmAmplitude\n try {\n const element = win.document.getElementById('aboalarm-amplitude-config')\n if (!element) return null\n win.aboalarmAmplitude = createAmplitudeConsent({ win, config: JSON.parse(element.textContent) })\n return win.aboalarmAmplitude\n } catch {\n return null\n }\n}\n\n// Klaro loads asynchronously. Its persisted choice is already authoritative;\n// an explicit callback (including withdrawal) takes precedence over the cookie.\nfunction readAmplitudeConsent(win) {\n if (typeof win.aboalarmAmplitudeConsent === 'boolean') return win.aboalarmAmplitudeConsent\n try {\n const cookie = win.document.cookie\n .split(';')\n .map((part) => part.trim())\n .find((part) => part.startsWith('klaro='))\n return JSON.parse(decodeURIComponent(cookie?.slice('klaro='.length)))?.amplitude === true\n } catch {\n return false\n }\n}\n", "import { bindAmplitudeConsent } from './integrations/amplitude-consent'\n\nbindAmplitudeConsent()\n"], "mappings": "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", "names": ["AMPLITUDE_CONSENT_CHANGED", "AMPLITUDE_SDK_LOADED", "createAmplitudeConsent", "win", "config", "consent", "initialized", "started", "ready", "notifiedLegacy", "disposed", "listeners", "snapshot", "publish", "listener", "e", "activate", "_a", "_b", "instance", "sync", "_c", "readAmplitudeConsent", "bindAmplitudeConsent", "element", "cookie", "part", "bindAmplitudeConsent"] }