@gongt/ts-stl-client
Version:
36 lines (30 loc) • 892 B
text/typescript
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;
}