state-decorator
Version:
React state management library
3 lines (2 loc) • 12.5 kB
JavaScript
import r,{useMemo as n,useContext as e,useRef as t,useEffect as u,useLayoutEffect as o,useReducer as c}from"react";import{createRef as i,isFuncConfig as a,isSimpleSyncAction as l,decorateSimpleSyncAction as f,isAsyncAction as s,decorateAsyncAction as d,computeAsyncActionInput as v,isSyncAction as p,decorateSyncAction as O,globalConfig as _,onPropChange as E,DEFAULT_PROMISE_ID as S,fixDerivedDeps as y,computeDerivedValues as g,buildOnMountInvocationContext as L,buildOnUnMountInvocationContext as h,isLoadingImpl as b,runMiddlewares as A,buildLoadingMap as R,buildErrorMap as m}from"./impl";export{EffectError,ParallelActionError,setGlobalConfig}from"./impl";import{logDetailedEffects as T}from"./development";var w=function(){return w=Object.assign||function(r){for(var n,e=1,t=arguments.length;e<t;e++)for(var u in n=arguments[e])Object.prototype.hasOwnProperty.call(n,u)&&(r[u]=n[u]);return r},w.apply(this,arguments)};function M(r){var n={exports:{}};return r(n,n.exports),n.exports}"function"==typeof SuppressedError&&SuppressedError;var D="function"==typeof Object.is?Object.is:function(r,n){return r===n&&(0!==r||1/r==1/n)||r!=r&&n!=n},j=r.useState,V=r.useEffect,x=r.useLayoutEffect,k=r.useDebugValue;function C(r){var n=r.getSnapshot;r=r.value;try{var e=n();return!D(r,e)}catch(r){return!0}}var P="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(r,n){return n()}:function(r,n){var e=n(),t=j({inst:{value:e,getSnapshot:n}}),u=t[0].inst,o=t[1];return x((function(){u.value=e,u.getSnapshot=n,C(u)&&o({inst:u})}),[r,e,n]),V((function(){return C(u)&&o({inst:u}),r((function(){C(u)&&o({inst:u})}))}),[r]),k(e),e},I={useSyncExternalStore:void 0!==r.useSyncExternalStore?r.useSyncExternalStore:P},B=M((function(n,e){"production"!==process.env.NODE_ENV&&function(){"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error);var n=r,t=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function u(r){for(var n=arguments.length,e=new Array(n>1?n-1:0),u=1;u<n;u++)e[u-1]=arguments[u];!function(r,n,e){var u=t.ReactDebugCurrentFrame.getStackAddendum();""!==u&&(n+="%s",e=e.concat([u]));var o=e.map((function(r){return String(r)}));o.unshift("Warning: "+n),Function.prototype.apply.call(console[r],console,o)}("error",r,e)}var o="function"==typeof Object.is?Object.is:function(r,n){return r===n&&(0!==r||1/r==1/n)||r!=r&&n!=n},c=n.useState,i=n.useEffect,a=n.useLayoutEffect,l=n.useDebugValue,f=!1,s=!1;function d(r){var n=r.getSnapshot,e=r.value;try{var t=n();return!o(e,t)}catch(r){return!0}}var v=!!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement)?function(r,n,e){return n()}:function(r,e,t){f||void 0!==n.startTransition&&(f=!0,u("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."));var v=e();if(!s){var p=e();o(v,p)||(u("The result of getSnapshot should be cached to avoid an infinite loop"),s=!0)}var O=c({inst:{value:v,getSnapshot:e}}),_=O[0].inst,E=O[1];return a((function(){_.value=v,_.getSnapshot=e,d(_)&&E({inst:_})}),[r,v,e]),i((function(){d(_)&&E({inst:_});return r((function(){d(_)&&E({inst:_})}))}),[r]),l(v),v},p=void 0!==n.useSyncExternalStore?n.useSyncExternalStore:v;e.useSyncExternalStore=p,"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error)}()})),G=I,K=B,N=M((function(r){"production"===process.env.NODE_ENV?r.exports=G:r.exports=K})),H=N;var U,W="function"==typeof Object.is?Object.is:function(r,n){return r===n&&(0!==r||1/r==1/n)||r!=r&&n!=n},F=N.useSyncExternalStore,Y=r.useRef,z=r.useEffect,J=r.useMemo,q=r.useDebugValue,Q={useSyncExternalStoreWithSelector:function(r,n,e,t,u){var o=Y(null);if(null===o.current){var c={hasValue:!1,value:null};o.current=c}else c=o.current;o=J((function(){function r(r){if(!a){if(a=!0,o=r,r=t(r),void 0!==u&&c.hasValue){var n=c.value;if(u(n,r))return i=n}return i=r}if(n=i,W(o,r))return n;var e=t(r);return void 0!==u&&u(n,e)?n:(o=r,i=e)}var o,i,a=!1,l=void 0===e?null:e;return[function(){return r(n())},null===l?void 0:function(){return r(l())}]}),[n,e,t,u]);var i=F(r,o[0],o[1]);return z((function(){c.hasValue=!0,c.value=i}),[i]),q(i),i}},X=M((function(n,e){"production"!==process.env.NODE_ENV&&function(){"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error);var n=r,t=N;var u="function"==typeof Object.is?Object.is:function(r,n){return r===n&&(0!==r||1/r==1/n)||r!=r&&n!=n},o=t.useSyncExternalStore,c=n.useRef,i=n.useEffect,a=n.useMemo,l=n.useDebugValue;e.useSyncExternalStoreWithSelector=function(r,n,e,t,f){var s,d=c(null);null===d.current?(s={hasValue:!1,value:null},d.current=s):s=d.current;var v=a((function(){var r,o,c=!1,i=function(n){if(!c){c=!0,r=n;var e=t(n);if(void 0!==f&&s.hasValue){var i=s.value;if(f(i,e))return o=i,i}return o=e,e}var a=o;if(u(r,n))return a;var l=t(n);return void 0!==f&&f(a,l)?a:(r=n,o=l,l)},a=void 0===e?null:e;return[function(){return i(n())},null===a?void 0:function(){return i(a())}]}),[n,e,t,f]),p=v[0],O=v[1],_=o(r,p,O);return i((function(){s.hasValue=!0,s.value=_}),[_]),l(_),_},"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error)}()})),Z=Q,$=X,rr=M((function(r){"production"===process.env.NODE_ENV?r.exports=Z:r.exports=$}));!function(r){r.REJECT="reject",r.IGNORE="ignore",r.KEEP_LAST="keepLast",r.KEEP_ALL="keepAll",r.PARALLEL="parallel",r.REUSE="reuse",r.ABORT="abort"}(U||(U={}));var nr=rr.useSyncExternalStoreWithSelector,er=H.useSyncExternalStore;function tr(r){var n=i(),e=i(),t=i(),u=i(),o=i(),c=i(),M=i(),D=i(),j=i(),V=i(),x=i(),k=i(!1),C=i(!1),P=i(),I=i([]),B=r.actions,G=r.middlewares,K=void 0===G?[]:G,N=function(r,n){var e={};for(var t in r)Object.prototype.hasOwnProperty.call(r,t)&&n.indexOf(t)<0&&(e[t]=r[t]);if(null!=r&&"function"==typeof Object.getOwnPropertySymbols){var u=0;for(t=Object.getOwnPropertySymbols(r);u<t.length;u++)n.indexOf(t[u])<0&&Object.prototype.propertyIsEnumerable.call(r,t[u])&&(e[t[u]]=r[t[u]])}return e}(r,["actions","middlewares"]),H=a(r)?r.getInitialState:function(){return r.initialState},U={},W=0;function F(){P.current=w(w(w(w(w({},t.current),u.current),n.current),e.current.state),{isLoading:Z,abortAction:$,loading:D.current,loadingMap:M.current,loadingParallelMap:c.current,errorMap:rr(),errorParallelMap:j.current}),C.current=!1,Object.keys(U).forEach((function(r){var n;null===(n=U[r])||void 0===n||n.call(U)}))}function Y(r){n.current=r,g(n,t,e,N),F()}function z(r){c.current=r,M.current=function(){if(k.current){var r=c.current;return Object.keys(r).reduce((function(n,e){var t=r[e];return n[e]=null!=Object.keys(t).find((function(r){return!!t[r]})),n}),{})}return null}(),D.current=function(){if(k.current){var r=c.current;return null!=Object.keys(r).find((function(n){var e=r[n];return Object.keys(e).find((function(r){return!!e[r]}))}))}return null}()}function J(c){var i;if(!k.current){t.current=c,k.current=!0,n.current=H(c);var a=new Set(null==N?void 0:N.initialActionsMarkedLoading),l=Object.keys(B).reduce((function(r,n){var e;return r[n]=a.has(n)?((e={})[S]=!0,e):{},r}),{});z(l),j.current=Object.keys(B).reduce((function(r,n){return r[n]={},r}),{}),o.current={},V.current={},x.current={},e.current={state:null,deps:{}},(null==N?void 0:N.derivedState)&&y(N),I.current=[];var f={options:N,get state(){return n.current},actions:B,setState:Y};r.logEnabled&&T&&K.push(T());var s=function(r){var n,e=r();I.current.push(e),null===(n=e.init)||void 0===n||n.call(e,f)};null===(i=_.defaultMiddlewares)||void 0===i||i.forEach(s),null==K||K.forEach(s),g(n,t,e,N),E(n,e,t,null,u,N,H,Q,!0,!1),(null==N?void 0:N.onMount)&&N.onMount(L(n,e,t,u)),F()}}function q(r,n){void 0===n&&(n=S);var e=j.current[r];(null==e?void 0:e[n])&&delete e[n],F()}function Q(r,u,o,i,a,l,f,s,d){void 0===f&&(f=!1),void 0===s&&(s=!1),void 0===d&&(d=!1);var v=!1;if(!k.current)return F;var p=u,O=!!a&&b(p||c.current,[o,null==l?void 0:l.promiseId]),_=A(I.current,n.current,r,O,o,i,a,l),E=_.newState,y=_.newLoading;if(null!=E&&(v=!0,n.current=E),O!==y&&(p=R(p,o,(null==l?void 0:l.promiseId)||S,y),0===Object.keys(p).length&&(p=void 0)),null!=p&&(v=!0,z(p)),v)g(n,t,e,N),s||(n.current=E||n.current,d||F());else if(f){!g(n,t,e,N)||s||d||F()}return F}var X=Object.keys(B);function Z(){for(var r=[],n=0;n<arguments.length;n++)r[n]=arguments[n];return b.apply(void 0,function(r,n,e){if(e||2===arguments.length)for(var t,u=0,o=n.length;u<o;u++)!t&&u in n||(t||(t=Array.prototype.slice.call(n,0,u)),t[u]=n[u]);return r.concat(t||Array.prototype.slice.call(n))}([c.current],r,!1))}function $(r,n){var e,t;void 0===n&&(n=S);var u=null===(t=null===(e=V.current[r])||void 0===e?void 0:e[n])||void 0===t?void 0:t.abortController,o=!1;return u&&(u.abort(),o=!0),o}function rr(){return k.current?m(j.current):null}return u.current=X.reduce((function(r,i){var a=B[i];return l(a)?r[i]=f(i,a,n,e,t,k,N,Q):s(a)?r[i]=d({actionName:i,stateRef:n,derivedStateRef:e,propsRef:t,loadingParallelMapRef:c,errorMapRef:j,actionsRef:u,promisesRef:V,conflictActionsRef:x,initializedRef:k,timeoutRef:o,needNotifyListenersRef:C,options:N,setState:Q,clearError:q,action:v(a)}):p(a)&&(r[i]=O(i,a,n,e,t,u,k,o,C,N,Q,q)),r}),{}),{getConfig:function(){return w({},r)},setProps:function(r){var o=t.current;t.current=r,k.current?E(n,e,t,o,u,N,H,Q,!1,!1):J(r)},addStateListener:function(r){var n="".concat(W++);return U[n]=r,function(){delete U[n]}},init:J,destroy:function(){var r;if(k.current){var u=Object.keys(B).reduce((function(r,n){var e=B[n];if(s(e)&&e.abortable){var t=c.current[n],u=Object.keys(t).reduce((function(r,e){return t[e]&&($(n,e),r.push(e)),r}),[]);u.length>0&&(r[n]=u)}return r}),{});null===(r=null==N?void 0:N.onUnmount)||void 0===r||r.call(N,h(n,e,t,u)),Object.keys(o.current).forEach((function(r){clearTimeout(o.current[r])})),t.current=null,n.current=null,c.current=null,M.current=null,D.current=null,j.current=null,V.current=null,x.current=null,e.current=null,P.current=null,o.current=null,U={},k.current=!1,I.current.forEach((function(r){var n;null===(n=r.destroy)||void 0===n||n.call(r)})),I.current=[]}},isLoading:Z,abortAction:$,clearError:q,getSnapshot:function(){return P.current},invokeOnMountDeferred:function(){E(n,e,t,null,u,N,H,Q,!0,!0),(null==N?void 0:N.onMountDeferred)&&N.onMountDeferred(L(n,e,t,u))},get actions(){return u.current},get state(){return k.current?w(w({},n.current),e.current.state):null},get loading(){return D.current},get loadingMap(){return M.current},get errorMap(){return rr()},get loadingParallelMap(){return k.current?c.current:null},get errorParallelMap(){return k.current?j.current:null}}}function ur(r,e){var t=n((function(){return e instanceof Function?e:function(r){return lr(r,e)}}),[e]);return nr(r.addStateListener,r.getSnapshot,void 0,t,_.comparator)}function or(r){return er(r.addStateListener,r.getSnapshot),r}function cr(r,n){return ur(e(r),n)}function ir(r,n,e){void 0===e&&(e=!0);var i=t();return null==i.current&&(i.current=tr(r)),u((function(){return i.current.invokeOnMountDeferred(),function(){var r;null===(r=i.current)||void 0===r||r.destroy()}}),[]),function(r,n,e){void 0===n&&(n=null),void 0===e&&(e=!0);var u=c((function(r){return r>100?0:r+1}),0)[1],i=t(r);return r.setProps(n),o((function(){r.init(n)}),[]),o((function(){if(e)return i.current.addStateListener((function(){u()}))}),[e]),r}(i.current,n,e)}function ar(r,n){return r.setProps(n),er(r.addStateListener,r.getSnapshot),o((function(){r.init(n)}),[]),u((function(){r.invokeOnMountDeferred()}),[r]),r}function lr(r,n){return n.reduce((function(n,e){return r.hasOwnProperty(e)&&(n[e]=r[e]),n}),{})}function fr(){for(var r=[],n=0;n<arguments.length;n++)r[n]=arguments[n];return function(n){return lr(n,r)}}export{U as ConflictPolicy,tr as createStore,ir as default,lr as pick,fr as slice,ar as useBindStore,ir as useLocalStore,or as useStore,cr as useStoreContextSlice,ur as useStoreSlice};
//# sourceMappingURL=index.js.map