{"mappings":";AAGA,SAASA,EAAgBC,EAAQC,EAAY,CACrC,OAAO,OAAW,KAClB,OAAO,cAAc,QAAQA,EAAYD,CAAM,EAE/C,OAAO,SAAa,MACpB,SAAS,OAAS,GAAGC,CAAU,IAAID,CAAM,4CAEjD,CAoBO,SAASE,EAAeF,EAAQC,EAAa,uBAAwB,CACxE,GAAI,OAAO,OAAW,KAAe,OAAO,SAAa,IACrD,OAGJF,EAAgBC,EAAQC,CAAU,EAElC,IAAME,EAAiBH,IAAW,SAC5B,OAAO,WAAW,8BAA8B,EAAE,QAC9C,OACA,QACJA,EAEN,SAAS,gBAAgB,QAAQ,YAAcG,EAE/C,SAAS,cAAc,IAAI,MAAM,sBAAsB,CAAC,CAC5D,CC7CA,IAAMC,EAAqB,CAAC,kBAAkB,EAQ9C,SAASC,GAAuB,CAC5B,GAAI,SAAO,OAAW,KAEtB,OAAO,OAAO,SAAS,MAAM,MAAM,+BAA+B,IAAI,CAAC,CAC3E,CAQA,SAASC,GAAwB,CAC7B,OAAI,OAAO,OAAW,IACX,KACJ,IAAI,gBAAgB,OAAO,SAAS,MAAM,GAAG,IAAI,sBAAsB,CAClF,CAQA,SAASC,GAAsB,CAC3B,GAAI,SAAO,OAAW,KAAe,OAAO,UAAc,KAE1D,MAAO,SAAS,KAAK,UAAU,SAAS,EAAI,SAAW,MAC3D,CASA,SAASC,EAAoBC,EAAY,CACrC,GAAI,SAAO,SAAa,KAExB,OAAO,SAAS,QACV,MAAM,IAAI,EACX,KAAMC,GAAQA,EAAI,WAAW,GAAGD,CAAU,GAAG,CAAC,GAC7C,MAAM,GAAG,IAAI,CAAC,CACxB,CASA,SAASE,GAAmC,CACxC,GAAI,OAAO,OAAW,IAClB,OAEJ,IAAMC,EAAcR,EAAmB,KAAMS,GAAQ,OAAO,cAAc,QAAQA,CAAG,IAAM,IAAI,EAC/F,GAAKD,EAEL,GAAI,CACA,IAAME,EAAuB,OAAO,cAAc,QAAQF,CAAW,EACrE,GAAI,CAACE,EACD,OAEJ,IAAMC,EADW,KAAK,MAAMD,CAAoB,GAChB,UAAU,MAC1C,GAAIC,IAAkB,KAClB,MAAO,SACX,GAAIA,IAAkB,QAAUA,IAAkB,GAC9C,MAAO,OACX,GAAIA,IAAkB,SAAWA,IAAkB,GAC/C,MAAO,OACf,MACM,CAEN,CACJ,CAQA,SAASC,EAA0BP,EAAY,CAC3C,OAAI,OAAO,OAAW,IACX,KACJ,OAAO,cAAc,QAAQA,CAAU,CAClD,CASO,SAASQ,EAAyBR,EAAa,uBAAwB,CAU1E,MARmB,CACfJ,EAAqB,EACrBC,EAAsB,EACtBC,EAAoB,EACpBI,EAAiC,EACjCH,EAAoBC,CAAU,EAC9BO,EAA0BP,CAAU,CACxC,EAAE,KAAMS,GAAMA,GAAM,IAAuB,GACtB,QACzB,CASO,SAASC,EAAeV,EAAa,uBAAwB,CAChE,IAAMW,EAAaH,EAAyBR,CAAU,EACtD,OAAIW,IAAe,QAAUA,IAAe,QACjCA,EAEPA,IAAe,UACX,OAAO,OAAW,KAClB,OAAO,WAAW,8BAA8B,EAAE,QAC3C,OAIR,OACX,CC/HO,SAASC,EAAmBC,EAAoB,CACnD,GAAI,OAAO,OAAW,KAAe,OAAO,SAAa,IACrD,MAAO,IAAM,CAAE,EAGnB,SAAS,gBAAgB,QAAQ,YAC7BC,EAAeD,CAAkB,EAErC,IAAME,EAAc,OAAO,WAAW,8BAA8B,EAC9DC,EAAoB,IAAM,CAC5B,SAAS,gBAAgB,QAAQ,YAC7BF,EAAeD,CAAkB,EACrC,SAAS,cAAc,IAAI,MAAM,sBAAsB,CAAC,CAC5D,EAEA,OAAAE,EAAY,iBAAiB,SAAUC,CAAiB,EAEjD,IAAM,CACTD,EAAY,oBAAoB,SAAUC,CAAiB,CAC/D,CACJ","names":["saveColorScheme","scheme","storageKey","setColorScheme","resolvedScheme","USER_SETTINGS_KEYS","getUrlHashPreference","getUrlQueryPreference","getHermesPreference","getCookiePreference","storageKey","row","getUserAccountSettingsPreference","existingKey","key","localStorageSettings","darkmodeValue","getLocalStoragePreference","getColorSchemePreference","p","getColorScheme","preference","initializeDarkMode","darkmodeStorageKey","getColorScheme","prefersDark","handlePreferences"],"sources":["../esm/npm/@schibsted/dark-mode@0.0.8/node_modules/@schibsted/dark-mode/dist/actions.js","../esm/npm/@schibsted/dark-mode@0.0.8/node_modules/@schibsted/dark-mode/dist/preferences.js","../esm/npm/@schibsted/dark-mode@0.0.8/node_modules/@schibsted/dark-mode/dist/initialize.js"],"sourcesContent":["/**\n * Save color scheme to localStorage and cookie (internal function)\n */\nfunction saveColorScheme(scheme, storageKey) {\n    if (typeof window !== \"undefined\") {\n        window.localStorage?.setItem(storageKey, scheme);\n    }\n    if (typeof document !== \"undefined\") {\n        document.cookie = `${storageKey}=${scheme}; path=/; max-age=31536000; SameSite=Lax;`;\n    }\n}\n/**\n * Set a specific color scheme\n * Saves the preference and updates the UI immediately\n * @param scheme The color scheme to set: \"light\", \"dark\", or \"system\"\n * @param storageKey Use specified key when storing in local storage and cookie. Default is \"prefers-color-scheme\"\n * @example\n * // Set to dark mode\n * setColorScheme('dark');\n *\n * // Set to dark-mode with other key\n * setColorScheme('dark', 'svd-theme');\n *\n * // Set to light mode\n * setColorScheme('light');\n *\n * // Set to follow system preference\n * setColorScheme('system');\n *\n */\nexport function setColorScheme(scheme, storageKey = \"prefers-color-scheme\") {\n    if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n        return;\n    }\n    // Save the preference\n    saveColorScheme(scheme, storageKey);\n    // Get the resolved scheme (in case \"system\" was passed)\n    const resolvedScheme = scheme === \"system\"\n        ? window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n            ? \"dark\"\n            : \"light\"\n        : scheme;\n    // Update the UI immediately\n    document.documentElement.dataset.colorScheme = resolvedScheme;\n    // Dispatch event to notify listeners\n    document.dispatchEvent(new Event(\"prefers-color-scheme\"));\n}\n","// User settings keys to check - only used by VG for now\nconst USER_SETTINGS_KEYS = [\"VG_USER_SETTINGS\"];\n/**\n * Get color scheme preference from URL hash fragment\n * @returns The color scheme preference from URL hash (e.g., #prefers-color-scheme=dark) or undefined if not found\n * @example\n * // URL: https://example.com/#prefers-color-scheme=dark\n * getUrlHashPreference() // returns \"dark\"\n */\nfunction getUrlHashPreference() {\n    if (typeof window === \"undefined\")\n        return undefined;\n    return window.location.hash?.match(/prefers-color-scheme=([a-z]+)/)?.[1];\n}\n/**\n * Get color scheme preference from URL query parameters\n * @returns The color scheme preference from URL query parameter or null if not found\n * @example\n * // URL: https://example.com/?prefers-color-scheme=light\n * getUrlQueryPreference() // returns \"light\"\n */\nfunction getUrlQueryPreference() {\n    if (typeof window === \"undefined\")\n        return null;\n    return new URLSearchParams(window.location.search)?.get(\"prefers-color-scheme\");\n}\n/**\n * Get color scheme preference from Hermes user agent\n * @returns \"system\" if Hermes user agent is detected, undefined otherwise\n * @example\n * // Schibsted ios \u0026 Android apps use Hermes user agent\n * getHermesPreference() // returns \"system\"\n */\nfunction getHermesPreference() {\n    if (typeof window === \"undefined\" || typeof navigator === \"undefined\")\n        return undefined;\n    return /Hermes/.test(navigator.userAgent) ? \"system\" : undefined;\n}\n/**\n * Get color scheme preference from cookie\n * @returns The color scheme preference from cookie or undefined if not found\n * @example\n * // Cookie: prefers-color-scheme=dark\n * getCookiePreference() // returns \"dark\"\n * getCookiePreference('svd-theme') // returns value based on passed storage key\n */\nfunction getCookiePreference(storageKey) {\n    if (typeof document === \"undefined\")\n        return undefined;\n    return document.cookie\n        ?.split(\"; \")\n        .find((row) =\u003e row.startsWith(`${storageKey}=`))\n        ?.split(\"=\")?.[1];\n}\n/**\n * Get color scheme preference from user account settings\n * Automatically checks all known user account settings keys\n * @returns The color scheme preference from account settings or undefined if not found\n * @example\n * // localStorage VG_USER_SETTINGS: {\"darkmode\": {\"value\": \"true\"}}\n * getUserAccountSettingsPreference() // returns \"dark\"\n */\nfunction getUserAccountSettingsPreference() {\n    if (typeof window === \"undefined\")\n        return undefined;\n    // Find the first user settings key that exists in localStorage\n    const existingKey = USER_SETTINGS_KEYS.find((key) =\u003e window.localStorage?.getItem(key) !== null);\n    if (!existingKey)\n        return;\n    try {\n        const localStorageSettings = window.localStorage?.getItem(existingKey);\n        if (!localStorageSettings)\n            return;\n        const settings = JSON.parse(localStorageSettings);\n        const darkmodeValue = settings?.darkmode?.value;\n        if (darkmodeValue === \"os\")\n            return \"system\";\n        if (darkmodeValue === \"true\" || darkmodeValue === true)\n            return \"dark\";\n        if (darkmodeValue === \"false\" || darkmodeValue === false)\n            return \"light\";\n    }\n    catch {\n        // If parsing fails, return undefined\n    }\n}\n/**\n * Get color scheme preference from local storage\n * @returns The color scheme preference from localStorage or null if not found\n * @example\n * // localStorage.getItem('prefers-color-scheme') === 'dark'\n * getLocalStoragePreference() // returns \"dark\"\n */\nfunction getLocalStoragePreference(storageKey) {\n    if (typeof window === \"undefined\")\n        return null;\n    return window.localStorage?.getItem(storageKey);\n}\n/**\n * Get the current color scheme preference without resolving system preference\n * Checks preferences in order: URL hash, URL query, Hermes user agent, user account settings, cookie, localStorage, then defaults to light\n * @param storageKey Use specified key when reading from local storage and cookie. Default is \"prefers-color-scheme\"\n * @returns The raw color scheme preference: \"light\", \"dark\", or \"system\"\n * @example\n * getColorSchemePreference() // returns \"dark\", \"light\", or \"system\"\n */\nexport function getColorSchemePreference(storageKey = \"prefers-color-scheme\") {\n    // Choose color scheme from url, user account settings, cookie or local storage\n    const preference = [\n        getUrlHashPreference(), // URL fragment\n        getUrlQueryPreference(), // URL query parameter\n        getHermesPreference(), // Hermes decides\n        getUserAccountSettingsPreference(), // User account settings (auto-detected)\n        getCookiePreference(storageKey), // Cookie\n        getLocalStoragePreference(storageKey), // Local storage\n    ].find((p) =\u003e p !== null \u0026\u0026 p !== undefined);\n    return preference || \"system\";\n}\n/**\n * Get the current color scheme based on preferences\n * Checks preferences in order: URL hash, URL query, Hermes user agent, user account settings, cookie, localStorage, then defaults to light\n * @param storageKey Use specified key when reading from local storage and cookie. Default is \"prefers-color-scheme\"\n * @returns The resolved color scheme: \"light\" or \"dark\"\n * @example\n * getColorScheme() // returns \"dark\" or \"light\"\n */\nexport function getColorScheme(storageKey = \"prefers-color-scheme\") {\n    const preference = getColorSchemePreference(storageKey);\n    if (preference === \"dark\" || preference === \"light\") {\n        return preference;\n    }\n    if (preference === \"system\") {\n        if (typeof window !== \"undefined\" \u0026\u0026\n            window.matchMedia(\"(prefers-color-scheme: dark)\").matches) {\n            return \"dark\";\n        }\n        return \"light\";\n    }\n    return \"light\";\n}\n","import { getColorScheme } from \"./preferences.js\";\n/**\n * Initialize dark mode functionality\n * Sets the initial color scheme on document.documentElement.dataset.colorScheme\n * Listens for system preference changes and updates accordingly\n * Dispatches \"prefers-color-scheme\" event when scheme changes\n * @returns A cleanup function to remove event listeners\n * @example\n * const cleanup = initializeDarkMode();\n * // Later, when component unmounts or cleanup is needed:\n * cleanup();\n */\nexport function initializeDarkMode(darkmodeStorageKey) {\n    if (typeof window === \"undefined\" || typeof document === \"undefined\") {\n        return () =\u003e { };\n    }\n    // Set initial color scheme\n    document.documentElement.dataset.colorScheme =\n        getColorScheme(darkmodeStorageKey);\n    // Listen for system preference changes\n    const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\");\n    const handlePreferences = () =\u003e {\n        document.documentElement.dataset.colorScheme =\n            getColorScheme(darkmodeStorageKey);\n        document.dispatchEvent(new Event(\"prefers-color-scheme\"));\n    };\n    // Listen for system preference changes\n    prefersDark.addEventListener(\"change\", handlePreferences);\n    // Return cleanup function\n    return () =\u003e {\n        prefersDark.removeEventListener(\"change\", handlePreferences);\n    };\n}\n"],"version":3}
