UNPKG

@set-state/core

Version:

state management in less than 1 Kb

3 lines (2 loc) 2.08 kB
var e=Symbol("set-state"),n=Symbol("set-state:end"),t=Symbol("set-state:guard"),r=Symbol("set-state:node"),u=function(e){return"function"==typeof e},o=function(e){return u(e)&&e.is===r},a=function(e){return o(e)&&e.sealed===t},i=function(e){return o(e)&&e.compute===n},c=function(e){var n=e.value;e.value=e.compute(),n!==e.value&&Array.from(e.listeners).forEach(function(t){return t(e.value,n)})},d=function(e,n){Array.from(e.dependencies).forEach(function(t){if("add"===n&&t.dependencies.has(e))throw new ReferenceError("circular reference created.");t.dependents[n](e)})},f=function(e){var n=e.state.updating;n.has(e)&&n.delete(e),n.add(e),Array.from(e.dependents).forEach(f)},s=0;function l(l,p){void 0===p&&(p=[]);var v=!1,m=new Set,S=new Set,y=l||s++,h=new Set(p),w=function(e){if(o(e))return e;var s=function(e){if(v&&m.add(s),i(s)||a(s))return s.value;if(void 0!==e){if(e===s.value)return s;if(e===t)return s.sealed=t,s;if(d(s,"delete"),s.dependencies.clear(),e===n)return s.compute=n,s;s.compute=function(){return e},u(e)?(s.compute=e,v=!0,m.clear(),c(s),m.delete(s),s.dependencies=new Set(m),v=!1,d(s,"add")):c(s),S.clear(),Array.from(s.dependents).forEach(f),Array.from(S).forEach(c)}return s.value};return s.locals={},s.state=w,s.is=r,s.context=y,s.listeners=new Set,s.dependents=new Set,s.dependencies=new Set,s.on=function(e,n){var t=u(e)?e:e[n].bind(e);return s.listeners.add(t),function(){return s.listeners.delete(t)}},s.seal=function(){return s(t)},s.freeze=s.end=function(){return s(n)},s.valueOf=s.toString=function(){return s.value},Array.from(h).forEach(function(e){return e(s)}),s(e),s};return w.use=function(e){return h.add(e),w},w.isOwnNode=function(e){return o(e)&&w.context===e.context},w.plugins=h,w.updating=S,w.capturing=m,w.is=e,w.of=w,w.END=n,w.GUARD=t,w.isNode=o,w.freeze=w.end=function(e){return w(e).end()},w.seal=function(e){return w(e).seal()},w.isSealed=a,w.isFrozen=w.isFinished=i,w.context=y,w}l.isState=function(n){return u(n)&&n.is===e};var p=l.state=l("set-state:core");export default l;export{p as state}; //# sourceMappingURL=core.m.js.map