UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 3.73 kB
import i from"../../../../../core/Handles.js";import{handlesGroup as a}from"../../../../../core/handleUtils.js";import has from"../../../../../core/has.js";import{isSome as t}from"../../../../../core/maybe.js";import{when as n}from"../../../../../core/reactiveUtils.js";import{ManipulatorType as e}from"../ManipulatorType.js";import{DISC_RADIUS_SMALL as s,DISC_RADIUS as o}from"./config.js";import{Manipulation as r}from"./Manipulation.js";import{MoveXYAxisManipulation as l}from"./MoveXYAxisManipulation.js";import{MoveXYDiscManipulation as p}from"./MoveXYDiscManipulation.js";import{MoveZManipulation as h}from"./MoveZManipulation.js";class u extends r{constructor(a){super(),this._handles=new i,this._interactive=!0;const{tool:t,view:n,snapToScene:e,radius:s}=a;this._view=n,this.xyManipulation=new p({tool:t,view:n,snapToScene:e,radius:s}),this.xyAxisManipulation=new l({tool:t,view:n,radius:s}),this.zManipulation=new h({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()}createGraphicDragPipeline(i,t,n){return a([this.xyManipulation.createGraphicDragPipeline(((a,t,n,e,s)=>i(M.XY,a,t,n,e,s)),t,n),this.xyAxisManipulation.createGraphicDragPipeline(((a,t,n,e,s)=>i(M.XY_AXIS,a,t,n,e,s)),t,n),this.zManipulation.createGraphicDragPipeline(((a,t,n,e,s)=>i(M.Z,a,t,n,e,s)),t,n)])}createDragPipeline(i,t,n,e){return a([this.xyManipulation.createDragPipeline(((a,t,n,e,s)=>i(M.XY,a,t,n,e,s)),t,n,e),this.xyAxisManipulation.createDragPipeline(((a,t,n,e,s)=>i(M.XY_AXIS,a,t,n,e,s)),t,n,e),this.zManipulation.createDragPipeline(((a,t,n,e,s)=>i(M.Z,a,t,n,e,s)),n)])}set snapToScene(i){this.xyManipulation.snapToScene=i}set angle(i){this.xyAxisManipulation.angle=i}set interactive(i){this._interactive!==i&&(this._interactive=i,this._updateManipulatorInteractivity())}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,e.TRANSLATE_XY))),this.xyAxisManipulation.forEachManipulator((a=>i(a,e.TRANSLATE_XY))),this.zManipulation.forEachManipulator((a=>i(a,e.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 t=[];a.forEachManipulator((i=>t.push(i))),i.forEachManipulator((i=>t.push(i)));const e=()=>{const a=[];this._xyAxisVisible||i.forEachManipulator((i=>a.push(i.disableDisplay()))),this._handles.remove(c),this._handles.add(a,c)};for(const n of t)this._handles.add(n.events.on("focus-changed",e));this._view.inputManager&&this._handles.add(n((()=>this._view.inputManager?.latestPointerType),e)),e()}_updateManipulatorInteractivity(){const i=this.grabbing;this.forEachManipulator((a=>{a.interactive=!i&&this._interactive||a.grabbing}))}static radiusForSymbol(i){const a=t(i)&&"point-3d"===i.type&&i.symbolLayers;return!!a&&a.length>0&&a.some((i=>"icon"===i.type))?s:o}}const c="disable-xy-axis-display";var M;!function(i){i[i.XY=0]="XY",i[i.XY_AXIS=1]="XY_AXIS",i[i.Z=2]="Z"}(M||(M={}));export{M as ManipulationType,u as MoveManipulation};