UNPKG

@thednp/bezier-easing

Version:

🍬 A Typescript based cubic-bezier easing functions factory for KUTE.js based on UnitBezier

2 lines 1.21 kB
(function(e,t){typeof exports==`object`&&typeof module<`u`?module.exports=t():typeof define==`function`&&define.amd?define([],t):(e=typeof globalThis<`u`?globalThis:e||self,e.CubicBezier=t())})(this,function(){var e=`1.0.14`;return class{static version=e;cx;bx;ax;cy;by;ay;constructor(e,t,n,r,i){let a=e||0,o=t||0,s=n||1,c=r||1,l=[e,t,n,r].every(e=>typeof e==`number`),u=i||(l?`cubic-bezier(${[a,o,s,c].join(`,`)})`:`linear`);this.cx=3*a,this.bx=3*(s-a)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*o,this.by=3*(c-o)-this.cy,this.ay=1-this.cy-this.by;let d=e=>this.sampleCurveY(this.solveCurveX(e));return Object.defineProperty(d,`name`,{writable:!0}),d.name=u,d}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){let t=1e-6;if(e<=0)return 0;if(e>=1)return 1;let n=e,r=0,i=0;for(let a=0;a<8;a+=1){if(r=this.sampleCurveX(n)-e,Math.abs(r)<t)return n;if(i=this.sampleCurveDerivativeX(n),Math.abs(i)<t)break;n-=r/i}let a=0,o=1;for(n=e;a<o;){if(r=this.sampleCurveX(n),Math.abs(r-e)<t)return n;e>r?a=n:o=n,n=(o-a)*.5+a}return n}}}); //# sourceMappingURL=bezier-easing.js.map