fixes and functions
This commit is contained in:
+15
-3
@@ -7,11 +7,15 @@
|
||||
* See LICENSE file in repository root for details.
|
||||
*/
|
||||
const STORAGE_KEY = "rustpad:theme";
|
||||
const DEFAULT_THEME = "dark";
|
||||
const THEMES = new Set(["dark", "light"]);
|
||||
const systemThemeQuery = window.matchMedia("(prefers-color-scheme: light)");
|
||||
|
||||
function systemTheme() {
|
||||
return systemThemeQuery.matches ? "light" : "dark";
|
||||
}
|
||||
|
||||
function normalizeTheme(value) {
|
||||
return THEMES.has(value) ? value : DEFAULT_THEME;
|
||||
return THEMES.has(value) ? value : systemTheme();
|
||||
}
|
||||
|
||||
function updateBrowserChrome(theme) {
|
||||
@@ -42,5 +46,13 @@ export function applySessionTheme(session) {
|
||||
}
|
||||
|
||||
window.addEventListener("storage", event => {
|
||||
if (event.key === STORAGE_KEY && event.newValue) applyTheme(event.newValue, { persist: false });
|
||||
if (event.key !== STORAGE_KEY) return;
|
||||
applyTheme(THEMES.has(event.newValue) ? event.newValue : systemTheme(), { persist: false });
|
||||
});
|
||||
|
||||
systemThemeQuery.addEventListener("change", () => {
|
||||
try {
|
||||
if (THEMES.has(localStorage.getItem(STORAGE_KEY))) return;
|
||||
} catch { }
|
||||
applyTheme(systemTheme(), { persist: false });
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user