@rematch/loading
Version:
Loading indicator plugin for Rematch
3 lines (2 loc) • 2.01 kB
JavaScript
;function e(){return e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},e.apply(this,arguments)}Object.defineProperty(exports,"__esModule",{value:!0});var t=function(t,a,n){return function(o,i){var c,l,s,d=i||{name:"",action:""},r=d.name,f=d.action,u=d.detailedPayload;return n.global+=a,n.models[r]+=a,n.effects[r][f]+=a,e({},o,{global:t(n.global,u),models:e({},o.models,(c={},c[r]=t(n.models[r],u),c)),effects:e({},o.effects,(s={},s[r]=e({},o.effects[r],(l={},l[f]=t(n.effects[r][f],u),l)),s))})}};function a(e,t,a){return e?{error:t,success:a}:null}exports.default=function(n){void 0===n&&(n={});var o=n.name||"loading";n.asNumber&&(n.type="number");var i="number"===n.type,c="full"===n.type,l=function(t,a){return i?t:c&&a?e({},a,{loading:t>0}):c?{loading:t>0,success:!1,error:!1}:t>0},s={global:l(0),models:{},effects:{}},d={global:0,models:{},effects:{}},r={name:o,reducers:{hide:t(l,-1,d),show:t(l,1,d)},state:s},f=l(0);return{config:{models:{loading:r}},onModel:function(e,t){var i=e.name;i!==o&&(d.models[i]=0,d.effects[i]={},s.models[i]=f,s.effects[i]={},Object.keys(t.dispatch[i]).forEach((function(e){if(!1!==t.dispatch[i][e].isEffect){d.effects[i][e]=0,s.effects[i][e]=f;var l=i+"/"+e;if((!n.whitelist||n.whitelist.includes(l))&&(!n.blacklist||!n.blacklist.includes(l))){var r=t.dispatch[i][e],u=function(){try{t.dispatch[o].show({name:i,action:e,detailedPayload:a(c,!1,!1)});var n=r.apply(void 0,arguments);return null!=n&&n.then?n.then((function(n){return t.dispatch[o].hide({name:i,action:e,detailedPayload:a(c,!1,!0)}),n})).catch((function(n){throw t.dispatch[o].hide({name:i,action:e,detailedPayload:a(c,n,!1)}),n})):(t.dispatch[o].hide({name:i,action:e,detailedPayload:a(c,!1,!0)}),n)}catch(n){throw t.dispatch[o].hide({name:i,action:e,detailedPayload:a(c,n,!1)}),n}};u.isEffect=!0,t.dispatch[i][e]=u}}})))}}};
//# sourceMappingURL=loading.cjs.production.min.js.map