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