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.33/esri/copyright.txt for details. */ import{destroyMaybe as t}from"../../../core/maybe.js";import{TextureUpdate as e}from"./interfaces.js";class i{constructor(t){this._getFadeDuration=t,this._fadeStart=0,this._delayedTime=0}clear(){this._current=t(this._current),this._next=t(this._next),this._waiting=t(this._waiting),this._delayed=t(this._delayed)}get current(){if(null==this._current)return null;if(!this._isFadingEnabled){let t=null;this._delayed?(t=this._delayed,this._delayed=null):this._waiting?(t=this._waiting,this._waiting=null):this._next&&(t=this._next,this._next=null),t&&(this.clear(),this._current=t)}let s=i.test.fadeMoment;if(this._delayed&&(s=s||performance.now(),s>=this._delayedTime&&(this._push(this._delayed,n.Immediate),this._delayed=null)),this._next){s=s||performance.now();const i=this._fadeDuration,n=null!=this._current&&this._next.texture===this._current.texture,a=this._next.type!==e.FADING,r=s-this._fadeStart>=i;(n||a||r)&&(t(this._current),this._current=this._next,this._next=this._waiting,this._waiting=null,this._fadeStart=this._alignFadeStart(s))}return this._current}get next(){return this._next}get fadeFactor(){if(null==this._next)return 1;const t=i.test.fadeMoment||performance.now(),e=Math.max(0,t-this._fadeStart),n=this._fadeDuration;return e>n?0:1-e/n}get isFading(){return null!=this._next||null!=this._delayed}push(e,i=n.Immediate){this._delayed=t(this._delayed),this._push(e,i)}_push(e,s){if(this._isFadingEnabled||this.clear(),null==this._current)return void(this._current=e);const a=i.test.fadeMoment||performance.now();return s!==n.Immediate?(this._delayed=e,void(this._delayedTime=a+s)):null==this._next?(this._next=e,void(this._fadeStart=this._alignFadeStart(a))):void(null!=e&&(t(this._waiting),this._waiting=e))}get _fadeDuration(){const t=this._getFadeDuration();return this._waiting?.5*t:t}_alignFadeStart(t){const e=this._getFadeDuration();return t+e-t%e}get _isFadingEnabled(){return this._getFadeDuration()>0}static{this.test={fadeMoment:0}}}var n;!function(t){t[t.Immediate=0]="Immediate",t[t.Delayed=5e3]="Delayed"}(n||(n={}));export{n as ActivationTime,i as TextureFader};