UNPKG

tweenkle

Version:

Lightweight tweening library for all your tweening and animation needs.

2 lines (1 loc) 5.14 kB
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t=t||self).tweenkle={})}(this,function(t){"use strict";function c(t,n,e,i){return n+e*(t/i)}function i(t,n,e,i,r){if(0===i)return n;var a=e(i*r,t,n<t?-(t-n):n-t,i);return n<t?Math.max(n,Math.min(t,a)):Math.max(t,Math.min(n,a))}function e(n){if(n.startValue instanceof Object){var e={};return Object.keys(n.startValue).forEach(function(t){e[t]=i(n.startValue[t],n.endValue[t],n.ease,n.duration,n.progress)}),void(n.value=e)}n.value=i(n.startValue,n.endValue,n.ease,n.duration,n.progress)}function r(t,n,e,i){return(t/=i)<1/2.75?e*(7.5625*t*t)+n:t<2/2.75?e*(7.5625*(t-=1.5/2.75)*t+.75)+n:t<2.5/2.75?e*(7.5625*(t-=2.25/2.75)*t+.9375)+n:e*(7.5625*(t-=2.625/2.75)*t+.984375)+n}function a(t,n,e,i){return e-bounceEaseOut(i-t,0,e,i)+n}var f=function(){var t={},r={};return t.on=function(t,n){var e={name:t,handler:n};return r[t]=r[t]||[],r[t].unshift(e),e},t.off=function(t){var n=r[t.name].indexOf(t);-1!==n&&r[t.name].splice(n,1)},t.trigger=function(t,n){var e,i=r[t];if(i)for(e=i.length;e--;)i[e].handler(n)},t},n=function(){function t(t){var n=t.start,e=t.end,i=t.duration,r=void 0===i?1e3:i,a=t.ease,u=void 0===a?c:a,s=t.delay,o=void 0===s?0:s,h=new f;this.on=h.on,this.off=h.off,this.trigger=h.trigger,this.value=this.startValue=n,this.endValue=e,this.duration=r,this.ease=u,this.delay=o,this.active=!1,this.complete=!1,this.progress=0,this.endTime=null}var n=t.prototype;return n.start=function(){return this.endTime=Date.now()+this.duration*(1-this.progress),this.trigger("start",{start:this.start,end:this.end,duration:this.duration,progress:this.progress,ease:this.ease,value:this.value}),this.animationFrame=requestAnimationFrame(this.tick.bind(this)),this.active=!0,this.complete=!1,this},n.stop=function(){return this.animationFrame&&cancelAnimationFrame(this.animationFrame),this.progress=this.progress+(this.endTime-Date.now())/this.duration,this.endTime=null,this.active=!1,e(this),this.trigger("stop",{start:this.start,end:this.end,duration:this.duration,progress:this.progress,ease:this.ease,value:this.value}),this},n.tick=function(){this.progress=Math.max(0,Math.min(1,1-(this.endTime-Date.now())/this.duration)),e(this);var t={start:this.startValue,end:this.endValue,duration:this.duration,progress:this.progress,ease:this.ease,value:this.value};if(this.trigger("tick",t),1===this.progress||0===this.duration)return this.active=!1,this.complete=!0,this.trigger("complete",t);this.animationFrame=requestAnimationFrame(this.tick.bind(this))},t}(),u={Back:{In:function(t,n,e,i){return e*(t/=i)*t*(2.70158*t-1.70158)+n},Out:function(t,n,e,i){return e*((t=t/i-1)*t*(2.70158*t+1.70158)+1)+n},InOut:function(t,n,e,i){var r=1.70158;return(t/=i/2)<1?e/2*(t*t*((1+(r*=1.525))*t-r))+n:e/2*((t-=2)*t*((1+(r*=1.525))*t+r)+2)+n}},Bounce:{In:a,Out:r,InOut:function(t,n,e,i){return t<i/2?.5*a(2*t,0,e,i)+n:.5*r(2*t-i,0,e,i)+.5*e+n}},Circ:{In:function(t,n,e,i){return-e*(Math.sqrt(1-(t/=i)*t)-1)+n},Out:function(t,n,e,i){return e*Math.sqrt(1-(t=t/i-1)*t)+n},InOut:function(t,n,e,i){return(t/=i/2)<1?-e/2*(Math.sqrt(1-t*t)-1)+n:e/2*(Math.sqrt(1-(t-=2)*t)+1)+n}},Cubic:{In:function(t,n,e,i){return e*(t/=i)*t*t+n},Out:function(t,n,e,i){return e*((t=t/i-1)*t*t+1)+n},InOut:function(t,n,e,i){return(t/=i/2)<1?e/2*t*t*t+n:e/2*((t-=2)*t*t+2)+n}},Elastic:{In:function(t,n,e,i){var r=1.70158,a=0,u=e;return 0===t?n:1==(t/=i)?n+e:(a=a||.3*i,r=u<Math.abs(e)?(u=e,a/4):a/(2*Math.PI)*Math.asin(e/u),-(u*Math.pow(2,10*--t)*Math.sin((t*i-r)*(2*Math.PI)/a))+n)},Out:function(t,n,e,i){var r=1.70158,a=0,u=e;return 0===t?n:1==(t/=i)?n+e:(a=a||.3*i,r=u<Math.abs(e)?(u=e,a/4):a/(2*Math.PI)*Math.asin(e/u),u*Math.pow(2,-10*t)*Math.sin((t*i-r)*(2*Math.PI)/a)+e+n)},InOut:function(t,n,e,i){var r=1.70158,a=0,u=e;return 0===t?n:2==(t/=i/2)?n+e:(a=a||i*(.3*1.5),r=u<Math.abs(e)?(u=e,a/4):a/(2*Math.PI)*Math.asin(e/u),t<1?u*Math.pow(2,10*--t)*Math.sin((t*i-r)*(2*Math.PI)/a)*-.5+n:u*Math.pow(2,-10*--t)*Math.sin((t*i-r)*(2*Math.PI)/a)*.5+e+n)}},Expo:{In:function(t,n,e,i){return 0===t?n:e*Math.pow(2,10*(t/i-1))+n},Out:function(t,n,e,i){return t===i?n+e:e*(1-Math.pow(2,-10*t/i))+n},InOut:function(t,n,e,i){return 0===t?n:t===i?n+e:(t/=i/2)<1?e/2*Math.pow(2,10*(t-1))+n:e/2*(2-Math.pow(2,-10*--t))+n}},Linear:c,Quad:{In:function(t,n,e,i){return e*(t/=i)*t+n},Out:function(t,n,e,i){return-e*(t/=i)*(t-2)+n},InOut:function(t,n,e,i){return(t/=i/2)<1?e/2*t*t+n:-e/2*(--t*(t-2)-1)+n}},Quart:{In:function(t,n,e,i){return e*(t/=i)*t*t*t+n},Out:function(t,n,e,i){return-e*((t=t/i-1)*t*t*t-1)+n},InOut:function(t,n,e,i){return(t/=i/2)<1?e/2*t*t*t*t+n:-e/2*((t-=2)*t*t*t-2)+n}},Quint:{In:function(t,n,e,i){return e*(t/=i)*t*t*t*t+n},Out:function(t,n,e,i){return e*((t=t/i-1)*t*t*t*t+1)+n},InOut:function(t,n,e,i){return(t/=i/2)<1?e/2*t*t*t*t*t+n:e/2*((t-=2)*t*t*t*t+2)+n}},Sine:{In:function(t,n,e,i){return-e*Math.cos(t/i*(Math.PI/2))+e+n},Out:function(t,n,e,i){return e*Math.sin(t/i*(Math.PI/2))+n},InOut:function(t,n,e,i){return-e/2*(Math.cos(Math.PI*t/i)-1)+n}}};t.Easing=u,t.default=n,Object.defineProperty(t,"__esModule",{value:!0})});