UNPKG

@aotearoan/neon

Version:

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

69 lines (68 loc) 2.6 kB
var h = Object.defineProperty; var s = (c, a, t) => a in c ? h(c, a, { enumerable: !0, configurable: !0, writable: !0, value: t }) : c[a] = t; var r = (c, a, t) => (s(c, typeof a != "symbol" ? a + "" : a, t), t); import { NeonMode as n } from "../enums/NeonMode.es.js"; const e = class e { /** * Get the current mode. * * @returns The current user light or dark mode. */ static getMode() { return e.mode; } /** * Set the initial mode. * * @param defaultMode The mode to set. If no mode is passed in the user preferences are used. */ static init(a) { if (a) e.defaultMode = a, e.mode = e.defaultMode; else { const t = window.matchMedia("(prefers-color-scheme: dark)").matches, i = window.matchMedia("(prefers-color-scheme: light)").matches; t ? e.mode = n.Dark : i ? e.mode = n.Light : e.mode = e.defaultMode; } } /** * Add a callback to listen to mode changes made by the user. * * @param key The unique key for the listener. * @param callback The callback function. */ static addListener(a, t) { window.matchMedia && (Object.keys(e.callbacks).length === 0 && (window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", e.onDarkChange), window.matchMedia("(prefers-color-scheme: light)").addEventListener("change", e.onLightChange), window.matchMedia("(prefers-color-scheme: no-preference)").addEventListener("change", e.onNoPreferenceChange)), e.callbacks[a] = t, t(e.mode || e.defaultMode)); } /** * Remove a callback listener. * * @param key The unique key for the listener. */ static removeListener(a) { delete e.callbacks[a], Object.keys(e.callbacks).length === 0 && window.matchMedia && (window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change", e.onDarkChange), window.matchMedia("(prefers-color-scheme: light)").removeEventListener("change", e.onLightChange), window.matchMedia("(prefers-color-scheme: no-preference)").removeEventListener("change", e.onNoPreferenceChange)); } static getCallbacks() { return e.callbacks; } static onDarkChange(a) { e.onChange(a, n.Dark); } static onLightChange(a) { e.onChange(a, n.Light); } static onNoPreferenceChange(a) { e.onChange(a, e.defaultMode); } static onChange(a, t) { a.matches && e.handleChange(t); } static handleChange(a) { Object.values(e.callbacks).forEach((t) => t(a)); } }; r(e, "callbacks", {}), r(e, "defaultMode", n.Dark), r(e, "mode", null); let o = e; export { o as NeonModeUtils }; //# sourceMappingURL=NeonModeUtils.es.js.map