UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 5.12 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 e from"../../../Graphic.js";import o from"../../../core/Accessor.js";import{createTask as s}from"../../../core/asyncUtils.js";import{abortMaybe as i}from"../../../core/maybe.js";import{throwIfAborted as n}from"../../../core/promiseUtils.js";import{watch as r,when as a,initial as l}from"../../../core/reactiveUtils.js";import{throttle as p}from"../../../core/throttle.js";import{property as c}from"../../../core/accessorSupport/decorators/property.js";import"../../../core/has.js";import"../../../core/Logger.js";import"../../../core/RandomLCG.js";import{subclass as m}from"../../../core/accessorSupport/decorators/subclass.js";import h from"../../../geometry/Point.js";import"../../../popup/content/AttachmentsContent.js";import"../../../popup/content/Content.js";import"../../../popup/content/CustomContent.js";import"../../../popup/content/ExpressionContent.js";import u from"../../../popup/content/FieldsContent.js";import d from"../../../popup/content/MediaContent.js";import"../../../popup/content/RelationshipContent.js";import f from"../../../popup/content/TextContent.js";import"../../../popup/content/UtilityNetworkAssociationsContent.js";import v from"../../../popup/ElementExpressionInfo.js";import _ from"../FeatureContent/FeatureContentViewModel.js";import y from"../FeatureFields/FeatureFieldsViewModel.js";import w from"../FeatureMedia/FeatureMediaViewModel.js";import{loadArcade as T,compileExpression as j}from"../support/arcadeFeatureUtils.js";const k=1;let g=class extends o{constructor(t){super(t),this._compileTask=null,this._evaluateTask=null,this.expressionInfo=null,this.graphic=null,this.contentElementViewModel=null,this.interceptor=null,this.location=null,this.view=null,this._createVM=()=>{const t=this.contentElement?.type;this.contentElementViewModel?.destroy();const e="fields"===t?new y:"media"===t?new w:"text"===t?new _:null;this._set("contentElementViewModel",e)},this._compileThrottled=p(this._startCompile,(()=>this.notifyChange("state")),k,this),this._evaluateThrottled=p(this._startEvaluate,(()=>this.notifyChange("state")),k,this),this.addHandles([r((()=>[this.expressionInfo,this.graphic]),(()=>this._compileThrottled()),l),r((()=>[this.contentElement]),(()=>this._createVM()),l),a((()=>{if(!this._compileTask?.finished)return null;const t=this._compileTask.value,e=t?.dependencies;return[t,this.spatialReference,this.map,this.view,e?.has("view-scale")?this.view?.scale:null,e?.has("view-time-extent")?this.view?.timeExtent?.start:null,e?.has("view-time-extent")?this.view?.timeExtent?.end:null]}),(([t])=>this._evaluateThrottled(t)))])}initialize(){this.addHandles([this._compileThrottled,this._evaluateThrottled])}destroy(){this._compileTask=i(this._compileTask),this._evaluateTask=i(this._evaluateTask),this.contentElementViewModel?.destroy(),this._set("contentElementViewModel",null)}get contentElement(){return this._evaluateTask?.value}get spatialReference(){return this.view?.spatialReference??null}set spatialReference(t){this._override("spatialReference",t)}get state(){const{contentElement:t,contentElementViewModel:e}=this;return this._compileThrottled.hasPendingUpdates()||this._evaluateThrottled.hasPendingUpdates()||!this._compileTask?.finished||!this._evaluateTask?.finished?"loading":t||e?"ready":"disabled"}get map(){return this.view?.map??null}set map(t){this._override("map",t)}_startCompile(){this._evaluateTask=i(this._evaluateTask),this._compileTask=i(this._compileTask),this._compileTask=s((async t=>{const{expressionInfo:e,graphic:o}=this;if(!e||!o)return null;const s=await T();n(t);const i=await j({expressionInfo:e,arcade:s,graphic:o});return n(t),i}))}_startEvaluate(t){this._evaluateTask=i(this._evaluateTask),this._evaluateTask=s((async e=>{const{graphic:o}=this;if(!t||!o)return null;const{interceptor:s,spatialReference:i,map:r,location:a,view:l}=this,p=await t.evaluate({graphic:o,interceptor:s,location:a,map:r,options:{signal:e},spatialReference:i,view:l});n(e);const c=p;if(!c||"esri.arcade.Dictionary"!==c.declaredClass)return null;const m=await c.castAsJsonAsync(e);n(e);const h=m?.type,v="media"===h?d.fromJSON(m):"text"===h?f.fromJSON(m):"fields"===h?u.fromJSON(m):null;return"media"===v.type&&!v.mediaInfos||"fields"===v.type&&!v.fieldInfos||"text"===v.type&&!v.text?null:v}))}};t([c()],g.prototype,"_compileTask",void 0),t([c()],g.prototype,"_evaluateTask",void 0),t([c({type:v})],g.prototype,"expressionInfo",void 0),t([c({type:e})],g.prototype,"graphic",void 0),t([c({readOnly:!0})],g.prototype,"contentElement",null),t([c({readOnly:!0})],g.prototype,"contentElementViewModel",void 0),t([c()],g.prototype,"interceptor",void 0),t([c({type:h})],g.prototype,"location",void 0),t([c()],g.prototype,"spatialReference",null),t([c({readOnly:!0})],g.prototype,"state",null),t([c()],g.prototype,"map",null),t([c()],g.prototype,"view",void 0),g=t([m("esri.widgets.Feature.FeatureExpression.FeatureExpressionViewModel")],g);export{g as default};