UNPKG

userface

Version:

Universal Data-Driven UI Engine with live data, validation, and multi-platform support

63 lines (62 loc) 1.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.eventBus = exports.EventBus = void 0; class EventBus { constructor() { Object.defineProperty(this, "events", { enumerable: true, configurable: true, writable: true, value: new Map() }); } emit(event, data) { const callbacks = this.events.get(event); if (callbacks) { callbacks.forEach(callback => { try { callback(data); } catch (error) { console.error(`Error in event callback for ${event}:`, error); } }); } } on(event, callback) { if (!this.events.has(event)) { this.events.set(event, []); } this.events.get(event).push(callback); } off(event, callback) { const callbacks = this.events.get(event); if (callbacks) { const index = callbacks.indexOf(callback); if (index > -1) { callbacks.splice(index, 1); } if (callbacks.length === 0) { this.events.delete(event); } } } once(event, callback) { const onceCallback = (data) => { callback(data); this.off(event, onceCallback); }; this.on(event, onceCallback); } clear() { this.events.clear(); } getEventCount(event) { return this.events.get(event)?.length || 0; } getAllEvents() { return Array.from(this.events.keys()); } } exports.EventBus = EventBus; exports.eventBus = new EventBus();