@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 1.31 kB
JavaScript
import{Milliseconds as t,millisecondsFromSeconds as i,Seconds as e}from"../../../core/time.js";import{inOutCoastQuad as n,outExpo as a}from"../easing.js";import{Definition as s}from"./Definition.js";import{defaultSettings as o}from"./Settings.js";import{Path as r}from"./apex/Path.js";const m={zoom:0,pan:0,rotate:0};let h=class{get time(){return this._time}constructor(i){this._createCamera=i,this._time=t(0),this.definition=new s(i),this.path=new r}update(t,s,o){this.definition.update(t,s,o),this.path.update(this.definition,o),this._time=this._applyTimeSettings(i(isFinite(this.path.time)?this.path.time:e(0)),o),this._easing=o.easing?o.easing:this._time>=1e3?n:a}cameraAt(t,i){i=i||this._createCamera(),t=Math.min(Math.max(0,t),1),t=this._normalizedEasing(t);const e=this.path.interpolateComponentsAt(t,m);return i.interpolate(this.definition.source,this.definition.target,e),i}_normalizedEasing(t){const i=this._easing(0,this._time),e=this._easing(1,this._time);return(this._easing(t,this._time)-i)/(e-i)}_applyTimeSettings(i,e){const n=null!=e.speedFactor?e.speedFactor:1;null!=e.duration?i=e.duration:null!=e.speedFactor&&(i=t(i/n));const a=null!=e.minDuration?e.minDuration:o.minDuration/n,s=null!=e.maxDuration?e.maxDuration:o.maxDuration/n;return t(Math.min(Math.max(a,i),s))}};export{h as Animation};