fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
2 lines • 2.15 kB
JavaScript
import{_defineProperty as e}from"../../../_virtual/_@oxc-project_runtime@0.122.0/helpers/defineProperty.min.mjs";import{getFabricWindow as t}from"../../env/index.min.mjs";import{noop as n}from"../../constants.min.mjs";import{runningAnimations as r}from"./AnimationRegistry.min.mjs";import{requestAnimFrame as i}from"./AnimationFrameProvider.min.mjs";import{defaultEasing as a}from"./easing.min.mjs";const o=()=>!1;var s=class{constructor({startValue:t,byValue:r,duration:i=500,delay:s=0,easing:c=a,onStart:l=n,onChange:u=n,onComplete:d=n,abort:f=o,target:p}){e(this,`_state`,`pending`),e(this,`durationProgress`,0),e(this,`valueProgress`,0),this.tick=this.tick.bind(this),this.duration=i,this.delay=s,this.easing=c,this._onStart=l,this._onChange=u,this._onComplete=d,this._abort=f,this.target=p,this.startValue=t,this.byValue=r,this.value=this.startValue,this.endValue=Object.freeze(this.calculate(this.duration).value)}get state(){return this._state}isDone(){return this._state===`aborted`||this._state===`completed`}start(){let e=e=>{this._state===`pending`&&(this.startTime=e||+new Date,this._state=`running`,this._onStart(),this.tick(this.startTime))};this.register(),this.delay>0?this.timeout=t().setTimeout(()=>i(e),this.delay):i(e)}tick(e){let t=(e||+new Date)-this.startTime,n=Math.min(t,this.duration);this.durationProgress=n/this.duration;let{value:r,valueProgress:a}=this.calculate(n);this.value=Object.freeze(r),this.valueProgress=a,this._state!==`aborted`&&(this._abort(this.value,this.valueProgress,this.durationProgress)?(this._state=`aborted`,this.unregister()):t>=this.duration?(this.durationProgress=this.valueProgress=1,this._onChange(this.endValue,this.valueProgress,this.durationProgress),this._state=`completed`,this._onComplete(this.endValue,this.valueProgress,this.durationProgress),this.unregister(),this.timeout=null):(this._onChange(this.value,this.valueProgress,this.durationProgress),i(this.tick)))}register(){r.push(this)}unregister(){r.remove(this)}abort(){this._state=`aborted`,this.unregister(),this.timeout&&t().clearTimeout(this.timeout)}};export{s as AnimationBase};
//# sourceMappingURL=AnimationBase.min.mjs.map