UNPKG

@aotearoan/neon

Version:

Neon is a lightweight design library of Vue 3 components with minimal dependencies.

64 lines (63 loc) 2.56 kB
var r = Object.defineProperty; var d = (c, a, s) => a in c ? r(c, a, { enumerable: !0, configurable: !0, writable: !0, value: s }) : c[a] = s; var i = (c, a, s) => d(c, typeof a != "symbol" ? a + "" : a, s); import { NeonMode as t } from "../../../model/common/color/NeonMode.es.js"; const e = class e { /** * Set the initial mode. * * @param defaultMode The initial mode to set * @param callback An optional callback to be triggered when using NeonMode.System indicating changes in the current * light/dark mode set internally by this class. */ static init(a, s) { a && (e.defaultMode = a, e.mode = a), s && (e.callback = s), e.switchMode(e.mode), window.matchMedia && (window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", e.onDarkChange), window.matchMedia("(prefers-color-scheme: light)").addEventListener("change", e.onLightChange)); } /** * Remove system listeners * */ static destroy() { window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change", e.onDarkChange), window.matchMedia("(prefers-color-scheme: light)").removeEventListener("change", e.onLightChange); } /** * Switch the current mode. * @param mode the mode to switch to. */ static switchMode(a) { switch (e.mode = a, a) { case t.Light: e.updateClasses(!1); break; case t.Dark: e.updateClasses(!0); break; case t.System: window.matchMedia("(prefers-color-scheme: dark)").matches ? (e.updateClasses(!0), e.callback && e.callback(!0)) : window.matchMedia("(prefers-color-scheme: light)").matches ? (e.updateClasses(!1), e.callback && e.callback(!1)) : (e.updateClasses(e.defaultMode === t.Dark), e.callback && e.callback(e.defaultMode === t.Dark)); break; } } /** * Get the current mode. * * @returns The current user light or dark mode. */ static getMode() { return e.mode; } static onDarkChange(a) { e.mode === t.System && a.matches && (e.updateClasses(!0), e.callback && e.callback(!0)); } static onLightChange(a) { e.mode === t.System && a.matches && (e.updateClasses(!1), e.callback && e.callback(!1)); } static updateClasses(a) { document.documentElement.classList.remove(`neon-mode--${a ? t.Light : t.Dark}`), document.documentElement.classList.add(`neon-mode--${a ? t.Dark : t.Light}`); } }; i(e, "defaultMode", t.Light), i(e, "mode", t.Light), i(e, "callback", null); let l = e; export { l as NeonModeUtils }; //# sourceMappingURL=NeonModeUtils.es.js.map