// public/js/eventBus.js const subscribers = {}; function subscribe(eventName, callback) { if (!subscribers[eventName]) { subscribers[eventName] = []; } subscribers[eventName].push(callback); return () => { // Keep unsubscribe function subscribers[eventName] = subscribers[eventName].filter(cb => cb !== callback); if (subscribers[eventName].length === 0) { delete subscribers[eventName]; } }; } function publish(eventName, data) { if (subscribers[eventName]) { subscribers[eventName].forEach(callback => { try { callback(data); } catch (error) { console.error(`Error handling event "${eventName}":`, error); } }); } } const eventBus = { publish, subscribe }; export default eventBus;