DirectLineMeasurement3DViewModel.js 3.4 KB

12345
  1. /*
  2. All material copyright ESRI, All Rights Reserved, unless otherwise specified.
  3. See https://js.arcgis.com/4.25/esri/copyright.txt for details.
  4. */
  5. import{_ as t}from"../../chunks/tslib.es6.js";import e from"../../analysis/DirectLineMeasurementAnalysis.js";import{isSome as i,isNone as s,unwrap as n}from"../../core/maybe.js";import{watch as r,syncAndInitial as a}from"../../core/reactiveUtils.js";import{measurementLengthUnits as l}from"../../core/unitUtils.js";import{property as o}from"../../core/accessorSupport/decorators/property.js";import"../../core/arrayUtils.js";import"../../core/accessorSupport/ensureType.js";import{subclass as u}from"../../core/accessorSupport/decorators/subclass.js";import{defaultUnitPropertyMetadata as c}from"../../properties/defaultUnit.js";import p from"../../views/3d/interactive/measurementTools/directLineMeasurement3D/DirectLineMeasurement3DTool.js";import{InteractiveAnalysisViewModel as d}from"../support/InteractiveAnalysisViewModel.js";let h=class extends d{constructor(t){super(t),this.analysis=null,this.supportedViewType="3d",this.unsupportedErrorMessage="DirectLineMeasurement3DViewModel is only supported in 3D views.",this._userUnit=null,this._userUnitOptions=null}initialize(){this.addHandles(r((()=>({analysis:this.analysis,unit:this.unit})),(({analysis:t,unit:e})=>{i(t)&&(t.unit=e)}),a))}get state(){return this.disabled||!this.ready?"disabled":s(this.tool)?"ready":this.tool.state}get measurement(){if(s(this.tool))return null;const t={mode:"euclidean",directDistance:{text:null,state:"unavailable"},horizontalDistance:{text:null,state:"unavailable"},verticalDistance:{text:null,state:"unavailable"}},{analysisViewData:e}=this.tool;if(s(e))return t;const n=e.actualVisualizedMeasurement,r=i(e.result)?"available":"unavailable";switch(n){case"euclidean":return{mode:"euclidean",directDistance:{text:e.directLabelText,state:r},horizontalDistance:{text:e.horizontalLabelText,state:r},verticalDistance:{text:e.verticalLabelText,state:r}};case"geodesic":return{mode:"geodesic",directDistance:{text:null,state:"unavailable"},horizontalDistance:{text:e.horizontalLabelText,state:r},verticalDistance:{text:e.verticalLabelText,state:r}};default:return t}}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 this._userUnit?(this._userUnit=this._findSelectableUnit(this._userUnit,this.defaultUnit),this._userUnit):this._findSelectableUnit(this.defaultUnit)}constructAnalysis(){return new e}constructTool(){return new p({view:n(this.view),analysis:this.analysis,analysisViewData:n(this.analysisView),visible:this.visible})}_findSelectableUnit(t,e){const i=this.unitOptions;return i.includes(t)?t:e?this._findSelectableUnit(e):i[0]}_filteredOrAllUnits(t){if(!t)return l.slice();const e=t.filter((t=>l.includes(t)));return 0===e.length?l.slice():e}};t([o({type:e})],h.prototype,"analysis",void 0),t([o({readOnly:!0})],h.prototype,"state",null),t([o({readOnly:!0})],h.prototype,"measurement",null),t([o()],h.prototype,"unitOptions",null),t([o()],h.prototype,"unit",null),t([o(c)],h.prototype,"defaultUnit",void 0),t([o()],h.prototype,"_userUnit",void 0),t([o()],h.prototype,"_userUnitOptions",void 0),h=t([u("esri.widgets.DirectLineMeasurement3D.DirectLineMeasurement3DViewModel")],h);const m=h;export{m as default};