class Log { static console = true; log(title, text) { // if (!Log.console) return; // if (import.meta.env.MODE === 'production') return; const color = '#ff4d4f'; console.log( `%c ${title} %c ${text} %c`, `background:${color};border:1px solid ${color}; padding: 1px; border-radius: 2px 0 0 2px; color: #fff;`, `border:1px solid ${color}; padding: 1px; border-radius: 0 2px 2px 0; color: ${color};`, 'background:transparent' ); } closeConsole() { Log.console = false; } } export class EventDispatcher extends Log { listeners = {}; addEventListener(type, listener) { if (!this.listeners[type]) { this.listeners[type] = []; } if (this.listeners[type].indexOf(listener) === -1) { this.listeners[type].push(listener); } } removeEventListener(type) { this.listeners[type] = []; } dispatchEvent(type, data) { const listenerArray = this.listeners[type] || []; if (listenerArray.length === 0) return; listenerArray.forEach(listener => { listener.call(this, data); }); } }