UNPKG

@staroverlay/dom

Version:

DOM API client for build StarOverlay widgets.

23 lines (18 loc) 591 B
export type EventListener = (...args: unknown[]) => unknown; export default class EventEmitter { private readonly listeners: Map<string, EventListener[]>; constructor() { this.listeners = new Map(); } on(eventName: string, listener: EventListener) { const group = this.listeners.get(eventName) || []; group.push(listener); this.listeners.set(eventName, group); } emit(eventName: string, ...args: unknown[]) { const group = this.listeners.get(eventName) || []; for (const listener of group) { listener(...args); } } }