thaw.js
Version:
synthetic asynchronous processing in javascript
1 lines • 2.56 kB
JavaScript
!function(t){"use strict";var h=this&&this.__assign||function(){return(h=Object.assign||function(t){for(var i,e=1,n=arguments.length;e<n;e++)for(var s in i=arguments[e])Object.prototype.hasOwnProperty.call(i,s)&&(t[s]=i[s]);return t}).apply(this,arguments)};Object.defineProperty(t,"__esModule",{value:!0}),t.thaw=t.Block=t.Thaw=void 0;var e=(Object.defineProperty(r,"isThawing",{get:function(){return r.thawing},enumerable:!1,configurable:!0}),r.stopAll=function(){for(var t=0;t<r.thaws.length;t++)r.thaws[t].stop()},r.prototype.makeReady=function(){return!!this.isStopped&&!(this.isStopped=!1)},r.prototype.add=function(t){return this.items.push(t),this.makeReady()&&this.tick(),this},r.prototype.insert=function(t){return this.items.splice(this.i,0,t),this.makeReady()&&this.tick(),this},r.prototype.addArray=function(t){return this.items=this.items.concat(t),this.makeReady()&&this.tick(),this},r.prototype.insertArray=function(t){var i=this.items.splice(0,this.i),e=this.items;return this.items=i.concat(t,e),this.makeReady()&&this.tick(),this},r.prototype.stop=function(){return this.isStopped=!0,clearTimeout(this.timeout),this.options.done&&this.options.done(),this},r.thawing=!1,r.thaws=[],r.defaultSettings={each:null,done:null},r);function r(t,i){var e=this;void 0===i&&(i={});var n=h(h({},r.defaultSettings),i),s=n.each,o=n.done;this.i=0,this.isStopped=!1,this.items=t,this.options=i,this.tick=function(){if(!e.isStopped&&(e.timeout=setTimeout(e.tick,0),!r.thawing)){var t=e.items[e.i];if(e.i>=e.items.length)return null!==o&&(r.thawing=!0,o(),r.thawing=!1),e.isStopped=!0,void clearTimeout(e.timeout);null!==s?(r.thawing=!0,s(t,e.i),r.thawing=!1):void 0!==t&&t(),e.i++}},r.thaws.push(this),i.delay||this.tick()}function i(t,i){return new e(t,i)}t.Thaw=e,t.thaw=i;var n=(s.prototype.add=function(t){return this.next().add(t),this},s.prototype.addArray=function(t){return this.next().addArray(t),this},s.prototype.insert=function(t){return this.next().insert(t),this},s.prototype.insertArray=function(t){return this.next().insertArray(t),this},s.prototype.stop=function(){for(var t=0;t<this.thaws.length;t++)this.thaws[t].stop();return this},s.prototype.next=function(){var t,i=this.thaws;return i.length<this.count?(t=new e([],this.options),i.push(t)):t=i[this.index]||null,this.index++,this.index>=this.count&&(this.index=0),t},s);function s(t,i){void 0===i&&(i=200),this.index=0,this.thaws=[],this.count=i,this.options=t}t.Block=n,"undefined"!=typeof window&&(window.Thaw=e,window.thaw=i,window.Thaw.Block=n)}("undefined"==typeof Thaw?Thaw={}:Thaw);