@blabbing/signals
Version:
A reactive state management tool
2 lines (1 loc) • 881 B
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("signal-polyfill");let e=null;const i=()=>{e=[]},s=t=>{e.forEach(o=>o(t)),e=null},l=t=>(...r)=>{if(e!==null)throw new Error("Actions cannot be used inside other actions.");try{i();const n=t(...r);return s(!0),n}catch(n){throw s(!1),n}},u=t=>Object.defineProperties({},{_s:{value:new a.Signal.State(t)},_c:{value:new a.Signal.State(t)}}),g=t=>Object.defineProperties({},{_s:{value:new a.Signal.Computed(t)},_c:{value:new a.Signal.Computed(t)}}),d=t=>e===null?t._c.get():t._s.get(),f=(t,o)=>{const{_s:r,_c:n}=t;if(e===null)throw new Error("Atoms can only be updated in an action().");r.set(o),e.push(c=>{c?n.set(o):r.set(n.get())})};Object.defineProperty(exports,"Signal",{enumerable:!0,get:()=>a.Signal});exports.action=l;exports.atom=u;exports.computed=g;exports.get=d;exports.swap=f;