jotai
Version:
👻 Next gen state management that will spook you
2 lines (1 loc) • 2.03 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("jotai/react"),require("jotai/vanilla/utils"),require("jotai/vanilla")):"function"==typeof define&&define.amd?define(["exports","react","jotai/react","jotai/vanilla/utils","jotai/vanilla"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).jotaiUtils={},e.React,e.react,e.utils,e.vanilla)}(this,(function(e,t,r,n,a){"use strict";function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function i(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return o(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?o(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var u=new WeakMap;var l=function(e){var t=u.get(e);return t||(t=new WeakSet,u.set(e,t)),t};e.useAtomCallback=function(e,n){var o=t.useMemo((function(){return a.atom(null,(function(t,r){for(var n=arguments.length,a=new Array(n>2?n-2:0),o=2;o<n;o++)a[o-2]=arguments[o];return e.apply(void 0,[t,r].concat(a))}))}),[e]);return r.useSetAtom(o,n)},e.useHydrateAtoms=function(e,t){for(var n,a=r.useStore(t),o=l(a),u=[],c=i(e);!(n=c()).done;){var s=n.value,f=s[0];o.has(f)||(o.add(f),u.push(s))}u.length&&a.res(u)},e.useReducerAtom=function(e,n,a){var o=r.useAtom(e,a),i=o[0],u=o[1];return[i,t.useCallback((function(e){u((function(t){return n(t,e)}))}),[u,n])]},e.useResetAtom=function(e,a){var o=r.useSetAtom(e,a);return t.useCallback((function(){return o(n.RESET)}),[o])}}));