@reatom/react
Version:
React bindings for @reatom/core
3 lines (2 loc) • 1.46 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@reatom/core/"),require("react")):"function"==typeof define&&define.amd?define(["exports","@reatom/core/","react"],t):t((e||self).react={},e._,e.react)}(this,function(e,t,n){function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=/*#__PURE__*/u(n),o=/*#__PURE__*/r.default.createContext(t.defaultStore),c=function(e){return e()};function a(e,t){return function(){var n=t.apply(void 0,[].slice.call(arguments));n&&c(function(){e.dispatch(n)})}}e.reatomContext=o,e.setBatchedUpdates=function(e){c=e},e.useAction=function(e,t){void 0===t&&(t=[]);var n=r.default.useContext(o);return r.default.useCallback(a(n,e),t.concat(n))},e.useAtom=function(e,n,u){var c=e;"function"==typeof n?(null!=u||(u=[]),e=r.default.useMemo(function(){return t.createAtom({origin:c},function(e){return n((0,e.get)("origin"))})},u.concat(c))):u=null!=n?n:[];var f=r.default.useContext(o);u=u.concat([e,f]);var i=r.default.useState(function(){return t.getState(e,f)}),l=i[0],d=i[1],s=r.default.useRef(l);s.current=l=t.getState(e,f);var p=r.default.useMemo(function(){return Object.entries(c).reduce(function(e,n){var u=n[0],r=n[1];return t.isActionCreator(r)&&(e[u]=a(f,r)),e},{})},u);return r.default.useEffect(function(){return f.subscribe(e,function(e){return Object.is(e,s.current)||d(s.current=e)})},u),r.default.useDebugValue(l),[l,p]}});
//# sourceMappingURL=index.umd.js.map