@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 2.35 kB
JavaScript
import{_ as s}from"../../../chunks/tslib.es6.js";import{createTask as i}from"../../../core/asyncUtils.js";import e from"../../../core/Error.js";import{isSome as a,destroyMaybe as t,abortMaybe as r,isNone as o}from"../../../core/maybe.js";import{isAborted as n,createAbortError as l}from"../../../core/promiseUtils.js";import{watch as y,syncAndInitial as w}from"../../../core/reactiveUtils.js";import{property as h}from"../../../core/accessorSupport/decorators/property.js";import{subclass as c}from"../../../core/accessorSupport/decorators/subclass.js";import{LayerView3D as m}from"./LayerView3D.js";import p from"../../layers/DimensionLayerView.js";import d from"../../layers/LayerView.js";const V="analysis-view-handles";let u=class extends(m(p(d))){constructor(s){super(s),this.type="dimension-3d",this._analysisModule=null}initialize(){this.handles.add(y((()=>this.layer.source),(s=>{this._destroyAnalysisView(),a(s)&&this._createAnalysisView(s)}),w),V)}destroy(){this.handles.remove(V),this._destroyAnalysisView()}isUpdating(){return a(this._createAnalysisViewTask)||a(this.analysisView)&&this.analysisView.updating}async whenAnalysisView(){if(a(this.analysisView))return this.analysisView;if(a(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=t(this.analysisView),this._createAnalysisViewTask=r(this._createAnalysisViewTask)}async _createAnalysisViewPromise(s,i){let e=this._analysisModule;if(o(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(),n(i))throw a.destroy(),l();return a}_loadAnalysisModule(){return import("../analysis/DimensionAnalysisView3D.js")}};s([h()],u.prototype,"type",void 0),s([h()],u.prototype,"analysisView",void 0),s([h()],u.prototype,"_createAnalysisViewTask",void 0),u=s([c("esri.views.3d.layers.DimensionLayerView3D")],u);const _=u;export{_ as default};