scandit-web-datacapture-barcode
Version:
Scandit Data Capture SDK for the Web
7 lines (4 loc) • 3.1 kB
JavaScript
import { j, g, i as i$1 } from './chunk-YU4ASL7B.js';
import { Point } from 'scandit-web-datacapture-core';
var l=(n=>(n.Idle="idle",n.Tapped="tapped",n.Held="held",n.Swiped="swiped",n))(l||{}),v=(t=>(t.X="x",t.Y="y",t))(v||{}),h=(n=>(n.Up="up",n.Right="right",n.Down="down",n.Left="left",n))(h||{}),i=class i{constructor(e,t){this.state="idle";this.pointerDownListener=this.onPointerDown.bind(this);this.pointerMoveListener=this.onPointerMove.bind(this);this.pointerUpListener=this.onPointerUp.bind(this);this.element=e,this.holdEventsEnabled=t;}static forElement(e,t){return new i(e,t)}connect(){this.element.addEventListener("collapsedtriggerbuttontap",this.pointerDownListener),this.element.addEventListener("expandedtriggerbuttontap",this.pointerDownListener),this.element.addEventListener("pointermove",this.pointerMoveListener),this.element.addEventListener("pointerup",this.pointerUpListener);}disconnect(){this.element.removeEventListener("collapsedtriggerbuttontap",this.pointerDownListener),this.element.removeEventListener("expandedtriggerbuttontap",this.pointerDownListener),this.element.removeEventListener("pointermove",this.pointerMoveListener),this.element.removeEventListener("pointerup",this.pointerUpListener);}getAxisForTranslation(e,t){if(e>20&&e>t)return "x";if(t>20&&t>e)return "y"}getDirectionForAxisX(e,t){if(t.clientX<e.clientX)return "left";if(t.clientX>e.clientX)return "right"}getDirectionForAxisY(e,t){if(t.clientY<e.clientY)return "up";if(t.clientY>e.clientY)return "down"}getDirectionForAxis(e,t,r){return {x:this.getDirectionForAxisX(t,r),y:this.getDirectionForAxisY(t,r)}[e]}getEventForStateAndDirection(e,t){return {idle:void 0,tapped:new CustomEvent(j),held:new CustomEvent(g),swiped:t?new CustomEvent(`swipe${t}end`):void 0}[e]}onPointerDown(e){this.state="tapped",this.holdEventsEnabled&&(this.holdStartTimeout=setTimeout(()=>{this.state="held",this.element.dispatchEvent(new CustomEvent(i$1));},i.holdTimeoutDuration)),this.pointerDownEvent=new PointerEvent("pointerdown",{clientX:e.detail.clientX,clientY:e.detail.clientY});}onPointerMove(e){if(!this.pointerDownEvent||this.state==="held")return;let t=Math.abs(e.clientX-this.pointerDownEvent.clientX),r=Math.abs(e.clientY-this.pointerDownEvent.clientY),n=this.getAxisForTranslation(t,r);if(!n||this.currentAxis&&n!==this.currentAxis)return;this.currentAxis=n;let o=this.getDirectionForAxis(n,this.pointerDownEvent,e);if(o){if(this.currentDirection=o,clearTimeout(this.holdStartTimeout),this.state!=="swiped"){this.state="swiped",this.element.dispatchEvent(new CustomEvent(`swipe${o}start`,{detail:new Point(e.clientX,e.clientY)}));return}this.element.dispatchEvent(new CustomEvent(`swipe${o}`,{detail:new Point(e.clientX,e.clientY)}));}}onPointerUp(){let e=this.getEventForStateAndDirection(this.state,this.currentDirection);e&&(clearTimeout(this.holdStartTimeout),this.element.dispatchEvent(e),this.state="idle",this.holdStartTimeout=void 0,this.pointerDownEvent=void 0,this.currentAxis=void 0,this.currentDirection=void 0);}};i.holdTimeoutDuration=300;var c=i;
export { l as a, v as b, h as c, c as d };