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