Something went wrong. Try again.
fork of gpui
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394const 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"); });});