UNPKG

jotai

Version:

👻 Next gen state management that will spook you

2 lines (1 loc) • 7.13 kB
System.register(["react"],function(R){"use strict";var J,K,z,Q,U,W,X,Y,Z;return{setters:[function(m){J=m.createContext,K=m.useState,z=m.useEffect,Q=m.useRef,U=m.createElement,W=m.useContext,X=m.useReducer,Y=m.useDebugValue,Z=m.useCallback}],execute:function(){R({atom:ve,useAtom:we,useAtomValue:se,useSetAtom:ce});const m=Symbol(),ee=i=>!!i[m],fe=i=>!i[m].c,T=i=>{var u;const{b:l,c:a}=i[m];a&&(a(),(u=ne.get(l))==null||u())},O=(i,u)=>{const l=i[m].o,a=u[m].o;return l===a||i===a||ee(l)&&O(l,u)},te=(i,u)=>{const l={b:i,o:u,c:null},a=new Promise(d=>{l.c=()=>{l.c=null,d()},u.finally(l.c)});return a[m]=l,a},ne=new WeakMap,Pe=R("SECRET_INTERNAL_registerPromiseAbort",(i,u)=>{ne.set(i,u)}),x=i=>"init"in i,V="r",D="w",I="c",j="s",de="h",re=i=>{const u=new WeakMap,l=new WeakMap,a=new Map;if(i)for(const[t,e]of i){const r={v:e,r:0,y:!0,d:new Map};u.set(t,r)}const d=new WeakMap,p=(t,e,r)=>{let n=d.get(e);n||(n=new Map,d.set(e,n)),r.then(()=>{n.get(t)===r&&(n.delete(t),n.size||d.delete(e))}),n.set(t,r)},g=t=>{const e=new Set,r=d.get(t);return r&&(d.delete(t),r.forEach((n,s)=>{T(n),e.add(s)})),e},w=new WeakMap,b=t=>{let e=w.get(t);return e||(e=new Map,w.set(t,e)),e},v=(t,e)=>{if(t){const r=b(t);let n=r.get(e);return n||(n=v(t.p,e),n&&r.set(e,n)),n}return u.get(e)},y=(t,e,r)=>{if(t)b(t).set(e,r);else{const n=u.get(e);u.set(e,r),a.has(e)||a.set(e,n)}},S=(t,e=new Map,r)=>{if(!r)return e;const n=new Map;let s=!1;return r.forEach(o=>{var c;const f=((c=v(t,o))==null?void 0:c.r)||0;n.set(o,f),e.get(o)!==f&&(s=!0)}),e.size===n.size&&!s?e:n},h=(t,e,r,n,s)=>{const o=v(t,e);if(o){if(s&&(!("p"in o)||!O(o.p,s)))return o;"p"in o&&T(o.p)}const c={v:r,r:(o==null?void 0:o.r)||0,y:!0,d:S(t,o==null?void 0:o.d,n)};let f=!(o!=null&&o.y);return!o||!("v"in o)||!Object.is(o.v,r)?(f=!0,++c.r,c.d.has(e)&&(c.d=new Map(c.d).set(e,c.r))):c.d!==o.d&&(c.d.size!==o.d.size||!Array.from(c.d.keys()).every(M=>o.d.has(M)))&&(f=!0,Promise.resolve().then(()=>{C(t)})),o&&!f?o:(y(t,e,c),c)},E=(t,e,r,n,s)=>{const o=v(t,e);if(o){if(s&&(!("p"in o)||!O(o.p,s)))return o;"p"in o&&T(o.p)}const c={e:r,r:((o==null?void 0:o.r)||0)+1,y:!0,d:S(t,o==null?void 0:o.d,n)};return y(t,e,c),c},_=(t,e,r,n)=>{const s=v(t,e);if(s&&"p"in s){if(O(s.p,r))return s.y?s:{...s,y:!0};T(s.p)}p(t,e,r);const o={p:r,r:((s==null?void 0:s.r)||0)+1,y:!0,d:S(t,s==null?void 0:s.d,n)};return y(t,e,o),o},N=(t,e,r,n)=>{if(r instanceof Promise){const s=te(r,r.then(o=>{h(t,e,o,n,s)}).catch(o=>{if(o instanceof Promise)return ee(o)?o.then(()=>{P(t,e,!0)}):o;E(t,e,o,n,s)}));return _(t,e,s,n)}return h(t,e,r,n)},he=(t,e)=>{const r=v(t,e);if(r){const n={...r,y:!1};y(t,e,n)}},P=(t,e,r)=>{if(!r){const s=v(t,e);if(s){if(s.y&&"p"in s&&!fe(s.p))return s;if(s.d.forEach((o,c)=>{if(c!==e)if(!l.has(c))P(t,c);else{const f=v(t,c);f&&!f.y&&P(t,c)}}),Array.from(s.d).every(([o,c])=>{const f=v(t,o);return f&&!("p"in f)&&f.r===c}))return s.y?s:{...s,y:!0}}}const n=new Set;try{const s=e.read(o=>{n.add(o);const c=o===e?v(t,o):P(t,o);if(c){if("e"in c)throw c.e;if("p"in c)throw c.p;return c.v}if(x(o))return o.init;throw new Error("no atom init")});return N(t,e,s,n)}catch(s){if(s instanceof Promise){const o=te(s,s);return _(t,e,o,n)}return E(t,e,s,n)}},Ee=(t,e)=>P(e,t),me=(t,e)=>{let r=l.get(e);return r||(r=F(t,e)),r},q=(t,e)=>!e.l.size&&(!e.t.size||e.t.size===1&&e.t.has(t)),ge=(t,e)=>{const r=l.get(e);r&&q(e,r)&&G(t,e)},$=(t,e)=>{const r=l.get(e);r==null||r.t.forEach(n=>{n!==e&&(he(t,n),$(t,n))})},ie=(t,e,r)=>{let n=!0;const s=(f,M)=>{const A=P(t,f);if("e"in A)throw A.e;if("p"in A){if(M!=null&&M.unstable_promise)return A.p.then(()=>{const k=v(t,f);return k&&"p"in k&&k.p===A.p?new Promise(H=>setTimeout(H)).then(()=>s(f,M)):s(f,M)});throw A.p}if("v"in A)return A.v;throw new Error("no value found")},o=(f,M)=>{let A;if(f===e){if(!x(f))throw new Error("atom not writable");g(f).forEach(le=>{le!==t&&N(le,f,M)});const k=v(t,f),H=N(t,f,M);k!==H&&$(t,f)}else A=ie(t,f,M);return n||C(t),A},c=e.write(s,o,r);return n=!1,c},ue=(t,e,r)=>{const n=ie(r,t,e);return C(r),n},ye=t=>!!t.write,F=(t,e,r)=>{const n={t:new Set(r&&[r]),l:new Set};if(l.set(e,n),P(void 0,e).d.forEach((s,o)=>{const c=l.get(o);c?c.t.add(e):o!==e&&F(t,o,e)}),ye(e)&&e.onMount){const s=c=>ue(e,c,t),o=e.onMount(s);t=void 0,o&&(n.u=o)}return n},G=(t,e)=>{var r;const n=(r=l.get(e))==null?void 0:r.u;n&&n(),l.delete(e);const s=v(t,e);s&&("p"in s&&T(s.p),s.d.forEach((o,c)=>{if(c!==e){const f=l.get(c);f&&(f.t.delete(e),q(c,f)&&G(t,c))}}))},ae=(t,e,r,n)=>{const s=new Set(r.d.keys());n==null||n.forEach((o,c)=>{if(s.has(c)){s.delete(c);return}const f=l.get(c);f&&(f.t.delete(e),q(c,f)&&G(t,c))}),s.forEach(o=>{const c=l.get(o);c?c.t.add(e):l.has(e)&&F(t,o,e)})},C=t=>{if(t){b(t).forEach((e,r)=>{const n=u.get(r);if(e!==n){const s=l.get(r);s==null||s.l.forEach(o=>o(t))}});return}for(;a.size;){const e=Array.from(a);a.clear(),e.forEach(([r,n])=>{const s=v(void 0,r);if(s&&s.d!==(n==null?void 0:n.d)&&ae(void 0,r,s,n==null?void 0:n.d),n&&!n.y&&(s==null?void 0:s.y))return;const o=l.get(r);o==null||o.l.forEach(c=>c())})}},Se=t=>{b(t).forEach((e,r)=>{const n=u.get(r);(!n||e.r>n.r||e.y!==n.y||e.r===n.r&&e.d!==n.d)&&(u.set(r,e),e.d!==(n==null?void 0:n.d)&&ae(t,r,e,n==null?void 0:n.d))})},Ae=(t,e)=>{e&&Se(e),C(void 0)},Me=(t,e,r)=>{const n=me(r,t).l;return n.add(e),()=>{n.delete(e),ge(r,t)}},be=(t,e)=>{for(const[r,n]of t)x(r)&&(N(e,r,n),$(e,r));C(e)};return{[V]:Ee,[D]:ue,[I]:Ae,[j]:Me,[de]:be}},Re=R("unstable_createStore",i=>{const u=re(i),l=d=>{const p=u[V](d);if("e"in p)throw p.e;if(!("p"in p))return p.v},a=d=>new Promise((p,g)=>{const w=u[V](d);"e"in w?g(w.e):"p"in w?p(w.p.then(()=>a(d))):p(w.v)});return{get:l,asyncGet:a,set:(d,p)=>u[D](d,p),sub:(d,p)=>u[j](d,p),SECRET_INTERNAL_store:u}}),oe=(i,u)=>({s:u?u(i).SECRET_INTERNAL_store:re(i)}),B=new Map,L=R("SECRET_INTERNAL_getScopeContext",i=>(B.has(i)||B.set(i,J(oe())),B.get(i))),Te=R("Provider",({children:i,initialValues:u,scope:l,unstable_createStore:a,unstable_enableVersionedWrite:d})=>{const[p,g]=K({});z(()=>{const v=w.current;v.w&&(v.s[I](null,p),delete p.p,v.v=p)},[p]);const w=Q();if(!w.current){const v=oe(u,a);if(d){let y=0;v.w=S=>{g(h=>{const E=y?h:{p:h};return S(E),E})},v.v=p,v.r=S=>{++y,S(),--y}}w.current=v}const b=L(l);return U(b.Provider,{value:w.current},i)});let pe=0;function ve(i,u){const l=`atom${++pe}`,a={toString:()=>l};return typeof i=="function"?a.read=i:(a.init=i,a.read=d=>d(a),a.write=(d,p,g)=>p(a,typeof g=="function"?g(d(a)):g)),u&&(a.write=u),a}function se(i,u){const l=L(u),a=W(l),{s:d,v:p}=a,g=h=>{const E=d[V](i,h);if("e"in E)throw E.e;if("p"in E)throw E.p;if("v"in E)return E.v;throw new Error("no atom value")},[[w,b,v],y]=X((h,E)=>{const _=g(E);return Object.is(h[1],_)&&h[2]===i?h:[E,_,i]},p,h=>{const E=g(h);return[h,E,i]});let S=b;return v!==i&&(y(w),S=g(w)),z(()=>{const{v:h}=a;h&&d[I](i,h);const E=d[j](i,y,h);return y(h),E},[d,i,a]),z(()=>{d[I](i,w)}),Y(S),S}function ce(i,u){const l=L(u),{s:a,w:d}=W(l);return Z(p=>{const g=w=>a[D](i,p,w);return d?d(g):g()},[a,d,i])}function we(i,u){return"scope"in i&&(console.warn("atom.scope is deprecated. Please do useAtom(atom, scope) instead."),u=i.scope),[se(i,u),ce(i,u)]}}}});