12345 |
- /*
- All material copyright ESRI, All Rights Reserved, unless otherwise specified.
- See https://js.arcgis.com/4.25/esri/copyright.txt for details.
- */
- import{_ as t}from"../../chunks/tslib.es6.js";import e from"../../core/Handles.js";import{isSome as s,isNone as i,unwrap as o}from"../../core/maybe.js";import{watch as r,initial as n,whenOnce as a}from"../../core/reactiveUtils.js";import{measurementLengthUnits as l}from"../../core/unitUtils.js";import{property as u}from"../../core/accessorSupport/decorators/property.js";import"../../core/arrayUtils.js";import"../../core/accessorSupport/ensureType.js";import{subclass as h}from"../../core/accessorSupport/decorators/subclass.js";import{load as p}from"../../geometry/projection.js";import{defaultUnitPropertyMetadata as d}from"../../properties/defaultUnit.js";import{isSupported as c,isProjectionEngineRequired as m,DistanceMeasurement2DTool as y}from"./DistanceMeasurement2DTool.js";import{InteractiveToolViewModel as f}from"../support/InteractiveToolViewModel.js";let v=class extends f{constructor(t){super(t),this.supportedViewType="2d",this.unsupportedErrorMessage="DistanceMeasurement2DViewModel is only supported in 2D views.",this._handles=new e,this.geodesicDistanceThreshold=1e5}initialize(){this._handles.add([r((()=>o(this.view)?.spatialReference),(()=>this.clear())),r((()=>this.unit),(t=>{s(this.tool)&&(this.tool.unit=t)}),n),r((()=>this.geodesicDistanceThreshold),(t=>{s(this.tool)&&(this.tool.geodesicDistanceThreshold=t)}),n)])}destroy(){this._handles&&(this._handles.destroy(),this._handles=null)}get measurement(){return s(this.tool)?this.tool.measurement:null}get measurementLabel(){return s(this.tool)?this.tool.measurementLabel:null}get state(){return this.disabled||i(this.view)||!c(this.view?.spatialReference)?"disabled":s(this.tool)&&this.measurement?this.tool.active?"measuring":"measured":"ready"}get unit(){return this._validateUnit(this.defaultUnit)}set unit(t){this._overrideIfSome("unit",this._validateUnit(t))}get unitOptions(){return l}set unitOptions(t){this._overrideIfSome("unitOptions",this._validateUnits(t))}async start(){const t=this.view;s(t)&&(await a((()=>t.ready)),m(t.spatialReference)&&await p()),this.createTool({interactive:!0})}clear(){this.removeTool()}constructTool(){return new y({view:o(this.view),visible:this.visible,geodesicDistanceThreshold:this.geodesicDistanceThreshold,unit:this.unit})}_validateUnit(t){return this.unitOptions.includes(t)?t:this.unitOptions.includes(this.defaultUnit)?this.defaultUnit:this.unitOptions[0]}_validateUnits(t=[]){const e=t.filter((t=>l.includes(t)));return 0===e.length?l.slice():e}};t([u(d)],v.prototype,"defaultUnit",void 0),t([u({type:Number})],v.prototype,"geodesicDistanceThreshold",void 0),t([u({readOnly:!0})],v.prototype,"measurement",null),t([u({readOnly:!0})],v.prototype,"measurementLabel",null),t([u({readOnly:!0})],v.prototype,"state",null),t([u({type:String})],v.prototype,"unit",null),t([u({type:[String]})],v.prototype,"unitOptions",null),v=t([h("esri.widgets.DistanceMeasurement2D.DistanceMeasurement2DViewModel")],v);const g=v;export{g as default};
|