UNPKG

hold-event

Version:

Provides key hold-start, holding, hold-end and other events.

48 lines (27 loc) 1.01 kB
import { Hold } from './Hold'; export class ElementHold extends Hold { private _activePointerIds: number[] = []; constructor( element: HTMLElement, holdIntervalDelay?: number ) { super( holdIntervalDelay ); const holdStart = ( event?: Event ) => { this._holdStart( event ); }; const holdEnd = ( event?: Event ) => { this._activePointerIds.length = 0; this._holdEnd( event ); }; const onPointerDown = ( event: PointerEvent ) => { this._activePointerIds.push( event.pointerId ); holdStart( event ); }; const onPointerUp = ( event: PointerEvent ) => { const pointerIndex = this._activePointerIds.indexOf( event.pointerId ); if ( pointerIndex === - 1 ) return; this._activePointerIds.splice( pointerIndex, 1 ); if ( this._activePointerIds.length === 0 ) holdEnd( event ); }; element.addEventListener( 'pointerdown', onPointerDown ); document.addEventListener( 'pointerup', onPointerUp ); window.addEventListener( 'blur', holdEnd ); } }