UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 2.42 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{_ as t}from"../../../../chunks/tslib.es6.js";import o from"../../../../core/Accessor.js";import i from"../../../../core/Logger.js";import{deg2rad as e}from"../../../../core/mathUtils.js";import{isAbortError as a}from"../../../../core/promiseUtils.js";import{property as s}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/has.js";import"../../../../core/RandomLCG.js";import{subclass as l}from"../../../../core/accessorSupport/decorators/subclass.js";import r from"../../../../geometry/Extent.js";import n from"../../../../geometry/Point.js";import p from"./FlowDisplayData.js";import{FlowDisplayObject as c}from"./FlowDisplayObject.js";const m=1.15;let d=class extends o{constructor(t){super(t),this._flowDisplayObject=new c,this._loading=null}initialize(){this.flowContainer.addChild(this._flowDisplayObject)}destroy(){this._clear(),this.flowContainer.removeAllChildren()}get updating(){return null!=this._loading}update(t){const{flowStyle:o}=this.flowContainer;if(null==o)return void this._clear();const{extent:e,rotation:s,resolution:l,pixelRatio:r}=t.state,n=h(e,s);n.expand(m);const c=[Math.round((n.xmax-n.xmin)/l),Math.round((n.ymax-n.ymin)/l)],d=new p(o,n,c,r);if(null!=this._loading){if(this._loading.update(d))return;this._loading.detach(),this._loading=null}null!=this._flowDisplayObject.displayData&&this._flowDisplayObject.displayData.update(d)||(d.load().then((()=>{this._flowDisplayObject.clear(),this._flowDisplayObject.displayData=this._loading,this._loading=null}),(t=>{a(t)||(i.getLogger(this).error("A resource failed to load.",t),this._loading=null)})),this._loading=d)}_clear(){this._flowDisplayObject.clear(),null!=this._loading&&(this._loading.detach(),this._loading=null)}};function h(t,o){const i=new n({x:(t.xmax+t.xmin)/2,y:(t.ymax+t.ymin)/2,spatialReference:t.spatialReference}),a=t.xmax-t.xmin,s=t.ymax-t.ymin,l=Math.abs(Math.cos(e(o))),p=Math.abs(Math.sin(e(o))),c=l*a+p*s,m=p*a+l*s,d=new r({xmin:i.x-c/2,ymin:i.y-m/2,xmax:i.x+c/2,ymax:i.y+m/2,spatialReference:t.spatialReference});return d.centerAt(i),d}t([s()],d.prototype,"_loading",void 0),t([s()],d.prototype,"flowContainer",void 0),t([s()],d.prototype,"updating",null),d=t([l("esri.views.2d.engine.flow.FlowStrategy")],d);export{d as default};