UNPKG

mcp-quiz-server

Version:

๐Ÿง  AI-Powered Quiz Management via Model Context Protocol (MCP) - Create, manage, and take quizzes directly from VS Code, Claude, and other AI agents.

52 lines โ€ข 2.06 kB
export class EventManagement { static addListener(element, event, handler, key) { if (this.eventListeners.has(key)) { const existing = this.eventListeners.get(key); existing.element.removeEventListener(existing.event, existing.handler); } element.addEventListener(event, handler); this.eventListeners.set(key, { element, event, handler, }); console.log(`๐Ÿ”— Event listener added: ${key} (${event})`); } static removeListener(key) { if (this.eventListeners.has(key)) { const listener = this.eventListeners.get(key); listener.element.removeEventListener(listener.event, listener.handler); this.eventListeners.delete(key); console.log(`๐Ÿ—‘๏ธ Event listener removed: ${key}`); } } static cleanup(keys) { const keysToClean = keys || Array.from(this.eventListeners.keys()); keysToClean.forEach(key => { this.removeListener(key); }); console.log(`๐Ÿงน Event cleanup completed: ${keysToClean.length} listeners removed`); } static getActiveListenerCount() { return this.eventListeners.size; } static getActiveListenerKeys() { return Array.from(this.eventListeners.keys()); } static delegate(container, selector, event, handler, key) { const delegatedHandler = (e) => { const target = e.target.closest(selector); if (target) { handler(e, target); } }; this.addListener(container, event, delegatedHandler, key); } static componentCleanup(componentPrefix) { const componentKeys = Array.from(this.eventListeners.keys()).filter(key => key.startsWith(componentPrefix)); this.cleanup(componentKeys); console.log(`๐Ÿ—๏ธ Component cleanup: ${componentPrefix} (${componentKeys.length} listeners)`); } } EventManagement.eventListeners = new Map(); //# sourceMappingURL=EventManagement.js.map