/*! * Snap Animation Queue * v0.1.0 * (c) Nov 14, 2016. Mystro Ken */ function SnapAnimationQueue(){this.animationQueue=[],this._totalDuration=0,this._startTime=null,this._lapsedTime=null,this._timerForComplete=null,this.onCompleteCallback=null,this.defaultOptions={easing:mina.easeinout,delay:0,callback:null}}SnapAnimationQueue.prototype.add=function(t,i,e,a,o,n){if(!t||"object"!=typeof e)return this;a=a||this.defaultOptions.easing;var s;if("string"==typeof o){var l=o.substring(0,2);"-="==l?(s=parseFloat(this._totalDuration)-parseFloat(o.substring(2)),s=s<0?0:s):s="+="==l?parseFloat(this._totalDuration)+parseFloat(o.substring(2)):parseFloat(o)}else s="undefined"==typeof o?this._totalDuration:o;var r=window.setTimeout(function(){t.animate(e,i,a,n)},s);return this._computeDuration(i,o),this.animationQueue.push({elem:t,duration:i,startingTime:s,timeout:r}),this},SnapAnimationQueue.prototype._computeDuration=function(t,i){this._startTime||(this._startTime=Date.now()),this._lapsedTime=Date.now()-this._startTime;var e;if("string"==typeof i){var a=i.substring(0,2);"-="==a?(e=parseFloat(this._totalDuration)-parseFloat(i.substring(2)),e=e<0?0:e,e+=t):"+="==a?(e=parseFloat(this._totalDuration)+parseFloat(i.substring(2)),e+=t):e=Math.max(parseFloat(i)+t,this._totalDuration)}else e="undefined"==typeof i?this._totalDuration+t:Math.max(parseFloat(i)+t,this._totalDuration);this._totalDuration=e;var o=Math.abs(this._totalDuration-this._lapsedTime);this._setOnCompleteTimer(o)},SnapAnimationQueue.prototype.whenAnimationsEnded=function(){this.animationQueue=[],this._totalDuration=0,this._startTime=null,this._lapsedTime=null,this._timerForComplete=null,this.onCompleteCallback=null},SnapAnimationQueue.prototype._setOnCompleteTimer=function(t){var i=this;this._timerForComplete&&(window.clearTimeout(this._timerForComplete),this._timerForComplete=null),this._timerForComplete=window.setTimeout(function(){"function"==typeof i.onCompleteCallback&&i.onCompleteCallback(i),i.whenAnimationsEnded()},t)}; //# sourceMappingURL=snap-animation-queue.min.js.map