UNPKG

@arcgis/core

Version:

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

3 lines (2 loc) 2.94 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import{__decorate as s}from"tslib";import i from"../../../../core/Accessor.js";import{createTask as e}from"../../../../core/asyncUtils.js";import a from"../../../../core/Error.js";import{abortMaybe as t,destroyMaybe as r}from"../../../../core/maybe.js";import{throwIfAborted as n,isAborted as l}from"../../../../core/promiseUtils.js";import{watch as o,syncAndInitial as y}from"../../../../core/reactiveUtils.js";import{property as w,subclass as c}from"../../../../core/accessorSupport/decorators.js";let h=class extends i{get updating(){return null!=this._createAnalysisViewTask||null!=this.analysisView&&this.analysisView.updating}constructor(s){super(s),this._analysisModule=null,this._emitOnView=(s,i)=>this.parent.view.emit(s,i)}initialize(){this.addHandles(o(()=>this.getAnalysis(),s=>this._createAnalysisView(s),y))}destroy(){this._destroyAnalysisView()}async whenAnalysisView(){if(null!=this.analysisView)return this.analysisView;if(null!=this._createAnalysisViewTask)return this._createAnalysisViewTask.promise;throw new a("layerview:no-analysisview-for-analysis","The analysis is not set on the layer of this layer view")}_createAnalysisView(s){const i=this._createAnalysisViewTask?.promise;if(this._destroyAnalysisView(),!s)return;const a=e(async e=>{try{await Promise.allSettled([i]);const a=await this._createAnalysisViewPromise(s,e);return n(e),this.analysisView=a,this._emitOnView("analysis-view-create",{analysis:s,analysisView:a}),a}catch(t){throw this._emitOnView("analysis-view-create-error",{analysis:s,error:t}),t}finally{this._createAnalysisViewTask===a&&(this._createAnalysisViewTask=null)}});this._createAnalysisViewTask=a}_destroyAnalysisView(){const s=this.getAnalysis();this._createAnalysisViewTask=t(this._createAnalysisViewTask);const{analysisView:i}=this;i&&(this.analysisView=r(i),this._emitOnView("analysis-view-destroy",{analysis:s,analysisView:i}))}async _createAnalysisViewPromise(s,i){let e,t=this._analysisModule;const r=i=>{if(!l(i))return;e?.destroy();const t=this.getAnalysis();throw new a("layerview:no-analysisview-for-analysis",null!=t&&s!==t?"The analysis changed before the analysis view could be created":"The analysis is not set on the layer of this layer view",{analysis:s})};return t||(t=await this.loadAnalysisViewModule(),r(i),this._analysisModule=t),e=new t.default({analysis:s,parent:this.parent,view:this.parent.view}),await e.when(),r(i),e}};s([w({constructOnly:!0})],h.prototype,"getAnalysis",void 0),s([w({constructOnly:!0})],h.prototype,"loadAnalysisViewModule",void 0),s([w({constructOnly:!0})],h.prototype,"parent",void 0),s([w()],h.prototype,"analysisView",void 0),s([w()],h.prototype,"_createAnalysisViewTask",void 0),s([w()],h.prototype,"updating",null),s([w()],h.prototype,"_analysisModule",void 0),h=s([c("esri.views.3d.layers.support.LayerViewAnalysisViewManager")],h);export{h as LayerViewAnalysisViewManager};