@c15t/react
Version:
Developer-first CMP for React: cookie banner, consent manager, preferences centre. GDPR ready with minimal setup and rich customization
1 lines • 4.19 kB
JavaScript
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 external_vitest_namespaceObject=require("vitest"),external_vitest_browser_react_namespaceObject=require("vitest-browser-react"),external_use_color_scheme_cjs_namespaceObject=require("../use-color-scheme.cjs");for(var __webpack_i__ in(0,external_vitest_namespaceObject.describe)("useColorScheme",()=>{let e,t,c;(0,external_vitest_namespaceObject.beforeEach)(()=>{document.documentElement.classList.remove("c15t-dark","dark"),e={matches:!1,addEventListener:external_vitest_namespaceObject.vi.fn(),removeEventListener:external_vitest_namespaceObject.vi.fn(),addListener:external_vitest_namespaceObject.vi.fn(),removeListener:external_vitest_namespaceObject.vi.fn(),dispatchEvent:external_vitest_namespaceObject.vi.fn(),onchange:null,media:"(prefers-color-scheme: dark)"},external_vitest_namespaceObject.vi.spyOn(window,"matchMedia").mockImplementation(()=>e),t=external_vitest_namespaceObject.vi.spyOn(e,"addEventListener"),c=external_vitest_namespaceObject.vi.spyOn(e,"removeEventListener")}),(0,external_vitest_namespaceObject.afterEach)(()=>{external_vitest_namespaceObject.vi.restoreAllMocks()}),(0,external_vitest_namespaceObject.test)("sets light theme correctly",()=>{(0,external_vitest_browser_react_namespaceObject.renderHook)(()=>(0,external_use_color_scheme_cjs_namespaceObject.useColorScheme)("light")),(0,external_vitest_namespaceObject.expect)(document.documentElement.classList.contains("c15t-dark")).toBe(!1)}),(0,external_vitest_namespaceObject.test)("sets dark theme correctly",()=>{(0,external_vitest_browser_react_namespaceObject.renderHook)(()=>(0,external_use_color_scheme_cjs_namespaceObject.useColorScheme)("dark")),(0,external_vitest_namespaceObject.expect)(document.documentElement.classList.contains("c15t-dark")).toBe(!0)}),(0,external_vitest_namespaceObject.test)("responds to system preference",()=>{e.matches=!0,(0,external_vitest_browser_react_namespaceObject.renderHook)(()=>(0,external_use_color_scheme_cjs_namespaceObject.useColorScheme)("system")),(0,external_vitest_namespaceObject.expect)(document.documentElement.classList.contains("c15t-dark")).toBe(!0),(0,external_vitest_namespaceObject.expect)(t).toHaveBeenCalledWith("change",external_vitest_namespaceObject.expect.any(Function))}),(0,external_vitest_namespaceObject.test)("cleans up system preference listener on unmount",()=>{let{unmount:e}=(0,external_vitest_browser_react_namespaceObject.renderHook)(()=>(0,external_use_color_scheme_cjs_namespaceObject.useColorScheme)("system"));e(),(0,external_vitest_namespaceObject.expect)(c).toHaveBeenCalled()}),(0,external_vitest_namespaceObject.test)("updates theme when system preference changes",()=>{(0,external_vitest_browser_react_namespaceObject.renderHook)(()=>(0,external_use_color_scheme_cjs_namespaceObject.useColorScheme)("system"));let e=t.mock.calls,c=e[0]?.[1];if(!c)throw Error("Callback not found");c({matches:!0}),(0,external_vitest_namespaceObject.expect)(document.documentElement.classList.contains("c15t-dark")).toBe(!0)}),(0,external_vitest_namespaceObject.test)("handles default theme based on document class",()=>{document.documentElement.classList.add("dark"),(0,external_vitest_browser_react_namespaceObject.renderHook)(()=>(0,external_use_color_scheme_cjs_namespaceObject.useColorScheme)(null)),(0,external_vitest_namespaceObject.expect)(document.documentElement.classList.contains("c15t-dark")).toBe(!0)}),(0,external_vitest_namespaceObject.test)("updates theme when default theme changes",async()=>{(0,external_vitest_browser_react_namespaceObject.renderHook)(()=>(0,external_use_color_scheme_cjs_namespaceObject.useColorScheme)(null)),document.documentElement.classList.add("dark"),await new Promise(e=>setTimeout(e,0)),(0,external_vitest_namespaceObject.expect)(document.documentElement.classList.contains("c15t-dark")).toBe(!0)})}),__webpack_exports__)exports[__webpack_i__]=__webpack_exports__[__webpack_i__];Object.defineProperty(exports,"__esModule",{value:!0});
;