// src/core/events.js // --- 1. Globaler EventBus --- const listeners = new Map(); /** * Abonniert ein benanntes Event */ export function on(eventName, callback) { if (!listeners.has(eventName)) listeners.set(eventName, []); listeners.get(eventName).push(callback); // Unsubscribe return () => { const arr = listeners.get(eventName); if (arr) listeners.set(eventName, arr.filter(fn => fn !== callback)); }; } /** * Sendet ein benanntes Event mit Payload */ export function emit(eventName, payload) { const arr = listeners.get(eventName); if (arr) arr.forEach(fn => fn(payload)); } // --- 2. ActionDispatcher --- const actionListeners = new Set(); /** * Action registrieren (globaler Listener für alle Aktionen) */ export function registerActionListener(callback) { actionListeners.add(callback); return () => actionListeners.delete(callback); } /** * Aktion ausführen */ export function dispatchAction(type, payload = {}) { actionListeners.forEach(fn => fn({ type, payload })); }