UNPKG

thematic-earth

Version:

HTML-based, whole-Earth thematic maps using locally hosted data layers

2 lines 2.3 kB
/* Copyright (c) 2023 Read Write Tools. Legal use subject to the Thematic Earth Software License Agreement. */ import GestureBroadcaster from'./gesture-broadcaster.class.js';export default class PointerHandler{constructor(e){this.thematicEarthElement=e,this.canvas=this.thematicEarthElement.canvas,this.signal=this.thematicEarthElement.signal,this.gestureBroadcaster=new GestureBroadcaster(this.signal),this.registerEventListeners()}registerEventListeners(){this.canvas.addEventListener('pointerdown',this.onDown.bind(this)),this.canvas.addEventListener('pointermove',this.onMove.bind(this)),this.canvas.addEventListener('pointerup',this.onUp.bind(this)),this.canvas.addEventListener('pointercancel',this.onCancel.bind(this)),this.canvas.addEventListener('mousemove',this.onMouseMove.bind(this)),this.canvas.addEventListener('pointerover',this.onOver.bind(this)),this.canvas.addEventListener('pointerout',this.onOut.bind(this)),this.canvas.addEventListener('pointerenter',this.onEnter.bind(this)),this.canvas.addEventListener('pointerleave',this.onLeave.bind(this)),this.canvas.addEventListener('gotpointercapture',this.onCaptured.bind(this)),this.canvas.addEventListener('lostpointercapture',this.onReleased.bind(this))}onDown(e){this.gestureBroadcaster.addFinger(e),this.gestureBroadcaster.sendInitialGesture(),this.thematicEarthElement.userInterface.captureEarthState(),this.canvas.setPointerCapture(e.pointerId),e.preventDefault()}onMove(e){this.gestureBroadcaster.updateFinger(e),this.gestureBroadcaster.sendIntermediateGesture(),e.preventDefault()}onUp(e){this.gestureBroadcaster.updateFinger(e),this.gestureBroadcaster.sendFinalGesture(),this.gestureBroadcaster.removeFinger(e),this.canvas.releasePointerCapture(e.pointerId),e.preventDefault()}onCancel(e){this.gestureBroadcaster.cancelFingers(),e.preventDefault()}onMouseMove(e){var t={x:e.offsetX,y:e.offsetY};1==e.ctrlKey?this.signal.broadcast('mouse/hover/ctrlkey',t):1==e.altKey?this.signal.broadcast('mouse/hover/altkey',t):1==e.shiftKey?this.signal.broadcast('mouse/hover/shiftkey',t):this.signal.broadcast('mouse/hover/nokey',t),e.preventDefault()}onOver(e){e.preventDefault()}onEnter(e){e.preventDefault()}onOut(e){e.preventDefault()}onLeave(e){e.preventDefault()}onCaptured(e){e.preventDefault()}onReleased(e){e.preventDefault()}}