kit.PluginManager.register('utils', function(module, exports, require){ var StackExecutionLimiter = (function () { var stack = function (context, callback, timeout = 1000) { this.counter = 0; this.timerId = 0; this.timeout = 0; this.arguments = null; this.context = null; this.setContext(context); this.setCallback(callback); this.setTimeout(timeout); }; stack.prototype.setCallback = function(callback){ this.callback = callback; }; stack.prototype.setContext = function(context){ this.context = context || window; }; stack.prototype.setTimeout = function(timeout){ this.timeout = timeout; }; stack.prototype.exec = function() { this.arguments = arguments; this.counter++; if(this.timerId === 0) { this.__exec(this.counter); } }; stack.prototype.__exec = function (counter) { this.timerId = setTimeout((function(){ if(this.counter > counter) { this.__exec(this.counter); return null; } this.timerId = 0; }).bind(this), this.timeout); this.callback.apply(this.context, this.arguments); }; stack.prototype.reset = function () { clearTimeout(this.timerId); this.timerId = 0; }; return stack; })(); return module.exports = { StackExecutionLimiter: StackExecutionLimiter }; });