@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 3.61 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 i from"../../../../../core/Handles.js";import{handlesGroup as a}from"../../../../../core/handleUtils.js";import has from"../../../../../core/has.js";import{when as t}from"../../../../../core/reactiveUtils.js";import{ManipulatorType as n}from"../ManipulatorType.js";import{discRadiusSmall as e,discRadius as s}from"./config.js";import{InteractiveManipulation as o}from"./InteractiveManipulation.js";import{MoveXYAxisManipulation as l}from"./MoveXYAxisManipulation.js";import{MoveXYDiscManipulation as r}from"./MoveXYDiscManipulation.js";import{MoveZManipulation as p}from"./MoveZManipulation.js";class u extends o{constructor(a){super(),this._handles=new i;const{tool:t,view:n,snapToScene:e,radius:s}=a;this._view=n,this.xyManipulation=new r({tool:t,view:n,snapToScene:e,radius:s}),this.xyAxisManipulation=new l({tool:t,view:n,radius:s}),this.zManipulation=new p({tool:t,view:n,radius:s}),this.xyManipulation.available=a.xyAvailable,this.xyAxisManipulation.available=a.xyAxisAvailable,this.zManipulation.available=a.zAvailable,this._autoHideXYAxis(),this.forEachManipulator((i=>this._handles.add(i.events.on("grab-changed",(()=>this._updateManipulatorInteractivity())))))}destroy(){this._handles.destroy(),this.xyManipulation.destroy(),this.xyAxisManipulation.destroy(),this.zManipulation.destroy()}createManipulatedObjectDragPipeline(i,t,n){return a([this.xyManipulation.createManipulatedObjectDragPipeline(((a,t,n,e,s)=>i(c.XY,a,t,n,e,s)),t,n),this.xyAxisManipulation.createManipulatedObjectDragPipeline(((a,t,n,e,s)=>i(c.XY_AXIS,a,t,n,e,s)),t,n),this.zManipulation.createManipulatedObjectDragPipeline(((a,t,n,e,s)=>i(c.Z,a,t,n,e,s)),t,n)])}createDragPipeline(i,t,n,e){return a([this.xyManipulation.createDragPipeline(((a,t,n,e,s)=>i(c.XY,a,t,n,e,s)),t,n,e),this.xyAxisManipulation.createDragPipeline(((a,t,n,e,s)=>i(c.XY_AXIS,a,t,n,e,s)),t,n,e),this.zManipulation.createDragPipeline(((a,t,n,e,s)=>i(c.Z,a,t,n,e,s)),n)])}set snapToScene(i){this.xyManipulation.snapToScene=i}set angle(i){this.xyAxisManipulation.angle=i}set radius(i){this.xyAxisManipulation.radius=i,this.xyManipulation.radius=i,this.zManipulation.radius=i}set displayScale(i){this.xyManipulation.displayScale=i,this.xyAxisManipulation.displayScale=i}forEachManipulator(i){this.xyManipulation.forEachManipulator((a=>i(a,n.TRANSLATE_XY))),this.xyAxisManipulation.forEachManipulator((a=>i(a,n.TRANSLATE_XY))),this.zManipulation.forEachManipulator((a=>i(a,n.TRANSLATE_Z)))}get _xyAxisVisible(){const i=this.xyManipulation.someManipulator((i=>i.focused))||this.xyAxisManipulation.someManipulator((i=>i.focused));return this._view.inputManager&&"touch"===this._view.inputManager.latestPointerType||i}_autoHideXYAxis(){const i=this.xyAxisManipulation,a=this.xyManipulation;if(has("esri-mobile"))return;const n=[];a.forEachManipulator((i=>n.push(i))),i.forEachManipulator((i=>n.push(i)));const e=()=>{const a=[];this._xyAxisVisible||i.forEachManipulator((i=>a.push(i.disableDisplay()))),this._handles.remove(h),this._handles.add(a,h)};for(const t of n)this._handles.add(t.events.on("focus-changed",e));this._view.inputManager&&this._handles.add(t((()=>this._view.inputManager?.latestPointerType),e)),e()}static radiusForSymbol(i){const a=null!=i&&"point-3d"===i.type&&i.symbolLayers;return!!a&&a.some((i=>"icon"===i.type))?e:s}}const h="disable-xy-axis-display";var c;!function(i){i[i.XY=0]="XY",i[i.XY_AXIS=1]="XY_AXIS",i[i.Z=2]="Z"}(c||(c={}));export{c as ManipulationType,u as MoveManipulation};