@codedoc/core
Version:
Create beautiful modern documentation websites.
47 lines • 2.07 kB
JavaScript
import { transport } from '@connectv/sdh/transport';
import { state, sink } from '@connectv/core';
import { DarkModeSwitchStyle } from './style';
import { switchMode, Mode } from './mode';
import { systemMode } from './system';
export function DarkModeSwitch(_, renderer) {
const classes = this.theme.classes(DarkModeSwitchStyle);
const sysMode = systemMode();
const runningMode = state();
let storageLoaded = false;
sysMode.to(runningMode);
this.track(runningMode.to(sink(mode => {
if (mode === Mode.Light)
document.body.classList.remove('dark');
else
document.body.classList.add('dark');
if (storageLoaded) {
if (mode !== sysMode.value)
localStorage.setItem('dark-mode', (mode === Mode.Light) ? 'false' : 'true');
else
localStorage.removeItem('dark-mode');
}
})));
this.track({
bind() {
if (localStorage.getItem('dark-mode'))
runningMode.value = localStorage.getItem('dark-mode') === 'true' ? Mode.Dark : Mode.Light;
document.body.classList.add('dark-mode-animate');
storageLoaded = true;
}
});
return renderer.create("div", { class: classes.dmSwitch, onclick: () => runningMode.value = switchMode(runningMode.value) },
renderer.create("div", { class: "arc" }),
renderer.create("div", { class: "darc" }),
renderer.create("div", { class: "ray one" }),
renderer.create("div", { class: "ray two" }),
renderer.create("div", { class: "ray three" }),
renderer.create("div", { class: "ray four" }),
renderer.create("div", { class: "ray five" }),
renderer.create("div", { class: "ray six" }),
renderer.create("div", { class: "ray seven" }),
renderer.create("div", { class: "ray eight" }));
}
export const DarkModeSwitch$ = /*#__PURE__*/ transport(DarkModeSwitch);
export * from './darklight';
export { DarkModeSwitchStyle } from './style';
//# sourceMappingURL=index.js.map