fabric
Version:
Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.
3 lines (2 loc) • 1.99 kB
JavaScript
import{defineProperty as t}from"../../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{noop as s}from"../../constants.min.mjs";import{requestAnimFrame as e}from"./AnimationFrameProvider.min.mjs";import{runningAnimations as i}from"./AnimationRegistry.min.mjs";import{defaultEasing as r}from"./easing.min.mjs";const a=()=>!1;class o{constructor(e){let{startValue:i,byValue:o,duration:h=500,delay:n=0,easing:u=r,onStart:l=s,onChange:g=s,onComplete:m=s,abort:d=a,target:c}=e;t(this,"_state","pending"),t(this,"durationProgress",0),t(this,"valueProgress",0),this.tick=this.tick.bind(this),this.duration=h,this.delay=n,this.easing=u,this._onStart=l,this._onChange=g,this._onComplete=m,this._abort=d,this.target=c,this.startValue=i,this.byValue=o,this.value=this.startValue,this.endValue=Object.freeze(this.calculate(this.duration).value)}get state(){return this._state}isDone(){return"aborted"===this._state||"completed"===this._state}start(){const t=t=>{"pending"===this._state&&(this.startTime=t||+new Date,this._state="running",this._onStart(),this.tick(this.startTime))};this.register(),this.delay>0?setTimeout((()=>e(t)),this.delay):e(t)}tick(t){const s=(t||+new Date)-this.startTime,i=Math.min(s,this.duration);this.durationProgress=i/this.duration;const{value:r,valueProgress:a}=this.calculate(i);this.value=Object.freeze(r),this.valueProgress=a,"aborted"!==this._state&&(this._abort(this.value,this.valueProgress,this.durationProgress)?(this._state="aborted",this.unregister()):s>=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._onChange(this.value,this.valueProgress,this.durationProgress),e(this.tick)))}register(){i.push(this)}unregister(){i.remove(this)}abort(){this._state="aborted",this.unregister()}}export{o as AnimationBase};
//# sourceMappingURL=AnimationBase.min.mjs.map