// modules/core/EventManager.js const registry = new Map(); export const EventManager = { /** * Fügt einen EventListener hinzu und speichert ihn im Modul-Kontext */ add(target, type, handler, { module = 'global', options = false } = {}) { target.addEventListener(type, handler, options); if (!registry.has(module)) registry.set(module, []); registry.get(module).push([target, type, handler, options]); }, /** * Entfernt alle Listener, die für ein bestimmtes Modul registriert wurden */ removeModule(module) { const entries = registry.get(module); if (!entries) return; entries.forEach(([target, type, handler, options]) => { target.removeEventListener(type, handler, options); }); registry.delete(module); }, /** * Entfernt alle Event-Listener aus allen Modulen */ clearAll() { for (const [module, entries] of registry.entries()) { entries.forEach(([target, type, handler, options]) => { target.removeEventListener(type, handler, options); }); } registry.clear(); }, /** * Debug: Gibt die aktuelle Registry in der Konsole aus */ debug() { console.table([...registry.entries()].map(([module, events]) => ({ module, listeners: events.length }))); } };