UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 3.04 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import{_ as t}from"../../chunks/tslib.es6.js";import e from"../../analysis/AreaMeasurementAnalysis.js";import{watch as i,syncAndInitial as s}from"../../core/reactiveUtils.js";import{measurementAreaUnits as n}from"../../core/unitUtils.js";import{property as r}from"../../core/accessorSupport/decorators/property.js";import"../../core/has.js";import"../../core/Logger.js";import"../../core/RandomLCG.js";import{subclass as l}from"../../core/accessorSupport/decorators/subclass.js";import{defaultUnitPropertyMetadata as a}from"../../properties/defaultUnit.js";import o from"../../views/3d/interactive/measurementTools/areaMeasurement3D/AreaMeasurement3DTool.js";import{InteractiveAnalysisViewModel as u}from"../support/InteractiveAnalysisViewModel.js";let p=class extends u{constructor(t){super(t),this.analysis=null,this.supportedViewType="3d",this.unsupportedErrorMessage="AreaMeasurement3DViewModel is only supported in 3D views.",this._userUnitOptions=null,this._userUnit=null}initialize(){this.addHandles(i((()=>({analysis:this.analysis,unit:this.unit})),(({analysis:t,unit:e})=>{null!=t&&(t.unit=e)}),s))}get state(){return this.disabled||!this.ready?"disabled":null==this.tool?"ready":this.tool.state}get measurement(){if(null==this.tool||this.disabled||this.tool.destroyed)return null;const{analysisView:t}=this;if(null==t)return null;const e=t.analysisVisualization,i=e.viewData,s=i.validMeasurement,n="euclidean"===i.mode,r=0===i.intersectingSegments.size,l=r?s?"available":"unavailable":"invalid";return{mode:n?"euclidean":"geodesic",area:{text:r&&s?e.areaLabel:null,state:l},perimeterLength:{text:r&&s?e.perimeterLengthLabel:null,state:l}}}set unitOptions(t){this._userUnitOptions=t,this._set("unitOptions",this._filteredOrAllUnits(this._userUnitOptions))}get unitOptions(){return this._filteredOrAllUnits(this._userUnitOptions)}set unit(t){this._userUnit=t?this._findSelectableUnit(t,this._userUnit):null}get unit(){return null!=this._userUnit?(this._userUnit=this._findSelectableUnit(this._userUnit,this.defaultUnit),this._userUnit):this._findSelectableUnit(this.defaultUnit)}constructAnalysis(){return new e}constructTool(){return new o({view:this.view,analysis:this.analysis,analysisViewData:this.analysisView,visible:this.visible})}_findSelectableUnit(t,e){const{unitOptions:i}=this;return i.includes(t)?t:null!=e?this._findSelectableUnit(e):i[0]}_filteredOrAllUnits(t){if(null==t)return n.slice();const e=t.filter((t=>n.includes(t)));return 0===e.length?n.slice():e}};t([r({type:e})],p.prototype,"analysis",void 0),t([r({readOnly:!0})],p.prototype,"state",null),t([r({readOnly:!0})],p.prototype,"measurement",null),t([r()],p.prototype,"unitOptions",null),t([r()],p.prototype,"unit",null),t([r(a)],p.prototype,"defaultUnit",void 0),t([r()],p.prototype,"_userUnit",void 0),p=t([l("esri.widgets.AreaMeasurement3D.AreaMeasurement3DViewModel")],p);const d=p;export{d as default};