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