@staroverlay/dom
Version:
DOM API client for build StarOverlay widgets.
23 lines (18 loc) • 591 B
text/typescript
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);
}
}
}