import {gemKeySet, gemKeyGet, appId} from './config.js'; import {normalizeString, hslFromString} from './utils.js'; import {callGemini} from './gemini.js'; import {saveNeuron} from './db.js'; import {visualizeTree, userCenter} from './scene.js'; import {getAuthState} from './firebase.js'; export function initUI(){document.getElementById('level1Slider').addEventListener('input',e=>document.getElementById('level1Value').innerText=e.target.value);document.getElementById('level2Slider').addEventListener('input',e=>document.getElementById('level2Value').innerText=e.target.value);document.getElementById('level3Slider').addEventListener('input',e=>document.getElementById('level3Value').innerText=e.target.value);document.getElementById('saveGeminiKeyBtn').addEventListener('click',()=>{const k=document.getElementById('geminiKeyInput').value.trim();gemKeySet(k);const s=document.getElementById('geminiKeyStatus');s.textContent='Guardada';setTimeout(()=>s.textContent='',1200)});const egk=gemKeyGet();if(egk)document.getElementById('geminiKeyInput').value=egk;} export async function handleSeed(){ const {userId,username}=getAuthState(); const topic=normalizeString(document.getElementById('topicInput').value.trim()); if(!topic) return; const n1=parseInt(document.getElementById('level1Slider').value,10); const n2=parseInt(document.getElementById('level2Slider').value,10); const n3=parseInt(document.getElementById('level3Slider').value,10); const btn=document.getElementById('seedBtn'); const pbc=document.getElementById('progressBarContainer'); const pb=document.getElementById('progressBar'); btn.disabled=true; const bak=btn.innerHTML; btn.innerHTML='Analizando...'; pbc.style.display='block'; pb.style.transition='none'; pb.style.width='0%'; void pb.offsetWidth; pb.style.transition='width 18s ease-out'; pb.style.width='92%'; try{ const data=await callGemini(topic,n1,n2,n3); const cand=data.candidates?.[0]; const text=cand?.content?.parts?.[0]?.text||'{}'; const parsed=JSON.parse(text); const lista=parsed.lista_palabras||[]; const origin=userCenter(userId); const nodes=visualizeTree(topic, lista, origin); for(const node of nodes){ await saveNeuron({appId,userId,username,label:node.label,level:node.level,position:node.position,topic}); } document.getElementById('topicInput').value=''; }catch(e){} finally{ btn.disabled=false; btn.innerHTML=bak; pb.style.transition='width .25s ease-in'; pb.style.width='100%'; setTimeout(()=>{ pbc.style.display='none'; pb.style.width='0%'; },400); } }