@zjxpcyc/react-tiny-store
Version:
简易版 React hook store
2 lines (1 loc) • 4.05 kB
JavaScript
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).ReactTinyStore={},t.React)}(this,(function(t,e){"use strict";function r(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var n=r(e);function u(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function o(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?u(Object(r),!0).forEach((function(e){i(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):u(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function i(t,e,r){return(e=function(t){var e=function(t,e){if("object"!=typeof t||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function f(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,u,o,i,f=[],c=!0,a=!1;try{if(o=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(f.push(n.value),f.length!==e);c=!0);}catch(t){a=!0,u=t}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(a)throw u}}return f}}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return c(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return c(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function a(t){if("function"==typeof t)return t(a());var e=[],r=function(t){return e=e.filter((function(e){return e!==t}))};return{publish:function(t){return e.forEach((function(e){return e(t)}))},subscribe:function(t){return e.push(t),function(){return r(t)}},unsubscribe:r}}function l(t,e){var r=function(t){return function(e){var r=e.setState;return"function"==typeof t?r=t(e)||e.setState:e.setState(t),o(o({},e),{},{actions:r})}}(t);return a(y(e,p,r,s))}function s(t){var e=t.publish,r=void 0;return o(o({},t),{},{getState:function(){return r},setState:function(t){return e(r="function"==typeof t?t(r):t)}})}function p(t){var e=n.default.useSyncExternalStore||b;return o(o({},t),{},{useStore:function(r,u){var i=n.default.useMemo((function(){return"function"==typeof u?u(t.actions):t.actions}),[]),f=n.default.useCallback((function(){var e=t.getState();return"function"==typeof r?r(e):e}),[]),c=e(t.subscribe,f);return n.default.useMemo((function(){return[c,i,o({},t)]}),[c])}})}function y(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];var n=e.filter(Boolean);return 0===n.length?function(t){return t}:1===n.length?n[0]:n.reduce((function(t,e){return function(){return t(e.apply(void 0,arguments))}}))}function b(t,e){var r=n.default.useMemo(e,[]),u=f(n.default.useState(r),2),o=u[0],i=u[1],c=n.default.useRef();return c.current=o,n.default.useEffect((function(){var r=function(){var t=e();Object.is(c.current,t)||i(t)};return r(),t(r)}),[]),o}t.compose=y,t.create=function(t,e){return l(t,e).useStore},t.createStore=l,Object.defineProperty(t,"__esModule",{value:!0})}));