import {escape} from './common.js'; import {guides} from './activity-guide-content.js?v=brain-circuit-47'; import {brainConnections,guideSources} from './brain-connections.js?v=brain-circuit-47'; const notes=new Map(); function listSteps(items){return `
    ${items.map(([title,text],i)=>`
  1. ${escape(title)}

    ${escape(text)}

  2. `).join('')}
`} function references(data,guide){const sources=[...data.sources.map(key=>guideSources[key]),...(guide.primarySources||[])];return `

Sources and further reading

${sources.map(s=>`${escape(s.title)} ↗`).join('')}
`} export function renderActivityGuide(root,id,name,usage){ const guide=guides[id],brain=brainConnections[id];if(!guide||!brain||!usage)return false; const prefix='activity-guide-'+id,isReading=id.startsWith('jewish'),tabNames=['How to use','How it works','Brain connection','Try and check']; const quiz=`
CHECK YOUR UNDERSTANDING

${escape(guide.question)}

${guide.answers.map((a,i)=>``).join('')}
`; root.innerHTML=`
GUIDE · EXPLANATION · BRAIN CONNECTION${escape(name||id)}

${escape(brain.summary)}

${tabNames.map((label,i)=>``).join('')}

Start here

${escape(usage.goal)}

${listSteps(usage.steps)}${usage.watch?`

What to watch: ${escape(usage.watch)}

`:''}${usage.controls?.length?`
What the controls mean
${usage.controls.map(([term,definition])=>`
${escape(term)}
${escape(definition)}
`).join('')}
`:''}
`; const box=root.querySelector('.activity-guide'),tabs=[...box.querySelectorAll('[data-explain-tab]')],panels=[...box.querySelectorAll('[role=tabpanel]')]; function select(index){tabs.forEach((button,i)=>{button.setAttribute('aria-selected',String(i===index));button.tabIndex=i===index?0:-1;panels[i].hidden=i!==index});} tabs.forEach((tab,index)=>{tab.onclick=()=>select(index);tab.onkeydown=event=>{let target=index;if(event.key==='ArrowRight')target=(index+1)%tabs.length;else if(event.key==='ArrowLeft')target=(index+tabs.length-1)%tabs.length;else if(event.key==='Home')target=0;else if(event.key==='End')target=tabs.length-1;else return;event.preventDefault();select(target);tabs[target].focus()}}); box.querySelectorAll('[data-explain-answer]').forEach(button=>button.onclick=()=>{const correct=Number(button.dataset.explainAnswer)===guide.correct;box.querySelectorAll('[data-explain-answer]').forEach(answer=>{answer.classList.remove('activity-guide-correct','activity-guide-revisit');answer.setAttribute('aria-pressed','false')});button.classList.add(correct?'activity-guide-correct':'activity-guide-revisit');button.setAttribute('aria-pressed','true');const feedback=box.querySelector('.activity-guide-feedback');feedback.hidden=false;feedback.textContent=(correct?'Correct. ':'Look again. ')+guide.feedback;}); const saved=notes.get(id)||{prediction:'',observation:''};box.querySelectorAll('[data-explain-note]').forEach(field=>{field.value=saved[field.dataset.explainNote];field.oninput=()=>{saved[field.dataset.explainNote]=field.value;notes.set(id,saved)}}); function scrollTo(target){if(!target)return;target.scrollIntoView({behavior:matchMedia('(prefers-reduced-motion: reduce)').matches?'instant':'smooth',block:'start'});target.setAttribute('tabindex','-1');target.focus({preventScroll:true})} box.querySelector('[data-explain-jump]').onclick=()=>scrollTo(document.querySelector('#experiment .study-source-list')||document.querySelector('#experiment')); box.querySelector('[data-explain-notes]')?.addEventListener('click',()=>scrollTo(document.querySelector('#study-reflection-section'))); box.querySelector('[data-explain-source-check]')?.addEventListener('click',()=>{const check=document.querySelector('.study-extension');if(check){check.open=true;scrollTo(check)}}); return true; }