@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 2.08 kB
JavaScript
import{ViewingMode as e}from"../../../ViewingMode.js";import{GamepadKeyboardController as t}from"../../state/controllers/GamepadKeyboardController.js";import{InputHandler as r}from"../../../input/InputHandler.js";var a;!function(e){e[e.LEFT=0]="LEFT",e[e.RIGHT=1]="RIGHT",e[e.FORWARD=2]="FORWARD",e[e.BACKWARD=3]="BACKWARD",e[e.UP=4]="UP",e[e.DOWN=5]="DOWN",e[e.HEADINGLEFT=6]="HEADINGLEFT",e[e.HEADINGRIGHT=7]="HEADINGRIGHT",e[e.TILTUP=8]="TILTUP",e[e.TILTDOWN=9]="TILTDOWN",e[e.ZOOMIN=10]="ZOOMIN",e[e.ZOOMOUT=11]="ZOOMOUT"}(a||(a={}));class o extends r{constructor(t,r){super(!0),this._view=t,this._disableMovements={pan:!0,zoom:!1,ascend:!0,rotate:!1,mode:e.Local},this._keyToNumber={[r.left]:a.LEFT,[r.right]:a.RIGHT,[r.forward]:a.FORWARD,[r.backward]:a.BACKWARD,[r.up]:a.UP,[r.down]:a.DOWN,[r.headingLeft]:a.HEADINGLEFT,[r.headingRight]:a.HEADINGRIGHT,[r.tiltUp]:a.TILTUP,[r.tiltDown]:a.TILTDOWN,[r.zoomIn]:a.ZOOMIN,[r.zoomOut]:a.ZOOMOUT},this.registerIncoming("key-down",null,(e=>this._handleKeyDown(e))),this.registerIncoming("key-up",null,(e=>this._handleKeyUp(e))),this.registerIncoming("blur",null,(()=>this._handleBlur()))}_handleKeyDown(e){if(e.data.native.ctrlKey||e.data.native.metaKey)return;const r=this._keyToNumber[e.data.key];null!=r&&(this._cameraControllerKeyboard&&this._cameraControllerKeyboard.active||(this._cameraControllerKeyboard=new t({view:this._view,disableMovements:this._disableMovements}),this._view.state.switchCameraController(this._cameraControllerKeyboard)),this._cameraControllerKeyboard.active&&(this._cameraControllerKeyboard.activateDirection(r),e.stopPropagation()))}_handleBlur(){this._cameraControllerKeyboard&&this._cameraControllerKeyboard.active&&(this._cameraControllerKeyboard.finishController(),this._cameraControllerKeyboard=null)}_handleKeyUp(e){if(e.data.native.ctrlKey||e.data.native.metaKey)return;const t=this._keyToNumber[e.data.key];null!=t&&this._cameraControllerKeyboard&&this._cameraControllerKeyboard.active&&(this._cameraControllerKeyboard.deactivateDirection(t),e.stopPropagation())}}export{o as KeyboardNavigation};