UNPKG

@dbeining/react-atom

Version:

State management made simple for React. Built on React Hooks. Inspired by `atom`s in `reagent.cljs`.

2 lines 4.26 kB
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.reactAtom=t():e.reactAtom=t()}("undefined"!=typeof self?self:this,(function(){return function(e){var t={};function o(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,o),n.l=!0,n.exports}return o.m=e,o.c=t,o.d=function(e,t,r){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(o.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)o.d(r,n,function(t){return e[t]}.bind(null,n));return r},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=1)}([function(e,t){e.exports=require("@libre/atom")},function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){for(var o in e)t.hasOwnProperty(o)||(t[o]=e[o])}(o(0));var r=o(2);t.initialize=r.initialize,t.useAtom=r.useAtom},function(e,t,o){"use strict";var r=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var o in e)Object.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});var n=o(0),i=o(3),u=r(o(4)),a=o(5),l=0,c=0;function s(e){var t=e.useLayoutEffect,o=e.useMemo,r=e.useState;return l+=1,{Atom:n.Atom,addChangeHandler:n.addChangeHandler,deref:n.deref,getValidator:n.getValidator,removeChangeHandler:n.removeChangeHandler,set:n.set,setValidator:n.setValidator,swap:n.swap,useAtom:function(e,i){var l;if(!(e instanceof n.Atom)){var s=JSON.stringify(e,null," ");throw TypeError(u.calledUseAtomWithNonAtom+"\n"+s)}var f,d=(i||{select:null}).select,m=n.deref(e),p=d||function(e){return e};try{p=o((function(){return a.memoLast(p)}),[d]),l=r({}),f=l[1]}catch(e){throw new TypeError(u.calledUseAtomOutsideFunctionComponent)}return t((function(){var t=f["@@react-atom/hook_id"]?f["@@react-atom/hook_id"]:"hook#"+ ++c;return f["@@react-atom/hook_id"]=t,n.addChangeHandler(e,f["@@react-atom/hook_id"],(function(e){var t=e.previous,o=e.current;a.isShallowEqual(p(t),p(o))||f({})})),function(){n.removeChangeHandler(e,f["@@react-atom/hook_id"])}}),[f,d]),p(m)}}}t.initialize=s,t.useAtom=function(e,t){if(l>1)throw Error(u.multipleInstantiations);var o=(t||{select:null}).select;return o?f(e,{select:o}):f(e)};var f=s({useLayoutEffect:i.useLayoutEffect,useMemo:i.useMemo,useState:i.useState}).useAtom},function(e,t){e.exports=require("react")},function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.calledUseAtomOutsideFunctionComponent="useAtom can only be called inside the body of a function component",t.calledUseAtomWithNonAtom="useAtom only accepts `react-atom` Atoms, but got:",t.calledDerefWithNonAtom="deref only accepts `react-atom` Atoms, but got:",t.multipleInstantiations="Multiple instances of react-atom have been detected, which will lead to unexpected bugs in the useAtom custom hook. This usually means react-atom has been initialized with `initialize(hooks)` in addition to importing the default Atom, useAtom, etc. directly. To avoid this error, only use the implementation returned from `initialize`."},function(e,t,o){"use strict";function r(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}function n(e){if("object"!=typeof e||null===e)return!1;var t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}Object.defineProperty(t,"__esModule",{value:!0}),t.isPOJO=n,t.isShallowEqual=function(e,t){if([e,t].every(n)||[e,t].every(Array.isArray)){if(r(e,t))return!0;if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var o in e)if(!r(e[o],t[o]))return!1;return!0}return r(e,t)},t.memoLast=function(e){var t,o;return function(n){return r(t,n)||(t=n,o=e(n)),o}}}])})); //# sourceMappingURL=react-atom.js.map