Mercurial Hosting > lang
view src/site.js @ 1:1c87f785eb42
start chat
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 08 Jul 2025 14:18:25 -0600 |
parents | |
children | 78708fa556a0 |
line wrap: on
line source
'use strict'; function ajax(url,postData) { let request = new XMLHttpRequest(); let method = postData ? "POST" : "GET"; request.open( method, url ); if( typeof(postData)==='string' ) request.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" ); request.onload = function() { if( request.status !== 200 ) { let err = 'sr_ajax failed: ' + request.status; if( request.responseText ) { err += '\n' + request.responseText; document.write('<pre>'+request.responseText+'</pre>'); } err += '\npage = ' + window.location; ajax( '/error_log.js', 'err='+encodeURIComponent(err) ); return; } try { //console.log(request.responseText); eval( request.responseText ); } catch(e) { window.sr_err = '\najax-url = ' + url; //window.sr_err += '\n'+('ajax-response =\n' + request.responseText).trim(); throw e; } }; request.send(postData); } function showWaitingAiIcon() { document.querySelector('[waiting-ai-icon]').style.display = 'block'; } const isMobile = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0; function textareaKey(aiKey,event) { if( event.keyCode===13 && !event.shiftKey && !event.ctrlKey && !isMobile ) { event.preventDefault(); askAi(aiKey); } } function fixTextarea(event) { let textarea = event.target; textarea.style.height = 'initial'; textarea.style.height = (textarea.scrollHeight+2) + 'px'; textarea.scrollIntoViewIfNeeded(false); } function askAi(aiKey) { let aiDiv = document.querySelector(`[ai_container="${aiKey}"]`); let input = aiDiv.querySelector('textarea'); let url = `ai_ask.js?key=${aiKey}&input=${encodeURIComponent(input.value)}`; ajax(url); input.value = ''; showWaitingAiIcon(); }