@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 3.75 kB
JavaScript
/*
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"../../core/Logger.js";import"../../core/has.js";import"../../core/RandomLCG.js";import"../../core/Error.js";import{subclass as e}from"../../core/accessorSupport/decorators/subclass.js";import i from"../../geometry/Point.js";import o from"./DrawAction.js";import{DrawTool as r}from"./DrawTool.js";import{CursorUpdateEvent as s,DrawCompleteEvent as n}from"./input/DrawEvents.js";import{ViewEventPriorities as a}from"../input/InputManager.js";import{sketchKeys as d}from"../interactive/keybindings.js";import{createScreenPointFromEvent as h}from"../support/screenUtils.js";let p=class extends o{constructor(t){super(t),this._addVertexOnPointerUp=!1,this._drawTool=null}initialize(){this._addViewHandles(),"3d"===this.view.type&&this._addDrawTool()}destroy(){this._removeDrawTool(),this.emit("destroy")}complete(){this._completeDrawing()}_addViewHandles(){this._addViewHandles2DOnly(),this.addHandles([this.view.on("key-down",(t=>{t.key===d.complete&&(this._drawTool?this.complete():(this._abortSnapping(),this._vertexAddHandler(t)))}),a.TOOL)])}_addViewHandles2DOnly(){"2d"===this.view.type&&this.addHandles([this.view.on("pointer-down",(t=>{this._shouldHandlePointerEvent(t)&&(this._abortSnapping(),this._activePointerId=t.pointerId,this._addVertexOnPointerUp=!0,this._cursorScreenPoint=h(t),"touch"===t.pointerType&&this._updateCursor())}),a.TOOL),this.view.on("pointer-move",(t=>{this._abortSnapping(),this._cursorScreenPoint=h(t),"touch"!==t.pointerType&&this._updateCursor()}),a.TOOL),this.view.on("pointer-drag",(t=>{this._shouldHandlePointerEvent(t)&&(this._abortSnapping(),this._addVertexOnPointerUp=!1)}),a.TOOL),this.view.on("pointer-up",(t=>{if(this._shouldHandlePointerEvent(t))if(this._abortSnapping(),this._activePointerId=null,this._addVertexOnPointerUp)t.stopPropagation(),this._vertexAddHandler(t);else{const e="touch"===t.pointerType;this._updateCursor(e)}}),a.TOOL),this.view.on("drag",["Shift"],(t=>{t.stopPropagation()}),a.TOOL)])}_addDrawTool(){const t=new r({view:this.view,elevationInfo:this.elevationInfo,hasZ:this.hasZ,geometryType:"point",mode:"click"});this._drawTool=t,this.view.addAndActivateTool(t),this.addHandles([t.on("cursor-update",(e=>{1===e.vertices.length&&this.emit("cursor-update",new s(this.view,e.vertices[0].vertexIndex,t.getVertexCoords()))})),t.on("complete",(e=>{this.emit("draw-complete",new n(t.getVertexCoords())),this._removeDrawTool(),this.removeAllHandles()}))])}_removeDrawTool(){this._drawTool&&(this.view.tools.remove(this._drawTool),this._drawTool=null)}_addVertex(t){const e=this._coordinateHelper.arrayToVector(t);this._isDuplicateOfLastVertex(e)||(this._lastVertexUnsnapped=this._stagedVertexUnsnapped,this._popCursorVertex(),this._editGeometryOperations.appendVertex(e),this.notifyChange("vertices"),this._completeDrawing())}_updateCursor(t=!1){if(this._popCursorVertex(),!this._cursorScreenPoint)return;const e=this.getCoordsAndPointFromScreenPoint(this._cursorScreenPoint);null==e||t||this._pushCursorVertex(e.vertex,(()=>this.emit("cursor-update",new s(this.view,this._activeComponent.vertices.length,this.vertices,null!=this._stagedVertex?new i(this._stagedVertex):null))))}_completeDrawing(){if(this._drawTool)return void this._drawTool.completeCreateOperation();this._activePointerId=null,this._popCursorVertex(),this._abortSnapping(),null!=this._snappingManager&&this._snappingManager.doneSnapping();const t=new n(this.vertices);this.emit("draw-complete",t),t.defaultPrevented||this.removeAllHandles()}};p=t([e("esri.views.draw.PointDrawAction")],p);const l=p;export{l as default};