userface
Version:
Universal Data-Driven UI Engine with live data, validation, and multi-platform support
63 lines (62 loc) • 1.73 kB
JavaScript
;
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();