const amplitudeKey = document.querySelector( 'meta[name="amplitude-key"]', )?.content; const consentInstance = document.querySelector( 'meta[name="consent-io-instance"]', )?.content; document.addEventListener("DOMContentLoaded", () => { if (!consentInstance || consentInstance.length === 0) return; const { getOrCreateConsentRuntime } = window.c15t; const { consentStore } = getOrCreateConsentRuntime({ mode: "c15t", backendURL: consentInstance, consentCategories: ["necessary", "measurement", "marketing"], storageConfig: { crossSubdomain: true, }, scripts: [ { id: "amplitude", src: `https://cdn.amplitude.com/script/${amplitudeKey}.js`, category: "measurement", onLoad: () => { window.amplitude.init(amplitudeKey, { fetchRemoteConfig: true, autocapture: true, }); }, }, ], }); let previousActiveUI = consentStore.getState().activeUI; const banner = document.getElementById("c15t-banner"); const configureSection = document.getElementById("c15t-configure-section"); const configureBtn = document.getElementById("c15t-configure-btn"); const measurementToggle = document.getElementById("c15t-toggle-measurement"); const marketingToggle = document.getElementById("c15t-toggle-marketing"); const toggleConfigureMode = () => { const currentConsents = consentStore.getState().consents; measurementToggle.checked = currentConsents ? (currentConsents.measurement ?? false) : false; marketingToggle.checked = currentConsents ? (currentConsents.marketing ?? false) : false; configureSection.style.display = "flex"; configureBtn.innerHTML = "Save"; configureBtn.className = "c15t-button secondary"; configureBtn.title = ""; }; consentStore.subscribe((state) => { const hideBanner = state.activeUI === "none" || (state.activeUI === "banner" && state.model === "opt-out"); banner.style.display = hideBanner ? "none" : "block"; if (state.activeUI === "dialog" && previousActiveUI !== "dialog") { toggleConfigureMode(); } previousActiveUI = state.activeUI; }); configureBtn.addEventListener("click", () => { if (consentStore.getState().activeUI === "dialog") { consentStore .getState() .setConsent("measurement", measurementToggle.checked); consentStore.getState().setConsent("marketing", marketingToggle.checked); consentStore.getState().saveConsents("custom"); } else { consentStore.getState().setActiveUI("dialog"); } }); document.getElementById("c15t-accept").addEventListener("click", () => { consentStore.getState().saveConsents("all"); }); document.getElementById("c15t-decline").addEventListener("click", () => { consentStore.getState().saveConsents("necessary"); }); document .getElementById("c15t-manage-consent-btn") .addEventListener("click", () => { consentStore.getState().setActiveUI("dialog"); }); });