@aotearoan/neon
Version:
Neon is a lightweight design library of Vue 3 components with minimal dependencies.
64 lines (63 loc) • 2.56 kB
JavaScript
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