state-decorator
Version:
React state management library
3 lines (2 loc) • 2.71 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var t=require("./impl"),e=function(){return e=Object.assign||function(t){for(var e,i=1,o=arguments.length;i<o;i++)for(var n in e=arguments[i])Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t},e.apply(this,arguments)};"function"==typeof SuppressedError&&SuppressedError,exports.optimisticActions=function(i){return function(){var o=null,n={history:null,optimisticActions:{},shouldRecordHistory:!1},r=function(e){return(i||t.globalConfig.clone)(e)},s=function(t,e){return"".concat(t.toString(),"_").concat(e)};function c(t,e,i,o){void 0===o&&(o=null);var s=n.shouldRecordHistory,c=n.history;if(s){null===c&&(n.history=[]);var f=r(i);delete f.state,delete f.s,delete f.abortSignal,f.error=i.err,f.err=i.err;var a={effectType:e,actionName:t,promiseId:i.promiseId,ctx:f,beforeEffectState:o?r(o):null};n.history.push(a)}}function f(t,e,i){void 0===i&&(i=void 0);var o=n.optimisticActions,r=n.history,c=s(t,e);if(delete o[c],0===Object.keys(o).length)n.history=null,n.shouldRecordHistory=!1;else{var f=void 0===i?r.findIndex((function(t){return s(t.actionName,t.promiseId)===c})):i;if(0===f){var a=r.slice(1).findIndex((function(t){return null!=t.beforeEffectState}))+1;r.splice(0,a)}else void 0===i&&(r[f].beforeEffectState=null)}}return{init:function(t){o=t},destroy:function(){o=null,n.history=null,n.optimisticActions={},n.shouldRecordHistory=!1},effects:function(i,r,a,l){var u=i.name,p=i.type,d=i.context,m=i.isAsync;if((null!=a&&t.isSimpleSyncAction(o.actions[u])||"onPropsChange"===u||null!=o.actions[u][p])&&c(u,p,d,null),m){var y=o.actions[u];if(l&&null!=y.optimisticEffects&&"preEffects"===p)return n.shouldRecordHistory=!0,n.optimisticActions[s(u,d.promiseId)]=!0,c(u,"optimisticEffects",d,h=a||r),{loading:!1,state:e(e({},h),y.optimisticEffects(e(e({},d),{state:h,s:h})))};if(null!=y.optimisticEffects&&"effects"===p)return f(u,d.promiseId),{loading:l,state:a};if(null!=y.optimisticEffects&&"errorEffects"===p){var h=function(i,r){for(var s=n.history,c=s.findIndex((function(t){return"optimisticEffects"===t.effectType&&t.actionName===i&&t.promiseId===r})),a=s[c].beforeEffectState,l=c+1;l<s.length;l++){var u=s[l];u.beforeEffectState&&(u.beforeEffectState=a);var p=e(e({},u.ctx),{state:a,s:a});if("onPropsChange"===u.actionName){var d=Array.isArray(o.options.onPropsChange)?o.options.onPropsChange:[o.options.onPropsChange];a=e(e({},a),d[p.index].effects(p))}else a=t.isSimpleSyncAction(o.actions[u.actionName])?e(e({},a),o.actions[u.actionName](p)):e(e({},a),o.actions[u.actionName][u.effectType](p))}return f(i,r,c),a}(u,d.promiseId);return{state:h,loading:l}}}return null}}}};
//# sourceMappingURL=middlewares.js.map