UNPKG

animare

Version:

Advanced animation library for modern JavaScript.

1 lines 1.97 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.bounce=bounce;exports.fromPoints=fromPoints;exports.linear=linear;exports.spring=spring;exports.steps=steps;exports.wobble=wobble;function spring(){let{mass=1,stiffness=100,damping=10,velocity=0,duration=1000}=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};const clamp=(value,min,max)=>Math.min(Math.max(value,min),max);return time=>{if(time===0||time===1)return time;mass=clamp(mass,0.1,1000);stiffness=clamp(stiffness,0.1,1000);damping=clamp(damping,0.1,1000);velocity=clamp(velocity,0.1,1000);const w0=Math.sqrt(stiffness/mass),zeta=damping/(2*Math.sqrt(stiffness*mass)),wd=zeta<1?w0*Math.sqrt(1-zeta*zeta):0,a=1,b=zeta<1?(zeta*w0+-velocity)/wd:-velocity+w0;let progress=duration?duration*time/1000:time;progress=zeta<1?Math.exp(-progress*zeta*w0)*(a*Math.cos(wd*progress)+b*Math.sin(wd*progress)):(a+b*progress)*Math.exp(-progress*w0);return 1-progress;};}function steps(){let steps=arguments.length>0&&arguments[0]!==undefined?arguments[0]:10;let start=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;const clamp=(value,min,max)=>Math.min(Math.max(value,min),max);const trunc=start?Math.ceil:Math.floor;return progress=>trunc(clamp(progress,0,1)*steps)/steps;}function fromPoints(values){if(!(values instanceof Float32Array)&&!Array.isArray(values))throw new Error('\n\n⛔ [animare] ➡️ [ease] ➡️ [fromPoints] : first param must be an Array or Float32Array. !!\n\n');const length=values.length;return t=>values[Math.floor(t*length)]??values[length-1];}function wobble(){let bounciness=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1;const p=bounciness*Math.PI;return t=>1-Math.pow(Math.cos(t*Math.PI/2),3)*Math.cos(t*p);}function bounce(t){const n1=7.5625;const d1=2.75;if(t<1/d1)return n1*t*t;if(t<2/d1)return n1*(t-=1.5/d1)*t+0.75;if(t<2.5/d1)return n1*(t-=2.25/d1)*t+0.9375;return n1*(t-=2.625/d1)*t+0.984375;}function linear(t){return t;}