@daks.dev/svelte.sdk
Version:
DAKS.DEV Svelte SDK
37 lines (36 loc) • 1.11 kB
JavaScript
import { onMount } from 'nanostores';
import { persistentAtom, persistentMap } from '@nanostores/persistent';
export const meta = persistentMap('meta::', {}, {
encode: JSON.stringify,
decode: JSON.parse
});
export const settings = persistentMap('set::', {
sidebar: false,
theme: 'auto'
}, {
encode: JSON.stringify,
decode: JSON.parse
});
export const timer = persistentAtom('timer', 0, {
encode: (val) => (val ? `${val}` : '0'),
decode: (val) => (val ? parseInt(val) : 0)
});
onMount(timer, () => {
const interval = setInterval(() => {
timer.set(timer.get() + 1);
}, 1000);
return () => {
clearInterval(interval);
};
});
export const timerFormat = (s) => {
if (isNaN(s))
return '--:--';
const d = Math.floor(s / (3600 * 24));
const h = Math.floor((s % (3600 * 24)) / 3600);
const m = Math.floor((s % 3600) / 60);
s = Math.floor(s % 60);
return ((d ? `${d.toString()} - ` : '') +
(h ? `${h.toString().padStart(2, '0')}:` : '') +
`${m.toString().padStart(2, '0')}:${s.toString().padStart(2, '0')}`);
};