@scandit/web-datacapture-barcode
Version:
Scandit Data Capture SDK for the Web
1 lines • 1.76 kB
JavaScript
import{didDrag as e}from"../utils/didDrag.js";import{longPressEndEvent as t,longPressStartEvent as n}from"../constants/events.js";import{Timeout as r}from"@scandit/web-datacapture-core/build/js/private/utils/timeout.js";var i=class extends Event{constructor(e){super(e)}},a=class{constructor(e){this.elementsAllowedToTriggerLongPressEvents=new Set,this.isLongPressing=!1,this.longPressTimeout=new r(400,this.onLongPressTimeoutFinished.bind(this)),this.pointerDownListener=this.onPointerDown.bind(this),this.pointerMoveListener=this.onPointerMove.bind(this),this.pointerUpListener=this.onPointerUp.bind(this),this.element=e}connect(){this.element.addEventListener(`pointerdown`,this.pointerDownListener),this.element.addEventListener(`pointermove`,this.pointerMoveListener),this.element.addEventListener(`pointerup`,this.pointerUpListener)}disconnect(){this.element.removeEventListener(`pointerdown`,this.pointerDownListener),this.element.removeEventListener(`pointermove`,this.pointerMoveListener),this.element.removeEventListener(`pointerup`,this.pointerUpListener)}onPointerDown(e){let t=this.elementsAllowedToTriggerLongPressEvents.has(e.target),n=this.elementsAllowedToTriggerLongPressEvents.has(this.element);e instanceof PointerEvent&&(n||t)&&(this.isLongPressing=!1,this.pointerDownEvent=e,this.longPressTimeout.start())}onPointerMove(t){t instanceof PointerEvent&&this.pointerDownEvent&&e(this.pointerDownEvent,t)&&this.longPressTimeout.stop()}onPointerUp(){this.longPressTimeout.stop(),this.isLongPressing&&this.element.dispatchEvent(new i(t)),this.isLongPressing=!1,this.pointerDownEvent=void 0}onLongPressTimeoutFinished(){this.isLongPressing=!0,this.element.dispatchEvent(new i(n))}};export{a as LongPressController,i as LongPressControllerEvent};