Spaces:
Sleeping
Sleeping
| import Initialize from "./initialize.js"; | |
| import Chat from "./chat.js"; | |
| import RenderSymbols from "./renderSymbols.js"; | |
| class UIManager{ | |
| constructor(){ | |
| this.initializer = new Initialize(this); | |
| this.chat = new Chat(this); | |
| this.renderSymbols = new RenderSymbols(); | |
| this.menu = document.getElementById('menu'); | |
| this.hamburger = document.getElementById('hamburger'); | |
| this.messagesDiv = document.getElementById('messages'); | |
| this.container = document.getElementById('container') | |
| this.prevChatsCont = document.getElementById('prevChatsCont'); | |
| this.textBox = document.getElementById('textBox'); | |
| this.sendBtn = document.getElementById('sendBtn'); | |
| this.newChat = document.getElementById('newChat'); | |
| this.models = document.getElementById('models'); | |
| this.initialized = false; | |
| this.webSearchBtn = document.getElementById('webSearch'); | |
| this.webSearch = false; | |
| this.aiDiv; | |
| this.userDiv; | |
| this.aiP; | |
| this.userP; | |
| } | |
| async run(){ | |
| await this.initializer.initialize(); | |
| this.handleTextBoxHeight(); | |
| this.events(); | |
| } | |
| events(){ | |
| this.sendBtn.addEventListener('click',()=>{ | |
| this.send(); | |
| }) | |
| window.addEventListener('keydown',(e)=>{ | |
| if(e.key=='Enter' && !this.sendBtn.disabled){ | |
| this.send(); | |
| } | |
| }) | |
| this.newChat.addEventListener('click', async ()=>{ | |
| await this.initializer.initialize(); | |
| }) | |
| this.webSearchBtn.addEventListener('click', ()=>{ | |
| if(this.webSearch){ | |
| this.webSearchBtn.style.color = 'white'; | |
| } else{ | |
| this.webSearchBtn.style.color = 'rgba(30,30,250,0.8)'; | |
| } | |
| this.webSearch = !this.webSearch; | |
| }) | |
| document.getElementById('closeAlert').onclick = ()=>{ | |
| document.getElementById('alert').style.display = 'none' | |
| } | |
| } | |
| async send(){ | |
| this.appendUserMsg(); | |
| this.appendAiMsg(); | |
| await this.chat.chat(); | |
| } | |
| appendUserMsg(msg=false){ | |
| this.userDiv = document.createElement('div'); | |
| this.userDiv.className = 'user'; | |
| this.userP = document.createElement('p'); | |
| if(msg){ | |
| this.userP.innerText = msg; | |
| } else{ | |
| this.userP.innerText = this.textBox.value; | |
| } | |
| this.userDiv.appendChild(this.userP); | |
| this.messagesDiv.appendChild(this.userDiv); | |
| } | |
| appendAiMsg(msg=false){ | |
| this.aiDiv = document.createElement('div'); | |
| this.aiDiv.className = 'ai'; | |
| this.aiP = document.createElement('p'); | |
| if(msg){ | |
| this.aiP.innerText=msg; | |
| } | |
| this.aiDiv.appendChild(this.aiP); | |
| this.messagesDiv.appendChild(this.aiDiv); | |
| } | |
| handleTextBoxHeight() { | |
| this.textBox.oninput = () => { | |
| //this.textBox.value = this.textBox.value.trim(); | |
| this.textBox.style.height = 'auto'; | |
| if (this.textBox.scrollHeight <= 150) { | |
| if(this.textBox.scrollHeight>60){ | |
| this.textBox.style.height = `${this.textBox.scrollHeight}px`; | |
| } | |
| } else { | |
| this.textBox.style.height = '150px'; | |
| } | |
| }; | |
| } | |
| addChat(){ | |
| const prevChat = document.createElement('div'); | |
| prevChat.innerText = this.initializer.convTitle; | |
| prevChat.className = 'prevChat'; | |
| prevChat.id = this.initializer.convId; | |
| this.prevChatsCont.prepend(prevChat); | |
| prevChat.style.backgroundColor = 'rgb(53, 53, 53)'; | |
| prevChat.addEventListener('click', ()=>{ | |
| this.initializer.reInitialize(prevChat.id); | |
| }) | |
| } | |
| } | |
| export default UIManager |