@alegendstale/holly-components
Version:
Reusable UI components created using lit
25 lines (24 loc) • 725 B
JavaScript
export class EventEmitter {
constructor() {
this.eventListeners = {};
}
on(eventName, listener) {
const listeners = this.eventListeners[eventName] ?? new Set();
listeners.add(listener);
this.eventListeners[eventName] = listeners;
}
off(eventName, listener) {
const listeners = this.eventListeners[eventName] ?? new Set();
listeners.delete(listener);
this.eventListeners[eventName] = listeners;
}
emit(eventName, ...args) {
const listeners = this.eventListeners[eventName] ?? new Set();
for (const listener of listeners) {
listener(...args);
}
}
clear() {
this.eventListeners = {};
}
}