UNPKG

ive-connect

Version:

A universal haptic device control library for interactive experiences

71 lines (70 loc) 1.9 kB
"use strict"; /** * Simple event system for device communication */ Object.defineProperty(exports, "__esModule", { value: true }); exports.EventEmitter = void 0; class EventEmitter { constructor() { this.events = new Map(); } /** * Register an event listener * @param event Event name * @param callback Function to call when event is emitted * @returns Unsubscribe function */ on(event, callback) { if (!this.events.has(event)) { this.events.set(event, new Set()); } this.events.get(event).add(callback); // Return unsubscribe function return () => this.off(event, callback); } /** * Remove an event listener * @param event Event name * @param callback Function to remove */ off(event, callback) { const callbacks = this.events.get(event); if (callbacks) { callbacks.delete(callback); if (callbacks.size === 0) { this.events.delete(event); } } } /** * Emit an event with data * @param event Event name * @param data Data to pass to listeners */ emit(event, data) { const callbacks = this.events.get(event); if (callbacks) { for (const callback of callbacks) { try { callback(data); } catch (e) { console.error(`Error in event listener for ${event}:`, e); } } } } /** * Remove all event listeners * @param event Optional event name. If not provided, all events are cleared. */ removeAllListeners(event) { if (event) { this.events.delete(event); } else { this.events.clear(); } } } exports.EventEmitter = EventEmitter;