UNPKG

@gongt/ts-stl-client

Version:
36 lines (30 loc) 892 B
import {IS_SERVER} from "@gongt/ts-stl-library/check-environment"; import {createLogger} from "@gongt/ts-stl-library/debug/create-logger"; import {LOG_LEVEL} from "@gongt/ts-stl-library/debug/levels"; const warn = createLogger(LOG_LEVEL.WARN, 'mouse-event'); let listenerInit = false; const list: Function[] = []; export function trapMouseUpEvent(e: MouseEvent|TouchEvent, callback: (e: MouseEvent|TouchEvent) => void) { if (IS_SERVER) { warn('use mouse event on server. there may be some bug.'); return; } // todo: touch events if (!listenerInit) { listenerInit = true; document.addEventListener('mouseup', handleEvent, false); } list.push(callback); } function handleEvent(e) { for (const cb of list) { try { cb(e); } catch (e) { warn(e.message); } } listenerInit = false; document.removeEventListener('mouseup', handleEvent, false); list.length = 0; }