UNPKG

jotai

Version:

👻 Next gen state management that will spook you

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