@reatom/react
Version:
React bindings for @reatom/core
3 lines (2 loc) • 1.11 kB
JavaScript
import{defaultStore as n,createAtom as t,getState as r,isActionCreator as e}from"@reatom/core/";import u from"react";var c=/*#__PURE__*/u.createContext(n),o=function(n){return n()},i=function(n){o=n};function a(n,t){return function(){var r=t.apply(void 0,[].slice.call(arguments));r&&o(function(){n.dispatch(r)})}}function f(n,t){void 0===t&&(t=[]);var r=u.useContext(c);return u.useCallback(a(r,n),t.concat(r))}function s(n,o,i){var f=n;"function"==typeof o?(null!=i||(i=[]),n=u.useMemo(function(){return t({origin:f},function(n){return o((0,n.get)("origin"))})},i.concat(f))):i=null!=o?o:[];var s=u.useContext(c);i=i.concat([n,s]);var l=u.useState(function(){return r(n,s)}),v=l[0],m=l[1],p=u.useRef(v);p.current=v=r(n,s);var b=u.useMemo(function(){return Object.entries(f).reduce(function(n,t){var r=t[0],u=t[1];return e(u)&&(n[r]=a(s,u)),n},{})},i);return u.useEffect(function(){return s.subscribe(n,function(n){return Object.is(n,p.current)||m(p.current=n)})},i),u.useDebugValue(v),[v,b]}export{c as reatomContext,i as setBatchedUpdates,f as useAction,s as useAtom};
//# sourceMappingURL=index.es.js.map