UNPKG

@alegendstale/holly-components

Version:

Reusable UI components created using lit

25 lines (24 loc) 725 B
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 = {}; } }