@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 5.97 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import{__decorate as e}from"tslib";import t from"../../../core/Accessor.js";import r from"../../../core/Error.js";import{makeHandle as o}from"../../../core/handleUtils.js";import{createScalar as a,createLength as i,toUnit as s}from"../../../core/quantity.js";import{generateUUID as n}from"../../../core/uuid.js";import{property as l}from"../../../core/accessorSupport/decorators/property.js";import{subclass as d}from"../../../core/accessorSupport/decorators/subclass.js";import{isWebMercator as p,isGeographic as u}from"../../../geometry/support/spatialReferenceUtils.js";import{createViewAlignedCoordinateSystem as c}from"./surfaceCoordinateSystems.js";import{knownFieldDisplayOrders as m}from"./types.js";import{createGeographicCoordinate as g}from"../../interactive/tooltip/fields/parsingAndFormattingUtils.js";import{elevationFromPoint as h}from"../../support/euclideanLengthMeasurementUtils.js";const f={x:m.Coordinates+10,y:m.Coordinates+11,elevation:m.Coordinates+12};let w=class extends t{constructor(e){super(e)}normalizeCtorArgs(e){const{drawTool:t,plugin:r,...o}=e;return{_drawTool:t,_plugin:r,...o}}get positionOfLastUserInput(){return this._drawTool.positionOfLastUserInput}getSession(e){return this._drawTool.editSessionManager.getSession(e)}createInteractiveHandle(e,t){const o=this._drawTool.interactiveHandleManager,i=this._drawTool.tooltipManager,s=this._plugin,l=this.session,d=this._drawTool.coordinateHelper;if(!o||!i)throw new r("draw-tool:interactive-handle-missing-dependencies","Attempted to set up an interactive handle without required dependencies.");const c=e.name??n(),m=e.defaultCaptureMode??"capture-always",h=o.registerHandle(s,{...e,name:c,editSession:l,defaultCaptureMode:m,captureMode:m});if(this._drawTool.addPromise(o.setupManipulatorForHandle(h,this._drawTool.lastScreenPosition,this._drawTool.movementCommandContext)),!t?.disableDefaultXYFields){const e=d.spatialReference;p(e)||u(e)?(i.createMeasuredField(s,{id:Symbol(`tooltip-long-${c}`),preset:"longitude",getMeasurementInput:()=>h.outputMapPosition,measure:async e=>g(e?.longitude),fieldProperties:{displayOrder:f.x},fieldFilters:{appliesToHandlesWithName:c}}),i.createMeasuredField(s,{id:Symbol(`tooltip-lat-${c}`),preset:"latitude",getMeasurementInput:()=>h.outputMapPosition,measure:async e=>g(e?.latitude),fieldProperties:{displayOrder:f.y},fieldFilters:{appliesToHandlesWithName:c}})):(i.createMeasuredField(s,{id:Symbol(`tooltip-x-${c}`),preset:"x",getMeasurementInput:()=>h.outputMapPosition,measure:async e=>e?a(e.x):null,fieldProperties:{displayOrder:f.x},fieldFilters:{appliesToHandlesWithName:c}}),i.createMeasuredField(s,{id:Symbol(`tooltip-y-${c}`),preset:"y",getMeasurementInput:()=>h.outputMapPosition,measure:async e=>e?a(e.y):null,fieldProperties:{displayOrder:f.y},fieldFilters:{appliesToHandlesWithName:c}})),this._drawTool.hasZ&&"primary"===h.role&&i.createMeasuredField(s,{id:Symbol(`tooltip-z-${c}`),preset:"elevation",getMeasurementInput:()=>h.outputMapPosition,measure:async(e,t)=>this.measureElevation(e,t.inputUnitInfos.verticalLength.unit),fieldProperties:{displayOrder:f.elevation},fieldFilters:{appliesToHandlesWithName:c}})}return h}removeInteractiveHandle(e){const t=e;this._drawTool.interactiveHandleManager?.unregisterHandle(this._plugin,t)}createConstraint(e,t){this._drawTool.interactiveHandleManager?.registerCustomConstraint(this._plugin,e,t)}removeConstraint(e){this._drawTool.interactiveHandleManager?.unregisterCustomConstraint(this._plugin,e)}createCustomField(e){if(!this._drawTool.tooltipManager)throw new r("draw-tool:tooltip-manager-missing","Attempted to create a field without access to a tooltip manager.");return this._drawTool.tooltipManager.createCustomField(this._plugin,e)}createMeasuredField(e){if(!this._drawTool.tooltipManager)throw new r("draw-tool:tooltip-manager-missing","Attempted to create a field without access to a tooltip manager.");return this._drawTool.tooltipManager.createMeasuredField(this._plugin,e)}requestComplete(){this._drawTool.complete(this._plugin)}requestCancel(e){this._drawTool.lifecycleManager.cancel(this._plugin)}requestBeginDownstreamPlugin(e,t){this._drawTool.lifecycleManager.begin([e],this._plugin,t?.cancelExisting)}async measureLength(e,t,r,o){const{_drawTool:a,_plugin:i}=this;if("tooltip"!==r||a.tooltipManager?.effectiveEnabled)return await a.measurementManager.measureLength(i,t,e,o)}async measureArea(e,t,r,o){const{_drawTool:a,_plugin:i}=this;if("tooltip"!==r||a.tooltipManager?.effectiveEnabled)return await a.measurementManager.measureArea(i,t,e,o)}async measureDistance(e,t,r,o){const{_drawTool:a,_plugin:i}=this;if("tooltip"!==r||a.tooltipManager?.effectiveEnabled)return await a.measurementManager.measureDistance(i,t,e,o)}measureElevation(e,t){const r=this._drawTool;let o=h(e);if(!o){const e=r.surfaceManager?.metersPerVerticalUnit;e&&(o=i(r.defaultZ*e,"meters"))}return t&&o&&o.unit!==t?s(o,t):o}getGlobalState(){return this._drawTool.globalStateManager.getGlobalState()}setGlobalState(e,t){this._drawTool.globalStateManager.setGlobalState(this._plugin,e,t)}addOrUpdateGraphic(e,t){const{_plugin:r,_drawTool:a}=this,i=a.renderer;i?.addOrUpdateGraphic(e,t),r.hasHandles(e)||r.addHandles(o(()=>i?.removeGraphic(e)),e)}addOrUpdateVisual(e,t){const r=this._plugin,a=this._drawTool.renderer;a?.addOrUpdateVisual(e,t),r.hasHandles(e)||r.addHandles(o(()=>a?.removeVisual(e)),e)}removeGraphic(e){this._plugin.removeHandles(e)}removeVisual(e){this._plugin.removeHandles(e)}getViewInformation(){return this._drawTool.view}getViewAlignedSurfaceCoordinateSystem(e){const{view:t,coordinateHelper:r}=this._drawTool;return t&&r?c(t,r.pointToVector(e)):null}};e([l()],w.prototype,"_plugin",void 0),e([l()],w.prototype,"_drawTool",void 0),e([l({nonNullable:!0})],w.prototype,"session",void 0),e([l()],w.prototype,"positionOfLastUserInput",null),w=e([d("esri.views.draw.support.PluginContext")],w);export{w as PluginContext};