From b75d1175a58bf1f3ca1dd3aa131ade968c86137c Mon Sep 17 00:00:00 2001 From: natxocc Date: Wed, 8 Apr 2026 11:48:04 +0200 Subject: [PATCH] Add signal persist --- sw.js | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/sw.js b/sw.js index 94061c9..c350d64 100644 --- a/sw.js +++ b/sw.js @@ -50,18 +50,30 @@ const track = (subs) => { } // --- Signals Core --- -export const signal = (value) => { +export const signal = (value, key = null) => { const subs = new Set(); - return { + const storage = typeof localStorage !== 'undefined'; + + if (key && storage) { + const saved = localStorage.getItem(key); + if (saved !== null) try { value = JSON.parse(saved); } catch {} + } + + const sig = { + _isSig: true, get value() { track(subs); return value; }, - set value(newValue) { - if (newValue === value) return; - value = newValue; + set value(v) { + if (v === value) return; + value = v; subs.forEach(fn => queue.add(fn)); if (!isScheduled) { isScheduled = true; queueMicrotask(tick); } } - } -} + }; + + if (key && storage) effect(() => localStorage.setItem(key, JSON.stringify(sig.value))); + + return sig; +}; export const untrack = (fn) => { const prev = activeEffect;