UNPKG

easy-peasy

Version:
3 lines (2 loc) 10.5 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("immer"),require("react"),require("redux"),require("redux-thunk"),require("memoizerific")):"function"==typeof define&&define.amd?define(["exports","immer","react","redux","redux-thunk","memoizerific"],t):t((e=e||self).EasyPeasy={},e.immer,e.React,e.Redux,e.ReduxThunk,e.memoizerific)}(this,function(e,t,d,C,R,M){"use strict";var h="default"in t?t.default:t,r="default"in d?d.default:d;R=R&&R.hasOwnProperty("default")?R.default:R,M=M&&M.hasOwnProperty("default")?M.default:M;var p=function(e,t,n,r){var i=n?n.call(r,e,t):void 0;if(void 0!==i)return!!i;if(e===t)return!0;if("object"!=typeof e||!e||"object"!=typeof t||!t)return!1;var u=Object.keys(e),o=Object.keys(t);if(u.length!==o.length)return!1;for(var a=Object.prototype.hasOwnProperty.bind(t),c=0;c<u.length;c++){var s=u[c];if(!a(s))return!1;var f=e[s],l=t[s];if(!1===(i=n?n.call(r,f,l,s):void 0)||void 0===i&&f!==l)return!1}return!0},v=d.createContext(),z=function(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)},F=function(e,t){return e.reduce(function(e,t){return z(e)?e[t]:void 0},t)},q=function(r,e,i){r.reduce(function(e,t,n){return n+1===r.length?e[t]=i:e[t]=e[t]||{},e[t]},e)};function n(n,e){void 0===e&&(e=[]);var r=d.useContext(v),t=d.useState(function(){return n(r.getState())}),i=t[0],u=t[1],o=d.useState(null),a=o[0],c=o[1],s=d.useRef(i),f=d.useRef(!0),l=d.useRef(!1);if(a)throw a;return d.useEffect(function(){f.current=!0;var e=function(){if(f.current)try{var e=n(r.getState());if(e===s.current||z(e)&&z(s.current)&&p(e,s.current))return;s.current=e,u(function(){return s.current})}catch(e){f.current=!1,setTimeout(function(){l.current||f.current||c(e)},200)}};e();var t=r.subscribe(e);return function(){f.current=!1,t()}},e),d.useEffect(function(){return function(){l.current=!0}},[]),i}function i(e){return e(d.useContext(v).dispatch)}function u(){return d.useContext(v).dispatch}var o=i,a=u,c=n;function L(){return(L=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var X="🙈actionName🙈",U="🙈action🙈",V="🙈listen🙈",H="🙈meta🙈",J="🙈reducer🙈",y="🙈selectDependencies🙈",S="🙈selectImp🙈",B="🙈selectState🙈",G="🙈select🙈",K="🙈selector🙈",Q="🙈selectorConfig🙈",W="🙈selectorState🙈",Y="🙈thunk🙈",A=function(e){return e[X]},Z=function(e){return e[X]+"(completed)"},I=function(e){return e[U]=!0,e},$=function(e){return e[Y]=!0,e},s=100,ee=function(){return new Promise(function(e){return setTimeout(e)})},te=function(e){return e instanceof Error?{message:e.message,stack:e.stack}:"string"==typeof e?e:void 0};function ne(e){var r=e.disableInternalSelectFnMemoize,O=e.initialState,P=e.injections,j=e.isRebind,t=e.model,n=e.reducerEnhancer,x=e.references,w=O||{},D={},N={},T={},_=[],C=[],R=[],u={},l={},L={},A=0,I={};!function E(k,b){return Object.keys(k).forEach(function(e){var t=k[e],n=[].concat(b,[e]),r={parent:b,path:n};if("function"==typeof t)if(t[U]){var i="@action."+n.join(".");t[X]=i,t[H]=r;var u=t;u[X]=i,L[i]=u;var o=function(e){return x.dispatch({type:u[X],payload:e})};T[o[X]=i]=o,q(n,N,o)}else if(t[Y]){var a="@thunk."+n.join(".");t[X]=a;var c=function(e){return t(F(b,N),e,{dispatch:x.dispatch,getState:function(){return F(b,x.getState())},getStoreState:x.getState,injections:P,meta:r})};q(n,D,c);var s=function(t){return ee().then(function(){return x.dispatch({type:a+"(started)",payload:t})}).then(function(){return x.dispatch(function(){return c(t)})}).then(function(e){return x.dispatch({type:a+"(completed)",payload:t}),e}).catch(function(e){throw x.dispatch({type:a+"(failed)",payload:t,error:te(e)}),e})};T[s[X]=a]=s,q(n,N,s)}else if(t[K]){var f=A+=1,l=t[Q],d=l.args,p=l.config,v=d&&Array.isArray(d)?d:[function(e){return e}],h="object"==typeof p&&"number"==typeof p.limit&&0<p.limit?p.number:1,y=M(h)(t),S=0,m=function e(){var t,n=function(){for(var n=x.getState(),r=F(b,n),e=v.reduce(function(e,t){return[].concat(e,[t(r,n)])},[]),t=arguments.length,i=new Array(t),u=0;u<t;u++)i[u]=arguments[u];return y.apply(void 0,e.concat(i))};return n[W]={argumentChangeTracker:(t=M(1)(function(){return S+=1}),function(n){var r=F(b,n),e=v.reduce(function(e,t){return e.push(t(r,n)),e},[]);return t.apply(void 0,e)}),createSelector:e,meta:r,selectorId:f},n}();I[A]=m,q(n,w,m)}else t[G]?(t[B]={parentPath:b,key:e,executed:!1},C.push(t)):t[J]?_.push({path:n,reducer:t}):t[V]&&(R.push(t),t[H]=r);else if(z(t)&&0<Object.keys(t).length)null==F(n,w)&&q(n,w,{}),E(t,n);else{var g=F(b,O);q(n,w,!j&&g&&e in g?g[e]:t)}})}(t,[]),C.forEach(function(n){n[S]=function(e){return t=n(e),r||"function"!=typeof t?t:M(s)(t);var t}}),R.forEach(function(i){i.listeners=i.listeners||{};i(function(e,t){if("function"==typeof t){var n,r=i[H];t[H]=r,(t[U]||t[Y])&&("function"==typeof e&&e[X]&&T[e[X]]?n=e[Y]?Z(e):e[X]:"string"==typeof e&&(n=e),n&&(t[Y]?(u[n]=u[n]||[],u[n].push(t)):(l[n]=l[n]||[],l[n].push({path:r.parent,handler:t})),i.listeners[n]=i.listeners[n]||[],i.listeners[n].push(t)))}})});var d,p,v,i=function e(t,n){var r=n[B],i=r.parentPath,u=r.key;if(r.executed)return t;var o=n[y],a=o?o.reduce(e,t):t,c=a;if(0<i.length){var s=F(i,a);if(s&&(!n.prevState||n.prevState!==F(i,t))){var f=n[S](s);c=h(t,function(e){F(i,e)[u]=f}),n.prevState=F(i,c)}}else if(!n.prevState||n.prevState!==t){var l=n[S](a);c=h(t,function(e){e[u]=l}),n.prevState=c}return n[B].executed=!0,c};return{actionCreators:N,actionListenersDict:l,defaultState:w,listenDefinitions:R,reducer:n((d=function(e,t,n,r){var i=F(r,e);return 0===r.length?h(e,function(e){return n(e,t.payload)}):h(e,function(e){q(n[H].parent,e,h(i,function(e){return n(e,t.payload)}))})},p=!0,v=function(e){var t,n=(t=e,C.reduce(i,t));return p=!1,C.forEach(function(e){e[B].executed=!1}),n},function(e,t){var n,r,i,u,o,a,c=function(e,t){var n="@@EP/LISTENER"===t.type?t.actionName:t.type,r=l[n];if(r){var i="@@EP/LISTENER"===t.type?{type:n,payload:t.payload}:t;return r.reduce(function(e,t){var n=t.path,r=t.handler;return d(e,i,r,n)},e)}return e}((n=e,(i=L[(r=t).type])?d(n,r,i,i[H].parent):n),t),s=(u=t,h(c,function(i){_.forEach(function(e){var t=e.path,n=e.reducer,r=F(t,i);q(t,i,n(r,u))})})),f=e!==s||p?v(s):s;return o=f,a=Object.values(I),h(o,function(u){a.forEach(function(e){var t,n=e[W],r=F(n.meta.parent,o);if(null==n.prevState)n.prevState=n.argumentChangeTracker(o);else{var i=n.argumentChangeTracker(o);n.prevState!==i&&(n.prevState=i,(t=n.createSelector())[n.prevState]=r,I[n.selectorId]=t,q(n.meta.path,u,t))}})})})),thunkListenersDict:u}}t.setAutoFreeze(!1),e.StoreProvider=function(e){var t=e.children,n=e.store;return r.createElement(v.Provider,{value:n},t)},e.action=I,e.actionName=A,e.createStore=function(e,t){void 0===t&&(t={});var n=t,r=n.compose,i=n.devTools,u=void 0===i||i,o=n.disableInternalSelectFnMemoize,a=void 0!==o&&o,c=n.enhancers,s=void 0===c?[]:c,f=n.initialState,l=void 0===f?{}:f,d=n.injections,p=n.middleware,v=void 0===p?[]:p,h=n.mockActions,y=void 0!==h&&h,S=n.name,m=void 0===S?"EasyPeasyStore":S,g=n.reducerEnhancer,E=void 0===g?function(e){return e}:g,k=L({},e,{logFullState:$(function(e,t,n){var r=n.getState;console.log(JSON.stringify(r(),null,2))}),replaceState:I(function(e,t){return t})}),b={},O=[],P=function(e,t){return e(F(e[H].parent,b.internals.actionCreators),t,{dispatch:b.dispatch,getState:function(){return F(e[H].parent,b.getState())},getStoreState:b.getState,injections:d,meta:e[H]})},j=r||(u&&"undefined"!=typeof window&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({name:m}):C.compose),x=function(e,t){void 0===t&&(t=!1),b.internals=ne({disableInternalSelectFnMemoize:a,initialState:e,injections:d,model:k,reducerEnhancer:E,references:b,isRebind:t})};x(l);var w=C.createStore(b.internals.reducer,b.internals.defaultState,j.apply(void 0,[C.applyMiddleware.apply(void 0,[R,function(){return function(u){return function(e){var t,n,r,i=u(e);return b.internals.thunkListenersDict[e.type]&&(t=e.type,n=e.payload,(r=b.internals.thunkListenersDict[t])&&0<r.length?Promise.all(r.map(function(e){return P(e,n)})):Promise.resolve()),i}}}].concat(v,[function(){return function(t){return function(e){if(!y)return t(e);null==e||"object"==typeof e&&"@@EP/LISTENER"===e.type||O.push(e)}}}]))].concat(s)));w.getMockedActions=function(){return[].concat(O)},w.clearMockedActions=function(){O=[]},b.dispatch=w.dispatch,b.getState=w.getState;var D=function(t){Object.keys(w.dispatch).forEach(function(e){delete w.dispatch[e]}),Object.keys(t).forEach(function(e){w.dispatch[e]=t[e]})};D(b.internals.actionCreators);var N=function(){x(w.getState(),!0),w.replaceReducer(b.internals.reducer),w.dispatch.replaceState(b.internals.defaultState),D(b.internals.actionCreators)};w.addModel=function(e,t){k[e],k[e]=t,N()},w.removeModel=function(e){k[e]&&(delete k[e],N())};var T=function(e,t){return w.dispatch({type:"@@EP/LISTENER",payload:t,actionName:e})},_=function(e){return"function"==typeof e?e[U]?A(e):e[Y]?Z(e):void 0:"string"==typeof e?e:void 0};return w.triggerListener=function(e,t,n){var r=_(t);if(e.listeners[r]&&0<e.listeners[r].length){e.listeners[r].some(function(e){return e[U]})&&T(r,n);var i=e.listeners[r].filter(function(e){return e[Y]});return 0<i.length?Promise.all(i.map(function(e){return function(e,t,n){if(e[Y])return P(e,n)}(e,0,n)})).then(function(){}):Promise.resolve()}return Promise.resolve()},w.triggerListeners=function(e,t){var n=_(e);if(n){var r=b.internals.actionListenersDict[n];r&&0<r.length&&T(n,t);var i=b.internals.thunkListenersDict[n];return i&&0<i.length?Promise.all(i.map(function(e){return P(e,t)})).then(function(){}):Promise.resolve()}return Promise.resolve()},w},e.createTypedHooks=function(){return{useActions:o,useDispatch:a,useStore:c,useStoreActions:i,useStoreDispatch:u,useStoreState:n}},e.listen=function(e){return e[V]=!0,e},e.reducer=function(e){return e[J]=!0,e},e.select=function(e,t){return e[G]=!0,e[y]=t,e[B]={},e},e.selector=function(e,t,n){return t[K]=!0,t[Q]={args:e,config:n},t},e.thunk=$,e.thunkCompleteName=Z,e.thunkFailName=function(e){return e[X]+"(failed)"},e.thunkStartName=function(e){return e[X]+"(started)"},e.useActions=o,e.useDispatch=a,e.useStore=c,e.useStoreActions=i,e.useStoreDispatch=u,e.useStoreState=n,Object.defineProperty(e,"__esModule",{value:!0})}); //# sourceMappingURL=easy-peasy.umd.js.map