@c15t/react 1.7.1 → 1.8.0-canary-20251028143243

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- "use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_exports__={};let jsx_runtime_namespaceObject=require("react/jsx-runtime"),external_vitest_namespaceObject=require("vitest"),external_vitest_browser_react_namespaceObject=require("vitest-browser-react"),consent_manager_dialog_cjs_namespaceObject=require("../../consent-manager-dialog/consent-manager-dialog.cjs"),consent_manager_provider_cjs_namespaceObject=require("../../../providers/consent-manager-provider.cjs"),external_cookie_banner_cjs_namespaceObject=require("../cookie-banner.cjs"),mockShowPopup=!0,mockIsPrivacyDialogOpen=!1;external_vitest_namespaceObject.vi.mock("~/hooks/use-consent-manager",async e=>{let t=await e();return{useConsentManager:()=>({...t.useConsentManager(),showPopup:mockShowPopup,isPrivacyDialogOpen:mockIsPrivacyDialogOpen,setShowPopup:e=>{mockShowPopup=e},setIsPrivacyDialogOpen:e=>{mockIsPrivacyDialogOpen=e}})}});let localStorageMock=(()=>{let e={};return{getItem:t=>e[t]||null,setItem:(t,n)=>{e[t]=n.toString()},removeItem:t=>{delete e[t]},clear:()=>{e={}}}})();Object.defineProperty(window,"localStorage",{value:localStorageMock});let defaultOptions={mode:"offline"};for(var __webpack_i__ in(0,external_vitest_namespaceObject.describe)("CookieBanner E2E Tests",()=>{(0,external_vitest_namespaceObject.beforeEach)(()=>{window.localStorage.clear(),mockShowPopup=!0,external_vitest_namespaceObject.vi.clearAllMocks(),(0,consent_manager_provider_cjs_namespaceObject.clearConsentManagerCache)()}),(0,external_vitest_namespaceObject.test)("should show cookie banner on first visit",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.body.querySelector('[data-testid="cookie-banner-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(mockShowPopup).toBe(!0),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-title"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-description"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-reject-button"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-customize-button"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-accept-button"]')).toBeInTheDocument()}),(0,external_vitest_namespaceObject.test)("should accept all cookies when clicking Accept All",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-accept-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(mockShowPopup).toBe(!1),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument();let t=JSON.parse(window.localStorage.getItem("privacy-consent-storage")||"{}");(0,external_vitest_namespaceObject.expect)(t.consents).toBeTruthy(),(0,external_vitest_namespaceObject.expect)(t.consentInfo.type).toBe("all")}),(0,external_vitest_namespaceObject.test)("should reject non-essential cookies when clicking Reject All",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-reject-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(mockShowPopup).toBe(!1),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument();let t=JSON.parse(window.localStorage.getItem("privacy-consent-storage")||"{}");(0,external_vitest_namespaceObject.expect)(t.consents).toBeTruthy(),(0,external_vitest_namespaceObject.expect)(t.consentInfo.type).toBe("necessary"),(0,external_vitest_namespaceObject.expect)(t.consents.necessary).toBe(!0),(0,external_vitest_namespaceObject.expect)(t.consents.experience).toBe(!1),(0,external_vitest_namespaceObject.expect)(t.consents.functionality).toBe(!1),(0,external_vitest_namespaceObject.expect)(t.consents.marketing).toBe(!1),(0,external_vitest_namespaceObject.expect)(t.consents.measurement).toBe(!1)}),(0,external_vitest_namespaceObject.test)("should open consent manager dialog when clicking Customize",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-customize-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(mockShowPopup).toBe(!1),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(mockIsPrivacyDialogOpen).toBe(!0);let t=document.querySelector('[data-testid="consent-manager-dialog-root"]');(0,external_vitest_namespaceObject.expect)(t).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="consent-manager-widget-switch-necessary"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="consent-manager-widget-switch-marketing"]')).toBeInTheDocument();let n=document.querySelector('[data-testid="consent-manager-widget-switch-marketing"]');n?.dispatchEvent(new MouseEvent("click",{bubbles:!0}));let a=document.querySelector('[data-testid="consent-manager-widget-footer-save-button"]');a?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(mockIsPrivacyDialogOpen).toBe(!1);let c=JSON.parse(window.localStorage.getItem("privacy-consent-storage")||"{}");(0,external_vitest_namespaceObject.expect)(c.consents).toBeTruthy(),(0,external_vitest_namespaceObject.expect)(c.consentInfo.type).toBe("custom"),(0,external_vitest_namespaceObject.expect)(c.consents.marketing).toBe(!0)}),(0,external_vitest_namespaceObject.test)("should be keyboard accessible",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-reject-button"]'),t=document.querySelector('[data-testid="cookie-banner-customize-button"]'),n=document.querySelector('[data-testid="cookie-banner-accept-button"]');e.focus(),(0,external_vitest_namespaceObject.expect)(document.activeElement).toBe(e),t.focus(),(0,external_vitest_namespaceObject.expect)(document.activeElement).toBe(t),n.focus(),(0,external_vitest_namespaceObject.expect)(document.activeElement).toBe(n)}),(0,external_vitest_namespaceObject.test)("should handle scroll lock properly",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{scrollLock:!0}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]})),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-overlay"]')).toBeInTheDocument();let e=document.querySelector('[data-testid="cookie-banner-accept-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-overlay"]')).not.toBeInTheDocument()})}),__webpack_exports__)exports[__webpack_i__]=__webpack_exports__[__webpack_i__];Object.defineProperty(exports,"__esModule",{value:!0});
1
+ "use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_exports__={};let jsx_runtime_namespaceObject=require("react/jsx-runtime"),external_vitest_namespaceObject=require("vitest"),external_vitest_browser_react_namespaceObject=require("vitest-browser-react"),consent_manager_dialog_cjs_namespaceObject=require("../../consent-manager-dialog/consent-manager-dialog.cjs"),consent_manager_provider_cjs_namespaceObject=require("../../../providers/consent-manager-provider.cjs"),external_cookie_banner_cjs_namespaceObject=require("../cookie-banner.cjs"),mockShowPopup=!0,mockIsPrivacyDialogOpen=!1;external_vitest_namespaceObject.vi.mock("~/hooks/use-consent-manager",async e=>{let t=await e();return{useConsentManager:()=>({...t.useConsentManager(),showPopup:mockShowPopup,isPrivacyDialogOpen:mockIsPrivacyDialogOpen,setShowPopup:e=>{mockShowPopup=e},setIsPrivacyDialogOpen:e=>{mockIsPrivacyDialogOpen=e}})}});let localStorageMock=(()=>{let e={};return{getItem:t=>e[t]||null,setItem:(t,n)=>{e[t]=n.toString()},removeItem:t=>{delete e[t]},clear:()=>{e={}}}})();Object.defineProperty(window,"localStorage",{value:localStorageMock});let defaultOptions={mode:"offline"};for(var __webpack_i__ in(0,external_vitest_namespaceObject.describe)("CookieBanner E2E Tests",()=>{(0,external_vitest_namespaceObject.beforeEach)(()=>{window.localStorage.clear(),mockShowPopup=!0,external_vitest_namespaceObject.vi.clearAllMocks(),(0,consent_manager_provider_cjs_namespaceObject.clearConsentManagerCache)()}),(0,external_vitest_namespaceObject.test)("should show cookie banner on first visit",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.body.querySelector('[data-testid="cookie-banner-root"]');(0,external_vitest_namespaceObject.expect)(e).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(mockShowPopup).toBe(!0),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-title"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-description"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-reject-button"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-customize-button"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-accept-button"]')).toBeInTheDocument()}),(0,external_vitest_namespaceObject.test)("should accept all cookies when clicking Accept All",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-accept-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(mockShowPopup).toBe(!1),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument();let t=JSON.parse(window.localStorage.getItem("c15t")||"{}");(0,external_vitest_namespaceObject.expect)(t.consents.necessary).toBeTruthy(),(0,external_vitest_namespaceObject.expect)(t.consents.marketing).toBeTruthy(),(0,external_vitest_namespaceObject.expect)(t.consents.experience).toBeFalsy()}),(0,external_vitest_namespaceObject.test)("should reject non-essential cookies when clicking Reject All",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-reject-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(mockShowPopup).toBe(!1),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument();let t=JSON.parse(window.localStorage.getItem("c15t")||"{}");(0,external_vitest_namespaceObject.expect)(t.consents).toBeTruthy(),(0,external_vitest_namespaceObject.expect)(t.consents.necessary).toBe(!0),(0,external_vitest_namespaceObject.expect)(t.consents.experience).toBe(!1),(0,external_vitest_namespaceObject.expect)(t.consents.functionality).toBe(!1),(0,external_vitest_namespaceObject.expect)(t.consents.marketing).toBe(!1),(0,external_vitest_namespaceObject.expect)(t.consents.measurement).toBe(!1)}),(0,external_vitest_namespaceObject.test)("should open consent manager dialog when clicking Customize",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-customize-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(mockShowPopup).toBe(!1),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(mockIsPrivacyDialogOpen).toBe(!0);let t=document.querySelector('[data-testid="consent-manager-dialog-root"]');(0,external_vitest_namespaceObject.expect)(t).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="consent-manager-widget-switch-necessary"]')).toBeInTheDocument(),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="consent-manager-widget-switch-marketing"]')).toBeInTheDocument();let n=document.querySelector('[data-testid="consent-manager-widget-switch-marketing"]');n?.dispatchEvent(new MouseEvent("click",{bubbles:!0}));let a=document.querySelector('[data-testid="consent-manager-widget-footer-save-button"]');a?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(mockIsPrivacyDialogOpen).toBe(!1);let c=JSON.parse(window.localStorage.getItem("c15t")||"{}");(0,external_vitest_namespaceObject.expect)(c.consents).toBeTruthy(),(0,external_vitest_namespaceObject.expect)(c.consents.marketing).toBe(!0),(0,external_vitest_namespaceObject.expect)(c.consents.functionality).toBeFalsy()}),(0,external_vitest_namespaceObject.test)("should be keyboard accessible",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-reject-button"]'),t=document.querySelector('[data-testid="cookie-banner-customize-button"]'),n=document.querySelector('[data-testid="cookie-banner-accept-button"]');e.focus(),(0,external_vitest_namespaceObject.expect)(document.activeElement).toBe(e),t.focus(),(0,external_vitest_namespaceObject.expect)(document.activeElement).toBe(t),n.focus(),(0,external_vitest_namespaceObject.expect)(document.activeElement).toBe(n)}),(0,external_vitest_namespaceObject.test)("should handle scroll lock properly",async()=>{(0,external_vitest_browser_react_namespaceObject.render)((0,jsx_runtime_namespaceObject.jsxs)(consent_manager_provider_cjs_namespaceObject.ConsentManagerProvider,{options:defaultOptions,children:[(0,jsx_runtime_namespaceObject.jsx)(external_cookie_banner_cjs_namespaceObject.CookieBanner,{scrollLock:!0}),(0,jsx_runtime_namespaceObject.jsx)(consent_manager_dialog_cjs_namespaceObject.ConsentManagerDialog,{})]})),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-overlay"]')).toBeInTheDocument();let e=document.querySelector('[data-testid="cookie-banner-accept-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,external_vitest_namespaceObject.expect)(document.querySelector('[data-testid="cookie-banner-overlay"]')).not.toBeInTheDocument()})}),__webpack_exports__)exports[__webpack_i__]=__webpack_exports__[__webpack_i__];Object.defineProperty(exports,"__esModule",{value:!0});
@@ -1 +1 @@
1
- let e;import*as t from"react/jsx-runtime";import*as o from"vitest";import*as n from"vitest-browser-react";import*as c from"../../consent-manager-dialog/consent-manager-dialog.js";import*as a from"../../../providers/consent-manager-provider.js";import*as s from"../cookie-banner.js";let r=!0,i=!1;o.vi.mock("~/hooks/use-consent-manager",async e=>{let t=await e();return{useConsentManager:()=>({...t.useConsentManager(),showPopup:r,isPrivacyDialogOpen:i,setShowPopup:e=>{r=e},setIsPrivacyDialogOpen:e=>{i=e}})}}),Object.defineProperty(window,"localStorage",{value:(e={},{getItem:t=>e[t]||null,setItem:(t,o)=>{e[t]=o.toString()},removeItem:t=>{delete e[t]},clear:()=>{e={}}})});let d={mode:"offline"};(0,o.describe)("CookieBanner E2E Tests",()=>{(0,o.beforeEach)(()=>{window.localStorage.clear(),r=!0,o.vi.clearAllMocks(),(0,a.clearConsentManagerCache)()}),(0,o.test)("should show cookie banner on first visit",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(s.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.body.querySelector('[data-testid="cookie-banner-root"]');(0,o.expect)(e).toBeInTheDocument(),(0,o.expect)(r).toBe(!0),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-title"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-description"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-reject-button"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-customize-button"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-accept-button"]')).toBeInTheDocument()}),(0,o.test)("should accept all cookies when clicking Accept All",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(s.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-accept-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(r).toBe(!1),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument();let i=JSON.parse(window.localStorage.getItem("privacy-consent-storage")||"{}");(0,o.expect)(i.consents).toBeTruthy(),(0,o.expect)(i.consentInfo.type).toBe("all")}),(0,o.test)("should reject non-essential cookies when clicking Reject All",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(s.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-reject-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(r).toBe(!1),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument();let i=JSON.parse(window.localStorage.getItem("privacy-consent-storage")||"{}");(0,o.expect)(i.consents).toBeTruthy(),(0,o.expect)(i.consentInfo.type).toBe("necessary"),(0,o.expect)(i.consents.necessary).toBe(!0),(0,o.expect)(i.consents.experience).toBe(!1),(0,o.expect)(i.consents.functionality).toBe(!1),(0,o.expect)(i.consents.marketing).toBe(!1),(0,o.expect)(i.consents.measurement).toBe(!1)}),(0,o.test)("should open consent manager dialog when clicking Customize",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(s.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-customize-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(r).toBe(!1),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument(),(0,o.expect)(i).toBe(!0);let l=document.querySelector('[data-testid="consent-manager-dialog-root"]');(0,o.expect)(l).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="consent-manager-widget-switch-necessary"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="consent-manager-widget-switch-marketing"]')).toBeInTheDocument();let u=document.querySelector('[data-testid="consent-manager-widget-switch-marketing"]');u?.dispatchEvent(new MouseEvent("click",{bubbles:!0}));let m=document.querySelector('[data-testid="consent-manager-widget-footer-save-button"]');m?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(i).toBe(!1);let p=JSON.parse(window.localStorage.getItem("privacy-consent-storage")||"{}");(0,o.expect)(p.consents).toBeTruthy(),(0,o.expect)(p.consentInfo.type).toBe("custom"),(0,o.expect)(p.consents.marketing).toBe(!0)}),(0,o.test)("should be keyboard accessible",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(s.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-reject-button"]'),r=document.querySelector('[data-testid="cookie-banner-customize-button"]'),i=document.querySelector('[data-testid="cookie-banner-accept-button"]');e.focus(),(0,o.expect)(document.activeElement).toBe(e),r.focus(),(0,o.expect)(document.activeElement).toBe(r),i.focus(),(0,o.expect)(document.activeElement).toBe(i)}),(0,o.test)("should handle scroll lock properly",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(s.CookieBanner,{scrollLock:!0}),(0,t.jsx)(c.ConsentManagerDialog,{})]})),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-overlay"]')).toBeInTheDocument();let e=document.querySelector('[data-testid="cookie-banner-accept-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-overlay"]')).not.toBeInTheDocument()})});
1
+ let e;import*as t from"react/jsx-runtime";import*as o from"vitest";import*as n from"vitest-browser-react";import*as c from"../../consent-manager-dialog/consent-manager-dialog.js";import*as a from"../../../providers/consent-manager-provider.js";import*as s from"../cookie-banner.js";let r=!0,i=!1;o.vi.mock("~/hooks/use-consent-manager",async e=>{let t=await e();return{useConsentManager:()=>({...t.useConsentManager(),showPopup:r,isPrivacyDialogOpen:i,setShowPopup:e=>{r=e},setIsPrivacyDialogOpen:e=>{i=e}})}}),Object.defineProperty(window,"localStorage",{value:(e={},{getItem:t=>e[t]||null,setItem:(t,o)=>{e[t]=o.toString()},removeItem:t=>{delete e[t]},clear:()=>{e={}}})});let d={mode:"offline"};(0,o.describe)("CookieBanner E2E Tests",()=>{(0,o.beforeEach)(()=>{window.localStorage.clear(),r=!0,o.vi.clearAllMocks(),(0,a.clearConsentManagerCache)()}),(0,o.test)("should show cookie banner on first visit",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(s.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.body.querySelector('[data-testid="cookie-banner-root"]');(0,o.expect)(e).toBeInTheDocument(),(0,o.expect)(r).toBe(!0),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-title"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-description"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-reject-button"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-customize-button"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-accept-button"]')).toBeInTheDocument()}),(0,o.test)("should accept all cookies when clicking Accept All",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(s.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-accept-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(r).toBe(!1),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument();let i=JSON.parse(window.localStorage.getItem("c15t")||"{}");(0,o.expect)(i.consents.necessary).toBeTruthy(),(0,o.expect)(i.consents.marketing).toBeTruthy(),(0,o.expect)(i.consents.experience).toBeFalsy()}),(0,o.test)("should reject non-essential cookies when clicking Reject All",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(s.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-reject-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(r).toBe(!1),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument();let i=JSON.parse(window.localStorage.getItem("c15t")||"{}");(0,o.expect)(i.consents).toBeTruthy(),(0,o.expect)(i.consents.necessary).toBe(!0),(0,o.expect)(i.consents.experience).toBe(!1),(0,o.expect)(i.consents.functionality).toBe(!1),(0,o.expect)(i.consents.marketing).toBe(!1),(0,o.expect)(i.consents.measurement).toBe(!1)}),(0,o.test)("should open consent manager dialog when clicking Customize",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(s.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-customize-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(r).toBe(!1),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-root"]')).not.toBeInTheDocument(),(0,o.expect)(i).toBe(!0);let l=document.querySelector('[data-testid="consent-manager-dialog-root"]');(0,o.expect)(l).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="consent-manager-widget-switch-necessary"]')).toBeInTheDocument(),(0,o.expect)(document.querySelector('[data-testid="consent-manager-widget-switch-marketing"]')).toBeInTheDocument();let u=document.querySelector('[data-testid="consent-manager-widget-switch-marketing"]');u?.dispatchEvent(new MouseEvent("click",{bubbles:!0}));let m=document.querySelector('[data-testid="consent-manager-widget-footer-save-button"]');m?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(i).toBe(!1);let p=JSON.parse(window.localStorage.getItem("c15t")||"{}");(0,o.expect)(p.consents).toBeTruthy(),(0,o.expect)(p.consents.marketing).toBe(!0),(0,o.expect)(p.consents.functionality).toBeFalsy()}),(0,o.test)("should be keyboard accessible",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(s.CookieBanner,{}),(0,t.jsx)(c.ConsentManagerDialog,{})]}));let e=document.querySelector('[data-testid="cookie-banner-reject-button"]'),r=document.querySelector('[data-testid="cookie-banner-customize-button"]'),i=document.querySelector('[data-testid="cookie-banner-accept-button"]');e.focus(),(0,o.expect)(document.activeElement).toBe(e),r.focus(),(0,o.expect)(document.activeElement).toBe(r),i.focus(),(0,o.expect)(document.activeElement).toBe(i)}),(0,o.test)("should handle scroll lock properly",async()=>{(0,n.render)((0,t.jsxs)(a.ConsentManagerProvider,{options:d,children:[(0,t.jsx)(s.CookieBanner,{scrollLock:!0}),(0,t.jsx)(c.ConsentManagerDialog,{})]})),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-overlay"]')).toBeInTheDocument();let e=document.querySelector('[data-testid="cookie-banner-accept-button"]');e?.dispatchEvent(new MouseEvent("click",{bubbles:!0})),await new Promise(e=>setTimeout(e,100)),(0,o.expect)(document.querySelector('[data-testid="cookie-banner-overlay"]')).not.toBeInTheDocument()})});
@@ -32,10 +32,7 @@ export declare function useConsentManager(): {
32
32
  branding: import("@c15t/backend/contracts").ContractsOutputs["consent"]["showBanner"]["branding"];
33
33
  consents: import("c15t").ConsentState;
34
34
  selectedConsents: import("c15t").ConsentState;
35
- consentInfo: {
36
- time: number;
37
- type: "all" | "custom" | "necessary";
38
- } | null;
35
+ consentInfo: import("node_modules/c15t/dist/types").ConsentInfo | null;
39
36
  showPopup: boolean;
40
37
  isLoadingConsentInfo: boolean;
41
38
  hasFetchedBanner: boolean;
@@ -46,6 +43,7 @@ export declare function useConsentManager(): {
46
43
  locationInfo: import("c15t").LocationInfo | null;
47
44
  translationConfig: import("c15t").TranslationConfig;
48
45
  ignoreGeoLocation: boolean;
46
+ storageConfig?: import("c15t").StorageConfig;
49
47
  setTranslationConfig: (config: import("c15t").TranslationConfig) => void;
50
48
  includeNonDisplayedConsents: boolean;
51
49
  consentTypes: import("c15t").ConsentType[];
@@ -1 +1 @@
1
- {"version":3,"file":"use-consent-manager.d.ts","sourceRoot":"","sources":["../../src/hooks/use-consent-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB;;;;;;YAgB0P,CAAC;;cAAuF,6DAA4B,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;uCAAirF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAD9kG"}
1
+ {"version":3,"file":"use-consent-manager.d.ts","sourceRoot":"","sources":["../../src/hooks/use-consent-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB;;;;;;YAgBuQ,CAAC;;cAAuF,6DAA4B,cAAc;;;;;;;;;;;;;;;;;;;;;;;uCAAquF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAD/oG"}
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- "use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,a)=>{for(var n in a)__webpack_require__.o(a,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:a[n]})},__webpack_require__.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ConsentManagerProvider:()=>ConsentManagerProvider,clearConsentManagerCache:()=>clearConsentManagerCache});let jsx_runtime_namespaceObject=require("react/jsx-runtime"),external_c15t_namespaceObject=require("c15t"),external_react_namespaceObject=require("react"),consent_manager_context_cjs_namespaceObject=require("../context/consent-manager-context.cjs"),theme_context_cjs_namespaceObject=require("../context/theme-context.cjs"),use_color_scheme_cjs_namespaceObject=require("../hooks/use-color-scheme.cjs"),external_version_cjs_namespaceObject=require("../version.cjs"),storeCache=new Map,managerCache=new Map;function clearConsentManagerCache(){storeCache.clear(),managerCache.clear()}function generateCacheKey(e,a,n){return`${e}:${a??"default"}:${n?"custom":"none"}`}function ConsentManagerProvider({children:e,options:a}){let{mode:n,backendURL:t,store:r={},translations:c,react:o={}}=a,{initialGdprTypes:_,initialComplianceSettings:s}=r,{theme:i,disableAnimation:l=!1,scrollLock:p=!1,trapFocus:u=!0,colorScheme:m,noStyle:b=!1}=o,g=(0,external_react_namespaceObject.useMemo)(()=>"undefined"!=typeof window&&!!(("c15t"===n||"offline"===n)&&(t?.includes("c15t.dev")||t?.includes("c15t.cloud")||window.location.hostname.includes("c15t.dev")||window.location.hostname.includes("c15t.cloud"))),[n,t]),d=generateCacheKey(n||"c15t",t||"/api/c15t","endpointHandlers"in a?a.endpointHandlers:void 0),j=(0,external_react_namespaceObject.useMemo)(()=>{let e,c=managerCache.get(d);return c||(e="offline"===n?(0,external_c15t_namespaceObject.configureConsentManager)({mode:"offline",store:r}):"custom"===n&&"endpointHandlers"in a?(0,external_c15t_namespaceObject.configureConsentManager)({mode:"custom",endpointHandlers:a.endpointHandlers,store:r}):(0,external_c15t_namespaceObject.configureConsentManager)({mode:"c15t",backendURL:t||"/api/c15t",store:r}),managerCache.set(d,e),e)},[d,n,t,r,a]),x=(0,external_react_namespaceObject.useMemo)(()=>{let e=storeCache.get(d);if(e)return e;let t=(0,external_c15t_namespaceObject.createConsentManagerStore)(j,{unstable_googleTagManager:a.unstable_googleTagManager,config:{pkg:"@c15t/react",version:external_version_cjs_namespaceObject.version,mode:n||"Unknown"},ignoreGeoLocation:a.ignoreGeoLocation,initialGdprTypes:a.consentCategories,callbacks:a.callbacks,trackingBlockerConfig:a.trackingBlockerConfig,scripts:a.scripts,...r,isConsentDomain:g,initialTranslationConfig:c});return storeCache.set(d,t),t},[d,j,n,a.callbacks,a.unstable_googleTagManager,a.ignoreGeoLocation,a.consentCategories,a.trackingBlockerConfig,a.scripts,r,g,c]),[f,C]=(0,external_react_namespaceObject.useState)(()=>x?x.getState():{});(0,external_react_namespaceObject.useEffect)(()=>{if(x)return x.subscribe(C)},[x]),(0,external_react_namespaceObject.useEffect)(()=>{x&&C(x.getState())},[x]);let h=(0,external_react_namespaceObject.useMemo)(()=>({theme:i,noStyle:b,disableAnimation:l,scrollLock:p,trapFocus:u,colorScheme:m}),[i,b,l,p,u,m]);(0,use_color_scheme_cjs_namespaceObject.useColorScheme)(m);let k=(0,external_react_namespaceObject.useMemo)(()=>{if(!x)throw Error("Consent store must be initialized before creating context value");return{state:f,store:x,manager:j}},[f,x,j]);return(0,jsx_runtime_namespaceObject.jsx)(consent_manager_context_cjs_namespaceObject.ConsentStateContext.Provider,{value:k,children:(0,jsx_runtime_namespaceObject.jsx)(theme_context_cjs_namespaceObject.GlobalThemeContext.Provider,{value:h,children:e})})}for(var __webpack_i__ in exports.ConsentManagerProvider=__webpack_exports__.ConsentManagerProvider,exports.clearConsentManagerCache=__webpack_exports__.clearConsentManagerCache,__webpack_exports__)-1===["ConsentManagerProvider","clearConsentManagerCache"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__webpack_exports__[__webpack_i__]);Object.defineProperty(exports,"__esModule",{value:!0});
2
+ "use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,a)=>{for(var n in a)__webpack_require__.o(a,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:a[n]})},__webpack_require__.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{ConsentManagerProvider:()=>ConsentManagerProvider,clearConsentManagerCache:()=>clearConsentManagerCache});let jsx_runtime_namespaceObject=require("react/jsx-runtime"),external_c15t_namespaceObject=require("c15t"),external_react_namespaceObject=require("react"),consent_manager_context_cjs_namespaceObject=require("../context/consent-manager-context.cjs"),theme_context_cjs_namespaceObject=require("../context/theme-context.cjs"),use_color_scheme_cjs_namespaceObject=require("../hooks/use-color-scheme.cjs"),external_version_cjs_namespaceObject=require("../version.cjs"),storeCache=new Map,managerCache=new Map;function clearConsentManagerCache(){storeCache.clear(),managerCache.clear()}function generateCacheKey({mode:e,backendURL:a,endpointHandlers:n,storageConfig:t}){return`${e}:${a??"default"}:${n?"custom":"none"}:${t?.storageKey??"default"}`}function ConsentManagerProvider({children:e,options:a}){let{mode:n,backendURL:t,store:r={},translations:c,react:o={}}=a,{theme:_,disableAnimation:s=!1,scrollLock:i=!1,trapFocus:l=!0,colorScheme:g,noStyle:p=!1}=o,u=(0,external_react_namespaceObject.useMemo)(()=>"undefined"!=typeof window&&!!(("c15t"===n||"offline"===n)&&(t?.includes("c15t.dev")||t?.includes("c15t.cloud")||window.location.hostname.includes("c15t.dev")||window.location.hostname.includes("c15t.cloud"))),[n,t]),m=generateCacheKey({mode:n||"c15t",backendURL:t||"/api/c15t",endpointHandlers:"endpointHandlers"in a?a.endpointHandlers:void 0,storageConfig:a.storageConfig}),b=(0,external_react_namespaceObject.useMemo)(()=>{let e,c=managerCache.get(m);return c||(e="offline"===n?(0,external_c15t_namespaceObject.configureConsentManager)({mode:"offline",store:r,storageConfig:a.storageConfig}):"custom"===n&&"endpointHandlers"in a?(0,external_c15t_namespaceObject.configureConsentManager)({mode:"custom",endpointHandlers:a.endpointHandlers,store:r,storageConfig:a.storageConfig}):(0,external_c15t_namespaceObject.configureConsentManager)({mode:"c15t",backendURL:t||"/api/c15t",store:r,storageConfig:a.storageConfig}),managerCache.set(m,e),e)},[m,n,t,r,a]),d=(0,external_react_namespaceObject.useMemo)(()=>{let e=storeCache.get(m);if(e)return e;let t=(0,external_c15t_namespaceObject.createConsentManagerStore)(b,{unstable_googleTagManager:a.unstable_googleTagManager,config:{pkg:"@c15t/react",version:external_version_cjs_namespaceObject.version,mode:n||"Unknown"},ignoreGeoLocation:a.ignoreGeoLocation,initialGdprTypes:a.consentCategories,callbacks:a.callbacks,trackingBlockerConfig:a.trackingBlockerConfig,scripts:a.scripts,storageConfig:a.storageConfig,...r,isConsentDomain:u,initialTranslationConfig:c});return storeCache.set(m,t),t},[m,b,n,a.callbacks,a.unstable_googleTagManager,a.ignoreGeoLocation,a.consentCategories,a.trackingBlockerConfig,a.scripts,r,u,c,a.storageConfig]),[f,C]=(0,external_react_namespaceObject.useState)(()=>d?d.getState():{});(0,external_react_namespaceObject.useEffect)(()=>{if(d)return d.subscribe(C)},[d]),(0,external_react_namespaceObject.useEffect)(()=>{d&&C(d.getState())},[d]);let j=(0,external_react_namespaceObject.useMemo)(()=>({theme:_,noStyle:p,disableAnimation:s,scrollLock:i,trapFocus:l,colorScheme:g}),[_,p,s,i,l,g]);(0,use_color_scheme_cjs_namespaceObject.useColorScheme)(g);let x=(0,external_react_namespaceObject.useMemo)(()=>{if(!d)throw Error("Consent store must be initialized before creating context value");return{state:f,store:d,manager:b}},[f,d,b]);return(0,jsx_runtime_namespaceObject.jsx)(consent_manager_context_cjs_namespaceObject.ConsentStateContext.Provider,{value:x,children:(0,jsx_runtime_namespaceObject.jsx)(theme_context_cjs_namespaceObject.GlobalThemeContext.Provider,{value:j,children:e})})}for(var __webpack_i__ in exports.ConsentManagerProvider=__webpack_exports__.ConsentManagerProvider,exports.clearConsentManagerCache=__webpack_exports__.clearConsentManagerCache,__webpack_exports__)-1===["ConsentManagerProvider","clearConsentManagerCache"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__webpack_exports__[__webpack_i__]);Object.defineProperty(exports,"__esModule",{value:!0});
@@ -1 +1 @@
1
- {"version":3,"file":"consent-manager-provider.d.ts","sourceRoot":"","sources":["../../src/providers/consent-manager-provider.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAa5E;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAG/C;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,sBAAsB,CAAC,EACtC,QAAQ,EACR,OAAO,GACP,EAAE,2BAA2B,2CAgL7B"}
1
+ {"version":3,"file":"consent-manager-provider.d.ts","sourceRoot":"","sources":["../../src/providers/consent-manager-provider.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAa5E;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAG/C;AAmBD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,sBAAsB,CAAC,EACtC,QAAQ,EACR,OAAO,GACP,EAAE,2BAA2B,2CAsL7B"}
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- import*as e from"react/jsx-runtime";import*as n from"c15t";import*as o from"react";import*as t from"../context/consent-manager-context.js";import*as r from"../context/theme-context.js";import*as a from"../hooks/use-color-scheme.js";import*as i from"../version.js";let s=new Map,c=new Map;function l(){s.clear(),c.clear()}function g({children:l,options:g}){var u,d,m;let{mode:f,backendURL:p,store:C={},translations:M,react:k={}}=g,{initialGdprTypes:v,initialComplianceSettings:b}=C,{theme:h,disableAnimation:x=!1,scrollLock:w=!1,trapFocus:j=!0,colorScheme:S,noStyle:T=!1}=k,G=(0,o.useMemo)(()=>"undefined"!=typeof window&&!!(("c15t"===f||"offline"===f)&&(p?.includes("c15t.dev")||p?.includes("c15t.cloud")||window.location.hostname.includes("c15t.dev")||window.location.hostname.includes("c15t.cloud"))),[f,p]),H=(u=f||"c15t",d=p||"/api/c15t",m="endpointHandlers"in g?g.endpointHandlers:void 0,`${u}:${d??"default"}:${m?"custom":"none"}`),L=(0,o.useMemo)(()=>{let e,o=c.get(H);return o||(e="offline"===f?(0,n.configureConsentManager)({mode:"offline",store:C}):"custom"===f&&"endpointHandlers"in g?(0,n.configureConsentManager)({mode:"custom",endpointHandlers:g.endpointHandlers,store:C}):(0,n.configureConsentManager)({mode:"c15t",backendURL:p||"/api/c15t",store:C}),c.set(H,e),e)},[H,f,p,C,g]),B=(0,o.useMemo)(()=>{let e=s.get(H);if(e)return e;let o=(0,n.createConsentManagerStore)(L,{unstable_googleTagManager:g.unstable_googleTagManager,config:{pkg:"@c15t/react",version:i.version,mode:f||"Unknown"},ignoreGeoLocation:g.ignoreGeoLocation,initialGdprTypes:g.consentCategories,callbacks:g.callbacks,trackingBlockerConfig:g.trackingBlockerConfig,scripts:g.scripts,...C,isConsentDomain:G,initialTranslationConfig:M});return s.set(H,o),o},[H,L,f,g.callbacks,g.unstable_googleTagManager,g.ignoreGeoLocation,g.consentCategories,g.trackingBlockerConfig,g.scripts,C,G,M]),[E,P]=(0,o.useState)(()=>B?B.getState():{});(0,o.useEffect)(()=>{if(B)return B.subscribe(P)},[B]),(0,o.useEffect)(()=>{B&&P(B.getState())},[B]);let $=(0,o.useMemo)(()=>({theme:h,noStyle:T,disableAnimation:x,scrollLock:w,trapFocus:j,colorScheme:S}),[h,T,x,w,j,S]);(0,a.useColorScheme)(S);let _=(0,o.useMemo)(()=>{if(!B)throw Error("Consent store must be initialized before creating context value");return{state:E,store:B,manager:L}},[E,B,L]);return(0,e.jsx)(t.ConsentStateContext.Provider,{value:_,children:(0,e.jsx)(r.GlobalThemeContext.Provider,{value:$,children:l})})}export{g as ConsentManagerProvider,l as clearConsentManagerCache};
2
+ import*as e from"react/jsx-runtime";import*as o from"c15t";import*as n from"react";import*as t from"../context/consent-manager-context.js";import*as r from"../context/theme-context.js";import*as a from"../hooks/use-color-scheme.js";import*as i from"../version.js";let s=new Map,c=new Map;function g(){s.clear(),c.clear()}function l({children:g,options:l}){let{mode:f,backendURL:u,store:d={},translations:m,react:C={}}=l,{theme:p,disableAnimation:M=!1,scrollLock:k=!1,trapFocus:b=!0,colorScheme:v,noStyle:h=!1}=C,x=(0,n.useMemo)(()=>"undefined"!=typeof window&&!!(("c15t"===f||"offline"===f)&&(u?.includes("c15t.dev")||u?.includes("c15t.cloud")||window.location.hostname.includes("c15t.dev")||window.location.hostname.includes("c15t.cloud"))),[f,u]),w=function({mode:e,backendURL:o,endpointHandlers:n,storageConfig:t}){return`${e}:${o??"default"}:${n?"custom":"none"}:${t?.storageKey??"default"}`}({mode:f||"c15t",backendURL:u||"/api/c15t",endpointHandlers:"endpointHandlers"in l?l.endpointHandlers:void 0,storageConfig:l.storageConfig}),j=(0,n.useMemo)(()=>{let e,n=c.get(w);return n||(e="offline"===f?(0,o.configureConsentManager)({mode:"offline",store:d,storageConfig:l.storageConfig}):"custom"===f&&"endpointHandlers"in l?(0,o.configureConsentManager)({mode:"custom",endpointHandlers:l.endpointHandlers,store:d,storageConfig:l.storageConfig}):(0,o.configureConsentManager)({mode:"c15t",backendURL:u||"/api/c15t",store:d,storageConfig:l.storageConfig}),c.set(w,e),e)},[w,f,u,d,l]),H=(0,n.useMemo)(()=>{let e=s.get(w);if(e)return e;let n=(0,o.createConsentManagerStore)(j,{unstable_googleTagManager:l.unstable_googleTagManager,config:{pkg:"@c15t/react",version:i.version,mode:f||"Unknown"},ignoreGeoLocation:l.ignoreGeoLocation,initialGdprTypes:l.consentCategories,callbacks:l.callbacks,trackingBlockerConfig:l.trackingBlockerConfig,scripts:l.scripts,storageConfig:l.storageConfig,...d,isConsentDomain:x,initialTranslationConfig:m});return s.set(w,n),n},[w,j,f,l.callbacks,l.unstable_googleTagManager,l.ignoreGeoLocation,l.consentCategories,l.trackingBlockerConfig,l.scripts,d,x,m,l.storageConfig]),[S,T]=(0,n.useState)(()=>H?H.getState():{});(0,n.useEffect)(()=>{if(H)return H.subscribe(T)},[H]),(0,n.useEffect)(()=>{H&&T(H.getState())},[H]);let G=(0,n.useMemo)(()=>({theme:p,noStyle:h,disableAnimation:M,scrollLock:k,trapFocus:b,colorScheme:v}),[p,h,M,k,b,v]);(0,a.useColorScheme)(v);let L=(0,n.useMemo)(()=>{if(!H)throw Error("Consent store must be initialized before creating context value");return{state:S,store:H,manager:j}},[S,H,j]);return(0,e.jsx)(t.ConsentStateContext.Provider,{value:L,children:(0,e.jsx)(r.GlobalThemeContext.Provider,{value:G,children:g})})}export{l as ConsentManagerProvider,g as clearConsentManagerCache};
@@ -2,7 +2,7 @@
2
2
  * @packageDocumentation
3
3
  * Type definitions for the consent manager components.
4
4
  */
5
- import type { AllConsentNames, Callbacks, ConsentManagerOptions as CoreOptions, GTMConfiguration, Script, TrackingBlockerConfig, TranslationConfig } from 'c15t';
5
+ import type { AllConsentNames, Callbacks, ConsentManagerOptions as CoreOptions, GTMConfiguration, Script, StorageConfig, TrackingBlockerConfig, TranslationConfig } from 'c15t';
6
6
  import type { ReactNode } from 'react';
7
7
  import type { ConsentManagerDialogTheme } from '../components/consent-manager-dialog/theme';
8
8
  import type { ConsentManagerWidgetTheme } from '../components/consent-manager-widget/theme';
@@ -84,6 +84,16 @@ export type ConsentManagerOptions = CoreOptions & {
84
84
  * @deprecated This is deprecated and will be removed in the next major version. Use the new [ScriptLoader](https://c15t.com/docs/react/script-loader) instead.
85
85
  */
86
86
  trackingBlockerConfig?: TrackingBlockerConfig;
87
+ /**
88
+ * Storage configuration options
89
+ *
90
+ * @remarks
91
+ * Configure storage behavior through store options for better control
92
+ * and testability.
93
+ *
94
+ * @see {@link StorageConfig} for available options
95
+ */
96
+ storageConfig?: StorageConfig;
87
97
  };
88
98
  /**
89
99
  * Configuration options for the ConsentManagerProvider.
@@ -1 +1 @@
1
- {"version":3,"file":"consent-manager.d.ts","sourceRoot":"","sources":["../../src/types/consent-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACX,eAAe,EACf,SAAS,EACT,qBAAqB,IAAI,WAAW,EACpC,gBAAgB,EAChB,MAAM,EACN,qBAAqB,EACrB,iBAAiB,EACjB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B;;OAEG;IACH,KAAK,CAAC,EAAE,iBAAiB,GACxB,yBAAyB,GACzB,yBAAyB,CAAC;IAC3B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAE1C;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG;IACjD;;OAEG;IACH,KAAK,CAAC,EAAE,cAAc,CAAC;IAEvB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE1C;;;OAGG;IACH,yBAAyB,CAAC,EAAE,gBAAgB,CAAC;IAE7C;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAC;IAEtC;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;CAC9C,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC3C;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;OAGG;IACH,OAAO,EAAE,qBAAqB,CAAC;CAC/B"}
1
+ {"version":3,"file":"consent-manager.d.ts","sourceRoot":"","sources":["../../src/types/consent-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACX,eAAe,EACf,SAAS,EACT,qBAAqB,IAAI,WAAW,EACpC,gBAAgB,EAChB,MAAM,EACN,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B;;OAEG;IACH,KAAK,CAAC,EAAE,iBAAiB,GACxB,yBAAyB,GACzB,yBAAyB,CAAC;IAC3B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;IAE1C;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG;IACjD;;OAEG;IACH,KAAK,CAAC,EAAE,cAAc,CAAC;IAEvB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE1C;;;OAGG;IACH,yBAAyB,CAAC,EAAE,gBAAgB,CAAC;IAE7C;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,eAAe,EAAE,CAAC;IAEtC;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;OAGG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAE9C;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC3C;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;OAGG;IACH,OAAO,EAAE,qBAAqB,CAAC;CAC/B"}
package/dist/version.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_)=>{for(var r in _)__webpack_require__.o(_,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:_[r]})},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{version:()=>version});let version="1.7.1";for(var __webpack_i__ in exports.version=__webpack_exports__.version,__webpack_exports__)-1===["version"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__webpack_exports__[__webpack_i__]);Object.defineProperty(exports,"__esModule",{value:!0});
1
+ "use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,_)=>{for(var r in _)__webpack_require__.o(_,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:_[r]})},__webpack_require__.o=(e,_)=>Object.prototype.hasOwnProperty.call(e,_),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{version:()=>version});let version="1.8.0-canary-20251028143243";for(var __webpack_i__ in exports.version=__webpack_exports__.version,__webpack_exports__)-1===["version"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__webpack_exports__[__webpack_i__]);Object.defineProperty(exports,"__esModule",{value:!0});
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const version = "1.7.1";
1
+ export declare const version = "1.8.0-canary-20251028143243";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,UAAU,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,gCAAgC,CAAC"}
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- let e="1.7.1";export{e as version};
1
+ let e="1.8.0-canary-20251028143243";export{e as version};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c15t/react",
3
- "version": "1.7.1",
3
+ "version": "1.8.0-canary-20251028143243",
4
4
  "description": "Developer-first CMP for React: cookie banner, consent manager, preferences centre. GDPR ready with minimal setup and rich customization",
5
5
  "keywords": [
6
6
  "react",
@@ -92,11 +92,11 @@
92
92
  "@radix-ui/react-switch": "1.1.4",
93
93
  "clsx": "2.1.1",
94
94
  "zustand": "^5.0.3",
95
- "c15t": "1.7.1"
95
+ "c15t": "1.8.0-canary-20251028143243"
96
96
  },
97
97
  "devDependencies": {
98
98
  "genversion": "^3.2.0",
99
- "@c15t/backend": "1.7.1",
99
+ "@c15t/backend": "1.8.0-canary-20251028143243",
100
100
  "@c15t/typescript-config": "0.0.1-beta.1",
101
101
  "@c15t/vitest-config": "1.0.0"
102
102
  },