UNPKG

@arcgis/core

Version:

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

3 lines (2 loc) 2.15 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import{__decorate as e}from"tslib";import r from"../../../../core/Accessor.js";import{getOrCreateMapValue as t}from"../../../../core/MapUtils.js";import{destroyMaybe as s}from"../../../../core/maybe.js";import{throwIfAborted as o}from"../../../../core/promiseUtils.js";import{property as n}from"../../../../core/accessorSupport/decorators.js";import{subclass as a}from"../../../../core/accessorSupport/decorators/subclass.js";import{UpdatingHandles as i}from"../../../../core/support/UpdatingHandles.js";import{MeasurementWorkerHandle as u}from"../../../support/MeasurementWorkerHandle.js";let m=class extends r{constructor(){super(...arguments),this._updatingHandles=new i,this._pluginAbortControllers=new WeakMap}destroy(){this._measurementWorker=s(this._measurementWorker)}get updating(){return this._updatingHandles.updating}get test(){return{overrideUtils:e=>{this._measurementWorker?.destroy(),this._measurementWorker=e}}}preloadMeasurementUtils(){this._measurementWorker??=new u,this._measurementWorker.preloadGeodetic()}suspendPlugin(e){const r=this._pluginAbortControllers.get(e);r?.forEach(e=>e.abort()),r?.clear()}async measureArea(e,r,t,s){this._measurementWorker??=new u;const n=this._setupAbortController(e,r);return o(n.signal),this._updatingHandles.addPromise(this._measurementWorker?.autoArea2D(t,{unit:s},n.signal)?.then(({area:e})=>e))}async measureLength(e,r,t,s){this._measurementWorker??=new u;const n=this._setupAbortController(e,r);return o(n.signal),this._updatingHandles.addPromise(this._measurementWorker?.autoLength2D(t,{unit:s},n.signal))}async measureDistance(e,r,t,s){this._measurementWorker??=new u;const n=this._setupAbortController(e,r);return o(n.signal),this._updatingHandles.addPromise(this._measurementWorker?.autoDistance2DBetweenPoints(t[0],t[1],{unit:s},n.signal))}_setupAbortController(e,r){const s=t(this._pluginAbortControllers,e,()=>new Map);s.get(r)?.abort();const o=new AbortController;return s.set(r,o),o}};e([n()],m.prototype,"updating",null),m=e([a("esri.views.draw.support.managers.MeasurementManager")],m);export{m as MeasurementManager};