@thednp/bezier-easing
Version:
🍬 A Typescript based cubic-bezier easing functions factory for KUTE.js based on UnitBezier
3 lines (2 loc) • 1.22 kB
JavaScript
"use strict";var m=Object.defineProperty;var x=(n,e,i)=>e in n?m(n,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):n[e]=i;var h=(n,e,i)=>x(n,typeof e!="symbol"?e+"":e,i);class C{constructor(e,i,t,s,c){h(this,"cx");h(this,"bx");h(this,"ax");h(this,"cy");h(this,"by");h(this,"ay");const r=e||0,a=i||0,l=t||1,o=s||1,p=b=>typeof b=="number",v=[e,i,t,s].every(p),y=c||(v?`cubic-bezier(${[r,a,l,o].join(",")})`:"linear");this.cx=3*r,this.bx=3*(l-r)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*a,this.by=3*(o-a)-this.cy,this.ay=1-this.cy-this.by;const u=b=>this.sampleCurveY(this.solveCurveX(b));return Object.defineProperty(u,"name",{writable:!0}),u.name=y,u}sampleCurveX(e){return((this.ax*e+this.bx)*e+this.cx)*e}sampleCurveY(e){return((this.ay*e+this.by)*e+this.cy)*e}sampleCurveDerivativeX(e){return(3*this.ax*e+2*this.bx)*e+this.cx}solveCurveX(e){if(e<=0)return 0;if(e>=1)return 1;let t=e,s=0,c=0;for(let l=0;l<8;l+=1){if(s=this.sampleCurveX(t)-e,Math.abs(s)<1e-6)return t;if(c=this.sampleCurveDerivativeX(t),Math.abs(c)<1e-6)break;t-=s/c}let r=0,a=1;for(t=e;r<a;){if(s=this.sampleCurveX(t),Math.abs(s-e)<1e-6)return t;e>s?r=t:a=t,t=(a-r)*.5+r}return t}}module.exports=C;
//# sourceMappingURL=bezier-easing.cjs.map