UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

6 lines (5 loc) 2.25 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import{instructions as t}from"./instructions.js";function o(t){return t instanceof n?t:"object"==typeof t&&"type"in t?c[t.type].hydrate(t):new i(t)}class n{constructor(t){this.inputs=t}encode(){const t=[];for(const o of this.inputs)t.push(...o.encode());return t.push(...this.instructions),t}}class i extends n{constructor(t){super([]),this.value=t}simplify(){return this}get instructions(){if(Array.isArray(this.value)){const[o,n,i,s]=this.value;return null!=s?t.vector4.encode([o,n||0,i||0,s]):t.vector3.encode([o,n||0,i||0])}return t.scalar.encode(this.value)}}class s extends n{constructor(t,o){super([o]),this._config=t,this._parent=o}static hydrate(t){return new s(t,o(t.parent))}simplify(){if(this._config.relativeTranslation||this._config.absoluteScale)return this;const t=this._parent.simplify();if(!(t instanceof i))return this;const[o,n,r,c]=t.value,e=this._config.translation.from[0],a=this._config.translation.from[1],f=this._config.rotation.from,h=this._config.scale.from;if(e===this._config.translation.to[0]&&a===this._config.translation.to[1]&&f===this._config.rotation.to&&h===this._config.scale.to){const t=r+f,s=c*h,u=Math.sin(r),l=Math.cos(r);return new i([l*c*e-u*c*a+o,u*c*e+l*c*a+n,t,s])}return new s(this._config,t)}get instructions(){return t.animatedTransform.encode(this._config)}}class r extends n{constructor(t,o){super([o]),this._config=t,this._parent=o}static hydrate(t){return new r(t,o(t.parent))}simplify(){const t=this._parent.simplify();if(!(t instanceof i))return this;const[o,n,s,c]=t.value,e=this._config.color.from[0],a=this._config.color.from[1],f=this._config.color.from[2];let h=this._config.color.from[3];const u=this._config.opacity.from;return e===this._config.color.to[0]&&a===this._config.color.to[1]&&f===this._config.color.to[2]&&h===this._config.color.to[3]&&u===this._config.opacity.to?(h*=u,new i([o*e,n*a,s*f,c*h])):new r(this._config,t)}get instructions(){return t.animatedColor.encode(this._config)}}const c={AnimatedTransform:s,AnimatedColor:r};export{n as AAnimationInfo,r as AnimatedColor,s as AnimatedTransform,i as Constant,o as hydrate};