UNPKG

@arcgis/core

Version:

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

3 lines (2 loc) 1.51 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.19/LICENSE.txt */ import{Manipulation as t}from"./Manipulation.js";import{createManipulatorDragEventPipeline as i,screenToMap as r}from"../../../../interactive/dragEventPipeline.js";import{GraphicManipulator as a}from"../../../../interactive/GraphicManipulator.js";import{getSymbolInfo as o}from"../../../../interactive/support/utils.js";class e extends t{constructor(t){super(),this._view=t.view,this._tool=t.tool,this._graphic=t.graphic,this._manipulator=this._createManipulator(),this.forEachManipulator(t=>this._tool.manipulators.add(t))}destroy(){this.forEachManipulator(t=>{this._tool.manipulators.remove(t),t.destroy()}),this._tool=null,this._view=null,this._manipulator=null,this._graphic=null}forEachManipulator(t){t(this._manipulator,0)}createDragPipeline(t,a){let e=null,n=null,s=0,l=0,p=0;const{offsetX:c,offsetY:h,size:u}=o(this._graphic.symbol);return i(this._manipulator,(i,o)=>{o.next(i=>{if("start"===i.action){const i=t();e=i.editGeometryOperations,n=i.constraints}return i}).next(r(this._view)).next(t=>{const{x:i,y:r,z:o}=t.mapEnd;if(n&&(i+c<n.xmin||r+h-u<n.ymin||i+c>n.xmax||r+h-u>n.ymax))return t;("start"===t.action||0===s&&0===l&&0===p)&&(s=t.mapStart.x,l=t.mapStart.y,p=t.mapStart.z);const m=i-s,_=r-l,f=o-p;s=i,l=r,p=o;const v="start"===t.action?0:1,x=e.move(m,_,f,v);return a(t,x),t})})}_createManipulator(){const t=this._view,i=this._graphic;return new a({view:t,graphic:i,selectable:!0,cursor:"move"})}}export{e as DragManipulation};