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);