@rxloop/loading
Version:
@rxloop/loading
2 lines (1 loc) • 1.94 kB
JavaScript
export default function(e){return void 0===e&&(e={name:"loading"}),function(p){var i=this,n=p.onModelBeforeCreate$,o=p.onPipeStart$,t=p.onPipeEnd$,a=p.onPipeCancel$,d=p.onPipeError$,r=p.onStart$;this.model({name:e.name,state:{pipes:{}},reducers:{init:function(e,p){return e.pipes=p.pipes,e},pipeStart:function(e,p){var i=p.pipe+"Counter",n=e.pipes[p.model][i]+p.loading;return e.pipes[p.model][i]=n,e.pipes[p.model][p.pipe]=n>0,e},pipeStop:function(e,p){return e.pipes[p.model][p.pipe+"Counter"]=0,e.pipes[p.model][p.pipe]=!1,e}}}),this.stream(e.name).subscribe(),n.subscribe((function(e){var p=e.model;if("object"==typeof p.state&&p.pipes&&void 0===p.state.loading){var i={};Object.keys(p.pipes).forEach((function(e){i[e+"Counter"]=0,i[e]=!1})),p.state.loading=i,p.reducers.loadingStart=function(e,p){var i=p.payload.pipe,n=i+"Counter",o=e.loading[n]+1;return e.loading[n]=o,e.loading[i]=o>0,e},p.reducers.loadingEnd=function(e,p){var i=p.payload.pipe;return e.loading[i+"Counter"]=0,e.loading[i]=!1,e}}})),r.subscribe((function(){var p={};Object.keys(i._stream).forEach((function(e){"loading"!==e&&(p[e]={},Object.keys(i._pipes[e]).forEach((function(i){p[e][i]=!1,p[e][i+"Counter"]=0})))})),i.dispatch({pipes:p,type:e.name+"/init"})})),o.subscribe((function(p){var n=p.model,o=p.pipe;i.dispatch({model:n,pipe:o,type:e.name+"/pipeStart",loading:1}),i.dispatch({type:n+"/loadingStart",payload:{pipe:o}})})),t.subscribe((function(p){var n=p.model,o=p.pipe;i.dispatch({model:n,pipe:o,type:e.name+"/pipeStop",loading:0,isEnd:!0}),i.dispatch({type:n+"/loadingEnd",payload:{pipe:o}})})),d.subscribe((function(p){var n=p.model,o=p.pipe;i.dispatch({model:n,pipe:o,type:e.name+"/pipeStop",loading:0,isError:!0}),i.dispatch({type:n+"/loadingEnd",payload:{pipe:o}})})),a.subscribe((function(p){var n=p.model,o=p.pipe;i.dispatch({model:n,pipe:o,type:e.name+"/pipeStop",loading:0,isCancel:!0}),i.dispatch({type:n+"/loadingEnd",payload:{pipe:o}})}))}}