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