comparison src/chat.js @ 42:1d9d9786d76f

textareas
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 11 Aug 2025 08:27:22 +0900
parents 2a4c83ce3deb
children cc20eebaa74a
comparison
equal deleted inserted replaced
41:2a4c83ce3deb 42:1d9d9786d76f
93 } 93 }
94 } 94 }
95 95
96 let audio; 96 let audio;
97 97
98 function fixTextarea(textarea) { 98 function fixChatTextarea(textarea) {
99 textarea.style.height = 'initial'; 99 fixTextarea(textarea);
100 textarea.style.height = (textarea.scrollHeight+2) + 'px';
101 textarea.parentNode.scrollIntoViewIfNeeded(false); 100 textarea.parentNode.scrollIntoViewIfNeeded(false);
102 if( !audio ) 101 if( !audio )
103 audio = document.querySelector('div[buttons] audio'); 102 audio = document.querySelector('div[buttons] audio');
104 audio.src = `/tts.mp3?lang=${chat.language_region}&voice=${chat.voice}&text=${encodeURIComponent(textarea.value)}`; 103 audio.src = `/tts.mp3?lang=${chat.language_region}&voice=${chat.voice}&text=${encodeURIComponent(textarea.value)}`;
105 } 104 }
107 function askAi() { 106 function askAi() {
108 let input = document.querySelector('textarea'); 107 let input = document.querySelector('textarea');
109 let url = `ai_ask.js?chat=${chat.id}&input=${encodeURIComponent(input.value)}`; 108 let url = `ai_ask.js?chat=${chat.id}&input=${encodeURIComponent(input.value)}`;
110 ajax(url); 109 ajax(url);
111 input.value = ''; 110 input.value = '';
112 fixTextarea(input); 111 fixChatTextarea(input);
113 showWaitingAiIcon(); 112 showWaitingAiIcon();
114 } 113 }
115 114
116 115
117 function setText(text) { 116 function setText(text) {
118 let textarea = document.querySelector('textarea'); 117 let textarea = document.querySelector('textarea');
119 textarea.value = text; 118 textarea.value = text;
120 fixTextarea(textarea); 119 fixChatTextarea(textarea);
121 } 120 }
122 121
123 let recorder = null; 122 let recorder = null;
124 let chunks; 123 let chunks;
125 124