@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 2.56 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import{_ as s}from"../../../chunks/tslib.es6.js";import{createTask as i}from"../../../core/asyncUtils.js";import e from"../../../core/Error.js";import{destroyMaybe as a,abortMaybe as t}from"../../../core/maybe.js";import{isAborted as r}from"../../../core/promiseUtils.js";import{watch as n,syncAndInitial as l}from"../../../core/reactiveUtils.js";import{property as o}from"../../../core/accessorSupport/decorators/property.js";import{subclass as y}from"../../../core/accessorSupport/decorators/subclass.js";import{LayerView3D as w}from"./LayerView3D.js";import h from"../../layers/LayerView.js";const c="analysis-view-handles";let p=class extends(w(h)){constructor(s){super(s),this.type="line-of-sight-3d",this._analysisModule=null}initialize(){this.addHandles(n((()=>this.layer.analysis),(s=>{this._destroyAnalysisView(),null!=s&&this._createAnalysisView(s)}),l),c)}destroy(){this.removeHandles(c),this._destroyAnalysisView()}async whenAnalysisView(){if(null!=this.analysisView)return this.analysisView;if(null!=this._createAnalysisViewTask)return this._createAnalysisViewTask.promise;throw new e("layerview:no-analysisview-for-analysis","The analysis has not been set on the LineOfSightLayer of this layer view")}isUpdating(){return null!=this._createAnalysisViewTask||null!=this.analysisView&&this.analysisView.updating}_createAnalysisView(s){const e=i((async i=>(this.analysisView=await this._createAnalysisViewPromise(s,i),this._createAnalysisViewTask===e&&(this._createAnalysisViewTask=null),this.analysisView)));this._createAnalysisViewTask=e}_destroyAnalysisView(){this.analysisView=a(this.analysisView),this._createAnalysisViewTask=t(this._createAnalysisViewTask)}async _createAnalysisViewPromise(s,i){let a=this._analysisModule;if(null==a){const s=await this._loadAnalysisModule();this._analysisModule=s,a=s}const t=new a.default({analysis:s,view:this.view,parent:this});if(await t.when(),r(i))throw t.destroy(),new e("layerview:no-analysisview-for-analysis","The analysis has not been added to the LineOfSightLayer of this layer view",{analysis:s});return t}_loadAnalysisModule(){return import("../analysis/LineOfSightAnalysisView3D.js")}};s([o()],p.prototype,"type",void 0),s([o()],p.prototype,"layer",void 0),s([o()],p.prototype,"analysisView",void 0),s([o()],p.prototype,"_createAnalysisViewTask",void 0),p=s([y("esri.views.3d.layers.LineOfSightLayerView3D")],p);const d=p;export{d as default};