jotai
Version:
👻 Primitive and flexible state management for React
3 lines (2 loc) • 1.79 kB
JavaScript
'use client';
System.register(["react","jotai/vanilla","jotai/vanilla/internals"],function(P){"use strict";var b,S,h,C,E,R,j,p,x,y,k,g;return{setters:[function(s){b=s.createContext,S=s.useContext,h=s.useRef,C=s.createElement,E=s.default,R=s.useReducer,j=s.useEffect,p=s.useDebugValue,x=s.useCallback},function(s){y=s.getDefaultStore,k=s.createStore},function(s){g=s.INTERNAL_registerAbortHandler}],execute:function(){P({Provider:V,useAtom:H,useAtomValue:D,useSetAtom:N,useStore:v});const s=b(void 0);function v(t){const r=S(s);return(t==null?void 0:t.store)||r||y()}function V({children:t,store:r}){const e=h(void 0);return!r&&!e.current&&(e.current=k()),C(s.Provider,{value:r||e.current},t)}const d=t=>typeof(t==null?void 0:t.then)=="function",m=t=>{t.status="pending",t.then(r=>{t.status="fulfilled",t.value=r},r=>{t.status="rejected",t.reason=r})},T=E.use||(t=>{if(t.status==="pending")throw t;if(t.status==="fulfilled")return t.value;throw t.status==="rejected"?t.reason:(m(t),t)}),A=new WeakMap,w=(t,r)=>{let e=A.get(t);return e||(e=new Promise((a,f)=>{let l=t;const c=n=>u=>{l===n&&a(u)},o=n=>u=>{l===n&&f(u)},i=()=>{try{const n=r();d(n)?(A.set(n,e),l=n,n.then(c(n),o(n)),g(n,i)):a(n)}catch(n){f(n)}};t.then(c(t),o(t)),g(t,i)}),A.set(t,e)),e};function D(t,r){const e=v(r),[[a,f,l],c]=R(n=>{const u=e.get(t);return Object.is(n[0],u)&&n[1]===e&&n[2]===t?n:[u,e,t]},void 0,()=>[e.get(t),e,t]);let o=a;(f!==e||l!==t)&&(c(),o=e.get(t));const i=r==null?void 0:r.delay;if(j(()=>{const n=e.sub(t,()=>{if(typeof i=="number"){const u=e.get(t);d(u)&&m(w(u,()=>e.get(t))),setTimeout(c,i);return}c()});return c(),n},[e,t,i]),p(o),d(o)){const n=w(o,()=>e.get(t));return T(n)}return o}function N(t,r){const e=v(r);return x((...a)=>e.set(t,...a),[e,t])}function H(t,r){return[D(t,r),N(t,r)]}}}});