UNPKG

@daks.dev/svelte.sdk

Version:
37 lines (36 loc) 1.11 kB
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')}`); };