UNPKG

@snap/camera-kit

Version:
42 lines 1.45 kB
export class TypedEventTarget { constructor() { this.listeners = new Map(); this.options = new Map(); } addEventListener(type, callback, options) { var _a; const listener = callback; const listeners = (_a = this.listeners.get(type)) !== null && _a !== void 0 ? _a : []; this.listeners.set(type, [...listeners, listener]); if (options) this.options.set(listener, options); } dispatchEvent(event) { const listeners = this.listeners.get(event.type); if (!listeners) return true; listeners.forEach((listener) => { var _a; const options = (_a = this.options.get(listener)) !== null && _a !== void 0 ? _a : {}; try { listener(event); } catch (error) { if (window) window.dispatchEvent(new CustomEvent("error", { detail: error })); } if (options.once) this.removeEventListener(event.type, listener); }); return true; } removeEventListener(type, callback) { const listener = callback; const listeners = this.listeners.get(type); if (!listeners) return; this.listeners.set(type, listeners.filter((l) => l !== listener)); this.options.delete(listener); } } //# sourceMappingURL=TypedEventTarget.js.map