@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 2.48 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,createAbortError as o}from"../../../core/promiseUtils.js";import{watch as n,syncAndInitial as l}from"../../../core/reactiveUtils.js";import{property as y}from"../../../core/accessorSupport/decorators/property.js";import{subclass as w}from"../../../core/accessorSupport/decorators/subclass.js";import{LayerView3D as c}from"./LayerView3D.js";import h from"../../layers/DimensionLayerView.js";import m from"../../layers/LayerView.js";const p="analysis-view-handles";let d=class extends(c(h(m))){constructor(s){super(s),this.type="dimension-3d",this._analysisModule=null}initialize(){this.addHandles(n((()=>this.layer.source),(s=>{this._destroyAnalysisView(),null!=s&&this._createAnalysisView(s)}),l),p)}destroy(){this.removeHandles(p),this._destroyAnalysisView()}isUpdating(){return null!=this._createAnalysisViewTask||null!=this.analysisView&&this.analysisView.updating}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 DimensionLayer of this layer view")}_createAnalysisView(s){const e=i((async i=>(this.analysisView=await this._createAnalysisViewPromise(s,i),this._createAnalysisViewTask===e&&(this._createAnalysisViewTask=null),this.analysisView)));this.addResolvingPromise(e.promise),this._createAnalysisViewTask=e}_destroyAnalysisView(){this.analysisView=a(this.analysisView),this._createAnalysisViewTask=t(this._createAnalysisViewTask)}async _createAnalysisViewPromise(s,i){let e=this._analysisModule;if(null==e){const s=await this._loadAnalysisModule();this._analysisModule=s,e=s}const a=new e.default({analysis:s,view:this.view,parent:this});if(await a.when(),r(i))throw a.destroy(),o();return a}_loadAnalysisModule(){return import("../analysis/DimensionAnalysisView3D.js")}};s([y()],d.prototype,"type",void 0),s([y()],d.prototype,"analysisView",void 0),s([y()],d.prototype,"_createAnalysisViewTask",void 0),d=s([w("esri.views.3d.layers.DimensionLayerView3D")],d);const V=d;export{V as default};