()
| 97 | } |
| 98 | |
| 99 | initializeElements() { |
| 100 | // Ensure container exists |
| 101 | const container = this.ensureChatContainer(); |
| 102 | |
| 103 | // Site selector handling |
| 104 | this.siteSelector = document.getElementById('site-selector'); |
| 105 | if (!this.siteSelector && this.mode === "single_site") { |
| 106 | // Create a hidden selector for single site mode |
| 107 | const selector = document.createElement('select'); |
| 108 | selector.id = 'site-selector'; |
| 109 | selector.className = 'site-selector'; |
| 110 | selector.style.display = 'none'; |
| 111 | |
| 112 | const option = document.createElement('option'); |
| 113 | option.value = this.site; |
| 114 | option.textContent = this.site; |
| 115 | option.selected = true; |
| 116 | selector.appendChild(option); |
| 117 | |
| 118 | container.appendChild(selector); |
| 119 | this.siteSelector = selector; |
| 120 | } |
| 121 | |
| 122 | // Get other elements, handling missing gracefully |
| 123 | this.messagesArea = document.querySelector('.messages') || this.createMessagesArea(); |
| 124 | this.sendButton = document.getElementById('send-button') || this.createSendButton(); |
| 125 | this.inputField = document.getElementById('message-input') || this.createInputField(); |
| 126 | |
| 127 | // Create invisible scroll anchor |
| 128 | this.scrollDiv = document.createElement('div'); |
| 129 | this.scrollDiv.id = 'scroll-anchor'; |
| 130 | this.scrollDiv.style.height = '1px'; |
| 131 | this.messagesArea.appendChild(this.scrollDiv); |
| 132 | } |
| 133 | |
| 134 | createMessagesArea() { |
| 135 | const area = document.createElement('div'); |
no test coverage detected