UNPKG

@reatom/react

Version:
3 lines (2 loc) 927 B
import{defaultStore as t,createAtom as e,getState as n,isActionCreator as c}from"@reatom/core/";import o from"react";const r=/*#__PURE__*/o.createContext(t);let u=t=>t();const s=t=>{u=t};function i(t,e){return(...n)=>{const c=e(...n);c&&u(()=>{t.dispatch(c)})}}function a(t,e=[]){const n=o.useContext(r);return o.useCallback(i(n,t),e.concat(n))}function f(t,u,s){const a=t;"function"==typeof u?(null!=s||(s=[]),t=o.useMemo(()=>e({origin:a},({get:t})=>u(t("origin"))),s.concat(a))):s=null!=u?u:[];const f=o.useContext(r);s=s.concat([t,f]);let[l,m]=o.useState(()=>n(t,f));const b=o.useRef(l);b.current=l=n(t,f);const p=o.useMemo(()=>Object.entries(a).reduce((t,[e,n])=>(c(n)&&(t[e]=i(f,n)),t),{}),s);return o.useEffect(()=>f.subscribe(t,t=>Object.is(t,b.current)||m(b.current=t)),s),o.useDebugValue(l),[l,p]}export{r as reatomContext,s as setBatchedUpdates,a as useAction,f as useAtom}; //# sourceMappingURL=index.modern.mjs.map