UNPKG

sugar

Version:

A Javascript library for working with native objects.

5 lines (4 loc) 1.29 kB
function xb(a,b,c,d,e){var g;if(!a.timers)a.timers=[];A(b)||(b=0);a.timers.push(setTimeout(function(){a.timers.splice(g,1);c.apply(d,e||[])},b));g=a.timers.length} E(Function,k,n,{lazy:function(a,b){function c(){if(!(g&&e.length>b-2)){e.push([this,arguments]);f()}}var d=this,e=[],g=n,f,i,j;a=a||1;b=b||Infinity;i=M(a,void 0,"ceil");j=M(i/a);f=function(){if(!(g||e.length==0)){for(var h=v.max(e.length-j,0);e.length>h;)Function.prototype.apply.apply(d,e.shift());xb(c,i,function(){g=n;f()});g=k}};return c},delay:function(a){var b=F(arguments).slice(1);xb(this,a,this,this,b);return this},throttle:function(a){return this.lazy(a,1)},debounce:function(a){function b(){b.cancel(); xb(b,a,c,this,arguments)}var c=this;return b},cancel:function(){if(da(this.timers))for(;this.timers.length>0;)clearTimeout(this.timers.shift());return this},after:function(a){var b=this,c=0,d=[];if(A(a)){if(a===0){b.call();return b}}else a=1;return function(){var e;d.push(F(arguments));c++;if(c==a){e=b.call(this,d);c=0;d=[];return e}}},once:function(){var a=this;return function(){return la(a,"memo")?a.memo:a.memo=a.apply(this,arguments)}},fill:function(){var a=this,b=F(arguments);return function(){var c= F(arguments);b.forEach(function(d,e){if(d!=l||e>=c.length)c.splice(e,0,d)});return a.apply(this,c)}}});