class ChatBox extends HTMLElement { constructor() { super(); this.app = null; } connectedCallback() { this.innerHTML = `
`; const input = this.querySelector('#chatInput'); input.addEventListener('keypress', (e) => { if (e.key === 'Enter') { const message = input.value.trim(); if (message && this.app) { this.app.sendChatMessage(message); input.value = ''; } } }); } addMessage(nickname, message, timestamp) { const messagesDiv = this.querySelector('#chatMessages'); const messageEl = document.createElement('div'); messageEl.style.marginBottom = '3px'; const time = timestamp || new Date().toTimeString().slice(0, 5); const color = nickname === 'system' ? '#FFD700' : '#87CEEB'; messageEl.innerHTML = ` ${time} ${nickname}: ${this.escapeHtml(message)} `; messagesDiv.appendChild(messageEl); messagesDiv.scrollTop = messagesDiv.scrollHeight; // Keep only last 100 messages while (messagesDiv.children.length > 100) { messagesDiv.removeChild(messagesDiv.firstChild); } } escapeHtml(text) { const div = document.createElement('div'); div.textContent = text; return div.innerHTML; } } customElements.define('chat-box', ChatBox);