bavitutor 0.3.2 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -424,7 +424,7 @@ ${this.parser.parse(e)}</blockquote>
424
424
  ${e}</tr>
425
425
  `}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
426
426
  `}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${O4(e,!0)}</code>`}br(e){return`<br>`}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,text:n,tokens:r,autolink:i}){let a=i?O4(n,!0):this.parser.parseInline(r),o=k4(e);if(o===null)return a;e=O4(o,i);let s=`<a href="`+e+`"`;return t&&(s+=` title="`+O4(t)+`"`),s+=`>`+a+`</a>`,s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=k4(e);if(i===null)return O4(n);e=i;let a=`<img src="${O4(e)}" alt="${O4(n)}"`;return t&&(a+=` title="${O4(t)}"`),a+=`>`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:O4(e.text)}},V4=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}checkbox({raw:e}){return e}},H4=class e{options;renderer;textRenderer;constructor(e){this.options=e||Y2,this.options.renderer=this.options.renderer||new B4,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new V4}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t=``;for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let e=r,n=this.options.extensions.renderers[e.type].call({parser:this},e);if(n!==!1||![`space`,`hr`,`heading`,`code`,`table`,`blockquote`,`list`,`checkbox`,`html`,`def`,`paragraph`,`text`].includes(e.type)){t+=n||``;continue}}let i=r;switch(i.type){case`space`:t+=this.renderer.space(i);break;case`hr`:t+=this.renderer.hr(i);break;case`heading`:t+=this.renderer.heading(i);break;case`code`:t+=this.renderer.code(i);break;case`table`:t+=this.renderer.table(i);break;case`blockquote`:t+=this.renderer.blockquote(i);break;case`list`:t+=this.renderer.list(i);break;case`checkbox`:t+=this.renderer.checkbox(i);break;case`html`:t+=this.renderer.html(i);break;case`def`:t+=this.renderer.def(i);break;case`paragraph`:t+=this.renderer.paragraph(i);break;case`text`:t+=this.renderer.text(i);break;default:{let e=`Token with "`+i.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n=``;for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let e=this.options.extensions.renderers[i.type].call({parser:this},i);if(e!==!1||![`escape`,`html`,`link`,`image`,`checkbox`,`strong`,`em`,`codespan`,`br`,`del`,`text`].includes(i.type)){n+=e||``;continue}}let a=i;switch(a.type){case`escape`:n+=t.text(a);break;case`html`:n+=t.html(a);break;case`link`:n+=t.link(a);break;case`image`:n+=t.image(a);break;case`checkbox`:n+=t.checkbox(a);break;case`strong`:n+=t.strong(a);break;case`em`:n+=t.em(a);break;case`codespan`:n+=t.codespan(a);break;case`br`:n+=t.br(a);break;case`del`:n+=t.del(a);break;case`text`:n+=t.text(a);break;default:{let e=`Token with "`+a.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return n}},U4=class{options;block;constructor(e){this.options=e||Y2}static passThroughHooks=new Set([`preprocess`,`postprocess`,`processAllTokens`,`emStrongMask`]);static passThroughHooksRespectAsync=new Set([`preprocess`,`postprocess`,`processAllTokens`]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?z4.lex:z4.lexInline}provideParser(e=this.block){return e?H4.parse:H4.parseInline}},W4=class{defaults=J2();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=H4;Renderer=B4;TextRenderer=V4;Lexer=z4;Tokenizer=R4;Hooks=U4;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case`table`:{let e=r;for(let r of e.header)n=n.concat(this.walkTokens(r.tokens,t));for(let r of e.rows)for(let e of r)n=n.concat(this.walkTokens(e.tokens,t));break}case`list`:{let e=r;n=n.concat(this.walkTokens(e.items,t));break}default:{let e=r;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach(r=>{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new B4(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new R4(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new U4;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];t[r]=U4.passThroughHooks.has(n)?e=>{if(this.defaults.async&&U4.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await i.call(t,e);return a.call(t,n)})();let r=i.call(t,e);return a.call(t,r)}:(...e)=>{if(this.defaults.async)return(async()=>{let n=await i.apply(t,e);return n===!1&&(n=await a.apply(t,e)),n})();let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return z4.lex(e,t??this.defaults)}parser(e,t){return H4.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(typeof t>`u`||t===null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let n=i.hooks?await i.hooks.preprocess(t):t,r=await(i.hooks?await i.hooks.provideLexer(e):e?z4.lex:z4.lexInline)(n,i),a=i.hooks?await i.hooks.processAllTokens(r):r;i.walkTokens&&await Promise.all(this.walkTokens(a,i.walkTokens));let o=await(i.hooks?await i.hooks.provideParser(e):e?H4.parse:H4.parseInline)(a,i);return i.hooks?await i.hooks.postprocess(o):o})().catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let n=(i.hooks?i.hooks.provideLexer(e):e?z4.lex:z4.lexInline)(t,i);i.hooks&&(n=i.hooks.processAllTokens(n)),i.walkTokens&&this.walkTokens(n,i.walkTokens);let r=(i.hooks?i.hooks.provideParser(e):e?H4.parse:H4.parseInline)(n,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=`
427
- Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+O4(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}},G4=new W4;function K4(e,t){return G4.parse(e,t)}K4.options=K4.setOptions=function(e){return G4.setOptions(e),K4.defaults=G4.defaults,X2(K4.defaults),K4},K4.getDefaults=J2,K4.defaults=Y2;function uye(...e){return G4.use(...e),K4.defaults=G4.defaults,X2(K4.defaults),K4}K4.use=uye,K4.walkTokens=function(e,t){return G4.walkTokens(e,t)},K4.parseInline=G4.parseInline,K4.Parser=H4,K4.parser=H4.parse,K4.Renderer=B4,K4.TextRenderer=V4,K4.Lexer=z4,K4.lexer=z4.lex,K4.Tokenizer=R4,K4.Hooks=U4,K4.parse=K4,K4.options,K4.setOptions,K4.walkTokens,K4.parseInline,H4.parse,z4.lex;var q4=(e,t)=>n(gve.renderToString(e,{displayMode:t,throwOnError:!1,output:`htmlAndMathml`}),`src/ui/markdown.ts#renderMath`),dye={name:`blockMath`,level:`block`,start:e=>n(e.indexOf(`$$`),`src/ui/markdown.ts#start`),tokenizer:e=>{let t=/^\$\$([\s\S]+?)\$\$(?:\n|$)/.exec(e);return n(t===null?void 0:{type:`blockMath`,raw:t[0],text:(t[1]??``).trim()},`src/ui/markdown.ts#tokenizer`)},renderer:e=>n(`<div class="math-block">${q4(String(e.text),!0)}</div>`,`src/ui/markdown.ts#renderer`)},fye={name:`inlineMath`,level:`inline`,start:e=>n(e.indexOf(`$`),`src/ui/markdown.ts#start~2`),tokenizer:e=>{let t=/^\$(?!\s)((?:\\\$|[^$\n])+?)(?<!\s)\$(?!\d)/.exec(e);return n(t===null?void 0:{type:`inlineMath`,raw:t[0],text:t[1]??``},`src/ui/markdown.ts#tokenizer~2`)},renderer:e=>n(q4(String(e.text),!1),`src/ui/markdown.ts#renderer~2`)},J4=new W4({gfm:!0,breaks:!1});J4.use({extensions:[dye,fye]});var Y4=new Map,pye=500,X4=e=>{let t=Y4.get(e);if(t!==void 0)return n(t,`src/ui/markdown.ts#renderMarkdown`);let r=gge.sanitize(J4.parse(e,{async:!1}),{USE_PROFILES:{html:!0,mathMl:!0,svg:!0}});if(Y4.size>=pye){let e=Y4.keys().next();e.done!==!0&&Y4.delete(e.value)}return Y4.set(e,r),n(r,`src/ui/markdown.ts#renderMarkdown`)},mye=e=>n(X4(e).replace(/^<p>/,``).replace(/<\/p>\s*$/,``),`src/ui/markdown.ts#renderInlineMarkdown`),Z4=(e,t,r)=>n(r.div([r.Class(F(`prose prose-neutral max-w-none dark:prose-invert prose-headings:tracking-tight prose-code:before:content-none prose-code:after:content-none`,t)),r.InnerHTML(X4(e))]),`src/ui/markdown.ts#markdownView`),Q4=(e,t,r)=>n(r.span([r.Class(t),r.InnerHTML(mye(e))]),`src/ui/markdown.ts#inlineMarkdownView`),$4=pT({Recall:{},Pick:{recallMs:k},Submitting:{response:KI,maybeRecallMs:Mb(k)},Revealed:{response:KI,result:JI}}),e3=pT({Idle:{},Loading:{},Shown:{body:O},Failed:{}}),t3=A({card:HI,phase:$4,explanation:e3,shownAt:k}),n3=fT({CompletedMarkCardShown:{at:k},ClickedShowChoices:{},CompletedMarkChoicesShown:{at:k},ClickedOption:{optionId:O},ClickedDontKnow:{},CompletedMarkAnswered:{at:k},ClickedContinue:{},ClickedExplainIt:{},PressedKey:{key:O,isModified:Ky}}),r3=fT({Answered:{response:KI,recallMs:k,latencyMs:k},Continued:{},RequestedExplanation:{response:KI}}),hye=N(`MarkCardShown`,{messages:[n3.CompletedMarkCardShown],execute:hd.pipe(ef(e=>n(n3.CompletedMarkCardShown({at:e}),`src/component/flashcard.ts#anonymous`)))}),gye=N(`MarkChoicesShown`,{messages:[n3.CompletedMarkChoicesShown],execute:hd.pipe(ef(e=>n(n3.CompletedMarkChoicesShown({at:e}),`src/component/flashcard.ts#anonymous~2`)))}),_ye=N(`MarkAnswered`,{messages:[n3.CompletedMarkAnswered],execute:hd.pipe(ef(e=>n(n3.CompletedMarkAnswered({at:e}),`src/component/flashcard.ts#anonymous~3`)))}),i3=e=>n({model:{card:e,phase:$4.Recall(),explanation:e3.Idle(),shownAt:0},commands:[hye()]},`src/component/flashcard.ts#init`),a3=(e,t)=>n($4.match(e.phase,{Recall:()=>n(e,`src/component/flashcard.ts#Recall`),Pick:()=>n(e,`src/component/flashcard.ts#Pick`),Submitting:({response:r})=>n(P(e,{phase:()=>n($4.Revealed({response:r,result:t}),`src/component/flashcard.ts#phase`)}),`src/component/flashcard.ts#Submitting`),Revealed:()=>n(e,`src/component/flashcard.ts#Revealed`)}),`src/component/flashcard.ts#showResult`),o3=e=>n($4.match(e.phase,{Recall:()=>n(e,`src/component/flashcard.ts#Recall~2`),Pick:()=>n(e,`src/component/flashcard.ts#Pick~2`),Submitting:({maybeRecallMs:t})=>n(P(e,{phase:()=>n(C(t,{onNone:()=>n($4.Recall(),`src/component/flashcard.ts#onNone`),onSome:e=>n($4.Pick({recallMs:e}),`src/component/flashcard.ts#onSome`)}),`src/component/flashcard.ts#phase~2`)}),`src/component/flashcard.ts#Submitting~2`),Revealed:()=>n(e,`src/component/flashcard.ts#Revealed~2`)}),`src/component/flashcard.ts#reopen`),s3=(e,t)=>n(e.explanation._tag===`Loading`?P(e,{explanation:()=>n(e3.Shown({body:t}),`src/component/flashcard.ts#explanation`)}):e,`src/component/flashcard.ts#showExplanation`),c3=e=>n(e.explanation._tag===`Loading`?P(e,{explanation:()=>n(e3.Failed(),`src/component/flashcard.ts#explanation~2`)}):e,`src/component/flashcard.ts#explanationFailed`),l3=e=>n(e.phase._tag===`Revealed`&&e.phase.result.verdict!==`Correct`&&(e.explanation._tag===`Idle`||e.explanation._tag===`Failed`),`src/component/flashcard.ts#canExplain`),u3=e=>n(e.phase._tag===`Revealed`,`src/component/flashcard.ts#isRevealed`),d3=e=>n(e.phase._tag===`Recall`||e.phase._tag===`Pick`,`src/component/flashcard.ts#isRecalling`),f3=(e,t,r)=>n({model:P(e,{phase:()=>n($4.Submitting({response:t,maybeRecallMs:r}),`src/component/flashcard.ts#phase~3`)}),commands:[_ye()]},`src/component/flashcard.ts#answer`),p3=e=>n(e.phase._tag===`Recall`?{model:e,commands:[gye()]}:{model:e},`src/component/flashcard.ts#showChoices`),m3=(e,t)=>n($4.match(e.phase,{Recall:()=>n({model:e},`src/component/flashcard.ts#Recall~3`),Pick:({recallMs:r})=>n(f3(e,MI.make({optionId:t}),x(r)),`src/component/flashcard.ts#Pick~3`),Submitting:()=>n({model:e},`src/component/flashcard.ts#Submitting~3`),Revealed:()=>n({model:e},`src/component/flashcard.ts#Revealed~3`)}),`src/component/flashcard.ts#pick`),vye=e=>n($4.match(e.phase,{Recall:()=>n(f3(e,PI.make({}),b()),`src/component/flashcard.ts#Recall~4`),Pick:({recallMs:t})=>n(f3(e,PI.make({}),x(t)),`src/component/flashcard.ts#Pick~4`),Submitting:()=>n({model:e},`src/component/flashcard.ts#Submitting~4`),Revealed:()=>n({model:e},`src/component/flashcard.ts#Revealed~4`)}),`src/component/flashcard.ts#dontKnow`),h3=e=>n(u3(e)?{model:e,outMessage:r3.Continued()}:{model:e},`src/component/flashcard.ts#continued`),yye=e=>n($4.match(e.phase,{Recall:()=>n({model:e},`src/component/flashcard.ts#Recall~5`),Pick:()=>n({model:e},`src/component/flashcard.ts#Pick~5`),Submitting:()=>n({model:e},`src/component/flashcard.ts#Submitting~5`),Revealed:({response:t})=>n(l3(e)?{model:P(e,{explanation:()=>n(e3.Loading(),`src/component/flashcard.ts#explanation~3`)}),outMessage:r3.RequestedExplanation({response:t})}:{model:e},`src/component/flashcard.ts#Revealed~5`)}),`src/component/flashcard.ts#explainIt`),bye=[`1`,`2`,`3`,`4`,`5`,`6`],g3=(e,t)=>n(n3.match(t,{CompletedMarkCardShown:({at:t})=>n({model:P(e,{shownAt:()=>n(t,`src/component/flashcard.ts#shownAt`)})},`src/component/flashcard.ts#CompletedMarkCardShown`),ClickedShowChoices:()=>n(p3(e),`src/component/flashcard.ts#ClickedShowChoices`),CompletedMarkChoicesShown:({at:t})=>n({model:e.phase._tag===`Recall`?P(e,{phase:()=>n($4.Pick({recallMs:Math.max(0,t-e.shownAt)}),`src/component/flashcard.ts#phase~4`)}):e},`src/component/flashcard.ts#CompletedMarkChoicesShown`),ClickedOption:({optionId:t})=>n(m3(e,t),`src/component/flashcard.ts#ClickedOption`),ClickedDontKnow:()=>n(vye(e),`src/component/flashcard.ts#ClickedDontKnow`),CompletedMarkAnswered:({at:t})=>n($4.match(e.phase,{Recall:()=>n({model:e},`src/component/flashcard.ts#Recall~6`),Pick:()=>n({model:e},`src/component/flashcard.ts#Pick~6`),Revealed:()=>n({model:e},`src/component/flashcard.ts#Revealed~6`),Submitting:({response:r,maybeRecallMs:i})=>{let a=Math.max(0,t-e.shownAt);return n({model:e,outMessage:r3.Answered({response:r,recallMs:sr(i,()=>n(a,`src/component/flashcard.ts#anonymous~4`)),latencyMs:a})},`src/component/flashcard.ts#Submitting~6`)}}),`src/component/flashcard.ts#CompletedMarkAnswered`),ClickedContinue:()=>n(h3(e),`src/component/flashcard.ts#ClickedContinue`),ClickedExplainIt:()=>n(yye(e),`src/component/flashcard.ts#ClickedExplainIt`),PressedKey:({key:t,isModified:r})=>{if(r)return n({model:e},`src/component/flashcard.ts#PressedKey`);let i=bye.indexOf(t);return n($4.match(e.phase,{Recall:()=>n(t===` `||t===`Enter`?p3(e):{model:e},`src/component/flashcard.ts#Recall~7`),Pick:()=>n(C(Mi(e.card.options,i),{onNone:()=>n({model:e},`src/component/flashcard.ts#onNone~2`),onSome:t=>n(m3(e,t.id),`src/component/flashcard.ts#onSome~2`)}),`src/component/flashcard.ts#Pick~7`),Submitting:()=>n({model:e},`src/component/flashcard.ts#Submitting~7`),Revealed:()=>n(t===` `||t===`Enter`?h3(e):{model:e},`src/component/flashcard.ts#Revealed~7`)}),`src/component/flashcard.ts#PressedKey`)}}),`src/component/flashcard.ts#update`),xye=e=>n(e instanceof HTMLElement&&(e.tagName===`TEXTAREA`||e.tagName===`INPUT`||e.isContentEditable),`src/component/flashcard.ts#isTyping`),Sye=e=>n(e instanceof HTMLElement&&(e.tagName===`BUTTON`||e.tagName===`A`),`src/component/flashcard.ts#isActivatable`),_3=iA()(()=>n({keyboard:sA(dk({target:()=>n(globalThis.document,`src/component/flashcard.ts#target`),type:`keydown`,filterMapEvent:e=>n(xr(n3.PressedKey({key:e.key,isModified:e.ctrlKey||e.metaKey||e.altKey}),()=>n(!e.repeat&&!xye(e.target)&&(e.key!==`Enter`&&e.key!==` `||!Sye(e.target)),`src/component/flashcard.ts#anonymous~6`)),`src/component/flashcard.ts#filterMapEvent`)}))},`src/component/flashcard.ts#anonymous~5`)),v3=(e,t,r)=>n(/[$*`_[\]]/.test(e)?Q4(e,t,r):r.span([r.Class(t)],[e]),`src/component/flashcard.ts#richText`),Cye=[`1`,`2`,`3`,`4`,`5`,`6`],wye=e=>n($4.match(e,{Recall:()=>n(b(),`src/component/flashcard.ts#Recall~8`),Pick:()=>n(b(),`src/component/flashcard.ts#Pick~8`),Submitting:({response:e})=>n(e._tag===`Choice`?x(e.optionId):b(),`src/component/flashcard.ts#Submitting~8`),Revealed:({response:e})=>n(e._tag===`Choice`?x(e.optionId):b(),`src/component/flashcard.ts#Revealed~8`)}),`src/component/flashcard.ts#chosenOptionId`),Tye=(e,t,r,i)=>{let a=$4.match(e.phase,{Recall:()=>n(b(),`src/component/flashcard.ts#Recall~9`),Pick:()=>n(b(),`src/component/flashcard.ts#Pick~9`),Submitting:()=>n(b(),`src/component/flashcard.ts#Submitting~9`),Revealed:({result:e})=>n(x(e),`src/component/flashcard.ts#Revealed~9`)}),o=e.phase._tag===`Pick`,s=Sr(wye(e.phase),t.id),c=Cr(a,e=>n(e.correctOptionId===t.id,`src/component/flashcard.ts#anonymous~7`)),l=S(a)&&s&&!c;return n(i.keyed(`button`)(t.id,[i.Type(`button`),i.Disabled(!o),i.OnClick(n3.ClickedOption({optionId:t.id})),i.Class(F(`press flex w-full items-start gap-3 rounded-xl border px-4 py-3 text-left transition-colors disabled:cursor-default`,{"hover:border-primary/40 hover:bg-accent/40":o,"border-primary bg-primary/8":s&&e.phase._tag===`Submitting`,"border-success/60 bg-success/10":c,"border-destructive/50 bg-destructive/8":l,"opacity-60":S(a)&&!c&&!l}))],[i.span([i.Class(F(`mt-0.5 flex size-6 shrink-0 items-center justify-center rounded-md border text-xs font-semibold`,{"border-success bg-success text-white":c,"border-destructive bg-destructive text-white":l}))],[c?L(`check`,`size-3.5`,i):l?L(`x`,`size-3.5`,i):Cye[r]??`${r+1}`]),v3(t.text,`flex-1 leading-relaxed`,i)]),`src/component/flashcard.ts#optionView`)},y3=(e,t)=>n(t.div([t.Class(`reveal flex flex-col gap-2`)],w(e.card.options,(r,i)=>n(Tye(e,r,i,t),`src/component/flashcard.ts#anonymous~8`))),`src/component/flashcard.ts#optionsView`),b3=(e,t)=>n(t.button([t.Type(`button`),t.Disabled(!d3(e)),t.OnClick(n3.ClickedDontKnow()),t.Class(I(`Ghost`,`Large`,`text-muted-foreground`))],[`I don't know`]),`src/component/flashcard.ts#dontKnowButton`),Eye=(e,t)=>n(t.div([t.Class(`flex flex-col items-center gap-4`)],[t.p([t.Class(`text-sm text-muted-foreground`)],[`Think of the answer first.`]),t.div([t.Class(`flex w-full flex-col-reverse gap-2 sm:flex-row sm:justify-center`)],[b3(e,t),t.button([t.Type(`button`),t.Autofocus(!0),t.OnClick(n3.ClickedShowChoices()),t.Class(I(`Primary`,`Large`,`sm:min-w-48`))],[`Show choices`,t.span([t.Class(F(Uz,`ml-1 max-sm:hidden`))],[`Space`])])])]),`src/component/flashcard.ts#recallActions`),Dye={Correct:{title:`Correct`,tone:`border-success/40 bg-success/8`,iconName:`check`},Incorrect:{title:`Not quite`,tone:`border-destructive/40 bg-destructive/6`,iconName:`x`},DontKnow:{title:`Here's the answer`,tone:`border-info/40 bg-info/8`,iconName:`circleDashed`}},Oye=(e,t)=>n(e.quote.trim().length===0?t.empty:t.figure([t.Class(`flex flex-col gap-1.5`)],[t.figcaption([t.Class(`flex items-center gap-1.5 text-xs font-medium text-muted-foreground`)],[L(`book`,`size-3.5`,t),`From your source`]),t.blockquote([t.Class(`border-l-2 border-primary/50 pl-3 text-sm leading-relaxed text-foreground/90`)],[e.quote.trim()]),C(e.maybeDocumentName,{onNone:()=>n(t.empty,`src/component/flashcard.ts#onNone~3`),onSome:e=>n(t.p([t.Class(`text-xs text-muted-foreground`)],[e]),`src/component/flashcard.ts#onSome~3`)})]),`src/component/flashcard.ts#sourceView`),kye=(e,t)=>n(e3.match(e.explanation,{Idle:()=>n(t.empty,`src/component/flashcard.ts#Idle`),Loading:()=>n(t.empty,`src/component/flashcard.ts#Loading`),Failed:()=>n(t.empty,`src/component/flashcard.ts#Failed`),Shown:({body:e})=>n(t.section([t.Class(`reveal flex flex-col gap-2 rounded-xl border border-primary/25 bg-primary/5 p-4`)],[t.p([t.Class(`flex items-center gap-1.5 text-xs font-medium tracking-wide text-primary uppercase`)],[L(`lightbulb`,`size-3.5`,t),`Another way to see it`]),Z4(e,`text-sm leading-relaxed`,t)]),`src/component/flashcard.ts#Shown`)}),`src/component/flashcard.ts#explanationView`),Aye=(e,t)=>{let r=e.explanation._tag===`Loading`;return n(t.div([t.Class(`flex items-center gap-2`)],[t.button([t.Type(`button`),t.Disabled(r),t.OnClick(n3.ClickedExplainIt()),t.Class(I(`Ghost`,`Large`,`text-muted-foreground`))],r?[L(`refresh`,`spinner`,t),t.span([t.Class(`shimmer-text`)],[`Explaining`])]:[L(`lightbulb`,``,t),e.explanation._tag===`Failed`?`Try again`:`Explain it`]),e.explanation._tag===`Failed`?t.span([t.Class(`text-sm text-destructive`)],[`That didn't work.`]):t.empty]),`src/component/flashcard.ts#explainButton`)},jye=(e,t,r,i)=>{let a=Dye[t.verdict],o=l3(e)||e.explanation._tag===`Loading`;return n(i.div([i.Class(`pop-in flex flex-col gap-4`)],[i.div([i.Class(F(`flex flex-col gap-3 rounded-xl border p-4`,a.tone))],[i.div([i.Class(`flex items-center gap-2 font-semibold`)],[L(a.iconName,`size-4`,i),a.title]),v3(t.statement,`text-base font-medium`,i),C(t.maybeMisconception,{onNone:()=>n(i.empty,`src/component/flashcard.ts#onNone~4`),onSome:e=>n(i.p([i.Class(`text-sm text-muted-foreground`)],[i.span([i.Class(`font-medium`)],[`Your pick changed `]),e]),`src/component/flashcard.ts#onSome~4`)}),Oye(t,i)]),kye(e,i),i.div([i.Class(F(`flex flex-wrap items-center gap-3`,o?`justify-between`:`justify-end`))],[o?Aye(e,i):i.empty,i.button([i.Type(`button`),i.Autofocus(!0),i.OnClick(n3.ClickedContinue()),i.Class(I(`Primary`,`Large`))],[r,L(`arrowRight`,``,i)])])]),`src/component/flashcard.ts#revealedView`)},x3=e=>n(qD((t,r)=>n(r.div([r.Class(Bz(`reveal flex flex-col gap-6 p-6 sm:p-8`))],[r.p([r.Class(`text-center text-xl leading-snug font-semibold text-balance sm:text-2xl`)],[v3(t.card.prompt,``,r)]),$4.match(t.phase,{Recall:()=>n(Eye(t,r),`src/component/flashcard.ts#Recall~10`),Pick:()=>n(r.div([r.Class(`flex flex-col gap-3`)],[y3(t,r),r.div([r.Class(`flex justify-center`)],[b3(t,r)])]),`src/component/flashcard.ts#Pick~10`),Submitting:()=>n(y3(t,r),`src/component/flashcard.ts#Submitting~10`),Revealed:({result:i})=>n(r.div([r.Class(`flex flex-col gap-4`)],[i.verdict===`DontKnow`?r.empty:y3(t,r),jye(t,i,e,r)]),`src/component/flashcard.ts#Revealed~10`)})]),`src/component/flashcard.ts#anonymous~9`)),`src/component/flashcard.ts#viewWith`);x3(`Continue`);var S3=pT({Answering:{},Submitting:{response:FI},Answered:{response:FI,feedback:LI}}),C3=pT({NotAsked:{},Writing:{text:O,maybeError:Mb(O)},Sending:{text:O},Answered:{text:O,reply:VI}}),w3=A({question:jI,maybeSelectedOptionId:Mb(O),text:O,note:O,isNoteOpen:Ky,phase:S3,canHint:Ky,hints:j(O),isHintLoading:Ky,maybeHintError:Mb(O),askWhy:Ky,why:C3}),T3=fT({SelectedOption:{optionId:O},UpdatedText:{value:O},UpdatedNote:{value:O},ToggledNote:{},ClickedSubmit:{},ClickedDontKnow:{},ClickedHint:{},SucceededHint:{hint:O},FailedHint:{error:O},UpdatedWhy:{value:O},ClickedCheckWhy:{},ClickedSkipWhy:{},SucceededWhy:{reply:VI},FailedWhy:{error:O},ClickedContinue:{},PressedKey:{key:O,isModified:Ky,isInTextField:Ky}}),E3=fT({SubmittedAnswer:{response:FI,note:O,hintLevel:k},ContinuedAfterFeedback:{}}),Mye=N(`RequestHint`,{args:{questionId:O,level:tb([1,2,3]),attempt:O},messages:[T3.SucceededHint,T3.FailedHint],execute:e=>n(D(function*(){let t=yield*(yield*XR).learning.hint({payload:{questionId:OI.make(e.questionId),level:e.level,attempt:e.attempt}});return n(T3.SucceededHint({hint:t.hint}),`src/component/quizCard.ts#anonymous`)}).pipe(rf(e=>n(T(T3.FailedHint({error:QR(e)})),`src/component/quizCard.ts#anonymous~2`))),`src/component/quizCard.ts#execute`)}),Nye=N(`RequestWhy`,{args:{questionId:O,reason:O},messages:[T3.SucceededWhy,T3.FailedWhy],execute:({questionId:e,reason:t})=>n(D(function*(){let r=yield*(yield*XR).learning.explainWhy({payload:{questionId:OI.make(e),reason:t}});return n(T3.SucceededWhy({reply:r}),`src/component/quizCard.ts#anonymous~3`)}).pipe(rf(e=>n(T(T3.FailedWhy({error:QR(e)})),`src/component/quizCard.ts#anonymous~4`))),`src/component/quizCard.ts#execute~2`)}),D3=(e,t={})=>n({question:e,maybeSelectedOptionId:b(),text:``,note:``,isNoteOpen:!1,phase:S3.Answering(),canHint:t.canHint??!1,hints:[],isHintLoading:!1,maybeHintError:b(),askWhy:t.askWhy??!1,why:C3.NotAsked()},`src/component/quizCard.ts#init`),O3=(e,t)=>n(S3.match(e.phase,{Answering:()=>n(e,`src/component/quizCard.ts#Answering`),Submitting:({response:r})=>n(P(e,{phase:()=>n(S3.Answered({response:r,feedback:t}),`src/component/quizCard.ts#phase`),why:r=>n(e.askWhy&&t.verdict===`Correct`?C3.Writing({text:``,maybeError:b()}):r,`src/component/quizCard.ts#why`)}),`src/component/quizCard.ts#Submitting`),Answered:()=>n(e,`src/component/quizCard.ts#Answered`)}),`src/component/quizCard.ts#showFeedback`),k3=e=>n(P(e,{phase:()=>n(S3.Answering(),`src/component/quizCard.ts#phase~2`)}),`src/component/quizCard.ts#reopen`),A3=(e,t)=>n({model:P(e,{phase:()=>n(S3.Submitting({response:t}),`src/component/quizCard.ts#phase~3`)}),outMessage:E3.SubmittedAnswer({response:t,note:wd(e.note),hintLevel:e.hints.length})},`src/component/quizCard.ts#submit`),Pye=e=>n(e.question.kind===`MultipleChoice`?C(gr(e.maybeSelectedOptionId,t=>n(Yi(e.question.options,e=>n(e.id===t,`src/component/quizCard.ts#anonymous~6`)),`src/component/quizCard.ts#anonymous~5`)),{onNone:()=>n(``,`src/component/quizCard.ts#onNone`),onSome:e=>n(`Leaning towards: ${e.text}`,`src/component/quizCard.ts#onSome`)}):e.text,`src/component/quizCard.ts#attemptSoFar`),j3=e=>n(e.question.kind===`MultipleChoice`?mr(e.maybeSelectedOptionId,e=>n(MI.make({optionId:e}),`src/component/quizCard.ts#anonymous~7`)):mr(xr(wd(e.text),e=>n(e.length>0,`src/component/quizCard.ts#anonymous~8`)),e=>n(NI.make({text:e}),`src/component/quizCard.ts#anonymous~9`)),`src/component/quizCard.ts#currentResponse`),M3=e=>n(e.phase._tag===`Answering`,`src/component/quizCard.ts#isAnswering`),N3=e=>n(e.why._tag===`Writing`||e.why._tag===`Sending`,`src/component/quizCard.ts#isAskingWhy`),P3=e=>n(C3.match(e.why,{NotAsked:()=>n({model:e},`src/component/quizCard.ts#NotAsked`),Writing:({text:t})=>n(Td(wd(t))?{model:e}:{model:P(e,{why:()=>n(C3.Sending({text:wd(t)}),`src/component/quizCard.ts#why~2`)}),commands:[Nye({questionId:e.question.id,reason:wd(t)})]},`src/component/quizCard.ts#Writing`),Sending:()=>n({model:e},`src/component/quizCard.ts#Sending`),Answered:()=>n({model:e},`src/component/quizCard.ts#Answered~2`)}),`src/component/quizCard.ts#checkWhy`),F3=(e,t)=>n(T3.match(t,{SelectedOption:({optionId:t})=>n(M3(e)?{model:P(e,{maybeSelectedOptionId:()=>n(x(t),`src/component/quizCard.ts#maybeSelectedOptionId`)})}:{model:e},`src/component/quizCard.ts#SelectedOption`),UpdatedText:({value:t})=>n({model:P(e,{text:()=>n(t,`src/component/quizCard.ts#text`)})},`src/component/quizCard.ts#UpdatedText`),UpdatedNote:({value:t})=>n({model:P(e,{note:()=>n(t,`src/component/quizCard.ts#note`)})},`src/component/quizCard.ts#UpdatedNote`),ToggledNote:()=>n({model:P(e,{isNoteOpen:e=>n(!e,`src/component/quizCard.ts#isNoteOpen`)})},`src/component/quizCard.ts#ToggledNote`),ClickedSubmit:()=>n(M3(e)?C(j3(e),{onNone:()=>n({model:e},`src/component/quizCard.ts#onNone~2`),onSome:t=>n(A3(e,t),`src/component/quizCard.ts#onSome~2`)}):{model:e},`src/component/quizCard.ts#ClickedSubmit`),ClickedDontKnow:()=>n(M3(e)?A3(e,PI.make({})):{model:e},`src/component/quizCard.ts#ClickedDontKnow`),ClickedHint:()=>{let t=e.hints.length+1;return n(e.canHint&&M3(e)&&!e.isHintLoading&&(t===1||t===2||t===3)?{model:P(e,{isHintLoading:()=>n(!0,`src/component/quizCard.ts#isHintLoading`),maybeHintError:()=>n(b(),`src/component/quizCard.ts#maybeHintError`)}),commands:[Mye({questionId:e.question.id,level:t,attempt:Pye(e)})]}:{model:e},`src/component/quizCard.ts#ClickedHint`)},SucceededHint:({hint:t})=>n({model:P(e,{hints:e=>n([...e,t],`src/component/quizCard.ts#hints`),isHintLoading:()=>n(!1,`src/component/quizCard.ts#isHintLoading~2`)})},`src/component/quizCard.ts#SucceededHint`),FailedHint:({error:t})=>n({model:P(e,{isHintLoading:()=>n(!1,`src/component/quizCard.ts#isHintLoading~3`),maybeHintError:()=>n(x(t),`src/component/quizCard.ts#maybeHintError~2`)})},`src/component/quizCard.ts#FailedHint`),UpdatedWhy:({value:t})=>n({model:P(e,{why:e=>n(e._tag===`Writing`?C3.Writing({text:t,maybeError:b()}):e,`src/component/quizCard.ts#why~3`)})},`src/component/quizCard.ts#UpdatedWhy`),ClickedCheckWhy:()=>n(P3(e),`src/component/quizCard.ts#ClickedCheckWhy`),ClickedSkipWhy:()=>n({model:P(e,{why:t=>n(N3(e)?C3.NotAsked():t,`src/component/quizCard.ts#why~4`)})},`src/component/quizCard.ts#ClickedSkipWhy`),SucceededWhy:({reply:t})=>n({model:P(e,{why:e=>n(e._tag===`Sending`?C3.Answered({text:e.text,reply:t}):e,`src/component/quizCard.ts#why~5`)})},`src/component/quizCard.ts#SucceededWhy`),FailedWhy:({error:t})=>n({model:P(e,{why:e=>n(e._tag===`Sending`?C3.Writing({text:e.text,maybeError:x(t)}):e,`src/component/quizCard.ts#why~6`)})},`src/component/quizCard.ts#FailedWhy`),ClickedContinue:()=>n(N3(e)?{model:e}:{model:e,outMessage:E3.ContinuedAfterFeedback()},`src/component/quizCard.ts#ClickedContinue`),PressedKey:({key:t,isModified:r,isInTextField:i})=>{let a=Fye.indexOf(t);return a>=0&&!i&&!r&&M3(e)?n(C(Mi(e.question.options,a),{onNone:()=>n({model:e},`src/component/quizCard.ts#onNone~3`),onSome:t=>n({model:P(e,{maybeSelectedOptionId:()=>n(x(t.id),`src/component/quizCard.ts#maybeSelectedOptionId~2`)})},`src/component/quizCard.ts#onSome~3`)}),`src/component/quizCard.ts#PressedKey`):n(t!==`Enter`||i&&!r?{model:e}:S3.match(e.phase,{Answering:()=>n(C(j3(e),{onNone:()=>n({model:e},`src/component/quizCard.ts#onNone~4`),onSome:t=>n(A3(e,t),`src/component/quizCard.ts#onSome~4`)}),`src/component/quizCard.ts#Answering~2`),Submitting:()=>n({model:e},`src/component/quizCard.ts#Submitting~2`),Answered:()=>n(N3(e)?P3(e):{model:e,outMessage:E3.ContinuedAfterFeedback()},`src/component/quizCard.ts#Answered~3`)}),`src/component/quizCard.ts#PressedKey`)}}),`src/component/quizCard.ts#update`),Fye=[`1`,`2`,`3`,`4`,`5`,`6`],Iye=e=>n(e instanceof HTMLElement&&(e.tagName===`TEXTAREA`||e.tagName===`INPUT`||e.isContentEditable),`src/component/quizCard.ts#isTextField`),Lye=e=>n(e instanceof HTMLElement&&(e.tagName===`BUTTON`||e.tagName===`A`),`src/component/quizCard.ts#isActivatable`),I3=iA()(()=>n({keyboard:sA(dk({target:()=>n(globalThis.document,`src/component/quizCard.ts#target`),type:`keydown`,filterMapEvent:e=>n(xr(T3.PressedKey({key:e.key,isModified:e.ctrlKey||e.metaKey,isInTextField:Iye(e.target)}),()=>n(!e.repeat&&!(e.key===`Enter`&&Lye(e.target)),`src/component/quizCard.ts#anonymous~11`)),`src/component/quizCard.ts#filterMapEvent`)}))},`src/component/quizCard.ts#anonymous~10`)),Rye=[`A`,`B`,`C`,`D`,`E`,`F`],zye=e=>n(S3.match(e,{Answering:()=>n(b(),`src/component/quizCard.ts#Answering~3`),Submitting:({response:e})=>n(e._tag===`Choice`?x(e.optionId):b(),`src/component/quizCard.ts#Submitting~3`),Answered:({response:e})=>n(e._tag===`Choice`?x(e.optionId):b(),`src/component/quizCard.ts#Answered~4`)}),`src/component/quizCard.ts#chosenOptionId`),Bye=(e,t,r,i)=>{let a=Sr(e.maybeSelectedOptionId,t.id),o=S3.match(e.phase,{Answering:()=>n(b(),`src/component/quizCard.ts#Answering~4`),Submitting:()=>n(b(),`src/component/quizCard.ts#Submitting~4`),Answered:({feedback:e})=>n(x(e),`src/component/quizCard.ts#Answered~5`)}),s=C(o,{onNone:()=>n(!1,`src/component/quizCard.ts#onNone~5`),onSome:e=>n(e.correctAnswer===t.text,`src/component/quizCard.ts#onSome~5`)}),c=S(o)&&Sr(zye(e.phase),t.id)&&!s;return n(i.keyed(`button`)(t.id,[i.Type(`button`),i.Disabled(!M3(e)),i.AriaPressed(a?`true`:`false`),i.OnClick(T3.SelectedOption({optionId:t.id})),i.Class(F(`press flex w-full items-start gap-3 rounded-xl border px-4 py-3 text-left transition-colors disabled:cursor-default`,{"border-primary bg-primary/8 ring-1 ring-primary/40":a&&M3(e),"hover:border-primary/40 hover:bg-accent/40":!a&&M3(e),"border-success/60 bg-success/10":s,"border-destructive/50 bg-destructive/8":c,"opacity-60":S(o)&&!s&&!c}))],[i.span([i.Class(F(`mt-0.5 flex size-6 shrink-0 items-center justify-center rounded-md border text-xs font-semibold`,{"border-primary bg-primary text-primary-foreground":a&&M3(e),"border-success bg-success text-white":s,"border-destructive bg-destructive text-white":c}))],[s?L(`check`,`size-3.5`,i):c?L(`x`,`size-3.5`,i):Rye[r]??`${r+1}`]),Q4(t.text,`flex-1 leading-relaxed`,i)]),`src/component/quizCard.ts#optionView`)},Vye=(e,t)=>n(e.question.kind===`MultipleChoice`?t.div([t.Class(`flex flex-col gap-2`)],w(e.question.options,(r,i)=>n(Bye(e,r,i,t),`src/component/quizCard.ts#anonymous~12`))):t.textarea([t.Value(e.text),t.Rows(4),t.Disabled(!M3(e)),t.Placeholder(`Answer in your own words…`),t.OnInput(e=>n(T3.UpdatedText({value:e}),`src/component/quizCard.ts#anonymous~13`)),t.Class(Vz(`resize-y text-base leading-relaxed`))]),`src/component/quizCard.ts#answerInputView`),Hye={Correct:{title:`Correct`,tone:`border-success/40 bg-success/8`,iconName:`check`},Partial:{title:`Partly right`,tone:`border-amber-500/40 bg-amber-500/8`,iconName:`alert`},Incorrect:{title:`Not quite`,tone:`border-destructive/40 bg-destructive/6`,iconName:`x`},DontKnow:{title:`Here's the answer`,tone:`border-info/40 bg-info/8`,iconName:`circleDashed`}},Uye=e=>n(S3.match(e.phase,{Answering:()=>n(b(),`src/component/quizCard.ts#Answering~5`),Submitting:()=>n(b(),`src/component/quizCard.ts#Submitting~5`),Answered:({response:t})=>n(Ew(t).pipe(Nw({Choice:({optionId:t})=>n(mr(Yi(e.question.options,e=>n(e.id===t,`src/component/quizCard.ts#anonymous~14`)),e=>n(e.text,`src/component/quizCard.ts#anonymous~15`)),`src/component/quizCard.ts#Choice`),Text:({text:e})=>n(xr(e,Ed),`src/component/quizCard.ts#Text`),DontKnow:()=>n(b(),`src/component/quizCard.ts#DontKnow`)})),`src/component/quizCard.ts#Answered~6`)}),`src/component/quizCard.ts#ownAnswer`),Wye=(e,t)=>n(t.a([t.Href(e),t.Target(`_blank`),t.Rel(`noopener`),t.Class(I(`Ghost`,`Medium`,`text-muted-foreground`))],[L(`fileText`,``,t),`Notes`,t.span([t.Class(`sr-only`)],[`(opens in a new tab)`])]),`src/component/quizCard.ts#notesLink`),L3={Solid:{title:`Good reason`,tone:`border-success/40 bg-success/8`},Partial:{title:`Almost`,tone:`border-amber-500/40 bg-amber-500/8`},Off:{title:`Here's the reason`,tone:`border-info/40 bg-info/8`}},R3=(e,t,r,i,a)=>{let o=`why-${e.question.id}`;return n(a.div([a.Class(`pop-in flex flex-col gap-3`)],[a.div([a.Class(`flex items-center gap-2 rounded-xl border border-success/40 bg-success/8 px-4 py-3 font-semibold`)],[L(`check`,`size-4`,a),`Correct`]),a.label([a.For(o),a.Class(`text-base font-medium`)],[`Why is that right?`]),a.textarea([a.Id(o),a.Value(t),a.Rows(2),a.Autofocus(!0),a.Disabled(r),a.Placeholder(`In a few words`),a.OnInput(e=>n(T3.UpdatedWhy({value:e}),`src/component/quizCard.ts#anonymous~16`)),a.Class(Vz(`resize-none text-base leading-relaxed`))]),C(i,{onNone:()=>n(a.empty,`src/component/quizCard.ts#onNone~6`),onSome:()=>n(a.p([a.Role(`alert`),a.Class(`text-sm text-destructive`)],[`That didn't work. Try again, or skip.`]),`src/component/quizCard.ts#onSome~6`)}),a.div([a.Class(`flex items-center justify-end gap-2`)],[a.button([a.Type(`button`),a.OnClick(T3.ClickedSkipWhy()),a.Class(I(`Ghost`,`Large`,`text-muted-foreground`))],[`Skip`]),a.button([a.Type(`button`),a.Disabled(r||Td(wd(t))),a.OnClick(T3.ClickedCheckWhy()),a.Class(I(`Primary`,`Large`))],[r?L(`refresh`,`spinner`,a):a.empty,r?`Checking…`:`Check`])])]),`src/component/quizCard.ts#whyPromptView`)},Gye=(e,t)=>n(C3.match(e.why,{NotAsked:()=>n(t.empty,`src/component/quizCard.ts#NotAsked~2`),Writing:()=>n(t.empty,`src/component/quizCard.ts#Writing~2`),Sending:()=>n(t.empty,`src/component/quizCard.ts#Sending~2`),Answered:({text:e,reply:r})=>n(t.div([t.Class(F(`flex flex-col gap-1.5 rounded-lg border px-3 py-2.5`,L3[r.verdict].tone))],[t.span([t.Class(`text-sm font-semibold`)],[L3[r.verdict].title]),t.p([t.Class(`text-sm text-muted-foreground`)],[t.span([t.Class(`font-medium`)],[`Your reason: `]),e]),Z4(r.reply,`prose-sm text-foreground/90`,t)]),`src/component/quizCard.ts#Answered~7`)}),`src/component/quizCard.ts#whyReplyView`),z3=(e,t,r,i,a)=>{let o=Hye[t.verdict];return n(a.div([a.Class(`pop-in flex flex-col gap-4`)],[a.div([a.Class(F(`flex flex-col gap-2 rounded-xl border p-4`,o.tone))],[a.div([a.Class(`flex items-center gap-2 font-semibold`)],[L(o.iconName,`size-4`,a),o.title]),Gye(e,a),t.verdict===`Correct`?a.empty:C(Uye(e),{onNone:()=>n(a.empty,`src/component/quizCard.ts#onNone~7`),onSome:e=>n(a.div([a.Class(`text-sm text-muted-foreground`)],[a.span([a.Class(`font-medium`)],[`You said: `]),Q4(e,``,a)]),`src/component/quizCard.ts#onSome~7`)}),e.question.kind===`ShortAnswer`||t.verdict!==`Correct`?a.div([a.Class(`text-sm`)],[a.span([a.Class(`font-medium`)],[`Answer: `]),Q4(t.correctAnswer,``,a)]):a.empty,Z4(t.explanation,`prose-sm text-foreground/90`,a),C(t.maybeMisconception,{onNone:()=>n(a.empty,`src/component/quizCard.ts#onNone~8`),onSome:e=>n(a.p([a.Class(`text-sm text-muted-foreground`)],[a.span([a.Class(`font-medium`)],[`Common trap: `]),e]),`src/component/quizCard.ts#onSome~8`)})]),a.div([a.Class(`flex items-center justify-end gap-2`)],[C(i,{onNone:()=>n(a.empty,`src/component/quizCard.ts#onNone~9`),onSome:e=>n(Wye(e,a),`src/component/quizCard.ts#onSome~9`)}),a.button([a.Type(`button`),a.Autofocus(!0),a.OnClick(T3.ClickedContinue()),a.Class(I(`Primary`,`Large`))],[r,L(`arrowRight`,``,a)])])]),`src/component/quizCard.ts#feedbackView`)},Kye=(e,t)=>n(Di(e.hints)&&or(e.maybeHintError)?t.empty:t.div([t.Class(`flex flex-col gap-2`)],[...w(e.hints,(e,r)=>n(t.keyed(`div`)(`hint-${r}`,[t.Class(`pop-in flex flex-col gap-1 rounded-lg border border-primary/25 bg-primary/5 px-3 py-2`)],[t.span([t.Class(`flex items-center gap-1.5 text-xs font-medium text-primary`)],[L(`lightbulb`,`size-3.5`,t),`Hint ${r+1}`]),Z4(e,`prose-sm text-foreground/90`,t)]),`src/component/quizCard.ts#anonymous~17`)),C(e.maybeHintError,{onNone:()=>n(t.empty,`src/component/quizCard.ts#onNone~10`),onSome:e=>n(t.p([t.Class(`text-sm text-destructive`)],[e]),`src/component/quizCard.ts#onSome~10`)}),Di(e.hints)?t.empty:t.p([t.Class(`text-xs text-muted-foreground`)],[`Hints are fine. This one will come back a bit sooner.`])]),`src/component/quizCard.ts#hintsView`),B3=(e,t)=>{let r=e.phase._tag===`Submitting`,i=M3(e)&&S(j3(e));return n(t.div([t.Class(`flex flex-col gap-3`)],[Kye(e,t),e.isNoteOpen?t.textarea([t.Value(e.note),t.Rows(2),t.Placeholder(`Your thinking, if you like. The tutor reads it.`),t.OnInput(e=>n(T3.UpdatedNote({value:e}),`src/component/quizCard.ts#anonymous~18`)),t.Class(Vz(`resize-none text-sm`))]):t.empty,t.div([t.Class(`flex flex-wrap items-center justify-between gap-2`)],[t.div([t.Class(`flex items-center gap-1`)],[t.button([t.Type(`button`),t.Disabled(!M3(e)),t.OnClick(T3.ClickedDontKnow()),t.Class(I(`Ghost`,`Medium`,`text-muted-foreground`))],[L(`circleDashed`,``,t),`I don't know`]),e.canHint&&M3(e)&&e.hints.length<3?t.button([t.Type(`button`),t.Disabled(e.isHintLoading),t.OnClick(T3.ClickedHint()),t.Class(I(`Ghost`,`Medium`,`text-muted-foreground`))],[e.isHintLoading?L(`refresh`,`spinner`,t):L(`lightbulb`,``,t),Di(e.hints)?`Hint`:`Hint ${e.hints.length+1} of 3`]):t.empty,t.button([t.Type(`button`),t.OnClick(T3.ToggledNote()),t.Class(I(`Ghost`,`Medium`,`text-muted-foreground`))],[e.isNoteOpen?`Hide note`:`Add a note`])]),t.button([t.Type(`button`),t.Disabled(!i),t.OnClick(T3.ClickedSubmit()),t.Class(I(`Primary`,`Large`))],[r?L(`refresh`,`spinner`,t):t.empty,r?`Checking…`:`Check answer`])])]),`src/component/quizCard.ts#actionsView`)},V3=(e,t=b())=>n(qD((r,i)=>n(i.div([i.Class(Bz(`reveal flex flex-col gap-5 p-6 sm:p-7`))],[Z4(r.question.prompt,`text-lg leading-relaxed`,i),Vye(r,i),S3.match(r.phase,{Answering:()=>n(B3(r,i),`src/component/quizCard.ts#Answering~6`),Submitting:()=>n(B3(r,i),`src/component/quizCard.ts#Submitting~6`),Answered:({feedback:a})=>n(C3.match(r.why,{Writing:({text:e,maybeError:t})=>n(R3(r,e,!1,t,i),`src/component/quizCard.ts#Writing~3`),Sending:({text:e})=>n(R3(r,e,!0,b(),i),`src/component/quizCard.ts#Sending~3`),NotAsked:()=>n(z3(r,a,e,t,i),`src/component/quizCard.ts#NotAsked~3`),Answered:()=>n(z3(r,a,e,t,i),`src/component/quizCard.ts#Answered~9`)}),`src/component/quizCard.ts#Answered~8`)})]),`src/component/quizCard.ts#anonymous~19`)),`src/component/quizCard.ts#viewWith`),qye=`/**
427
+ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+O4(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}},G4=new W4;function K4(e,t){return G4.parse(e,t)}K4.options=K4.setOptions=function(e){return G4.setOptions(e),K4.defaults=G4.defaults,X2(K4.defaults),K4},K4.getDefaults=J2,K4.defaults=Y2;function uye(...e){return G4.use(...e),K4.defaults=G4.defaults,X2(K4.defaults),K4}K4.use=uye,K4.walkTokens=function(e,t){return G4.walkTokens(e,t)},K4.parseInline=G4.parseInline,K4.Parser=H4,K4.parser=H4.parse,K4.Renderer=B4,K4.TextRenderer=V4,K4.Lexer=z4,K4.lexer=z4.lex,K4.Tokenizer=R4,K4.Hooks=U4,K4.parse=K4,K4.options,K4.setOptions,K4.walkTokens,K4.parseInline,H4.parse,z4.lex;var q4=(e,t)=>n(gve.renderToString(e,{displayMode:t,throwOnError:!1,output:`htmlAndMathml`}),`src/ui/markdown.ts#renderMath`),dye={name:`blockMath`,level:`block`,start:e=>n(e.indexOf(`$$`),`src/ui/markdown.ts#start`),tokenizer:e=>{let t=/^\$\$([\s\S]+?)\$\$(?:\n|$)/.exec(e);return n(t===null?void 0:{type:`blockMath`,raw:t[0],text:(t[1]??``).trim()},`src/ui/markdown.ts#tokenizer`)},renderer:e=>n(`<div class="math-block">${q4(String(e.text),!0)}</div>`,`src/ui/markdown.ts#renderer`)},fye={name:`inlineMath`,level:`inline`,start:e=>n(e.indexOf(`$`),`src/ui/markdown.ts#start~2`),tokenizer:e=>{let t=/^\$(?!\s)((?:\\\$|[^$\n])+?)(?<!\s)\$(?!\d)/.exec(e);return n(t===null?void 0:{type:`inlineMath`,raw:t[0],text:t[1]??``},`src/ui/markdown.ts#tokenizer~2`)},renderer:e=>n(q4(String(e.text),!1),`src/ui/markdown.ts#renderer~2`)},J4=new W4({gfm:!0,breaks:!1});J4.use({extensions:[dye,fye]});var Y4=new Map,pye=500,X4=e=>{let t=Y4.get(e);if(t!==void 0)return n(t,`src/ui/markdown.ts#renderMarkdown`);let r=gge.sanitize(J4.parse(e,{async:!1}),{USE_PROFILES:{html:!0,mathMl:!0,svg:!0}});if(Y4.size>=pye){let e=Y4.keys().next();e.done!==!0&&Y4.delete(e.value)}return Y4.set(e,r),n(r,`src/ui/markdown.ts#renderMarkdown`)},mye=e=>n(X4(e).replace(/^<p>/,``).replace(/<\/p>\s*$/,``),`src/ui/markdown.ts#renderInlineMarkdown`),Z4=(e,t,r)=>n(r.div([r.Class(F(`prose prose-neutral max-w-none dark:prose-invert prose-headings:tracking-tight prose-code:before:content-none prose-code:after:content-none`,t)),r.InnerHTML(X4(e))]),`src/ui/markdown.ts#markdownView`),Q4=(e,t,r)=>n(r.span([r.Class(t),r.InnerHTML(mye(e))]),`src/ui/markdown.ts#inlineMarkdownView`),$4=pT({Recall:{},Pick:{recallMs:k},Submitting:{response:KI,maybeRecallMs:Mb(k)},Revealed:{response:KI,result:JI}}),e3=pT({Idle:{},Loading:{},Shown:{body:O},Failed:{}}),t3=A({card:HI,phase:$4,explanation:e3,shownAt:k}),n3=fT({CompletedMarkCardShown:{at:k},ClickedShowChoices:{},CompletedMarkChoicesShown:{at:k},ClickedOption:{optionId:O},ClickedDontKnow:{},CompletedMarkAnswered:{at:k},ClickedContinue:{},ClickedExplainIt:{},PressedKey:{key:O,isModified:Ky}}),r3=fT({Answered:{response:KI,recallMs:k,latencyMs:k},Continued:{},RequestedExplanation:{response:KI}}),hye=N(`MarkCardShown`,{messages:[n3.CompletedMarkCardShown],execute:hd.pipe(ef(e=>n(n3.CompletedMarkCardShown({at:e}),`src/component/flashcard.ts#anonymous`)))}),gye=N(`MarkChoicesShown`,{messages:[n3.CompletedMarkChoicesShown],execute:hd.pipe(ef(e=>n(n3.CompletedMarkChoicesShown({at:e}),`src/component/flashcard.ts#anonymous~2`)))}),_ye=N(`MarkAnswered`,{messages:[n3.CompletedMarkAnswered],execute:hd.pipe(ef(e=>n(n3.CompletedMarkAnswered({at:e}),`src/component/flashcard.ts#anonymous~3`)))}),i3=e=>n({model:{card:e,phase:$4.Recall(),explanation:e3.Idle(),shownAt:0},commands:[hye()]},`src/component/flashcard.ts#init`),a3=(e,t)=>n($4.match(e.phase,{Recall:()=>n(e,`src/component/flashcard.ts#Recall`),Pick:()=>n(e,`src/component/flashcard.ts#Pick`),Submitting:({response:r})=>n(P(e,{phase:()=>n($4.Revealed({response:r,result:t}),`src/component/flashcard.ts#phase`)}),`src/component/flashcard.ts#Submitting`),Revealed:()=>n(e,`src/component/flashcard.ts#Revealed`)}),`src/component/flashcard.ts#showResult`),o3=e=>n($4.match(e.phase,{Recall:()=>n(e,`src/component/flashcard.ts#Recall~2`),Pick:()=>n(e,`src/component/flashcard.ts#Pick~2`),Submitting:({maybeRecallMs:t})=>n(P(e,{phase:()=>n(C(t,{onNone:()=>n($4.Recall(),`src/component/flashcard.ts#onNone`),onSome:e=>n($4.Pick({recallMs:e}),`src/component/flashcard.ts#onSome`)}),`src/component/flashcard.ts#phase~2`)}),`src/component/flashcard.ts#Submitting~2`),Revealed:()=>n(e,`src/component/flashcard.ts#Revealed~2`)}),`src/component/flashcard.ts#reopen`),s3=(e,t)=>n(e.explanation._tag===`Loading`?P(e,{explanation:()=>n(e3.Shown({body:t}),`src/component/flashcard.ts#explanation`)}):e,`src/component/flashcard.ts#showExplanation`),c3=e=>n(e.explanation._tag===`Loading`?P(e,{explanation:()=>n(e3.Failed(),`src/component/flashcard.ts#explanation~2`)}):e,`src/component/flashcard.ts#explanationFailed`),l3=e=>n(e.phase._tag===`Revealed`&&e.phase.result.verdict!==`Correct`&&(e.explanation._tag===`Idle`||e.explanation._tag===`Failed`),`src/component/flashcard.ts#canExplain`),u3=e=>n(e.phase._tag===`Revealed`,`src/component/flashcard.ts#isRevealed`),d3=e=>n(e.phase._tag===`Recall`||e.phase._tag===`Pick`,`src/component/flashcard.ts#isRecalling`),f3=(e,t,r)=>n({model:P(e,{phase:()=>n($4.Submitting({response:t,maybeRecallMs:r}),`src/component/flashcard.ts#phase~3`)}),commands:[_ye()]},`src/component/flashcard.ts#answer`),p3=e=>n(e.phase._tag===`Recall`?{model:e,commands:[gye()]}:{model:e},`src/component/flashcard.ts#showChoices`),m3=(e,t)=>n($4.match(e.phase,{Recall:()=>n({model:e},`src/component/flashcard.ts#Recall~3`),Pick:({recallMs:r})=>n(f3(e,MI.make({optionId:t}),x(r)),`src/component/flashcard.ts#Pick~3`),Submitting:()=>n({model:e},`src/component/flashcard.ts#Submitting~3`),Revealed:()=>n({model:e},`src/component/flashcard.ts#Revealed~3`)}),`src/component/flashcard.ts#pick`),vye=e=>n($4.match(e.phase,{Recall:()=>n(f3(e,PI.make({}),b()),`src/component/flashcard.ts#Recall~4`),Pick:({recallMs:t})=>n(f3(e,PI.make({}),x(t)),`src/component/flashcard.ts#Pick~4`),Submitting:()=>n({model:e},`src/component/flashcard.ts#Submitting~4`),Revealed:()=>n({model:e},`src/component/flashcard.ts#Revealed~4`)}),`src/component/flashcard.ts#dontKnow`),h3=e=>n(u3(e)?{model:e,outMessage:r3.Continued()}:{model:e},`src/component/flashcard.ts#continued`),yye=e=>n($4.match(e.phase,{Recall:()=>n({model:e},`src/component/flashcard.ts#Recall~5`),Pick:()=>n({model:e},`src/component/flashcard.ts#Pick~5`),Submitting:()=>n({model:e},`src/component/flashcard.ts#Submitting~5`),Revealed:({response:t})=>n(l3(e)?{model:P(e,{explanation:()=>n(e3.Loading(),`src/component/flashcard.ts#explanation~3`)}),outMessage:r3.RequestedExplanation({response:t})}:{model:e},`src/component/flashcard.ts#Revealed~5`)}),`src/component/flashcard.ts#explainIt`),bye=[`1`,`2`,`3`,`4`,`5`,`6`],g3=(e,t)=>n(n3.match(t,{CompletedMarkCardShown:({at:t})=>n({model:P(e,{shownAt:()=>n(t,`src/component/flashcard.ts#shownAt`)})},`src/component/flashcard.ts#CompletedMarkCardShown`),ClickedShowChoices:()=>n(p3(e),`src/component/flashcard.ts#ClickedShowChoices`),CompletedMarkChoicesShown:({at:t})=>n({model:e.phase._tag===`Recall`?P(e,{phase:()=>n($4.Pick({recallMs:Math.max(0,t-e.shownAt)}),`src/component/flashcard.ts#phase~4`)}):e},`src/component/flashcard.ts#CompletedMarkChoicesShown`),ClickedOption:({optionId:t})=>n(m3(e,t),`src/component/flashcard.ts#ClickedOption`),ClickedDontKnow:()=>n(vye(e),`src/component/flashcard.ts#ClickedDontKnow`),CompletedMarkAnswered:({at:t})=>n($4.match(e.phase,{Recall:()=>n({model:e},`src/component/flashcard.ts#Recall~6`),Pick:()=>n({model:e},`src/component/flashcard.ts#Pick~6`),Revealed:()=>n({model:e},`src/component/flashcard.ts#Revealed~6`),Submitting:({response:r,maybeRecallMs:i})=>{let a=Math.max(0,t-e.shownAt);return n({model:e,outMessage:r3.Answered({response:r,recallMs:sr(i,()=>n(a,`src/component/flashcard.ts#anonymous~4`)),latencyMs:a})},`src/component/flashcard.ts#Submitting~6`)}}),`src/component/flashcard.ts#CompletedMarkAnswered`),ClickedContinue:()=>n(h3(e),`src/component/flashcard.ts#ClickedContinue`),ClickedExplainIt:()=>n(yye(e),`src/component/flashcard.ts#ClickedExplainIt`),PressedKey:({key:t,isModified:r})=>{if(r)return n({model:e},`src/component/flashcard.ts#PressedKey`);let i=bye.indexOf(t);return n($4.match(e.phase,{Recall:()=>n(t===` `||t===`Enter`?p3(e):{model:e},`src/component/flashcard.ts#Recall~7`),Pick:()=>n(C(Mi(e.card.options,i),{onNone:()=>n({model:e},`src/component/flashcard.ts#onNone~2`),onSome:t=>n(m3(e,t.id),`src/component/flashcard.ts#onSome~2`)}),`src/component/flashcard.ts#Pick~7`),Submitting:()=>n({model:e},`src/component/flashcard.ts#Submitting~7`),Revealed:()=>n(t===` `||t===`Enter`?h3(e):{model:e},`src/component/flashcard.ts#Revealed~7`)}),`src/component/flashcard.ts#PressedKey`)}}),`src/component/flashcard.ts#update`),xye=e=>n(e instanceof HTMLElement&&(e.tagName===`TEXTAREA`||e.tagName===`INPUT`||e.isContentEditable),`src/component/flashcard.ts#isTyping`),Sye=e=>n(e instanceof HTMLElement&&(e.tagName===`BUTTON`||e.tagName===`A`),`src/component/flashcard.ts#isActivatable`),_3=iA()(()=>n({keyboard:sA(dk({target:()=>n(globalThis.document,`src/component/flashcard.ts#target`),type:`keydown`,filterMapEvent:e=>n(xr(n3.PressedKey({key:e.key,isModified:e.ctrlKey||e.metaKey||e.altKey}),()=>n(!e.repeat&&!xye(e.target)&&(e.key!==`Enter`&&e.key!==` `||!Sye(e.target)),`src/component/flashcard.ts#anonymous~6`)),`src/component/flashcard.ts#filterMapEvent`)}))},`src/component/flashcard.ts#anonymous~5`)),v3=(e,t,r)=>n(/[$*`_[\]]/.test(e)?Q4(e,t,r):r.span([r.Class(t)],[e]),`src/component/flashcard.ts#richText`),Cye=[`1`,`2`,`3`,`4`,`5`,`6`],wye=e=>n($4.match(e,{Recall:()=>n(b(),`src/component/flashcard.ts#Recall~8`),Pick:()=>n(b(),`src/component/flashcard.ts#Pick~8`),Submitting:({response:e})=>n(e._tag===`Choice`?x(e.optionId):b(),`src/component/flashcard.ts#Submitting~8`),Revealed:({response:e})=>n(e._tag===`Choice`?x(e.optionId):b(),`src/component/flashcard.ts#Revealed~8`)}),`src/component/flashcard.ts#chosenOptionId`),Tye=(e,t,r,i)=>{let a=$4.match(e.phase,{Recall:()=>n(b(),`src/component/flashcard.ts#Recall~9`),Pick:()=>n(b(),`src/component/flashcard.ts#Pick~9`),Submitting:()=>n(b(),`src/component/flashcard.ts#Submitting~9`),Revealed:({result:e})=>n(x(e),`src/component/flashcard.ts#Revealed~9`)}),o=e.phase._tag===`Pick`,s=Sr(wye(e.phase),t.id),c=Cr(a,e=>n(e.correctOptionId===t.id,`src/component/flashcard.ts#anonymous~7`)),l=S(a)&&s&&!c;return n(i.keyed(`button`)(t.id,[i.Type(`button`),i.Disabled(!o),i.OnClick(n3.ClickedOption({optionId:t.id})),i.Class(F(`press flex w-full items-start gap-3 rounded-xl border px-4 py-3 text-left transition-colors disabled:cursor-default`,{"hover:border-primary/40 hover:bg-accent/40":o,"border-primary bg-primary/8":s&&e.phase._tag===`Submitting`,"border-success/60 bg-success/10":c,"border-destructive/50 bg-destructive/8":l,"opacity-60":S(a)&&!c&&!l}))],[i.span([i.Class(F(`mt-0.5 flex size-6 shrink-0 items-center justify-center rounded-md border text-xs font-semibold`,{"border-success bg-success text-white":c,"border-destructive bg-destructive text-white":l}))],[c?L(`check`,`size-3.5`,i):l?L(`x`,`size-3.5`,i):Cye[r]??`${r+1}`]),v3(t.text,`flex-1 leading-relaxed`,i)]),`src/component/flashcard.ts#optionView`)},y3=(e,t)=>n(t.div([t.Class(`reveal flex flex-col gap-2`)],w(e.card.options,(r,i)=>n(Tye(e,r,i,t),`src/component/flashcard.ts#anonymous~8`))),`src/component/flashcard.ts#optionsView`),b3=(e,t)=>n(t.button([t.Type(`button`),t.Disabled(!d3(e)),t.OnClick(n3.ClickedDontKnow()),t.Class(I(`Ghost`,`Large`,`text-muted-foreground`))],[`I don't know`]),`src/component/flashcard.ts#dontKnowButton`),Eye=(e,t)=>n(t.div([t.Class(`flex flex-col items-center gap-4`)],[t.p([t.Class(`text-sm text-muted-foreground`)],[`Think of the answer first.`]),t.div([t.Class(`flex w-full flex-col-reverse gap-2 sm:flex-row sm:justify-center`)],[b3(e,t),t.button([t.Type(`button`),t.Autofocus(!0),t.OnClick(n3.ClickedShowChoices()),t.Class(I(`Primary`,`Large`,`sm:min-w-48`))],[`Show choices`,t.span([t.Class(F(Uz,`ml-1 max-sm:hidden`))],[`Space`])])])]),`src/component/flashcard.ts#recallActions`),Dye={Correct:{title:`Correct`,tone:`border-success/40 bg-success/8`,iconName:`check`},Incorrect:{title:`Not quite`,tone:`border-destructive/40 bg-destructive/6`,iconName:`x`},DontKnow:{title:`Here's the answer`,tone:`border-info/40 bg-info/8`,iconName:`circleDashed`}},Oye=(e,t)=>n(e.quote.trim().length===0?t.empty:t.figure([t.Class(`flex flex-col gap-1.5`)],[t.figcaption([t.Class(`flex items-center gap-1.5 text-xs font-medium text-muted-foreground`)],[L(`book`,`size-3.5`,t),`From your source`]),t.blockquote([t.Class(`border-l-2 border-primary/50 pl-3 text-sm leading-relaxed text-foreground/90`)],[e.quote.trim()]),C(e.maybeDocumentName,{onNone:()=>n(t.empty,`src/component/flashcard.ts#onNone~3`),onSome:e=>n(t.p([t.Class(`text-xs text-muted-foreground`)],[e]),`src/component/flashcard.ts#onSome~3`)})]),`src/component/flashcard.ts#sourceView`),kye=(e,t)=>n(e3.match(e.explanation,{Idle:()=>n(t.empty,`src/component/flashcard.ts#Idle`),Loading:()=>n(t.empty,`src/component/flashcard.ts#Loading`),Failed:()=>n(t.empty,`src/component/flashcard.ts#Failed`),Shown:({body:e})=>n(t.section([t.Class(`reveal flex flex-col gap-2 rounded-xl border border-primary/25 bg-primary/5 p-4`)],[t.p([t.Class(`flex items-center gap-1.5 text-xs font-medium tracking-wide text-primary uppercase`)],[L(`lightbulb`,`size-3.5`,t),`Another way to see it`]),Z4(e,`text-sm leading-relaxed`,t)]),`src/component/flashcard.ts#Shown`)}),`src/component/flashcard.ts#explanationView`),Aye=(e,t)=>{let r=e.explanation._tag===`Loading`;return n(t.div([t.Class(`flex items-center gap-2`)],[t.button([t.Type(`button`),t.Disabled(r),t.OnClick(n3.ClickedExplainIt()),t.Class(I(`Ghost`,`Large`,`text-muted-foreground`))],r?[L(`refresh`,`spinner`,t),t.span([t.Class(`shimmer-text`)],[`Explaining`])]:[L(`lightbulb`,``,t),e.explanation._tag===`Failed`?`Try again`:`Explain it`]),e.explanation._tag===`Failed`?t.span([t.Class(`text-sm text-destructive`)],[`That didn't work.`]):t.empty]),`src/component/flashcard.ts#explainButton`)},jye=(e,t,r,i)=>{let a=Dye[t.verdict],o=l3(e)||e.explanation._tag===`Loading`;return n(i.div([i.Class(`pop-in flex flex-col gap-4`)],[i.div([i.Class(F(`flex flex-col gap-3 rounded-xl border p-4`,a.tone))],[i.div([i.Class(`flex items-center gap-2 font-semibold`)],[L(a.iconName,`size-4`,i),a.title]),v3(t.statement,`text-base font-medium`,i),C(t.maybeMisconception,{onNone:()=>n(i.empty,`src/component/flashcard.ts#onNone~4`),onSome:e=>n(i.p([i.Class(`text-sm text-muted-foreground`)],[i.span([i.Class(`font-medium`)],[`Your pick changed `]),e]),`src/component/flashcard.ts#onSome~4`)}),Oye(t,i)]),kye(e,i),i.div([i.Class(F(`flex flex-wrap items-center gap-3`,o?`justify-between`:`justify-end`))],[o?Aye(e,i):i.empty,i.button([i.Type(`button`),i.Autofocus(!0),i.OnClick(n3.ClickedContinue()),i.Class(I(`Primary`,`Large`))],[r,L(`arrowRight`,``,i)])])]),`src/component/flashcard.ts#revealedView`)},x3=e=>n(qD((t,r)=>n(r.div([r.Class(Bz(`reveal flex flex-col gap-6 p-6 sm:p-8`))],[r.p([r.Class(`text-center text-xl leading-snug font-semibold text-balance sm:text-2xl`)],[v3(t.card.prompt,``,r)]),$4.match(t.phase,{Recall:()=>n(Eye(t,r),`src/component/flashcard.ts#Recall~10`),Pick:()=>n(r.div([r.Class(`flex flex-col gap-3`)],[y3(t,r),r.div([r.Class(`flex justify-center`)],[b3(t,r)])]),`src/component/flashcard.ts#Pick~10`),Submitting:()=>n(y3(t,r),`src/component/flashcard.ts#Submitting~10`),Revealed:({result:i})=>n(r.div([r.Class(`flex flex-col gap-4`)],[i.verdict===`DontKnow`?r.empty:y3(t,r),jye(t,i,e,r)]),`src/component/flashcard.ts#Revealed~10`)})]),`src/component/flashcard.ts#anonymous~9`)),`src/component/flashcard.ts#viewWith`);x3(`Continue`);var S3=pT({Answering:{},Submitting:{response:FI},Answered:{response:FI,feedback:LI}}),C3=pT({NotAsked:{},Writing:{text:O,maybeError:Mb(O)},Sending:{text:O},Answered:{text:O,reply:VI}}),w3=A({question:jI,maybeSelectedOptionId:Mb(O),text:O,note:O,isNoteOpen:Ky,phase:S3,canHint:Ky,hints:j(O),isHintLoading:Ky,maybeHintError:Mb(O),askWhy:Ky,why:C3}),T3=fT({SelectedOption:{optionId:O},UpdatedText:{value:O},UpdatedNote:{value:O},ToggledNote:{},ClickedSubmit:{},ClickedDontKnow:{},ClickedHint:{},SucceededHint:{hint:O},FailedHint:{error:O},UpdatedWhy:{value:O},ClickedCheckWhy:{},ClickedSkipWhy:{},SucceededWhy:{reply:VI},FailedWhy:{error:O},ClickedContinue:{},PressedKey:{key:O,isModified:Ky,isInTextField:Ky}}),E3=fT({SubmittedAnswer:{response:FI,note:O,hintLevel:k},ContinuedAfterFeedback:{}}),Mye=N(`RequestHint`,{args:{questionId:O,level:tb([1,2,3]),attempt:O},messages:[T3.SucceededHint,T3.FailedHint],execute:e=>n(D(function*(){let t=yield*(yield*XR).learning.hint({payload:{questionId:OI.make(e.questionId),level:e.level,attempt:e.attempt}});return n(T3.SucceededHint({hint:t.hint}),`src/component/quizCard.ts#anonymous`)}).pipe(rf(e=>n(T(T3.FailedHint({error:QR(e)})),`src/component/quizCard.ts#anonymous~2`))),`src/component/quizCard.ts#execute`)}),Nye=N(`RequestWhy`,{args:{questionId:O,reason:O},messages:[T3.SucceededWhy,T3.FailedWhy],execute:({questionId:e,reason:t})=>n(D(function*(){let r=yield*(yield*XR).learning.explainWhy({payload:{questionId:OI.make(e),reason:t}});return n(T3.SucceededWhy({reply:r}),`src/component/quizCard.ts#anonymous~3`)}).pipe(rf(e=>n(T(T3.FailedWhy({error:QR(e)})),`src/component/quizCard.ts#anonymous~4`))),`src/component/quizCard.ts#execute~2`)}),D3=(e,t={})=>n({question:e,maybeSelectedOptionId:b(),text:``,note:``,isNoteOpen:!1,phase:S3.Answering(),canHint:t.canHint??!1,hints:[],isHintLoading:!1,maybeHintError:b(),askWhy:t.askWhy??!1,why:C3.NotAsked()},`src/component/quizCard.ts#init`),O3=(e,t)=>n(S3.match(e.phase,{Answering:()=>n(e,`src/component/quizCard.ts#Answering`),Submitting:({response:r})=>n(P(e,{phase:()=>n(S3.Answered({response:r,feedback:t}),`src/component/quizCard.ts#phase`),why:r=>n(e.askWhy&&t.verdict===`Correct`?C3.Writing({text:``,maybeError:b()}):r,`src/component/quizCard.ts#why`)}),`src/component/quizCard.ts#Submitting`),Answered:()=>n(e,`src/component/quizCard.ts#Answered`)}),`src/component/quizCard.ts#showFeedback`),k3=e=>n(P(e,{phase:()=>n(S3.Answering(),`src/component/quizCard.ts#phase~2`)}),`src/component/quizCard.ts#reopen`),A3=(e,t)=>n({model:P(e,{phase:()=>n(S3.Submitting({response:t}),`src/component/quizCard.ts#phase~3`)}),outMessage:E3.SubmittedAnswer({response:t,note:wd(e.note),hintLevel:e.hints.length})},`src/component/quizCard.ts#submit`),Pye=e=>n(e.question.kind===`MultipleChoice`?C(gr(e.maybeSelectedOptionId,t=>n(Yi(e.question.options,e=>n(e.id===t,`src/component/quizCard.ts#anonymous~6`)),`src/component/quizCard.ts#anonymous~5`)),{onNone:()=>n(``,`src/component/quizCard.ts#onNone`),onSome:e=>n(`Leaning towards: ${e.text}`,`src/component/quizCard.ts#onSome`)}):e.text,`src/component/quizCard.ts#attemptSoFar`),j3=e=>n(e.question.kind===`MultipleChoice`?mr(e.maybeSelectedOptionId,e=>n(MI.make({optionId:e}),`src/component/quizCard.ts#anonymous~7`)):mr(xr(wd(e.text),e=>n(e.length>0,`src/component/quizCard.ts#anonymous~8`)),e=>n(NI.make({text:e}),`src/component/quizCard.ts#anonymous~9`)),`src/component/quizCard.ts#currentResponse`),M3=e=>n(e.phase._tag===`Answering`,`src/component/quizCard.ts#isAnswering`),N3=e=>n(e.why._tag===`Writing`||e.why._tag===`Sending`,`src/component/quizCard.ts#isAskingWhy`),P3=e=>n(C3.match(e.why,{NotAsked:()=>n({model:e},`src/component/quizCard.ts#NotAsked`),Writing:({text:t})=>n(Td(wd(t))?{model:e}:{model:P(e,{why:()=>n(C3.Sending({text:wd(t)}),`src/component/quizCard.ts#why~2`)}),commands:[Nye({questionId:e.question.id,reason:wd(t)})]},`src/component/quizCard.ts#Writing`),Sending:()=>n({model:e},`src/component/quizCard.ts#Sending`),Answered:()=>n({model:e},`src/component/quizCard.ts#Answered~2`)}),`src/component/quizCard.ts#checkWhy`),F3=(e,t)=>n(T3.match(t,{SelectedOption:({optionId:t})=>n(M3(e)?{model:P(e,{maybeSelectedOptionId:()=>n(x(t),`src/component/quizCard.ts#maybeSelectedOptionId`)})}:{model:e},`src/component/quizCard.ts#SelectedOption`),UpdatedText:({value:t})=>n({model:P(e,{text:()=>n(t,`src/component/quizCard.ts#text`)})},`src/component/quizCard.ts#UpdatedText`),UpdatedNote:({value:t})=>n({model:P(e,{note:()=>n(t,`src/component/quizCard.ts#note`)})},`src/component/quizCard.ts#UpdatedNote`),ToggledNote:()=>n({model:P(e,{isNoteOpen:e=>n(!e,`src/component/quizCard.ts#isNoteOpen`)})},`src/component/quizCard.ts#ToggledNote`),ClickedSubmit:()=>n(M3(e)?C(j3(e),{onNone:()=>n({model:e},`src/component/quizCard.ts#onNone~2`),onSome:t=>n(A3(e,t),`src/component/quizCard.ts#onSome~2`)}):{model:e},`src/component/quizCard.ts#ClickedSubmit`),ClickedDontKnow:()=>n(M3(e)?A3(e,PI.make({})):{model:e},`src/component/quizCard.ts#ClickedDontKnow`),ClickedHint:()=>{let t=e.hints.length+1;return n(e.canHint&&M3(e)&&!e.isHintLoading&&(t===1||t===2||t===3)?{model:P(e,{isHintLoading:()=>n(!0,`src/component/quizCard.ts#isHintLoading`),maybeHintError:()=>n(b(),`src/component/quizCard.ts#maybeHintError`)}),commands:[Mye({questionId:e.question.id,level:t,attempt:Pye(e)})]}:{model:e},`src/component/quizCard.ts#ClickedHint`)},SucceededHint:({hint:t})=>n({model:P(e,{hints:e=>n([...e,t],`src/component/quizCard.ts#hints`),isHintLoading:()=>n(!1,`src/component/quizCard.ts#isHintLoading~2`)})},`src/component/quizCard.ts#SucceededHint`),FailedHint:({error:t})=>n({model:P(e,{isHintLoading:()=>n(!1,`src/component/quizCard.ts#isHintLoading~3`),maybeHintError:()=>n(x(t),`src/component/quizCard.ts#maybeHintError~2`)})},`src/component/quizCard.ts#FailedHint`),UpdatedWhy:({value:t})=>n({model:P(e,{why:e=>n(e._tag===`Writing`?C3.Writing({text:t,maybeError:b()}):e,`src/component/quizCard.ts#why~3`)})},`src/component/quizCard.ts#UpdatedWhy`),ClickedCheckWhy:()=>n(P3(e),`src/component/quizCard.ts#ClickedCheckWhy`),ClickedSkipWhy:()=>n({model:P(e,{why:t=>n(N3(e)?C3.NotAsked():t,`src/component/quizCard.ts#why~4`)})},`src/component/quizCard.ts#ClickedSkipWhy`),SucceededWhy:({reply:t})=>n({model:P(e,{why:e=>n(e._tag===`Sending`?C3.Answered({text:e.text,reply:t}):e,`src/component/quizCard.ts#why~5`)})},`src/component/quizCard.ts#SucceededWhy`),FailedWhy:({error:t})=>n({model:P(e,{why:e=>n(e._tag===`Sending`?C3.Writing({text:e.text,maybeError:x(t)}):e,`src/component/quizCard.ts#why~6`)})},`src/component/quizCard.ts#FailedWhy`),ClickedContinue:()=>n(N3(e)?{model:e}:{model:e,outMessage:E3.ContinuedAfterFeedback()},`src/component/quizCard.ts#ClickedContinue`),PressedKey:({key:t,isModified:r,isInTextField:i})=>{let a=Fye.indexOf(t);return a>=0&&!i&&!r&&M3(e)?n(C(Mi(e.question.options,a),{onNone:()=>n({model:e},`src/component/quizCard.ts#onNone~3`),onSome:t=>n({model:P(e,{maybeSelectedOptionId:()=>n(x(t.id),`src/component/quizCard.ts#maybeSelectedOptionId~2`)})},`src/component/quizCard.ts#onSome~3`)}),`src/component/quizCard.ts#PressedKey`):n(t!==`Enter`||i&&!r?{model:e}:S3.match(e.phase,{Answering:()=>n(C(j3(e),{onNone:()=>n({model:e},`src/component/quizCard.ts#onNone~4`),onSome:t=>n(A3(e,t),`src/component/quizCard.ts#onSome~4`)}),`src/component/quizCard.ts#Answering~2`),Submitting:()=>n({model:e},`src/component/quizCard.ts#Submitting~2`),Answered:()=>n(N3(e)?P3(e):{model:e,outMessage:E3.ContinuedAfterFeedback()},`src/component/quizCard.ts#Answered~3`)}),`src/component/quizCard.ts#PressedKey`)}}),`src/component/quizCard.ts#update`),Fye=[`1`,`2`,`3`,`4`,`5`,`6`],Iye=e=>n(e instanceof HTMLElement&&(e.tagName===`TEXTAREA`||e.tagName===`INPUT`||e.isContentEditable),`src/component/quizCard.ts#isTextField`),Lye=e=>n(e instanceof HTMLElement&&(e.tagName===`BUTTON`||e.tagName===`A`),`src/component/quizCard.ts#isActivatable`),I3=iA()(()=>n({keyboard:sA(dk({target:()=>n(globalThis.document,`src/component/quizCard.ts#target`),type:`keydown`,filterMapEvent:e=>n(xr(T3.PressedKey({key:e.key,isModified:e.ctrlKey||e.metaKey,isInTextField:Iye(e.target)}),()=>n(!e.repeat&&!(e.key===`Enter`&&Lye(e.target)),`src/component/quizCard.ts#anonymous~11`)),`src/component/quizCard.ts#filterMapEvent`)}))},`src/component/quizCard.ts#anonymous~10`)),Rye=[`A`,`B`,`C`,`D`,`E`,`F`],zye=e=>n(S3.match(e,{Answering:()=>n(b(),`src/component/quizCard.ts#Answering~3`),Submitting:({response:e})=>n(e._tag===`Choice`?x(e.optionId):b(),`src/component/quizCard.ts#Submitting~3`),Answered:({response:e})=>n(e._tag===`Choice`?x(e.optionId):b(),`src/component/quizCard.ts#Answered~4`)}),`src/component/quizCard.ts#chosenOptionId`),Bye=(e,t,r,i)=>{let a=Sr(e.maybeSelectedOptionId,t.id),o=S3.match(e.phase,{Answering:()=>n(b(),`src/component/quizCard.ts#Answering~4`),Submitting:()=>n(b(),`src/component/quizCard.ts#Submitting~4`),Answered:({feedback:e})=>n(x(e),`src/component/quizCard.ts#Answered~5`)}),s=C(o,{onNone:()=>n(!1,`src/component/quizCard.ts#onNone~5`),onSome:e=>n(e.correctAnswer===t.text,`src/component/quizCard.ts#onSome~5`)}),c=S(o)&&Sr(zye(e.phase),t.id)&&!s;return n(i.keyed(`button`)(t.id,[i.Type(`button`),i.Disabled(!M3(e)),i.AriaPressed(a?`true`:`false`),i.OnClick(T3.SelectedOption({optionId:t.id})),i.Class(F(`press flex w-full items-start gap-3 rounded-xl border px-4 py-3 text-left transition-colors disabled:cursor-default`,{"border-primary bg-primary/8 ring-1 ring-primary/40":a&&M3(e),"hover:border-primary/40 hover:bg-accent/40":!a&&M3(e),"border-success/60 bg-success/10":s,"border-destructive/50 bg-destructive/8":c,"opacity-60":S(o)&&!s&&!c}))],[i.span([i.Class(F(`mt-0.5 flex size-6 shrink-0 items-center justify-center rounded-md border text-xs font-semibold`,{"border-primary bg-primary text-primary-foreground":a&&M3(e),"border-success bg-success text-white":s,"border-destructive bg-destructive text-white":c}))],[s?L(`check`,`size-3.5`,i):c?L(`x`,`size-3.5`,i):Rye[r]??`${r+1}`]),Q4(t.text,`flex-1 leading-relaxed`,i)]),`src/component/quizCard.ts#optionView`)},Vye=(e,t)=>n(e.question.kind===`MultipleChoice`?t.div([t.Class(`flex flex-col gap-2`)],w(e.question.options,(r,i)=>n(Bye(e,r,i,t),`src/component/quizCard.ts#anonymous~12`))):t.textarea([t.Value(e.text),t.Rows(4),t.Disabled(!M3(e)),t.Placeholder(`Answer in your own words…`),t.OnInput(e=>n(T3.UpdatedText({value:e}),`src/component/quizCard.ts#anonymous~13`)),t.Class(Vz(`resize-y text-base leading-relaxed`))]),`src/component/quizCard.ts#answerInputView`),Hye={Correct:{title:`Correct`,tone:`border-success/40 bg-success/8`,iconName:`check`},Partial:{title:`Partly right`,tone:`border-amber-500/40 bg-amber-500/8`,iconName:`alert`},Incorrect:{title:`Not quite`,tone:`border-destructive/40 bg-destructive/6`,iconName:`x`},DontKnow:{title:`Here's the answer`,tone:`border-info/40 bg-info/8`,iconName:`circleDashed`}},Uye=(e,t)=>n(t.a([t.Href(e),t.Target(`_blank`),t.Rel(`noopener`),t.Class(I(`Ghost`,`Medium`,`text-muted-foreground`))],[L(`fileText`,``,t),`Notes`,t.span([t.Class(`sr-only`)],[`(opens in a new tab)`])]),`src/component/quizCard.ts#notesLink`),L3=(e,t,r)=>n(r.div([r.Class(`flex items-center justify-end gap-2`)],[C(t,{onNone:()=>n(r.empty,`src/component/quizCard.ts#onNone~6`),onSome:e=>n(Uye(e,r),`src/component/quizCard.ts#onSome~6`)}),r.button([r.Type(`button`),r.Autofocus(!0),r.OnClick(T3.ClickedContinue()),r.Class(I(`Primary`,`Large`))],[e,L(`arrowRight`,``,r)])]),`src/component/quizCard.ts#continueRow`),Wye={Solid:{title:`Good reason`,tone:`border-success/40 bg-success/8`,iconName:`check`},Partial:{title:`Partly right`,tone:`border-amber-500/40 bg-amber-500/8`,iconName:`alert`},Off:{title:`Here's the reason`,tone:`border-info/40 bg-info/8`,iconName:`lightbulb`}},R3=(e,t,r,i,a)=>{let o=`why-${e.question.id}`;return n(a.div([a.Class(`pop-in flex flex-col gap-3`)],[a.div([a.Class(`flex items-center gap-2 rounded-xl border border-success/40 bg-success/8 px-4 py-3 font-semibold`)],[L(`check`,`size-4`,a),`Correct`]),a.label([a.For(o),a.Class(`text-base font-medium`)],[`Why is that right?`]),a.textarea([a.Id(o),a.Value(t),a.Rows(2),a.Autofocus(!r),a.Readonly(r),a.Placeholder(`In a few words`),a.OnInput(e=>n(T3.UpdatedWhy({value:e}),`src/component/quizCard.ts#anonymous~14`)),a.Class(Vz(`resize-none text-base leading-relaxed`))]),...i]),`src/component/quizCard.ts#whyView`)},z3=(e,t,r,i)=>n([C(r,{onNone:()=>n(i.empty,`src/component/quizCard.ts#onNone~7`),onSome:()=>n(i.p([i.Role(`alert`),i.Class(`text-sm text-destructive`)],[`That didn't work. Try again, or skip.`]),`src/component/quizCard.ts#onSome~7`)}),i.div([i.Class(`flex items-center justify-end gap-2`)],[i.button([i.Type(`button`),i.OnClick(T3.ClickedSkipWhy()),i.Class(I(`Ghost`,`Large`,`text-muted-foreground`))],[`Skip`]),i.button([i.Type(`button`),i.Disabled(t||Td(wd(e))),i.OnClick(T3.ClickedCheckWhy()),i.Class(I(`Primary`,`Large`))],[t?L(`refresh`,`spinner`,i):i.empty,t?`Checking…`:`Check`])])],`src/component/quizCard.ts#whyActionsView`),Gye=(e,t,r,i,a)=>{let o=Wye[e.verdict];return n([a.div([a.Role(`status`),a.Class(F(`pop-in flex flex-col gap-1 rounded-xl border p-4`,o.tone))],[a.div([a.Class(`flex items-center gap-2 font-semibold`)],[L(o.iconName,`size-4`,a),o.title]),Z4(e.reply,`prose-sm text-foreground/90`,a)]),a.details([a.Class(`group`)],[a.summary([a.Class(`flex w-fit cursor-pointer list-none items-center gap-1 text-sm text-muted-foreground select-none hover:text-foreground [&::-webkit-details-marker]:hidden`)],[`Explanation`,L(`chevronDown`,`size-3.5 -rotate-90 transition-transform group-open:rotate-0`,a)]),Z4(t.explanation,`prose-sm mt-2 text-foreground/90`,a)]),L3(r,i,a)],`src/component/quizCard.ts#whyReplyView`)},Kye=(e,t,r,i,a)=>{let o=Hye[t.verdict],s=e.question.kind===`MultipleChoice`;return n(a.div([a.Class(`pop-in flex flex-col gap-4`)],[a.div([a.Class(F(`flex flex-col gap-2 rounded-xl border p-4`,o.tone))],[a.div([a.Class(`flex items-center gap-2 font-semibold`)],[L(o.iconName,`size-4`,a),o.title]),s?a.empty:a.div([a.Class(`text-sm`)],[a.span([a.Class(`font-medium`)],[`Answer: `]),Q4(t.correctAnswer,``,a)]),Z4(t.explanation,`prose-sm text-foreground/90`,a),s?C(t.maybeMisconception,{onNone:()=>n(a.empty,`src/component/quizCard.ts#onNone~8`),onSome:e=>n(a.p([a.Class(`text-sm text-muted-foreground`)],[a.span([a.Class(`font-medium`)],[`Common trap: `]),e]),`src/component/quizCard.ts#onSome~8`)}):a.empty]),L3(r,i,a)]),`src/component/quizCard.ts#feedbackView`)},qye=(e,t)=>n(Di(e.hints)&&or(e.maybeHintError)?t.empty:t.div([t.Class(`flex flex-col gap-2`)],[...w(e.hints,(e,r)=>n(t.keyed(`div`)(`hint-${r}`,[t.Class(`pop-in flex flex-col gap-1 rounded-lg border border-primary/25 bg-primary/5 px-3 py-2`)],[t.span([t.Class(`flex items-center gap-1.5 text-xs font-medium text-primary`)],[L(`lightbulb`,`size-3.5`,t),`Hint ${r+1}`]),Z4(e,`prose-sm text-foreground/90`,t)]),`src/component/quizCard.ts#anonymous~15`)),C(e.maybeHintError,{onNone:()=>n(t.empty,`src/component/quizCard.ts#onNone~9`),onSome:e=>n(t.p([t.Class(`text-sm text-destructive`)],[e]),`src/component/quizCard.ts#onSome~9`)}),Di(e.hints)?t.empty:t.p([t.Class(`text-xs text-muted-foreground`)],[`Hints are fine. This one will come back a bit sooner.`])]),`src/component/quizCard.ts#hintsView`),B3=(e,t)=>{let r=e.phase._tag===`Submitting`,i=M3(e)&&S(j3(e));return n(t.div([t.Class(`flex flex-col gap-3`)],[qye(e,t),e.isNoteOpen?t.textarea([t.Value(e.note),t.Rows(2),t.Placeholder(`Your thinking, if you like. The tutor reads it.`),t.OnInput(e=>n(T3.UpdatedNote({value:e}),`src/component/quizCard.ts#anonymous~16`)),t.Class(Vz(`resize-none text-sm`))]):t.empty,t.div([t.Class(`flex flex-wrap items-center justify-between gap-2`)],[t.div([t.Class(`flex items-center gap-1`)],[t.button([t.Type(`button`),t.Disabled(!M3(e)),t.OnClick(T3.ClickedDontKnow()),t.Class(I(`Ghost`,`Medium`,`text-muted-foreground`))],[L(`circleDashed`,``,t),`I don't know`]),e.canHint&&M3(e)&&e.hints.length<3?t.button([t.Type(`button`),t.Disabled(e.isHintLoading),t.OnClick(T3.ClickedHint()),t.Class(I(`Ghost`,`Medium`,`text-muted-foreground`))],[e.isHintLoading?L(`refresh`,`spinner`,t):L(`lightbulb`,``,t),Di(e.hints)?`Hint`:`Hint ${e.hints.length+1} of 3`]):t.empty,t.button([t.Type(`button`),t.OnClick(T3.ToggledNote()),t.Class(I(`Ghost`,`Medium`,`text-muted-foreground`))],[e.isNoteOpen?`Hide note`:`Add a note`])]),t.button([t.Type(`button`),t.Disabled(!i),t.OnClick(T3.ClickedSubmit()),t.Class(I(`Primary`,`Large`))],[r?L(`refresh`,`spinner`,t):t.empty,r?`Checking…`:`Check answer`])])]),`src/component/quizCard.ts#actionsView`)},V3=(e,t=b())=>n(qD((r,i)=>n(i.div([i.Class(Bz(`reveal flex flex-col gap-5 p-6 sm:p-7`))],[Z4(r.question.prompt,`text-lg leading-relaxed`,i),Vye(r,i),S3.match(r.phase,{Answering:()=>n(B3(r,i),`src/component/quizCard.ts#Answering~5`),Submitting:()=>n(B3(r,i),`src/component/quizCard.ts#Submitting~5`),Answered:({feedback:a})=>n(C3.match(r.why,{NotAsked:()=>n(Kye(r,a,e,t,i),`src/component/quizCard.ts#NotAsked~2`),Writing:({text:e,maybeError:t})=>n(R3(r,e,!1,z3(e,!1,t,i),i),`src/component/quizCard.ts#Writing~2`),Sending:({text:e})=>n(R3(r,e,!0,z3(e,!0,b(),i),i),`src/component/quizCard.ts#Sending~2`),Answered:({text:o,reply:s})=>n(R3(r,o,!0,Gye(s,a,e,t,i),i),`src/component/quizCard.ts#Answered~7`)}),`src/component/quizCard.ts#Answered~6`)})]),`src/component/quizCard.ts#anonymous~17`)),`src/component/quizCard.ts#viewWith`),Jye=`/**
428
428
  * bv — BaviTutor visual runtime. A tiny, dependency-free, Manim-flavoured scene engine on SVG.
429
429
  *
430
430
  * Coordinate system (same as Manim): origin at the centre, +y up, the frame is 8 units tall and
@@ -1726,7 +1726,7 @@ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
1726
1726
  if (document.readyState !== 'complete') document.addEventListener('DOMContentLoaded', checkStarted);
1727
1727
  }
1728
1728
  export default bv;
1729
- `,Jye=`default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'`,Yye={Dark:`#0F1115`,Light:`#FAF9F6`},H3=e=>n(e.replace(/&/g,`&amp;`).replace(/"/g,`&quot;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`),`../../packages/viz/src/document.ts#escapeHtml`),U3=e=>n(e.replace(/<\/script/gi,`<\\/script`).replace(/<!--/g,`<\\!--`),`../../packages/viz/src/document.ts#escapeScript`),Xye=e=>n([`<!doctype html>`,`<html lang="en" data-bv-theme="${e.theme===`Light`?`light`:`dark`}" data-bv-frame="${H3(e.frameId??``)}">`,`<head>`,`<meta charset="utf-8">`,`<meta http-equiv="Content-Security-Policy" content="${Jye}">`,`<meta name="viewport" content="width=device-width,initial-scale=1">`,`<title>${H3(e.title??`Visual explanation`)}</title>`,`<style>html,body{margin:0;background:${Yye[e.theme]}}</style>`,`</head>`,`<body>`,`<script type="module">${U3(qye)}<\/script>`,`<script type="module">${U3(e.code)}<\/script>`,`</body>`,`</html>`].join(`
1729
+ `,Yye=`default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'`,Xye={Dark:`#0F1115`,Light:`#FAF9F6`},H3=e=>n(e.replace(/&/g,`&amp;`).replace(/"/g,`&quot;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`),`../../packages/viz/src/document.ts#escapeHtml`),U3=e=>n(e.replace(/<\/script/gi,`<\\/script`).replace(/<!--/g,`<\\!--`),`../../packages/viz/src/document.ts#escapeScript`),Zye=e=>n([`<!doctype html>`,`<html lang="en" data-bv-theme="${e.theme===`Light`?`light`:`dark`}" data-bv-frame="${H3(e.frameId??``)}">`,`<head>`,`<meta charset="utf-8">`,`<meta http-equiv="Content-Security-Policy" content="${Yye}">`,`<meta name="viewport" content="width=device-width,initial-scale=1">`,`<title>${H3(e.title??`Visual explanation`)}</title>`,`<style>html,body{margin:0;background:${Xye[e.theme]}}</style>`,`</head>`,`<body>`,`<script type="module">${U3(Jye)}<\/script>`,`<script type="module">${U3(e.code)}<\/script>`,`</body>`,`</html>`].join(`
1730
1730
  `),`../../packages/viz/src/document.ts#buildSceneDocument`),W3=[{id:`01-counting`,title:`Counting: from marbles to numbers`,code:`// Node: "Counting objects" · Core insight: counting pairs each object with the next number word,
1731
1731
  // and the LAST number you say answers "how many?". The number doesn't depend on what you count.
1732
1732
  // Colour roles: marbles = BLUE, numbers = YELLOW, one-to-one matching = GREEN, other objects = TEAL.
@@ -2034,7 +2034,7 @@ bv.scene({ title: 'Binary search: halving the haystack' }, (s) => {
2034
2034
  s.slider({ tracker: T, min: 0, max: 62, step: 1, label: 'target', color: ROLE.target });
2035
2035
  });
2036
2036
  });
2037
- `}],G3=O,K3=zy(eb([k,O])),q3=A({type:O,message:O}),Zye=Ay(eb([A({type:Hy(`bv:ready`),frame:G3,count:k,captions:j(O),title:O}),A({type:Hy(`bv:state`),frame:G3,index:k,count:k,caption:O,playing:Ky}),A({type:Hy(`bv:audit`),frame:G3,index:k,warnings:j(q3)}),A({type:Hy(`bv:error`),frame:G3,message:O,step:K3}),A({type:Hy(`bv:report`),frame:G3,count:k,captions:j(O),steps:j(A({index:k,caption:O,warnings:j(q3)})),errors:j(A({message:O,step:K3}))})])),J3=tb([`Dark`,`Light`]),Qye=A({goalId:O,visualId:O}),Y3=pT({Loading:{},Generating:{attempt:k,pollCount:k},Ready:{code:O,captions:j(O),altText:O},Unavailable:{reason:O,isRetryable:Ky}}),$ye=A({index:k,count:k,caption:O,isPlaying:Ky}),X3=A({frameId:O,maybeSource:Mb(Qye),status:Y3,maybeTheme:Mb(J3),step:$ye,hasReachedEnd:Ky}),Z3=pT({Next:{},Back:{},Replay:{},Goto:{index:k}}),Q3=fT({SucceededFetchVisual:{state:kR},FailedFetchVisual:{error:O},ClickedRetry:{},ReceivedFrameReady:{count:k},ReceivedFrameState:{index:k,count:k,caption:O,isPlaying:Ky},ReceivedFrameError:{message:O},UpdatedTheme:{theme:J3},ClickedNext:{},ClickedBack:{},ClickedReplay:{},ClickedStep:{index:k},CompletedSendToFrame:{}}),$3=fT({ReachedLastStep:{},BecameUnavailable:{reason:O}}),ebe=3e3,e6=N(`FetchVisual`,{args:{goalId:O,visualId:O,delayMillis:k},messages:[Q3.SucceededFetchVisual,Q3.FailedFetchVisual],execute:({goalId:e,visualId:t,delayMillis:r})=>n(D(function*(){yield*ff(Ia(r));let i=yield*(yield*XR).visuals.get({params:{goalId:nI.make(e),visualId:t}});return n(Q3.SucceededFetchVisual({state:i}),`src/component/vizFrame.ts#anonymous`)}).pipe(rf(e=>n(T(Q3.FailedFetchVisual({error:QR(e)})),`src/component/vizFrame.ts#anonymous~2`))),`src/component/vizFrame.ts#execute`)}),tbe=e=>n(Z3.match(e,{Next:()=>n({type:`bv:next`},`src/component/vizFrame.ts#Next`),Back:()=>n({type:`bv:prev`},`src/component/vizFrame.ts#Back`),Replay:()=>n({type:`bv:replay`},`src/component/vizFrame.ts#Replay`),Goto:({index:e})=>n({type:`bv:goto`,index:e},`src/component/vizFrame.ts#Goto`)}),`src/component/vizFrame.ts#toHostRequest`),nbe=N(`SendToFrame`,{args:{frameId:O,request:Z3},messages:[Q3.CompletedSendToFrame],execute:({frameId:e,request:t})=>n(E(()=>{let n=globalThis.document.getElementById(e);n instanceof HTMLIFrameElement&&n.contentWindow?.postMessage(tbe(t),`*`)}).pipe(tf(Q3.CompletedSendToFrame())),`src/component/vizFrame.ts#execute~2`)}),t6=e=>n(`viz-${e.replace(/[^A-Za-z0-9_-]/g,``)}`,`src/component/vizFrame.ts#frameIdFor`),n6={index:0,count:0,caption:``,isPlaying:!1},r6=e=>n({model:{frameId:t6(e.visualId),maybeSource:x(e),status:Y3.Loading(),maybeTheme:b(),step:n6,hasReachedEnd:!1},commands:[e6({...e,delayMillis:0})]},`src/component/vizFrame.ts#init`),rbe=e=>n({frameId:t6(e.key),maybeSource:b(),status:Y3.Ready({code:e.code,captions:[],altText:e.title}),maybeTheme:b(),step:n6,hasReachedEnd:!1},`src/component/vizFrame.ts#initWithScene`),i6=(e,t,r)=>n({model:P(e,{status:()=>n(Y3.Unavailable({reason:t,isRetryable:r}),`src/component/vizFrame.ts#status`)}),outMessage:$3.BecameUnavailable({reason:t})},`src/component/vizFrame.ts#becomeUnavailable`),a6=(e,t)=>n(e.status._tag===`Ready`?{model:e,commands:[nbe({frameId:e.frameId,request:t})]}:{model:e},`src/component/vizFrame.ts#sendToFrame`),ibe=e=>n(Y3.matchOrElse(e,{Generating:({pollCount:e})=>n(e+1,`src/component/vizFrame.ts#Generating`)},()=>n(0,`src/component/vizFrame.ts#anonymous~4`)),`src/component/vizFrame.ts#pollCountOf`),abe=(e,t)=>{let r=ibe(e.status);return n(r>200?i6(e,`Drawing this visual is taking too long.`,!0):{model:P(e,{status:()=>n(Y3.Generating({attempt:t,pollCount:r}),`src/component/vizFrame.ts#status~2`)}),commands:w(yr(e.maybeSource),e=>n(e6({...e,delayMillis:ebe}),`src/component/vizFrame.ts#anonymous~5`))},`src/component/vizFrame.ts#keepPolling`)},obe=(e,t)=>n(Dw(t,{Generating:({attempt:t})=>n(abe(e,t),`src/component/vizFrame.ts#Generating~2`),Ready:({code:t,captions:r,altText:i})=>n({model:P(e,{status:()=>n(Y3.Ready({code:t,captions:r,altText:i}),`src/component/vizFrame.ts#status~3`),step:()=>n({...n6,count:r.length,caption:r[0]??``},`src/component/vizFrame.ts#step`)})},`src/component/vizFrame.ts#Ready`),Failed:({note:t})=>n(i6(e,t,!1),`src/component/vizFrame.ts#Failed`),Skipped:({note:t})=>n(i6(e,t,!1),`src/component/vizFrame.ts#Skipped`)}),`src/component/vizFrame.ts#receiveVisual`),o6=(e,t)=>n(Q3.match(t,{SucceededFetchVisual:({state:t})=>n(obe(e,t),`src/component/vizFrame.ts#SucceededFetchVisual`),FailedFetchVisual:({error:t})=>n(i6(e,t,!0),`src/component/vizFrame.ts#FailedFetchVisual`),ClickedRetry:()=>n(C(e.maybeSource,{onNone:()=>n({model:e},`src/component/vizFrame.ts#onNone`),onSome:t=>n({model:P(e,{status:()=>n(Y3.Loading(),`src/component/vizFrame.ts#status~4`)}),commands:[e6({...t,delayMillis:0})]},`src/component/vizFrame.ts#onSome`)}),`src/component/vizFrame.ts#ClickedRetry`),ReceivedFrameReady:({count:t})=>{let r=P(e,{step:e=>n(P(e,{count:()=>n(t,`src/component/vizFrame.ts#count`)}),`src/component/vizFrame.ts#step~2`)});return n(e.step.index>0&&e.step.index<t?a6(r,Z3.Goto({index:e.step.index})):{model:r},`src/component/vizFrame.ts#ReceivedFrameReady`)},ReceivedFrameState:({index:t,count:r,caption:i,isPlaying:a})=>{let o=t===r-1&&!a,s=P(e,{step:()=>n({index:t,count:r,caption:i,isPlaying:a},`src/component/vizFrame.ts#step~3`),hasReachedEnd:e=>n(e||o,`src/component/vizFrame.ts#hasReachedEnd`)});return n(o&&!e.hasReachedEnd?{model:s,outMessage:$3.ReachedLastStep()}:{model:s},`src/component/vizFrame.ts#ReceivedFrameState`)},ReceivedFrameError:({message:t})=>n(i6(e,`The visual stopped with an error: ${t}`,!1),`src/component/vizFrame.ts#ReceivedFrameError`),UpdatedTheme:({theme:t})=>n(Sr(e.maybeTheme,t)?{model:e}:{model:P(e,{maybeTheme:()=>n(x(t),`src/component/vizFrame.ts#maybeTheme`)})},`src/component/vizFrame.ts#UpdatedTheme`),ClickedNext:()=>n(a6(e,Z3.Next()),`src/component/vizFrame.ts#ClickedNext`),ClickedBack:()=>n(a6(e,Z3.Back()),`src/component/vizFrame.ts#ClickedBack`),ClickedReplay:()=>n(a6(e,Z3.Replay()),`src/component/vizFrame.ts#ClickedReplay`),ClickedStep:({index:t})=>n(a6(e,Z3.Goto({index:t})),`src/component/vizFrame.ts#ClickedStep`),CompletedSendToFrame:()=>n({model:e},`src/component/vizFrame.ts#CompletedSendToFrame`)}),`src/component/vizFrame.ts#update`),sbe=e=>n(Ew(e).pipe(jw(`type`)({"bv:ready":({count:e})=>n(x(Q3.ReceivedFrameReady({count:e})),`src/component/vizFrame.ts#bv:ready`),"bv:state":({index:e,count:t,caption:r,playing:i})=>n(x(Q3.ReceivedFrameState({index:e,count:t,caption:r,isPlaying:i})),`src/component/vizFrame.ts#bv:state`),"bv:error":({message:e})=>n(x(Q3.ReceivedFrameError({message:e})),`src/component/vizFrame.ts#bv:error`)}),Pw(()=>n(b(),`src/component/vizFrame.ts#anonymous~6`))),`src/component/vizFrame.ts#toMessage`),cbe=(e,t)=>{let r=globalThis.document.getElementById(e);return n(r instanceof HTMLIFrameElement&&t.source===r.contentWindow,`src/component/vizFrame.ts#isFromFrame`)},lbe=e=>n(OC(t=>n(Tf(E(()=>{let r=r=>n(m(xr(r,()=>n(cbe(e,r),`src/component/vizFrame.ts#anonymous~9`)),gr(e=>n(Zye(e.data),`src/component/vizFrame.ts#anonymous~10`)),br(t=>n(t.frame===e,`src/component/vizFrame.ts#anonymous~11`)),gr(sbe),C({onNone:()=>n(void 0,`src/component/vizFrame.ts#onNone~2`),onSome:e=>n(Xx(t,e),`src/component/vizFrame.ts#onSome~2`)})),`src/component/vizFrame.ts#listener`);return globalThis.addEventListener(`message`,r),n(r,`src/component/vizFrame.ts#anonymous~8`)}),e=>n(E(()=>n(globalThis.removeEventListener(`message`,e),`src/component/vizFrame.ts#anonymous~13`)),`src/component/vizFrame.ts#anonymous~12`)).pipe(Yd(()=>n(Bd,`src/component/vizFrame.ts#anonymous~14`))),`src/component/vizFrame.ts#anonymous~7`)),`src/component/vizFrame.ts#frameMessages`),ube=()=>n(globalThis.document.documentElement.classList.contains(`dark`)?`Dark`:`Light`,`src/component/vizFrame.ts#currentTheme`),dbe=OC(e=>n(Tf(E(()=>{let t=()=>n(Xx(e,Q3.UpdatedTheme({theme:ube()})),`src/component/vizFrame.ts#emit`),r=new MutationObserver(t);return r.observe(globalThis.document.documentElement,{attributes:!0,attributeFilter:[`class`]}),t(),n(r,`src/component/vizFrame.ts#anonymous~16`)}),e=>n(E(()=>n(e.disconnect(),`src/component/vizFrame.ts#anonymous~18`)),`src/component/vizFrame.ts#anonymous~17`)).pipe(Yd(()=>n(Bd,`src/component/vizFrame.ts#anonymous~19`))),`src/component/vizFrame.ts#anonymous~15`)),s6=iA()(e=>n({frameEvents:e({maybeFrameId:Mb(O)},{modelToDependencies:e=>n({maybeFrameId:xr(e.frameId,()=>n(e.status._tag===`Ready`,`src/component/vizFrame.ts#anonymous~21`))},`src/component/vizFrame.ts#modelToDependencies`),dependenciesToStream:({maybeFrameId:e})=>n(C(e,{onNone:()=>n(kC,`src/component/vizFrame.ts#onNone~3`),onSome:lbe}),`src/component/vizFrame.ts#dependenciesToStream`)}),theme:e({frameId:O},{modelToDependencies:e=>n({frameId:e.frameId},`src/component/vizFrame.ts#modelToDependencies~2`),dependenciesToStream:()=>n(dbe,`src/component/vizFrame.ts#dependenciesToStream~2`)})},`src/component/vizFrame.ts#anonymous~20`)),c6=`relative aspect-[16/10] w-full overflow-hidden bg-[#FAF9F6] dark:bg-[#0F1115]`,l6=(e,t)=>n(t.div([t.Class(F(c6,`flex flex-col items-center justify-center gap-3 px-6 text-center text-sm text-muted-foreground`))],e),`src/component/vizFrame.ts#centeredView`),u6=(e,t,r)=>n(l6([L(`refresh`,`spinner size-5 text-primary`,r),r.p([r.Class(`font-medium text-foreground`)],[e]),r.p([r.Class(`max-w-sm`)],[t])],r),`src/component/vizFrame.ts#waitingView`),fbe=(e,t,r,i)=>n(l6([L(`circleDashed`,`size-5`,i),i.p([i.Class(`font-medium text-foreground`)],[`No picture this time`]),i.p([i.Class(`max-w-md`)],[r.showDetails?e:`The text has all you need.`]),t?i.button([i.Type(`button`),i.OnClick(Q3.ClickedRetry()),i.Class(I(`Outline`,`Small`))],[L(`refresh`,``,i),`Try again`]):i.empty],i),`src/component/vizFrame.ts#unavailableView`),pbe=(e,t,r,i)=>n(C(e.maybeTheme,{onNone:()=>n(i.div([i.Class(c6)],[]),`src/component/vizFrame.ts#onNone~4`),onSome:a=>n(i.div([i.Class(c6)],[i.iframe([i.Id(e.frameId),i.Sandbox(`allow-scripts`),i.Title(r.length>0?r:`Visual explanation`),i.Srcdoc(Xye({code:t,theme:a,frameId:e.frameId})),i.Class(`absolute inset-0 block size-full border-0`)])]),`src/component/vizFrame.ts#onSome~3`)}),`src/component/vizFrame.ts#sceneView`),mbe=(e,t)=>n(t.div([t.Class(`flex gap-1.5 px-4 pt-3`),t.AriaHidden(!0)],_i(e.step.count,r=>n(t.keyed(`button`)(`${r}`,[t.Type(`button`),t.Tabindex(-1),t.OnClick(Q3.ClickedStep({index:r})),t.Class(F(`h-1 flex-1 rounded-full transition-colors`,{"bg-primary":r===e.step.index,"bg-primary/35":r<e.step.index,"bg-border hover:bg-primary/20":r>e.step.index}))],[]),`src/component/vizFrame.ts#anonymous~22`))),`src/component/vizFrame.ts#progressView`),hbe=(e,t)=>{let r=e.step.count>0,i=e.step.index>=e.step.count-1;return n(t.div([t.Class(`flex flex-col`)],[mbe(e,t),t.div([t.Class(`flex items-center gap-2 px-3 pt-2 pb-3`)],[t.button([t.Type(`button`),t.AriaLabel(`Previous step`),t.Disabled(!r||e.step.index===0),t.OnClick(Q3.ClickedBack()),t.Class(I(`Ghost`,`Icon`))],[L(`arrowLeft`,``,t)]),t.button([t.Type(`button`),t.AriaLabel(`Replay this step`),t.Disabled(!r),t.OnClick(Q3.ClickedReplay()),t.Class(I(`Ghost`,`Icon`))],[L(`refresh`,``,t)]),t.p([t.AriaLive(`polite`),t.Class(`min-h-10 flex-1 text-sm leading-snug sm:text-[0.95rem]`)],[e.step.caption]),t.span([t.Class(`text-xs text-muted-foreground tabular-nums`)],[r?`${e.step.index+1} / ${e.step.count}`:``]),t.button([t.Type(`button`),t.Disabled(!r||i&&!e.step.isPlaying),t.OnClick(Q3.ClickedNext()),t.Class(I(`Primary`,`Medium`))],[`Next`,L(`arrowRight`,``,t)])])]),`src/component/vizFrame.ts#controlsView`)},d6=e=>n(qD((t,r)=>n(r.figure([r.Class(Bz(`overflow-hidden`))],[Y3.match(t.status,{Loading:()=>n(u6(`Loading the picture…`,``,r),`src/component/vizFrame.ts#Loading`),Generating:({attempt:e})=>n(u6(`Drawing a picture…`,e>1?`Fixing it, try ${e} of 3. Keep reading.`:`This takes a minute or two. Keep reading.`,r),`src/component/vizFrame.ts#Generating~3`),Ready:({code:e,altText:i})=>n(pbe(t,e,i,r),`src/component/vizFrame.ts#Ready~2`),Unavailable:({reason:t,isRetryable:i})=>n(fbe(t,i,e,r),`src/component/vizFrame.ts#Unavailable`)}),t.status._tag===`Ready`?hbe(t,r):r.empty]),`src/component/vizFrame.ts#anonymous~23`)),`src/component/vizFrame.ts#viewWith`),gbe=d6({showDetails:!1}),f6=A({key:O,step:jL,attempt:k}),p6=pT({Loading:{},Generating:{startedAt:k},Failed:{error:O},Ready:{title:O,estimatedMinutes:k,style:NL,hasSources:Ky}}),m6=pT({Open:{text:O},Made:{text:O}}),h6=pT({Writing:{text:O},Sending:{text:O},Answered:{text:O,reaction:LL},Skipped:{}}),g6=pT({Writing:{text:O},Grading:{text:O},Graded:{text:O,result:FL,followUp:h6}}),_6=pT({Idle:{},Loading:{},Ready:{},Failed:{error:O}}),v6=A({key:O,ideaId:O,attempt:k}),_be=A({load:_6,cards:j(HI),ideaIds:j(O),queue:j(v6),maybeCurrent:Mb(v6),shownCards:j(O),firstTries:j(A({ideaId:O,isRight:Ky}))}),y6=pT({NotStarted:{},Completing:{},Completed:{outcome:RL},Failed:{error:O}}),vbe=A({goalId:O,conceptId:O,load:p6,maybeCurrent:Mb(f6),queue:j(f6),skipped:j(f6),completedSteps:k,maybeQuiz:Mb(w3),maybeFrame:Mb(X3),round:_be,maybeFlashcard:Mb(t3),maybeLastRead:Mb(A({heading:O,body:O})),reexplain:A({isLoading:Ky,alternatives:j(WL),maybeError:Mb(O)}),questionShownAt:k,revealedSteps:k,guess:m6,teachBack:g6,completion:y6,quickCheckVerdicts:j(II),tutor:A({isOpen:Ky,draft:O,turns:j(BL),isAsking:Ky}),maybeError:Mb(O)}),$=fT({SucceededFetchLesson:{state:PL},FailedFetchLesson:{error:O},TickedPoll:{},ClickedContinue:{},ClickedStartOver:{},ClickedRevealStep:{},UpdatedGuess:{value:O},SubmittedGuess:{},ClickedSkipGuess:{},GotQuizMessage:{message:T3},GotVizFrameMessage:{message:Q3},CompletedMarkQuestionShown:{at:k},SucceededSubmitAnswer:{feedback:LI},FailedSubmitAnswer:{error:O},UpdatedTeachBack:{value:O},SubmittedTeachBack:{},SucceededTeachBack:{result:FL},FailedTeachBack:{error:O},UpdatedFollowUp:{value:O},SubmittedFollowUp:{},ClickedSkipFollowUp:{},SucceededFollowUp:{reaction:LL},FailedFollowUp:{error:O},ClickedSkipLesson:{},SucceededSkipLesson:{outcome:RL},FailedSkipLesson:{error:O},ToggledTutor:{},UpdatedTutorDraft:{value:O},SubmittedTutorQuestion:{},SucceededAskTutor:{answer:O},FailedAskTutor:{error:O},ClickedExplainDifferently:{},SucceededReexplain:{reexplanation:WL},FailedReexplain:{error:O},SucceededCompleteLesson:{outcome:RL},FailedCompleteLesson:{error:O},SucceededFetchRound:{cards:j(HI)},FailedFetchRound:{error:O},ClickedRetryRound:{},ClickedSkipRound:{},GotFlashcardMessage:{message:n3},SucceededSubmitFlashcard:{result:JI},FailedSubmitFlashcard:{error:O},SucceededExplainFlashcard:{questionId:O,body:O},FailedExplainFlashcard:{questionId:O,error:O}}),ybe=La(2),bbe=3,b6=3,x6=N(`FetchLesson`,{args:{goalId:O,conceptId:O},messages:[$.SucceededFetchLesson,$.FailedFetchLesson],execute:({goalId:e,conceptId:t})=>n(D(function*(){let r=yield*(yield*XR).learning.lesson({params:{goalId:nI.make(e),conceptId:rI.make(t)}});return n($.SucceededFetchLesson({state:r}),`src/page/lesson.ts#anonymous`)}).pipe(rf(e=>n(T($.FailedFetchLesson({error:QR(e)})),`src/page/lesson.ts#anonymous~2`))),`src/page/lesson.ts#execute`)}),xbe=N(`MarkQuestionShown`,{messages:[$.CompletedMarkQuestionShown],execute:hd.pipe(ef(e=>n($.CompletedMarkQuestionShown({at:e}),`src/page/lesson.ts#anonymous~3`)))}),Sbe=N(`SubmitAnswer`,{args:{goalId:O,questionId:O,response:FI,note:O,hintLevel:k,shownAt:k},messages:[$.SucceededSubmitAnswer,$.FailedSubmitAnswer],execute:e=>n(D(function*(){let t=yield*XR,r=yield*hd,i=yield*t.learning.answer({params:{goalId:nI.make(e.goalId)},payload:{context:`Lesson`,answer:{questionId:OI.make(e.questionId),response:e.response,note:e.note,latencyMs:Math.max(0,r-e.shownAt),hintLevel:e.hintLevel}}});return n($.SucceededSubmitAnswer({feedback:i}),`src/page/lesson.ts#anonymous~4`)}).pipe(rf(e=>n(T($.FailedSubmitAnswer({error:QR(e)})),`src/page/lesson.ts#anonymous~5`))),`src/page/lesson.ts#execute~2`)}),Cbe=N(`SubmitTeachBack`,{args:{goalId:O,conceptId:O,explanation:O},messages:[$.SucceededTeachBack,$.FailedTeachBack],execute:({goalId:e,conceptId:t,explanation:r})=>n(D(function*(){let i=yield*(yield*XR).learning.teachBack({params:{goalId:nI.make(e),conceptId:rI.make(t)},payload:{explanation:r}});return n($.SucceededTeachBack({result:i}),`src/page/lesson.ts#anonymous~6`)}).pipe(rf(e=>n(T($.FailedTeachBack({error:QR(e)})),`src/page/lesson.ts#anonymous~7`))),`src/page/lesson.ts#execute~3`)}),wbe=N(`SubmitFollowUp`,{args:{goalId:O,conceptId:O,explanation:O,noviceQuestion:O,reply:O},messages:[$.SucceededFollowUp,$.FailedFollowUp],execute:({goalId:e,conceptId:t,explanation:r,noviceQuestion:i,reply:a})=>n(D(function*(){let o=yield*(yield*XR).learning.teachBackReply({params:{goalId:nI.make(e),conceptId:rI.make(t)},payload:{explanation:r,noviceQuestion:i,reply:a}});return n($.SucceededFollowUp({reaction:o}),`src/page/lesson.ts#anonymous~8`)}).pipe(rf(e=>n(T($.FailedFollowUp({error:QR(e)})),`src/page/lesson.ts#anonymous~9`))),`src/page/lesson.ts#execute~4`)}),Tbe=N(`CompleteLesson`,{args:{goalId:O,conceptId:O},messages:[$.SucceededCompleteLesson,$.FailedCompleteLesson],execute:({goalId:e,conceptId:t})=>n(D(function*(){let r=yield*(yield*XR).learning.completeLesson({params:{goalId:nI.make(e),conceptId:rI.make(t)}});return n($.SucceededCompleteLesson({outcome:r}),`src/page/lesson.ts#anonymous~10`)}).pipe(rf(e=>n(T($.FailedCompleteLesson({error:QR(e)})),`src/page/lesson.ts#anonymous~11`))),`src/page/lesson.ts#execute~5`)}),Ebe=N(`FetchRound`,{args:{goalId:O,conceptId:O},messages:[$.SucceededFetchRound,$.FailedFetchRound],execute:({goalId:e,conceptId:t})=>n(D(function*(){let r=yield*(yield*XR).flashcards.lessonRound({params:{goalId:nI.make(e),conceptId:rI.make(t)}});return n($.SucceededFetchRound({cards:r.cards}),`src/page/lesson.ts#anonymous~12`)}).pipe(rf(e=>n(T($.FailedFetchRound({error:QR(e)})),`src/page/lesson.ts#anonymous~13`))),`src/page/lesson.ts#execute~6`)}),Dbe=N(`SubmitFlashcard`,{args:{goalId:O,questionId:O,response:KI,recallMs:k,latencyMs:k},messages:[$.SucceededSubmitFlashcard,$.FailedSubmitFlashcard],execute:e=>n(D(function*(){let t=yield*(yield*XR).flashcards.answer({params:{goalId:nI.make(e.goalId)},payload:{questionId:OI.make(e.questionId),response:e.response,recallMs:e.recallMs,latencyMs:e.latencyMs,context:`Lesson`}});return n($.SucceededSubmitFlashcard({result:t}),`src/page/lesson.ts#anonymous~14`)}).pipe(rf(e=>n(T($.FailedSubmitFlashcard({error:QR(e)})),`src/page/lesson.ts#anonymous~15`))),`src/page/lesson.ts#execute~7`)}),Obe=N(`ExplainFlashcard`,{args:{goalId:O,questionId:O,response:KI},messages:[$.SucceededExplainFlashcard,$.FailedExplainFlashcard],execute:e=>n(D(function*(){let t=yield*(yield*XR).flashcards.explain({params:{goalId:nI.make(e.goalId)},payload:{questionId:OI.make(e.questionId),response:e.response}});return n($.SucceededExplainFlashcard({questionId:e.questionId,body:t.body}),`src/page/lesson.ts#anonymous~16`)}).pipe(rf(t=>n(T($.FailedExplainFlashcard({questionId:e.questionId,error:QR(t)})),`src/page/lesson.ts#anonymous~17`))),`src/page/lesson.ts#execute~8`)}),kbe=N(`SkipLesson`,{args:{goalId:O,conceptId:O},messages:[$.SucceededSkipLesson,$.FailedSkipLesson],execute:({goalId:e,conceptId:t})=>n(D(function*(){let r=yield*(yield*XR).learning.skipLesson({params:{goalId:nI.make(e),conceptId:rI.make(t)}});return n($.SucceededSkipLesson({outcome:r}),`src/page/lesson.ts#anonymous~18`)}).pipe(rf(e=>n(T($.FailedSkipLesson({error:QR(e)})),`src/page/lesson.ts#anonymous~19`))),`src/page/lesson.ts#execute~9`)}),Abe=N(`AskTutor`,{args:{goalId:O,conceptId:O,question:O,stepContext:O,isGradedStep:Ky,history:j(BL)},messages:[$.SucceededAskTutor,$.FailedAskTutor],execute:e=>n(D(function*(){let t=yield*(yield*XR).learning.askTutor({params:{goalId:nI.make(e.goalId),conceptId:rI.make(e.conceptId)},payload:{question:e.question,stepContext:e.stepContext,isGradedStep:e.isGradedStep,history:e.history}});return n($.SucceededAskTutor({answer:t.answer}),`src/page/lesson.ts#anonymous~20`)}).pipe(rf(e=>n(T($.FailedAskTutor({error:QR(e)})),`src/page/lesson.ts#anonymous~21`))),`src/page/lesson.ts#execute~10`)}),jbe=N(`Reexplain`,{args:{goalId:O,conceptId:O,heading:O,body:O,tried:j(HL),missedQuestion:O},messages:[$.SucceededReexplain,$.FailedReexplain],execute:e=>n(D(function*(){let t=yield*(yield*XR).learning.reexplain({params:{goalId:nI.make(e.goalId),conceptId:rI.make(e.conceptId)},payload:{heading:e.heading,body:e.body,tried:e.tried,maybeMissedQuestion:xr(e.missedQuestion,Ed)}});return n($.SucceededReexplain({reexplanation:t}),`src/page/lesson.ts#anonymous~22`)}).pipe(rf(e=>n(T($.FailedReexplain({error:QR(e)})),`src/page/lesson.ts#anonymous~23`))),`src/page/lesson.ts#execute~11`)}),S6={isLoading:!1,alternatives:[],maybeError:b()},C6=3,Mbe={load:_6.Idle(),cards:[],ideaIds:[],queue:[],maybeCurrent:b(),shownCards:[],firstTries:[]},Nbe=(e,t)=>n({model:{goalId:e,conceptId:t,load:p6.Loading(),maybeCurrent:b(),queue:[],skipped:[],completedSteps:0,maybeQuiz:b(),maybeFrame:b(),round:Mbe,maybeFlashcard:b(),maybeLastRead:b(),reexplain:S6,questionShownAt:0,revealedSteps:0,guess:m6.Open({text:``}),teachBack:g6.Writing({text:``}),completion:y6.NotStarted(),quickCheckVerdicts:[],tutor:{isOpen:!1,draft:``,turns:[],isAsking:!1},maybeError:b()},commands:[x6({goalId:e,conceptId:t})]},`src/page/lesson.ts#init`),Pbe=e=>n(Ew(e).pipe(Mw(`Intro`,e=>n(`${e.framing}\n\n${e.motivation}`,`src/page/lesson.ts#anonymous~24`)),Mw(`Read`,e=>n(`## ${e.heading}\n${e.body}`,`src/page/lesson.ts#anonymous~25`)),Mw(`Prequestion`,`Check`,`Closing`,({question:e})=>n([e.prompt,...w(e.options,e=>n(`- ${e.text}`,`src/page/lesson.ts#anonymous~27`))].join(`
2037
+ `}],G3=O,K3=zy(eb([k,O])),q3=A({type:O,message:O}),Qye=Ay(eb([A({type:Hy(`bv:ready`),frame:G3,count:k,captions:j(O),title:O}),A({type:Hy(`bv:state`),frame:G3,index:k,count:k,caption:O,playing:Ky}),A({type:Hy(`bv:audit`),frame:G3,index:k,warnings:j(q3)}),A({type:Hy(`bv:error`),frame:G3,message:O,step:K3}),A({type:Hy(`bv:report`),frame:G3,count:k,captions:j(O),steps:j(A({index:k,caption:O,warnings:j(q3)})),errors:j(A({message:O,step:K3}))})])),J3=tb([`Dark`,`Light`]),$ye=A({goalId:O,visualId:O}),Y3=pT({Loading:{},Generating:{attempt:k,pollCount:k},Ready:{code:O,captions:j(O),altText:O},Unavailable:{reason:O,isRetryable:Ky}}),ebe=A({index:k,count:k,caption:O,isPlaying:Ky}),X3=A({frameId:O,maybeSource:Mb($ye),status:Y3,maybeTheme:Mb(J3),step:ebe,hasReachedEnd:Ky}),Z3=pT({Next:{},Back:{},Replay:{},Goto:{index:k}}),Q3=fT({SucceededFetchVisual:{state:kR},FailedFetchVisual:{error:O},ClickedRetry:{},ReceivedFrameReady:{count:k},ReceivedFrameState:{index:k,count:k,caption:O,isPlaying:Ky},ReceivedFrameError:{message:O},UpdatedTheme:{theme:J3},ClickedNext:{},ClickedBack:{},ClickedReplay:{},ClickedStep:{index:k},CompletedSendToFrame:{}}),$3=fT({ReachedLastStep:{},BecameUnavailable:{reason:O}}),tbe=3e3,e6=N(`FetchVisual`,{args:{goalId:O,visualId:O,delayMillis:k},messages:[Q3.SucceededFetchVisual,Q3.FailedFetchVisual],execute:({goalId:e,visualId:t,delayMillis:r})=>n(D(function*(){yield*ff(Ia(r));let i=yield*(yield*XR).visuals.get({params:{goalId:nI.make(e),visualId:t}});return n(Q3.SucceededFetchVisual({state:i}),`src/component/vizFrame.ts#anonymous`)}).pipe(rf(e=>n(T(Q3.FailedFetchVisual({error:QR(e)})),`src/component/vizFrame.ts#anonymous~2`))),`src/component/vizFrame.ts#execute`)}),nbe=e=>n(Z3.match(e,{Next:()=>n({type:`bv:next`},`src/component/vizFrame.ts#Next`),Back:()=>n({type:`bv:prev`},`src/component/vizFrame.ts#Back`),Replay:()=>n({type:`bv:replay`},`src/component/vizFrame.ts#Replay`),Goto:({index:e})=>n({type:`bv:goto`,index:e},`src/component/vizFrame.ts#Goto`)}),`src/component/vizFrame.ts#toHostRequest`),rbe=N(`SendToFrame`,{args:{frameId:O,request:Z3},messages:[Q3.CompletedSendToFrame],execute:({frameId:e,request:t})=>n(E(()=>{let n=globalThis.document.getElementById(e);n instanceof HTMLIFrameElement&&n.contentWindow?.postMessage(nbe(t),`*`)}).pipe(tf(Q3.CompletedSendToFrame())),`src/component/vizFrame.ts#execute~2`)}),t6=e=>n(`viz-${e.replace(/[^A-Za-z0-9_-]/g,``)}`,`src/component/vizFrame.ts#frameIdFor`),n6={index:0,count:0,caption:``,isPlaying:!1},r6=e=>n({model:{frameId:t6(e.visualId),maybeSource:x(e),status:Y3.Loading(),maybeTheme:b(),step:n6,hasReachedEnd:!1},commands:[e6({...e,delayMillis:0})]},`src/component/vizFrame.ts#init`),ibe=e=>n({frameId:t6(e.key),maybeSource:b(),status:Y3.Ready({code:e.code,captions:[],altText:e.title}),maybeTheme:b(),step:n6,hasReachedEnd:!1},`src/component/vizFrame.ts#initWithScene`),i6=(e,t,r)=>n({model:P(e,{status:()=>n(Y3.Unavailable({reason:t,isRetryable:r}),`src/component/vizFrame.ts#status`)}),outMessage:$3.BecameUnavailable({reason:t})},`src/component/vizFrame.ts#becomeUnavailable`),a6=(e,t)=>n(e.status._tag===`Ready`?{model:e,commands:[rbe({frameId:e.frameId,request:t})]}:{model:e},`src/component/vizFrame.ts#sendToFrame`),abe=e=>n(Y3.matchOrElse(e,{Generating:({pollCount:e})=>n(e+1,`src/component/vizFrame.ts#Generating`)},()=>n(0,`src/component/vizFrame.ts#anonymous~4`)),`src/component/vizFrame.ts#pollCountOf`),obe=(e,t)=>{let r=abe(e.status);return n(r>200?i6(e,`Drawing this visual is taking too long.`,!0):{model:P(e,{status:()=>n(Y3.Generating({attempt:t,pollCount:r}),`src/component/vizFrame.ts#status~2`)}),commands:w(yr(e.maybeSource),e=>n(e6({...e,delayMillis:tbe}),`src/component/vizFrame.ts#anonymous~5`))},`src/component/vizFrame.ts#keepPolling`)},sbe=(e,t)=>n(Dw(t,{Generating:({attempt:t})=>n(obe(e,t),`src/component/vizFrame.ts#Generating~2`),Ready:({code:t,captions:r,altText:i})=>n({model:P(e,{status:()=>n(Y3.Ready({code:t,captions:r,altText:i}),`src/component/vizFrame.ts#status~3`),step:()=>n({...n6,count:r.length,caption:r[0]??``},`src/component/vizFrame.ts#step`)})},`src/component/vizFrame.ts#Ready`),Failed:({note:t})=>n(i6(e,t,!1),`src/component/vizFrame.ts#Failed`),Skipped:({note:t})=>n(i6(e,t,!1),`src/component/vizFrame.ts#Skipped`)}),`src/component/vizFrame.ts#receiveVisual`),o6=(e,t)=>n(Q3.match(t,{SucceededFetchVisual:({state:t})=>n(sbe(e,t),`src/component/vizFrame.ts#SucceededFetchVisual`),FailedFetchVisual:({error:t})=>n(i6(e,t,!0),`src/component/vizFrame.ts#FailedFetchVisual`),ClickedRetry:()=>n(C(e.maybeSource,{onNone:()=>n({model:e},`src/component/vizFrame.ts#onNone`),onSome:t=>n({model:P(e,{status:()=>n(Y3.Loading(),`src/component/vizFrame.ts#status~4`)}),commands:[e6({...t,delayMillis:0})]},`src/component/vizFrame.ts#onSome`)}),`src/component/vizFrame.ts#ClickedRetry`),ReceivedFrameReady:({count:t})=>{let r=P(e,{step:e=>n(P(e,{count:()=>n(t,`src/component/vizFrame.ts#count`)}),`src/component/vizFrame.ts#step~2`)});return n(e.step.index>0&&e.step.index<t?a6(r,Z3.Goto({index:e.step.index})):{model:r},`src/component/vizFrame.ts#ReceivedFrameReady`)},ReceivedFrameState:({index:t,count:r,caption:i,isPlaying:a})=>{let o=t===r-1&&!a,s=P(e,{step:()=>n({index:t,count:r,caption:i,isPlaying:a},`src/component/vizFrame.ts#step~3`),hasReachedEnd:e=>n(e||o,`src/component/vizFrame.ts#hasReachedEnd`)});return n(o&&!e.hasReachedEnd?{model:s,outMessage:$3.ReachedLastStep()}:{model:s},`src/component/vizFrame.ts#ReceivedFrameState`)},ReceivedFrameError:({message:t})=>n(i6(e,`The visual stopped with an error: ${t}`,!1),`src/component/vizFrame.ts#ReceivedFrameError`),UpdatedTheme:({theme:t})=>n(Sr(e.maybeTheme,t)?{model:e}:{model:P(e,{maybeTheme:()=>n(x(t),`src/component/vizFrame.ts#maybeTheme`)})},`src/component/vizFrame.ts#UpdatedTheme`),ClickedNext:()=>n(a6(e,Z3.Next()),`src/component/vizFrame.ts#ClickedNext`),ClickedBack:()=>n(a6(e,Z3.Back()),`src/component/vizFrame.ts#ClickedBack`),ClickedReplay:()=>n(a6(e,Z3.Replay()),`src/component/vizFrame.ts#ClickedReplay`),ClickedStep:({index:t})=>n(a6(e,Z3.Goto({index:t})),`src/component/vizFrame.ts#ClickedStep`),CompletedSendToFrame:()=>n({model:e},`src/component/vizFrame.ts#CompletedSendToFrame`)}),`src/component/vizFrame.ts#update`),cbe=e=>n(Ew(e).pipe(jw(`type`)({"bv:ready":({count:e})=>n(x(Q3.ReceivedFrameReady({count:e})),`src/component/vizFrame.ts#bv:ready`),"bv:state":({index:e,count:t,caption:r,playing:i})=>n(x(Q3.ReceivedFrameState({index:e,count:t,caption:r,isPlaying:i})),`src/component/vizFrame.ts#bv:state`),"bv:error":({message:e})=>n(x(Q3.ReceivedFrameError({message:e})),`src/component/vizFrame.ts#bv:error`)}),Pw(()=>n(b(),`src/component/vizFrame.ts#anonymous~6`))),`src/component/vizFrame.ts#toMessage`),lbe=(e,t)=>{let r=globalThis.document.getElementById(e);return n(r instanceof HTMLIFrameElement&&t.source===r.contentWindow,`src/component/vizFrame.ts#isFromFrame`)},ube=e=>n(OC(t=>n(Tf(E(()=>{let r=r=>n(m(xr(r,()=>n(lbe(e,r),`src/component/vizFrame.ts#anonymous~9`)),gr(e=>n(Qye(e.data),`src/component/vizFrame.ts#anonymous~10`)),br(t=>n(t.frame===e,`src/component/vizFrame.ts#anonymous~11`)),gr(cbe),C({onNone:()=>n(void 0,`src/component/vizFrame.ts#onNone~2`),onSome:e=>n(Xx(t,e),`src/component/vizFrame.ts#onSome~2`)})),`src/component/vizFrame.ts#listener`);return globalThis.addEventListener(`message`,r),n(r,`src/component/vizFrame.ts#anonymous~8`)}),e=>n(E(()=>n(globalThis.removeEventListener(`message`,e),`src/component/vizFrame.ts#anonymous~13`)),`src/component/vizFrame.ts#anonymous~12`)).pipe(Yd(()=>n(Bd,`src/component/vizFrame.ts#anonymous~14`))),`src/component/vizFrame.ts#anonymous~7`)),`src/component/vizFrame.ts#frameMessages`),dbe=()=>n(globalThis.document.documentElement.classList.contains(`dark`)?`Dark`:`Light`,`src/component/vizFrame.ts#currentTheme`),fbe=OC(e=>n(Tf(E(()=>{let t=()=>n(Xx(e,Q3.UpdatedTheme({theme:dbe()})),`src/component/vizFrame.ts#emit`),r=new MutationObserver(t);return r.observe(globalThis.document.documentElement,{attributes:!0,attributeFilter:[`class`]}),t(),n(r,`src/component/vizFrame.ts#anonymous~16`)}),e=>n(E(()=>n(e.disconnect(),`src/component/vizFrame.ts#anonymous~18`)),`src/component/vizFrame.ts#anonymous~17`)).pipe(Yd(()=>n(Bd,`src/component/vizFrame.ts#anonymous~19`))),`src/component/vizFrame.ts#anonymous~15`)),s6=iA()(e=>n({frameEvents:e({maybeFrameId:Mb(O)},{modelToDependencies:e=>n({maybeFrameId:xr(e.frameId,()=>n(e.status._tag===`Ready`,`src/component/vizFrame.ts#anonymous~21`))},`src/component/vizFrame.ts#modelToDependencies`),dependenciesToStream:({maybeFrameId:e})=>n(C(e,{onNone:()=>n(kC,`src/component/vizFrame.ts#onNone~3`),onSome:ube}),`src/component/vizFrame.ts#dependenciesToStream`)}),theme:e({frameId:O},{modelToDependencies:e=>n({frameId:e.frameId},`src/component/vizFrame.ts#modelToDependencies~2`),dependenciesToStream:()=>n(fbe,`src/component/vizFrame.ts#dependenciesToStream~2`)})},`src/component/vizFrame.ts#anonymous~20`)),c6=`relative aspect-[16/10] w-full overflow-hidden bg-[#FAF9F6] dark:bg-[#0F1115]`,l6=(e,t)=>n(t.div([t.Class(F(c6,`flex flex-col items-center justify-center gap-3 px-6 text-center text-sm text-muted-foreground`))],e),`src/component/vizFrame.ts#centeredView`),u6=(e,t,r)=>n(l6([L(`refresh`,`spinner size-5 text-primary`,r),r.p([r.Class(`font-medium text-foreground`)],[e]),r.p([r.Class(`max-w-sm`)],[t])],r),`src/component/vizFrame.ts#waitingView`),pbe=(e,t,r,i)=>n(l6([L(`circleDashed`,`size-5`,i),i.p([i.Class(`font-medium text-foreground`)],[`No picture this time`]),i.p([i.Class(`max-w-md`)],[r.showDetails?e:`The text has all you need.`]),t?i.button([i.Type(`button`),i.OnClick(Q3.ClickedRetry()),i.Class(I(`Outline`,`Small`))],[L(`refresh`,``,i),`Try again`]):i.empty],i),`src/component/vizFrame.ts#unavailableView`),mbe=(e,t,r,i)=>n(C(e.maybeTheme,{onNone:()=>n(i.div([i.Class(c6)],[]),`src/component/vizFrame.ts#onNone~4`),onSome:a=>n(i.div([i.Class(c6)],[i.iframe([i.Id(e.frameId),i.Sandbox(`allow-scripts`),i.Title(r.length>0?r:`Visual explanation`),i.Srcdoc(Zye({code:t,theme:a,frameId:e.frameId})),i.Class(`absolute inset-0 block size-full border-0`)])]),`src/component/vizFrame.ts#onSome~3`)}),`src/component/vizFrame.ts#sceneView`),hbe=(e,t)=>n(t.div([t.Class(`flex gap-1.5 px-4 pt-3`),t.AriaHidden(!0)],_i(e.step.count,r=>n(t.keyed(`button`)(`${r}`,[t.Type(`button`),t.Tabindex(-1),t.OnClick(Q3.ClickedStep({index:r})),t.Class(F(`h-1 flex-1 rounded-full transition-colors`,{"bg-primary":r===e.step.index,"bg-primary/35":r<e.step.index,"bg-border hover:bg-primary/20":r>e.step.index}))],[]),`src/component/vizFrame.ts#anonymous~22`))),`src/component/vizFrame.ts#progressView`),gbe=(e,t)=>{let r=e.step.count>0,i=e.step.index>=e.step.count-1;return n(t.div([t.Class(`flex flex-col`)],[hbe(e,t),t.div([t.Class(`flex items-center gap-2 px-3 pt-2 pb-3`)],[t.button([t.Type(`button`),t.AriaLabel(`Previous step`),t.Disabled(!r||e.step.index===0),t.OnClick(Q3.ClickedBack()),t.Class(I(`Ghost`,`Icon`))],[L(`arrowLeft`,``,t)]),t.button([t.Type(`button`),t.AriaLabel(`Replay this step`),t.Disabled(!r),t.OnClick(Q3.ClickedReplay()),t.Class(I(`Ghost`,`Icon`))],[L(`refresh`,``,t)]),t.p([t.AriaLive(`polite`),t.Class(`min-h-10 flex-1 text-sm leading-snug sm:text-[0.95rem]`)],[e.step.caption]),t.span([t.Class(`text-xs text-muted-foreground tabular-nums`)],[r?`${e.step.index+1} / ${e.step.count}`:``]),t.button([t.Type(`button`),t.Disabled(!r||i&&!e.step.isPlaying),t.OnClick(Q3.ClickedNext()),t.Class(I(`Primary`,`Medium`))],[`Next`,L(`arrowRight`,``,t)])])]),`src/component/vizFrame.ts#controlsView`)},d6=e=>n(qD((t,r)=>n(r.figure([r.Class(Bz(`overflow-hidden`))],[Y3.match(t.status,{Loading:()=>n(u6(`Loading the picture…`,``,r),`src/component/vizFrame.ts#Loading`),Generating:({attempt:e})=>n(u6(`Drawing a picture…`,e>1?`Fixing it, try ${e} of 3. Keep reading.`:`This takes a minute or two. Keep reading.`,r),`src/component/vizFrame.ts#Generating~3`),Ready:({code:e,altText:i})=>n(mbe(t,e,i,r),`src/component/vizFrame.ts#Ready~2`),Unavailable:({reason:t,isRetryable:i})=>n(pbe(t,i,e,r),`src/component/vizFrame.ts#Unavailable`)}),t.status._tag===`Ready`?gbe(t,r):r.empty]),`src/component/vizFrame.ts#anonymous~23`)),`src/component/vizFrame.ts#viewWith`),_be=d6({showDetails:!1}),f6=A({key:O,step:jL,attempt:k}),p6=pT({Loading:{},Generating:{startedAt:k},Failed:{error:O},Ready:{title:O,estimatedMinutes:k,style:NL,hasSources:Ky}}),m6=pT({Open:{text:O},Made:{text:O}}),h6=pT({Writing:{text:O},Sending:{text:O},Answered:{text:O,reaction:LL},Skipped:{}}),g6=pT({Writing:{text:O},Grading:{text:O},Graded:{text:O,result:FL,followUp:h6}}),_6=pT({Idle:{},Loading:{},Ready:{},Failed:{error:O}}),v6=A({key:O,ideaId:O,attempt:k}),vbe=A({load:_6,cards:j(HI),ideaIds:j(O),queue:j(v6),maybeCurrent:Mb(v6),shownCards:j(O),firstTries:j(A({ideaId:O,isRight:Ky}))}),y6=pT({NotStarted:{},Completing:{},Completed:{outcome:RL},Failed:{error:O}}),ybe=A({goalId:O,conceptId:O,load:p6,maybeCurrent:Mb(f6),queue:j(f6),skipped:j(f6),completedSteps:k,maybeQuiz:Mb(w3),maybeFrame:Mb(X3),round:vbe,maybeFlashcard:Mb(t3),maybeLastRead:Mb(A({heading:O,body:O})),reexplain:A({isLoading:Ky,alternatives:j(WL),maybeError:Mb(O)}),questionShownAt:k,revealedSteps:k,guess:m6,teachBack:g6,completion:y6,quickCheckVerdicts:j(II),tutor:A({isOpen:Ky,draft:O,turns:j(BL),isAsking:Ky}),maybeError:Mb(O)}),$=fT({SucceededFetchLesson:{state:PL},FailedFetchLesson:{error:O},TickedPoll:{},ClickedContinue:{},ClickedStartOver:{},ClickedRevealStep:{},UpdatedGuess:{value:O},SubmittedGuess:{},ClickedSkipGuess:{},GotQuizMessage:{message:T3},GotVizFrameMessage:{message:Q3},CompletedMarkQuestionShown:{at:k},SucceededSubmitAnswer:{feedback:LI},FailedSubmitAnswer:{error:O},UpdatedTeachBack:{value:O},SubmittedTeachBack:{},SucceededTeachBack:{result:FL},FailedTeachBack:{error:O},UpdatedFollowUp:{value:O},SubmittedFollowUp:{},ClickedSkipFollowUp:{},SucceededFollowUp:{reaction:LL},FailedFollowUp:{error:O},ClickedSkipLesson:{},SucceededSkipLesson:{outcome:RL},FailedSkipLesson:{error:O},ToggledTutor:{},UpdatedTutorDraft:{value:O},SubmittedTutorQuestion:{},SucceededAskTutor:{answer:O},FailedAskTutor:{error:O},ClickedExplainDifferently:{},SucceededReexplain:{reexplanation:WL},FailedReexplain:{error:O},SucceededCompleteLesson:{outcome:RL},FailedCompleteLesson:{error:O},SucceededFetchRound:{cards:j(HI)},FailedFetchRound:{error:O},ClickedRetryRound:{},ClickedSkipRound:{},GotFlashcardMessage:{message:n3},SucceededSubmitFlashcard:{result:JI},FailedSubmitFlashcard:{error:O},SucceededExplainFlashcard:{questionId:O,body:O},FailedExplainFlashcard:{questionId:O,error:O}}),bbe=La(2),xbe=3,b6=3,x6=N(`FetchLesson`,{args:{goalId:O,conceptId:O},messages:[$.SucceededFetchLesson,$.FailedFetchLesson],execute:({goalId:e,conceptId:t})=>n(D(function*(){let r=yield*(yield*XR).learning.lesson({params:{goalId:nI.make(e),conceptId:rI.make(t)}});return n($.SucceededFetchLesson({state:r}),`src/page/lesson.ts#anonymous`)}).pipe(rf(e=>n(T($.FailedFetchLesson({error:QR(e)})),`src/page/lesson.ts#anonymous~2`))),`src/page/lesson.ts#execute`)}),Sbe=N(`MarkQuestionShown`,{messages:[$.CompletedMarkQuestionShown],execute:hd.pipe(ef(e=>n($.CompletedMarkQuestionShown({at:e}),`src/page/lesson.ts#anonymous~3`)))}),Cbe=N(`SubmitAnswer`,{args:{goalId:O,questionId:O,response:FI,note:O,hintLevel:k,shownAt:k},messages:[$.SucceededSubmitAnswer,$.FailedSubmitAnswer],execute:e=>n(D(function*(){let t=yield*XR,r=yield*hd,i=yield*t.learning.answer({params:{goalId:nI.make(e.goalId)},payload:{context:`Lesson`,answer:{questionId:OI.make(e.questionId),response:e.response,note:e.note,latencyMs:Math.max(0,r-e.shownAt),hintLevel:e.hintLevel}}});return n($.SucceededSubmitAnswer({feedback:i}),`src/page/lesson.ts#anonymous~4`)}).pipe(rf(e=>n(T($.FailedSubmitAnswer({error:QR(e)})),`src/page/lesson.ts#anonymous~5`))),`src/page/lesson.ts#execute~2`)}),wbe=N(`SubmitTeachBack`,{args:{goalId:O,conceptId:O,explanation:O},messages:[$.SucceededTeachBack,$.FailedTeachBack],execute:({goalId:e,conceptId:t,explanation:r})=>n(D(function*(){let i=yield*(yield*XR).learning.teachBack({params:{goalId:nI.make(e),conceptId:rI.make(t)},payload:{explanation:r}});return n($.SucceededTeachBack({result:i}),`src/page/lesson.ts#anonymous~6`)}).pipe(rf(e=>n(T($.FailedTeachBack({error:QR(e)})),`src/page/lesson.ts#anonymous~7`))),`src/page/lesson.ts#execute~3`)}),Tbe=N(`SubmitFollowUp`,{args:{goalId:O,conceptId:O,explanation:O,noviceQuestion:O,reply:O},messages:[$.SucceededFollowUp,$.FailedFollowUp],execute:({goalId:e,conceptId:t,explanation:r,noviceQuestion:i,reply:a})=>n(D(function*(){let o=yield*(yield*XR).learning.teachBackReply({params:{goalId:nI.make(e),conceptId:rI.make(t)},payload:{explanation:r,noviceQuestion:i,reply:a}});return n($.SucceededFollowUp({reaction:o}),`src/page/lesson.ts#anonymous~8`)}).pipe(rf(e=>n(T($.FailedFollowUp({error:QR(e)})),`src/page/lesson.ts#anonymous~9`))),`src/page/lesson.ts#execute~4`)}),Ebe=N(`CompleteLesson`,{args:{goalId:O,conceptId:O},messages:[$.SucceededCompleteLesson,$.FailedCompleteLesson],execute:({goalId:e,conceptId:t})=>n(D(function*(){let r=yield*(yield*XR).learning.completeLesson({params:{goalId:nI.make(e),conceptId:rI.make(t)}});return n($.SucceededCompleteLesson({outcome:r}),`src/page/lesson.ts#anonymous~10`)}).pipe(rf(e=>n(T($.FailedCompleteLesson({error:QR(e)})),`src/page/lesson.ts#anonymous~11`))),`src/page/lesson.ts#execute~5`)}),Dbe=N(`FetchRound`,{args:{goalId:O,conceptId:O},messages:[$.SucceededFetchRound,$.FailedFetchRound],execute:({goalId:e,conceptId:t})=>n(D(function*(){let r=yield*(yield*XR).flashcards.lessonRound({params:{goalId:nI.make(e),conceptId:rI.make(t)}});return n($.SucceededFetchRound({cards:r.cards}),`src/page/lesson.ts#anonymous~12`)}).pipe(rf(e=>n(T($.FailedFetchRound({error:QR(e)})),`src/page/lesson.ts#anonymous~13`))),`src/page/lesson.ts#execute~6`)}),Obe=N(`SubmitFlashcard`,{args:{goalId:O,questionId:O,response:KI,recallMs:k,latencyMs:k},messages:[$.SucceededSubmitFlashcard,$.FailedSubmitFlashcard],execute:e=>n(D(function*(){let t=yield*(yield*XR).flashcards.answer({params:{goalId:nI.make(e.goalId)},payload:{questionId:OI.make(e.questionId),response:e.response,recallMs:e.recallMs,latencyMs:e.latencyMs,context:`Lesson`}});return n($.SucceededSubmitFlashcard({result:t}),`src/page/lesson.ts#anonymous~14`)}).pipe(rf(e=>n(T($.FailedSubmitFlashcard({error:QR(e)})),`src/page/lesson.ts#anonymous~15`))),`src/page/lesson.ts#execute~7`)}),kbe=N(`ExplainFlashcard`,{args:{goalId:O,questionId:O,response:KI},messages:[$.SucceededExplainFlashcard,$.FailedExplainFlashcard],execute:e=>n(D(function*(){let t=yield*(yield*XR).flashcards.explain({params:{goalId:nI.make(e.goalId)},payload:{questionId:OI.make(e.questionId),response:e.response}});return n($.SucceededExplainFlashcard({questionId:e.questionId,body:t.body}),`src/page/lesson.ts#anonymous~16`)}).pipe(rf(t=>n(T($.FailedExplainFlashcard({questionId:e.questionId,error:QR(t)})),`src/page/lesson.ts#anonymous~17`))),`src/page/lesson.ts#execute~8`)}),Abe=N(`SkipLesson`,{args:{goalId:O,conceptId:O},messages:[$.SucceededSkipLesson,$.FailedSkipLesson],execute:({goalId:e,conceptId:t})=>n(D(function*(){let r=yield*(yield*XR).learning.skipLesson({params:{goalId:nI.make(e),conceptId:rI.make(t)}});return n($.SucceededSkipLesson({outcome:r}),`src/page/lesson.ts#anonymous~18`)}).pipe(rf(e=>n(T($.FailedSkipLesson({error:QR(e)})),`src/page/lesson.ts#anonymous~19`))),`src/page/lesson.ts#execute~9`)}),jbe=N(`AskTutor`,{args:{goalId:O,conceptId:O,question:O,stepContext:O,isGradedStep:Ky,history:j(BL)},messages:[$.SucceededAskTutor,$.FailedAskTutor],execute:e=>n(D(function*(){let t=yield*(yield*XR).learning.askTutor({params:{goalId:nI.make(e.goalId),conceptId:rI.make(e.conceptId)},payload:{question:e.question,stepContext:e.stepContext,isGradedStep:e.isGradedStep,history:e.history}});return n($.SucceededAskTutor({answer:t.answer}),`src/page/lesson.ts#anonymous~20`)}).pipe(rf(e=>n(T($.FailedAskTutor({error:QR(e)})),`src/page/lesson.ts#anonymous~21`))),`src/page/lesson.ts#execute~10`)}),Mbe=N(`Reexplain`,{args:{goalId:O,conceptId:O,heading:O,body:O,tried:j(HL),missedQuestion:O},messages:[$.SucceededReexplain,$.FailedReexplain],execute:e=>n(D(function*(){let t=yield*(yield*XR).learning.reexplain({params:{goalId:nI.make(e.goalId),conceptId:rI.make(e.conceptId)},payload:{heading:e.heading,body:e.body,tried:e.tried,maybeMissedQuestion:xr(e.missedQuestion,Ed)}});return n($.SucceededReexplain({reexplanation:t}),`src/page/lesson.ts#anonymous~22`)}).pipe(rf(e=>n(T($.FailedReexplain({error:QR(e)})),`src/page/lesson.ts#anonymous~23`))),`src/page/lesson.ts#execute~11`)}),S6={isLoading:!1,alternatives:[],maybeError:b()},C6=3,Nbe={load:_6.Idle(),cards:[],ideaIds:[],queue:[],maybeCurrent:b(),shownCards:[],firstTries:[]},Pbe=(e,t)=>n({model:{goalId:e,conceptId:t,load:p6.Loading(),maybeCurrent:b(),queue:[],skipped:[],completedSteps:0,maybeQuiz:b(),maybeFrame:b(),round:Nbe,maybeFlashcard:b(),maybeLastRead:b(),reexplain:S6,questionShownAt:0,revealedSteps:0,guess:m6.Open({text:``}),teachBack:g6.Writing({text:``}),completion:y6.NotStarted(),quickCheckVerdicts:[],tutor:{isOpen:!1,draft:``,turns:[],isAsking:!1},maybeError:b()},commands:[x6({goalId:e,conceptId:t})]},`src/page/lesson.ts#init`),Fbe=e=>n(Ew(e).pipe(Mw(`Intro`,e=>n(`${e.framing}\n\n${e.motivation}`,`src/page/lesson.ts#anonymous~24`)),Mw(`Read`,e=>n(`## ${e.heading}\n${e.body}`,`src/page/lesson.ts#anonymous~25`)),Mw(`Prequestion`,`Check`,`Closing`,({question:e})=>n([e.prompt,...w(e.options,e=>n(`- ${e.text}`,`src/page/lesson.ts#anonymous~27`))].join(`
2038
2038
  `),`src/page/lesson.ts#anonymous~26`)),Mw(`WorkedExample`,e=>n(`${e.problem}\n${e.steps.join(`
2039
2039
  `)}`,`src/page/lesson.ts#anonymous~28`)),Mw(`Connect`,e=>n(e.body,`src/page/lesson.ts#anonymous~29`)),Mw(`TeachBack`,e=>n(e.prompt,`src/page/lesson.ts#anonymous~30`)),Mw(`Summary`,e=>n(e.points.join(`
2040
- `),`src/page/lesson.ts#anonymous~31`)),Mw(`QuickCheck`,({question:e})=>n(e.prompt,`src/page/lesson.ts#anonymous~32`)),Mw(`QuickCheckDecision`,()=>n(`Deciding whether to skip the lesson`,`src/page/lesson.ts#anonymous~33`)),Mw(`Flashcards`,()=>n(`Flashcards on the key ideas of this lesson`,`src/page/lesson.ts#anonymous~34`)),Fw),`src/page/lesson.ts#stepContextOf`),w6=e=>n(Ew(e).pipe(Mw(`Read`,e=>n(e.maybePredict,`src/page/lesson.ts#anonymous~35`)),Mw(`WorkedExample`,e=>n(x(e.problem),`src/page/lesson.ts#anonymous~36`)),Pw(()=>n(b(),`src/page/lesson.ts#anonymous~37`))),`src/page/lesson.ts#maybeGuessPrompt`),T6=e=>n(e.guess._tag===`Open`&&Cr(e.maybeCurrent,e=>n(S(w6(e.step)),`src/page/lesson.ts#anonymous~38`)),`src/page/lesson.ts#isGuessing`),E6=e=>n(C(e.maybeQuiz,{onNone:()=>n(!1,`src/page/lesson.ts#onNone`),onSome:e=>n(e.phase._tag===`Answering`,`src/page/lesson.ts#onSome`)}),`src/page/lesson.ts#isUnansweredQuestion`),Fbe=e=>n(E6(e)&&Cr(e.maybeCurrent,e=>n(e.step._tag===`Closing`||e.step._tag===`QuickCheck`||e.step._tag===`Prequestion`,`src/page/lesson.ts#anonymous~39`))||Cr(e.maybeFlashcard,d3),`src/page/lesson.ts#isRetrievalCheck`),D6=e=>n(Ew(e).pipe(Mw(`Prequestion`,`Check`,`Closing`,`QuickCheck`,({question:e})=>n(x(e),`src/page/lesson.ts#anonymous~40`)),Pw(()=>n(b(),`src/page/lesson.ts#anonymous~41`))),`src/page/lesson.ts#questionOf`),Ibe=e=>n(e._tag===`Read`?e.maybeVisual:b(),`src/page/lesson.ts#visualOf`),O6=e=>n($.GotVizFrameMessage({message:e}),`src/page/lesson.ts#toFrameMessage`),Lbe=LN({update:o6,read:e=>n(e.maybeFrame,`src/page/lesson.ts#read`),write:(e,t)=>n(P(e,{maybeFrame:()=>n(x(t),`src/page/lesson.ts#maybeFrame`)}),`src/page/lesson.ts#write`),toParentMessage:O6,foldOutMessage:$3.match({ReachedLastStep:()=>n((e=>n({model:e},`src/page/lesson.ts#anonymous~42`)),`src/page/lesson.ts#ReachedLastStep`),BecameUnavailable:()=>n((e=>n({model:e},`src/page/lesson.ts#anonymous~43`)),`src/page/lesson.ts#BecameUnavailable`)})}),k6=e=>n($.GotFlashcardMessage({message:e}),`src/page/lesson.ts#toFlashcardMessage`),A6=(e,t)=>{let r=t(e.model);return n({model:r.model,commands:[...e.commands??[],...r.commands??[]]},`src/page/lesson.ts#andThen`)},j6=e=>n(Cr(e.maybeCurrent,e=>n(e.step._tag===`Flashcards`,`src/page/lesson.ts#anonymous~44`)),`src/page/lesson.ts#isOnFlashcards`),M6=e=>{let t=[...bi(e.maybeCurrent),...e.queue];return n(e.round.load._tag===`Idle`&&ma(t,e=>n(e.step._tag===`Flashcards`,`src/page/lesson.ts#anonymous~45`))?{model:P(e,{round:e=>n(P(e,{load:()=>n(_6.Loading(),`src/page/lesson.ts#load`)}),`src/page/lesson.ts#round`)}),commands:[Ebe({goalId:e.goalId,conceptId:e.conceptId})]}:{model:e},`src/page/lesson.ts#prefetchRound`)},Rbe=(e,t)=>n(lr(Tz(da(e.cards,e=>n(e.ideaId===t,`src/page/lesson.ts#anonymous~46`)),e=>n(e.questionId,`src/page/lesson.ts#anonymous~47`),e.shownCards)),`src/page/lesson.ts#roundPhrasing`),N6=e=>!j6(e)||e.round.load._tag!==`Ready`?n({model:e},`src/page/lesson.ts#nextCard`):n(xi(e.round.queue,{onEmpty:()=>n(F6(P(e,{maybeFlashcard:()=>n(b(),`src/page/lesson.ts#maybeFlashcard`),round:e=>n(P(e,{maybeCurrent:()=>n(b(),`src/page/lesson.ts#maybeCurrent`)}),`src/page/lesson.ts#round~2`)})),`src/page/lesson.ts#onEmpty`),onNonEmpty:([t,...r])=>n(C(Rbe(e.round,t.ideaId),{onNone:()=>n(N6(P(e,{round:e=>n(P(e,{queue:()=>n(r,`src/page/lesson.ts#queue`)}),`src/page/lesson.ts#round~3`)})),`src/page/lesson.ts#onNone~2`),onSome:i=>{let a=i3(i);return n({model:P(e,{maybeFlashcard:()=>n(x(a.model),`src/page/lesson.ts#maybeFlashcard~2`),round:e=>n(P(e,{queue:()=>n(r,`src/page/lesson.ts#queue~2`),maybeCurrent:()=>n(x(t),`src/page/lesson.ts#maybeCurrent~2`),shownCards:wi(i.questionId)}),`src/page/lesson.ts#round~4`),maybeError:()=>n(b(),`src/page/lesson.ts#maybeError`)}),commands:BO(a.commands??[],k6)},`src/page/lesson.ts#onSome~2`)}}),`src/page/lesson.ts#onNonEmpty`)}),`src/page/lesson.ts#nextCard`),P6=e=>n(j6(e)&&or(e.maybeFlashcard)&&or(e.round.maybeCurrent)?N6(e):{model:e},`src/page/lesson.ts#startRound`),zbe=(e,t)=>n(C(e.round.maybeCurrent,{onNone:()=>n(e,`src/page/lesson.ts#onNone~3`),onSome:r=>n(wz(t.grading,r.attempt)?P(e,{round:e=>n(P(e,{queue:e=>{let t={key:`${r.key}:again`,ideaId:r.ideaId,attempt:r.attempt+1};return n(sr(Zi(e,Math.min(2,e.length),t),()=>n(wi(e,t),`src/page/lesson.ts#anonymous~48`)),`src/page/lesson.ts#queue~3`)}}),`src/page/lesson.ts#round~5`)}):e,`src/page/lesson.ts#onSome~3`)}),`src/page/lesson.ts#requeueMissedCard`),F6=e=>n(A6(A6(Bbe(e),M6),P6),`src/page/lesson.ts#enterNext`),Bbe=e=>{let t=e.completedSteps+ +!!S(e.maybeCurrent);return n(xi(e.queue,{onEmpty:()=>n({model:P(e,{maybeCurrent:()=>n(b(),`src/page/lesson.ts#maybeCurrent~3`),maybeQuiz:()=>n(b(),`src/page/lesson.ts#maybeQuiz`),completedSteps:()=>n(t,`src/page/lesson.ts#completedSteps`)})},`src/page/lesson.ts#onEmpty~2`),onNonEmpty:([r,...i])=>{let a=D6(r.step),o=mr(Ibe(r.step),t=>n(r6({goalId:e.goalId,visualId:t.id}),`src/page/lesson.ts#anonymous~49`)),s=r.step._tag===`Summary`&&e.completion._tag===`NotStarted`;return n({model:P(e,{maybeCurrent:()=>n(x(r),`src/page/lesson.ts#maybeCurrent~4`),queue:()=>n(i,`src/page/lesson.ts#queue~4`),completedSteps:()=>n(t,`src/page/lesson.ts#completedSteps~2`),maybeQuiz:()=>n(mr(a,e=>n(D3(e,{canHint:r.step._tag===`Check`,askWhy:r.step._tag===`Check`&&e.kind===`MultipleChoice`}),`src/page/lesson.ts#anonymous~50`)),`src/page/lesson.ts#maybeQuiz~2`),maybeFrame:()=>n(mr(o,e=>n(e.model,`src/page/lesson.ts#anonymous~51`)),`src/page/lesson.ts#maybeFrame~2`),maybeFlashcard:()=>n(b(),`src/page/lesson.ts#maybeFlashcard~3`),maybeLastRead:e=>n(r.step._tag===`Read`?x({heading:r.step.heading,body:r.step.body}):e,`src/page/lesson.ts#maybeLastRead`),reexplain:()=>n(S6,`src/page/lesson.ts#reexplain`),revealedSteps:()=>n(0,`src/page/lesson.ts#revealedSteps`),guess:()=>n(m6.Open({text:``}),`src/page/lesson.ts#guess`),maybeError:()=>n(b(),`src/page/lesson.ts#maybeError~2`),completion:e=>n(s?y6.Completing():e,`src/page/lesson.ts#completion`)}),commands:[...bi(mr(a,()=>n(xbe(),`src/page/lesson.ts#anonymous~52`))),...C(o,{onNone:()=>n([],`src/page/lesson.ts#onNone~4`),onSome:e=>n(BO(e.commands??[],O6),`src/page/lesson.ts#onSome~4`)}),...bi(xr(Tbe({goalId:e.goalId,conceptId:e.conceptId}),()=>n(s,`src/page/lesson.ts#anonymous~53`)))]},`src/page/lesson.ts#onNonEmpty~2`)}}),`src/page/lesson.ts#enterNextStep`)},I6=e=>n(gr(e.maybeCurrent,t=>n(t.step._tag===`Check`?gr(e.maybeQuiz,e=>n(S3.match(e.phase,{Answering:()=>n(b(),`src/page/lesson.ts#Answering`),Submitting:()=>n(b(),`src/page/lesson.ts#Submitting`),Answered:({feedback:t})=>n(xr(e.question.prompt,()=>n(t.verdict!==`Correct`,`src/page/lesson.ts#anonymous~56`)),`src/page/lesson.ts#Answered`)}),`src/page/lesson.ts#anonymous~55`)):b(),`src/page/lesson.ts#anonymous~54`)),`src/page/lesson.ts#missedCheckPrompt`),Vbe=e=>n(gr(e.maybeCurrent,t=>n(t.step._tag===`Read`?x({heading:t.step.heading,body:t.step.body,missedQuestion:``}):gr(I6(e),t=>n(mr(e.maybeLastRead,e=>n({...e,missedQuestion:t},`src/page/lesson.ts#anonymous~59`)),`src/page/lesson.ts#anonymous~58`)),`src/page/lesson.ts#anonymous~57`)),`src/page/lesson.ts#reexplainTarget`),L6=(e,t)=>n(Cr(D6(e.step),e=>n(t.includes(e.id),`src/page/lesson.ts#anonymous~60`)),`src/page/lesson.ts#isAnswered`),Hbe=(e,t)=>n(C(Ji(Vi(e,sr(qi(e,e=>n(S(D6(e.step))&&!L6(e,t),`src/page/lesson.ts#anonymous~61`)),()=>n(e.length,`src/page/lesson.ts#anonymous~62`))),e=>n(L6(e,t),`src/page/lesson.ts#anonymous~63`)),{onNone:()=>n(0,`src/page/lesson.ts#onNone~5`),onSome:e=>n(e+1,`src/page/lesson.ts#onSome~5`)}),`src/page/lesson.ts#resumeIndex`),Ube=(e,t)=>n(C(e.maybeCurrent,{onNone:()=>n(e,`src/page/lesson.ts#onNone~6`),onSome:r=>{let i=t.verdict!==`Correct`;if(r.step._tag!==`Closing`||!i||r.attempt+1>=bbe)return n(e,`src/page/lesson.ts#onSome~6`);let a={key:`${r.key}:retry${r.attempt+1}`,step:r.step,attempt:r.attempt+1},o=sr(qi(e.queue,e=>n(e.step._tag===`Summary`||e.step._tag===`Flashcards`,`src/page/lesson.ts#anonymous~64`)),()=>n(e.queue.length,`src/page/lesson.ts#anonymous~65`)),s=Math.min(2,o);return n(P(e,{queue:e=>n(sr(Zi(e,s,a),()=>n(wi(e,a),`src/page/lesson.ts#anonymous~66`)),`src/page/lesson.ts#queue~5`)}),`src/page/lesson.ts#onSome~6`)}}),`src/page/lesson.ts#requeueMissedClosing`),Wbe=LN({update:F3,read:e=>n(e.maybeQuiz,`src/page/lesson.ts#read~2`),write:(e,t)=>n(P(e,{maybeQuiz:()=>n(x(t),`src/page/lesson.ts#maybeQuiz~3`)}),`src/page/lesson.ts#write~2`),toParentMessage:e=>n($.GotQuizMessage({message:e}),`src/page/lesson.ts#toParentMessage`),foldOutMessage:E3.match({SubmittedAnswer:({response:e,note:t,hintLevel:r})=>n((i=>n({model:i,commands:bi(mr(i.maybeQuiz,a=>n(Sbe({goalId:i.goalId,questionId:a.question.id,response:e,note:t,hintLevel:r,shownAt:i.questionShownAt}),`src/page/lesson.ts#anonymous~68`)))},`src/page/lesson.ts#anonymous~67`)),`src/page/lesson.ts#SubmittedAnswer`),ContinuedAfterFeedback:()=>n(F6,`src/page/lesson.ts#ContinuedAfterFeedback`)})}),Gbe=LN({update:g3,read:e=>n(e.maybeFlashcard,`src/page/lesson.ts#read~3`),write:(e,t)=>n(P(e,{maybeFlashcard:()=>n(x(t),`src/page/lesson.ts#maybeFlashcard~4`)}),`src/page/lesson.ts#write~3`),toParentMessage:k6,foldOutMessage:r3.match({Answered:({response:e,recallMs:t,latencyMs:r})=>n((i=>n({model:i,commands:bi(mr(i.maybeFlashcard,a=>n(Dbe({goalId:i.goalId,questionId:a.card.questionId,response:e,recallMs:t,latencyMs:r}),`src/page/lesson.ts#anonymous~70`)))},`src/page/lesson.ts#anonymous~69`)),`src/page/lesson.ts#Answered~2`),Continued:()=>n(N6,`src/page/lesson.ts#Continued`),RequestedExplanation:({response:e})=>n((t=>n({model:t,commands:bi(mr(t.maybeFlashcard,r=>n(Obe({goalId:t.goalId,questionId:r.card.questionId,response:e}),`src/page/lesson.ts#anonymous~72`)))},`src/page/lesson.ts#anonymous~71`)),`src/page/lesson.ts#RequestedExplanation`)})}),Kbe=(e,t)=>n($.match(t,{ClickedStartOver:()=>n(F6(P(e,{queue:()=>n([...e.skipped,...bi(e.maybeCurrent),...e.queue],`src/page/lesson.ts#queue~6`),skipped:()=>n([],`src/page/lesson.ts#skipped`),maybeCurrent:()=>n(b(),`src/page/lesson.ts#maybeCurrent~5`),maybeQuiz:()=>n(b(),`src/page/lesson.ts#maybeQuiz~4`),completedSteps:()=>n(0,`src/page/lesson.ts#completedSteps~3`)})),`src/page/lesson.ts#ClickedStartOver`),ClickedExplainDifferently:()=>n(C(Vbe(e),{onNone:()=>n({model:e},`src/page/lesson.ts#onNone~7`),onSome:t=>n(e.reexplain.isLoading||e.reexplain.alternatives.length>=C6?{model:e}:{model:P(e,{reexplain:e=>n({...e,isLoading:!0,maybeError:b()},`src/page/lesson.ts#reexplain~2`)}),commands:[jbe({goalId:e.goalId,conceptId:e.conceptId,...t,tried:w(e.reexplain.alternatives,e=>n(e.angle,`src/page/lesson.ts#anonymous~73`))})]},`src/page/lesson.ts#onSome~7`)}),`src/page/lesson.ts#ClickedExplainDifferently`),SucceededReexplain:({reexplanation:t})=>n({model:P(e,{reexplain:e=>n({isLoading:!1,alternatives:[...e.alternatives,t],maybeError:b()},`src/page/lesson.ts#reexplain~3`)})},`src/page/lesson.ts#SucceededReexplain`),FailedReexplain:({error:t})=>n({model:P(e,{reexplain:e=>n({...e,isLoading:!1,maybeError:x(t)},`src/page/lesson.ts#reexplain~4`)})},`src/page/lesson.ts#FailedReexplain`),SucceededFetchLesson:({state:t})=>n(Ew(t).pipe(Ow(),Mw(`Generating`,({startedAt:t})=>n({model:P(e,{load:()=>n(p6.Generating({startedAt:t}),`src/page/lesson.ts#load~2`)})},`src/page/lesson.ts#anonymous~74`)),Mw(`Failed`,({error:t})=>n({model:P(e,{load:()=>n(p6.Failed({error:t}),`src/page/lesson.ts#load~3`)})},`src/page/lesson.ts#anonymous~75`)),Mw(`Ready`,({lesson:t,answeredQuestionIds:r,style:i})=>{if(e.load._tag===`Ready`)return n({model:e},`src/page/lesson.ts#anonymous~76`);let a=w(t.steps,(e,t)=>n({key:`${t}`,step:e,attempt:0},`src/page/lesson.ts#anonymous~77`)),o=Hbe(a,r),[s,c]=ra(a,o);return n(F6(P(e,{load:()=>n(p6.Ready({title:t.title,estimatedMinutes:t.estimatedMinutes,style:i,hasSources:t.hasSources}),`src/page/lesson.ts#load~4`),queue:()=>n(c,`src/page/lesson.ts#queue~7`),skipped:()=>n(s,`src/page/lesson.ts#skipped~2`),completedSteps:()=>n(o,`src/page/lesson.ts#completedSteps~4`)})),`src/page/lesson.ts#anonymous~76`)}),Fw),`src/page/lesson.ts#SucceededFetchLesson`),FailedFetchLesson:({error:t})=>n({model:P(e,{load:()=>n(p6.Failed({error:t}),`src/page/lesson.ts#load~5`)})},`src/page/lesson.ts#FailedFetchLesson`),TickedPoll:()=>n({model:e,commands:[x6({goalId:e.goalId,conceptId:e.conceptId})]},`src/page/lesson.ts#TickedPoll`),ClickedContinue:()=>n(T6(e)?{model:e}:F6(e),`src/page/lesson.ts#ClickedContinue`),ClickedRevealStep:()=>n({model:P(e,{revealedSteps:e=>n(e+1,`src/page/lesson.ts#revealedSteps~2`)})},`src/page/lesson.ts#ClickedRevealStep`),UpdatedGuess:({value:t})=>n({model:P(e,{guess:e=>n(e._tag===`Open`?m6.Open({text:t}):e,`src/page/lesson.ts#guess~2`)})},`src/page/lesson.ts#UpdatedGuess`),SubmittedGuess:()=>n({model:P(e,{guess:e=>n(e._tag===`Open`&&Ed(wd(e.text))?m6.Made({text:wd(e.text)}):e,`src/page/lesson.ts#guess~3`)})},`src/page/lesson.ts#SubmittedGuess`),ClickedSkipGuess:()=>n({model:P(e,{guess:e=>n(e._tag===`Open`?m6.Made({text:``}):e,`src/page/lesson.ts#guess~4`)})},`src/page/lesson.ts#ClickedSkipGuess`),GotQuizMessage:({message:t})=>n(Wbe(e,t),`src/page/lesson.ts#GotQuizMessage`),GotVizFrameMessage:({message:t})=>n(Lbe(e,t),`src/page/lesson.ts#GotVizFrameMessage`),CompletedMarkQuestionShown:({at:t})=>n({model:P(e,{questionShownAt:()=>n(t,`src/page/lesson.ts#questionShownAt`)})},`src/page/lesson.ts#CompletedMarkQuestionShown`),SucceededSubmitAnswer:({feedback:t})=>n({model:Ube(P(e,{quickCheckVerdicts:r=>n(C(e.maybeCurrent,{onNone:()=>n(r,`src/page/lesson.ts#onNone~8`),onSome:e=>n(e.step._tag===`QuickCheck`?wi(r,t.verdict):r,`src/page/lesson.ts#onSome~8`)}),`src/page/lesson.ts#quickCheckVerdicts`),maybeQuiz:mr(e=>n(O3(e,t),`src/page/lesson.ts#anonymous~78`))}),t)},`src/page/lesson.ts#SucceededSubmitAnswer`),FailedSubmitAnswer:({error:t})=>n({model:P(e,{maybeQuiz:mr(k3),maybeError:()=>n(x(t),`src/page/lesson.ts#maybeError~3`)})},`src/page/lesson.ts#FailedSubmitAnswer`),UpdatedTeachBack:({value:t})=>n({model:P(e,{teachBack:e=>n(e._tag===`Writing`?g6.Writing({text:t}):e,`src/page/lesson.ts#teachBack`)})},`src/page/lesson.ts#UpdatedTeachBack`),SubmittedTeachBack:()=>n(g6.match(e.teachBack,{Writing:({text:t})=>n(wd(t).length<10?{model:e}:{model:P(e,{teachBack:()=>n(g6.Grading({text:t}),`src/page/lesson.ts#teachBack~2`)}),commands:[Cbe({goalId:e.goalId,conceptId:e.conceptId,explanation:t})]},`src/page/lesson.ts#Writing`),Grading:()=>n({model:e},`src/page/lesson.ts#Grading`),Graded:()=>n({model:e},`src/page/lesson.ts#Graded`)}),`src/page/lesson.ts#SubmittedTeachBack`),SucceededTeachBack:({result:t})=>n({model:P(e,{teachBack:e=>n(g6.Graded({text:e._tag===`Writing`||e._tag===`Grading`?e.text:``,result:t,followUp:h6.Writing({text:``})}),`src/page/lesson.ts#teachBack~3`)})},`src/page/lesson.ts#SucceededTeachBack`),FailedTeachBack:({error:t})=>n({model:P(e,{teachBack:e=>n(e._tag===`Grading`?g6.Writing({text:e.text}):e,`src/page/lesson.ts#teachBack~4`),maybeError:()=>n(x(t),`src/page/lesson.ts#maybeError~4`)})},`src/page/lesson.ts#FailedTeachBack`),UpdatedFollowUp:({value:t})=>n({model:P(e,{teachBack:e=>n(e._tag===`Graded`?P(e,{followUp:e=>n(e._tag===`Writing`?h6.Writing({text:t}):e,`src/page/lesson.ts#followUp`)}):e,`src/page/lesson.ts#teachBack~5`)})},`src/page/lesson.ts#UpdatedFollowUp`),SubmittedFollowUp:()=>n(g6.match(e.teachBack,{Writing:()=>n({model:e},`src/page/lesson.ts#Writing~2`),Grading:()=>n({model:e},`src/page/lesson.ts#Grading~2`),Graded:t=>n(h6.match(t.followUp,{Writing:({text:r})=>n(wd(r).length<b6?{model:e}:{model:P(e,{teachBack:()=>n(P(t,{followUp:()=>n(h6.Sending({text:wd(r)}),`src/page/lesson.ts#followUp~2`)}),`src/page/lesson.ts#teachBack~6`),maybeError:()=>n(b(),`src/page/lesson.ts#maybeError~5`)}),commands:[wbe({goalId:e.goalId,conceptId:e.conceptId,explanation:t.text,noviceQuestion:t.result.noviceQuestion,reply:wd(r)})]},`src/page/lesson.ts#Writing~3`),Sending:()=>n({model:e},`src/page/lesson.ts#Sending`),Answered:()=>n({model:e},`src/page/lesson.ts#Answered~3`),Skipped:()=>n({model:e},`src/page/lesson.ts#Skipped`)}),`src/page/lesson.ts#Graded~2`)}),`src/page/lesson.ts#SubmittedFollowUp`),ClickedSkipFollowUp:()=>n({model:P(e,{teachBack:e=>n(e._tag===`Graded`&&(e.followUp._tag===`Writing`||e.followUp._tag===`Sending`)?P(e,{followUp:()=>n(h6.Skipped(),`src/page/lesson.ts#followUp~3`)}):e,`src/page/lesson.ts#teachBack~7`)})},`src/page/lesson.ts#ClickedSkipFollowUp`),SucceededFollowUp:({reaction:t})=>n({model:P(e,{teachBack:e=>n(e._tag===`Graded`&&e.followUp._tag===`Sending`?P(e,{followUp:e=>n(h6.Answered({text:e._tag===`Sending`?e.text:``,reaction:t}),`src/page/lesson.ts#followUp~4`)}):e,`src/page/lesson.ts#teachBack~8`)})},`src/page/lesson.ts#SucceededFollowUp`),FailedFollowUp:({error:t})=>n({model:P(e,{teachBack:e=>n(e._tag===`Graded`&&e.followUp._tag===`Sending`?P(e,{followUp:e=>n(h6.Writing({text:e._tag===`Sending`?e.text:``}),`src/page/lesson.ts#followUp~5`)}):e,`src/page/lesson.ts#teachBack~9`),maybeError:()=>n(x(t),`src/page/lesson.ts#maybeError~6`)})},`src/page/lesson.ts#FailedFollowUp`),ClickedSkipLesson:()=>n({model:P(e,{completion:()=>n(y6.Completing(),`src/page/lesson.ts#completion~2`)}),commands:[kbe({goalId:e.goalId,conceptId:e.conceptId})]},`src/page/lesson.ts#ClickedSkipLesson`),SucceededSkipLesson:({outcome:t})=>n({model:P(e,{completion:()=>n(y6.Completed({outcome:t}),`src/page/lesson.ts#completion~3`)})},`src/page/lesson.ts#SucceededSkipLesson`),FailedSkipLesson:({error:t})=>n({model:P(e,{completion:()=>n(y6.NotStarted(),`src/page/lesson.ts#completion~4`),maybeError:()=>n(x(t),`src/page/lesson.ts#maybeError~7`)})},`src/page/lesson.ts#FailedSkipLesson`),ToggledTutor:()=>n({model:P(e,{tutor:e=>n(P(e,{isOpen:e=>n(!e,`src/page/lesson.ts#isOpen`)}),`src/page/lesson.ts#tutor`)})},`src/page/lesson.ts#ToggledTutor`),UpdatedTutorDraft:({value:t})=>n({model:P(e,{tutor:e=>n(P(e,{draft:()=>n(t,`src/page/lesson.ts#draft`)}),`src/page/lesson.ts#tutor~2`)})},`src/page/lesson.ts#UpdatedTutorDraft`),SubmittedTutorQuestion:()=>{let t=wd(e.tutor.draft);return t.length===0||e.tutor.isAsking?n({model:e},`src/page/lesson.ts#SubmittedTutorQuestion`):n({model:P(e,{tutor:e=>n(P(e,{draft:()=>n(``,`src/page/lesson.ts#draft~2`),isAsking:()=>n(!0,`src/page/lesson.ts#isAsking`),turns:wi({role:`Learner`,text:t})}),`src/page/lesson.ts#tutor~3`)}),commands:[Abe({goalId:e.goalId,conceptId:e.conceptId,question:t,stepContext:C(e.maybeCurrent,{onNone:()=>n(``,`src/page/lesson.ts#onNone~9`),onSome:t=>n(T6(e)?sr(w6(t.step),()=>n(``,`src/page/lesson.ts#anonymous~79`)):Pbe(t.step),`src/page/lesson.ts#onSome~9`)}),isGradedStep:E6(e)||T6(e),history:e.tutor.turns})]},`src/page/lesson.ts#SubmittedTutorQuestion`)},SucceededAskTutor:({answer:t})=>n({model:P(e,{tutor:e=>n(P(e,{isAsking:()=>n(!1,`src/page/lesson.ts#isAsking~2`),turns:wi({role:`Tutor`,text:t})}),`src/page/lesson.ts#tutor~4`)})},`src/page/lesson.ts#SucceededAskTutor`),FailedAskTutor:({error:t})=>n({model:P(e,{tutor:e=>n(P(e,{isAsking:()=>n(!1,`src/page/lesson.ts#isAsking~3`)}),`src/page/lesson.ts#tutor~5`),maybeError:()=>n(x(t),`src/page/lesson.ts#maybeError~8`)})},`src/page/lesson.ts#FailedAskTutor`),SucceededCompleteLesson:({outcome:t})=>n({model:P(e,{completion:()=>n(y6.Completed({outcome:t}),`src/page/lesson.ts#completion~5`)})},`src/page/lesson.ts#SucceededCompleteLesson`),SucceededFetchRound:({cards:t})=>{let r=Lee(w(t,e=>n(e.ideaId,`src/page/lesson.ts#anonymous~80`)));return n(P6(P(e,{round:e=>n(P(e,{load:()=>n(_6.Ready(),`src/page/lesson.ts#load~6`),cards:()=>n(t,`src/page/lesson.ts#cards`),ideaIds:()=>n(r,`src/page/lesson.ts#ideaIds`),queue:()=>n(w(r,e=>n({key:e,ideaId:e,attempt:0},`src/page/lesson.ts#anonymous~81`)),`src/page/lesson.ts#queue~8`)}),`src/page/lesson.ts#round~6`)})),`src/page/lesson.ts#SucceededFetchRound`)},FailedFetchRound:({error:t})=>n({model:P(e,{round:e=>n(P(e,{load:()=>n(_6.Failed({error:t}),`src/page/lesson.ts#load~7`)}),`src/page/lesson.ts#round~7`)})},`src/page/lesson.ts#FailedFetchRound`),ClickedRetryRound:()=>n(M6(P(e,{round:e=>n(P(e,{load:()=>n(_6.Idle(),`src/page/lesson.ts#load~8`)}),`src/page/lesson.ts#round~8`)})),`src/page/lesson.ts#ClickedRetryRound`),ClickedSkipRound:()=>n(j6(e)?F6(P(e,{maybeFlashcard:()=>n(b(),`src/page/lesson.ts#maybeFlashcard~5`)})):{model:e},`src/page/lesson.ts#ClickedSkipRound`),GotFlashcardMessage:({message:t})=>n(Gbe(e,t),`src/page/lesson.ts#GotFlashcardMessage`),SucceededSubmitFlashcard:({result:t})=>n({model:zbe(P(e,{maybeFlashcard:mr(e=>n(a3(e,t),`src/page/lesson.ts#anonymous~82`)),round:e=>n(C(e.maybeCurrent,{onNone:()=>n(e,`src/page/lesson.ts#onNone~10`),onSome:r=>n(r.attempt===0?P(e,{firstTries:wi({ideaId:r.ideaId,isRight:t.verdict===`Correct`})}):e,`src/page/lesson.ts#onSome~10`)}),`src/page/lesson.ts#round~9`)}),t)},`src/page/lesson.ts#SucceededSubmitFlashcard`),FailedSubmitFlashcard:({error:t})=>n({model:P(e,{maybeFlashcard:mr(o3),maybeError:()=>n(x(t),`src/page/lesson.ts#maybeError~9`)})},`src/page/lesson.ts#FailedSubmitFlashcard`),SucceededExplainFlashcard:({questionId:t,body:r})=>n({model:P(e,{maybeFlashcard:mr(e=>n(e.card.questionId===t?s3(e,r):e,`src/page/lesson.ts#anonymous~83`))})},`src/page/lesson.ts#SucceededExplainFlashcard`),FailedExplainFlashcard:({questionId:t})=>n({model:P(e,{maybeFlashcard:mr(e=>n(e.card.questionId===t?c3(e):e,`src/page/lesson.ts#anonymous~84`))})},`src/page/lesson.ts#FailedExplainFlashcard`),FailedCompleteLesson:({error:t})=>n({model:P(e,{completion:()=>n(y6.Failed({error:t}),`src/page/lesson.ts#completion~6`)})},`src/page/lesson.ts#FailedCompleteLesson`)}),`src/page/lesson.ts#update`),qbe=lA(I3)({read:e=>n(e.maybeQuiz,`src/page/lesson.ts#read~4`),toParentMessage:e=>n($.GotQuizMessage({message:e}),`src/page/lesson.ts#toParentMessage~2`)}),Jbe=e=>n(!T6(e)&&Cr(e.maybeCurrent,e=>n(e.step._tag===`Intro`||e.step._tag===`Read`||e.step._tag===`Connect`,`src/page/lesson.ts#anonymous~85`)),`src/page/lesson.ts#isContinueStep`),Ybe=e=>n(e instanceof HTMLElement&&(e.isContentEditable||[`INPUT`,`TEXTAREA`,`SELECT`,`BUTTON`,`A`].includes(e.tagName)),`src/page/lesson.ts#isTypingOrPressing`),Xbe=iA()(e=>n({lessonContinueKey:e({canContinue:Ky},{modelToDependencies:e=>n({canContinue:Jbe(e)},`src/page/lesson.ts#modelToDependencies`),dependenciesToStream:({canContinue:e})=>n(e?dk({target:()=>n(globalThis.document,`src/page/lesson.ts#target`),type:`keydown`,filterMapEvent:e=>n(xr($.ClickedContinue(),()=>n(e.key===`Enter`&&!e.repeat&&!e.ctrlKey&&!e.metaKey&&!Ybe(e.target),`src/page/lesson.ts#anonymous~87`)),`src/page/lesson.ts#filterMapEvent`)}):kC,`src/page/lesson.ts#dependenciesToStream`)}),pollWhileGenerating:e({isGenerating:Ky},{modelToDependencies:e=>n({isGenerating:e.load._tag===`Generating`},`src/page/lesson.ts#modelToDependencies~2`),dependenciesToStream:({isGenerating:e})=>n(e?TC(ybe).pipe(qC(1),zC(()=>n($.TickedPoll(),`src/page/lesson.ts#anonymous~88`))):kC,`src/page/lesson.ts#dependenciesToStream~2`)})},`src/page/lesson.ts#anonymous~86`)),R6=lA(s6)({read:e=>n(e.maybeFrame,`src/page/lesson.ts#read~5`),toParentMessage:O6}),Zbe=lA(_3)({read:e=>n(e.maybeFlashcard,`src/page/lesson.ts#read~6`),toParentMessage:k6}),Qbe=oA(Xbe,{lessonQuizKeyboard:qbe.keyboard,lessonFlashcardKeyboard:Zbe.keyboard,lessonFrameEvents:R6.frameEvents,lessonFrameTheme:R6.theme}),z6=(e,t)=>n(t.div([t.Class(`ml-auto flex justify-end`)],[t.button([t.Type(`button`),t.OnClick($.ClickedContinue()),t.Class(I(`Primary`,`Large`))],[e,L(`arrowRight`,``,t)])]),`src/page/lesson.ts#continueButton`),$be=e=>n(Ew(e).pipe(Mw(`Intro`,()=>n(`Why it matters`,`src/page/lesson.ts#anonymous~89`)),Mw(`Prequestion`,()=>n(`Guess first`,`src/page/lesson.ts#anonymous~90`)),Mw(`Read`,()=>n(`Learn`,`src/page/lesson.ts#anonymous~91`)),Mw(`Check`,()=>n(`Quick check`,`src/page/lesson.ts#anonymous~92`)),Mw(`WorkedExample`,()=>n(`Example`,`src/page/lesson.ts#anonymous~93`)),Mw(`Connect`,()=>n(`Big picture`,`src/page/lesson.ts#anonymous~94`)),Mw(`TeachBack`,()=>n(`Teach it back`,`src/page/lesson.ts#anonymous~95`)),Mw(`Closing`,()=>n(`From memory`,`src/page/lesson.ts#anonymous~96`)),Mw(`Summary`,()=>n(`Recap`,`src/page/lesson.ts#anonymous~97`)),Mw(`QuickCheck`,`QuickCheckDecision`,()=>n(`Quick check`,`src/page/lesson.ts#anonymous~98`)),Mw(`Flashcards`,()=>n(`Flashcards`,`src/page/lesson.ts#anonymous~99`)),Fw),`src/page/lesson.ts#stepLabel`),exe=(e,t,r)=>n(r.div([r.Class(Bz(`reveal flex flex-col gap-5 p-6 sm:p-8`))],[t===`QuestionLed`?r.p([r.Class(zz(`Info`,`self-start px-3 py-1`))],[L(`lightbulb`,``,r),`Each part starts with a question`]):r.empty,r.p([r.Class(`text-lg font-medium`)],[e.framing]),Z4(e.motivation,`text-base`,r),xi(e.objectives,{onEmpty:()=>n(r.empty,`src/page/lesson.ts#onEmpty~3`),onNonEmpty:e=>n(r.ul([r.Class(`flex flex-col gap-1.5 rounded-xl bg-muted/50 p-4 text-sm`)],w(e,e=>n(r.li([r.Class(`flex gap-2`)],[L(`target`,`mt-0.5 size-3.5 shrink-0 text-primary`,r),e]),`src/page/lesson.ts#anonymous~100`))),`src/page/lesson.ts#onNonEmpty~3`)}),z6(`Start`,r)]),`src/page/lesson.ts#introView`),txe={Analogy:`An analogy`,ConcreteExample:`An example`,FromScratch:`From the basics`,Contrast:`What it is and isn't`,Picture:`A picture`},B6=(e,t)=>n(t.div([t.Class(`flex flex-col gap-3`)],w(e.reexplain.alternatives,(e,r)=>n(t.keyed(`section`)(`alternative-${r}`,[t.Class(`reveal flex flex-col gap-2 rounded-xl border border-primary/25 bg-primary/5 p-5`)],[t.p([t.Class(`flex items-center gap-1.5 text-xs font-medium tracking-wide text-primary uppercase`)],[L(`lightbulb`,`size-3.5`,t),`Another way · ${txe[e.angle]}`]),Z4(e.body,`text-[1.02rem] leading-relaxed`,t)]),`src/page/lesson.ts#anonymous~101`))),`src/page/lesson.ts#alternativesView`),V6=(e,t)=>n(e.reexplain.alternatives.length>=C6?t.p([t.Class(`text-sm text-muted-foreground`)],[`Still stuck? Ask the tutor.`]):t.div([t.Class(`flex flex-wrap items-center gap-3`)],[t.button([t.Type(`button`),t.Disabled(e.reexplain.isLoading),t.OnClick($.ClickedExplainDifferently()),t.Class(I(`Outline`,`Medium`))],e.reexplain.isLoading?[L(`refresh`,`spinner`,t),t.span([t.Class(`shimmer-text`)],[`Finding another way`])]:[L(`lightbulb`,``,t),Di(e.reexplain.alternatives)?`Explain it another way`:`Try another way`]),C(e.reexplain.maybeError,{onNone:()=>n(t.empty,`src/page/lesson.ts#onNone~11`),onSome:()=>n(t.span([t.Class(`text-sm text-destructive`)],[`That didn't work. Try again.`]),`src/page/lesson.ts#onSome~11`)})]),`src/page/lesson.ts#explainDifferentlyButton`),nxe={label:`Guess first. Wrong is OK.`,inputLabel:`Your guess`,placeholder:`Your best guess`,submitLabel:`Show me`},rxe={label:`Try it first. Wrong is OK.`,inputLabel:`Your try`,placeholder:`Your answer, or how you would start`,submitLabel:`See the steps`},H6=(e,t,r,i)=>n(i.div([i.Class(`pop-in flex flex-col gap-3 rounded-xl border border-info/30 bg-info/5 p-5`)],[i.p([i.Class(zz(`Info`,`self-start px-3 py-1`))],[r.label]),Z4(e,`text-lg leading-relaxed`,i),i.textarea([i.Value(t),i.Rows(2),i.Autofocus(!0),i.AriaLabel(r.inputLabel),i.Placeholder(r.placeholder),i.OnInput(e=>n($.UpdatedGuess({value:e}),`src/page/lesson.ts#anonymous~102`)),i.OnKeyDownPreventDefault((e,t)=>n(xr($.SubmittedGuess(),()=>n(e===`Enter`&&(t.ctrlKey||t.metaKey),`src/page/lesson.ts#anonymous~104`)),`src/page/lesson.ts#anonymous~103`)),i.Class(Vz(`resize-none text-base leading-relaxed`))]),i.div([i.Class(`flex items-center justify-end gap-2`)],[i.button([i.Type(`button`),i.OnClick($.ClickedSkipGuess()),i.Class(I(`Ghost`,`Large`,`text-muted-foreground`))],[`Skip`]),i.button([i.Type(`button`),i.Disabled(Td(wd(t))),i.OnClick($.SubmittedGuess()),i.Class(I(`Primary`,`Large`))],[r.submitLabel,L(`arrowRight`,``,i)])])]),`src/page/lesson.ts#guessView`),U6=(e,t,r)=>n(Td(t)?r.empty:r.p([r.Class(`reveal rounded-lg bg-muted/60 px-4 py-2 text-sm text-muted-foreground`)],[r.span([r.Class(`font-medium text-foreground`)],[`${e}: `]),t]),`src/page/lesson.ts#madeGuessView`),W6=e=>n(e.load._tag===`Ready`&&e.load.hasSources,`src/page/lesson.ts#hasSources`),ixe=e=>n(Td(wd(e))?`Your source`:e.trim().replace(/\.(?:txt|md|markdown)$/i,``),`src/page/lesson.ts#documentLabel`),axe=(e,t,r)=>n(W6(e)?r.p([r.Class(`flex items-center gap-1.5 text-xs font-medium text-muted-foreground`)],t.origin===`Source`?[L(`book`,`size-3.5 text-primary/70`,r),`From your source`]:[L(`sparkles`,`size-3.5`,r),`Added by BaviTutor`]):r.empty,`src/page/lesson.ts#provenanceView`),oxe=(e,t,r)=>n(W6(e)&&t.origin===`Source`?xi(t.quotes,{onEmpty:()=>n(r.empty,`src/page/lesson.ts#onEmpty~4`),onNonEmpty:e=>n(r.details([r.Class(`group`)],[r.summary([r.Class(`flex w-fit cursor-pointer list-none items-center gap-1.5 text-sm font-medium text-muted-foreground select-none hover:text-foreground [&::-webkit-details-marker]:hidden`)],[L(`chevronDown`,`size-4 -rotate-90 transition-transform group-open:rotate-0`,r),`Show the original`]),r.div([r.Class(`mt-3 flex flex-col gap-4`)],w(e,e=>n(r.figure([r.Class(`flex flex-col gap-1.5 border-l-2 border-primary/25 pl-4`)],[r.blockquote([r.Class(`text-sm leading-relaxed whitespace-pre-line text-muted-foreground`)],[e.text]),r.figcaption([r.Class(`text-xs text-muted-foreground/80`)],[ixe(e.documentName)])]),`src/page/lesson.ts#anonymous~105`)))]),`src/page/lesson.ts#onNonEmpty~4`)}):r.empty,`src/page/lesson.ts#originalView`),sxe=(e,t,r)=>n(r.article([r.Class(Bz(`reveal flex flex-col gap-4 p-6 sm:p-8`))],[r.div([r.Class(`flex flex-col gap-1.5`)],[axe(e,t,r),r.h2([r.Class(`text-xl font-semibold tracking-tight`)],[t.heading])]),...C(t.maybePredict,{onNone:()=>n(G6(e,t,r),`src/page/lesson.ts#onNone~12`),onSome:i=>n(m6.match(e.guess,{Open:({text:e})=>n([H6(i,e,nxe,r)],`src/page/lesson.ts#Open`),Made:({text:i})=>n([U6(`Your guess`,i,r),...G6(e,t,r)],`src/page/lesson.ts#Made`)}),`src/page/lesson.ts#onSome~12`)})]),`src/page/lesson.ts#readView`),G6=(e,t,r)=>n([Z4(t.body,`text-[1.05rem] leading-relaxed`,r),oxe(e,t,r),C(e.maybeFrame,{onNone:()=>n(r.empty,`src/page/lesson.ts#onNone~13`),onSome:e=>n(r.submodel({slotId:`lesson-visual-${e.frameId}`,model:e,view:gbe,toParentMessage:O6}),`src/page/lesson.ts#onSome~13`)}),B6(e,r),r.div([r.Class(`flex flex-wrap items-center justify-between gap-3`)],[V6(e,r),z6(`Got it`,r)])],`src/page/lesson.ts#readBody`),cxe=(e,t,r)=>n(m6.match(e.guess,{Open:({text:e})=>n(r.div([r.Class(Bz(`reveal flex flex-col gap-4 p-6 sm:p-8`))],[H6(t.problem,e,rxe,r)]),`src/page/lesson.ts#Open~2`),Made:({text:i})=>n(lxe(e,t,i,r),`src/page/lesson.ts#Made~2`)}),`src/page/lesson.ts#workedExampleView`),lxe=(e,t,r,i)=>{let a=e.revealedSteps>=t.steps.length;return n(i.div([i.Class(Bz(`reveal flex flex-col gap-4 p-6 sm:p-8`))],[i.div([i.Class(`text-sm font-medium text-muted-foreground`)],[`Try each step first.`]),Z4(t.problem,`text-lg`,i),i.ol([i.Class(`flex flex-col gap-2`)],w(Vi(t.steps,e.revealedSteps),(e,t)=>n(i.keyed(`li`)(`${t}`,[i.Class(`pop-in flex gap-3 rounded-lg bg-muted/50 px-4 py-2.5`)],[i.span([i.Class(`font-mono text-xs text-muted-foreground`)],[`${t+1}`]),Z4(e,`prose-sm flex-1`,i)]),`src/page/lesson.ts#anonymous~106`))),a?i.div([i.Class(`flex flex-col gap-4`)],[U6(`Your try`,r,i),i.div([i.Class(`rounded-lg border border-success/40 bg-success/8 px-4 py-3`)],[Z4(`**Answer:** ${t.answer}`,`prose-sm`,i)]),z6(`Continue`,i)]):i.div([i.Class(`flex justify-end`)],[i.button([i.Type(`button`),i.OnClick($.ClickedRevealStep()),i.Class(I(`Secondary`,`Large`))],[`Show step ${e.revealedSteps+1} of ${t.steps.length}`])])]),`src/page/lesson.ts#workedStepsView`)},uxe=(e,t)=>n(t.div([t.Class(Bz(`reveal flex flex-col gap-4 p-6 sm:p-8`))],[t.div([t.Class(`flex items-center gap-2 font-semibold`)],[L(`network`,`size-4 text-primary`,t),`Where it fits`]),Z4(e.body,``,t),z6(`Continue`,t)]),`src/page/lesson.ts#connectView`),dxe=(e,t,r)=>n(r.div([r.Class(Bz(`reveal flex flex-col gap-4 p-6 sm:p-8`))],[r.div([r.Class(`flex items-center gap-2 font-semibold`)],[L(`graduation`,`size-4 text-primary`,r),`Teach it back`]),Z4(t.prompt,``,r),g6.match(e.teachBack,{Writing:({text:e})=>n(q6(e,!1,r),`src/page/lesson.ts#Writing~4`),Grading:({text:e})=>n(q6(e,!0,r),`src/page/lesson.ts#Grading~3`),Graded:({result:e,followUp:t})=>n(r.div([r.Class(`pop-in flex flex-col gap-4`)],[r.div([r.Class(`rounded-xl border bg-muted/40 p-4`)],[Z4(e.feedback,`prose-sm`,r),xi(e.ideaUnits,{onEmpty:()=>n(r.empty,`src/page/lesson.ts#onEmpty~5`),onNonEmpty:e=>n(r.ul([r.Class(`mt-3 flex flex-col gap-1 text-sm`)],w(e,e=>n(r.li([r.Class(`flex items-start gap-2`)],[e.status===`Present`?L(`check`,`mt-0.5 size-3.5 shrink-0 text-success`,r):e.status===`Partial`?L(`circleDashed`,`mt-0.5 size-3.5 shrink-0 text-amber-500`,r):L(`x`,`mt-0.5 size-3.5 shrink-0 text-destructive`,r),e.idea]),`src/page/lesson.ts#anonymous~107`))),`src/page/lesson.ts#onNonEmpty~5`)})]),fxe(e.noviceQuestion,t,r),h6.match(t,{Writing:()=>n(r.empty,`src/page/lesson.ts#Writing~5`),Sending:()=>n(r.empty,`src/page/lesson.ts#Sending~2`),Answered:()=>n(z6(`Continue`,r),`src/page/lesson.ts#Answered~4`),Skipped:()=>n(z6(`Continue`,r),`src/page/lesson.ts#Skipped~2`)})]),`src/page/lesson.ts#Graded~3`)})]),`src/page/lesson.ts#teachBackView`),fxe=(e,t,r)=>n(r.div([r.Class(`flex flex-col gap-3 rounded-xl border border-dashed p-4`)],[r.p([r.Class(`text-sm text-muted-foreground`)],[`A beginner asks:`]),r.p([r.Class(`max-w-[85%] self-start rounded-xl bg-muted/60 px-3 py-2 font-medium`)],[e]),h6.match(t,{Writing:({text:e})=>n(K6(e,!1,r),`src/page/lesson.ts#Writing~6`),Sending:({text:e})=>n(K6(e,!0,r),`src/page/lesson.ts#Sending~3`),Answered:({text:e,reaction:t})=>n(r.div([r.Class(`flex flex-col gap-3`)],[r.p([r.Class(`max-w-[85%] self-end rounded-xl bg-primary/10 px-3 py-2 text-sm`)],[e]),r.p([r.Class(`pop-in max-w-[85%] self-start rounded-xl bg-muted/60 px-3 py-2 text-sm`)],[t.reaction]),C(t.maybeCorrection,{onNone:()=>n(r.empty,`src/page/lesson.ts#onNone~14`),onSome:e=>n(r.div([r.Class(`pop-in flex items-start gap-2 rounded-lg border border-amber-500/40 bg-amber-500/8 px-3 py-2 text-sm`)],[L(`alert`,`mt-0.5 size-4 shrink-0`,r),r.div([r.Class(`flex-1`)],[r.span([r.Class(`font-medium`)],[`A quick fix: `]),e])]),`src/page/lesson.ts#onSome~14`)})]),`src/page/lesson.ts#Answered~5`),Skipped:()=>n(r.empty,`src/page/lesson.ts#Skipped~3`)})]),`src/page/lesson.ts#noviceView`),K6=(e,t,r)=>n(r.div([r.Class(`flex flex-col gap-2`)],[r.textarea([r.Value(e),r.Rows(3),r.Autofocus(!0),r.Disabled(t),r.AriaLabel(`Your answer to the beginner`),r.Placeholder(`Answer them`),r.OnInput(e=>n($.UpdatedFollowUp({value:e}),`src/page/lesson.ts#anonymous~108`)),r.OnKeyDownPreventDefault((e,t)=>n(xr($.SubmittedFollowUp(),()=>n(e===`Enter`&&(t.ctrlKey||t.metaKey),`src/page/lesson.ts#anonymous~110`)),`src/page/lesson.ts#anonymous~109`)),r.Class(Vz(`resize-none text-base`))]),r.div([r.Class(`flex items-center justify-end gap-2`)],[r.button([r.Type(`button`),r.OnClick($.ClickedSkipFollowUp()),r.Class(I(`Ghost`,`Large`,`text-muted-foreground`))],[`Skip`]),r.button([r.Type(`button`),r.Disabled(t||wd(e).length<b6),r.OnClick($.SubmittedFollowUp()),r.Class(I(`Primary`,`Large`))],[t?L(`refresh`,`spinner`,r):r.empty,t?`Sending…`:`Reply`])])]),`src/page/lesson.ts#followUpInput`),q6=(e,t,r)=>n(r.div([r.Class(`flex flex-col gap-3`)],[r.textarea([r.Value(e),r.Rows(5),r.Disabled(t),r.Placeholder(`Explain it in your own words…`),r.OnInput(e=>n($.UpdatedTeachBack({value:e}),`src/page/lesson.ts#anonymous~111`)),r.Class(Vz(`resize-y text-base leading-relaxed`))]),r.div([r.Class(`flex justify-end`)],[r.button([r.Type(`button`),r.Disabled(t||wd(e).length<10),r.OnClick($.SubmittedTeachBack()),r.Class(I(`Primary`,`Large`))],[t?L(`refresh`,`spinner`,r):r.empty,t?`Checking…`:`Check`])])]),`src/page/lesson.ts#teachBackInput`),pxe=(e,t,r)=>n(r.div([r.Class(Bz(`reveal flex flex-col gap-5 p-6 sm:p-8`))],[r.div([r.Class(`flex items-center gap-2 text-lg font-semibold`)],[L(`sparkles`,`size-5 text-primary`,r),`Key points`]),r.ul([r.Class(`flex flex-col gap-2`)],w(t.points,e=>n(r.li([r.Class(`flex gap-2`)],[L(`check`,`mt-1 size-4 shrink-0 text-success`,r),Z4(e,`prose-sm flex-1`,r)]),`src/page/lesson.ts#anonymous~112`))),y6.match(e.completion,{NotStarted:()=>n(r.empty,`src/page/lesson.ts#NotStarted`),Completing:()=>n(r.p([r.Class(`shimmer-text text-sm`)],[`Scheduling your first review…`]),`src/page/lesson.ts#Completing`),Failed:({error:e})=>n(r.p([r.Class(`text-sm text-destructive`)],[e]),`src/page/lesson.ts#Failed`),Completed:({outcome:e})=>n(r.div([r.Class(F(`pop-in flex items-start gap-3 rounded-xl border p-4`,e.criterionMet?`border-success/40 bg-success/8`:`border-amber-500/40 bg-amber-500/8`))],[L(e.criterionMet?`brain`:`refresh`,`mt-0.5 size-5 shrink-0`,r),r.p([r.Class(`text-sm`)],[e.message])]),`src/page/lesson.ts#Completed`)}),J6(e,r)]),`src/page/lesson.ts#summaryView`),J6=(e,t)=>n(t.div([t.Class(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`)],[t.a([t.Href(Az({goalId:e.goalId,conceptId:e.conceptId})),t.Class(I(`Outline`,`Large`))],[L(`fileText`,``,t),`Read the notes`]),t.a([t.Href(Oz({goalId:e.goalId})),t.Class(I(`Primary`,`Large`))],[`Back to map`,L(`arrowRight`,``,t)])]),`src/page/lesson.ts#finishActions`),mxe=(e,t,r)=>n(C(e.maybeQuiz,{onNone:()=>n(r.empty,`src/page/lesson.ts#onNone~15`),onSome:i=>n(r.div([r.Class(`flex flex-col gap-3`)],[t._tag===`QuickCheck`?r.p([r.Class(zz(`Warning`,`reveal px-3 py-1`))],[`Get these right to skip the lesson.`]):r.empty,t._tag===`Prequestion`?r.p([r.Class(zz(`Info`,`reveal px-3 py-1`))],[`Just guess. Wrong is OK.`]):r.empty,r.submodel({slotId:`quiz-${i.question.id}`,model:i,view:V3(`Continue`),toParentMessage:e=>n($.GotQuizMessage({message:e}),`src/page/lesson.ts#toParentMessage~3`)}),S(I6(e))&&S(e.maybeLastRead)?r.div([r.Class(`reveal flex flex-col gap-3`)],[B6(e,r),V6(e,r)]):r.empty]),`src/page/lesson.ts#onSome~15`)}),`src/page/lesson.ts#quizView`),hxe=(e,t)=>{let r=ki(e.quickCheckVerdicts)&&pa(e.quickCheckVerdicts,e=>n(e===`Correct`,`src/page/lesson.ts#anonymous~113`));return n(y6.match(e.completion,{Completed:({outcome:r})=>n(t.div([t.Class(Bz(`reveal flex flex-col gap-4 p-6 sm:p-8`))],[t.div([t.Class(`flex items-center gap-2 text-lg font-semibold`)],[L(`check`,`size-5 text-success`,t),`Skipped`]),t.p([t.Class(`text-sm text-muted-foreground`)],[r.message]),J6(e,t)]),`src/page/lesson.ts#Completed~2`),NotStarted:()=>n(Y6(e,r,!1,t),`src/page/lesson.ts#NotStarted~2`),Completing:()=>n(Y6(e,r,!0,t),`src/page/lesson.ts#Completing~2`),Failed:()=>n(Y6(e,r,!1,t),`src/page/lesson.ts#Failed~2`)}),`src/page/lesson.ts#quickCheckDecisionView`)},Y6=(e,t,r,i)=>n(i.div([i.Class(Bz(`reveal flex flex-col gap-4 p-6 sm:p-8`))],[i.div([i.Class(`flex items-center gap-2 text-lg font-semibold`)],[L(t?`sparkles`:`book`,`size-5 text-primary`,i),t?`You already know this`:`Let's learn it`]),i.p([i.Class(`text-sm text-muted-foreground`)],[t?`All correct. If you skip, we'll still review it later.`:`You missed some. The lesson is short.`]),i.div([i.Class(`flex justify-end gap-2`)],t?[i.button([i.Type(`button`),i.OnClick($.ClickedContinue()),i.Class(I(`Ghost`,`Large`))],[`Learn it anyway`]),i.button([i.Type(`button`),i.Disabled(r),i.OnClick($.ClickedSkipLesson()),i.Class(I(`Primary`,`Large`))],[r?L(`refresh`,`spinner`,i):L(`check`,``,i),`Skip this lesson`])]:[i.button([i.Type(`button`),i.OnClick($.ClickedContinue()),i.Class(I(`Primary`,`Large`))],[`Start lesson`,L(`arrowRight`,``,i)])]),C(e.maybeError,{onNone:()=>n(i.empty,`src/page/lesson.ts#onNone~16`),onSome:e=>n(i.p([i.Class(`text-sm text-destructive`)],[e]),`src/page/lesson.ts#onSome~16`)})]),`src/page/lesson.ts#quickCheckChoice`),gxe=(e,t)=>n(t.ol([t.AriaLabel(`Card ${Math.min(e.ideaIds.length,e.firstTries.length+1)} of ${e.ideaIds.length}`),t.Class(`flex flex-wrap items-center justify-center gap-1.5`)],w(e.ideaIds,r=>{let i=Yi(e.firstTries,e=>n(e.ideaId===r,`src/page/lesson.ts#anonymous~115`)),a=Cr(e.maybeCurrent,e=>n(e.ideaId===r&&e.attempt===0,`src/page/lesson.ts#anonymous~116`));return n(t.keyed(`li`)(r,[t.Class(F(`size-2.5 rounded-full transition-colors duration-300`,C(i,{onNone:()=>n(a?`bg-primary`:`bg-muted`,`src/page/lesson.ts#onNone~17`),onSome:e=>n(e.isRight?`bg-success`:`bg-amber-500`,`src/page/lesson.ts#onSome~17`)})))],[]),`src/page/lesson.ts#anonymous~114`)})),`src/page/lesson.ts#roundDotsView`),_xe=(e,t)=>n(_6.match(e.round.load,{Failed:()=>n(t.div([t.Class(Bz(`reveal flex flex-col items-center gap-4 p-8 text-center`))],[t.p([t.Class(`font-medium`)],[`Your cards didn't load.`]),t.div([t.Class(`flex flex-wrap justify-center gap-2`)],[t.button([t.Type(`button`),t.OnClick($.ClickedSkipRound()),t.Class(I(`Ghost`,`Large`))],[`Skip for now`]),t.button([t.Type(`button`),t.OnClick($.ClickedRetryRound()),t.Class(I(`Primary`,`Large`))],[L(`refresh`,``,t),`Try again`])])]),`src/page/lesson.ts#Failed~3`),Idle:()=>n(X6(t),`src/page/lesson.ts#Idle`),Loading:()=>n(X6(t),`src/page/lesson.ts#Loading`),Ready:()=>n(X6(t),`src/page/lesson.ts#Ready`)}),`src/page/lesson.ts#roundWaitingView`),X6=e=>n(e.div([e.Class(Bz(`flex flex-col items-center gap-4 p-10 text-center`))],[L(`layers`,`size-6 text-primary`,e),e.p([e.Class(`shimmer-text text-base font-medium`)],[`Getting your cards ready…`])]),`src/page/lesson.ts#roundLoadingView`),vxe=(e,t)=>n(t.div([t.Class(`flex flex-col gap-4`)],[Di(e.round.ideaIds)?t.empty:gxe(e.round,t),C(e.maybeFlashcard,{onNone:()=>n(_xe(e,t),`src/page/lesson.ts#onNone~18`),onSome:e=>n(t.submodel({slotId:`flashcard-${e.card.questionId}`,model:e,view:x3(`Continue`),toParentMessage:k6}),`src/page/lesson.ts#onSome~18`)})]),`src/page/lesson.ts#flashcardsView`),yxe=(e,t,r)=>n(Ew(t.step).pipe(Ow(),Mw(`Intro`,t=>n(exe(t,e.load._tag===`Ready`?e.load.style:`Guided`,r),`src/page/lesson.ts#anonymous~117`)),Mw(`Read`,t=>n(sxe(e,t,r),`src/page/lesson.ts#anonymous~118`)),Mw(`WorkedExample`,t=>n(cxe(e,t,r),`src/page/lesson.ts#anonymous~119`)),Mw(`Connect`,e=>n(uxe(e,r),`src/page/lesson.ts#anonymous~120`)),Mw(`TeachBack`,t=>n(dxe(e,t,r),`src/page/lesson.ts#anonymous~121`)),Mw(`Summary`,t=>n(pxe(e,t,r),`src/page/lesson.ts#anonymous~122`)),Mw(`Prequestion`,`Check`,`Closing`,`QuickCheck`,t=>n(mxe(e,t,r),`src/page/lesson.ts#anonymous~123`)),Mw(`QuickCheckDecision`,()=>n(hxe(e,r),`src/page/lesson.ts#anonymous~124`)),Mw(`Flashcards`,()=>n(vxe(e,r),`src/page/lesson.ts#anonymous~125`)),Fw),`src/page/lesson.ts#stepView`),bxe=(e,t)=>{let r=e.completedSteps+e.queue.length+ +!!S(e.maybeCurrent),i=r===0?0:Math.round(e.completedSteps/r*100);return n(t.div([t.Class(`h-1 w-full overflow-hidden rounded-full bg-muted`)],[t.div([t.Class(`h-full rounded-full bg-primary transition-[width] duration-500`),t.Style({width:`${i}%`})])]),`src/page/lesson.ts#progressView`)},xxe=e=>n(e.div([e.Class(Bz(`flex flex-col items-center gap-4 p-10 text-center`))],[e.span([e.Class(`flex size-12 items-center justify-center rounded-2xl bg-primary/12 text-primary`)],[L(`book`,`size-6`,e)]),e.p([e.Class(`shimmer-text text-lg font-medium`)],[`Writing your lesson…`]),e.p([e.Class(`max-w-md text-sm text-muted-foreground`)],[`This takes about a minute.`])]),`src/page/lesson.ts#generatingView`),Sxe=e=>n(e.p([e.Class(`text-center text-sm text-muted-foreground`)],[`Answer from memory. The tutor can help after.`]),`src/page/lesson.ts#recallNoteView`),Cxe=(e,t)=>n(Fbe(e)?Sxe(t):e.tutor.isOpen?t.section([t.Class(Bz(`pop-in flex flex-col gap-3 p-4`))],[t.div([t.Class(`flex items-center justify-between`)],[t.div([t.Class(`flex items-center gap-2 text-sm font-semibold`)],[L(`sparkles`,`size-4 text-primary`,t),`Tutor`]),t.button([t.Type(`button`),t.AriaLabel(`Close tutor`),t.OnClick($.ToggledTutor()),t.Class(I(`Ghost`,`IconSmall`))],[L(`x`,``,t)])]),xi(e.tutor.turns,{onEmpty:()=>n(t.p([t.Class(`text-sm text-muted-foreground`)],[E6(e)||T6(e)?`Stuck? I'll give a hint, not the answer.`:`Ask anything about this step.`]),`src/page/lesson.ts#onEmpty~6`),onNonEmpty:e=>n(t.ol([t.Class(`flex max-h-96 flex-col gap-3 overflow-y-auto`)],w(e,(e,r)=>n(t.keyed(`li`)(`${r}`,[t.Class(F(`rounded-xl px-3 py-2 text-sm`,e.role===`Learner`?`self-end bg-primary/10`:`self-start bg-muted/60`))],[Z4(e.text,`prose-sm`,t)]),`src/page/lesson.ts#anonymous~126`))),`src/page/lesson.ts#onNonEmpty~6`)}),e.tutor.isAsking?t.p([t.Class(`shimmer-text text-sm`)],[`Thinking…`]):t.empty,t.form([t.OnSubmit($.SubmittedTutorQuestion()),t.Class(`flex items-end gap-2`)],[t.textarea([t.Value(e.tutor.draft),t.Rows(2),t.Placeholder(`Ask a question…`),t.OnInput(e=>n($.UpdatedTutorDraft({value:e}),`src/page/lesson.ts#anonymous~127`)),t.OnKeyDownPreventDefault((e,t)=>n(xr($.SubmittedTutorQuestion(),()=>n(e===`Enter`&&!t.shiftKey,`src/page/lesson.ts#anonymous~129`)),`src/page/lesson.ts#anonymous~128`)),t.Class(Vz(`resize-none text-sm`))]),t.button([t.Type(`submit`),t.AriaLabel(`Send`),t.Disabled(e.tutor.isAsking),t.Class(I(`Primary`,`Icon`))],[L(`arrowUp`,``,t)])])]):t.div([t.Class(`flex justify-center`)],[t.button([t.Type(`button`),t.OnClick($.ToggledTutor()),t.Class(I(`Ghost`,`Small`,`text-muted-foreground`))],[L(`sparkles`,``,t),`Ask the tutor`])]),`src/page/lesson.ts#tutorView`),wxe=qD((e,t)=>n(t.div([t.Class(`mx-auto flex w-full max-w-3xl flex-col gap-5 px-5 pt-6 pb-24`)],[t.div([t.Class(`flex items-center justify-between gap-4`)],[t.a([t.Href(Oz({goalId:e.goalId})),t.Class(`inline-flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground`)],[L(`arrowLeft`,`size-4`,t),`Map`]),C(e.maybeCurrent,{onNone:()=>n(t.empty,`src/page/lesson.ts#onNone~19`),onSome:e=>n(t.span([t.Class(`text-sm text-muted-foreground`)],[$be(e.step)]),`src/page/lesson.ts#onSome~19`)})]),p6.match(e.load,{Loading:()=>n(t.div([t.Class(`h-64 animate-pulse rounded-xl bg-muted/60`)]),`src/page/lesson.ts#Loading~2`),Generating:()=>n(xxe(t),`src/page/lesson.ts#Generating`),Failed:({error:e})=>n(t.div([t.Class(Bz(`flex flex-col gap-3 p-6`))],[t.p([t.Class(`font-medium`)],[`We couldn't write this lesson.`]),t.p([t.Class(`text-sm text-muted-foreground`)],[e])]),`src/page/lesson.ts#Failed~4`),Ready:({title:r,estimatedMinutes:i})=>n(t.div([t.Class(`flex flex-col gap-5`)],[t.div([t.Class(`flex flex-col gap-3`)],[t.div([t.Class(`flex items-end justify-between gap-3`)],[t.h1([t.Class(`text-2xl font-semibold tracking-tight`)],[r]),t.span([t.Class(zz(`Neutral`))],[L(`clock`,``,t),`${i} min`])]),bxe(e,t)]),C(e.maybeError,{onNone:()=>n(t.empty,`src/page/lesson.ts#onNone~20`),onSome:e=>n(t.p([t.Role(`alert`),t.Class(`text-sm text-destructive`)],[e]),`src/page/lesson.ts#onSome~20`)}),Di(e.skipped)||e.completedSteps!==e.skipped.length?t.empty:t.div([t.Class(`reveal flex items-center justify-between gap-3 rounded-lg bg-muted/60 px-4 py-2 text-sm text-muted-foreground`)],[t.span([],[`Picked up where you left off.`]),t.button([t.Type(`button`),t.OnClick($.ClickedStartOver()),t.Class(I(`Ghost`,`Small`))],[L(`refresh`,``,t),`Start over`])]),C(e.maybeCurrent,{onNone:()=>n(t.empty,`src/page/lesson.ts#onNone~21`),onSome:r=>n(t.keyed(`div`)(r.key,[],[yxe(e,r,t)]),`src/page/lesson.ts#onSome~21`)}),Cxe(e,t)]),`src/page/lesson.ts#Ready~2`)})]),`src/page/lesson.ts#anonymous~130`)),Txe=e=>n(e.load._tag===`Ready`?`${e.load.title} · Lesson`:`Lesson · BaviTutor`,`src/page/lesson.ts#pageTitle`),Exe={Article:`newspaper`,Video:`circlePlay`,Course:`graduation`,Docs:`book`,Book:`library`},Z6={Article:`Article`,Video:`Video`,Course:`Course`,Docs:`Docs`,Book:`Book`},Q6=e=>n((e.replace(/^[a-z][a-z0-9+.-]*:\/\//i,``).split(/[/?#]/)[0]??e).replace(/^www\./,``).toLowerCase(),`src/component/resources.ts#hostOf`),Dxe=e=>n(/^https?:\/\//i.test(e),`src/component/resources.ts#isWebUrl`),Oxe=(e,t,r)=>n(r.keyed(`li`)(e.url,[r.Class(`min-w-0`)],[r.a([r.Href(e.url),r.Target(`_blank`),r.Rel(`noopener noreferrer`),r.Title(`From ${e.origin}`),r.Class(F(`group flex min-w-0 items-start gap-3 rounded-lg transition-colors hover:bg-accent/60`,t?`-mx-2 px-2 py-1.5`:`-mx-3 px-3 py-2.5`))],[r.span([r.Class(F(`flex shrink-0 items-center justify-center rounded-md bg-primary/10 text-primary`,t?`mt-px size-6`:`mt-0.5 size-8`))],[L(Exe[e.kind],t?`size-3.5`:`size-4`,r)]),r.span([r.Class(`flex min-w-0 flex-1 flex-col gap-0.5`)],[r.span([r.Class(F(`font-medium group-hover:text-primary`,t?`truncate text-sm`:`text-[15px] leading-snug`))],[e.title]),r.span([r.Class(F(`text-xs text-muted-foreground`,t?`truncate`:`break-words`))],[t?`${Z6[e.kind]} · ${Q6(e.url)}`:`${Z6[e.kind]} · ${Q6(e.url)} · ${e.origin}`])]),L(`external`,`mt-1 size-3.5 shrink-0 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100`,r),r.span([r.Class(`sr-only`)],[`(opens in a new tab)`])])]),`src/component/resources.ts#resourceView`),kxe=(e,t,r,i)=>n(xi(da(e,e=>n(Dxe(e.url),`src/component/resources.ts#anonymous`)),{onEmpty:()=>n(i.empty,`src/component/resources.ts#onEmpty`),onNonEmpty:e=>n(i.ul([i.AriaLabel(r),i.Class(F(`flex flex-col`,t?`gap-0.5`:`gap-1`))],w(e,e=>n(Oxe(e,t,i),`src/component/resources.ts#anonymous~2`))),`src/component/resources.ts#onNonEmpty`)}),`src/component/resources.ts#resourceListView`),$6=pT({Loading:{},Failed:{error:O},Ready:{notes:DI,fetchedAt:k}}),Axe=A({goalId:O,conceptId:O,load:$6}),e8=fT({SucceededFetchNotes:{notes:DI,fetchedAt:k},FailedFetchNotes:{error:O},ClickedRetry:{}}),t8=N(`FetchNotes`,{args:{goalId:O,conceptId:O},messages:[e8.SucceededFetchNotes,e8.FailedFetchNotes],execute:({goalId:e,conceptId:t})=>n(D(function*(){let r=yield*(yield*XR).learning.notes({params:{goalId:nI.make(e),conceptId:rI.make(t)}}),i=yield*hd;return n(e8.SucceededFetchNotes({notes:r,fetchedAt:i}),`src/page/notes.ts#anonymous`)}).pipe(af(`ConceptNotFound`,()=>n(T(e8.FailedFetchNotes({error:`That concept is not on this map any more.`})),`src/page/notes.ts#anonymous~2`)),rf(e=>n(T(e8.FailedFetchNotes({error:QR(e)})),`src/page/notes.ts#anonymous~3`))),`src/page/notes.ts#execute`)}),jxe=(e,t)=>n({model:{goalId:e,conceptId:t,load:$6.Loading()},commands:[t8({goalId:e,conceptId:t})]},`src/page/notes.ts#init`),Mxe=(e,t)=>n(e8.match(t,{SucceededFetchNotes:({notes:t,fetchedAt:r})=>n({model:P(e,{load:()=>n($6.Ready({notes:t,fetchedAt:r}),`src/page/notes.ts#load`)})},`src/page/notes.ts#SucceededFetchNotes`),FailedFetchNotes:({error:t})=>n({model:P(e,{load:()=>n($6.Failed({error:t}),`src/page/notes.ts#load~2`)})},`src/page/notes.ts#FailedFetchNotes`),ClickedRetry:()=>n({model:P(e,{load:()=>n($6.Loading(),`src/page/notes.ts#load~3`)}),commands:[t8({goalId:e.goalId,conceptId:e.conceptId})]},`src/page/notes.ts#ClickedRetry`)}),`src/page/notes.ts#update`),Nxe=36e5,Pxe={Unknown:{label:`Not studied yet`,tone:`Neutral`,note:``},Assumed:{label:`Assumed known`,tone:`Neutral`,note:`You know what comes after it.`},Known:{label:`Known before`,tone:`Success`,note:``},Shaky:{label:`Shaky`,tone:`Warning`,note:`A quick check comes first.`},InLesson:{label:`In a lesson`,tone:`Primary`,note:`Started, not passed.`},Acquired:{label:`Learned`,tone:`Success`,note:`Reviews will make it stick.`},Consolidating:{label:`In review`,tone:`Info`,note:``},Mastered:{label:`Mastered`,tone:`Success`,note:`Recalled on two later days.`},Durable:{label:`Durable`,tone:`Success`,note:`Should last a month without review.`},Relearning:{label:`Relearning`,tone:`Warning`,note:`Slipped, so it comes back sooner.`}},Fxe=e=>n(new Date(e).toLocaleDateString(`en-US`,{weekday:`short`,month:`short`,day:`numeric`}),`src/page/notes.ts#formatDay`),Ixe=(e,t)=>{let r=(e-t)/Nxe;if(r<1)return n(`within the hour`,`src/page/notes.ts#fromNow`);if(r<36)return n(`in about ${Math.round(r)} hours`,`src/page/notes.ts#fromNow`);let i=Math.round(r/24);return n(i<60?`in ${i} days`:`in about ${Math.round(i/30)} months`,`src/page/notes.ts#fromNow`)},n8=`text-xs font-medium tracking-wide text-muted-foreground uppercase`,r8=(e,t,r,i)=>n(i.section([i.AriaLabelledBy(`notes-${e}`),i.Class(`flex flex-col gap-5 border-t py-8 last:pb-0`)],[i.h2([i.Id(`notes-${e}`),i.Class(`text-lg font-semibold tracking-tight`)],[t]),...r]),`src/page/notes.ts#sectionView`),Lxe=(e,t,r)=>{let i=Pxe[e.mastery];return n(r.dl([r.Class(`grid gap-4 rounded-xl bg-muted/50 px-4 py-3.5 text-sm sm:grid-cols-2 sm:px-5`)],[r.div([r.Class(`flex flex-col gap-1`)],[r.dt([r.Class(n8)],[`Your status`]),r.dd([r.Class(`flex flex-wrap items-center gap-x-2 gap-y-1`)],[r.span([r.Class(zz(i.tone,i.tone===`Neutral`?`border bg-background`:``))],[i.label]),i.note.length>0?r.span([r.Class(`text-muted-foreground`)],[i.note]):r.empty])]),r.div([r.Class(`flex flex-col gap-1`)],[r.dt([r.Class(n8)],[`Next review`]),r.dd([r.Class(`flex flex-wrap items-center gap-x-2 gap-y-1`)],C(e.maybeNextReviewAt,{onNone:()=>n([r.span([r.Class(`text-muted-foreground`)],[fI(e.mastery)?`Not scheduled`:`After you pass the lesson`])],`src/page/notes.ts#onNone`),onSome:e=>n(e<=t?[r.span([r.Class(`font-medium`)],[`Due now`]),r.a([r.Href(Mz()),r.Class(`font-medium text-primary underline-offset-4 hover:underline`)],[`Review it`])]:[r.time([r.Datetime(new Date(e).toISOString()),r.Class(`font-medium`)],[Fxe(e)]),r.span([r.Class(`text-muted-foreground`)],[Ixe(e,t)])],`src/page/notes.ts#onSome`)}))])]),`src/page/notes.ts#statusView`)},Rxe=(e,t,r)=>n(r.header([r.Class(`flex flex-col gap-5 pb-8`)],[r.div([r.Class(`flex flex-col gap-2`)],[r.p([r.Class(F(n8,`flex items-center gap-1.5`))],[L(`fileText`,`size-3.5`,r),`Notes`]),r.h1([r.Id(`notes-title`),r.Class(`text-3xl leading-tight font-semibold tracking-tight text-balance`)],[e.concept.title]),r.p([r.Class(`text-base leading-relaxed text-muted-foreground`)],[e.concept.summary])]),Lxe(e,t,r)]),`src/page/notes.ts#headerView`),zxe=(e,t)=>n(xi(e,{onEmpty:()=>n(t.empty,`src/page/notes.ts#onEmpty`),onNonEmpty:e=>n(r8(`key-ideas`,`Key ideas`,[t.ol([t.Class(`flex flex-col gap-3`)],w(e,(e,r)=>n(t.li([t.Class(`flex gap-3`)],[t.span([t.AriaHidden(!0),t.Class(`mt-0.5 flex size-6 shrink-0 items-center justify-center rounded-full bg-primary/12 text-xs font-semibold text-primary tabular-nums`)],[`${r+1}`]),Z4(e,`min-w-0 flex-1 prose-p:my-0`,t)]),`src/page/notes.ts#anonymous~4`)))],t),`src/page/notes.ts#onNonEmpty`)}),`src/page/notes.ts#keyIdeasView`),i8=(e,t)=>n(t.summary([t.Class(`flex cursor-pointer list-none items-center gap-1.5 text-sm font-medium text-muted-foreground select-none hover:text-foreground [&::-webkit-details-marker]:hidden`)],[L(`chevronDown`,`size-4 shrink-0 -rotate-90 transition-transform group-open:rotate-0`,t),...e]),`src/page/notes.ts#disclosureSummary`),a8=6,Bxe=e=>n(e.trim().length===0?`Your source`:e.trim().replace(/\.(?:txt|md|markdown)$/i,``),`src/page/notes.ts#documentLabel`),o8=(e,t,r,i)=>n(i.keyed(`li`)(e.id,[i.Class(`flex gap-3`)],[i.span([i.AriaHidden(!0),i.Class(`mt-0.5 flex size-6 shrink-0 items-center justify-center rounded-full bg-primary/12 text-xs font-semibold text-primary tabular-nums`)],[`${t+1}`]),i.div([i.Class(`flex min-w-0 flex-1 flex-col gap-2`)],[Z4(e.statement,`min-w-0 prose-p:my-0`,i),r&&e.origin===`Source`&&e.quote.length>0?i.figure([i.Class(`flex flex-col gap-1 border-l-2 border-primary/25 pl-3`)],[i.blockquote([i.Class(`text-sm leading-relaxed whitespace-pre-line text-muted-foreground`)],[e.quote]),i.figcaption([i.Class(`text-xs text-muted-foreground/80`)],[Bxe(e.documentName)])]):i.empty,r&&e.origin===`Added`?i.p([i.Class(`flex items-center gap-1.5 text-xs text-muted-foreground`)],[L(`sparkles`,`size-3`,i),`Added by BaviTutor`]):i.empty])]),`src/page/notes.ts#ideaView`),Vxe=(e,t)=>n(xi(e.ideas,{onEmpty:()=>n(t.empty,`src/page/notes.ts#onEmpty~2`),onNonEmpty:r=>{let[i,a]=ra(r,a8);return n(r8(`key-ideas`,`Key ideas`,[e.hasSources&&r.some(e=>n(e.origin===`Source`,`src/page/notes.ts#anonymous~5`))?t.p([t.Class(`-mt-2 text-sm text-muted-foreground`)],[`With the words from your source.`]):t.empty,t.ol([t.Class(`flex flex-col gap-4`)],w(i,(r,i)=>n(o8(r,i,e.hasSources,t),`src/page/notes.ts#anonymous~6`))),xi(a,{onEmpty:()=>n(t.empty,`src/page/notes.ts#onEmpty~3`),onNonEmpty:r=>n(t.details([t.Class(`group`)],[i8([t.span([],[`Show ${r.length} more`])],t),t.ol([t.Class(`mt-4 flex flex-col gap-4`)],w(r,(r,i)=>n(o8(r,a8+i,e.hasSources,t),`src/page/notes.ts#anonymous~7`)))]),`src/page/notes.ts#onNonEmpty~3`)})],t),`src/page/notes.ts#onNonEmpty~2`)}}),`src/page/notes.ts#ideasView`),Hxe=(e,t,r)=>n(r.keyed(`article`)(`chunk-${t}`,[r.Class(`flex flex-col gap-3`)],[r.h3([r.Class(`text-base font-semibold leading-snug`)],[Q4(e.heading,``,r)]),Z4(e.gist,`prose-sm sm:prose-base`,r),e.gist.trim()===e.body.trim()?r.empty:r.details([r.Class(`group`)],[i8([r.span([],[`Read more`])],r),r.div([r.Class(`mt-3 border-l-2 border-primary/25 pl-4`)],[Z4(e.body,`prose-sm`,r)])])]),`src/page/notes.ts#chunkView`),Uxe=(e,t)=>n(xi(e,{onEmpty:()=>n(t.empty,`src/page/notes.ts#onEmpty~4`),onNonEmpty:e=>n(r8(`explained`,`Step by step`,[t.div([t.Class(`flex flex-col gap-8`)],w(e,(e,r)=>n(Hxe(e,r,t),`src/page/notes.ts#anonymous~8`)))],t),`src/page/notes.ts#onNonEmpty~4`)}),`src/page/notes.ts#chunksView`),Wxe=(e,t,r)=>n(r.keyed(`details`)(`example-${t}`,[r.Class(`group rounded-xl border px-4 py-3 open:pb-4`)],[i8([r.span([r.Class(`text-foreground`)],[`Example ${t+1}`])],r),r.div([r.Class(`mt-3 flex flex-col gap-3`)],[Z4(e.problem,`prose-sm`,r),r.ol([r.Class(`flex list-decimal flex-col gap-1.5 pl-5 text-sm`)],w(e.steps,e=>n(r.li([r.Class(`pl-1 marker:text-muted-foreground`)],[Z4(e,`prose-sm prose-p:my-0`,r)]),`src/page/notes.ts#anonymous~9`))),r.div([r.Class(`flex flex-wrap items-baseline gap-x-2 rounded-lg bg-success/8 px-3 py-2 text-sm`)],[r.span([r.Class(`font-medium text-success`)],[`Answer`]),Q4(e.answer,`min-w-0`,r)])])]),`src/page/notes.ts#workedExampleView`),Gxe=(e,t)=>n(xi(e,{onEmpty:()=>n(t.empty,`src/page/notes.ts#onEmpty~5`),onNonEmpty:e=>n(r8(`examples`,`Worked examples`,[t.p([t.Class(`-mt-2 text-sm text-muted-foreground`)],[`Try each one first.`]),t.div([t.Class(`flex flex-col gap-3`)],w(e,(e,r)=>n(Wxe(e,r,t),`src/page/notes.ts#anonymous~10`)))],t),`src/page/notes.ts#onNonEmpty~5`)}),`src/page/notes.ts#workedExamplesView`),Kxe=(e,t)=>n(xi(e,{onEmpty:()=>n(t.empty,`src/page/notes.ts#onEmpty~6`),onNonEmpty:e=>n(r8(`traps`,`Common traps`,[t.ul([t.Class(`flex flex-col gap-3`)],w(e,e=>n(t.li([t.Class(`flex flex-col gap-2 rounded-xl border border-amber-500/30 bg-amber-500/6 p-4`)],[t.div([t.Class(`flex gap-2.5 text-sm`)],[L(`x`,`mt-0.5 size-4 shrink-0 text-amber-600 dark:text-amber-400`,t),t.div([t.Class(`min-w-0 flex-1`)],[t.span([t.Class(`sr-only`)],[`Trap: `]),Q4(e.belief,`text-muted-foreground`,t)])]),t.div([t.Class(`flex gap-2.5 text-sm`)],[L(`check`,`mt-0.5 size-4 shrink-0 text-success`,t),t.div([t.Class(`min-w-0 flex-1`)],[t.span([t.Class(`sr-only`)],[`Instead: `]),Q4(e.correction,``,t)])])]),`src/page/notes.ts#anonymous~11`)))],t),`src/page/notes.ts#onNonEmpty~6`)}),`src/page/notes.ts#trapsView`),s8=(e,t,r,i,a)=>n(a.div([a.Class(`flex min-w-0 flex-col gap-2`)],[a.h3([a.Class(n8)],[t]),xi(r,{onEmpty:()=>n(a.p([a.Class(`text-sm text-muted-foreground`)],[i]),`src/page/notes.ts#onEmpty~7`),onNonEmpty:r=>n(a.ul([a.AriaLabel(t),a.Class(`flex flex-col gap-1.5`)],w(r,t=>n(a.keyed(`li`)(t.id,[a.Class(`min-w-0`)],[a.a([a.Href(Az({goalId:e,conceptId:t.id})),a.Class(`press flex min-w-0 items-center gap-2 rounded-lg border px-3 py-2 text-sm hover:border-primary/50 hover:text-primary`)],[a.span([a.AriaHidden(!0),a.Class(F(`size-2 shrink-0 rounded-full`,fI(t.mastery)?`bg-success`:`bg-border`))]),a.span([a.Class(`min-w-0 flex-1 leading-snug break-words`)],[t.title]),fI(t.mastery)?a.span([a.Class(`sr-only`)],[`(learned)`]):a.empty])]),`src/page/notes.ts#anonymous~12`))),`src/page/notes.ts#onNonEmpty~7`)})]),`src/page/notes.ts#neighbourList`),qxe=(e,t,r)=>n(r8(`map`,`On the map`,[r.div([r.Class(`grid items-start gap-3 sm:grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)_auto_minmax(0,1fr)] sm:gap-4`)],[s8(e.goalId,`Builds on`,e.prerequisites,`Nothing. This is a starting point.`,r),L(`arrowRight`,`mx-auto size-4 rotate-90 text-muted-foreground sm:mt-9 sm:rotate-0`,r),r.div([r.Class(`flex min-w-0 flex-col gap-2`)],[r.h3([r.Class(n8)],[`This concept`]),r.p([r.AriaCurrent(`page`),r.Class(`rounded-lg border border-primary/40 bg-primary/8 px-3 py-2 text-sm font-medium`)],[e.concept.title])]),L(`arrowRight`,`mx-auto size-4 rotate-90 text-muted-foreground sm:mt-9 sm:rotate-0`,r),s8(e.goalId,`Unlocks`,e.unlocks,`Nothing. This is the end of the map.`,r)]),C(br(t,e=>n(e.trim().length>0,`src/page/notes.ts#anonymous~13`)),{onNone:()=>n(r.empty,`src/page/notes.ts#onNone~2`),onSome:e=>n(Z4(e,`prose-sm text-muted-foreground`,r),`src/page/notes.ts#onSome~2`)})],r),`src/page/notes.ts#mapView`),Jxe=(e,t)=>n(xi(e.resources,{onEmpty:()=>n(t.empty,`src/page/notes.ts#onEmpty~8`),onNonEmpty:e=>n(r8(`deeper`,`Go deeper`,[kxe(e,!1,`Resources`,t)],t),`src/page/notes.ts#onNonEmpty~8`)}),`src/page/notes.ts#resourcesView`),Yxe=(e,t)=>n(r8(`covers`,`What this covers`,[xi(e.concept.objectives,{onEmpty:()=>n(t.empty,`src/page/notes.ts#onEmpty~9`),onNonEmpty:e=>n(t.ul([t.AriaLabel(`You will be able to`),t.Class(`flex flex-col gap-2 text-sm`)],w(e,e=>n(t.li([t.Class(`flex gap-2`)],[L(`target`,`mt-0.5 size-4 shrink-0 text-primary`,t),e]),`src/page/notes.ts#anonymous~14`))),`src/page/notes.ts#onNonEmpty~9`)}),t.div([t.Class(`flex flex-col items-start gap-3 rounded-xl border border-dashed p-5`)],[t.p([t.Class(`text-sm text-muted-foreground`)],[`No lesson yet. Take it to fill in these notes.`]),t.a([t.Href(kz({goalId:e.goalId,conceptId:e.concept.id})),t.Class(I(`Primary`,`Medium`))],[L(`play`,`fill-current`,t),`Take the lesson`])])],t),`src/page/notes.ts#noLessonView`),Xxe=(e,t,r)=>n([Di(e.ideas)?zxe(t.keyIdeas,r):r.empty,Uxe(t.chunks,r),Gxe(t.workedExamples,r),Kxe(t.traps,r)],`src/page/notes.ts#lessonSectionsView`),Zxe=(e,t,r)=>n(r.article([r.AriaLabelledBy(`notes-title`),r.Class(Bz(`reveal flex flex-col px-5 py-7 sm:px-10 sm:py-10 print:border-0 print:shadow-none`))],[Rxe(e,t,r),Vxe(e,r),...C(e.maybeLesson,{onNone:()=>n([Yxe(e,r)],`src/page/notes.ts#onNone~3`),onSome:t=>n(Xxe(e,t,r),`src/page/notes.ts#onSome~3`)}),qxe(e,mr(e.maybeLesson,e=>n(e.connection,`src/page/notes.ts#anonymous~15`)),r),Jxe(e,r)]),`src/page/notes.ts#readyView`),Qxe=e=>n(e.div([e.Role(`status`),e.AriaLabel(`Loading the notes`),e.Class(Bz(`flex flex-col gap-6 px-5 py-7 sm:px-10 sm:py-10`))],[e.div([e.Class(`h-4 w-20 animate-pulse rounded bg-muted`)]),e.div([e.Class(`h-9 w-2/3 animate-pulse rounded-lg bg-muted`)]),e.div([e.Class(`h-16 animate-pulse rounded-xl bg-muted/60`)]),e.div([e.Class(`h-40 animate-pulse rounded-xl bg-muted/60`)]),e.div([e.Class(`h-40 animate-pulse rounded-xl bg-muted/60`)])]),`src/page/notes.ts#loadingView`),$xe=(e,t)=>n(t.div([t.Role(`alert`),t.Class(Bz(`flex flex-col items-start gap-3 p-6`))],[t.p([t.Class(`font-medium`)],[`Couldn't load these notes`]),t.p([t.Class(`text-sm text-muted-foreground`)],[e]),t.button([t.Type(`button`),t.OnClick(e8.ClickedRetry()),t.Class(I(`Outline`,`Small`))],[L(`refresh`,``,t),`Try again`])]),`src/page/notes.ts#failedView`),eSe=(e,t)=>{let r=$6.match(e.load,{Loading:()=>n(b(),`src/page/notes.ts#Loading`),Failed:()=>n(b(),`src/page/notes.ts#Failed`),Ready:({notes:e})=>n(x(e),`src/page/notes.ts#Ready`)});return n(t.nav([t.AriaLabel(`Notes`),t.Class(`flex flex-wrap items-center justify-between gap-2 print:hidden`)],[t.a([t.Href(Oz({goalId:e.goalId})),t.Class(I(`Ghost`,`Small`,`-ml-3 max-w-full text-muted-foreground`))],[L(`arrowLeft`,``,t),t.span([t.Class(`truncate`)],[C(r,{onNone:()=>n(`Back to the map`,`src/page/notes.ts#onNone~4`),onSome:e=>n(e.goalTitle,`src/page/notes.ts#onSome~4`)})])]),C(br(r,e=>n(S(e.maybeLesson),`src/page/notes.ts#anonymous~16`)),{onNone:()=>n(t.empty,`src/page/notes.ts#onNone~5`),onSome:e=>n(t.a([t.Href(kz({goalId:e.goalId,conceptId:e.concept.id})),t.Class(I(`Outline`,`Small`))],[L(`play`,`size-3.5 fill-current`,t),`Open the lesson`]),`src/page/notes.ts#onSome~5`)})]),`src/page/notes.ts#topBarView`)},tSe=qD((e,t)=>n(t.div([t.Class(`mx-auto flex w-full max-w-3xl flex-col gap-4 px-4 pt-6 pb-24 sm:px-5 sm:pt-8`)],[eSe(e,t),$6.match(e.load,{Loading:()=>n(Qxe(t),`src/page/notes.ts#Loading~2`),Failed:({error:e})=>n($xe(e,t),`src/page/notes.ts#Failed~2`),Ready:({notes:e,fetchedAt:r})=>n(Zxe(e,r,t),`src/page/notes.ts#Ready~2`)})]),`src/page/notes.ts#anonymous~17`)),nSe=e=>n($6.match(e.load,{Loading:()=>n(`Notes · BaviTutor`,`src/page/notes.ts#Loading~3`),Failed:()=>n(`Notes · BaviTutor`,`src/page/notes.ts#Failed~3`),Ready:({notes:e})=>n(`${e.concept.title} · Notes · BaviTutor`,`src/page/notes.ts#Ready~3`)}),`src/page/notes.ts#pageTitle`),c8=pT({Loading:{},Failed:{error:O},Ready:{view:qL}}),rSe=A({goalId:O,load:c8,maybeDetail:Mb(EL),selfDescription:O,isWorking:Ky,maybeQuiz:Mb(w3),questionShownAt:k,overrides:j(JL),isReviewOpen:Ky,maybeError:Mb(O)}),l8=fT({SucceededFetchDetail:{detail:EL},FailedFetchDetail:{error:O},SucceededPlacementAction:{view:qL},FailedPlacementAction:{error:O},TickedPoll:{},UpdatedSelfDescription:{value:O},ClickedStart:{},ClickedStartFromScratch:{},GotQuizMessage:{message:T3},CompletedMarkQuestionShown:{at:k},ClickedSkip:{},ClickedFinishEarly:{},ClickedToggleConcept:{conceptId:O},ClickedToggleReview:{},ClickedConfirm:{},ClickedRestart:{}}),u8=fT({FinishedPlacement:{}}),d8=e=>n({params:{goalId:nI.make(e)}},`src/page/placement.ts#goalParams`),f8=ef(e=>n(l8.SucceededPlacementAction({view:e}),`src/page/placement.ts#anonymous`)),p8=rf(e=>n(T(l8.FailedPlacementAction({error:QR(e)})),`src/page/placement.ts#anonymous~2`)),iSe=N(`FetchDetail`,{args:{goalId:O},messages:[l8.SucceededFetchDetail,l8.FailedFetchDetail],execute:({goalId:e})=>n(D(function*(){let t=yield*(yield*XR).goals.get(d8(e));return n(l8.SucceededFetchDetail({detail:t}),`src/page/placement.ts#anonymous~3`)}).pipe(rf(e=>n(T(l8.FailedFetchDetail({error:QR(e)})),`src/page/placement.ts#anonymous~4`))),`src/page/placement.ts#execute`)}),m8=N(`FetchPlacement`,{args:{goalId:O},messages:[l8.SucceededPlacementAction,l8.FailedPlacementAction],execute:({goalId:e})=>n(XR.pipe(Yd(t=>n(t.placement.view(d8(e)),`src/page/placement.ts#anonymous~5`)),f8,p8),`src/page/placement.ts#execute~2`)}),aSe=N(`StartPlacement`,{args:{goalId:O,selfDescription:O},messages:[l8.SucceededPlacementAction,l8.FailedPlacementAction],execute:({goalId:e,selfDescription:t})=>n(XR.pipe(Yd(r=>n(r.placement.start({...d8(e),payload:{selfDescription:t}}),`src/page/placement.ts#anonymous~6`)),f8,p8),`src/page/placement.ts#execute~3`)}),oSe=N(`AnswerPlacement`,{args:{goalId:O,questionId:O,response:FI,note:O,shownAt:k},messages:[l8.SucceededPlacementAction,l8.FailedPlacementAction],execute:e=>n(D(function*(){let t=yield*XR,r=yield*hd;return n(yield*t.placement.answer({...d8(e.goalId),payload:{answer:{questionId:OI.make(e.questionId),response:e.response,note:e.note,latencyMs:Math.max(0,r-e.shownAt),hintLevel:0}}}),`src/page/placement.ts#anonymous~7`)}).pipe(f8,p8),`src/page/placement.ts#execute~4`)}),sSe=N(`SkipQuestion`,{args:{goalId:O},messages:[l8.SucceededPlacementAction,l8.FailedPlacementAction],execute:({goalId:e})=>n(XR.pipe(Yd(t=>n(t.placement.skip(d8(e)),`src/page/placement.ts#anonymous~8`)),f8,p8),`src/page/placement.ts#execute~5`)}),cSe=N(`FinishPlacement`,{args:{goalId:O},messages:[l8.SucceededPlacementAction,l8.FailedPlacementAction],execute:({goalId:e})=>n(XR.pipe(Yd(t=>n(t.placement.finish(d8(e)),`src/page/placement.ts#anonymous~9`)),f8,p8),`src/page/placement.ts#execute~6`)}),lSe=N(`ApplyPlacement`,{args:{goalId:O,overrides:j(JL)},messages:[l8.SucceededPlacementAction,l8.FailedPlacementAction],execute:({goalId:e,overrides:t})=>n(XR.pipe(Yd(r=>n(r.placement.apply({...d8(e),payload:{overrides:t}}),`src/page/placement.ts#anonymous~10`)),f8,p8),`src/page/placement.ts#execute~7`)}),uSe=N(`ResetPlacement`,{args:{goalId:O},messages:[l8.SucceededPlacementAction,l8.FailedPlacementAction],execute:({goalId:e})=>n(XR.pipe(Yd(t=>n(t.placement.reset(d8(e)),`src/page/placement.ts#anonymous~11`)),f8,p8),`src/page/placement.ts#execute~8`)}),dSe=N(`MarkQuestionShown`,{messages:[l8.CompletedMarkQuestionShown],execute:hd.pipe(ef(e=>n(l8.CompletedMarkQuestionShown({at:e}),`src/page/placement.ts#anonymous~12`)))}),fSe=e=>n({model:{goalId:e,load:c8.Loading(),maybeDetail:b(),selfDescription:``,isWorking:!1,maybeQuiz:b(),questionShownAt:0,overrides:[],isReviewOpen:!1,maybeError:b()},commands:[m8({goalId:e}),iSe({goalId:e})]},`src/page/placement.ts#init`),pSe=(e,t)=>{let r=P(e,{load:()=>n(c8.Ready({view:t}),`src/page/placement.ts#load`),isWorking:()=>n(!1,`src/page/placement.ts#isWorking`),maybeError:()=>n(b(),`src/page/placement.ts#maybeError`)});return n(Ew(t).pipe(Ow(),Mw(`Asking`,({question:t})=>n(C(e.maybeQuiz,{onNone:()=>n(!1,`src/page/placement.ts#onNone`),onSome:e=>n(e.question.id===t.id,`src/page/placement.ts#onSome`)})?{model:r}:{model:P(r,{maybeQuiz:()=>n(x(D3(t)),`src/page/placement.ts#maybeQuiz`)}),commands:[dSe()]},`src/page/placement.ts#anonymous~13`)),Mw(`Applied`,()=>n({model:P(r,{maybeQuiz:()=>n(b(),`src/page/placement.ts#maybeQuiz~2`)}),outMessage:u8.FinishedPlacement()},`src/page/placement.ts#anonymous~14`)),Pw(()=>n({model:P(r,{maybeQuiz:()=>n(b(),`src/page/placement.ts#maybeQuiz~3`)})},`src/page/placement.ts#anonymous~15`))),`src/page/placement.ts#receiveView`)},mSe=LN({update:F3,read:e=>n(e.maybeQuiz,`src/page/placement.ts#read`),write:(e,t)=>n(P(e,{maybeQuiz:()=>n(x(t),`src/page/placement.ts#maybeQuiz~4`)}),`src/page/placement.ts#write`),toParentMessage:e=>n(l8.GotQuizMessage({message:e}),`src/page/placement.ts#toParentMessage`),foldOutMessage:E3.match({SubmittedAnswer:({response:e,note:t})=>n((r=>n({model:P(r,{isWorking:()=>n(!0,`src/page/placement.ts#isWorking~2`)}),commands:bi(mr(r.maybeQuiz,i=>n(oSe({goalId:r.goalId,questionId:i.question.id,response:e,note:t,shownAt:r.questionShownAt}),`src/page/placement.ts#anonymous~17`)))},`src/page/placement.ts#anonymous~16`)),`src/page/placement.ts#SubmittedAnswer`),ContinuedAfterFeedback:()=>n((e=>n({model:e},`src/page/placement.ts#anonymous~18`)),`src/page/placement.ts#ContinuedAfterFeedback`)})}),hSe=(e,t)=>n(C(e.maybeDetail,{onNone:()=>n(e,`src/page/placement.ts#onNone~2`),onSome:r=>{let{index:i}=GY(r.graph),a=h8(e,t)===`Known`?`Unknown`:`Known`,o=a===`Known`?rz(i,[t]):iz(i,[t]),s=da(e.overrides,e=>n(!o.has(e.conceptId),`src/page/placement.ts#anonymous~19`)),c=w([...o],e=>n(JL.make({conceptId:rI.make(e),choice:a}),`src/page/placement.ts#anonymous~20`));return n(P(e,{overrides:()=>n([...s,...c],`src/page/placement.ts#overrides`)}),`src/page/placement.ts#onSome~2`)}}),`src/page/placement.ts#toggleConcept`),gSe=(e,t)=>n(l8.match(t,{SucceededFetchDetail:({detail:t})=>n({model:P(e,{maybeDetail:()=>n(x(t),`src/page/placement.ts#maybeDetail`)})},`src/page/placement.ts#SucceededFetchDetail`),FailedFetchDetail:({error:t})=>n({model:P(e,{maybeError:()=>n(x(t),`src/page/placement.ts#maybeError~2`)})},`src/page/placement.ts#FailedFetchDetail`),SucceededPlacementAction:({view:t})=>n(pSe(e,t),`src/page/placement.ts#SucceededPlacementAction`),FailedPlacementAction:({error:t})=>n({model:P(e,{isWorking:()=>n(!1,`src/page/placement.ts#isWorking~3`),maybeQuiz:mr(k3),maybeError:()=>n(x(t),`src/page/placement.ts#maybeError~3`),load:e=>n(e._tag===`Loading`?c8.Failed({error:t}):e,`src/page/placement.ts#load~2`)})},`src/page/placement.ts#FailedPlacementAction`),TickedPoll:()=>n({model:e,commands:[m8({goalId:e.goalId})]},`src/page/placement.ts#TickedPoll`),UpdatedSelfDescription:({value:t})=>n({model:P(e,{selfDescription:()=>n(t,`src/page/placement.ts#selfDescription`)})},`src/page/placement.ts#UpdatedSelfDescription`),ClickedStart:()=>n({model:P(e,{isWorking:()=>n(!0,`src/page/placement.ts#isWorking~4`)}),commands:[aSe({goalId:e.goalId,selfDescription:e.selfDescription})]},`src/page/placement.ts#ClickedStart`),ClickedStartFromScratch:()=>n({model:e,outMessage:u8.FinishedPlacement()},`src/page/placement.ts#ClickedStartFromScratch`),GotQuizMessage:({message:t})=>n(mSe(e,t),`src/page/placement.ts#GotQuizMessage`),CompletedMarkQuestionShown:({at:t})=>n({model:P(e,{questionShownAt:()=>n(t,`src/page/placement.ts#questionShownAt`)})},`src/page/placement.ts#CompletedMarkQuestionShown`),ClickedSkip:()=>n({model:P(e,{isWorking:()=>n(!0,`src/page/placement.ts#isWorking~5`)}),commands:[sSe({goalId:e.goalId})]},`src/page/placement.ts#ClickedSkip`),ClickedFinishEarly:()=>n({model:P(e,{isWorking:()=>n(!0,`src/page/placement.ts#isWorking~6`)}),commands:[cSe({goalId:e.goalId})]},`src/page/placement.ts#ClickedFinishEarly`),ClickedToggleConcept:({conceptId:t})=>n({model:hSe(e,t)},`src/page/placement.ts#ClickedToggleConcept`),ClickedToggleReview:()=>n({model:P(e,{isReviewOpen:e=>n(!e,`src/page/placement.ts#isReviewOpen`)})},`src/page/placement.ts#ClickedToggleReview`),ClickedConfirm:()=>n({model:P(e,{isWorking:()=>n(!0,`src/page/placement.ts#isWorking~7`)}),commands:[lSe({goalId:e.goalId,overrides:e.overrides})]},`src/page/placement.ts#ClickedConfirm`),ClickedRestart:()=>n({model:P(e,{isWorking:()=>n(!0,`src/page/placement.ts#isWorking~8`),overrides:()=>n([],`src/page/placement.ts#overrides~2`)}),commands:[uSe({goalId:e.goalId})]},`src/page/placement.ts#ClickedRestart`)}),`src/page/placement.ts#update`),_Se=lA(I3)({read:e=>n(e.maybeQuiz,`src/page/placement.ts#read~2`),toParentMessage:e=>n(l8.GotQuizMessage({message:e}),`src/page/placement.ts#toParentMessage~2`)}),vSe=oA(iA()(e=>n({pollWhilePreparing:e({isPreparing:Ky},{modelToDependencies:e=>n({isPreparing:e.load._tag===`Ready`&&e.load.view._tag===`Preparing`},`src/page/placement.ts#modelToDependencies`),dependenciesToStream:({isPreparing:e})=>n(e?TC(La(3)).pipe(qC(1),zC(()=>n(l8.TickedPoll(),`src/page/placement.ts#anonymous~22`))):kC,`src/page/placement.ts#dependenciesToStream`)})},`src/page/placement.ts#anonymous~21`)),{placementQuizKeyboard:_Se.keyboard}),ySe=e=>n(e.load._tag===`Ready`&&e.load.view._tag===`Summary`?e.load.view.beliefs:[],`src/page/placement.ts#beliefsOf`),h8=(e,t)=>n(C(Xi(e.overrides,e=>n(e.conceptId===t,`src/page/placement.ts#anonymous~23`)),{onSome:e=>n(e.choice===`Known`?`Known`:`ToLearn`,`src/page/placement.ts#onSome~3`),onNone:()=>n(C(Yi(ySe(e),e=>n(e.conceptId===t,`src/page/placement.ts#anonymous~24`)),{onNone:()=>n(`ToLearn`,`src/page/placement.ts#onNone~4`),onSome:e=>n(e.status,`src/page/placement.ts#onSome~4`)}),`src/page/placement.ts#onNone~3`)}),`src/page/placement.ts#effectiveStatus`),bSe=(e,t)=>n(t.div([t.Class(`flex flex-col gap-6`)],[t.div([t.Class(`reveal flex flex-col gap-2 text-center`)],[t.h1([t.Class(`text-3xl font-semibold tracking-tight`)],[`Where should you start?`]),t.p([t.Class(`mx-auto max-w-xl text-muted-foreground`)],[`A short quiz finds what you know, so you can skip it.`])]),t.div([t.Class(Bz(`reveal stagger-1 flex flex-col gap-4 p-6`))],[t.div([t.Class(`flex items-start gap-3`)],[t.span([t.Class(`flex size-10 shrink-0 items-center justify-center rounded-xl bg-primary/12 text-primary`)],[L(`target`,`size-5`,t)]),t.div([],[t.p([t.Class(`font-semibold`)],[`Find my starting point`]),t.p([t.Class(`text-sm text-muted-foreground`)],[`About 6 to 10 questions. "I don't know" is fine.`])])]),t.textarea([t.Value(e.selfDescription),t.Rows(2),t.Placeholder(`What do you already know? Like "algebra in school, rusty on equations"`),t.OnInput(e=>n(l8.UpdatedSelfDescription({value:e}),`src/page/placement.ts#anonymous~25`)),t.Class(Vz(`resize-none text-sm`))]),t.div([t.Class(`flex justify-end`)],[t.button([t.Type(`button`),t.Disabled(e.isWorking),t.OnClick(l8.ClickedStart()),t.Class(I(`Primary`,`Large`))],[e.isWorking?L(`refresh`,`spinner`,t):t.empty,`Start the quiz`,L(`arrowRight`,``,t)])])]),t.button([t.Type(`button`),t.OnClick(l8.ClickedStartFromScratch()),t.Class(`reveal stagger-2 press mx-auto text-sm text-muted-foreground underline-offset-4 hover:text-foreground hover:underline`)],[`Skip and start from scratch`])]),`src/page/placement.ts#choiceView`),xSe=(e,t,r)=>n(r.div([r.Class(Bz(`flex flex-col items-center gap-4 p-10 text-center`))],[r.p([r.Class(`shimmer-text text-lg font-medium`)],[`Writing your questions…`]),r.div([r.Class(`h-1.5 w-64 overflow-hidden rounded-full bg-muted`)],[r.div([r.Class(`h-full rounded-full bg-primary transition-[width] duration-700`),r.Style({width:`${t===0?0:Math.round(e/t*100)}%`})])]),r.p([r.Class(`text-sm text-muted-foreground`)],[`${e} of ${t} ready`])]),`src/page/placement.ts#preparingView`),SSe=(e,t,r)=>{let i=t.number-1,a=i+t.questionsLeft,o=a===0?0:Math.round(i/a*100);return n(r.div([r.Class(`flex flex-col gap-4`)],[r.div([r.Class(`flex flex-col gap-2`)],[r.div([r.Class(`flex items-center justify-between text-sm`)],[r.span([r.Class(`font-medium`)],[`${t.conceptTitle} · Question ${t.number}`]),r.span([r.Class(`text-muted-foreground`)],[`about ${t.questionsLeft} left`])]),r.div([r.Class(`h-1 overflow-hidden rounded-full bg-muted`)],[r.div([r.Class(`h-full rounded-full bg-primary transition-[width] duration-500`),r.Style({width:`${o}%`})])]),t.isWarmup?r.p([r.Class(`text-sm text-muted-foreground`)],[`Warm-up. No timer. You'll see the answers at the end.`]):r.empty]),C(e.maybeQuiz,{onNone:()=>n(r.empty,`src/page/placement.ts#onNone~5`),onSome:e=>n(r.submodel({slotId:`placement-${e.question.id}`,model:e,view:V3(`Next`),toParentMessage:e=>n(l8.GotQuizMessage({message:e}),`src/page/placement.ts#toParentMessage~3`)}),`src/page/placement.ts#onSome~5`)}),r.div([r.Class(`flex items-center justify-between`)],[r.button([r.Type(`button`),r.Disabled(e.isWorking),r.OnClick(l8.ClickedSkip()),r.Class(I(`Ghost`,`Small`,`text-muted-foreground`))],[`Skip this one`]),t.canFinishEarly?r.button([r.Type(`button`),r.Disabled(e.isWorking),r.OnClick(l8.ClickedFinishEarly()),r.Class(I(`Outline`,`Small`))],[`Finish now`]):r.empty])]),`src/page/placement.ts#askingView`)},CSe={Known:{title:`You know these`,hint:`We'll skip these. Click one to move it.`,chip:`border-success/40 bg-success/8 hover:border-success`,dot:`bg-success`},QuickCheck:{title:`Quick check first`,hint:`A 1-minute check. Pass it to skip.`,chip:`border-amber-500/40 bg-amber-500/8 hover:border-amber-500`,dot:`bg-amber-500`},ToLearn:{title:`To learn`,hint:`Full lessons. Click one you know.`,chip:`border-border bg-card hover:border-primary/50`,dot:`bg-muted-foreground/50`}},wSe=(e,t,r)=>{let i=fr(e.maybeDetail),a=e=>n(i?.graph.concepts.find(t=>n(t.id===e,`src/page/placement.ts#anonymous~26`))?.title??e,`src/page/placement.ts#titleOf`),o=e=>n(i?.graph.concepts.find(t=>n(t.id===e,`src/page/placement.ts#anonymous~27`))?.depth??0,`src/page/placement.ts#depthOf`),s=[...t.beliefs].sort((e,t)=>n(o(e.conceptId)-o(t.conceptId),`src/page/placement.ts#anonymous~28`)),c=t=>n(da(s,r=>n(h8(e,r.conceptId)===t,`src/page/placement.ts#anonymous~29`)),`src/page/placement.ts#byStatus`),l=c(`Known`),u=c(`QuickCheck`),d=c(`ToLearn`);return n(r.div([r.Class(`flex flex-col gap-6`)],[r.div([r.Class(`reveal flex flex-col gap-2`)],[r.h1([r.Class(`text-3xl font-semibold tracking-tight`)],[`Here's where you stand`]),r.p([r.Class(`text-muted-foreground`)],[`You can skip ${l.length} of ${s.length} concepts. Your path has ${d.length+u.length} lessons. Fix anything that looks wrong.`])]),r.div([r.Class(`grid gap-4 lg:grid-cols-3`)],w([`Known`,`QuickCheck`,`ToLearn`],e=>{let t=CSe[e],i=c(e);return n(r.keyed(`section`)(e,[r.Class(Bz(`reveal flex flex-col gap-3 p-4`))],[r.div([r.Class(`flex items-center justify-between`)],[r.h2([r.Class(`flex items-center gap-2 font-semibold`)],[r.span([r.Class(F(`size-2.5 rounded-full`,t.dot))]),t.title]),r.span([r.Class(zz(`Neutral`))],[`${i.length}`])]),r.p([r.Class(`text-xs text-muted-foreground`)],[t.hint]),r.div([r.Class(`flex max-h-80 flex-wrap content-start gap-1.5 overflow-y-auto pr-1`)],w(i,e=>n(r.keyed(`button`)(e.conceptId,[r.Type(`button`),r.Title(`${Math.round(e.pKnown*100)}% likely known${e.wasAsked?`, you answered it`:``}`),r.OnClick(l8.ClickedToggleConcept({conceptId:e.conceptId})),r.Class(F(`press rounded-md border px-2 py-1 text-left text-xs transition-colors`,t.chip))],[e.wasAsked?`● `:``,a(e.conceptId)]),`src/page/placement.ts#anonymous~31`)))]),`src/page/placement.ts#anonymous~30`)})),r.div([r.Class(Bz(`p-4`))],[r.button([r.Type(`button`),r.OnClick(l8.ClickedToggleReview()),r.Class(`flex w-full items-center justify-between text-sm font-medium`)],[`See your ${t.answers.length} answers`,L(e.isReviewOpen?`minus`:`plus`,`size-4`,r)]),e.isReviewOpen?r.ol([r.Class(`mt-4 flex flex-col gap-4`)],w(t.answers,(e,t)=>n(r.keyed(`li`)(`${t}`,[r.Class(`flex flex-col gap-1.5 border-t pt-4 text-sm`)],[r.div([r.Class(`flex items-center gap-2`)],[r.span([r.Class(zz(e.verdict===`Correct`?`Success`:e.verdict===`DontKnow`||e.verdict===`Skipped`?`Neutral`:`Destructive`))],[e.verdict===`DontKnow`?`Didn't know`:e.verdict]),r.span([r.Class(`text-muted-foreground`)],[a(e.conceptId)])]),Z4(e.prompt,`prose-sm`,r),Z4(`**Answer:** ${e.correctAnswer}`,`prose-sm`,r),Z4(e.explanation,`prose-sm text-muted-foreground`,r)]),`src/page/placement.ts#anonymous~32`))):r.empty]),r.div([r.Class(`flex items-center justify-between gap-3`)],[r.button([r.Type(`button`),r.Disabled(e.isWorking),r.OnClick(l8.ClickedRestart()),r.Class(I(`Ghost`,`Medium`,`text-muted-foreground`))],[L(`refresh`,``,r),`Retake`]),r.button([r.Type(`button`),r.Disabled(e.isWorking),r.OnClick(l8.ClickedConfirm()),r.Class(I(`Primary`,`Large`))],[e.isWorking?L(`refresh`,`spinner`,r):L(`check`,``,r),`Build my path`])])]),`src/page/placement.ts#summaryView`)},TSe=qD((e,t)=>n(t.div([t.Class(`mx-auto flex w-full max-w-4xl flex-col gap-5 px-5 pt-6 pb-24`)],[t.a([t.Href(Oz({goalId:e.goalId})),t.Class(`inline-flex items-center gap-1.5 self-start text-sm text-muted-foreground hover:text-foreground`)],[L(`arrowLeft`,`size-4`,t),C(e.maybeDetail,{onNone:()=>n(`Map`,`src/page/placement.ts#onNone~6`),onSome:e=>n(e.goal.title,`src/page/placement.ts#onSome~6`)})]),C(e.maybeError,{onNone:()=>n(t.empty,`src/page/placement.ts#onNone~7`),onSome:e=>n(t.p([t.Role(`alert`),t.Class(`text-sm text-destructive`)],[e]),`src/page/placement.ts#onSome~7`)}),c8.match(e.load,{Loading:()=>n(t.div([t.Class(`h-64 animate-pulse rounded-xl bg-muted/60`)]),`src/page/placement.ts#Loading`),Failed:({error:e})=>n(t.p([t.Class(`text-sm text-destructive`)],[e]),`src/page/placement.ts#Failed`),Ready:({view:r})=>n(Ew(r).pipe(Ow(),Mw(`NotStarted`,()=>n(t.div([t.Class(`mx-auto w-full max-w-2xl`)],[bSe(e,t)]),`src/page/placement.ts#anonymous~34`)),Mw(`Preparing`,({ready:e,total:r})=>n(xSe(e,r,t),`src/page/placement.ts#anonymous~35`)),Mw(`Asking`,r=>n(t.div([t.Class(`mx-auto w-full max-w-2xl`)],[SSe(e,r,t)]),`src/page/placement.ts#anonymous~36`)),Mw(`Summary`,r=>n(wSe(e,r,t),`src/page/placement.ts#anonymous~37`)),Mw(`Applied`,()=>n(t.p([t.Class(`shimmer-text`)],[`Building your path…`]),`src/page/placement.ts#anonymous~38`)),Fw),`src/page/placement.ts#Ready`)})]),`src/page/placement.ts#anonymous~33`)),g8=pT({Loading:{},Failed:{error:O},Ready:{report:aR}}),ESe=A({load:g8}),_8=fT({SucceededFetchReport:{report:aR},FailedFetchReport:{error:O},ClickedRetry:{}}),v8=N(`FetchReport`,{messages:[_8.SucceededFetchReport,_8.FailedFetchReport],execute:D(function*(){let e=yield*(yield*XR).progress.report();return n(_8.SucceededFetchReport({report:e}),`src/page/progress.ts#anonymous`)}).pipe(rf(e=>n(T(_8.FailedFetchReport({error:QR(e)})),`src/page/progress.ts#anonymous~2`)))}),DSe=()=>n({model:{load:g8.Loading()},commands:[v8()]},`src/page/progress.ts#init`),OSe=(e,t)=>n(_8.match(t,{SucceededFetchReport:({report:t})=>n({model:P(e,{load:()=>n(g8.Ready({report:t}),`src/page/progress.ts#load`)})},`src/page/progress.ts#SucceededFetchReport`),FailedFetchReport:({error:t})=>n({model:P(e,{load:()=>n(g8.Failed({error:t}),`src/page/progress.ts#load~2`)})},`src/page/progress.ts#FailedFetchReport`),ClickedRetry:()=>n({model:P(e,{load:()=>n(g8.Loading(),`src/page/progress.ts#load~3`)}),commands:[v8()]},`src/page/progress.ts#ClickedRetry`)}),`src/page/progress.ts#update`),y8=10,kSe=5,b8={strongest:`bg-[oklch(0.52_0.16_40)] dark:bg-[oklch(0.82_0.14_60)]`,strong:`bg-primary`,light:`bg-[oklch(0.78_0.12_55)] dark:bg-[oklch(0.55_0.13_45)]`,gray:`bg-[oklch(0.72_0.015_70)] dark:bg-[oklch(0.5_0.012_70)]`,track:`bg-[oklch(0.93_0.006_75)] dark:bg-[oklch(0.28_0.008_60)]`},x8=[{part:`durable`,label:`Durable`,swatch:b8.strongest},{part:`mastered`,label:`Mastered`,swatch:b8.strong},{part:`learning`,label:`Learning`,swatch:b8.light},{part:`knownBefore`,label:`Known before`,swatch:b8.gray},{part:`notYet`,label:`Not yet`,swatch:b8.track}],S8=[{part:`durable`,label:`Durable`,swatch:b8.strongest},{part:`held`,label:`Held`,swatch:b8.strong},{part:`learning`,label:`Learning`,swatch:b8.light},{part:`notAsked`,label:`Not asked yet`,swatch:b8.track}],C8=e=>n({durable:e.durable,held:e.held-e.durable,learning:e.carded-e.held,notAsked:e.total-e.carded},`src/page/progress.ts#ideaParts`),ASe=[{part:`due`,label:`Concepts`,swatch:b8.strong},{part:`flashcards`,label:`Idea cards`,swatch:b8.light}],w8=[`bg-[oklch(0.93_0.006_75)] dark:bg-[oklch(0.28_0.008_60)]`,`bg-[oklch(0.85_0.09_60)] dark:bg-[oklch(0.42_0.09_45)]`,`bg-[oklch(0.76_0.13_52)] dark:bg-[oklch(0.53_0.12_45)]`,`bg-[oklch(0.65_0.18_43)] dark:bg-[oklch(0.65_0.16_47)]`,`bg-[oklch(0.52_0.16_38)] dark:bg-[oklch(0.8_0.15_58)]`],T8=e=>n(`${Math.round(e*100)}%`,`src/page/progress.ts#percent`),E8=(e,t)=>n(t===0?0:e/t,`src/page/progress.ts#ratio`),D8=(e,t,r=`${t}s`)=>n(`${e} ${e===1?t:r}`,`src/page/progress.ts#plural`),jSe=e=>n(new Date(`${e}T00:00:00Z`),`src/page/progress.ts#calendarDate`),O8=(e,t)=>n(jSe(e).toLocaleDateString(`en-US`,{...t,timeZone:`UTC`}),`src/page/progress.ts#formatDate`),k8=e=>n(O8(e,{weekday:`short`,month:`short`,day:`numeric`}),`src/page/progress.ts#longDate`),A8=(e,t,r,i,a,o)=>n(a.section([a.AriaLabelledBy(`${e}-title`),a.Class(Bz(F(`flex flex-col gap-6 p-5 sm:p-6`,o)))],[a.div([a.Class(`flex flex-col gap-1`)],[a.h2([a.Id(`${e}-title`),a.Class(`text-base font-semibold tracking-tight`)],[t]),a.p([a.Class(`text-sm text-muted-foreground`)],[r])]),...i]),`src/page/progress.ts#sectionView`),j8=(e,t,r,i)=>n(i.div([i.Class(`flex flex-col gap-0.5`)],[i.dt([i.Class(`text-xs text-muted-foreground`)],[e]),i.dd([i.Class(`text-2xl font-semibold tracking-tight`)],[t]),C(r,{onNone:()=>n(i.empty,`src/page/progress.ts#onNone`),onSome:e=>n(i.dd([i.Class(`text-xs text-muted-foreground`)],[e]),`src/page/progress.ts#onSome`)})]),`src/page/progress.ts#statView`),M8=(e,t)=>n(t.p([t.Class(`rounded-lg border border-dashed px-4 py-6 text-center text-sm text-muted-foreground`)],[e]),`src/page/progress.ts#emptyNote`),N8=(e,t)=>n(t.ul([t.AriaLabel(`Legend`),t.Class(`flex flex-wrap items-center gap-x-4 gap-y-1.5 text-xs text-muted-foreground`)],w(e,({label:e,swatch:r})=>n(t.li([t.Class(`flex items-center gap-1.5`)],[t.span([t.Class(F(`size-2.5 rounded-[3px]`,r))]),e]),`src/page/progress.ts#anonymous~3`))),`src/page/progress.ts#legendView`),P8=(e,t,r,i,a,o,s=`h-2.5`)=>n(o.div([o.Role(`img`),o.AriaLabel(`${a}: ${w(e,({part:e,label:r})=>n(`${t[e]} ${r.toLowerCase()}`,`src/page/progress.ts#anonymous~4`)).join(`, `)}`),o.Class(F(`flex w-full gap-[2px]`,s))],w(da(e,({part:e})=>n(t[e]>0,`src/page/progress.ts#anonymous~5`)),({part:e,label:a,swatch:s})=>n(o.div([o.Title(`${a}: ${t[e]} of ${D8(r,i)}`),o.Class(F(`h-full min-w-1 rounded-[3px]`,s)),o.Style({flex:`${t[e]} 1 0%`})]),`src/page/progress.ts#anonymous~6`))),`src/page/progress.ts#stackedBar`),MSe=(e,t)=>{let r=e.breakdown.durable+e.breakdown.mastered;return n(t.keyed(`li`)(e.goalId,[t.Class(`flex flex-col gap-2`)],[t.div([t.Class(`flex flex-col gap-0.5 text-sm sm:flex-row sm:items-baseline sm:justify-between sm:gap-4`)],[t.a([t.Href(Oz({goalId:e.goalId})),t.Class(`group inline-flex min-w-0 items-center gap-1 font-medium hover:text-primary`)],[t.span([t.Class(`truncate`)],[e.title]),L(`arrowRight`,`size-3.5 shrink-0 opacity-0 transition-opacity group-hover:opacity-100`,t)]),t.span([t.Class(`text-xs text-muted-foreground tabular-nums sm:shrink-0`)],[`${r} of ${D8(e.conceptCount,`concept`)} mastered`,e.breakdown.learning>0?` · ${e.breakdown.learning} learning`:``])]),P8(x8,e.breakdown,e.conceptCount,`concept`,e.title,t)]),`src/page/progress.ts#goalRow`)},NSe=e=>{let t=e.durable+e.mastered;return t===0&&e.learning===0?n(`None yet. A concept counts once you recall it on two later days.`,`src/page/progress.ts#headlineSentence`):n(t===0?`None yet. ${D8(e.learning,`concept is`,`concepts are`)} on the way.`:e.durable===0?`Recalled on two later days.`:`Recalled on two later days. ${e.durable} will last a month without review.`,`src/page/progress.ts#headlineSentence`)},PSe=(e,t,r)=>n(A8(`knowledge`,`Durable knowledge`,`What you still remember weeks later.`,[r.div([r.Class(`flex flex-col gap-6 lg:flex-row lg:items-end`)],[r.div([r.Class(`flex flex-1 items-end gap-4`)],[r.p([r.Class(`text-6xl leading-none font-semibold tracking-tight`)],[`${e.durable+e.mastered}`]),r.p([r.Class(`max-w-sm pb-1 text-sm text-muted-foreground`)],[r.span([r.Class(`block font-medium text-foreground`)],[e.durable+e.mastered===1?`concept mastered`:`concepts mastered`]),NSe(e)])]),r.dl([r.Class(`grid grid-cols-3 gap-6 lg:gap-8`)],[j8(`Durable`,`${e.durable}`,b(),r),j8(`Learning`,`${e.learning}`,b(),r),j8(`Known before`,`${e.knownBefore}`,b(),r)])]),xi(t,{onEmpty:()=>n(r.p([r.Class(`text-sm text-muted-foreground`)],[`No subjects yet. `,r.a([r.Href(Dz()),r.Class(`font-medium text-primary`)],[`Start one`])]),`src/page/progress.ts#onEmpty`),onNonEmpty:e=>n(r.div([r.Class(`flex flex-col gap-4 border-t pt-5`)],[N8(x8,r),r.ul([r.AriaLabel(`By subject`),r.Class(`flex flex-col gap-5`)],w(e,e=>n(MSe(e,r),`src/page/progress.ts#anonymous~7`)))]),`src/page/progress.ts#onNonEmpty`)})],r),`src/page/progress.ts#knowledgeView`),FSe=e=>n(ea(da(e,e=>n(e.ideas.carded>0,`src/page/progress.ts#anonymous~8`)),ir(rr,e=>n(E8(e.ideas.held,e.ideas.total),`src/page/progress.ts#anonymous~9`))),`src/page/progress.ts#weakestFirst`),ISe=(e,t)=>n(t.keyed(`li`)(`not-asked`,[t.Class(`py-3 text-sm text-muted-foreground`)],[`Not asked yet: ${D8(e,`more lesson`)}`]),`src/page/progress.ts#notAskedRow`),LSe=(e,t,r)=>n(r.keyed(`li`)(t.conceptId,[r.Class(`flex flex-col gap-1.5 py-3`)],[r.div([r.Class(`flex items-baseline justify-between gap-4 text-sm`)],[r.a([r.Href(Az({goalId:e,conceptId:t.conceptId})),r.Class(`min-w-0 truncate hover:text-primary`)],[t.title]),r.span([r.Class(`shrink-0 text-xs text-muted-foreground tabular-nums`)],[`${t.ideas.held} of ${t.ideas.total} held`])]),P8(S8,C8(t.ideas),t.ideas.total,`idea`,t.title,r,`h-1.5`)]),`src/page/progress.ts#lessonIdeasRow`),F8=(e,t)=>n(t.details([t.Class(`group`)],[t.summary([t.Class(`flex w-fit cursor-pointer list-none items-center gap-1.5 text-sm font-medium text-muted-foreground select-none hover:text-foreground [&::-webkit-details-marker]:hidden`)],[L(`chevronDown`,`size-4 shrink-0 -rotate-90 transition-transform group-open:rotate-0`,t),`${D8(e.lessons.length,`lesson`)}, weakest first`]),t.ul([t.AriaLabel(`Lessons in ${e.title}`),t.Class(`mt-2 flex flex-col divide-y`)],[...w(FSe(e.lessons),r=>n(LSe(e.goalId,r,t),`src/page/progress.ts#anonymous~10`)),...xi(da(e.lessons,e=>n(e.ideas.carded===0,`src/page/progress.ts#anonymous~11`)),{onEmpty:()=>n([],`src/page/progress.ts#onEmpty~2`),onNonEmpty:e=>n([ISe(e.length,t)],`src/page/progress.ts#onNonEmpty~2`)})])]),`src/page/progress.ts#lessonsDisclosure`),RSe=(e,t)=>n(t.keyed(`li`)(e.goalId,[t.Class(`flex flex-col gap-2`)],[t.div([t.Class(`flex flex-col gap-0.5 text-sm sm:flex-row sm:items-baseline sm:justify-between sm:gap-4`)],[t.a([t.Href(Oz({goalId:e.goalId})),t.Class(`group inline-flex min-w-0 items-center gap-1 font-medium hover:text-primary`)],[t.span([t.Class(`truncate`)],[e.title]),L(`arrowRight`,`size-3.5 shrink-0 opacity-0 transition-opacity group-hover:opacity-100`,t)]),t.span([t.Class(`text-xs text-muted-foreground tabular-nums sm:shrink-0`)],[`${e.ideas.recallableNow} of ${D8(e.ideas.total,`idea`)} remembered`])]),P8(S8,C8(e.ideas),e.ideas.total,`idea`,e.title,t),F8(e,t)]),`src/page/progress.ts#goalIdeasRow`),zSe=e=>e.carded===0?n(`None asked yet. Each lesson ends with a card for each idea.`,`src/page/progress.ts#ideasSentence`):e.recallableNow===0?n(`None right now. A review brings them back.`,`src/page/progress.ts#ideasSentence`):n(e.durable===0?`You can recall these right now.`:`You can recall these right now. ${e.durable} will last 3 weeks without review.`,`src/page/progress.ts#ideasSentence`),BSe=(e,t)=>{let r=C8(e.totals);return n(A8(`ideas`,`Ideas`,`Each idea in your lessons has its own card.`,[t.div([t.Class(`flex flex-col gap-6 lg:flex-row lg:items-end`)],[t.div([t.Class(`flex flex-1 items-end gap-4`)],[t.p([t.Class(`text-6xl leading-none font-semibold tracking-tight`)],[`${e.totals.recallableNow}`]),t.p([t.Class(`max-w-sm pb-1 text-sm text-muted-foreground`)],[t.span([t.Class(`block font-medium text-foreground`)],[`of ${D8(e.totals.total,`idea`)}`]),zSe(e.totals)])]),t.dl([t.Class(`grid grid-cols-3 gap-6 lg:gap-8`)],[j8(`Durable`,`${r.durable}`,x(`3 weeks or more`),t),j8(`Learning`,`${r.learning}`,x(`under a week`),t),j8(`Not asked yet`,`${r.notAsked}`,b(),t)])]),t.div([t.Class(`flex flex-col gap-4 border-t pt-5`)],[N8(S8,t),xi(e.goals,{onEmpty:()=>n(t.empty,`src/page/progress.ts#onEmpty~3`),onNonEmpty:i=>n(i.length===1?t.div([t.Class(`flex flex-col gap-3`)],[P8(S8,r,e.totals.total,`idea`,`All ideas`,t),F8(Fi(i),t)]):t.ul([t.AriaLabel(`Ideas by subject`),t.Class(`flex flex-col gap-5`)],w(i,e=>n(RSe(e,t),`src/page/progress.ts#anonymous~12`))),`src/page/progress.ts#onNonEmpty~3`)})])],t),`src/page/progress.ts#ideasView`)},I8=(e,t)=>n(sr(Mi(e.projection,t),()=>n(0,`src/page/progress.ts#anonymous~13`)),`src/page/progress.ts#projectionAt`),VSe=e=>n(Math.min(.8,Math.max(0,Math.floor((Math.min(e.targetRetention,...e.projection)-.05)*10)/10)),`src/page/progress.ts#projectionFloor`),L8=(e,t,r,i)=>n(i.line([i.X1(`0`),i.X2(`${t}`),i.Y1(`${e}`),i.Y2(`${e}`),i.Attribute(`vector-effect`,`non-scaling-stroke`),i.StrokeWidth(`1`),i.Class(r)]),`src/page/progress.ts#hairline`),R8=(e,t,r)=>n(r.span([r.Class(`absolute left-full ml-2 -translate-y-1/2 text-[11px] whitespace-nowrap text-muted-foreground tabular-nums`),r.Style({top:`${e}%`})],[t]),`src/page/progress.ts#axisLabel`),HSe=(e,t)=>{let r=Math.max(1,e.projection.length-1),i=VSe(e),a=e=>n((1-e)/(1-i)*100,`src/page/progress.ts#toY`),o=w(e.projection,(e,t)=>n(`${t},${a(e)}`,`src/page/progress.ts#anonymous~14`)),s=da([0,7,r],t=>n(t<e.projection.length,`src/page/progress.ts#anonymous~15`)),c=a(e.targetRetention);return n(t.figure([t.Class(`flex flex-col gap-2`)],[t.div([t.AriaHidden(!0),t.Class(`relative mr-20 h-36`)],[t.svg([t.ViewBox(`0 0 ${r} 100`),t.PreserveAspectRatio(`none`),t.Class(`absolute inset-0 size-full overflow-visible`)],[L8(0,r,`stroke-border`,t),L8(100,r,`stroke-border`,t),L8(c,r,`stroke-muted-foreground/60`,t),t.polyline([t.Points(o.join(` `)),t.Fill(`none`),t.StrokeWidth(`2`),t.StrokeLinejoin(`round`),t.StrokeLinecap(`round`),t.Attribute(`vector-effect`,`non-scaling-stroke`),t.Class(`stroke-primary`)])]),R8(0,`100%`,t),R8(c,`${T8(e.targetRetention)} target`,t),R8(100,T8(i),t),...w(s,i=>n(t.span([t.Class(`absolute size-2.5 -translate-1/2 rounded-full bg-primary ring-2 ring-card`),t.Style({left:`${i/r*100}%`,top:`${a(I8(e,i))}%`})]),`src/page/progress.ts#anonymous~16`))]),t.div([t.AriaHidden(!0),t.Class(`relative mr-20 h-4 text-[11px] text-muted-foreground tabular-nums`)],w([{day:0,label:`Today`},{day:7,label:`1 week`},{day:14,label:`2 weeks`},{day:r,label:`${r} days`}],({day:e,label:i})=>n(t.span([t.Class(F(`absolute whitespace-nowrap`,e===0?``:e===r?`-translate-x-full`:`-translate-x-1/2`)),t.Style({left:`${e/r*100}%`})],[i]),`src/page/progress.ts#anonymous~17`))),t.figcaption([t.Class(`sr-only`)],[`Average predicted recall if you stop reviewing: ${T8(I8(e,0))} today, ${T8(I8(e,7))} in a week, ${T8(I8(e,14))} in two weeks, ${T8(I8(e,r))} in ${r} days. Target ${T8(e.targetRetention)}.`])]),`src/page/progress.ts#projectionChart`)},USe=(e,t,r)=>{let{reviewed:i,remembered:a,windowDays:o}=e,s=E8(a,i),c=T8(t),l=`${a} of ${D8(i,r.unit)} in the last ${o} days.`;return i<y8?n(`${l} Too few to compare with the ${c} target yet.`,`src/page/progress.ts#retentionSentence`):s>=t+.05?n(`${l} Above the ${c} target. Your reviews are sticking.`,`src/page/progress.ts#retentionSentence`):s>=t-.05?n(`${l} Right on the ${c} target.`,`src/page/progress.ts#retentionSentence`):n(`${l} Below the ${c} target. Review on the day things are due.`,`src/page/progress.ts#retentionSentence`)},z8=(e,t,r,i)=>{let{reviewed:a,remembered:o}=e,s=a>=y8,c=E8(o,a),l=C(r.maybeLabel,{onNone:()=>n(``,`src/page/progress.ts#onNone~2`),onSome:e=>n(`${e}: `,`src/page/progress.ts#onSome~2`)});return n(i.div([i.Class(`flex flex-col gap-4`)],[C(r.maybeLabel,{onNone:()=>n(i.empty,`src/page/progress.ts#onNone~3`),onSome:e=>n(i.h4([i.Class(`-mb-2 text-xs font-medium text-muted-foreground`)],[e]),`src/page/progress.ts#onSome~3`)}),a===0?M8(`No ${r.unit}s in the last ${e.windowDays} days yet.`,i):i.div([i.Class(`flex flex-col gap-4`)],[i.p([i.Class(F(`font-semibold tracking-tight`,S(r.maybeLabel)?`text-3xl`:`text-4xl`))],[s?T8(c):`${o} of ${a}`,i.span([i.Class(`ml-2 text-sm font-normal tracking-normal text-muted-foreground`)],[s?`remembered`:`remembered so far`])]),s?i.div([i.Role(`img`),i.AriaLabel(`${l}${T8(c)} remembered against a ${T8(t)} target`),i.Class(`relative pb-5`)],[i.div([i.Class(`h-2 overflow-hidden rounded-full bg-muted`)],[i.div([i.Class(`h-full rounded-full bg-primary`),i.Style({width:T8(c)})])]),i.span([i.Class(`absolute -top-1 h-4 w-px -translate-x-1/2 bg-foreground/70`),i.Style({left:T8(t)})]),i.span([i.Class(`absolute top-4 -translate-x-1/2 text-[11px] whitespace-nowrap text-muted-foreground`),i.Style({left:T8(t)})],[`${T8(t)} target`])]):i.empty,i.p([i.Class(`text-sm text-muted-foreground`)],[USe(e,t,r)])])]),`src/page/progress.ts#recallSampleView`)},WSe=(e,t)=>n(t.div([t.Class(`flex flex-col gap-4`)],[t.h3([t.Class(`text-sm font-medium`)],[`Actual recall`]),...e.ideaRetention.reviewed===0?[z8(e.retention,e.targetRetention,{unit:`review`,maybeLabel:b()},t)]:[z8(e.retention,e.targetRetention,{unit:`review`,maybeLabel:x(`Concepts`)},t),t.div([t.Class(`border-t pt-4`)],[z8(e.ideaRetention,e.targetRetention,{unit:`card`,maybeLabel:x(`Idea cards`)},t)])]]),`src/page/progress.ts#retentionView`),GSe=(e,t)=>n(A8(`memory`,`Memory health`,`How likely you are to remember what you studied.`,[e.cardCount===0?M8(`Nothing yet. Finish a lesson to start.`,t):t.div([t.Class(`grid gap-8 lg:grid-cols-[3fr_2fr] lg:gap-10`)],[t.div([t.Class(`flex flex-col gap-4`)],[t.h3([t.Class(`text-sm font-medium`)],[`Predicted recall`]),t.dl([t.Class(`grid grid-cols-3 gap-4`)],[j8(`Right now`,T8(I8(e,0)),b(),t),j8(`In 7 days`,T8(I8(e,7)),x(`without reviews`),t),j8(`In 30 days`,T8(I8(e,30)),x(`without reviews`),t)]),HSe(e,t),t.p([t.Class(`text-xs text-muted-foreground`)],[`Average of ${D8(e.cardCount,`concept`)}. Each review lifts recall back up.`])]),t.div([t.Class(`border-t pt-6 lg:border-t-0 lg:border-l lg:pt-0 lg:pl-10`)],[WSe(e,t)])])],t),`src/page/progress.ts#memoryView`),KSe=(e,t)=>n(e===0?0:Math.min(4,Math.max(1,Math.ceil(e/t*4))),`src/page/progress.ts#heatLevel`),B8=e=>n(e.lessons+e.reviews,`src/page/progress.ts#dayTotal`),V8=e=>n(B8(e)===0?`${k8(e.date)}: nothing`:`${k8(e.date)}: ${[e.lessons>0?D8(e.lessons,`lesson`):``,e.reviews>0?D8(e.reviews,`review`):``].filter(e=>n(e.length>0,`src/page/progress.ts#anonymous~18`)).join(`, `)}`,`src/page/progress.ts#dayDescription`),qSe=e=>{let t=t=>n(C(gr(Mi(e,t),e=>n(Pi(e),`src/page/progress.ts#anonymous~19`)),{onNone:()=>n(``,`src/page/progress.ts#onNone~4`),onSome:e=>n(O8(e.date,{month:`short`}),`src/page/progress.ts#onSome~4`)}),`src/page/progress.ts#monthOf`);return n(w(e,(e,r)=>{let i=t(r),a=r===0||i!==t(r-1),o=r===0&&t(1)!==i;return n(a&&!o?i:``,`src/page/progress.ts#anonymous~20`)}),`src/page/progress.ts#monthLabels`)},JSe=(e,t)=>{let r=Math.max(1,...w(e.days,B8)),i=aa(e.days,7),a=Ii(e.days),o=da(e.days,e=>n(B8(e)>0,`src/page/progress.ts#anonymous~21`));return n(t.figure([t.Class(`flex flex-col gap-2`)],[t.div([t.AriaHidden(!0),t.Class(`flex gap-2`)],[t.div([t.Class(`mt-6 grid grid-rows-7 gap-1 text-[10px] leading-5 text-muted-foreground`)],w([``,`Mon`,``,`Wed`,``,`Fri`,``],e=>n(t.span([t.Class(`h-5`)],[e]),`src/page/progress.ts#anonymous~22`))),t.div([t.Class(`flex flex-col gap-1`)],[t.div([t.Class(`grid auto-cols-[20px] grid-flow-col gap-1 text-[10px] leading-5 text-muted-foreground`)],w(qSe(i),e=>n(t.span([t.Class(`overflow-visible whitespace-nowrap`)],[e]),`src/page/progress.ts#anonymous~23`))),t.div([t.Class(`grid auto-cols-[20px] grid-flow-col grid-rows-7 gap-1`)],w(e.days,e=>n(t.div([t.Title(V8(e)),t.Class(F(`size-5 rounded-[4px]`,w8[KSe(B8(e),r)],Cr(a,t=>n(t.date===e.date,`src/page/progress.ts#anonymous~25`))&&`ring-1 ring-foreground/50 ring-offset-1 ring-offset-card`))]),`src/page/progress.ts#anonymous~24`)))])]),t.div([t.AriaHidden(!0),t.Class(`flex items-center gap-1 pl-9 text-[10px] text-muted-foreground`)],[`Less`,...w(w8,e=>n(t.span([t.Class(F(`size-2.5 rounded-[3px]`,e))]),`src/page/progress.ts#anonymous~26`)),`More`]),t.figcaption([t.Class(`sr-only`)],[xi(o,{onEmpty:()=>n(`No lessons or reviews in the last 12 weeks.`,`src/page/progress.ts#onEmpty~4`),onNonEmpty:e=>n(`Active on ${D8(e.length,`day`)} in the last 12 weeks: ${w(e,V8).join(`; `)}.`,`src/page/progress.ts#onNonEmpty~4`)})])]),`src/page/progress.ts#heatmapView`)},YSe=(e,t)=>n(A8(`activity`,`Activity`,`Your lessons and reviews over 12 weeks.`,[JSe(e,t),t.dl([t.Class(`grid grid-cols-3 gap-4 border-t pt-5`)],[j8(`Current streak`,D8(e.streakDays,`day`),x(e.streakDays===0?`start one today`:`in a row`),t),j8(`Active days`,`${e.activeDays}`,x(`in 12 weeks`),t),j8(`Practice time`,`${e.effortMinutes} min`,x(`${e.effortMinutesLastWeek} min this week`),t)])],t),`src/page/progress.ts#activityView`),XSe=(e,t,r)=>n([r.span([r.Class(`sm:hidden`)],[O8(e.date,{weekday:`narrow`})]),r.span([r.Class(`hidden sm:inline`)],[t===0?`Today`:O8(e.date,{weekday:`short`})])],`src/page/progress.ts#forecastLabel`),H8=e=>n(e.due+e.flashcards,`src/page/progress.ts#forecastTotal`),U8=(e,t,r)=>n(r?`${D8(e,`concept`)}, ${D8(t,`idea card`)}`:D8(e,`review`),`src/page/progress.ts#forecastCounts`),ZSe=(e,t,r)=>{let i=H8(e);return n(i===0?r.div([r.Class(`w-full max-w-6 rounded-t-[4px] bg-border`),r.Style({height:`2px`})]):r.div([r.Class(`flex w-full max-w-6 flex-col gap-[2px]`),r.Style({height:`${Math.max(4,i/t*100)}%`})],w(da([{count:e.flashcards,swatch:b8.light},{count:e.due,swatch:b8.strong}],e=>n(e.count>0,`src/page/progress.ts#anonymous~27`)),(e,t)=>n(r.div([r.Class(F(`min-h-[3px]`,e.swatch,t===0&&`rounded-t-[4px]`)),r.Style({flex:`${e.count} 1 0%`})]),`src/page/progress.ts#anonymous~28`))),`src/page/progress.ts#forecastColumn`)},QSe=(e,t)=>{let r=e.laterFlashcards>0||ma(e.days,e=>n(e.flashcards>0,`src/page/progress.ts#anonymous~29`)),i=Math.max(kSe,...w(e.days,H8)),a=t=>n(fa(e.days,0,(e,r)=>n(e+t(r),`src/page/progress.ts#anonymous~30`)),`src/page/progress.ts#sum`),o=a(H8),s=e.later+e.laterFlashcards,c=Pi(e.days),l=C(c,{onNone:()=>n(0,`src/page/progress.ts#onNone~5`),onSome:e=>n(e.overdue+e.flashcardsOverdue,`src/page/progress.ts#onSome~5`)}),u=C(c,{onNone:()=>n(0,`src/page/progress.ts#onNone~6`),onSome:H8});return n(A8(`forecast`,`Upcoming reviews`,`Reviews due in the next two weeks.`,[o===0&&s===0?M8(`Nothing yet. Finish a lesson to see its first review here.`,t):t.figure([t.Class(`flex flex-col gap-4`)],[r?N8(ASe,t):t.empty,t.div([t.AriaHidden(!0),t.Class(`grid h-52 grid-cols-14 items-end gap-1`)],w(e.days,(e,a)=>n(t.div([t.Title(`${k8(e.date)}: ${U8(e.due,e.flashcards,r)}`),t.Class(`flex h-full flex-col items-center gap-1`)],[t.div([t.Class(`flex w-full flex-1 flex-col items-center justify-end gap-1`)],[H8(e)>0?t.span([t.Class(`text-[11px] font-medium tabular-nums`)],[`${H8(e)}`]):t.empty,ZSe(e,i,t)]),t.span([t.Class(F(`text-[10px] leading-3 whitespace-nowrap`,a===0?`font-medium text-foreground`:`text-muted-foreground`))],XSe(e,a,t)),t.span([t.Class(`text-[10px] leading-3 text-muted-foreground tabular-nums`)],[O8(e.date,{day:`numeric`})])]),`src/page/progress.ts#anonymous~31`))),t.figcaption([t.Class(`sr-only`)],[r?`${U8(a(e=>n(e.due,`src/page/progress.ts#anonymous~32`)),a(e=>n(e.flashcards,`src/page/progress.ts#anonymous~33`)),!0)} in the next 14 days. After that, ${U8(e.later,e.laterFlashcards,!0)}.`:`${D8(o,`review`)} in the next 14 days, ${e.later} after that.`]),t.table([t.Class(`sr-only`)],[t.caption([],[`Reviews due per day`]),t.tbody([],w(e.days,e=>n(t.tr([],[t.th([t.Scope(`row`)],[k8(e.date)]),t.td([],[U8(e.due,e.flashcards,r)])]),`src/page/progress.ts#anonymous~34`)))])]),o===0&&s===0?t.empty:t.dl([t.Class(`grid grid-cols-3 gap-4 border-t pt-5`)],[j8(`Due today`,`${u}`,x(l>0?`${l} due now`:`none yet`),t),j8(`Next 14 days`,`${o}`,x(`including today`),t),j8(`Later`,`${s}`,x(`after two weeks`),t)]),l>0?t.a([t.Href(Mz()),t.Class(I(`Outline`,`Small`,`self-start`))],[L(`brain`,``,t),`Review the ${l} due now`]):t.empty],t),`src/page/progress.ts#forecastView`)},W8={Guided:`Explained first`,QuestionLed:`Questions first`},G8=(e,t)=>n(t===0?`–`:T8(E8(e,t)),`src/page/progress.ts#styleShare`),$Se=e=>{if(ma(e.arms,t=>n(t.lessons<e.minimumLessons||t.closingAnswered===0,`src/page/progress.ts#anonymous~35`)))return n(`Too early to tell. Each style needs ${e.minimumLessons} lessons.`,`src/page/progress.ts#styleLead`);let[t,r]=e.arms;if(t===void 0||r===void 0)return n(`Too early to tell.`,`src/page/progress.ts#styleLead`);let i=Math.round((E8(r.closingFirstTry,r.closingAnswered)-E8(t.closingFirstTry,t.closingAnswered))*100);return n(i===0?`So far both styles do the same.`:`So far, ${W8[i>0?`QuestionLed`:`Guided`].toLowerCase()} gets ${Math.abs(i)} points more right on the first try.`,`src/page/progress.ts#styleLead`)},eCe=(e,t)=>n(t.div([t.Class(`flex flex-col gap-3 rounded-xl bg-muted/40 p-4`)],[t.h3([t.Class(`text-sm font-medium`)],[W8[e.style]]),t.dl([t.Class(`grid grid-cols-3 gap-3`)],[j8(`Lessons`,`${e.lessons}`,b(),t),j8(`Right first try`,G8(e.closingFirstTry,e.closingAnswered),x(`${e.closingFirstTry} of ${e.closingAnswered}`),t),j8(`Kept at first review`,G8(e.firstReviewsRemembered,e.firstReviews),x(`${e.firstReviewsRemembered} of ${e.firstReviews}`),t)])]),`src/page/progress.ts#styleArmView`),tCe=(e,t)=>n(A8(`lesson-styles`,`Lesson style test`,`Do lessons that ask first help you more?`,pa(e.arms,e=>n(e.lessons===0,`src/page/progress.ts#anonymous~36`))?[M8(`No lessons in the test yet. It starts once you know the basics a lesson builds on.`,t)]:[t.p([t.Class(`text-lg leading-snug font-medium text-balance`)],[$Se(e)]),t.div([t.Class(`grid gap-4 lg:grid-cols-2`)],w(e.arms,e=>n(eCe(e,t),`src/page/progress.ts#anonymous~37`)))],t),`src/page/progress.ts#lessonStylesView`),nCe=(e,t)=>n(t.div([t.Class(`flex flex-col gap-5`)],[t.div([t.Class(`reveal`)],[PSe(e.totals,e.goals,t)]),Di(e.ideas.goals)?t.empty:t.div([t.Class(`reveal stagger-1`)],[BSe(e.ideas,t)]),t.div([t.Class(`reveal stagger-1`)],[GSe(e.memory,t)]),t.div([t.Class(`reveal stagger-2 grid gap-5 lg:grid-cols-2`)],[YSe(e.activity,t),QSe(e.forecast,t)]),t.div([t.Class(`reveal stagger-3`)],[tCe(e.lessonStyles,t)])]),`src/page/progress.ts#reportView`),rCe=e=>n(e.div([e.Role(`status`),e.AriaLabel(`Loading your progress`),e.Class(`flex flex-col gap-5`)],[e.div([e.Class(`h-72 animate-pulse rounded-xl bg-muted/60`)]),e.div([e.Class(`h-64 animate-pulse rounded-xl bg-muted/60`)]),e.div([e.Class(`grid gap-5 lg:grid-cols-2`)],[e.div([e.Class(`h-56 animate-pulse rounded-xl bg-muted/60`)]),e.div([e.Class(`h-56 animate-pulse rounded-xl bg-muted/60`)])])]),`src/page/progress.ts#loadingView`),iCe=(e,t)=>n(t.div([t.Role(`alert`),t.Class(Bz(`flex flex-col items-start gap-3 p-6`))],[t.p([t.Class(`font-medium`)],[`Couldn't load your progress`]),t.p([t.Class(`text-sm text-muted-foreground`)],[e]),t.button([t.Type(`button`),t.OnClick(_8.ClickedRetry()),t.Class(I(`Outline`,`Small`))],[L(`refresh`,``,t),`Try again`])]),`src/page/progress.ts#failedView`),aCe=qD((e,t)=>n(t.div([t.Class(`mx-auto flex w-full max-w-5xl flex-col gap-6 px-5 pt-8 pb-24`)],[t.h1([t.Class(`text-3xl font-semibold tracking-tight`)],[`Progress`]),g8.match(e.load,{Loading:()=>n(rCe(t),`src/page/progress.ts#Loading`),Failed:({error:e})=>n(iCe(e,t),`src/page/progress.ts#Failed`),Ready:({report:e})=>n(nCe(e,t),`src/page/progress.ts#Ready`)})]),`src/page/progress.ts#anonymous~38`)),K8=A({key:O,item:tL,attempt:k}),oCe=A({conceptTitle:O,goalTitle:O,grading:tb([`Again`,`Hard`,`Good`,`Easy`]),isFlashcard:Ky}),q8=pT({Loading:{},Failed:{error:O},Ready:{session:iL}}),J8=pT({Off:{},Offered:{offer:rL},Running:{answered:j(sL),budget:k},Done:{summary:cL}}),sCe=A({load:q8,queue:j(K8),maybeCurrent:Mb(K8),maybeQuiz:Mb(w3),maybeFlashcard:Mb(t3),questionShownAt:k,outcomes:j(oCe),maybeLastResult:Mb(oL),maybeError:Mb(O),checkIn:J8,isLeechActionBusy:Ky,checkedBasics:j(O),cards:j(HI),shownCards:j(O),requestedIdeas:j(O),loadedIdeas:j(O),isFetchingCards:Ky,isCardFetchFailed:Ky}),Y8=fT({SucceededFetchSession:{session:iL},FailedFetchSession:{error:O},GotQuizMessage:{message:T3},GotFlashcardMessage:{message:n3},CompletedMarkQuestionShown:{at:k},SucceededSubmitReview:{result:oL},FailedSubmitReview:{error:O},SucceededFetchFlashcards:{ideaKeys:j(O),cards:j(HI)},FailedFetchFlashcards:{ideaKeys:j(O),error:O},SucceededSubmitFlashcard:{result:JI},FailedSubmitFlashcard:{error:O},SucceededExplainFlashcard:{questionId:O,body:O},FailedExplainFlashcard:{questionId:O,error:O},ClickedRetryFlashcards:{},ClickedSkipFlashcard:{},ClickedReload:{},ClickedJustFive:{},ClickedStartCheckIn:{},ClickedSkipCheckIn:{},SucceededFetchCheckInStep:{step:lL},FailedFetchCheckInStep:{error:O},ClickedCheckBasics:{goalId:O,conceptId:O},SucceededFetchLeechProbes:{conceptId:O,probes:j($I)},FailedFetchLeechProbes:{error:O},ClickedFreshLesson:{goalId:O,conceptId:O},SucceededStartFreshLesson:{},FailedStartFreshLesson:{error:O}}),cCe=6,lCe=7,X8=N(`FetchSession`,{messages:[Y8.SucceededFetchSession,Y8.FailedFetchSession],execute:D(function*(){let e=yield*(yield*XR).reviews.session();return n(Y8.SucceededFetchSession({session:e}),`src/page/review.ts#anonymous`)}).pipe(rf(e=>n(T(Y8.FailedFetchSession({error:QR(e)})),`src/page/review.ts#anonymous~2`)))}),Z8=N(`MarkQuestionShown`,{messages:[Y8.CompletedMarkQuestionShown],execute:hd.pipe(ef(e=>n(Y8.CompletedMarkQuestionShown({at:e}),`src/page/review.ts#anonymous~3`)))}),uCe=N(`SubmitReview`,{args:{goalId:O,conceptId:O,questionId:O,response:FI,note:O,hintLevel:k,shownAt:k},messages:[Y8.SucceededSubmitReview,Y8.FailedSubmitReview],execute:e=>n(D(function*(){let t=yield*XR,r=yield*hd,i=yield*t.reviews.answer({payload:{goalId:nI.make(e.goalId),conceptId:rI.make(e.conceptId),answer:{questionId:OI.make(e.questionId),response:e.response,note:e.note,latencyMs:Math.max(0,r-e.shownAt),hintLevel:e.hintLevel}}});return n(Y8.SucceededSubmitReview({result:i}),`src/page/review.ts#anonymous~4`)}).pipe(rf(e=>n(T(Y8.FailedSubmitReview({error:QR(e)})),`src/page/review.ts#anonymous~5`))),`src/page/review.ts#execute`)}),dCe=N(`FetchFlashcards`,{args:{ideas:j(A({goalId:O,ideaId:O}))},messages:[Y8.SucceededFetchFlashcards,Y8.FailedFetchFlashcards],execute:({ideas:e})=>n(D(function*(){let t=yield*(yield*XR).flashcards.batch({payload:{ideas:w(e,e=>n({goalId:nI.make(e.goalId),ideaId:oI.make(e.ideaId)},`src/page/review.ts#anonymous~7`))}});return n(Y8.SucceededFetchFlashcards({ideaKeys:w(e,e=>n($8(e.goalId,e.ideaId),`src/page/review.ts#anonymous~8`)),cards:t.cards}),`src/page/review.ts#anonymous~6`)}).pipe(rf(t=>n(T(Y8.FailedFetchFlashcards({ideaKeys:w(e,e=>n($8(e.goalId,e.ideaId),`src/page/review.ts#anonymous~10`)),error:QR(t)})),`src/page/review.ts#anonymous~9`))),`src/page/review.ts#execute~2`)}),fCe=N(`SubmitFlashcard`,{args:{goalId:O,questionId:O,response:KI,recallMs:k,latencyMs:k},messages:[Y8.SucceededSubmitFlashcard,Y8.FailedSubmitFlashcard],execute:e=>n(D(function*(){let t=yield*(yield*XR).flashcards.answer({params:{goalId:nI.make(e.goalId)},payload:{questionId:OI.make(e.questionId),response:e.response,recallMs:e.recallMs,latencyMs:e.latencyMs,context:`Review`}});return n(Y8.SucceededSubmitFlashcard({result:t}),`src/page/review.ts#anonymous~11`)}).pipe(rf(e=>n(T(Y8.FailedSubmitFlashcard({error:QR(e)})),`src/page/review.ts#anonymous~12`))),`src/page/review.ts#execute~3`)}),pCe=N(`ExplainFlashcard`,{args:{goalId:O,questionId:O,response:KI},messages:[Y8.SucceededExplainFlashcard,Y8.FailedExplainFlashcard],execute:e=>n(D(function*(){let t=yield*(yield*XR).flashcards.explain({params:{goalId:nI.make(e.goalId)},payload:{questionId:OI.make(e.questionId),response:e.response}});return n(Y8.SucceededExplainFlashcard({questionId:e.questionId,body:t.body}),`src/page/review.ts#anonymous~13`)}).pipe(rf(t=>n(T(Y8.FailedExplainFlashcard({questionId:e.questionId,error:QR(t)})),`src/page/review.ts#anonymous~14`))),`src/page/review.ts#execute~4`)}),Q8=N(`FetchCheckInStep`,{args:{answered:j(sL)},messages:[Y8.SucceededFetchCheckInStep,Y8.FailedFetchCheckInStep],execute:({answered:e})=>n(D(function*(){let t=yield*(yield*XR).reviews.replacementNext({payload:{answered:e}});return n(Y8.SucceededFetchCheckInStep({step:t}),`src/page/review.ts#anonymous~15`)}).pipe(rf(e=>n(T(Y8.FailedFetchCheckInStep({error:QR(e)})),`src/page/review.ts#anonymous~16`))),`src/page/review.ts#execute~5`)}),mCe=N(`FetchLeechProbes`,{args:{goalId:O,conceptId:O},messages:[Y8.SucceededFetchLeechProbes,Y8.FailedFetchLeechProbes],execute:({goalId:e,conceptId:t})=>n(qz(e,t).pipe(ef(e=>n(Y8.SucceededFetchLeechProbes({conceptId:t,probes:e}),`src/page/review.ts#anonymous~17`)),rf(e=>n(T(Y8.FailedFetchLeechProbes({error:QR(e)})),`src/page/review.ts#anonymous~18`))),`src/page/review.ts#execute~6`)}),hCe=N(`StartFreshLesson`,{args:{goalId:O,conceptId:O},messages:[Y8.SucceededStartFreshLesson,Y8.FailedStartFreshLesson],execute:({goalId:e,conceptId:t})=>n(Jz(e,t).pipe(tf(Y8.SucceededStartFreshLesson()),rf(e=>n(T(Y8.FailedStartFreshLesson({error:QR(e)})),`src/page/review.ts#anonymous~19`))),`src/page/review.ts#execute~7`)}),gCe=()=>n({model:{load:q8.Loading(),queue:[],maybeCurrent:b(),maybeQuiz:b(),maybeFlashcard:b(),questionShownAt:0,outcomes:[],maybeLastResult:b(),maybeError:b(),checkIn:J8.Off(),isLeechActionBusy:!1,checkedBasics:[],cards:[],shownCards:[],requestedIdeas:[],loadedIdeas:[],isFetchingCards:!1,isCardFetchFailed:!1},commands:[X8()]},`src/page/review.ts#init`),$8=(e,t)=>n(`${e}/${t}`,`src/page/review.ts#ideaKey`),e5=e=>n($8(e.goalId,e.ideaId),`src/page/review.ts#slotKey`),t5=e=>n(e.item._tag===`ConceptItem`?x(e.item.item):b(),`src/page/review.ts#conceptItemOf`),n5=e=>n(e.item._tag===`FlashcardItem`?x(e.item.slot):b(),`src/page/review.ts#slotOf`),r5=e=>n(e._tag===`ConceptItem`?{conceptTitle:e.item.conceptTitle,goalTitle:e.item.goalTitle}:{conceptTitle:e.slot.conceptTitle,goalTitle:e.slot.goalTitle},`src/page/review.ts#titlesOf`),i5=(e,t)=>n({key:e,item:{_tag:`ConceptItem`,item:t},attempt:0},`src/page/review.ts#conceptEntry`),a5=e=>n(Y8.GotFlashcardMessage({message:e}),`src/page/review.ts#toFlashcardMessage`),o5=(e,t)=>{let r=t(e.model);return n({model:r.model,commands:[...e.commands??[],...r.commands??[]]},`src/page/review.ts#andThen`)},s5=e=>{let t=t=>n(e.requestedIdeas.includes(e5(t)),`src/page/review.ts#isRequested`),r=la(w([...bi(e.maybeCurrent),...e.queue],n5)),i=qi(r,e=>n(!t(e),`src/page/review.ts#anonymous~20`)),a=!e.isFetchingCards&&!e.isCardFetchFailed&&e.checkIn._tag===`Off`&&Cr(i,e=>n(e<lCe,`src/page/review.ts#anonymous~21`)),o=Vi(ga(da(r,e=>n(!t(e),`src/page/review.ts#anonymous~22`)),(e,t)=>n(e5(e)===e5(t),`src/page/review.ts#anonymous~23`)),cCe);return n(!a||Di(o)?{model:e}:{model:P(e,{requestedIdeas:e=>n([...e,...w(o,e5)],`src/page/review.ts#requestedIdeas`),isFetchingCards:()=>n(!0,`src/page/review.ts#isFetchingCards`)}),commands:[dCe({ideas:w(o,e=>n({goalId:e.goalId,ideaId:e.ideaId},`src/page/review.ts#anonymous~24`))})]},`src/page/review.ts#ensureCards`)},_Ce=(e,t)=>n(lr(Tz(da(e.cards,e=>n($8(e.goalId,e.ideaId)===e5(t),`src/page/review.ts#anonymous~25`)),e=>n(e.questionId,`src/page/review.ts#anonymous~26`),e.shownCards)),`src/page/review.ts#phrasingFor`),c5=e=>n(C(gr(e.maybeCurrent,e=>n(n5(e),`src/page/review.ts#anonymous~27`)),{onNone:()=>n({model:e},`src/page/review.ts#onNone`),onSome:t=>n(S(e.maybeFlashcard)?{model:e}:C(_Ce(e,t),{onNone:()=>n(e.loadedIdeas.includes(e5(t))?l5(e):{model:e},`src/page/review.ts#onNone~2`),onSome:t=>{let r=i3(t);return n({model:P(e,{maybeFlashcard:()=>n(x(r.model),`src/page/review.ts#maybeFlashcard`),shownCards:wi(t.questionId),maybeError:()=>n(b(),`src/page/review.ts#maybeError`)}),commands:BO(r.commands??[],a5)},`src/page/review.ts#onSome~2`)}}),`src/page/review.ts#onSome`)}),`src/page/review.ts#showCardIfReady`),l5=e=>n(o5(xi(e.queue,{onEmpty:()=>n({model:P(e,{maybeCurrent:()=>n(b(),`src/page/review.ts#maybeCurrent`),maybeQuiz:()=>n(b(),`src/page/review.ts#maybeQuiz`),maybeFlashcard:()=>n(b(),`src/page/review.ts#maybeFlashcard~2`)})},`src/page/review.ts#onEmpty`),onNonEmpty:([t,...r])=>{let i=t.item,a=P(e,{maybeCurrent:()=>n(x(t),`src/page/review.ts#maybeCurrent~2`),queue:()=>n(r,`src/page/review.ts#queue`),maybeQuiz:()=>n(b(),`src/page/review.ts#maybeQuiz~2`),maybeFlashcard:()=>n(b(),`src/page/review.ts#maybeFlashcard~3`),maybeLastResult:()=>n(b(),`src/page/review.ts#maybeLastResult`)});return n(i._tag===`ConceptItem`?{model:P(a,{maybeQuiz:()=>n(x(D3(i.item.question,{canHint:!0})),`src/page/review.ts#maybeQuiz~3`)}),commands:[Z8()]}:c5(a),`src/page/review.ts#onNonEmpty`)}}),s5),`src/page/review.ts#enterNext`),u5=(e,t,r)=>{let i=new Set(la(w(e.queue,e=>n(mr(t5(e),e=>n(e.conceptId,`src/page/review.ts#anonymous~29`)),`src/page/review.ts#anonymous~28`))));return n(xi(da(t,e=>n(!i.has(e.conceptId),`src/page/review.ts#anonymous~30`)),{onEmpty:()=>n(e,`src/page/review.ts#onEmpty~2`),onNonEmpty:t=>n(P(e,{queue:e=>n([...w(t,(t,i)=>n(i5(`${r}:${t.conceptId}:${e.length}:${i}`,t),`src/page/review.ts#anonymous~31`)),...e],`src/page/review.ts#queue~2`)}),`src/page/review.ts#onNonEmpty~2`)}),`src/page/review.ts#queueNext`)},vCe=(e,t)=>n(u5(u5(e,C(gr(e.maybeCurrent,t5),{onNone:()=>n([],`src/page/review.ts#onNone~3`),onSome:e=>n(Yz(e,t.creditedConcepts),`src/page/review.ts#onSome~3`)}),`covered`),t.probes,`probe`),`src/page/review.ts#queueFollowUps`),yCe=(e,t)=>n(e._tag===`ConceptItem`?{_tag:`ConceptItem`,item:{...e.item,...sr(t,()=>n({},`src/page/review.ts#anonymous~32`)),alsoCovers:[]}}:e,`src/page/review.ts#reAskItem`),d5=(e,t,r)=>n(C(e.maybeCurrent,{onNone:()=>n(e,`src/page/review.ts#onNone~4`),onSome:i=>n(wz(t,i.attempt)?P(e,{queue:e=>{let t={key:`${i.key}:again`,item:yCe(i.item,r),attempt:i.attempt+1};return n(sr(Zi(e,Math.min(2,e.length),t),()=>n(wi(e,t),`src/page/review.ts#anonymous~33`)),`src/page/review.ts#queue~3`)}}):e,`src/page/review.ts#onSome~4`)}),`src/page/review.ts#reAsk`),f5=e=>n(e.checkIn._tag===`Running`,`src/page/review.ts#isCheckingIn`),bCe=e=>n(J8.match(e.checkIn,{Off:()=>n([],`src/page/review.ts#Off`),Offered:()=>n([],`src/page/review.ts#Offered`),Running:({answered:e})=>n(e,`src/page/review.ts#Running`),Done:()=>n([],`src/page/review.ts#Done`)}),`src/page/review.ts#answeredSoFar`),p5=e=>n(f5(e)?{model:P(e,{maybeCurrent:()=>n(b(),`src/page/review.ts#maybeCurrent~3`),maybeQuiz:()=>n(b(),`src/page/review.ts#maybeQuiz~4`),maybeLastResult:()=>n(b(),`src/page/review.ts#maybeLastResult~2`)}),commands:[Q8({answered:bCe(e)})]}:l5(e),`src/page/review.ts#continueAfterFeedback`),xCe=LN({update:F3,read:e=>n(e.maybeQuiz,`src/page/review.ts#read`),write:(e,t)=>n(P(e,{maybeQuiz:()=>n(x(t),`src/page/review.ts#maybeQuiz~5`)}),`src/page/review.ts#write`),toParentMessage:e=>n(Y8.GotQuizMessage({message:e}),`src/page/review.ts#toParentMessage`),foldOutMessage:E3.match({SubmittedAnswer:({response:e,note:t,hintLevel:r})=>n((i=>n({model:i,commands:bi(mr(gr(i.maybeCurrent,t5),a=>n(uCe({goalId:a.goalId,conceptId:a.conceptId,questionId:a.question.id,response:e,note:t,hintLevel:r,shownAt:i.questionShownAt}),`src/page/review.ts#anonymous~35`)))},`src/page/review.ts#anonymous~34`)),`src/page/review.ts#SubmittedAnswer`),ContinuedAfterFeedback:()=>n(p5,`src/page/review.ts#ContinuedAfterFeedback`)})}),SCe=LN({update:g3,read:e=>n(e.maybeFlashcard,`src/page/review.ts#read~2`),write:(e,t)=>n(P(e,{maybeFlashcard:()=>n(x(t),`src/page/review.ts#maybeFlashcard~4`)}),`src/page/review.ts#write~2`),toParentMessage:a5,foldOutMessage:r3.match({Answered:({response:e,recallMs:t,latencyMs:r})=>n((i=>n({model:i,commands:bi(mr(i.maybeFlashcard,i=>n(fCe({goalId:i.card.goalId,questionId:i.card.questionId,response:e,recallMs:t,latencyMs:r}),`src/page/review.ts#anonymous~37`)))},`src/page/review.ts#anonymous~36`)),`src/page/review.ts#Answered`),Continued:()=>n(p5,`src/page/review.ts#Continued`),RequestedExplanation:({response:e})=>n((t=>n({model:t,commands:bi(mr(t.maybeFlashcard,t=>n(pCe({goalId:t.card.goalId,questionId:t.card.questionId,response:e}),`src/page/review.ts#anonymous~39`)))},`src/page/review.ts#anonymous~38`)),`src/page/review.ts#RequestedExplanation`)})}),CCe=(e,t)=>n(J8.match(e.checkIn,{Off:()=>n(e,`src/page/review.ts#Off~2`),Offered:()=>n(e,`src/page/review.ts#Offered~2`),Done:()=>n(e,`src/page/review.ts#Done~2`),Running:({answered:r,budget:i})=>n(C(gr(e.maybeCurrent,t5),{onNone:()=>n(e,`src/page/review.ts#onNone~5`),onSome:a=>n(P(e,{checkIn:()=>n(J8.Running({budget:i,answered:wi(r,{goalId:a.goalId,conceptId:a.conceptId,verdict:t.feedback.verdict,isMultipleChoice:a.question.kind===`MultipleChoice`})}),`src/page/review.ts#checkIn`)}),`src/page/review.ts#onSome~5`)}),`src/page/review.ts#Running~2`)}),`src/page/review.ts#recordCheckInAnswer`),m5=(e,t,r)=>n(P(e,{outcomes:i=>n(C(e.maybeCurrent,{onNone:()=>n(i,`src/page/review.ts#onNone~6`),onSome:e=>n(e.attempt===0?wi(i,{...r5(e.item),grading:t,isFlashcard:r}):i,`src/page/review.ts#onSome~6`)}),`src/page/review.ts#outcomes`)}),`src/page/review.ts#withOutcome`),h5=(e,t)=>n(m5(P(e,{maybeQuiz:mr(e=>n(O3(e,t.feedback),`src/page/review.ts#anonymous~40`)),maybeLastResult:()=>n(x(t),`src/page/review.ts#maybeLastResult~3`)}),t.grading,!1),`src/page/review.ts#withResult`),wCe=(e,t)=>n(Y8.match(t,{SucceededFetchSession:({session:t})=>{let r=P(e,{load:()=>n(q8.Ready({session:t}),`src/page/review.ts#load`),queue:()=>n(w(t.items,(e,t)=>n({key:`${t}:${e._tag===`ConceptItem`?e.item.conceptId:e.slot.ideaId}`,item:e,attempt:0},`src/page/review.ts#anonymous~41`)),`src/page/review.ts#queue~4`),outcomes:()=>n([],`src/page/review.ts#outcomes~2`),maybeCurrent:()=>n(b(),`src/page/review.ts#maybeCurrent~4`),maybeQuiz:()=>n(b(),`src/page/review.ts#maybeQuiz~6`),maybeFlashcard:()=>n(b(),`src/page/review.ts#maybeFlashcard~5`),maybeLastResult:()=>n(b(),`src/page/review.ts#maybeLastResult~4`),cards:()=>n([],`src/page/review.ts#cards`),shownCards:()=>n([],`src/page/review.ts#shownCards`),requestedIdeas:()=>n([],`src/page/review.ts#requestedIdeas~2`),loadedIdeas:()=>n([],`src/page/review.ts#loadedIdeas`),isFetchingCards:()=>n(!1,`src/page/review.ts#isFetchingCards~2`),isCardFetchFailed:()=>n(!1,`src/page/review.ts#isCardFetchFailed`),checkIn:()=>n(C(t.maybeReplacement,{onNone:()=>n(J8.Off(),`src/page/review.ts#onNone~7`),onSome:e=>n(J8.Offered({offer:e}),`src/page/review.ts#onSome~7`)}),`src/page/review.ts#checkIn~2`)});return n(S(t.maybeReplacement)?{model:r}:l5(r),`src/page/review.ts#SucceededFetchSession`)},FailedFetchSession:({error:t})=>n({model:P(e,{load:()=>n(q8.Failed({error:t}),`src/page/review.ts#load~2`)})},`src/page/review.ts#FailedFetchSession`),GotQuizMessage:({message:t})=>n(xCe(e,t),`src/page/review.ts#GotQuizMessage`),GotFlashcardMessage:({message:t})=>n(SCe(e,t),`src/page/review.ts#GotFlashcardMessage`),CompletedMarkQuestionShown:({at:t})=>n({model:P(e,{questionShownAt:()=>n(t,`src/page/review.ts#questionShownAt`)})},`src/page/review.ts#CompletedMarkQuestionShown`),SucceededSubmitReview:({result:t})=>{let r=d5(h5(e,t),t.grading,t.maybeVariant),i=Cr(e.maybeCurrent,e=>n(e.attempt===0,`src/page/review.ts#anonymous~42`));return n({model:f5(e)?h5(CCe(e,t),t):i?vCe(r,t):r},`src/page/review.ts#SucceededSubmitReview`)},FailedSubmitReview:({error:t})=>n({model:P(e,{maybeQuiz:mr(k3),maybeError:()=>n(x(t),`src/page/review.ts#maybeError~2`)})},`src/page/review.ts#FailedSubmitReview`),SucceededFetchFlashcards:({ideaKeys:t,cards:r})=>n(o5(c5(P(e,{cards:e=>n([...e,...da(r,t=>n(!ma(e,e=>n(e.questionId===t.questionId,`src/page/review.ts#anonymous~44`)),`src/page/review.ts#anonymous~43`))],`src/page/review.ts#cards~2`),loadedIdeas:e=>n([...e,...t],`src/page/review.ts#loadedIdeas~2`),isFetchingCards:()=>n(!1,`src/page/review.ts#isFetchingCards~3`)})),s5),`src/page/review.ts#SucceededFetchFlashcards`),FailedFetchFlashcards:({ideaKeys:t,error:r})=>n({model:P(e,{requestedIdeas:e=>n(da(e,e=>n(!t.includes(e),`src/page/review.ts#anonymous~45`)),`src/page/review.ts#requestedIdeas~3`),isFetchingCards:()=>n(!1,`src/page/review.ts#isFetchingCards~4`),isCardFetchFailed:()=>n(!0,`src/page/review.ts#isCardFetchFailed~2`),maybeError:()=>n(x(r),`src/page/review.ts#maybeError~3`)})},`src/page/review.ts#FailedFetchFlashcards`),ClickedRetryFlashcards:()=>n(s5(P(e,{isCardFetchFailed:()=>n(!1,`src/page/review.ts#isCardFetchFailed~3`),maybeError:()=>n(b(),`src/page/review.ts#maybeError~4`)})),`src/page/review.ts#ClickedRetryFlashcards`),ClickedSkipFlashcard:()=>n(l5(P(e,{isCardFetchFailed:()=>n(!1,`src/page/review.ts#isCardFetchFailed~4`),maybeError:()=>n(b(),`src/page/review.ts#maybeError~5`)})),`src/page/review.ts#ClickedSkipFlashcard`),SucceededSubmitFlashcard:({result:t})=>n({model:d5(m5(P(e,{maybeFlashcard:mr(e=>n(a3(e,t),`src/page/review.ts#anonymous~46`))}),t.grading,!0),t.grading,b())},`src/page/review.ts#SucceededSubmitFlashcard`),FailedSubmitFlashcard:({error:t})=>n({model:P(e,{maybeFlashcard:mr(o3),maybeError:()=>n(x(t),`src/page/review.ts#maybeError~6`)})},`src/page/review.ts#FailedSubmitFlashcard`),SucceededExplainFlashcard:({questionId:t,body:r})=>n({model:P(e,{maybeFlashcard:mr(e=>n(e.card.questionId===t?s3(e,r):e,`src/page/review.ts#anonymous~47`))})},`src/page/review.ts#SucceededExplainFlashcard`),FailedExplainFlashcard:({questionId:t})=>n({model:P(e,{maybeFlashcard:mr(e=>n(e.card.questionId===t?c3(e):e,`src/page/review.ts#anonymous~48`))})},`src/page/review.ts#FailedExplainFlashcard`),ClickedJustFive:()=>n({model:x5(e)?P(e,{queue:e=>n(Vi(e,4),`src/page/review.ts#queue~5`)}):e},`src/page/review.ts#ClickedJustFive`),ClickedReload:()=>n({model:P(e,{load:()=>n(q8.Loading(),`src/page/review.ts#load~3`),checkIn:()=>n(J8.Off(),`src/page/review.ts#checkIn~3`)}),commands:[X8()]},`src/page/review.ts#ClickedReload`),ClickedStartCheckIn:()=>n(J8.match(e.checkIn,{Off:()=>n({model:e},`src/page/review.ts#Off~3`),Running:()=>n({model:e},`src/page/review.ts#Running~3`),Done:()=>n({model:e},`src/page/review.ts#Done~3`),Offered:({offer:t})=>n({model:P(e,{checkIn:()=>n(J8.Running({answered:[],budget:t.questionBudget}),`src/page/review.ts#checkIn~4`)}),commands:[Q8({answered:[]})]},`src/page/review.ts#Offered~3`)}),`src/page/review.ts#ClickedStartCheckIn`),ClickedSkipCheckIn:()=>n(l5(P(e,{checkIn:()=>n(J8.Off(),`src/page/review.ts#checkIn~5`)})),`src/page/review.ts#ClickedSkipCheckIn`),SucceededFetchCheckInStep:({step:t})=>n(C(t.maybeItem,{onNone:()=>n({model:P(e,{checkIn:()=>n(J8.Done({summary:t.summary}),`src/page/review.ts#checkIn~6`),maybeCurrent:()=>n(b(),`src/page/review.ts#maybeCurrent~5`),maybeQuiz:()=>n(b(),`src/page/review.ts#maybeQuiz~7`),maybeLastResult:()=>n(b(),`src/page/review.ts#maybeLastResult~5`)})},`src/page/review.ts#onNone~8`),onSome:r=>n({model:P(e,{maybeCurrent:()=>n(x(i5(`check-in:${t.asked}:${r.conceptId}`,r)),`src/page/review.ts#maybeCurrent~6`),maybeQuiz:()=>n(x(D3(r.question)),`src/page/review.ts#maybeQuiz~8`),maybeFlashcard:()=>n(b(),`src/page/review.ts#maybeFlashcard~6`),maybeLastResult:()=>n(b(),`src/page/review.ts#maybeLastResult~6`),checkIn:e=>n(J8.match(e,{Off:()=>n(e,`src/page/review.ts#Off~4`),Offered:()=>n(e,`src/page/review.ts#Offered~4`),Done:()=>n(e,`src/page/review.ts#Done~4`),Running:({answered:e})=>n(J8.Running({answered:e,budget:t.budget}),`src/page/review.ts#Running~4`)}),`src/page/review.ts#checkIn~7`)}),commands:[Z8()]},`src/page/review.ts#onSome~8`)}),`src/page/review.ts#SucceededFetchCheckInStep`),FailedFetchCheckInStep:({error:t})=>n({model:P(e,{maybeError:()=>n(x(t),`src/page/review.ts#maybeError~7`)})},`src/page/review.ts#FailedFetchCheckInStep`),ClickedCheckBasics:({goalId:t,conceptId:r})=>n({model:P(e,{isLeechActionBusy:()=>n(!0,`src/page/review.ts#isLeechActionBusy`)}),commands:[mCe({goalId:t,conceptId:r})]},`src/page/review.ts#ClickedCheckBasics`),SucceededFetchLeechProbes:({conceptId:t,probes:r})=>n({model:u5(P(e,{isLeechActionBusy:()=>n(!1,`src/page/review.ts#isLeechActionBusy~2`),checkedBasics:wi(t)}),r,`basics`)},`src/page/review.ts#SucceededFetchLeechProbes`),FailedFetchLeechProbes:({error:t})=>n({model:P(e,{isLeechActionBusy:()=>n(!1,`src/page/review.ts#isLeechActionBusy~3`),maybeError:()=>n(x(t),`src/page/review.ts#maybeError~8`)})},`src/page/review.ts#FailedFetchLeechProbes`),ClickedFreshLesson:({goalId:t,conceptId:r})=>n({model:P(e,{isLeechActionBusy:()=>n(!0,`src/page/review.ts#isLeechActionBusy~4`)}),commands:[hCe({goalId:t,conceptId:r})]},`src/page/review.ts#ClickedFreshLesson`),SucceededStartFreshLesson:()=>n({model:P(e,{isLeechActionBusy:()=>n(!1,`src/page/review.ts#isLeechActionBusy~5`)})},`src/page/review.ts#SucceededStartFreshLesson`),FailedStartFreshLesson:({error:t})=>n({model:P(e,{isLeechActionBusy:()=>n(!1,`src/page/review.ts#isLeechActionBusy~6`),maybeError:()=>n(x(t),`src/page/review.ts#maybeError~9`)})},`src/page/review.ts#FailedStartFreshLesson`)}),`src/page/review.ts#update`),TCe=lA(I3)({read:e=>n(e.maybeQuiz,`src/page/review.ts#read~3`),toParentMessage:e=>n(Y8.GotQuizMessage({message:e}),`src/page/review.ts#toParentMessage~2`)}),ECe=lA(_3)({read:e=>n(e.maybeFlashcard,`src/page/review.ts#read~4`),toParentMessage:a5}),DCe={reviewQuizKeyboard:TCe.keyboard,reviewFlashcardKeyboard:ECe.keyboard},OCe=e=>{if(e<1)return n(`in under an hour`,`src/page/review.ts#formatHoursAway`);if(e<36)return n(`in about ${Math.round(e)} hours`,`src/page/review.ts#formatHoursAway`);let t=Math.round(e/24);return n(t<60?`in ${t} days`:`in about ${Math.round(t/30)} months`,`src/page/review.ts#formatHoursAway`)},kCe=(e,t,r)=>{let i=da(Yz(t,e.creditedConcepts),t=>n(!ma(e.probes,e=>n(e.conceptId===t.conceptId,`src/page/review.ts#anonymous~50`)),`src/page/review.ts#anonymous~49`));return n(r.div([r.Class(`pop-in flex flex-wrap items-center gap-2 text-sm text-muted-foreground`)],[L(`clock`,`size-4`,r),e.counted?`Next review ${OCe(e.nextDueInHours)}`:`Already reviewed today. The schedule stays the same.`,xi(e.probes,{onEmpty:()=>n(r.empty,`src/page/review.ts#onEmpty~3`),onNonEmpty:e=>n(r.span([r.Class(zz(`Warning`))],[`${e.length} quick check${e.length===1?``:`s`} next`]),`src/page/review.ts#onNonEmpty~3`)}),xi(e.creditedConcepts,{onEmpty:()=>n(r.empty,`src/page/review.ts#onEmpty~4`),onNonEmpty:e=>n(r.span([r.Class(zz(`Info`))],[`Also refreshed ${e.length} more`]),`src/page/review.ts#onNonEmpty~4`)}),xi(i,{onEmpty:()=>n(r.empty,`src/page/review.ts#onEmpty~5`),onNonEmpty:e=>n(r.span([r.Class(zz(`Neutral`))],[`${e.length===1?e[0]?.conceptTitle??``:`${e.length} others`} get${e.length===1?`s`:``} ${e.length===1?`its`:`their`} own question`]),`src/page/review.ts#onNonEmpty~5`)})]),`src/page/review.ts#scheduleNote`)},ACe=e=>n(S(e.maybeLastResult)||Cr(e.maybeFlashcard,u3),`src/page/review.ts#isCurrentAnswered`),jCe=(e,t)=>{let r=e.outcomes.length,i=J8.match(e.checkIn,{Off:()=>n(r+e.queue.length+(S(e.maybeCurrent)&&!ACe(e)?1:0),`src/page/review.ts#Off~5`),Offered:()=>n(r+e.queue.length,`src/page/review.ts#Offered~5`),Running:({budget:e})=>n(Math.max(e,r),`src/page/review.ts#Running~5`),Done:()=>n(r,`src/page/review.ts#Done~5`)}),a=i===0?100:Math.round(r/i*100);return n(t.div([t.Class(`h-1 overflow-hidden rounded-full bg-muted`)],[t.div([t.Class(`h-full rounded-full bg-primary transition-[width] duration-500`),t.Style({width:`${a}%`})])]),`src/page/review.ts#progressView`)},MCe=(e,t,r)=>{let i=t=>n(e.outcomes.filter(e=>n(e.grading===t,`src/page/review.ts#anonymous~51`)).length,`src/page/review.ts#count`),a=e.outcomes.filter(e=>n(e.isFlashcard,`src/page/review.ts#anonymous~52`)).length,o=e.outcomes.length-a;return n(r.div([r.Class(Bz(`reveal flex flex-col gap-5 p-6 sm:p-8`))],[r.div([r.Class(`flex items-center gap-3`)],[r.span([r.Class(`flex size-10 items-center justify-center rounded-xl bg-success/12 text-success`)],[L(`check`,`size-5`,r)]),r.div([],[r.h2([r.Class(`text-xl font-semibold`)],[Di(e.outcomes)?`Nothing due right now`:`Review done`]),r.p([r.Class(`text-sm text-muted-foreground`)],[Di(e.outcomes)?`Everything is still fresh. Come back later.`:`${LCe(o,a)} Each comes back just before you'd forget it.`])])]),PCe(e.outcomes,r),i(`Again`)+i(`Hard`)>0?r.p([r.Class(`rounded-lg bg-muted/50 px-4 py-3 text-sm text-muted-foreground`)],[`Hard ones stick best. Misses come back sooner. `,r.a([r.Href(Pz()),r.Class(`font-medium text-foreground underline-offset-4 hover:underline`)],[`See your progress`])]):r.empty,r.p([r.Class(`text-sm text-muted-foreground`)],[`Coming up: ${t.dueTomorrow} in 24 hours, ${t.dueThisWeek} this week.`]),r.div([r.Class(`flex justify-end gap-2`)],[r.button([r.Type(`button`),r.OnClick(Y8.ClickedReload()),r.Class(I(`Ghost`,`Medium`))],[L(`refresh`,``,r),`Check again`]),r.a([r.Href(Dz()),r.Class(I(`Primary`,`Medium`))],[`Learn something new`,L(`arrowRight`,``,r)])])]),`src/page/review.ts#summaryView`)},NCe=e=>{let t=(e,t)=>n(e.goalTitle===t.goalTitle&&e.conceptTitle===t.conceptTitle,`src/page/review.ts#isSameConcept`);return n(w(ga(e,t),r=>n({title:r.conceptTitle,needsPractice:ma(e,e=>n(t(e,r)&&(e.grading===`Again`||e.grading===`Hard`),`src/page/review.ts#anonymous~54`))},`src/page/review.ts#anonymous~53`)),`src/page/review.ts#sessionConcepts`)},g5=5,_5=(e,t,r,i,a)=>n(Di(i)?a.empty:a.div([a.Class(`flex flex-col gap-2 rounded-xl bg-muted/50 p-4`)],[a.p([a.Class(F(`flex items-center gap-1.5 font-semibold`,r))],[L(t,`size-4`,a),e]),a.ul([a.AriaLabel(e),a.Class(`flex flex-col gap-1 text-sm`)],[...w(Vi(i,g5),e=>n(a.li([],[e]),`src/page/review.ts#anonymous~55`)),...i.length>g5?[a.li([a.Class(`text-muted-foreground`)],[`and ${i.length-g5} more`])]:[]])]),`src/page/review.ts#conceptListView`),PCe=(e,t)=>{let r=NCe(e),i=e=>n(w(da(r,t=>n(t.needsPractice===e,`src/page/review.ts#anonymous~56`)),e=>n(e.title,`src/page/review.ts#anonymous~57`)),`src/page/review.ts#titlesWhere`);return n(Di(r)?t.empty:t.div([t.Class(`grid gap-2 sm:grid-cols-2`)],[_5(`Strong`,`check`,`text-success`,i(!1),t),_5(`Needs practice`,`refresh`,`text-amber-600 dark:text-amber-400`,i(!0),t)]),`src/page/review.ts#sessionConceptsView`)},FCe=[`Second`,`Third`,`Fourth`,`Fifth`],ICe=e=>n(C(Mi(FCe,e-1),{onNone:()=>n(`Try ${e+1}`,`src/page/review.ts#onNone~9`),onSome:e=>n(`${e} try`,`src/page/review.ts#onSome~9`)}),`src/page/review.ts#tryLabel`),LCe=(e,t)=>n(`You did ${[...e>0?[`${e} concept${e===1?``:`s`}`]:[],...t>0?[`${t} card${t===1?``:`s`}`]:[]].join(` and `)}.`,`src/page/review.ts#doneText`),RCe=(e,t)=>n(t.div([t.Class(Bz(`reveal flex flex-col gap-4 p-6 sm:p-8`))],[t.div([t.Class(`flex items-center gap-3`)],[t.span([t.Class(`flex size-10 items-center justify-center rounded-xl bg-success/12 text-success`)],[L(`check`,`size-5`,t)]),t.h2([t.Class(`text-xl font-semibold`)],[`Check-in done`])]),t.p([t.Class(`text-sm leading-relaxed text-muted-foreground`)],[rB(e)]),t.div([t.Class(`flex flex-wrap justify-end gap-2`)],[t.a([t.Href(Dz()),t.Class(I(`Ghost`,`Medium`))],[`Back home`]),t.button([t.Type(`button`),t.OnClick(Y8.ClickedReload()),t.Class(I(`Primary`,`Medium`))],[`Keep reviewing`,L(`arrowRight`,``,t)])])]),`src/page/review.ts#checkInDoneView`),zCe=(e,t,r)=>n(C(gr(e.maybeLastResult,e=>n(cr(e.maybeLeech,()=>n(t.maybeLeech,`src/page/review.ts#anonymous~59`)),`src/page/review.ts#anonymous~58`)),{onNone:()=>n(r.empty,`src/page/review.ts#onNone~10`),onSome:t=>n(Qz(t,{maybeCheckBasics:f5(e)?b():x(Y8.ClickedCheckBasics({goalId:t.goalId,conceptId:t.conceptId})),freshLesson:Y8.ClickedFreshLesson({goalId:t.goalId,conceptId:t.conceptId}),isBusy:e.isLeechActionBusy,isChecked:e.checkedBasics.includes(t.conceptId)},r),`src/page/review.ts#onSome~10`)}),`src/page/review.ts#leechView`),v5=(e,t,r,i)=>{let a=r5(e.item);return n(i.div([i.Class(`flex flex-wrap items-center gap-2 text-sm`)],[i.span([i.Class(`font-medium`)],[a.conceptTitle]),i.span([i.Class(`text-muted-foreground`)],[`· ${a.goalTitle}`]),e.attempt>0?i.span([i.Class(zz(`Warning`))],[ICe(e.attempt)]):i.empty,...t,i.span([i.Class(F(`ml-auto text-xs text-muted-foreground`))],[`Memory strength ${Math.round(r*100)}%`])]),`src/page/review.ts#itemHeader`)},y5=e=>n(f5(e)||!Di(e.queue)?`Next`:`Finish`,`src/page/review.ts#continueLabel`),BCe=(e,t,r,i)=>n(i.div([i.Class(`flex flex-col gap-3`)],[v5(t,S(r.maybeLeech)?[i.span([i.Class(zz(`Warning`))],[`Keeps slipping`])]:[],r.retrievability,i),Xz(r,i),C(e.maybeQuiz,{onNone:()=>n(i.empty,`src/page/review.ts#onNone~11`),onSome:a=>n(i.submodel({slotId:`review-${t.key}`,model:a,view:V3(y5(e),x(Az({goalId:r.goalId,conceptId:r.conceptId}))),toParentMessage:e=>n(Y8.GotQuizMessage({message:e}),`src/page/review.ts#toParentMessage~3`)}),`src/page/review.ts#onSome~11`)}),C(e.maybeLastResult,{onNone:()=>n(i.empty,`src/page/review.ts#onNone~12`),onSome:e=>n(kCe(e,r,i),`src/page/review.ts#onSome~12`)}),zCe(e,r,i)]),`src/page/review.ts#conceptView`),VCe=(e,t)=>n(t.div([t.Class(Bz(`flex flex-col items-center gap-4 p-10 text-center`))],e.isCardFetchFailed?[t.p([t.Class(`font-medium`)],[`This card didn't load.`]),t.div([t.Class(`flex flex-wrap justify-center gap-2`)],[t.button([t.Type(`button`),t.OnClick(Y8.ClickedSkipFlashcard()),t.Class(I(`Ghost`,`Large`))],[`Skip it`]),t.button([t.Type(`button`),t.OnClick(Y8.ClickedRetryFlashcards()),t.Class(I(`Primary`,`Large`))],[L(`refresh`,``,t),`Try again`])])]:[L(`layers`,`size-6 text-primary`,t),t.p([t.Class(`shimmer-text text-base font-medium`)],[`Getting your card ready…`])]),`src/page/review.ts#cardWaitingView`),HCe=(e,t,r,i)=>n(i.div([i.Class(`flex flex-col gap-3`)],[v5(t,[i.span([i.Class(zz(`Info`))],[`Card`])],r.retrievability,i),C(e.maybeFlashcard,{onNone:()=>n(VCe(e,i),`src/page/review.ts#onNone~13`),onSome:r=>n(i.submodel({slotId:`flashcard-${t.key}`,model:r,view:x3(y5(e)),toParentMessage:a5}),`src/page/review.ts#onSome~13`)})]),`src/page/review.ts#flashcardView`),b5=(e,t,r)=>n(t.item._tag===`ConceptItem`?BCe(e,t,t.item.item,r):HCe(e,t,t.item.slot,r),`src/page/review.ts#currentView`),UCe=(e,t)=>n(J8.match(e.checkIn,{Off:()=>n(t.empty,`src/page/review.ts#Off~6`),Offered:()=>n(t.empty,`src/page/review.ts#Offered~6`),Done:()=>n(t.empty,`src/page/review.ts#Done~6`),Running:({answered:r,budget:i})=>n(t.p([t.Class(`flex items-center gap-2 text-sm text-muted-foreground`)],[L(`sparkles`,`size-4 text-primary`,t),`Check-in question ${Math.min(i,r.length+ +!S(e.maybeLastResult))} of up to ${i}`]),`src/page/review.ts#Running~6`)}),`src/page/review.ts#checkInHeader`),WCe=(e,t,r)=>n(r.div([r.Class(`flex flex-col gap-4`)],[e.checkIn._tag===`Off`?C(t.maybeCatchUp,{onNone:()=>n(r.empty,`src/page/review.ts#onNone~14`),onSome:e=>n(eB(e,r),`src/page/review.ts#onSome~14`)}):r.empty,jCe(e,r),UCe(e,r),J8.match(e.checkIn,{Offered:({offer:e})=>n(nB(e,{start:Y8.ClickedStartCheckIn(),skip:Y8.ClickedSkipCheckIn()},r),`src/page/review.ts#Offered~7`),Done:({summary:e})=>n(RCe(e,r),`src/page/review.ts#Done~7`),Running:()=>n(C(e.maybeCurrent,{onNone:()=>n(r.div([r.Class(`h-64 animate-pulse rounded-xl bg-muted/60`)]),`src/page/review.ts#onNone~15`),onSome:t=>n(r.keyed(`div`)(t.key,[],[b5(e,t,r)]),`src/page/review.ts#onSome~15`)}),`src/page/review.ts#Running~7`),Off:()=>n(C(e.maybeCurrent,{onNone:()=>n(MCe(e,t,r),`src/page/review.ts#onNone~16`),onSome:t=>n(r.keyed(`div`)(t.key,[],[b5(e,t,r)]),`src/page/review.ts#onSome~16`)}),`src/page/review.ts#Off~7`)})]),`src/page/review.ts#readyView`),x5=e=>n(!f5(e)&&Di(e.outcomes)&&e.queue.length>=5,`src/page/review.ts#canShortenSession`),GCe=(e,t)=>n(x5(e)?t.div([t.Class(`flex flex-wrap items-center justify-between gap-2 text-sm text-muted-foreground`)],[t.span([],[`${e.queue.length+1} to review`]),t.button([t.Type(`button`),t.OnClick(Y8.ClickedJustFive()),t.Class(I(`Ghost`,`Small`,`text-muted-foreground`))],[L(`clock`,``,t),`Just 5 for now`])]):t.empty,`src/page/review.ts#justFiveView`),KCe=qD((e,t)=>n(t.div([t.Class(`mx-auto flex w-full max-w-2xl flex-col gap-5 px-5 pt-8 pb-24`)],[t.div([t.Class(`flex flex-col gap-1`)],[t.h1([t.Class(`text-3xl font-semibold tracking-tight`)],[`Review`]),t.p([t.Class(`text-muted-foreground`)],[`Answer from memory.`])]),C(e.maybeError,{onNone:()=>n(t.empty,`src/page/review.ts#onNone~17`),onSome:e=>n(t.p([t.Role(`alert`),t.Class(`text-sm text-destructive`)],[e]),`src/page/review.ts#onSome~17`)}),GCe(e,t),q8.match(e.load,{Loading:()=>n(t.div([t.Class(`h-64 animate-pulse rounded-xl bg-muted/60`)]),`src/page/review.ts#Loading`),Failed:({error:e})=>n(t.p([t.Class(`text-sm text-destructive`)],[e]),`src/page/review.ts#Failed`),Ready:({session:r})=>n(WCe(e,r,t),`src/page/review.ts#Ready`)})]),`src/page/review.ts#anonymous~60`)),S5=Math.min,C5=Math.max,w5=Math.round,T5=Math.floor,E5=e=>({x:e,y:e}),qCe={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function D5(e,t,n){return C5(e,S5(t,n))}function O5(e,t){return typeof e==`function`?e(t):e}function k5(e){return e.split(`-`)[0]}function A5(e){return e.split(`-`)[1]}function j5(e){return e===`x`?`y`:`x`}function M5(e){return e===`y`?`height`:`width`}function N5(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function P5(e){return j5(N5(e))}function JCe(e,t,n){n===void 0&&(n=!1);let r=A5(e),i=P5(e),a=M5(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=R5(o)),[o,R5(o)]}function YCe(e){let t=R5(e);return[F5(e),t,F5(t)]}function F5(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var I5=[`left`,`right`],L5=[`right`,`left`],XCe=[`top`,`bottom`],ZCe=[`bottom`,`top`];function QCe(e,t,n){switch(e){case`top`:case`bottom`:return n?t?L5:I5:t?I5:L5;case`left`:case`right`:return t?XCe:ZCe;default:return[]}}function $Ce(e,t,n,r){let i=A5(e),a=QCe(k5(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(F5)))),a}function R5(e){let t=k5(e);return qCe[t]+e.slice(t.length)}function ewe(e){return{top:e.top??0,right:e.right??0,bottom:e.bottom??0,left:e.left??0}}function z5(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:ewe(e)}function B5(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function V5(e,t,n){let{reference:r,floating:i}=e,a=N5(t),o=P5(t),s=M5(o),c=k5(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}let m=A5(t);return m&&(p[o]+=f*(m===`end`?1:-1)*(n&&l?-1:1)),p}async function twe(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=O5(t,e),p=z5(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=B5(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=B5(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var nwe=50,rwe=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:twe},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=V5(l,r,c),f=r,p=0,m={};for(let n=0;n<a.length;n++){let h=a[n];if(!h)continue;let{name:g,fn:_}=h,{x:v,y,data:ee,reset:te}=await _({x:u,y:d,initialPlacement:r,placement:f,strategy:i,middlewareData:m,rects:l,platform:s,elements:{reference:e,floating:t}});u=v??u,d=y??d,m[g]={...m[g],...ee},te&&p<nwe&&(p++,typeof te==`object`&&(te.placement&&(f=te.placement),te.rects&&(l=te.rects===!0?await o.getElementRects({reference:e,floating:t,strategy:i}):te.rects),{x:u,y:d}=V5(l,f,c)),n=-1)}return{x:u,y:d,placement:f,strategy:i,middlewareData:m}},iwe=e=>({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=O5(e,t)||{};if(l==null)return{};let d=z5(u),f={x:n,y:r},p=P5(i),m=M5(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,ee=a.reference[m]+a.reference[p]-f[p]-a.floating[m],te=f[p]-a.reference[p],ne=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),re=ne?ne[y]:0;(!re||!await(o.isElement==null?void 0:o.isElement(ne)))&&(re=s.floating[y]||a.floating[m]);let ie=ee/2-te/2,ae=re/2-h[m]/2-1,oe=S5(d[_],ae),se=S5(d[v],ae),ce=re-h[m]-se,le=re/2-h[m]/2+ie,ue=D5(oe,le,ce),de=!c.arrow&&A5(i)!=null&&le!==ue&&a.reference[m]/2-(le<oe?oe:se)-h[m]/2<0,fe=de?le<oe?le-oe:le-ce:0;return{[p]:f[p]+fe,data:{[p]:ue,centerOffset:le-ue-fe,...de&&{alignmentOffset:fe}},reset:de}}}),awe=function(e){return e===void 0&&(e={}),{name:`flip`,options:e,async fn(t){var n;let{placement:r,middlewareData:i,rects:a,initialPlacement:o,platform:s,elements:c}=t,{mainAxis:l=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f=`bestFit`,fallbackAxisSideDirection:p=`none`,flipAlignment:m=!0,...h}=O5(e,t);if((n=i.arrow)!=null&&n.alignmentOffset)return{};let g=k5(r),_=N5(o),v=k5(o)===o,y=await(s.isRTL==null?void 0:s.isRTL(c.floating)),ee=d||(v||!m?[R5(o)]:YCe(o)),te=p!==`none`;!d&&te&&ee.push(...$Ce(o,m,p,y));let ne=[o,...ee],re=await s.detectOverflow(t,h),ie=[],ae=i.flip?.overflows||[];if(l&&ie.push(re[g]),u){let e=JCe(r,a,y);ie.push(re[e[0]],re[e[1]])}if(ae=[...ae,{placement:r,overflows:ie}],!ie.every(e=>e<=0)){let e=(i.flip?.index||0)+1,t=ne[e];if(t&&(u!==`alignment`||_===N5(t)||ae.every(e=>N5(e.placement)!==_||e.overflows[0]>0)))return{data:{index:e,overflows:ae},reset:{placement:t}};let n=ae.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=ae.filter(e=>{if(te){let t=N5(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o}if(r!==n)return{reset:{placement:n}}}return{}}}},owe=new Set([`left`,`top`]);async function swe(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=k5(n),s=A5(n),c=N5(n)===`y`,l=owe.has(o)?-1:1,u=a&&c?-1:1,d=O5(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var cwe=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await swe(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},lwe=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=O5(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=N5(i),p=j5(f),m=u[p],h=u[f],g=(e,t)=>D5(t+d[e===`y`?`top`:`left`],t,t-d[e===`y`?`bottom`:`right`]);o&&(m=g(p,m)),s&&(h=g(f,h));let _=c.fn({...t,[p]:m,[f]:h});return{..._,data:{x:_.x-n,y:_.y-r,enabled:{[p]:o,[f]:s}}}}}},uwe=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){let{placement:n,rects:r,platform:i,elements:a}=t,{apply:o=()=>{},...s}=O5(e,t),c=await i.detectOverflow(t,s),l=k5(n),u=A5(n),d=N5(n)===`y`,{width:f,height:p}=r.floating,m,h;l===`top`||l===`bottom`?(m=l,h=u===(await(i.isRTL==null?void 0:i.isRTL(a.floating))?`start`:`end`)?`left`:`right`):(h=l,m=u===`end`?`top`:`bottom`);let g=p-c.top-c.bottom,_=f-c.left-c.right,v=S5(p-c[m],g),y=S5(f-c[h],_),ee=t.middlewareData.shift,te=!ee,ne=v,re=y;ee!=null&&ee.enabled.x&&(re=_),ee!=null&&ee.enabled.y&&(ne=g),te&&!u&&(d?re=f-2*C5(c.left,c.right):ne=p-2*C5(c.top,c.bottom)),await o({...t,availableWidth:re,availableHeight:ne});let ie=await i.getDimensions(a.floating);return f!==ie.width||p!==ie.height?{reset:{rects:!0}}:{}}}};function H5(){return typeof window<`u`}function U5(e){return K5(e)?(e.nodeName||``).toLowerCase():`#document`}function W5(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function G5(e){return((K5(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function K5(e){return H5()?e instanceof Node||e instanceof W5(e).Node:!1}function q5(e){return H5()?e instanceof Element||e instanceof W5(e).Element:!1}function J5(e){return H5()?e instanceof HTMLElement||e instanceof W5(e).HTMLElement:!1}function Y5(e){return!H5()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof W5(e).ShadowRoot}function X5(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=r7(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function dwe(e){return/^(table|td|th)$/.test(U5(e))}function Z5(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var fwe=/transform|translate|scale|rotate|perspective|filter/,pwe=/paint|layout|strict|content/,Q5=e=>!!e&&e!==`none`,$5;function e7(e){let t=q5(e)?r7(e):e;return Q5(t.transform)||Q5(t.translate)||Q5(t.scale)||Q5(t.rotate)||Q5(t.perspective)||!t7()&&(Q5(t.backdropFilter)||Q5(t.filter))||fwe.test(t.willChange||``)||pwe.test(t.contain||``)}function mwe(e){let t=a7(e);for(;J5(t)&&!n7(t);){if(e7(t))return t;if(Z5(t))return null;t=a7(t)}return null}function t7(){return $5??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),$5}function n7(e){return/^(html|body|#document)$/.test(U5(e))}function r7(e){return W5(e).getComputedStyle(e)}function i7(e){return q5(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function a7(e){if(U5(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||Y5(e)&&e.host||G5(e);return Y5(t)?t.host:t}function o7(e){let t=a7(e);return n7(t)?(e.ownerDocument||e).body:J5(t)&&X5(t)?t:o7(t)}function s7(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=o7(e),i=r===e.ownerDocument?.body,a=W5(r);if(i){let e=c7(a);return t.concat(a,a.visualViewport||[],X5(r)?r:[],e&&n?s7(e):[])}return t.concat(r,s7(r,[],n))}function c7(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function l7(e){let t=r7(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=J5(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=w5(n)!==a||w5(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function u7(e){return q5(e)?e:e.contextElement}function d7(e){let t=u7(e);if(!J5(t))return E5(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=l7(t),o=(a?w5(n.width):n.width)/r,s=(a?w5(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var hwe=E5(0);function f7(e){let t=W5(e);return!t7()||!t.visualViewport?hwe:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function gwe(e,t,n){return t===void 0&&(t=!1),!!n&&t&&n===W5(e)}function p7(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=u7(e),o=E5(1);t&&(r?q5(r)&&(o=d7(r)):o=d7(e));let s=gwe(a,n,r)?f7(a):E5(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a&&r){let e=W5(a),t=q5(r)?W5(r):r,n=e,i=c7(n);for(;i&&t!==n;){let e=d7(i),t=i.getBoundingClientRect(),r=r7(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=W5(i),i=c7(n)}}return B5({width:u,height:d,x:c,y:l})}function m7(e,t){let n=i7(e).scrollLeft;return t?t.left+n:p7(G5(e)).left+n}function h7(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-m7(e,n),y:n.top+t.scrollTop}}function _we(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=G5(r),s=t?Z5(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=E5(1),u=E5(0),d=J5(r);if((d||!a)&&((U5(r)!==`body`||X5(o))&&(c=i7(r)),d)){let e=p7(r);l=d7(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?h7(o,c):E5(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function vwe(e){return e.getClientRects?Array.from(e.getClientRects()):[]}function ywe(e){let t=i7(e),n=e.ownerDocument.body,r=C5(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),i=C5(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight),a=-t.scrollLeft+m7(e),o=-t.scrollTop;return r7(n).direction===`rtl`&&(a+=C5(e.clientWidth,n.clientWidth)-r),{width:r,height:i,x:a,y:o}}var bwe=25;function xwe(e,t,n){n===void 0&&(n=`viewport`);let r=n===`layoutViewport`,i=W5(e),a=G5(e),o=i.visualViewport,s=a.clientWidth,c=a.clientHeight,l=0,u=0;if(o){let e=!t7()||t===`fixed`;r?e||(l=-o.offsetLeft,u=-o.offsetTop):(s=o.width,c=o.height,e&&(l=o.offsetLeft,u=o.offsetTop))}if(m7(a)<=0){let e=a.ownerDocument,t=e.body,n=getComputedStyle(t),r=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,i=Math.abs(a.clientWidth-t.clientWidth-r),o=getComputedStyle(a).scrollbarGutter===`stable both-edges`?i/2:i;o<=bwe&&(s-=o)}return{width:s,height:c,x:l,y:u}}function Swe(e,t){let n=p7(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=d7(e);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function g7(e,t,n){let r;if(t===`viewport`||t===`layoutViewport`)r=xwe(e,n,t);else if(t===`document`)r=ywe(G5(e));else if(q5(t))r=Swe(t,n);else{let n=f7(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return B5(r)}function Cwe(e,t){let n=t.get(e);if(n)return n;let r=s7(e,[],!1).filter(e=>q5(e)&&U5(e)!==`body`),i=null,a=r7(e).position===`fixed`,o=a?a7(e):e;for(;q5(o)&&!n7(o);){let e=r7(o),t=e7(o),n=i?i.position:a?`fixed`:``;!t&&(n===`fixed`||n===`absolute`&&e.position===`static`)?r=r.filter(e=>e!==o):i=e,o=a7(o)}return t.set(e,r),r}function wwe(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?Z5(t)?[]:Cwe(t,this._c):[].concat(n),r],o=g7(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e<a.length;e++){let n=g7(t,a[e],i);s=C5(n.top,s),c=S5(n.right,c),l=S5(n.bottom,l),u=C5(n.left,u)}return{width:c-u,height:l-s,x:u,y:s}}function Twe(e){let{width:t,height:n}=l7(e);return{width:t,height:n}}function Ewe(e,t,n){let r=J5(t),i=G5(t),a=n===`fixed`,o=p7(e,!0,a,t),s={scrollLeft:0,scrollTop:0},c=E5(0);if((r||!a)&&((U5(t)!==`body`||X5(i))&&(s=i7(t)),r)){let e=p7(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}!r&&i&&(c.x=m7(i));let l=i&&!r&&!a?h7(i,s):E5(0);return{x:o.left+s.scrollLeft-c.x-l.x,y:o.top+s.scrollTop-c.y-l.y,width:o.width,height:o.height}}function _7(e){return r7(e).position===`static`}function v7(e,t){if(!J5(e)||r7(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return G5(e)===n&&(n=n.ownerDocument.body),n}function y7(e,t){let n=W5(e);if(Z5(e))return n;if(!J5(e)){let t=a7(e);for(;t&&!n7(t);){if(q5(t)&&!_7(t))return t;t=a7(t)}return n}let r=v7(e,t);for(;r&&dwe(r)&&_7(r);)r=v7(r,t);return r&&n7(r)&&_7(r)&&!e7(r)?n:r||mwe(e)||n}var Dwe=async function(e){let t=this.getOffsetParent||y7,n=this.getDimensions,r=await n(e.floating);return{reference:Ewe(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function Owe(e){return r7(e).direction===`rtl`}var kwe={convertOffsetParentRelativeRectToViewportRelativeRect:_we,getDocumentElement:G5,getClippingRect:wwe,getOffsetParent:y7,getElementRects:Dwe,getClientRects:vwe,getDimensions:Twe,getScale:d7,isElement:q5,isRTL:Owe};function b7(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Awe(e,t,n){let r=null,i,a=G5(e);function o(){var e;clearTimeout(i),(e=r)==null||e.disconnect(),r=null}function s(n,c){n===void 0&&(n=!1),c===void 0&&(c=1),o();let l=e.getBoundingClientRect(),{left:u,top:d,width:f,height:p}=l;if(n||t(),!f||!p)return;let m=T5(d),h=T5(a.clientWidth-(u+f)),g=T5(a.clientHeight-(d+p)),_=T5(u),v={rootMargin:-m+`px `+-h+`px `+-g+`px `+-_+`px`,threshold:C5(0,S5(1,c))||1},y=!0;function ee(t){let n=t[0].intersectionRatio;if(!b7(l,e.getBoundingClientRect()))return s();if(n!==c){if(!y)return s();n?s(!1,n):i=setTimeout(()=>{s(!1,1e-7)},1e3)}y=!1}try{r=new IntersectionObserver(ee,{...v,root:a.ownerDocument})}catch{r=new IntersectionObserver(ee,v)}r.observe(e)}let c=W5(e),l=()=>s(n);return c.addEventListener(`resize`,l),s(!0),()=>{c.removeEventListener(`resize`,l),o()}}function jwe(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=u7(e),u=i||a?[...l?s7(l):[],...t?s7(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n),a&&e.addEventListener(`resize`,n)});let d=l&&s?Awe(l,n,a):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?p7(e):null;c&&g();function g(){let t=p7(e);h&&!b7(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var Mwe=cwe,Nwe=lwe,Pwe=awe,Fwe=uwe,Iwe=iwe,Lwe=(e,t,n)=>{let r=new Map,i=n??{},a={...kwe,...i.platform,_c:r};return rwe(e,t,{...i,platform:a})},Rwe=tb([`top`,`right`,`bottom`,`left`,`top-start`,`top-end`,`right-start`,`right-end`,`bottom-start`,`bottom-end`,`left-start`,`left-end`]),zwe=eb([k,A({top:Ry(k),right:Ry(k),bottom:Ry(k),left:Ry(k)})]),Bwe=A({placement:zy(Rwe),gap:zy(k),offset:zy(k),padding:zy(zwe),portal:zy(Ky),isPlacementLocked:zy(Ky)}),x7=`foldkit-portal-root`,S7=`data-foldkit-portal-root`,Vwe=e=>{let t=e.getRootNode(),r=t instanceof ShadowRoot,i=r?t:document,a=r?t:document.body,o=i.getElementById(x7);if(o)return n(o,`@foldkit/ui/anchor/anchor.js#getOrCreateContainingRootPortalRoot`);let s=document.createElement(`div`);return s.id=x7,a.prepend(s),n(s,`@foldkit/ui/anchor/anchor.js#getOrCreateContainingRootPortalRoot`)},Hwe=e=>{let t=e.querySelector(`:scope > [${S7}]`);if(t instanceof HTMLElement)return n(t,`@foldkit/ui/anchor/anchor.js#getOrCreateDialogPortalRoot`);let r=document.createElement(`div`);return r.setAttribute(S7,``),e.append(r),n(r,`@foldkit/ui/anchor/anchor.js#getOrCreateDialogPortalRoot`)},Uwe=e=>n(e.hasAttribute(S7),`@foldkit/ui/anchor/anchor.js#isDialogPortalRoot`),Wwe=e=>n(C(lr(e.closest(`dialog`)),{onNone:()=>n(Vwe(e),`@foldkit/ui/anchor/anchor.js#onNone`),onSome:Hwe}),`@foldkit/ui/anchor/anchor.js#getOrCreatePortalRoot`),C7=e=>{let t=Wwe(e);return t.appendChild(e),n((()=>{try{e.remove()}catch{}Uwe(t)&&!t.hasChildNodes()&&t.remove()}),`@foldkit/ui/anchor/anchor.js#portalToContainingRoot`)},Gwe=e=>{let t=e.closest(`dialog`);return n(m(lr(e.parentElement),br(e=>n(t!==null&&e!==t,`@foldkit/ui/anchor/anchor.js#anonymous~2`))),`@foldkit/ui/anchor/anchor.js#findWrapperInsideDialog`)},Kwe=e=>n(C(Gwe(e),{onNone:()=>n(C7(e),`@foldkit/ui/anchor/anchor.js#onNone~2`),onSome:t=>(t.before(e),n((()=>n(e.remove(),`@foldkit/ui/anchor/anchor.js#anonymous~3`)),`@foldkit/ui/anchor/anchor.js#onSome`))}),`@foldkit/ui/anchor/anchor.js#portalBackdrop`),w7=e=>n(e!==null&&(getComputedStyle(e).position===`fixed`||w7(e.parentElement)),`@foldkit/ui/anchor/anchor.js#isInsideFixedContainer`),qwe=e=>n(m(e,Dd(`-`),Fi),`@foldkit/ui/anchor/anchor.js#toSide`),T7=(e,t,n)=>{n===void 0?e.style.setProperty(t,`initial`):e.style.setProperty(t,`${n}px`)},Jwe=(e,t)=>{let r=e.getRootNode(),i=r instanceof ShadowRoot,a=i?r:document;if(!(e instanceof HTMLElement))return console.error(`[@foldkit/ui] anchorSetup requires an HTML panel. The panel will not be positioned.`),n(p,`@foldkit/ui/anchor/anchor.js#anchorSetup`);let o=a.getElementById(t.buttonId);if(o===null)return console.error(`[@foldkit/ui] anchorSetup could not find a trigger with id "${t.buttonId}". The panel will not be positioned.`),n(p,`@foldkit/ui/anchor/anchor.js#anchorSetup`);if(!(o instanceof HTMLElement))return console.error(`[@foldkit/ui] anchorSetup requires an HTML trigger with id "${t.buttonId}". The panel will not be positioned.`),n(p,`@foldkit/ui/anchor/anchor.js#anchorSetup`);let s=t.anchor.portal??!0,c=s?C7(e):void 0,l=s&&w7(o),u=i||l?`fixed`:`absolute`;u===`fixed`&&(e.style.position=`fixed`);let d=m(lr(t.arrowId),_r(e=>n(a.getElementById(e),`@foldkit/ui/anchor/anchor.js#anonymous~4`)),br(t=>n(e.contains(t),`@foldkit/ui/anchor/anchor.js#anonymous~5`))),f=C(d,{onNone:()=>n([],`@foldkit/ui/anchor/anchor.js#onNone~3`),onSome:e=>n([Iwe({element:e,padding:t.arrowPadding??0})],`@foldkit/ui/anchor/anchor.js#onSome~2`)}),{placement:h,gap:g,offset:_,padding:v,isPlacementLocked:y}=t.anchor,ee=t.interceptTab??!0,te=y??!1,ne=!0,re=!0,ie=!1,ae=!1,oe=!1,se,ce=()=>{if(!re)return;if(ie){ae=!0;return}let n=te&&se!==void 0,r=Lwe(o,e,{placement:se??h??`bottom-start`,strategy:u,middleware:[Mwe({mainAxis:g??0,crossAxis:_??0}),...n?[]:[Pwe({padding:v??0})],Nwe({padding:v??0}),Fwe({padding:v??0,apply({rects:t,availableHeight:n}){re&&(e.style.setProperty(`--button-width`,`${t.reference.width}px`),e.style.maxHeight=`${Math.max(0,n)}px`,or(d)&&(e.style.overflowY=`auto`,e.style.overscrollBehavior=`none`))}}),...f]});ie=!0,r.then(({x:n,y:r,placement:i,middlewareData:o})=>{if(oe=!1,re){if(e.style.left=`${n}px`,e.style.top=`${r}px`,te&&(se??=i),e.setAttribute(`data-placement`,qwe(se??i)),S(d)){let{x:t,y:n}=o.arrow??{};T7(e,`--arrow-x`,t),T7(e,`--arrow-y`,n)}ne&&(ne=!1,e.style.visibility=``,(t.focusAfterPosition??!1)&&requestAnimationFrame(()=>{if(!re)return;let n=t.focusSelector?a.querySelector(t.focusSelector):e;n instanceof HTMLElement&&n.focus({preventScroll:!0})}))}},e=>{oe||(oe=!0,console.error(`[@foldkit/ui] anchorSetup could not position the panel. It keeps the visibility its caller rendered until positioning succeeds.`,e))}).finally(()=>{ie=!1,re&&ae&&(ae=!1,ce())})},le=jwe(o,e,ce),ue=e=>{e instanceof KeyboardEvent&&e.key===`Tab`&&o.focus()},de=s&&ee;return de&&e.addEventListener(`keydown`,ue),n((()=>{re=!1,ae=!1,le(),de&&e.removeEventListener(`keydown`,ue),e.removeAttribute(`data-placement`),e.style.removeProperty(`overflow-y`),e.style.removeProperty(`overscroll-behavior`),e.style.removeProperty(`--arrow-x`),e.style.removeProperty(`--arrow-y`),c?.()}),`@foldkit/ui/anchor/anchor.js#anchorSetup`)},Ywe=A({id:O,isShowing:Ky,transitionState:tb([`Idle`,`EnterStart`,`EnterAnimating`,`LeaveStart`,`LeaveAnimating`]),transitionGeneration:k}),E7=fT({Showed:{},Hid:{},CompletedWaitForPaint:{generation:k},EndedAnimation:{generation:k}}),D7=fT({StartedLeaveAnimating:{generation:k},TransitionedOut:{}}),Xwe=e=>n({id:e.id,isShowing:e.isShowing??!1,transitionState:`Idle`,transitionGeneration:0},`@foldkit/ui/animation/schema.js#init`),Zwe=0,Qwe=`�`,$we=127,eTe=31,tTe=48,nTe=57,O7=45,rTe=95,iTe=65,aTe=90,oTe=97,sTe=122,cTe=128,k7=e=>n(e>=tTe&&e<=nTe,`@foldkit/ui/internal/selectors.js#isDigitCode`),lTe=e=>n(e>=cTe||k7(e)||e===O7||e===rTe||e>=iTe&&e<=aTe||e>=oTe&&e<=sTe,`@foldkit/ui/internal/selectors.js#isIdentifierCode`),uTe=e=>{let t=e.charCodeAt(0),r=``;for(let n=0;n<e.length;n++){let i=e.charCodeAt(n),a=e.charAt(n);i===Zwe?r+=Qwe:i>=1&&i<=eTe||i===$we||k7(i)&&(n===0||n===1&&t===O7)?r+=`\\${i.toString(16)} `:n===0&&i===O7&&e.length===1?r+=`\\${a}`:lTe(i)?r+=a:r+=`\\${a}`}return n(r,`@foldkit/ui/internal/selectors.js#escapeCssIdentifier`)},A7=e=>n(`#${uTe(e)}`,`@foldkit/ui/internal/selectors.js#idSelector`),dTe=e=>n(A7(e),`@foldkit/ui/animation/update.js#elementSelector`),j7=Ow(),M7=N(`WaitForPaint`,{args:{generation:k},messages:[E7.CompletedWaitForPaint],execute:({generation:e})=>n(Kde.pipe(tf(E7.CompletedWaitForPaint({generation:e}))),`@foldkit/ui/animation/update.js#execute`)}),fTe=N(`WaitForAnimationSettled`,{args:{id:O,generation:k},messages:[E7.EndedAnimation],execute:({id:e,generation:t})=>n(fk(dTe(e)).pipe(tf(E7.EndedAnimation({generation:t}))),`@foldkit/ui/animation/update.js#execute~2`)});function N7(e,t){return n(E7.match(t,{Showed:()=>{if(e.isShowing)return n({model:e},`@foldkit/ui/animation/update.js#Showed`);let t=bd(e.transitionGeneration);return n({model:P(e,{isShowing:()=>n(!0,`@foldkit/ui/animation/update.js#isShowing`),transitionState:()=>n(`EnterStart`,`@foldkit/ui/animation/update.js#transitionState`),transitionGeneration:()=>n(t,`@foldkit/ui/animation/update.js#transitionGeneration`)}),commands:[M7({generation:t})]},`@foldkit/ui/animation/update.js#Showed`)},Hid:()=>{if(e.transitionState===`LeaveStart`||e.transitionState===`LeaveAnimating`||!e.isShowing)return n({model:e},`@foldkit/ui/animation/update.js#Hid`);let t=bd(e.transitionGeneration);return n({model:P(e,{isShowing:()=>n(!1,`@foldkit/ui/animation/update.js#isShowing~2`),transitionState:()=>n(`LeaveStart`,`@foldkit/ui/animation/update.js#transitionState~2`),transitionGeneration:()=>n(t,`@foldkit/ui/animation/update.js#transitionGeneration~2`)}),commands:[M7({generation:t})]},`@foldkit/ui/animation/update.js#Hid`)},CompletedWaitForPaint:({generation:t})=>t===e.transitionGeneration?n(Ew(e.transitionState).pipe(j7,kw(`EnterStart`,()=>n({model:P(e,{transitionState:()=>n(`EnterAnimating`,`@foldkit/ui/animation/update.js#transitionState~3`)}),commands:[fTe({id:e.id,generation:e.transitionGeneration})]},`@foldkit/ui/animation/update.js#anonymous`)),kw(`LeaveStart`,()=>n({model:P(e,{transitionState:()=>n(`LeaveAnimating`,`@foldkit/ui/animation/update.js#transitionState~4`)}),outMessage:D7.StartedLeaveAnimating({generation:e.transitionGeneration})},`@foldkit/ui/animation/update.js#anonymous~2`)),Pw(()=>n({model:e},`@foldkit/ui/animation/update.js#anonymous~3`))),`@foldkit/ui/animation/update.js#CompletedWaitForPaint`):n({model:e},`@foldkit/ui/animation/update.js#CompletedWaitForPaint`),EndedAnimation:({generation:t})=>t===e.transitionGeneration?n(Ew(e.transitionState).pipe(j7,kw(`EnterAnimating`,()=>n({model:P(e,{transitionState:()=>n(`Idle`,`@foldkit/ui/animation/update.js#transitionState~5`)})},`@foldkit/ui/animation/update.js#anonymous~4`)),kw(`LeaveAnimating`,()=>n({model:P(e,{transitionState:()=>n(`Idle`,`@foldkit/ui/animation/update.js#transitionState~6`)}),outMessage:D7.TransitionedOut()},`@foldkit/ui/animation/update.js#anonymous~5`)),Pw(()=>n({model:e},`@foldkit/ui/animation/update.js#anonymous~6`))),`@foldkit/ui/animation/update.js#EndedAnimation`):n({model:e},`@foldkit/ui/animation/update.js#EndedAnimation`)}),`@foldkit/ui/animation/update.js#update`)}var pTe=e=>n(N7(e,E7.Showed()),`@foldkit/ui/animation/update.js#show`),mTe=e=>n(N7(e,E7.Hid()),`@foldkit/ui/animation/update.js#hide`),P7=o(2,(e,t)=>n(xr(t,()=>n(e,`@foldkit/ui/internal/optionExtensions.js#anonymous~2`)),`@foldkit/ui/internal/optionExtensions.js#anonymous`)),hTe=(e,t)=>n(na(w(e,(e,r)=>n({key:t(e,r),item:e},`@foldkit/ui/group.js#anonymous`)),e=>{let t=Fi(e).key,[r,i]=Wi(e,e=>n(e.key===t,`@foldkit/ui/group.js#anonymous~3`));return n([{key:t,items:w(r,({item:e})=>n(e,`@foldkit/ui/group.js#anonymous~4`))},i],`@foldkit/ui/group.js#anonymous~2`)}),`@foldkit/ui/group.js#groupContiguous`),gTe=e=>n(e.length===1,`@foldkit/ui/keyboard.js#isPrintableKey`),F7=(e,t)=>n((e%t+t)%t,`@foldkit/ui/keyboard.js#wrapIndex`),I7=(e,t,r)=>n(((i,a)=>n(m(e,_i(t=>n(F7(i+t*a,e),`@foldkit/ui/keyboard.js#anonymous~2`)),Yi(Se(r)),sr(()=>n(t,`@foldkit/ui/keyboard.js#anonymous~3`))),`@foldkit/ui/keyboard.js#anonymous`)),`@foldkit/ui/keyboard.js#findFirstEnabledIndex`),_Te=(e,t,r,i,a)=>{let o=I7(r,i,a);return n((a=>n(Ew(a).pipe(kw(e,()=>n(o(i+1,1),`@foldkit/ui/keyboard.js#anonymous~5`)),kw(t,()=>n(o(i-1,-1),`@foldkit/ui/keyboard.js#anonymous~6`)),Aw(`Home`,`PageUp`,()=>n(o(0,1),`@foldkit/ui/keyboard.js#anonymous~7`)),Aw(`End`,`PageDown`,()=>n(o(r-1,-1),`@foldkit/ui/keyboard.js#anonymous~8`)),Pw(()=>n(i,`@foldkit/ui/keyboard.js#anonymous~9`))),`@foldkit/ui/keyboard.js#anonymous~4`)),`@foldkit/ui/keyboard.js#keyToIndex`)},vTe=(e,t,r,i,a,o)=>{let s=Cd(t),c=+!o,l=C(r,{onNone:()=>n(0,`@foldkit/ui/typeahead.js#onNone`),onSome:e=>n(e+c,`@foldkit/ui/typeahead.js#onSome`)});return n(m(e,Ai,_i(t=>n(F7(l+t,e.length),`@foldkit/ui/typeahead.js#anonymous~2`)),Yi(t=>n(!i(t)&&m(e,Mi(t),Cr(e=>n(m(a(e,t),Cd,Od(s)),`@foldkit/ui/typeahead.js#anonymous`))),`@foldkit/ui/typeahead.js#isEnabledMatch`))),`@foldkit/ui/typeahead.js#resolveTypeaheadMatch`)},L7=tb([`Pointer`,`Keyboard`]),yTe=A({id:O,isOpen:Ky,isAnimated:Ky,isModal:Ky,orientation:tb([`Vertical`,`Horizontal`]),animation:Ywe,maybeActiveItemIndex:Mb(k),activationTrigger:L7,searchQuery:O,searchVersion:k,maybeLastPointerPosition:Mb(A({screenX:k,screenY:k})),maybeLastButtonPointerType:Mb(O)}),bTe=e=>n({id:e.id,isOpen:!1,isAnimated:e.isAnimated??!1,isModal:e.isModal??!1,orientation:e.orientation??`Vertical`,animation:Xwe({id:`${e.id}-listbox`}),maybeActiveItemIndex:b(),activationTrigger:`Keyboard`,searchQuery:``,searchVersion:0,maybeLastPointerPosition:b(),maybeLastButtonPointerType:b()},`@foldkit/ui/listbox/shared.js#baseInit`),R7=fT({Opened:{maybeActiveItemIndex:Mb(k)},Closed:{},BlurredItems:{},ActivatedItem:{index:k,activationTrigger:L7},DeactivatedItem:{},SelectedItem:{item:O},MovedPointerOverItem:{index:k,screenX:k,screenY:k},RequestedItemClick:{index:k},Searched:{key:O,maybeTargetIndex:Mb(k)},CompletedDelayClearSearch:{version:k},CompletedLockScroll:{},CompletedUnlockScroll:{},CompletedInertOthers:{},CompletedRestoreInert:{},CompletedFocusButton:{},CompletedFocusItems:{},CompletedScrollIntoView:{},CompletedClickItem:{},IgnoredMouseClick:{},SuppressedSpaceScroll:{},SuppressedItemCommit:{},CompletedAnchorListbox:{},CompletedPortalListboxBackdrop:{},GotAnimationMessage:{message:E7},PressedPointerOnButton:{pointerType:O,button:k}}),z7=fT({Selected:{value:O}}),B7=e=>n(A7(`${e}-button`),`@foldkit/ui/listbox/shared.js#buttonSelector`),V7=e=>n(A7(`${e}-items`),`@foldkit/ui/listbox/shared.js#itemsSelector`),H7=(e,t)=>n(A7(`${e}-item-${t}`),`@foldkit/ui/listbox/shared.js#itemSelector`),U7=(e,t)=>n(`${e}-item-${t}`,`@foldkit/ui/listbox/shared.js#itemId`),W7=tj(),xTe=e=>n(W7(e,{isOpen:()=>n(!1,`@foldkit/ui/listbox/shared.js#isOpen`),maybeActiveItemIndex:()=>n(b(),`@foldkit/ui/listbox/shared.js#maybeActiveItemIndex`),searchQuery:()=>n(``,`@foldkit/ui/listbox/shared.js#searchQuery`),searchVersion:()=>n(0,`@foldkit/ui/listbox/shared.js#searchVersion`),maybeLastPointerPosition:()=>n(b(),`@foldkit/ui/listbox/shared.js#maybeLastPointerPosition`),maybeLastButtonPointerType:()=>n(b(),`@foldkit/ui/listbox/shared.js#maybeLastButtonPointerType`)}),`@foldkit/ui/listbox/shared.js#closedModel`),STe=N(`LockScroll`,{messages:[R7.CompletedLockScroll],execute:cfe.pipe(tf(R7.CompletedLockScroll()))}),CTe=N(`UnlockScroll`,{messages:[R7.CompletedUnlockScroll],execute:JO.pipe(tf(R7.CompletedUnlockScroll()))}),wTe=N(`InertOthers`,{args:{id:O},messages:[R7.CompletedInertOthers],execute:({id:e})=>n(nfe(e,[B7(e),V7(e)]).pipe(tf(R7.CompletedInertOthers())),`@foldkit/ui/listbox/shared.js#execute`)}),TTe=N(`RestoreInert`,{args:{id:O},messages:[R7.CompletedRestoreInert],execute:({id:e})=>n(rfe(e).pipe(tf(R7.CompletedRestoreInert())),`@foldkit/ui/listbox/shared.js#execute~2`)}),ETe=N(`FocusButton`,{args:{id:O},messages:[R7.CompletedFocusButton],execute:({id:e})=>n(lk(B7(e)).pipe(lf,tf(R7.CompletedFocusButton())),`@foldkit/ui/listbox/shared.js#execute~3`)}),DTe=N(`FocusItems`,{args:{id:O},messages:[R7.CompletedFocusItems],execute:({id:e})=>n(lk(V7(e)).pipe(lf,tf(R7.CompletedFocusItems())),`@foldkit/ui/listbox/shared.js#execute~4`)}),OTe=N(`ScrollIntoView`,{args:{id:O,index:k},messages:[R7.CompletedScrollIntoView],execute:({id:e,index:t})=>n(_fe(H7(e,t)).pipe(lf,tf(R7.CompletedScrollIntoView())),`@foldkit/ui/listbox/shared.js#execute~5`)}),kTe=N(`ClickItem`,{args:{id:O,index:k},messages:[R7.CompletedClickItem],execute:({id:e,index:t})=>n(gfe(H7(e,t)).pipe(lf,tf(R7.CompletedClickItem())),`@foldkit/ui/listbox/shared.js#execute~6`)}),ATe=N(`DelayClearSearch`,{args:{version:k},messages:[R7.CompletedDelayClearSearch],execute:({version:e})=>n(ff(350).pipe(tf(R7.CompletedDelayClearSearch({version:e}))),`@foldkit/ui/listbox/shared.js#execute~7`)}),jTe=N(`DetectMovementOrAnimationEnd`,{args:{id:O,generation:k},messages:[R7.GotAnimationMessage],execute:({id:e,generation:t})=>n(pf(vfe(B7(e)).pipe(tf(R7.GotAnimationMessage({message:E7.EndedAnimation({generation:t})}))),fk(V7(e)).pipe(tf(R7.GotAnimationMessage({message:E7.EndedAnimation({generation:t})})))),`@foldkit/ui/listbox/shared.js#execute~8`)}),MTe=e=>{let t=LN({update:N7,read:e=>n(x(e.animation),`@foldkit/ui/listbox/shared.js#read`),write:(e,t)=>n(W7(e,{animation:()=>n(t,`@foldkit/ui/listbox/shared.js#animation`)}),`@foldkit/ui/listbox/shared.js#write`),toParentMessage:e=>n(R7.GotAnimationMessage({message:e}),`@foldkit/ui/listbox/shared.js#toParentMessage`),foldOutMessage:D7.match({StartedLeaveAnimating:({generation:e})=>n((t=>n({model:t,commands:[jTe({id:t.id,generation:e})]},`@foldkit/ui/listbox/shared.js#anonymous`)),`@foldkit/ui/listbox/shared.js#StartedLeaveAnimating`),TransitionedOut:()=>n((e=>n({model:e},`@foldkit/ui/listbox/shared.js#anonymous~2`)),`@foldkit/ui/listbox/shared.js#TransitionedOut`)})}),r=VN({update:pTe,read:e=>n(x(e.animation),`@foldkit/ui/listbox/shared.js#read~2`),write:(e,t)=>n(W7(e,{animation:()=>n(t,`@foldkit/ui/listbox/shared.js#animation~2`)}),`@foldkit/ui/listbox/shared.js#write~2`),toParentMessage:e=>n(R7.GotAnimationMessage({message:e}),`@foldkit/ui/listbox/shared.js#toParentMessage~2`)}),i=VN({update:mTe,read:e=>n(x(e.animation),`@foldkit/ui/listbox/shared.js#read~3`),write:(e,t)=>n(W7(e,{animation:()=>n(t,`@foldkit/ui/listbox/shared.js#animation~3`)}),`@foldkit/ui/listbox/shared.js#write~3`),toParentMessage:e=>n(R7.GotAnimationMessage({message:e}),`@foldkit/ui/listbox/shared.js#toParentMessage~3`)}),a=(e,t)=>e.isAnimated?n(IN(e,[e=>n({model:e,commands:t},`@foldkit/ui/listbox/shared.js#anonymous~3`),r,e=>n({model:W7(e,{isOpen:()=>n(!0,`@foldkit/ui/listbox/shared.js#isOpen~2`)})},`@foldkit/ui/listbox/shared.js#anonymous~4`)]),`@foldkit/ui/listbox/shared.js#openListbox`):n({model:W7(e,{isOpen:()=>n(!0,`@foldkit/ui/listbox/shared.js#isOpen~3`)}),commands:t},`@foldkit/ui/listbox/shared.js#openListbox`),o=(e,t)=>{if(!e.isOpen)return n({model:e},`@foldkit/ui/listbox/shared.js#closeListbox`);let r=xTe(e);return e.isAnimated?n(IN(r,[e=>n({model:e,commands:t},`@foldkit/ui/listbox/shared.js#anonymous~5`),i]),`@foldkit/ui/listbox/shared.js#closeListbox`):n({model:r,commands:t},`@foldkit/ui/listbox/shared.js#closeListbox`)};return n((r,i)=>{let s=P7(r.isModal,STe()),c=P7(r.isModal,CTe()),l=P7(r.isModal,wTe({id:r.id})),u=P7(r.isModal,TTe({id:r.id})),d=ETe({id:r.id}),f=DTe({id:r.id}),p=[...la([s,l]),f],h=[d,...la([c,u])],g=la([c,u]);return n(R7.match(i,{CompletedLockScroll:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedLockScroll`),CompletedUnlockScroll:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedUnlockScroll`),CompletedInertOthers:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedInertOthers`),CompletedRestoreInert:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedRestoreInert`),CompletedFocusButton:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedFocusButton`),CompletedFocusItems:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedFocusItems`),CompletedScrollIntoView:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedScrollIntoView`),CompletedClickItem:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedClickItem`),SuppressedSpaceScroll:()=>n({model:r},`@foldkit/ui/listbox/shared.js#SuppressedSpaceScroll`),SuppressedItemCommit:()=>n({model:r},`@foldkit/ui/listbox/shared.js#SuppressedItemCommit`),CompletedAnchorListbox:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedAnchorListbox`),CompletedPortalListboxBackdrop:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedPortalListboxBackdrop`),Opened:({maybeActiveItemIndex:e})=>n(a(W7(r,{maybeActiveItemIndex:()=>n(e,`@foldkit/ui/listbox/shared.js#maybeActiveItemIndex~2`),activationTrigger:()=>n(C(e,{onNone:()=>n(`Pointer`,`@foldkit/ui/listbox/shared.js#onNone`),onSome:()=>n(`Keyboard`,`@foldkit/ui/listbox/shared.js#onSome`)}),`@foldkit/ui/listbox/shared.js#activationTrigger`),searchQuery:()=>n(``,`@foldkit/ui/listbox/shared.js#searchQuery~2`),searchVersion:()=>n(0,`@foldkit/ui/listbox/shared.js#searchVersion~2`),maybeLastPointerPosition:()=>n(b(),`@foldkit/ui/listbox/shared.js#maybeLastPointerPosition~2`)}),p),`@foldkit/ui/listbox/shared.js#Opened`),Closed:()=>n(o(r,h),`@foldkit/ui/listbox/shared.js#Closed`),BlurredItems:()=>Cr(r.maybeLastButtonPointerType,Ue(`mouse`))?n({model:r},`@foldkit/ui/listbox/shared.js#BlurredItems`):n(o(r,g),`@foldkit/ui/listbox/shared.js#BlurredItems`),ActivatedItem:({index:e,activationTrigger:t})=>n({model:W7(r,{maybeActiveItemIndex:()=>n(x(e),`@foldkit/ui/listbox/shared.js#maybeActiveItemIndex~3`),activationTrigger:()=>n(t,`@foldkit/ui/listbox/shared.js#activationTrigger~2`)}),commands:t===`Keyboard`?[OTe({id:r.id,index:e})]:[]},`@foldkit/ui/listbox/shared.js#ActivatedItem`),MovedPointerOverItem:({index:e,screenX:t,screenY:i})=>Cr(r.maybeLastPointerPosition,e=>n(e.screenX===t&&e.screenY===i,`@foldkit/ui/listbox/shared.js#anonymous~6`))?n({model:r},`@foldkit/ui/listbox/shared.js#MovedPointerOverItem`):n({model:W7(r,{maybeActiveItemIndex:()=>n(x(e),`@foldkit/ui/listbox/shared.js#maybeActiveItemIndex~4`),activationTrigger:()=>n(`Pointer`,`@foldkit/ui/listbox/shared.js#activationTrigger~3`),maybeLastPointerPosition:()=>n(x({screenX:t,screenY:i}),`@foldkit/ui/listbox/shared.js#maybeLastPointerPosition~3`)})},`@foldkit/ui/listbox/shared.js#MovedPointerOverItem`),DeactivatedItem:()=>n(r.activationTrigger===`Pointer`?{model:W7(r,{maybeActiveItemIndex:()=>n(b(),`@foldkit/ui/listbox/shared.js#maybeActiveItemIndex~5`)})}:{model:r},`@foldkit/ui/listbox/shared.js#DeactivatedItem`),SelectedItem:({item:t})=>n(e(r,t,{closeWithFocus:(e,t)=>n(m(o(e,h),FN(t)),`@foldkit/ui/listbox/shared.js#closeWithFocus`),closeWithoutFocus:(e,t)=>n(m(o(e,g),FN(t)),`@foldkit/ui/listbox/shared.js#closeWithoutFocus`)}),`@foldkit/ui/listbox/shared.js#SelectedItem`),RequestedItemClick:({index:e})=>n({model:r,commands:[kTe({id:r.id,index:e})]},`@foldkit/ui/listbox/shared.js#RequestedItemClick`),Searched:({key:e,maybeTargetIndex:t})=>{let i=r.searchQuery+e,a=bd(r.searchVersion);return n({model:W7(r,{searchQuery:()=>n(i,`@foldkit/ui/listbox/shared.js#searchQuery~3`),searchVersion:()=>n(a,`@foldkit/ui/listbox/shared.js#searchVersion~3`),maybeActiveItemIndex:()=>n(cr(t,()=>n(r.maybeActiveItemIndex,`@foldkit/ui/listbox/shared.js#anonymous~7`)),`@foldkit/ui/listbox/shared.js#maybeActiveItemIndex~6`)}),commands:[ATe({version:a})]},`@foldkit/ui/listbox/shared.js#Searched`)},CompletedDelayClearSearch:({version:e})=>e===r.searchVersion?n({model:W7(r,{searchQuery:()=>n(``,`@foldkit/ui/listbox/shared.js#searchQuery~4`)})},`@foldkit/ui/listbox/shared.js#CompletedDelayClearSearch`):n({model:r},`@foldkit/ui/listbox/shared.js#CompletedDelayClearSearch`),GotAnimationMessage:({message:e})=>n(t(r,e),`@foldkit/ui/listbox/shared.js#GotAnimationMessage`),PressedPointerOnButton:({pointerType:e,button:t})=>{let i=W7(r,{maybeLastButtonPointerType:()=>n(x(e),`@foldkit/ui/listbox/shared.js#maybeLastButtonPointerType~2`)});return e!==`mouse`||t!==0?n({model:i},`@foldkit/ui/listbox/shared.js#PressedPointerOnButton`):r.isOpen?n(IN(i,[e=>n(o(e,h),`@foldkit/ui/listbox/shared.js#anonymous~8`),t=>n({model:W7(t,{maybeLastButtonPointerType:()=>n(x(e),`@foldkit/ui/listbox/shared.js#maybeLastButtonPointerType~3`)})},`@foldkit/ui/listbox/shared.js#anonymous~9`)]),`@foldkit/ui/listbox/shared.js#PressedPointerOnButton`):n(a(W7(i,{maybeActiveItemIndex:()=>n(b(),`@foldkit/ui/listbox/shared.js#maybeActiveItemIndex~7`),activationTrigger:()=>n(`Pointer`,`@foldkit/ui/listbox/shared.js#activationTrigger~4`),searchQuery:()=>n(``,`@foldkit/ui/listbox/shared.js#searchQuery~5`),searchVersion:()=>n(0,`@foldkit/ui/listbox/shared.js#searchVersion~4`),maybeLastPointerPosition:()=>n(b(),`@foldkit/ui/listbox/shared.js#maybeLastPointerPosition~4`)}),p),`@foldkit/ui/listbox/shared.js#PressedPointerOnButton`)},IgnoredMouseClick:()=>n({model:W7(r,{maybeLastButtonPointerType:()=>n(b(),`@foldkit/ui/listbox/shared.js#maybeLastButtonPointerType~4`)})},`@foldkit/ui/listbox/shared.js#IgnoredMouseClick`)}),`@foldkit/ui/listbox/shared.js#internalUpdate`)},`@foldkit/ui/listbox/shared.js#makeUpdate`)},NTe=jE(`AnchorListbox`,{args:{buttonId:O,anchor:Bwe},messages:[R7.CompletedAnchorListbox],execute:({element:e,buttonId:t,anchor:r})=>n(D(function*(){return yield*Tf(E(()=>n(Jwe(e,{buttonId:t,anchor:r,focusAfterPosition:!0}),`@foldkit/ui/listbox/shared.js#anonymous~11`)),e=>n(E(e),`@foldkit/ui/listbox/shared.js#anonymous~12`)),n(R7.CompletedAnchorListbox(),`@foldkit/ui/listbox/shared.js#anonymous~10`)}),`@foldkit/ui/listbox/shared.js#execute~9`)}),PTe=jE(`PortalListboxBackdrop`,{messages:[R7.CompletedPortalListboxBackdrop],execute:({element:e})=>n(D(function*(){return yield*Tf(E(()=>n(Kwe(e),`@foldkit/ui/listbox/shared.js#anonymous~14`)),e=>n(E(e),`@foldkit/ui/listbox/shared.js#anonymous~15`)),n(R7.CompletedPortalListboxBackdrop(),`@foldkit/ui/listbox/shared.js#anonymous~13`)}),`@foldkit/ui/listbox/shared.js#execute~10`)}),FTe=e=>{let t=qD((t,r,i)=>{let{id:a,isOpen:o,orientation:s,animation:{transitionState:c},maybeActiveItemIndex:l,searchQuery:u,maybeLastButtonPointerType:d}=t,{items:f,itemToConfig:p,isItemDisabled:h,isButtonDisabled:g,buttonContent:_,buttonClassName:v,buttonAttributes:y=[],itemsClassName:ee,itemsAttributes:te=[],itemsScrollClassName:ne,itemsScrollAttributes:re=[],backdropClassName:ie,backdropAttributes:ae=[],className:oe,attributes:se=[],itemGroupKey:ce,groupToHeading:le,groupClassName:de,groupAttributes:fe=[],separatorClassName:pe,separatorAttributes:me=[],anchor:he={},name:ge,form:_e,isDisabled:ve,isReadOnly:ye=!1,isInvalid:be,ariaLabel:xe,ariaLabelledBy:Se,selectedValues:Ce}=r,we=r.itemToValue??(e=>n(globalThis.String(e),`@foldkit/ui/listbox/shared.js#anonymous~17`)),Te=e=>n(ta(Ce,e),`@foldkit/ui/listbox/shared.js#isValueSelected`),Ee=r.itemToSearchText??(e=>n(we(e),`@foldkit/ui/listbox/shared.js#anonymous~18`)),De=c===`LeaveStart`||c===`LeaveAnimating`,Oe=o||De,ke=Ew(c).pipe(kw(`EnterStart`,()=>n([i.DataAttribute(`closed`,``),i.DataAttribute(`enter`,``),i.DataAttribute(`transition`,``)],`@foldkit/ui/listbox/shared.js#anonymous~19`)),kw(`EnterAnimating`,()=>n([i.DataAttribute(`enter`,``),i.DataAttribute(`transition`,``)],`@foldkit/ui/listbox/shared.js#anonymous~20`)),kw(`LeaveStart`,()=>n([i.DataAttribute(`leave`,``),i.DataAttribute(`transition`,``)],`@foldkit/ui/listbox/shared.js#anonymous~21`)),kw(`LeaveAnimating`,()=>n([i.DataAttribute(`closed`,``),i.DataAttribute(`leave`,``),i.DataAttribute(`transition`,``)],`@foldkit/ui/listbox/shared.js#anonymous~22`)),Pw(()=>n([],`@foldkit/ui/listbox/shared.js#anonymous~23`))),Ae=e=>n(ue(h)&&m(f,Mi(e),Cr(t=>n(h(t,e),`@foldkit/ui/listbox/shared.js#anonymous~24`))),`@foldkit/ui/listbox/shared.js#isItemDisabledByIndex`),je=ve||g,Me=s===`Horizontal`?`ArrowRight`:`ArrowDown`,Ne=s===`Horizontal`?`ArrowLeft`:`ArrowUp`,Pe=[Me,Ne,`Home`,`End`,`PageUp`,`PageDown`],Fe=e=>n(ta(Pe,e),`@foldkit/ui/listbox/shared.js#isNavigationKey`),Ie=I7(f.length,0,Ae)(0,1),Le=I7(f.length,0,Ae)(f.length-1,-1),Re=m(Ce,Pi,gr(e=>n(qi(f,t=>n(we(t)===e,`@foldkit/ui/listbox/shared.js#anonymous~26`)),`@foldkit/ui/listbox/shared.js#anonymous~25`))),ze=e=>n(o?Ke(e):Ew(e).pipe(Aw(`Enter`,` `,`ArrowDown`,()=>n(x(R7.Opened({maybeActiveItemIndex:cr(Re,()=>n(x(Ie),`@foldkit/ui/listbox/shared.js#anonymous~28`))})),`@foldkit/ui/listbox/shared.js#anonymous~27`)),kw(`ArrowUp`,()=>n(x(R7.Opened({maybeActiveItemIndex:cr(Re,()=>n(x(Le),`@foldkit/ui/listbox/shared.js#anonymous~30`))})),`@foldkit/ui/listbox/shared.js#anonymous~29`)),Pw(()=>n(b(),`@foldkit/ui/listbox/shared.js#anonymous~31`))),`@foldkit/ui/listbox/shared.js#handleButtonKeyDown`),Be=(e,t)=>n(x(R7.PressedPointerOnButton({pointerType:e,button:t})),`@foldkit/ui/listbox/shared.js#handleButtonPointerDown`),Ve=()=>Cr(d,e=>n(e===`mouse`,`@foldkit/ui/listbox/shared.js#anonymous~32`))?n(R7.IgnoredMouseClick(),`@foldkit/ui/listbox/shared.js#handleButtonClick`):n(o?R7.Closed():R7.Opened({maybeActiveItemIndex:b()}),`@foldkit/ui/listbox/shared.js#handleButtonClick`),He=e=>n(P7(e===` `,R7.SuppressedSpaceScroll()),`@foldkit/ui/listbox/shared.js#handleSpaceKeyUp`),Ue=e=>n(C(l,{onNone:()=>n(Ew(e).pipe(Aw(Ne,`End`,`PageDown`,()=>n(Le,`@foldkit/ui/listbox/shared.js#anonymous~33`)),Pw(()=>n(Ie,`@foldkit/ui/listbox/shared.js#anonymous~34`))),`@foldkit/ui/listbox/shared.js#onNone~2`),onSome:t=>n(_Te(Me,Ne,f.length,t,Ae)(e),`@foldkit/ui/listbox/shared.js#onSome~2`)}),`@foldkit/ui/listbox/shared.js#resolveActiveIndex`),We=e=>{let t=u+e,r=vTe(f,t,l,Ae,Ee,Ed(u));return n(x(R7.Searched({key:e,maybeTargetIndex:r})),`@foldkit/ui/listbox/shared.js#searchForKey`)},Ge=()=>n(ye?hr(l,R7.SuppressedItemCommit()):mr(l,e=>n(R7.RequestedItemClick({index:e}),`@foldkit/ui/listbox/shared.js#anonymous~35`)),`@foldkit/ui/listbox/shared.js#resolveCommitMessage`),Ke=e=>n(Ew(e).pipe(kw(`Escape`,()=>n(x(R7.Closed()),`@foldkit/ui/listbox/shared.js#anonymous~36`)),kw(`Enter`,Ge),kw(` `,()=>n(Ed(u)?We(` `):Ge(),`@foldkit/ui/listbox/shared.js#anonymous~37`)),kw(Fe,()=>n(x(R7.ActivatedItem({index:Ue(e),activationTrigger:`Keyboard`})),`@foldkit/ui/listbox/shared.js#anonymous~38`)),kw(gTe,()=>n(We(e),`@foldkit/ui/listbox/shared.js#anonymous~39`)),Pw(()=>n(b(),`@foldkit/ui/listbox/shared.js#anonymous~40`))),`@foldkit/ui/listbox/shared.js#handleItemsKeyDown`),qe=ue(xe)?n([i.AriaLabel(xe)],`@foldkit/ui/listbox/shared.js#resolveButtonLabel`):ue(Se)?n([i.AriaLabelledBy(Se)],`@foldkit/ui/listbox/shared.js#resolveButtonLabel`):n([],`@foldkit/ui/listbox/shared.js#resolveButtonLabel`),Je=[i.Id(`${a}-button`),i.Type(`button`),i.AriaHasPopup(`listbox`),i.AriaExpanded(Oe),...Oe?[i.AriaControls(`${a}-items`)]:[],...qe,...je?[i.AriaDisabled(!0),i.DataAttribute(`disabled`,``)]:[i.OnPointerDown(Be),i.OnKeyDownPreventDefault(ze),i.OnKeyUpPreventDefault(He),i.OnClick(Ve())],...Oe?[i.DataAttribute(`open`,``),i.Style({position:`relative`,zIndex:`1`})]:[],...ye?[i.DataAttribute(`readonly`,``)]:[],...be?[i.DataAttribute(`invalid`,``)]:[],...v?[i.Class(v)]:[],...y],Ye=C(l,{onNone:()=>n([],`@foldkit/ui/listbox/shared.js#onNone~3`),onSome:e=>n([i.AriaActiveDescendant(U7(a,e))],`@foldkit/ui/listbox/shared.js#onSome~3`)}),Xe=[i.Style({position:`absolute`,margin:`0`,visibility:`hidden`}),i.OnMount(NTe({buttonId:`${a}-button`,anchor:he}))],Ze=[i.Id(`${a}-items`),i.Role(`listbox`),i.AriaOrientation(Cd(s)),...e.ariaMultiSelectable?[i.AriaMultiSelectable(!0)]:[],...ye?[i.AriaReadonly(!0),i.DataAttribute(`readonly`,``)]:[],i.AriaLabelledBy(`${a}-button`),...Ye,i.Tabindex(-1),...Xe,...ke,...De?[]:[i.OnKeyDownPreventDefault(Ke),i.OnKeyUpPreventDefault(He),i.OnBlur(R7.BlurredItems())],...ee?[i.Class(ee)]:[],...te],Qe=w(f,(e,t)=>{let r=Cr(l,e=>n(e===t,`@foldkit/ui/listbox/shared.js#anonymous~42`)),o=Ae(t),s=Te(we(e)),c=p(e,{isActive:r,isDisabled:o,isReadOnly:ye,isSelected:s}),u=!o&&!De,d=u&&!ye;return n(i.keyed(`div`)(U7(a,t),[i.Id(U7(a,t)),i.Role(`option`),i.AriaSelected(s),...r?[i.DataAttribute(`active`,``)]:[],...s?[i.DataAttribute(`selected`,``)]:[],...o?[i.AriaDisabled(!0),i.DataAttribute(`disabled`,``)]:[],...ye?[i.DataAttribute(`readonly`,``)]:[],...d?[i.OnClick(R7.SelectedItem({item:we(e)}))]:[],...u?[...r?[]:[i.OnPointerMove((e,r,i)=>n(P7(i!==`touch`,R7.MovedPointerOverItem({index:t,screenX:e,screenY:r})),`@foldkit/ui/listbox/shared.js#anonymous~43`))],i.OnPointerLeave(e=>n(P7(e!==`touch`,R7.DeactivatedItem()),`@foldkit/ui/listbox/shared.js#anonymous~44`))]:[],...c.className?[i.Class(c.className)]:[]],[c.content]),`@foldkit/ui/listbox/shared.js#anonymous~41`)}),$e=()=>n(ce?ca(hTe(Qe,(e,t)=>n(Mi(f,t).pipe(C({onNone:()=>n(``,`@foldkit/ui/listbox/shared.js#onNone~4`),onSome:e=>n(ce(e,t),`@foldkit/ui/listbox/shared.js#onSome~4`)})),`@foldkit/ui/listbox/shared.js#anonymous~45`)),(e,t)=>{let r=lr(le?.(e.key)),o=`${a}-heading-${e.key}`,s=[...C(r,{onNone:()=>n([],`@foldkit/ui/listbox/shared.js#onNone~5`),onSome:e=>n([i.keyed(`div`)(o,[i.Id(o),i.Role(`presentation`),...e.className?[i.Class(e.className)]:[]],[e.content])],`@foldkit/ui/listbox/shared.js#onSome~5`)}),...e.items],c=i.keyed(`div`)(`${a}-group-${e.key}`,[i.Role(`group`),...S(r)?[i.AriaLabelledBy(o)]:[],...de?[i.Class(de)]:[],...fe],s);return n([...t>0&&(pe||ki(me))?[i.keyed(`div`)(`${a}-separator-${t}`,[i.Role(`separator`),...pe?[i.Class(pe)]:[],...me])]:[],c],`@foldkit/ui/listbox/shared.js#anonymous~46`)}):Qe,`@foldkit/ui/listbox/shared.js#renderGroupedItems`),et=i.keyed(`div`)(`${a}-backdrop`,[i.OnMount(PTe()),...De?[]:[i.OnClick(R7.Closed())],...ie?[i.Class(ie)]:[],...ae]),tt=$e(),nt=ne||ki(re)?[i.div([...ne?[i.Class(ne)]:[],...re],tt)]:tt,rt=[et,i.keyed(`div`)(`${a}-items-container`,Ze,nt)],it=_e?[i.Attribute(`form`,_e)]:[],at=ge?xi(Ce,{onEmpty:()=>n([i.input([i.Type(`hidden`),i.Name(ge),...it])],`@foldkit/ui/listbox/shared.js#onEmpty`),onNonEmpty:w(e=>n(i.input([i.Type(`hidden`),i.Name(ge),i.Value(e),...it]),`@foldkit/ui/listbox/shared.js#anonymous~47`))}):[],ot=[...oe?[i.Class(oe)]:[],...se,...Oe?[i.DataAttribute(`open`,``)]:[],...ve?[i.DataAttribute(`disabled`,``)]:[],...ye?[i.DataAttribute(`readonly`,``)]:[],...be?[i.DataAttribute(`invalid`,``)]:[]];return n(i.div(ot,[i.keyed(`button`)(`${a}-button`,Je,[_]),...at,...Oe?rt:[]]),`@foldkit/ui/listbox/shared.js#anonymous~16`)});return n((()=>n(t,`@foldkit/ui/listbox/shared.js#anonymous~48`)),`@foldkit/ui/listbox/shared.js#makeView`)},G7=A({...yTe.fields}),K7=e=>n(bTe(e),`@foldkit/ui/listbox/single.js#init`),ITe=MTe((e,t,r)=>n(r.closeWithFocus(e,z7.Selected({value:t})),`@foldkit/ui/listbox/single.js#anonymous`)),LTe=FTe({ariaMultiSelectable:!1})(),RTe=qD((e,{maybeSelectedValue:t,...r},i)=>n(LTe(e,{...r,selectedValues:yr(t)},i),`@foldkit/ui/listbox/single.js#anonymous~2`)),q7=()=>{let e=ITe;return n({view:RTe,update:e,selectItem:(t,r)=>n(e(t,R7.SelectedItem({item:r})),`@foldkit/ui/listbox/single.js#selectItem~2`),open:t=>n(e(t,R7.Opened({maybeActiveItemIndex:b()})),`@foldkit/ui/listbox/single.js#open~2`),close:t=>n(e(t,R7.Closed()),`@foldkit/ui/listbox/single.js#close~2`)},`@foldkit/ui/listbox/single.js#create`)},J7=pT({Loading:{},Failed:{error:O},Ready:{settings:_R}}),Y7=pT({Idle:{},Saving:{},Saved:{},Failed:{error:O}}),X7=pT({Loading:{},Failed:{error:O},Ready:{options:j(pR)}}),Z7=A({deep:G7,smart:G7,fast:G7}),zTe=A({load:J7,draftRetention:k,save:Y7,notificationPermission:O,defaults:_R,models:X7,modelListboxes:Z7,reasoningListboxes:Z7}),BTe=tb([`dailyMinutes`,`desiredRetention`,`maxNewLessonsPerDay`,`showVisuals`,`reminder`]),Q7=fT({SucceededFetchSettings:{settings:_R,defaults:_R},FailedFetchSettings:{error:O},ClickedRetry:{},ClickedDailyMinutes:{minutes:sR},ClickedNewLessonCap:{count:k},MovedRetention:{value:O},ReleasedRetention:{value:O},ToggledVisuals:{},ToggledReminder:{},ChangedReminderTime:{value:O},CompletedRequestNotifications:{permission:O},SucceededSaveSettings:{settings:_R},FailedSaveSettings:{error:O},SucceededFetchModels:{options:j(pR)},FailedFetchModels:{error:O},GotModelListboxMessage:{tier:uR,message:R7},GotReasoningListboxMessage:{tier:uR,message:R7},ToggledFastMode:{tier:uR},ClickedResetPreference:{preference:BTe},ClickedResetPreferences:{},ClickedResetTier:{tier:uR},ClickedResetModels:{}}),$7=N(`FetchSettings`,{messages:[Q7.SucceededFetchSettings,Q7.FailedFetchSettings],execute:D(function*(){let e=yield*XR,[t,r]=yield*Pd([e.settings.get(),e.settings.defaults()],{concurrency:2});return n(Q7.SucceededFetchSettings({settings:t,defaults:r}),`src/page/settings.ts#anonymous`)}).pipe(rf(e=>n(T(Q7.FailedFetchSettings({error:QR(e)})),`src/page/settings.ts#anonymous~2`)))}),VTe=N(`FetchModels`,{messages:[Q7.SucceededFetchModels,Q7.FailedFetchModels],execute:D(function*(){let e=yield*(yield*XR).settings.models();return n(Q7.SucceededFetchModels({options:e}),`src/page/settings.ts#anonymous~3`)}).pipe(rf(e=>n(T(Q7.FailedFetchModels({error:QR(e)})),`src/page/settings.ts#anonymous~4`)))}),HTe=N(`RequestNotifications`,{messages:[Q7.CompletedRequestNotifications],execute:Id(()=>n(`Notification`in globalThis?globalThis.Notification.requestPermission():Promise.resolve(`unsupported`),`src/page/settings.ts#anonymous~5`)).pipe(ef(e=>n(Q7.CompletedRequestNotifications({permission:e}),`src/page/settings.ts#anonymous~6`)),rf(()=>n(T(Q7.CompletedRequestNotifications({permission:`unsupported`})),`src/page/settings.ts#anonymous~7`)))}),UTe=N(`SaveSettings`,{args:{settings:_R},messages:[Q7.SucceededSaveSettings,Q7.FailedSaveSettings],execute:({settings:e})=>n(D(function*(){let t=yield*(yield*XR).settings.set({payload:e});return n(Q7.SucceededSaveSettings({settings:t}),`src/page/settings.ts#anonymous~8`)}).pipe(rf(e=>n(T(Q7.FailedSaveSettings({error:QR(e)})),`src/page/settings.ts#anonymous~9`))),`src/page/settings.ts#execute`)}),e9=e=>n({deep:K7({id:`${e}-deep`}),smart:K7({id:`${e}-smart`}),fast:K7({id:`${e}-fast`})},`src/page/settings.ts#tierListboxes`),WTe=()=>n({model:{load:J7.Loading(),draftRetention:.9,save:Y7.Idle(),notificationPermission:`unknown`,defaults:vR,models:X7.Loading(),modelListboxes:e9(`model`),reasoningListboxes:e9(`reasoning`)},commands:[$7(),VTe()]},`src/page/settings.ts#init`),t9=e=>n(Qte(globalThis.Number(e)/100,{minimum:hR,maximum:gR}),`src/page/settings.ts#parseRetention`),n9=e=>n((t=>n(J7.match(e.load,{Loading:()=>n({model:e},`src/page/settings.ts#Loading`),Failed:()=>n({model:e},`src/page/settings.ts#Failed`),Ready:({settings:r})=>{let i=t(r);return n({model:P(e,{load:()=>n(J7.Ready({settings:i}),`src/page/settings.ts#load`),draftRetention:()=>n(i.desiredRetention,`src/page/settings.ts#draftRetention`),save:()=>n(Y7.Saving(),`src/page/settings.ts#save`)}),commands:[UTe({settings:i})]},`src/page/settings.ts#Ready`)}}),`src/page/settings.ts#anonymous~10`)),`src/page/settings.ts#change`),r9=(e,t,r)=>n({deep:t===`deep`?r:e.deep,smart:t===`smart`?r:e.smart,fast:t===`fast`?r:e.fast},`src/page/settings.ts#withTier`),i9=e=>n(X7.match(e.models,{Loading:()=>n([],`src/page/settings.ts#Loading~2`),Failed:()=>n([],`src/page/settings.ts#Failed~2`),Ready:({options:e})=>n(e,`src/page/settings.ts#Ready~2`)}),`src/page/settings.ts#modelOptions`),a9=(e,t)=>n((r=>n(n9(r)(i=>n({...i,models:r9(i.models,e,yR(t(i.models[e]),i9(r)))},`src/page/settings.ts#anonymous~12`)),`src/page/settings.ts#anonymous~11`)),`src/page/settings.ts#changeChoice`),o9={dailyMinutes:(e,t)=>n({...e,dailyMinutes:t.dailyMinutes},`src/page/settings.ts#dailyMinutes`),desiredRetention:(e,t)=>n({...e,desiredRetention:t.desiredRetention},`src/page/settings.ts#desiredRetention`),maxNewLessonsPerDay:(e,t)=>n({...e,maxNewLessonsPerDay:t.maxNewLessonsPerDay},`src/page/settings.ts#maxNewLessonsPerDay`),showVisuals:(e,t)=>n({...e,showVisuals:t.showVisuals},`src/page/settings.ts#showVisuals`),reminder:(e,t)=>n({...e,reminder:t.reminder},`src/page/settings.ts#reminder`)},s9=[`dailyMinutes`,`desiredRetention`,`maxNewLessonsPerDay`,`showVisuals`,`reminder`],c9=(e,t,r)=>n(r===`desiredRetention`?Math.round(e.desiredRetention*100)!==Math.round(t.desiredRetention*100):r===`reminder`?e.reminder.isOn!==t.reminder.isOn||e.reminder.time!==t.reminder.time:e[r]!==t[r],`src/page/settings.ts#isPreferenceChanged`),l9=(e,t,r)=>{let i=e.models[r],a=t.models[r];return n(i.model!==a.model||i.reasoning!==a.reasoning||i.fastMode!==a.fastMode,`src/page/settings.ts#isTierChanged`)},u9=q7(),d9=q7(),f9=e=>n(LN({update:u9.update,read:t=>n(x(t.modelListboxes[e]),`src/page/settings.ts#read`),write:(t,r)=>n(P(t,{modelListboxes:t=>n(r9(t,e,r),`src/page/settings.ts#modelListboxes`)}),`src/page/settings.ts#write`),toParentMessage:t=>n(Q7.GotModelListboxMessage({tier:e,message:t}),`src/page/settings.ts#toParentMessage`),foldOutMessage:z7.match({Selected:({value:t})=>n((r=>n(a9(e,e=>n({...e,model:t},`src/page/settings.ts#anonymous~14`))(r),`src/page/settings.ts#anonymous~13`)),`src/page/settings.ts#Selected`)})}),`src/page/settings.ts#foldModelListbox`),p9=e=>n(LN({update:d9.update,read:t=>n(x(t.reasoningListboxes[e]),`src/page/settings.ts#read~2`),write:(t,r)=>n(P(t,{reasoningListboxes:t=>n(r9(t,e,r),`src/page/settings.ts#reasoningListboxes`)}),`src/page/settings.ts#write~2`),toParentMessage:t=>n(Q7.GotReasoningListboxMessage({tier:e,message:t}),`src/page/settings.ts#toParentMessage~2`),foldOutMessage:z7.match({Selected:({value:t})=>n((r=>n(a9(e,e=>n({...e,reasoning:t},`src/page/settings.ts#anonymous~16`))(r),`src/page/settings.ts#anonymous~15`)),`src/page/settings.ts#Selected~2`)})}),`src/page/settings.ts#foldReasoningListbox`),GTe={deep:f9(`deep`),smart:f9(`smart`),fast:f9(`fast`)},KTe={deep:p9(`deep`),smart:p9(`smart`),fast:p9(`fast`)},qTe=(e,t)=>n(Q7.match(t,{SucceededFetchSettings:({settings:t,defaults:r})=>n({model:P(e,{load:()=>n(J7.Ready({settings:t}),`src/page/settings.ts#load~2`),defaults:()=>n(r,`src/page/settings.ts#defaults`),draftRetention:()=>n(t.desiredRetention,`src/page/settings.ts#draftRetention~2`)})},`src/page/settings.ts#SucceededFetchSettings`),ClickedResetPreference:({preference:t})=>n(n9(e)(r=>n(o9[t](r,e.defaults),`src/page/settings.ts#anonymous~17`)),`src/page/settings.ts#ClickedResetPreference`),ClickedResetPreferences:()=>n(n9(e)(t=>n(s9.reduce((t,r)=>n(o9[r](t,e.defaults),`src/page/settings.ts#anonymous~19`),t),`src/page/settings.ts#anonymous~18`)),`src/page/settings.ts#ClickedResetPreferences`),ClickedResetTier:({tier:t})=>n(a9(t,()=>n(e.defaults.models[t],`src/page/settings.ts#anonymous~20`))(e),`src/page/settings.ts#ClickedResetTier`),ClickedResetModels:()=>n(n9(e)(t=>n({...t,models:e.defaults.models},`src/page/settings.ts#anonymous~21`)),`src/page/settings.ts#ClickedResetModels`),FailedFetchSettings:({error:t})=>n({model:P(e,{load:()=>n(J7.Failed({error:t}),`src/page/settings.ts#load~3`)})},`src/page/settings.ts#FailedFetchSettings`),ClickedRetry:()=>n({model:P(e,{load:()=>n(J7.Loading(),`src/page/settings.ts#load~4`)}),commands:[$7()]},`src/page/settings.ts#ClickedRetry`),ClickedDailyMinutes:({minutes:t})=>n(n9(e)(e=>n({...e,dailyMinutes:t},`src/page/settings.ts#anonymous~22`)),`src/page/settings.ts#ClickedDailyMinutes`),ClickedNewLessonCap:({count:t})=>n(n9(e)(e=>n({...e,maxNewLessonsPerDay:t},`src/page/settings.ts#anonymous~23`)),`src/page/settings.ts#ClickedNewLessonCap`),MovedRetention:({value:t})=>n({model:P(e,{draftRetention:()=>n(t9(t),`src/page/settings.ts#draftRetention~3`)})},`src/page/settings.ts#MovedRetention`),ReleasedRetention:({value:t})=>n(n9(e)(e=>n({...e,desiredRetention:t9(t)},`src/page/settings.ts#anonymous~24`)),`src/page/settings.ts#ReleasedRetention`),ToggledVisuals:()=>n(n9(e)(e=>n({...e,showVisuals:!e.showVisuals},`src/page/settings.ts#anonymous~25`)),`src/page/settings.ts#ToggledVisuals`),ToggledReminder:()=>{let t=n9(e)(e=>n({...e,reminder:{...e.reminder,isOn:!e.reminder.isOn}},`src/page/settings.ts#anonymous~26`));return n(J7.match(e.load,{Loading:()=>n(!1,`src/page/settings.ts#Loading~3`),Failed:()=>n(!1,`src/page/settings.ts#Failed~3`),Ready:({settings:e})=>n(!e.reminder.isOn,`src/page/settings.ts#Ready~3`)})?{model:t.model,commands:[...t.commands??[],HTe()]}:t,`src/page/settings.ts#ToggledReminder`)},ChangedReminderTime:({value:t})=>n(/^\d{2}:\d{2}$/.test(t)?n9(e)(e=>n({...e,reminder:{...e.reminder,time:t}},`src/page/settings.ts#anonymous~27`)):{model:e},`src/page/settings.ts#ChangedReminderTime`),CompletedRequestNotifications:({permission:t})=>n({model:P(e,{notificationPermission:()=>n(t,`src/page/settings.ts#notificationPermission`)})},`src/page/settings.ts#CompletedRequestNotifications`),SucceededSaveSettings:({settings:t})=>n({model:P(e,{load:()=>n(J7.Ready({settings:t}),`src/page/settings.ts#load~5`),draftRetention:()=>n(t.desiredRetention,`src/page/settings.ts#draftRetention~4`),save:()=>n(Y7.Saved(),`src/page/settings.ts#save~2`)})},`src/page/settings.ts#SucceededSaveSettings`),FailedSaveSettings:({error:t})=>n({model:P(e,{save:()=>n(Y7.Failed({error:t}),`src/page/settings.ts#save~3`)})},`src/page/settings.ts#FailedSaveSettings`),SucceededFetchModels:({options:t})=>n({model:P(e,{models:()=>n(X7.Ready({options:t}),`src/page/settings.ts#models`)})},`src/page/settings.ts#SucceededFetchModels`),FailedFetchModels:({error:t})=>n({model:P(e,{models:()=>n(X7.Failed({error:t}),`src/page/settings.ts#models~2`)})},`src/page/settings.ts#FailedFetchModels`),GotModelListboxMessage:({tier:t,message:r})=>n(GTe[t](e,r),`src/page/settings.ts#GotModelListboxMessage`),GotReasoningListboxMessage:({tier:t,message:r})=>n(KTe[t](e,r),`src/page/settings.ts#GotReasoningListboxMessage`),ToggledFastMode:({tier:t})=>n(a9(t,e=>n({...e,fastMode:!e.fastMode},`src/page/settings.ts#anonymous~28`))(e),`src/page/settings.ts#ToggledFastMode`)}),`src/page/settings.ts#update`),JTe=[10,20,30,45],YTe=[1,2,3,4,5],m9=e=>n(`${Math.round(e*100)}%`,`src/page/settings.ts#percent`),XTe=e=>{let t=Sz(e),r=100-Math.round(e*100);return Math.abs(e-.9)<.005?n(`Recommended. You remember about 9 in 10 things.`,`src/page/settings.ts#retentionPreview`):n(e<.9?`Reviews come ${t.toFixed(1)} times further apart than at 90%. You forget about ${r} in 100 things.`:`Reviews come ${(1/t).toFixed(1)} times as often as at 90%. You remember about ${100-r} in 100. Good before an exam.`,`src/page/settings.ts#retentionPreview`)},h9=(e,t,r,i,a,o)=>n(o.div([o.Role(`radiogroup`),o.AriaLabel(a),o.Class(`inline-flex w-fit rounded-lg bg-muted p-1`)],w(e,e=>n(o.button([o.Type(`button`),o.Role(`radio`),o.AriaChecked(t(e)),o.OnClick(i(e)),o.Class(F(`press h-8 min-w-12 rounded-md px-3 text-sm font-medium tabular-nums transition-colors`,t(e)?`bg-background text-foreground shadow-sm dark:bg-input/40`:`text-muted-foreground hover:text-foreground`))],[r(e)]),`src/page/settings.ts#anonymous~29`))),`src/page/settings.ts#segmented`),ZTe=(e,t,r)=>n(r.button([r.Type(`button`),r.AriaLabel(e),r.Title(e),r.OnClick(t),r.Class(`press pop-in inline-flex size-7 shrink-0 items-center justify-center rounded-md text-muted-foreground outline-none hover:bg-accent hover:text-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50`)],[L(`undo`,`size-3.5`,r)]),`src/page/settings.ts#undoButton`),g9=(e,t,r)=>n(r.button([r.Type(`button`),r.AriaLabel(e),r.Title(e),r.OnClick(t),r.Class(I(`Ghost`,`Small`,`pop-in shrink-0 text-muted-foreground`))],[L(`undo`,``,r),`Reset all`]),`src/page/settings.ts#resetAllButton`),_9=(e,t,r,i)=>n(i.div([i.Class(`flex items-start justify-between gap-4 p-5 sm:p-6`)],[i.div([i.Class(`flex flex-col gap-1`)],[i.h2([i.Class(`font-semibold`)],[e]),t.length>0?i.p([i.Class(`text-sm text-muted-foreground`)],[t]):i.empty]),r]),`src/page/settings.ts#cardHeader`),v9=(e,t,r,i,a)=>n(a.div([a.Class(`flex min-h-7 items-center gap-1`)],[a.h3([a.Class(`font-medium`)],[e]),t?ZTe(r,i,a):a.empty]),`src/page/settings.ts#rowTitle`),y9=(e,t,r,i,a,o)=>n(v9(e,c9(i,a,t),`Reset ${e.toLowerCase()} to ${r}`,Q7.ClickedResetPreference({preference:t}),o),`src/page/settings.ts#preferenceTitle`),b9=(e,t,r,i)=>n(i.div([i.Class(`flex flex-col gap-3 p-5 sm:p-6`)],[i.div([i.Class(`flex flex-col gap-1`)],[e,t.length>0?i.p([i.Class(`text-sm text-muted-foreground`)],[t]):i.empty]),r]),`src/page/settings.ts#row`),QTe=(e,t)=>n(t.div([t.Class(`flex flex-col gap-3`)],[t.div([t.Class(`flex items-center gap-4`)],[t.span([t.Class(`text-xs text-muted-foreground`)],[`85%`]),t.input([t.Type(`range`),t.Min(`85`),t.Max(`95`),t.Step(`1`),t.Value(`${Math.round(e.draftRetention*100)}`),t.AriaLabel(`Desired retention, in percent`),t.OnInput(e=>n(Q7.MovedRetention({value:e}),`src/page/settings.ts#anonymous~30`)),t.OnChange(e=>n(Q7.ReleasedRetention({value:e}),`src/page/settings.ts#anonymous~31`)),t.Class(`h-2 flex-1 cursor-pointer accent-primary`)]),t.span([t.Class(`text-xs text-muted-foreground`)],[`95%`]),t.span([t.Class(`w-12 text-right text-lg font-semibold text-primary tabular-nums`)],[m9(e.draftRetention)])]),t.p([t.AriaLive(`polite`),t.Class(`text-sm text-muted-foreground`)],[XTe(e.draftRetention)])]),`src/page/settings.ts#retentionControl`),x9=(e,t,r,i)=>n(i.button([i.Type(`button`),i.Role(`switch`),i.AriaChecked(e),i.AriaLabel(t),i.OnClick(r),i.Class(F(`press relative inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full transition-colors focus-visible:ring-[3px] focus-visible:ring-ring/50 outline-none`,e?`bg-primary`:`bg-input dark:bg-input/80`))],[i.span([i.Class(F(`inline-block size-5 rounded-full bg-background shadow-sm transition-transform`,e?`translate-x-5.5`:`translate-x-0.5`))],[])]),`src/page/settings.ts#switchButton`),S9=[{tier:`deep`,title:`Knowledge maps`,description:`Builds each subject map. Runs once per subject, so a strong model pays off.`},{tier:`smart`,title:`Research and teaching`,description:`Reads sources, writes lessons and questions, and answers the tutor chat.`},{tier:`fast`,title:`Quick grading`,description:`Grades written answers. Speed matters most here.`}],C9={auto:`Auto`,low:`Low`,medium:`Medium`,high:`High`,xhigh:`Extra high`,max:`Max`},w9=`press inline-flex h-9 w-full items-center rounded-lg border border-input bg-background px-3 text-left text-sm shadow-xs outline-none hover:bg-accent focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:opacity-50 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-60 dark:bg-input/30`,T9=`z-50 max-h-96 overflow-y-auto rounded-xl border bg-popover p-1 text-popover-foreground shadow-lg outline-none`,E9={placement:`bottom-start`,gap:6,padding:8},D9=(e,t)=>n(t.span([t.Class(`flex w-full items-center justify-between gap-2`)],[t.span([t.Class(`truncate`)],[e]),L(`chevronDown`,`size-4 shrink-0 opacity-60`,t)]),`src/page/settings.ts#triggerContent`),O9=e=>n(F(`cursor-pointer rounded-lg`,e&&`bg-accent text-accent-foreground`),`src/page/settings.ts#itemClass`),$Te=(e,t,r)=>n(r.div([r.Class(`flex items-start gap-2 px-3 py-2`)],[r.div([r.Class(`flex min-w-0 flex-1 flex-col gap-0.5`)],[r.span([r.Class(`flex items-center gap-1.5 text-sm font-medium`)],[e.displayName,e.supportsFastMode?L(`zap`,`size-3 text-primary`,r):r.empty]),r.span([r.Class(`text-xs text-muted-foreground`)],[e.description])]),t?L(`check`,`mt-0.5 size-4 text-primary`,r):r.empty]),`src/page/settings.ts#modelItem`),eEe=(e,t)=>{let r=e.defaults.models[t];return n(`${C(Yi(i9(e),e=>n(e.value===r.model,`src/page/settings.ts#anonymous~32`)),{onNone:()=>n(r.model,`src/page/settings.ts#onNone`),onSome:e=>n(e.displayName,`src/page/settings.ts#onSome`)})}, ${C9[r.reasoning]} reasoning${r.fastMode?`, fast mode`:``}`,`src/page/settings.ts#defaultChoiceLabel`)},tEe=(e,t,r,i)=>{let a=t.models[r.tier],o=i9(e),s=Yi(o,e=>n(e.value===a.model,`src/page/settings.ts#anonymous~33`)),c=[`auto`,...C(s,{onNone:()=>n([],`src/page/settings.ts#onNone~2`),onSome:e=>n(e.reasoningLevels,`src/page/settings.ts#onSome~2`)})],l=e.models._tag!==`Ready`;return n(i.div([i.Class(`flex flex-col gap-3 p-5 sm:p-6`)],[i.div([i.Class(`flex flex-col gap-1`)],[v9(r.title,l9(t,e.defaults,r.tier),`Reset ${r.title.toLowerCase()} to ${eEe(e,r.tier)}`,Q7.ClickedResetTier({tier:r.tier}),i),i.p([i.Class(`text-sm text-muted-foreground`)],[r.description])]),i.div([i.Class(`flex flex-wrap items-center gap-2`)],[i.div([i.Class(`w-full sm:w-64`)],[i.submodel({slotId:`model-${r.tier}`,model:e.modelListboxes[r.tier],view:u9.view,viewInputs:{items:o,itemToValue:e=>n(e.value,`src/page/settings.ts#itemToValue`),maybeSelectedValue:x(a.model),isDisabled:l,ariaLabel:`${r.title} model`,buttonContent:D9(C(s,{onNone:()=>n(a.model,`src/page/settings.ts#onNone~3`),onSome:e=>n(e.displayName,`src/page/settings.ts#onSome~3`)}),i),buttonClassName:w9,itemsClassName:F(T9,`w-80`),backdropClassName:`fixed inset-0 z-40`,anchor:E9,itemGroupKey:e=>n(e.isLatest?`latest`:`pinned`,`src/page/settings.ts#itemGroupKey`),groupToHeading:e=>n({content:i.span([],[e===`latest`?`Latest · updates on its own`:`Pinned versions`]),className:`px-3 pt-2 pb-1 text-[11px] font-medium tracking-wide text-muted-foreground uppercase`},`src/page/settings.ts#groupToHeading`),itemToSearchText:e=>n(e.displayName,`src/page/settings.ts#itemToSearchText`),itemToConfig:(e,{isActive:t,isSelected:r})=>n({className:O9(t),content:$Te(e,r,i)},`src/page/settings.ts#itemToConfig`)},toParentMessage:e=>n(Q7.GotModelListboxMessage({tier:r.tier,message:e}),`src/page/settings.ts#toParentMessage~3`)})]),i.div([i.Class(`w-40`)],[i.submodel({slotId:`reasoning-${r.tier}`,model:e.reasoningListboxes[r.tier],view:d9.view,viewInputs:{items:c,maybeSelectedValue:x(a.reasoning),isDisabled:l||c.length===1,ariaLabel:`${r.title} reasoning`,buttonContent:D9(`${C9[a.reasoning]} reasoning`,i),buttonClassName:w9,itemsClassName:F(T9,`w-56`),backdropClassName:`fixed inset-0 z-40`,anchor:E9,itemToConfig:(e,{isActive:t,isSelected:r})=>n({className:O9(t),content:i.div([i.Class(`flex items-start gap-2 px-3 py-2`)],[i.div([i.Class(`flex flex-1 flex-col gap-0.5`)],[i.span([i.Class(`text-sm font-medium`)],[C9[e]]),e===`auto`?i.span([i.Class(`text-xs text-muted-foreground`)],[`Picks the level for each step`]):i.empty]),r?L(`check`,`mt-0.5 size-4 text-primary`,i):i.empty])},`src/page/settings.ts#itemToConfig~2`)},toParentMessage:e=>n(Q7.GotReasoningListboxMessage({tier:r.tier,message:e}),`src/page/settings.ts#toParentMessage~4`)})]),Cr(s,e=>n(e.supportsFastMode,`src/page/settings.ts#anonymous~34`))?i.button([i.Type(`button`),i.Role(`switch`),i.AriaChecked(a.fastMode),i.Title(`Faster replies. Uses more of your plan.`),i.OnClick(Q7.ToggledFastMode({tier:r.tier})),i.Class(F(`press inline-flex h-9 items-center gap-1.5 rounded-lg border px-3 text-sm outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50`,a.fastMode?`border-primary/50 bg-primary/10 text-primary`:`border-input text-muted-foreground hover:bg-accent`))],[L(`zap`,`size-3.5`,i),`Fast mode`]):i.empty])]),`src/page/settings.ts#tierRow`)},k9=4,A9=e=>n(Math.round(k9*Math.max(ER(e.models.smart,`smart`,`medium`),ER(e.models.deep,`deep`,`low`))),`src/page/settings.ts#researchMinutes`),nEe=(e,t)=>n(A9(e)>=k9*1.5?t.p([t.Class(`mx-5 mb-4 flex items-start gap-2 rounded-lg bg-amber-500/10 px-3 py-2 text-sm text-amber-700 sm:mx-6 dark:text-amber-300`)],[L(`clock`,`mt-0.5 size-4 shrink-0`,t),`With these picks, a new subject takes about ${A9(e)} minutes to research instead of ${k9}. Lessons are slower too.`]):t.empty,`src/page/settings.ts#researchTimeNote`),rEe=(e,t,r)=>n(r.section([r.Class(Bz(`reveal divide-y`))],[_9(`AI models`,`Bigger models and more reasoning are slower and use more of your Claude plan.`,ma(S9,r=>n(l9(t,e.defaults,r.tier),`src/page/settings.ts#anonymous~35`))?g9(`Reset every AI model setting to its default`,Q7.ClickedResetModels(),r):r.empty,r),nEe(t,r),X7.match(e.models,{Loading:()=>n(r.empty,`src/page/settings.ts#Loading~4`),Ready:()=>n(r.empty,`src/page/settings.ts#Ready~4`),Failed:({error:e})=>n(r.p([r.Class(`px-5 pb-4 text-sm text-destructive sm:px-6`)],[`Couldn't load models: ${e}`]),`src/page/settings.ts#Failed~4`)}),...w(S9,i=>n(tEe(e,t,i,r),`src/page/settings.ts#anonymous~36`))]),`src/page/settings.ts#modelsCard`),iEe=(e,t)=>n(Y7.match(e,{Idle:()=>n(t.empty,`src/page/settings.ts#Idle`),Saving:()=>n(t.span([t.Class(zz(`Neutral`))],[L(`refresh`,`spinner`,t),`Saving`]),`src/page/settings.ts#Saving`),Saved:()=>n(t.span([t.Class(zz(`Success`))],[L(`check`,``,t),`Saved`]),`src/page/settings.ts#Saved`),Failed:({error:e})=>n(t.span([t.Class(zz(`Destructive`)),t.Title(e)],[L(`alert`,``,t),`Not saved`]),`src/page/settings.ts#Failed~5`)}),`src/page/settings.ts#saveStatus`),aEe=(e,t,r)=>n(r.section([r.Class(Bz(`reveal divide-y`))],[_9(`Your learning`,``,ma(s9,r=>n(c9(t,e.defaults,r),`src/page/settings.ts#anonymous~37`))?g9(`Reset every learning setting to its default`,Q7.ClickedResetPreferences(),r):r.empty,r),b9(y9(`Daily time`,`dailyMinutes`,`${e.defaults.dailyMinutes} min`,t,e.defaults,r),`Reviews come first. New lessons fill the rest.`,h9(JTe,e=>n(e===t.dailyMinutes,`src/page/settings.ts#anonymous~38`),e=>n(`${e} min`,`src/page/settings.ts#anonymous~39`),e=>n(Q7.ClickedDailyMinutes({minutes:e}),`src/page/settings.ts#anonymous~40`),`Daily time`,r),r),b9(y9(`How much to remember`,`desiredRetention`,m9(e.defaults.desiredRetention),t,e.defaults,r),``,QTe(e,r),r),b9(y9(`New concepts per day`,`maxNewLessonsPerDay`,`${e.defaults.maxNewLessonsPerDay}`,t,e.defaults,r),`More new concepts means more reviews later. 3 is steady. 5 is a lot.`,h9(YTe,e=>n(e===t.maxNewLessonsPerDay,`src/page/settings.ts#anonymous~41`),e=>n(`${e}`,`src/page/settings.ts#anonymous~42`),e=>n(Q7.ClickedNewLessonCap({count:e}),`src/page/settings.ts#anonymous~43`),`New concepts per day`,r),r),r.div([r.Class(`flex items-center justify-between gap-6 p-5 sm:p-6`)],[r.div([r.Class(`flex flex-col gap-1`)],[y9(`Visual explanations`,`showVisuals`,e.defaults.showVisuals?`on`:`off`,t,e.defaults,r),r.p([r.Class(`text-sm text-muted-foreground`)],[`Moving diagrams in lessons. Off loads faster.`])]),x9(t.showVisuals,`Visual explanations`,Q7.ToggledVisuals(),r)]),oEe(e,t,r)]),`src/page/settings.ts#settingsView`),oEe=(e,t,r)=>n(r.div([r.Class(`flex flex-col gap-3 p-5 sm:p-6`)],[r.div([r.Class(`flex items-start justify-between gap-6`)],[r.div([r.Class(`flex flex-col gap-1`)],[y9(`Daily reminder`,`reminder`,e.defaults.reminder.isOn?e.defaults.reminder.time:`off`,t,e.defaults,r),r.p([r.Class(`text-sm text-muted-foreground`)],[`A daily nudge when something is due. Keep BaviTutor open in a pinned tab.`])]),x9(t.reminder.isOn,`Daily reminder`,Q7.ToggledReminder(),r)]),t.reminder.isOn?r.div([r.Class(`reveal flex flex-wrap items-center gap-3 text-sm`)],[r.label([r.For(`reminder-time`),r.Class(`text-muted-foreground`)],[`Remind me at`]),r.input([r.Id(`reminder-time`),r.Type(`time`),r.Value(t.reminder.time),r.OnChange(e=>n(Q7.ChangedReminderTime({value:e}),`src/page/settings.ts#anonymous~44`)),r.Class(`h-8 rounded-md border border-input bg-transparent px-2 text-sm shadow-xs outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 dark:bg-input/30 dark:[color-scheme:dark]`)]),e.notificationPermission===`denied`?r.span([r.Class(`text-destructive`)],[`Notifications are blocked. Allow them in your browser's site settings.`]):e.notificationPermission===`unsupported`?r.span([r.Class(`text-destructive`)],[`This browser can't show notifications.`]):r.empty]):r.empty]),`src/page/settings.ts#reminderRow`),sEe=qD((e,t)=>n(t.div([t.Class(`mx-auto flex w-full max-w-2xl flex-col gap-6 px-5 py-10`)],[t.div([t.Class(`flex items-end justify-between gap-4`)],[t.div([t.Class(`flex flex-col gap-1`)],[t.h1([t.Class(`text-2xl font-semibold tracking-tight`)],[`Settings`]),t.p([t.Class(`text-sm text-muted-foreground`)],[`Changes save as you go.`])]),iEe(e.save,t)]),J7.match(e.load,{Loading:()=>n(t.div([t.Class(Bz(`h-96 animate-pulse bg-muted/40`))],[]),`src/page/settings.ts#Loading~5`),Failed:({error:e})=>n(t.div([t.Class(Bz(`flex flex-col items-start gap-3 p-6`))],[t.p([t.Class(`text-sm text-destructive`)],[e]),t.button([t.Type(`button`),t.OnClick(Q7.ClickedRetry()),t.Class(I(`Outline`,`Small`))],[L(`refresh`,``,t),`Try again`])]),`src/page/settings.ts#Failed~6`),Ready:({settings:r})=>n(t.div([t.Class(`flex flex-col gap-6`)],[aEe(e,r,t),rEe(e,r,t)]),`src/page/settings.ts#Ready~5`)})]),`src/page/settings.ts#anonymous~45`)),cEe=`Settings · BaviTutor`,j9=ST(j(MR),O),M9=pT({Nothing:{},Example:{exampleId:O},Generated:{visualId:O}}),N9=pT({Idle:{},Submitting:{},Failed:{error:O}}),lEe=A({brief:O,conceptTitle:O,context:O,submission:N9,history:j9.schema,selection:M9,maybeFrame:Mb(X3)}),P9=fT({UpdatedBrief:{value:O},UpdatedConceptTitle:{value:O},UpdatedContext:{value:O},ClickedPreset:{brief:O},SubmittedBrief:{},SucceededGenerateVisual:{visual:MR},FailedGenerateVisual:{error:O},SucceededFetchHistory:{visuals:j(MR)},FailedFetchHistory:{error:O},TickedRefresh:{},SelectedExample:{exampleId:O},SelectedVisual:{visualId:O},GotVizFrameMessage:{message:Q3}}),uEe=[`show that a fraction a/b is a parts of b equal pieces using a pie`,`show why the slope of a line is constant: rise over run on two different triangles`,`binary search halving an array`],dEe=La(4),F9=N(`FetchHistory`,{messages:[P9.SucceededFetchHistory,P9.FailedFetchHistory],execute:D(function*(){let e=yield*(yield*XR).visuals.listDev();return n(P9.SucceededFetchHistory({visuals:e}),`src/page/devVisuals.ts#anonymous`)}).pipe(rf(e=>n(T(P9.FailedFetchHistory({error:QR(e)})),`src/page/devVisuals.ts#anonymous~2`)))}),fEe=N(`GenerateVisual`,{args:{brief:O,conceptTitle:O,context:O},messages:[P9.SucceededGenerateVisual,P9.FailedGenerateVisual],execute:e=>n(D(function*(){let t=yield*(yield*XR).visuals.generateDev({payload:e});return n(P9.SucceededGenerateVisual({visual:t}),`src/page/devVisuals.ts#anonymous~3`)}).pipe(rf(e=>n(T(P9.FailedGenerateVisual({error:QR(e)})),`src/page/devVisuals.ts#anonymous~4`))),`src/page/devVisuals.ts#execute`)}),pEe=()=>n({model:{brief:``,conceptTitle:``,context:``,submission:N9.Idle(),history:j9.Loading(),selection:M9.Nothing(),maybeFrame:b()},commands:[F9()]},`src/page/devVisuals.ts#init`),I9=e=>n(P9.GotVizFrameMessage({message:e}),`src/page/devVisuals.ts#toFrameMessage`),mEe=LN({update:o6,read:e=>n(e.maybeFrame,`src/page/devVisuals.ts#read`),write:(e,t)=>n(P(e,{maybeFrame:()=>n(x(t),`src/page/devVisuals.ts#maybeFrame`)}),`src/page/devVisuals.ts#write`),toParentMessage:I9,foldOutMessage:$3.match({ReachedLastStep:()=>n((e=>n({model:e},`src/page/devVisuals.ts#anonymous~5`)),`src/page/devVisuals.ts#ReachedLastStep`),BecameUnavailable:()=>n((e=>n({model:e,commands:[F9()]},`src/page/devVisuals.ts#anonymous~6`)),`src/page/devVisuals.ts#BecameUnavailable`)})}),L9=(e,t)=>n(UN(r6({goalId:AR,visualId:t}),{toParentModel:r=>n(P(e,{selection:()=>n(M9.Generated({visualId:t}),`src/page/devVisuals.ts#selection`),maybeFrame:()=>n(x(r),`src/page/devVisuals.ts#maybeFrame~2`)}),`src/page/devVisuals.ts#toParentModel`),toParentMessage:I9}),`src/page/devVisuals.ts#showGenerated`),hEe=(e,t)=>n(C(Yi(W3,e=>n(e.id===t,`src/page/devVisuals.ts#anonymous~7`)),{onNone:()=>n({model:e},`src/page/devVisuals.ts#onNone`),onSome:r=>n({model:P(e,{selection:()=>n(M9.Example({exampleId:t}),`src/page/devVisuals.ts#selection~2`),maybeFrame:()=>n(x(rbe({key:r.id,code:r.code,title:r.title})),`src/page/devVisuals.ts#maybeFrame~3`)})},`src/page/devVisuals.ts#onSome`)}),`src/page/devVisuals.ts#showExample`),gEe=(e,t)=>n(P9.match(t,{UpdatedBrief:({value:t})=>n({model:P(e,{brief:()=>n(t,`src/page/devVisuals.ts#brief`)})},`src/page/devVisuals.ts#UpdatedBrief`),UpdatedConceptTitle:({value:t})=>n({model:P(e,{conceptTitle:()=>n(t,`src/page/devVisuals.ts#conceptTitle`)})},`src/page/devVisuals.ts#UpdatedConceptTitle`),UpdatedContext:({value:t})=>n({model:P(e,{context:()=>n(t,`src/page/devVisuals.ts#context`)})},`src/page/devVisuals.ts#UpdatedContext`),ClickedPreset:({brief:t})=>n({model:P(e,{brief:()=>n(t,`src/page/devVisuals.ts#brief~2`)})},`src/page/devVisuals.ts#ClickedPreset`),SubmittedBrief:()=>{let t=wd(e.brief);return n(t.length===0||e.submission._tag===`Submitting`?{model:e}:{model:P(e,{submission:()=>n(N9.Submitting(),`src/page/devVisuals.ts#submission`)}),commands:[fEe({brief:t,conceptTitle:wd(e.conceptTitle),context:wd(e.context)})]},`src/page/devVisuals.ts#SubmittedBrief`)},SucceededGenerateVisual:({visual:t})=>{let r=L9(P(e,{submission:()=>n(N9.Idle(),`src/page/devVisuals.ts#submission~2`)}),t.visualId);return n({model:r.model,commands:[...r.commands??[],F9()]},`src/page/devVisuals.ts#SucceededGenerateVisual`)},FailedGenerateVisual:({error:t})=>n({model:P(e,{submission:()=>n(N9.Failed({error:t}),`src/page/devVisuals.ts#submission~3`)})},`src/page/devVisuals.ts#FailedGenerateVisual`),SucceededFetchHistory:({visuals:t})=>n({model:P(e,{history:()=>n(j9.Success({data:t}),`src/page/devVisuals.ts#history`)})},`src/page/devVisuals.ts#SucceededFetchHistory`),FailedFetchHistory:({error:t})=>n({model:P(e,{history:()=>n(j9.Failure({error:t}),`src/page/devVisuals.ts#history~2`)})},`src/page/devVisuals.ts#FailedFetchHistory`),TickedRefresh:()=>n({model:e,commands:[F9()]},`src/page/devVisuals.ts#TickedRefresh`),SelectedExample:({exampleId:t})=>n(hEe(e,t),`src/page/devVisuals.ts#SelectedExample`),SelectedVisual:({visualId:t})=>n(L9(e,t),`src/page/devVisuals.ts#SelectedVisual`),GotVizFrameMessage:({message:t})=>n(mEe(e,t),`src/page/devVisuals.ts#GotVizFrameMessage`)}),`src/page/devVisuals.ts#update`),_Ee=e=>n(C(TT(e.history),{onNone:()=>n(!1,`src/page/devVisuals.ts#onNone~2`),onSome:e=>n(ma(e,e=>n(e.status===`Generating`,`src/page/devVisuals.ts#anonymous~8`)),`src/page/devVisuals.ts#onSome~2`)}),`src/page/devVisuals.ts#isAnyGenerating`),vEe=oA(iA()(e=>n({refreshWhileGenerating:e({isPolling:Ky},{modelToDependencies:e=>n({isPolling:_Ee(e)},`src/page/devVisuals.ts#modelToDependencies`),dependenciesToStream:({isPolling:e})=>n(e?TC(dEe).pipe(qC(1),zC(()=>n(P9.TickedRefresh(),`src/page/devVisuals.ts#anonymous~10`))):kC,`src/page/devVisuals.ts#dependenciesToStream`)})},`src/page/devVisuals.ts#anonymous~9`)),lA(s6)({read:e=>n(e.maybeFrame,`src/page/devVisuals.ts#read~2`),toParentMessage:I9})),yEe=d6({showDetails:!0}),R9={Generating:`Info`,Ready:`Success`,Failed:`Destructive`,Skipped:`Neutral`},z9=(e,t)=>n(t.h2([t.Class(`text-xs font-semibold tracking-wide text-muted-foreground uppercase`)],[e]),`src/page/devVisuals.ts#sectionTitle`),bEe=e=>n(M9.matchOrElse(e.selection,{Generated:({visualId:t})=>n(gr(TT(e.history),e=>n(Yi(e,e=>n(e.visualId===t,`src/page/devVisuals.ts#anonymous~12`)),`src/page/devVisuals.ts#anonymous~11`)),`src/page/devVisuals.ts#Generated`)},()=>n(b(),`src/page/devVisuals.ts#anonymous~13`)),`src/page/devVisuals.ts#selectedVisual`),xEe=(e,t)=>n(C(bEe(e),{onNone:()=>n(t.empty,`src/page/devVisuals.ts#onNone~3`),onSome:e=>n(t.div([t.Class(Bz(`flex flex-col gap-2 p-4 text-sm`))],[t.div([t.Class(`flex flex-wrap items-center gap-2`)],[t.span([t.Class(zz(R9[e.status]))],[e.status]),t.span([t.Class(`text-muted-foreground`)],[`${e.attempts} attempt${e.attempts===1?``:`s`}`]),t.code([t.Class(`ml-auto text-xs text-muted-foreground`)],[e.visualId])]),t.p([t.Class(`font-medium`)],[e.brief]),e.reviewNote.length>0?t.p([t.Class(`text-muted-foreground`)],[t.span([t.Class(`font-medium text-foreground`)],[`Review: `]),e.reviewNote]):t.empty]),`src/page/devVisuals.ts#onSome~3`)}),`src/page/devVisuals.ts#detailsView`),SEe=(e,t)=>n(t.div([t.Class(`flex min-w-0 flex-col gap-4`)],[C(e.maybeFrame,{onNone:()=>n(t.div([t.Class(Bz(`flex aspect-[16/10] flex-col items-center justify-center gap-2 p-6 text-center text-sm text-muted-foreground`))],[L(`sparkles`,`size-5`,t),`Pick an example, or generate a visual from a brief.`]),`src/page/devVisuals.ts#onNone~4`),onSome:e=>n(t.keyed(`div`)(e.frameId,[],[t.submodel({slotId:`viz-frame`,model:e,view:yEe,toParentMessage:I9})]),`src/page/devVisuals.ts#onSome~4`)}),xEe(e,t)]),`src/page/devVisuals.ts#stageView`),B9=e=>n(F(`press flex w-full items-center gap-2 rounded-lg border px-3 py-2 text-left text-sm transition-colors`,{"border-primary bg-primary/8":e,"hover:bg-accent/50":!e}),`src/page/devVisuals.ts#listButtonClass`),CEe=(e,t)=>n(t.section([t.Class(`flex flex-col gap-2`)],[z9(`Examples`,t),...w(W3,r=>n(t.keyed(`button`)(r.id,[t.Type(`button`),t.OnClick(P9.SelectedExample({exampleId:r.id})),t.Class(B9(M9.matchOrElse(e.selection,{Example:({exampleId:e})=>n(e===r.id,`src/page/devVisuals.ts#Example`)},()=>n(!1,`src/page/devVisuals.ts#anonymous~15`))))],[L(`play`,`size-3.5 text-primary`,t),r.title]),`src/page/devVisuals.ts#anonymous~14`))]),`src/page/devVisuals.ts#examplesView`),wEe=(e,t)=>{let r=e.submission._tag===`Submitting`;return n(t.form([t.OnSubmit(P9.SubmittedBrief()),t.Class(`flex flex-col gap-2`)],[z9(`Generate from a brief`,t),t.textarea([t.Value(e.brief),t.Rows(4),t.AriaLabel(`Visual brief`),t.Placeholder(`One idea, the concrete labelled elements, and the insight to make visible…`),t.OnInput(e=>n(P9.UpdatedBrief({value:e}),`src/page/devVisuals.ts#anonymous~16`)),t.Class(Vz(`resize-y text-sm`))]),t.div([t.Class(`flex flex-wrap gap-1.5`)],w(uEe,e=>n(t.keyed(`button`)(e,[t.Type(`button`),t.Title(e),t.OnClick(P9.ClickedPreset({brief:e})),t.Class(zz(`Neutral`,`press max-w-full cursor-pointer truncate hover:bg-accent`))],[e]),`src/page/devVisuals.ts#anonymous~17`))),t.input([t.Value(e.conceptTitle),t.AriaLabel(`Concept title (optional)`),t.Placeholder(`Concept title (optional)`),t.OnInput(e=>n(P9.UpdatedConceptTitle({value:e}),`src/page/devVisuals.ts#anonymous~18`)),t.Class(Vz(`text-sm`))]),t.textarea([t.Value(e.context),t.Rows(2),t.AriaLabel(`Lesson text (optional)`),t.Placeholder(`Lesson text the visual sits next to (optional)`),t.OnInput(e=>n(P9.UpdatedContext({value:e}),`src/page/devVisuals.ts#anonymous~19`)),t.Class(Vz(`resize-y text-sm`))]),t.button([t.Type(`submit`),t.Disabled(r||wd(e.brief).length===0),t.Class(I(`Primary`,`Medium`))],[r?L(`refresh`,`spinner`,t):L(`sparkles`,``,t),r?`Starting…`:`Generate`]),N9.matchOrElse(e.submission,{Failed:({error:e})=>n(t.p([t.Class(`text-sm text-destructive`)],[e]),`src/page/devVisuals.ts#Failed`)},()=>n(t.empty,`src/page/devVisuals.ts#anonymous~20`))]),`src/page/devVisuals.ts#formView`)},TEe=(e,t,r)=>n(r.keyed(`button`)(t.visualId,[r.Type(`button`),r.OnClick(P9.SelectedVisual({visualId:t.visualId})),r.Class(B9(M9.matchOrElse(e.selection,{Generated:({visualId:e})=>n(e===t.visualId,`src/page/devVisuals.ts#Generated~2`)},()=>n(!1,`src/page/devVisuals.ts#anonymous~21`))))],[r.span([r.Class(zz(R9[t.status]))],[t.status===`Generating`?L(`refresh`,`spinner`,r):r.empty,t.status]),r.span([r.Class(`min-w-0 flex-1 truncate`)],[t.brief])]),`src/page/devVisuals.ts#historyItemView`),EEe=(e,t)=>n(t.section([t.Class(`flex flex-col gap-2`)],[z9(`Recent`,t),CT(e.history,{onIdle:()=>n(t.empty,`src/page/devVisuals.ts#onIdle`),onLoading:()=>n(t.p([t.Class(`text-sm text-muted-foreground`)],[`Loading…`]),`src/page/devVisuals.ts#onLoading`),onRefreshing:r=>n(V9(e,r,t),`src/page/devVisuals.ts#onRefreshing`),onFailure:e=>n(t.p([t.Class(`text-sm text-destructive`)],[e]),`src/page/devVisuals.ts#onFailure`),onStale:({data:r})=>n(V9(e,r,t),`src/page/devVisuals.ts#onStale`),onSuccess:r=>n(V9(e,r,t),`src/page/devVisuals.ts#onSuccess`)})]),`src/page/devVisuals.ts#historyView`),V9=(e,t,r)=>n(xi(t,{onEmpty:()=>n(r.p([r.Class(`text-sm text-muted-foreground`)],[`Nothing yet.`]),`src/page/devVisuals.ts#onEmpty`),onNonEmpty:t=>n(r.div([r.Class(`flex flex-col gap-1.5`)],w(t,t=>n(TEe(e,t,r),`src/page/devVisuals.ts#anonymous~22`))),`src/page/devVisuals.ts#onNonEmpty`)}),`src/page/devVisuals.ts#historyListView`),DEe=qD((e,t)=>n(t.div([t.Class(`mx-auto flex w-full max-w-7xl flex-col gap-6 px-5 py-8`)],[t.header([t.Class(`flex flex-col gap-1`)],[t.div([t.Class(`flex items-center gap-2`)],[t.h1([t.Class(`text-2xl font-semibold tracking-tight`)],[`Visual explanations`]),t.span([t.Class(zz(`Warning`))],[`dev`])]),t.p([t.Class(`max-w-3xl text-sm text-muted-foreground`)],[`Preview the hand-written bv scenes, or type a brief to run it through the same pipeline lesson visuals use.`])]),t.div([t.Class(`grid gap-6 lg:grid-cols-[minmax(0,1fr)_22rem]`)],[SEe(e,t),t.aside([t.Class(`flex flex-col gap-6`)],[CEe(e,t),wEe(e,t),EEe(e,t)])])]),`src/page/devVisuals.ts#anonymous~23`)),OEe=A({route:Ez,home:Yme,maybeGoal:Mb(ame),maybeLesson:Mb(vbe),maybeNotes:Mb(Axe),maybePlacement:Mb(rSe),maybeReview:Mb(sCe),maybeSettings:Mb(zTe),maybeProgress:Mb(ESe),maybeToday:Mb(pL),isDark:Ky,studyMinutes:k,nextBreakAt:k,maybeReminder:Mb(mR),maybeDevVisuals:Mb(lEe)}),kEe=A({isDark:Ky}),H9=fT({ClickedLink:{request:nA},ChangedUrl:{url:Qk},CompletedNavigateInternal:{},CompletedLoadExternal:{},ToggledTheme:{},TickedStudyMinute:{},SucceededFetchReminder:{reminder:mR},FailedFetchReminder:{},TickedReminderClock:{},CompletedReminderCheck:{},ClickedTakeBreak:{},ClickedKeepStudying:{},CompletedApplyTheme:{},GotHomeMessage:{message:wZ},GotGoalMessage:{message:R},GotLessonMessage:{message:$},GotNotesMessage:{message:e8},GotPlacementMessage:{message:l8},GotReviewMessage:{message:Y8},GotSettingsMessage:{message:Q7},GotProgressMessage:{message:_8},SucceededFetchToday:{today:pL},FailedFetchToday:{},GotDevVisualsMessage:{message:P9}}),U9=N(`NavigateInternal`,{args:{url:O},messages:[H9.CompletedNavigateInternal],execute:({url:e})=>n(rA(e).pipe(tf(H9.CompletedNavigateInternal())),`src/main.ts#execute`)}),AEe=N(`LoadExternal`,{args:{href:O},messages:[H9.CompletedLoadExternal],execute:({href:e})=>n(Mpe(e).pipe(tf(H9.CompletedLoadExternal())),`src/main.ts#execute~2`)}),jEe=N(`ApplyTheme`,{args:{isDark:Ky},messages:[H9.CompletedApplyTheme],execute:({isDark:e})=>n(E(()=>{globalThis.document.documentElement.classList.toggle(`dark`,e),globalThis.localStorage.setItem(`bavi-theme`,e?`dark`:`light`)}).pipe(lf,tf(H9.CompletedApplyTheme())),`src/main.ts#execute~3`)}),W9=N(`FetchToday`,{messages:[H9.SucceededFetchToday,H9.FailedFetchToday],execute:D(function*(){let e=yield*(yield*XR).reviews.today();return n(H9.SucceededFetchToday({today:e}),`src/main.ts#anonymous~2`)}).pipe(rf(()=>n(T(H9.FailedFetchToday()),`src/main.ts#anonymous~3`)))}),G9=N(`FetchReminder`,{messages:[H9.SucceededFetchReminder,H9.FailedFetchReminder],execute:D(function*(){let e=yield*(yield*XR).settings.get();return n(H9.SucceededFetchReminder({reminder:e.reminder}),`src/main.ts#anonymous~4`)}).pipe(rf(()=>n(T(H9.FailedFetchReminder()),`src/main.ts#anonymous~5`)))}),K9=e=>n(`${e}`.padStart(2,`0`),`src/main.ts#pad`),q9=`bavi-reminded-day`,MEe=N(`CheckReminder`,{args:{time:O},messages:[H9.CompletedReminderCheck],execute:({time:e})=>n(D(function*(){let t=new Date,r=`${K9(t.getHours())}:${K9(t.getMinutes())}`,i=`${t.getFullYear()}-${K9(t.getMonth()+1)}-${K9(t.getDate())}`,a=globalThis.localStorage;if(r<e||a.getItem(q9)===i||(a.setItem(q9,i),!(`Notification`in globalThis&&globalThis.Notification.permission===`granted`&&globalThis.document.visibilityState!==`visible`)))return n(H9.CompletedReminderCheck(),`src/main.ts#anonymous~6`);let o=yield*(yield*XR).reviews.today(),s=o.nextLessons[0],c=[...o.dueCount+o.dueFlashcards>0?[`${o.dueCount+o.dueFlashcards} review${o.dueCount+o.dueFlashcards===1?``:`s`} due, about ${o.estimatedReviewMinutes} min`]:[],...o.plan.newLessonSlots>0&&s!==void 0?[`Next up: ${s.conceptTitle}`]:[]];if(c.length>0){let e=new globalThis.Notification(`BaviTutor`,{body:c.join(` · `),icon:`/icon.svg`,tag:`bavitutor-daily`});e.onclick=()=>{globalThis.focus(),globalThis.location.assign(o.dueCount+o.dueFlashcards>0?`/review`:`/`)}}return n(H9.CompletedReminderCheck(),`src/main.ts#anonymous~6`)}).pipe(rf(()=>n(T(H9.CompletedReminderCheck()),`src/main.ts#anonymous~7`))),`src/main.ts#execute~4`)}),NEe=E(()=>{let e=globalThis.localStorage.getItem(`bavi-theme`);return n({isDark:e===null?globalThis.matchMedia(`(prefers-color-scheme: dark)`).matches:e===`dark`},`src/main.ts#anonymous~8`)}).pipe(rf(()=>n(T({isDark:!1}),`src/main.ts#anonymous~9`))),PEe=LN({update:mhe,read:e=>n(x(e.home),`src/main.ts#read`),write:(e,t)=>n(P(e,{home:()=>n(t,`src/main.ts#home`)}),`src/main.ts#write`),toParentMessage:e=>n(H9.GotHomeMessage({message:e}),`src/main.ts#toParentMessage`),foldOutMessage:TZ.match({CreatedGoal:({goalId:e})=>n((t=>n({model:t,commands:[U9({url:Oz({goalId:e})})]},`src/main.ts#anonymous~10`)),`src/main.ts#CreatedGoal`)})}),FEe=LN({update:Sme,read:e=>n(e.maybeGoal,`src/main.ts#read~2`),write:(e,t)=>n(P(e,{maybeGoal:()=>n(x(t),`src/main.ts#maybeGoal`)}),`src/main.ts#write~2`),toParentMessage:e=>n(H9.GotGoalMessage({message:e}),`src/main.ts#toParentMessage~2`),foldOutMessage:ZX.match({DeletedGoal:()=>n((e=>n({model:P(e,{maybeGoal:()=>n(b(),`src/main.ts#maybeGoal~2`)}),commands:[U9({url:Dz()})]},`src/main.ts#anonymous~11`)),`src/main.ts#DeletedGoal`)})}),IEe=LN({update:Kbe,read:e=>n(e.maybeLesson,`src/main.ts#read~3`),write:(e,t)=>n(P(e,{maybeLesson:()=>n(x(t),`src/main.ts#maybeLesson`)}),`src/main.ts#write~3`),toParentMessage:e=>n(H9.GotLessonMessage({message:e}),`src/main.ts#toParentMessage~3`)}),LEe=LN({update:Mxe,read:e=>n(e.maybeNotes,`src/main.ts#read~4`),write:(e,t)=>n(P(e,{maybeNotes:()=>n(x(t),`src/main.ts#maybeNotes`)}),`src/main.ts#write~4`),toParentMessage:e=>n(H9.GotNotesMessage({message:e}),`src/main.ts#toParentMessage~4`)}),REe=LN({update:gSe,read:e=>n(e.maybePlacement,`src/main.ts#read~5`),write:(e,t)=>n(P(e,{maybePlacement:()=>n(x(t),`src/main.ts#maybePlacement`)}),`src/main.ts#write~5`),toParentMessage:e=>n(H9.GotPlacementMessage({message:e}),`src/main.ts#toParentMessage~5`),foldOutMessage:u8.match({FinishedPlacement:()=>n((e=>n({model:e,commands:bi(mr(e.maybePlacement,e=>n(U9({url:Oz({goalId:e.goalId})}),`src/main.ts#anonymous~13`)))},`src/main.ts#anonymous~12`)),`src/main.ts#FinishedPlacement`)})}),zEe=LN({update:wCe,read:e=>n(e.maybeReview,`src/main.ts#read~6`),write:(e,t)=>n(P(e,{maybeReview:()=>n(x(t),`src/main.ts#maybeReview`)}),`src/main.ts#write~6`),toParentMessage:e=>n(H9.GotReviewMessage({message:e}),`src/main.ts#toParentMessage~6`)}),BEe=LN({update:qTe,read:e=>n(e.maybeSettings,`src/main.ts#read~7`),write:(e,t)=>n(P(e,{maybeSettings:()=>n(x(t),`src/main.ts#maybeSettings`)}),`src/main.ts#write~7`),toParentMessage:e=>n(H9.GotSettingsMessage({message:e}),`src/main.ts#toParentMessage~7`)}),VEe=LN({update:OSe,read:e=>n(e.maybeProgress,`src/main.ts#read~8`),write:(e,t)=>n(P(e,{maybeProgress:()=>n(x(t),`src/main.ts#maybeProgress`)}),`src/main.ts#write~8`),toParentMessage:e=>n(H9.GotProgressMessage({message:e}),`src/main.ts#toParentMessage~8`)}),HEe=LN({update:gEe,read:e=>n(e.maybeDevVisuals,`src/main.ts#read~9`),write:(e,t)=>n(P(e,{maybeDevVisuals:()=>n(x(t),`src/main.ts#maybeDevVisuals`)}),`src/main.ts#write~9`),toParentMessage:e=>n(H9.GotDevVisualsMessage({message:e}),`src/main.ts#toParentMessage~9`)}),J9=e=>n(S(e.maybeDevVisuals)?{model:e}:UN(pEe(),{toParentModel:t=>n(P(e,{maybeDevVisuals:()=>n(x(t),`src/main.ts#maybeDevVisuals~2`)}),`src/main.ts#toParentModel`),toParentMessage:e=>n(H9.GotDevVisualsMessage({message:e}),`src/main.ts#toParentMessage~10`)}),`src/main.ts#enterDevVisuals`),Y9=(e,t)=>n(Ez.match(t,{Home:()=>n(VN({update:dhe,read:e=>n(x(e.home),`src/main.ts#read~10`),write:(e,t)=>n(P(e,{home:()=>n(t,`src/main.ts#home~2`)}),`src/main.ts#write~10`),toParentMessage:e=>n(H9.GotHomeMessage({message:e}),`src/main.ts#toParentMessage~11`)})(P(e,{maybeGoal:()=>n(b(),`src/main.ts#maybeGoal~3`)})),`src/main.ts#Home`),Goal:({goalId:t})=>{let r=C(e.maybeGoal,{onNone:()=>n(!1,`src/main.ts#onNone`),onSome:e=>n(e.goalId===t,`src/main.ts#onSome`)}),i=P(e,{maybeLesson:()=>n(b(),`src/main.ts#maybeLesson~2`)});return n(r?VN({update:_me,read:e=>n(e.maybeGoal,`src/main.ts#read~11`),write:(e,t)=>n(P(e,{maybeGoal:()=>n(x(t),`src/main.ts#maybeGoal~4`)}),`src/main.ts#write~11`),toParentMessage:e=>n(H9.GotGoalMessage({message:e}),`src/main.ts#toParentMessage~12`)})(i):UN(vme(t),{toParentModel:e=>n(P(i,{maybeGoal:()=>n(x(e),`src/main.ts#maybeGoal~5`)}),`src/main.ts#toParentModel~2`),toParentMessage:e=>n(H9.GotGoalMessage({message:e}),`src/main.ts#toParentMessage~13`)}),`src/main.ts#Goal`)},Review:()=>n(UN(gCe(),{toParentModel:t=>n(P(e,{maybeReview:()=>n(x(t),`src/main.ts#maybeReview~2`)}),`src/main.ts#toParentModel~3`),toParentMessage:e=>n(H9.GotReviewMessage({message:e}),`src/main.ts#toParentMessage~14`)}),`src/main.ts#Review`),Settings:()=>n(UN(WTe(),{toParentModel:t=>n(P(e,{maybeSettings:()=>n(x(t),`src/main.ts#maybeSettings~2`)}),`src/main.ts#toParentModel~4`),toParentMessage:e=>n(H9.GotSettingsMessage({message:e}),`src/main.ts#toParentMessage~15`)}),`src/main.ts#Settings`),Progress:()=>n(UN(DSe(),{toParentModel:t=>n(P(e,{maybeProgress:()=>n(x(t),`src/main.ts#maybeProgress~2`)}),`src/main.ts#toParentModel~5`),toParentMessage:e=>n(H9.GotProgressMessage({message:e}),`src/main.ts#toParentMessage~16`)}),`src/main.ts#Progress`),Placement:({goalId:t})=>n(UN(fSe(t),{toParentModel:t=>n(P(e,{maybePlacement:()=>n(x(t),`src/main.ts#maybePlacement~2`)}),`src/main.ts#toParentModel~6`),toParentMessage:e=>n(H9.GotPlacementMessage({message:e}),`src/main.ts#toParentMessage~17`)}),`src/main.ts#Placement`),Lesson:({goalId:t,conceptId:r})=>C(e.maybeLesson,{onNone:()=>n(!1,`src/main.ts#onNone~2`),onSome:e=>n(e.goalId===t&&e.conceptId===r,`src/main.ts#onSome~2`)})?n({model:e},`src/main.ts#Lesson`):n(UN(Nbe(t,r),{toParentModel:t=>n(P(e,{maybeLesson:()=>n(x(t),`src/main.ts#maybeLesson~3`)}),`src/main.ts#toParentModel~7`),toParentMessage:e=>n(H9.GotLessonMessage({message:e}),`src/main.ts#toParentMessage~18`)}),`src/main.ts#Lesson`),Notes:({goalId:t,conceptId:r})=>n(UN(jxe(t,r),{toParentModel:t=>n(P(e,{maybeNotes:()=>n(x(t),`src/main.ts#maybeNotes~2`)}),`src/main.ts#toParentModel~8`),toParentMessage:e=>n(H9.GotNotesMessage({message:e}),`src/main.ts#toParentMessage~19`)}),`src/main.ts#Notes`),NotFound:()=>n({model:e},`src/main.ts#NotFound`),DevVisuals:()=>n(J9(e),`src/main.ts#DevVisuals`)}),`src/main.ts#enterRoute`),UEe=(e,t)=>n(H9.match(t,{ClickedLink:({request:t})=>n(nA.match(t,{Internal:({url:t})=>n({model:e,commands:[U9({url:jpe(t)})]},`src/main.ts#Internal`),External:({href:t})=>n({model:e,commands:[AEe({href:t})]},`src/main.ts#External`)}),`src/main.ts#ClickedLink`),ChangedUrl:({url:t})=>{let r=Fz(t),i=Y9(P(e,{route:()=>n(r,`src/main.ts#route`)}),r);return n({model:i.model,commands:[...i.commands??[],W9(),G9()]},`src/main.ts#ChangedUrl`)},CompletedNavigateInternal:()=>n({model:e},`src/main.ts#CompletedNavigateInternal`),CompletedLoadExternal:()=>n({model:e},`src/main.ts#CompletedLoadExternal`),ToggledTheme:()=>{let t=!e.isDark;return n({model:P(e,{isDark:()=>n(t,`src/main.ts#isDark`)}),commands:[jEe({isDark:t})]},`src/main.ts#ToggledTheme`)},CompletedApplyTheme:()=>n({model:e},`src/main.ts#CompletedApplyTheme`),SucceededFetchReminder:({reminder:t})=>n({model:P(e,{maybeReminder:()=>n(x(t),`src/main.ts#maybeReminder`)})},`src/main.ts#SucceededFetchReminder`),FailedFetchReminder:()=>n({model:e},`src/main.ts#FailedFetchReminder`),TickedReminderClock:()=>n(C(e.maybeReminder,{onNone:()=>n({model:e},`src/main.ts#onNone~3`),onSome:t=>n(t.isOn?{model:e,commands:[MEe({time:t.time})]}:{model:e},`src/main.ts#onSome~3`)}),`src/main.ts#TickedReminderClock`),CompletedReminderCheck:()=>n({model:e},`src/main.ts#CompletedReminderCheck`),TickedStudyMinute:()=>n({model:P(e,{studyMinutes:e=>n(e+1,`src/main.ts#studyMinutes`)})},`src/main.ts#TickedStudyMinute`),ClickedTakeBreak:()=>n({model:P(e,{studyMinutes:()=>n(0,`src/main.ts#studyMinutes~2`),nextBreakAt:()=>n(Z9,`src/main.ts#nextBreakAt`)})},`src/main.ts#ClickedTakeBreak`),ClickedKeepStudying:()=>n({model:P(e,{nextBreakAt:()=>n(e.studyMinutes+GEe,`src/main.ts#nextBreakAt~2`)})},`src/main.ts#ClickedKeepStudying`),GotHomeMessage:({message:t})=>n(PEe(e,t),`src/main.ts#GotHomeMessage`),GotGoalMessage:({message:t})=>n(FEe(e,t),`src/main.ts#GotGoalMessage`),GotLessonMessage:({message:t})=>n(IEe(e,t),`src/main.ts#GotLessonMessage`),GotNotesMessage:({message:t})=>n(LEe(e,t),`src/main.ts#GotNotesMessage`),GotPlacementMessage:({message:t})=>n(REe(e,t),`src/main.ts#GotPlacementMessage`),GotReviewMessage:({message:t})=>n(zEe(e,t),`src/main.ts#GotReviewMessage`),GotSettingsMessage:({message:t})=>n(BEe(e,t),`src/main.ts#GotSettingsMessage`),GotProgressMessage:({message:t})=>n(VEe(e,t),`src/main.ts#GotProgressMessage`),SucceededFetchToday:({today:t})=>n({model:P(e,{maybeToday:()=>n(x(t),`src/main.ts#maybeToday`)})},`src/main.ts#SucceededFetchToday`),FailedFetchToday:()=>n({model:e},`src/main.ts#FailedFetchToday`),GotDevVisualsMessage:({message:t})=>n(HEe(e,t),`src/main.ts#GotDevVisualsMessage`)}),`src/main.ts#update`),X9=(e,t)=>{let r=Y9(e.model,t);return n({model:r.model,commands:[...e.commands??[],...r.commands??[],W9(),G9()]},`src/main.ts#withRoute`)},WEe=(e,t)=>{let r=Fz(t),i=UN(uhe(),{toParentModel:t=>n({route:r,home:t,maybeGoal:b(),maybeLesson:b(),maybeNotes:b(),maybePlacement:b(),maybeReview:b(),maybeSettings:b(),maybeProgress:b(),maybeToday:b(),isDark:e.isDark,maybeDevVisuals:b(),studyMinutes:0,nextBreakAt:Z9,maybeReminder:b()},`src/main.ts#toParentModel~9`),toParentMessage:e=>n(H9.GotHomeMessage({message:e}),`src/main.ts#toParentMessage~20`)});return n(Ez.match(r,{Home:()=>n({model:i.model,commands:[...i.commands??[],W9(),G9()]},`src/main.ts#Home~2`),Goal:()=>n(X9(i,r),`src/main.ts#Goal~2`),Lesson:()=>n(X9(i,r),`src/main.ts#Lesson~2`),Notes:()=>n(X9(i,r),`src/main.ts#Notes~2`),Placement:()=>n(X9(i,r),`src/main.ts#Placement~2`),Review:()=>n(X9(i,r),`src/main.ts#Review~2`),Settings:()=>n(X9(i,r),`src/main.ts#Settings~2`),Progress:()=>n(X9(i,r),`src/main.ts#Progress~2`),NotFound:()=>n(i,`src/main.ts#NotFound~2`),DevVisuals:()=>{let e=J9(i.model);return n({model:e.model,commands:[...i.commands??[],...e.commands??[]]},`src/main.ts#DevVisuals~2`)}}),`src/main.ts#init`)},Z9=25,GEe=15,Q9=e=>n(e._tag===`Lesson`||e._tag===`Review`||e._tag===`Placement`,`src/main.ts#isStudyRoute`),KEe=iA()(e=>n({reminderClock:e({isOn:Ky},{modelToDependencies:e=>n({isOn:Cr(e.maybeReminder,e=>n(e.isOn,`src/main.ts#anonymous~15`))},`src/main.ts#modelToDependencies`),dependenciesToStream:({isOn:e})=>n(e?TC(La(30)).pipe(zC(()=>n(H9.TickedReminderClock(),`src/main.ts#anonymous~16`))):kC,`src/main.ts#dependenciesToStream`)}),studyClock:e({isStudying:Ky},{modelToDependencies:e=>n({isStudying:Q9(e.route)},`src/main.ts#modelToDependencies~2`),dependenciesToStream:({isStudying:e})=>n(e?TC(Ra(1)).pipe(qC(1),zC(()=>n(H9.TickedStudyMinute(),`src/main.ts#anonymous~17`))):kC,`src/main.ts#dependenciesToStream~2`)})},`src/main.ts#anonymous~14`)),qEe=lA(_he)({read:e=>n(x(e.home),`src/main.ts#read~12`),toParentMessage:e=>n(H9.GotHomeMessage({message:e}),`src/main.ts#toParentMessage~21`),when:({route:e})=>n(e._tag===`Home`,`src/main.ts#when`)}),JEe=lA(Tme)({read:e=>n(e.maybeGoal,`src/main.ts#read~13`),toParentMessage:e=>n(H9.GotGoalMessage({message:e}),`src/main.ts#toParentMessage~22`),when:({route:e})=>n(e._tag===`Goal`,`src/main.ts#when~2`)}),YEe=lA(Qbe)({read:e=>n(e.maybeLesson,`src/main.ts#read~14`),toParentMessage:e=>n(H9.GotLessonMessage({message:e}),`src/main.ts#toParentMessage~23`),when:({route:e})=>n(e._tag===`Lesson`,`src/main.ts#when~3`)}),XEe=lA(vSe)({read:e=>n(e.maybePlacement,`src/main.ts#read~15`),toParentMessage:e=>n(H9.GotPlacementMessage({message:e}),`src/main.ts#toParentMessage~24`),when:({route:e})=>n(e._tag===`Placement`,`src/main.ts#when~4`)}),ZEe=oA(KEe,lA(DCe)({read:e=>n(e.maybeReview,`src/main.ts#read~16`),toParentMessage:e=>n(H9.GotReviewMessage({message:e}),`src/main.ts#toParentMessage~25`),when:({route:e})=>n(e._tag===`Review`,`src/main.ts#when~5`)}),qEe,JEe,YEe,XEe,lA(vEe)({read:e=>n(e.maybeDevVisuals,`src/main.ts#read~17`),toParentMessage:e=>n(H9.GotDevVisualsMessage({message:e}),`src/main.ts#toParentMessage~26`),when:({route:e})=>n(e._tag===`DevVisuals`,`src/main.ts#when~6`)})),QEe=e=>n(Cr(e.maybeToday,e=>n(e.studiedCount>0||e.dueCount+e.dueFlashcards>0,`src/main.ts#anonymous~18`)),`src/main.ts#hasStudied`),$Ee=(e,t)=>n(t.header([t.Class(`sticky top-0 z-20 border-b border-transparent bg-background/80 backdrop-blur-md supports-[backdrop-filter]:bg-background/60`)],[t.div([t.Class(`mx-auto flex h-14 w-full max-w-7xl items-center justify-between px-5`)],[t.a([t.Href(Dz()),t.Class(`press flex items-center gap-2 font-semibold tracking-tight`)],[t.img([t.Src(`/icon.svg`),t.Alt(``),t.Class(`size-7 rounded-lg`)]),`BaviTutor`]),t.div([t.Class(`flex items-center gap-1`)],[t.div([t.Class(`contents`)],QEe(e)?[tDe(e,t),eDe(e,t)]:[]),t.a([t.Href(Nz()),t.AriaLabel(`Settings`),t.Title(`Settings`),t.Class(I(`Ghost`,`Icon`,e.route._tag===`Settings`?`bg-accent text-accent-foreground`:``))],[L(`sliders`,``,t)]),t.button([t.Type(`button`),t.AriaLabel(e.isDark?`Switch to light theme`:`Switch to dark theme`),t.OnClick(H9.ToggledTheme()),t.Class(I(`Ghost`,`Icon`))],[e.isDark?L(`sun`,``,t):L(`moon`,``,t)])])])]),`src/main.ts#navView`),eDe=(e,t)=>{let r=C(e.maybeToday,{onNone:()=>n(0,`src/main.ts#onNone~4`),onSome:e=>n(e.dueCount+e.dueFlashcards,`src/main.ts#onSome~4`)});return n(t.a([t.Href(Mz()),t.Class(I(`Ghost`,`Medium`,F(`max-sm:px-2.5`,e.route._tag===`Review`&&`bg-accent text-accent-foreground`)))],[L(`brain`,``,t),$9(`Review`,t),r>0?t.span([t.Class(`ml-0.5 inline-flex min-w-5 items-center justify-center rounded-full bg-primary px-1.5 text-[11px] font-semibold text-primary-foreground tabular-nums`)],[`${r}`]):t.empty]),`src/main.ts#reviewLink`)},tDe=(e,t)=>n(t.a([t.Href(Pz()),t.Class(I(`Ghost`,`Medium`,F(`max-sm:px-2.5`,e.route._tag===`Progress`&&`bg-accent text-accent-foreground`)))],[L(`chart`,``,t),$9(`Progress`,t)]),`src/main.ts#progressLink`),$9=(e,t)=>n(t.span([t.Class(`sr-only sm:not-sr-only`)],[e]),`src/main.ts#navLabel`),nDe=(e,t)=>n(Q9(e.route)&&e.studyMinutes>=e.nextBreakAt?t.div([t.Role(`status`),t.Class(`pop-in fixed inset-x-4 bottom-4 z-30 mx-auto flex max-w-xl flex-col gap-3 rounded-2xl border bg-popover p-4 text-popover-foreground shadow-lg sm:flex-row sm:items-center`)],[t.div([t.Class(`flex flex-1 items-start gap-3`)],[L(`clock`,`mt-0.5 size-5 shrink-0 text-primary`,t),t.div([t.Class(`flex flex-col gap-0.5`)],[t.p([t.Class(`font-medium`)],[`${e.studyMinutes} minutes done. Time for a break?`]),t.p([t.Class(`text-sm text-muted-foreground`)],[`Stand up and rest your eyes for 5 minutes. We saved your spot.`])])]),t.div([t.Class(`flex shrink-0 gap-2 sm:flex-col`)],[t.button([t.Type(`button`),t.OnClick(H9.ClickedTakeBreak()),t.Class(I(`Primary`,`Small`))],[`Take a break`]),t.button([t.Type(`button`),t.OnClick(H9.ClickedKeepStudying()),t.Class(I(`Ghost`,`Small`))],[`15 more minutes`])])]):t.empty,`src/main.ts#breakPromptView`),rDe=e=>n(e.div([e.Class(`mx-auto flex max-w-md flex-col items-center gap-4 px-5 pt-24 text-center`)],[e.p([e.Class(`text-5xl font-semibold`)],[`404`]),e.p([e.Class(`text-muted-foreground`)],[`Page not found.`]),e.a([e.Href(Dz()),e.Class(I(`Outline`))],[`Go home`])]),`src/main.ts#notFoundView`);PN(EN({Model:OEe,Flags:kEe,init:WEe,update:UEe,view:(e,t)=>{let r=Ez.match(e.route,{Home:()=>n(t.submodel({slotId:`home`,model:e.home,view:Phe,toParentMessage:e=>n(H9.GotHomeMessage({message:e}),`src/main.ts#toParentMessage~27`)}),`src/main.ts#Home~3`),Goal:()=>n(C(e.maybeGoal,{onNone:()=>n(t.empty,`src/main.ts#onNone~5`),onSome:e=>n(t.submodel({slotId:`goal`,model:e,view:Kme,toParentMessage:e=>n(H9.GotGoalMessage({message:e}),`src/main.ts#toParentMessage~28`)}),`src/main.ts#onSome~5`)}),`src/main.ts#Goal~3`),Review:()=>n(C(e.maybeReview,{onNone:()=>n(t.empty,`src/main.ts#onNone~6`),onSome:e=>n(t.submodel({slotId:`review`,model:e,view:KCe,toParentMessage:e=>n(H9.GotReviewMessage({message:e}),`src/main.ts#toParentMessage~29`)}),`src/main.ts#onSome~6`)}),`src/main.ts#Review~3`),Progress:()=>n(C(e.maybeProgress,{onNone:()=>n(t.empty,`src/main.ts#onNone~7`),onSome:e=>n(t.submodel({slotId:`progress`,model:e,view:aCe,toParentMessage:e=>n(H9.GotProgressMessage({message:e}),`src/main.ts#toParentMessage~30`)}),`src/main.ts#onSome~7`)}),`src/main.ts#Progress~3`),Placement:()=>n(C(e.maybePlacement,{onNone:()=>n(t.empty,`src/main.ts#onNone~8`),onSome:e=>n(t.submodel({slotId:`placement`,model:e,view:TSe,toParentMessage:e=>n(H9.GotPlacementMessage({message:e}),`src/main.ts#toParentMessage~31`)}),`src/main.ts#onSome~8`)}),`src/main.ts#Placement~3`),Lesson:()=>n(C(e.maybeLesson,{onNone:()=>n(t.empty,`src/main.ts#onNone~9`),onSome:e=>n(t.submodel({slotId:`lesson`,model:e,view:wxe,toParentMessage:e=>n(H9.GotLessonMessage({message:e}),`src/main.ts#toParentMessage~32`)}),`src/main.ts#onSome~9`)}),`src/main.ts#Lesson~3`),Notes:()=>n(C(e.maybeNotes,{onNone:()=>n(t.empty,`src/main.ts#onNone~10`),onSome:e=>n(t.submodel({slotId:`notes`,model:e,view:tSe,toParentMessage:e=>n(H9.GotNotesMessage({message:e}),`src/main.ts#toParentMessage~33`)}),`src/main.ts#onSome~10`)}),`src/main.ts#Notes~3`),Settings:()=>n(C(e.maybeSettings,{onNone:()=>n(t.empty,`src/main.ts#onNone~11`),onSome:e=>n(t.submodel({slotId:`settings`,model:e,view:sEe,toParentMessage:e=>n(H9.GotSettingsMessage({message:e}),`src/main.ts#toParentMessage~34`)}),`src/main.ts#onSome~11`)}),`src/main.ts#Settings~3`),NotFound:()=>n(rDe(t),`src/main.ts#NotFound~3`),DevVisuals:()=>n(C(e.maybeDevVisuals,{onNone:()=>n(t.empty,`src/main.ts#onNone~12`),onSome:e=>n(t.submodel({slotId:`dev-visuals`,model:e,view:DEe,toParentMessage:e=>n(H9.GotDevVisualsMessage({message:e}),`src/main.ts#toParentMessage~35`)}),`src/main.ts#onSome~12`)}),`src/main.ts#DevVisuals~3`)});return n({title:Ew(e.route).pipe(Mw(`Goal`,()=>n(C(e.maybeGoal,{onNone:()=>n(`BaviTutor`,`src/main.ts#onNone~13`),onSome:qme}),`src/main.ts#anonymous~19`)),Mw(`Placement`,()=>n(`Placement quiz · BaviTutor`,`src/main.ts#anonymous~20`)),Mw(`Review`,()=>n(`Review · BaviTutor`,`src/main.ts#anonymous~21`)),Mw(`Settings`,()=>n(cEe,`src/main.ts#anonymous~22`)),Mw(`Progress`,()=>n(`Progress · BaviTutor`,`src/main.ts#anonymous~23`)),Mw(`Notes`,()=>n(C(e.maybeNotes,{onNone:()=>n(`Notes · BaviTutor`,`src/main.ts#onNone~14`),onSome:nSe}),`src/main.ts#anonymous~24`)),Mw(`Lesson`,()=>n(C(e.maybeLesson,{onNone:()=>n(`Lesson · BaviTutor`,`src/main.ts#onNone~15`),onSome:Txe}),`src/main.ts#anonymous~25`)),Pw(()=>n(`BaviTutor · learn anything`,`src/main.ts#anonymous~26`))),body:t.div([t.Class(`flex min-h-dvh flex-col`)],[$Ee(e,t),t.main([t.Class(`flex-1`)],[r]),nDe(e,t)])},`src/main.ts#view`)},subscriptions:ZEe,resources:ZR,container:document.getElementById(`root`),routing:{onUrlRequest:e=>n(H9.ClickedLink({request:e}),`src/entry.ts#onUrlRequest`),onUrlChange:e=>n(H9.ChangedUrl({url:e}),`src/entry.ts#onUrlChange`)},devTools:{Message:H9}}),{flags:NEe});
2040
+ `),`src/page/lesson.ts#anonymous~31`)),Mw(`QuickCheck`,({question:e})=>n(e.prompt,`src/page/lesson.ts#anonymous~32`)),Mw(`QuickCheckDecision`,()=>n(`Deciding whether to skip the lesson`,`src/page/lesson.ts#anonymous~33`)),Mw(`Flashcards`,()=>n(`Flashcards on the key ideas of this lesson`,`src/page/lesson.ts#anonymous~34`)),Fw),`src/page/lesson.ts#stepContextOf`),w6=e=>n(Ew(e).pipe(Mw(`Read`,e=>n(e.maybePredict,`src/page/lesson.ts#anonymous~35`)),Mw(`WorkedExample`,e=>n(x(e.problem),`src/page/lesson.ts#anonymous~36`)),Pw(()=>n(b(),`src/page/lesson.ts#anonymous~37`))),`src/page/lesson.ts#maybeGuessPrompt`),T6=e=>n(e.guess._tag===`Open`&&Cr(e.maybeCurrent,e=>n(S(w6(e.step)),`src/page/lesson.ts#anonymous~38`)),`src/page/lesson.ts#isGuessing`),E6=e=>n(C(e.maybeQuiz,{onNone:()=>n(!1,`src/page/lesson.ts#onNone`),onSome:e=>n(e.phase._tag===`Answering`,`src/page/lesson.ts#onSome`)}),`src/page/lesson.ts#isUnansweredQuestion`),Ibe=e=>n(E6(e)&&Cr(e.maybeCurrent,e=>n(e.step._tag===`Closing`||e.step._tag===`QuickCheck`||e.step._tag===`Prequestion`,`src/page/lesson.ts#anonymous~39`))||Cr(e.maybeFlashcard,d3),`src/page/lesson.ts#isRetrievalCheck`),D6=e=>n(Ew(e).pipe(Mw(`Prequestion`,`Check`,`Closing`,`QuickCheck`,({question:e})=>n(x(e),`src/page/lesson.ts#anonymous~40`)),Pw(()=>n(b(),`src/page/lesson.ts#anonymous~41`))),`src/page/lesson.ts#questionOf`),Lbe=e=>n(e._tag===`Read`?e.maybeVisual:b(),`src/page/lesson.ts#visualOf`),O6=e=>n($.GotVizFrameMessage({message:e}),`src/page/lesson.ts#toFrameMessage`),Rbe=LN({update:o6,read:e=>n(e.maybeFrame,`src/page/lesson.ts#read`),write:(e,t)=>n(P(e,{maybeFrame:()=>n(x(t),`src/page/lesson.ts#maybeFrame`)}),`src/page/lesson.ts#write`),toParentMessage:O6,foldOutMessage:$3.match({ReachedLastStep:()=>n((e=>n({model:e},`src/page/lesson.ts#anonymous~42`)),`src/page/lesson.ts#ReachedLastStep`),BecameUnavailable:()=>n((e=>n({model:e},`src/page/lesson.ts#anonymous~43`)),`src/page/lesson.ts#BecameUnavailable`)})}),k6=e=>n($.GotFlashcardMessage({message:e}),`src/page/lesson.ts#toFlashcardMessage`),A6=(e,t)=>{let r=t(e.model);return n({model:r.model,commands:[...e.commands??[],...r.commands??[]]},`src/page/lesson.ts#andThen`)},j6=e=>n(Cr(e.maybeCurrent,e=>n(e.step._tag===`Flashcards`,`src/page/lesson.ts#anonymous~44`)),`src/page/lesson.ts#isOnFlashcards`),M6=e=>{let t=[...bi(e.maybeCurrent),...e.queue];return n(e.round.load._tag===`Idle`&&ma(t,e=>n(e.step._tag===`Flashcards`,`src/page/lesson.ts#anonymous~45`))?{model:P(e,{round:e=>n(P(e,{load:()=>n(_6.Loading(),`src/page/lesson.ts#load`)}),`src/page/lesson.ts#round`)}),commands:[Dbe({goalId:e.goalId,conceptId:e.conceptId})]}:{model:e},`src/page/lesson.ts#prefetchRound`)},zbe=(e,t)=>n(lr(Tz(da(e.cards,e=>n(e.ideaId===t,`src/page/lesson.ts#anonymous~46`)),e=>n(e.questionId,`src/page/lesson.ts#anonymous~47`),e.shownCards)),`src/page/lesson.ts#roundPhrasing`),N6=e=>!j6(e)||e.round.load._tag!==`Ready`?n({model:e},`src/page/lesson.ts#nextCard`):n(xi(e.round.queue,{onEmpty:()=>n(F6(P(e,{maybeFlashcard:()=>n(b(),`src/page/lesson.ts#maybeFlashcard`),round:e=>n(P(e,{maybeCurrent:()=>n(b(),`src/page/lesson.ts#maybeCurrent`)}),`src/page/lesson.ts#round~2`)})),`src/page/lesson.ts#onEmpty`),onNonEmpty:([t,...r])=>n(C(zbe(e.round,t.ideaId),{onNone:()=>n(N6(P(e,{round:e=>n(P(e,{queue:()=>n(r,`src/page/lesson.ts#queue`)}),`src/page/lesson.ts#round~3`)})),`src/page/lesson.ts#onNone~2`),onSome:i=>{let a=i3(i);return n({model:P(e,{maybeFlashcard:()=>n(x(a.model),`src/page/lesson.ts#maybeFlashcard~2`),round:e=>n(P(e,{queue:()=>n(r,`src/page/lesson.ts#queue~2`),maybeCurrent:()=>n(x(t),`src/page/lesson.ts#maybeCurrent~2`),shownCards:wi(i.questionId)}),`src/page/lesson.ts#round~4`),maybeError:()=>n(b(),`src/page/lesson.ts#maybeError`)}),commands:BO(a.commands??[],k6)},`src/page/lesson.ts#onSome~2`)}}),`src/page/lesson.ts#onNonEmpty`)}),`src/page/lesson.ts#nextCard`),P6=e=>n(j6(e)&&or(e.maybeFlashcard)&&or(e.round.maybeCurrent)?N6(e):{model:e},`src/page/lesson.ts#startRound`),Bbe=(e,t)=>n(C(e.round.maybeCurrent,{onNone:()=>n(e,`src/page/lesson.ts#onNone~3`),onSome:r=>n(wz(t.grading,r.attempt)?P(e,{round:e=>n(P(e,{queue:e=>{let t={key:`${r.key}:again`,ideaId:r.ideaId,attempt:r.attempt+1};return n(sr(Zi(e,Math.min(2,e.length),t),()=>n(wi(e,t),`src/page/lesson.ts#anonymous~48`)),`src/page/lesson.ts#queue~3`)}}),`src/page/lesson.ts#round~5`)}):e,`src/page/lesson.ts#onSome~3`)}),`src/page/lesson.ts#requeueMissedCard`),F6=e=>n(A6(A6(Vbe(e),M6),P6),`src/page/lesson.ts#enterNext`),Vbe=e=>{let t=e.completedSteps+ +!!S(e.maybeCurrent);return n(xi(e.queue,{onEmpty:()=>n({model:P(e,{maybeCurrent:()=>n(b(),`src/page/lesson.ts#maybeCurrent~3`),maybeQuiz:()=>n(b(),`src/page/lesson.ts#maybeQuiz`),completedSteps:()=>n(t,`src/page/lesson.ts#completedSteps`)})},`src/page/lesson.ts#onEmpty~2`),onNonEmpty:([r,...i])=>{let a=D6(r.step),o=mr(Lbe(r.step),t=>n(r6({goalId:e.goalId,visualId:t.id}),`src/page/lesson.ts#anonymous~49`)),s=r.step._tag===`Summary`&&e.completion._tag===`NotStarted`;return n({model:P(e,{maybeCurrent:()=>n(x(r),`src/page/lesson.ts#maybeCurrent~4`),queue:()=>n(i,`src/page/lesson.ts#queue~4`),completedSteps:()=>n(t,`src/page/lesson.ts#completedSteps~2`),maybeQuiz:()=>n(mr(a,e=>n(D3(e,{canHint:r.step._tag===`Check`,askWhy:r.step._tag===`Check`&&e.kind===`MultipleChoice`}),`src/page/lesson.ts#anonymous~50`)),`src/page/lesson.ts#maybeQuiz~2`),maybeFrame:()=>n(mr(o,e=>n(e.model,`src/page/lesson.ts#anonymous~51`)),`src/page/lesson.ts#maybeFrame~2`),maybeFlashcard:()=>n(b(),`src/page/lesson.ts#maybeFlashcard~3`),maybeLastRead:e=>n(r.step._tag===`Read`?x({heading:r.step.heading,body:r.step.body}):e,`src/page/lesson.ts#maybeLastRead`),reexplain:()=>n(S6,`src/page/lesson.ts#reexplain`),revealedSteps:()=>n(0,`src/page/lesson.ts#revealedSteps`),guess:()=>n(m6.Open({text:``}),`src/page/lesson.ts#guess`),maybeError:()=>n(b(),`src/page/lesson.ts#maybeError~2`),completion:e=>n(s?y6.Completing():e,`src/page/lesson.ts#completion`)}),commands:[...bi(mr(a,()=>n(Sbe(),`src/page/lesson.ts#anonymous~52`))),...C(o,{onNone:()=>n([],`src/page/lesson.ts#onNone~4`),onSome:e=>n(BO(e.commands??[],O6),`src/page/lesson.ts#onSome~4`)}),...bi(xr(Ebe({goalId:e.goalId,conceptId:e.conceptId}),()=>n(s,`src/page/lesson.ts#anonymous~53`)))]},`src/page/lesson.ts#onNonEmpty~2`)}}),`src/page/lesson.ts#enterNextStep`)},I6=e=>n(gr(e.maybeCurrent,t=>n(t.step._tag===`Check`?gr(e.maybeQuiz,e=>n(S3.match(e.phase,{Answering:()=>n(b(),`src/page/lesson.ts#Answering`),Submitting:()=>n(b(),`src/page/lesson.ts#Submitting`),Answered:({feedback:t})=>n(xr(e.question.prompt,()=>n(t.verdict!==`Correct`,`src/page/lesson.ts#anonymous~56`)),`src/page/lesson.ts#Answered`)}),`src/page/lesson.ts#anonymous~55`)):b(),`src/page/lesson.ts#anonymous~54`)),`src/page/lesson.ts#missedCheckPrompt`),Hbe=e=>n(gr(e.maybeCurrent,t=>n(t.step._tag===`Read`?x({heading:t.step.heading,body:t.step.body,missedQuestion:``}):gr(I6(e),t=>n(mr(e.maybeLastRead,e=>n({...e,missedQuestion:t},`src/page/lesson.ts#anonymous~59`)),`src/page/lesson.ts#anonymous~58`)),`src/page/lesson.ts#anonymous~57`)),`src/page/lesson.ts#reexplainTarget`),L6=(e,t)=>n(Cr(D6(e.step),e=>n(t.includes(e.id),`src/page/lesson.ts#anonymous~60`)),`src/page/lesson.ts#isAnswered`),Ube=(e,t)=>n(C(Ji(Vi(e,sr(qi(e,e=>n(S(D6(e.step))&&!L6(e,t),`src/page/lesson.ts#anonymous~61`)),()=>n(e.length,`src/page/lesson.ts#anonymous~62`))),e=>n(L6(e,t),`src/page/lesson.ts#anonymous~63`)),{onNone:()=>n(0,`src/page/lesson.ts#onNone~5`),onSome:e=>n(e+1,`src/page/lesson.ts#onSome~5`)}),`src/page/lesson.ts#resumeIndex`),Wbe=(e,t)=>n(C(e.maybeCurrent,{onNone:()=>n(e,`src/page/lesson.ts#onNone~6`),onSome:r=>{let i=t.verdict!==`Correct`;if(r.step._tag!==`Closing`||!i||r.attempt+1>=xbe)return n(e,`src/page/lesson.ts#onSome~6`);let a={key:`${r.key}:retry${r.attempt+1}`,step:r.step,attempt:r.attempt+1},o=sr(qi(e.queue,e=>n(e.step._tag===`Summary`||e.step._tag===`Flashcards`,`src/page/lesson.ts#anonymous~64`)),()=>n(e.queue.length,`src/page/lesson.ts#anonymous~65`)),s=Math.min(2,o);return n(P(e,{queue:e=>n(sr(Zi(e,s,a),()=>n(wi(e,a),`src/page/lesson.ts#anonymous~66`)),`src/page/lesson.ts#queue~5`)}),`src/page/lesson.ts#onSome~6`)}}),`src/page/lesson.ts#requeueMissedClosing`),Gbe=LN({update:F3,read:e=>n(e.maybeQuiz,`src/page/lesson.ts#read~2`),write:(e,t)=>n(P(e,{maybeQuiz:()=>n(x(t),`src/page/lesson.ts#maybeQuiz~3`)}),`src/page/lesson.ts#write~2`),toParentMessage:e=>n($.GotQuizMessage({message:e}),`src/page/lesson.ts#toParentMessage`),foldOutMessage:E3.match({SubmittedAnswer:({response:e,note:t,hintLevel:r})=>n((i=>n({model:i,commands:bi(mr(i.maybeQuiz,a=>n(Cbe({goalId:i.goalId,questionId:a.question.id,response:e,note:t,hintLevel:r,shownAt:i.questionShownAt}),`src/page/lesson.ts#anonymous~68`)))},`src/page/lesson.ts#anonymous~67`)),`src/page/lesson.ts#SubmittedAnswer`),ContinuedAfterFeedback:()=>n(F6,`src/page/lesson.ts#ContinuedAfterFeedback`)})}),Kbe=LN({update:g3,read:e=>n(e.maybeFlashcard,`src/page/lesson.ts#read~3`),write:(e,t)=>n(P(e,{maybeFlashcard:()=>n(x(t),`src/page/lesson.ts#maybeFlashcard~4`)}),`src/page/lesson.ts#write~3`),toParentMessage:k6,foldOutMessage:r3.match({Answered:({response:e,recallMs:t,latencyMs:r})=>n((i=>n({model:i,commands:bi(mr(i.maybeFlashcard,a=>n(Obe({goalId:i.goalId,questionId:a.card.questionId,response:e,recallMs:t,latencyMs:r}),`src/page/lesson.ts#anonymous~70`)))},`src/page/lesson.ts#anonymous~69`)),`src/page/lesson.ts#Answered~2`),Continued:()=>n(N6,`src/page/lesson.ts#Continued`),RequestedExplanation:({response:e})=>n((t=>n({model:t,commands:bi(mr(t.maybeFlashcard,r=>n(kbe({goalId:t.goalId,questionId:r.card.questionId,response:e}),`src/page/lesson.ts#anonymous~72`)))},`src/page/lesson.ts#anonymous~71`)),`src/page/lesson.ts#RequestedExplanation`)})}),qbe=(e,t)=>n($.match(t,{ClickedStartOver:()=>n(F6(P(e,{queue:()=>n([...e.skipped,...bi(e.maybeCurrent),...e.queue],`src/page/lesson.ts#queue~6`),skipped:()=>n([],`src/page/lesson.ts#skipped`),maybeCurrent:()=>n(b(),`src/page/lesson.ts#maybeCurrent~5`),maybeQuiz:()=>n(b(),`src/page/lesson.ts#maybeQuiz~4`),completedSteps:()=>n(0,`src/page/lesson.ts#completedSteps~3`)})),`src/page/lesson.ts#ClickedStartOver`),ClickedExplainDifferently:()=>n(C(Hbe(e),{onNone:()=>n({model:e},`src/page/lesson.ts#onNone~7`),onSome:t=>n(e.reexplain.isLoading||e.reexplain.alternatives.length>=C6?{model:e}:{model:P(e,{reexplain:e=>n({...e,isLoading:!0,maybeError:b()},`src/page/lesson.ts#reexplain~2`)}),commands:[Mbe({goalId:e.goalId,conceptId:e.conceptId,...t,tried:w(e.reexplain.alternatives,e=>n(e.angle,`src/page/lesson.ts#anonymous~73`))})]},`src/page/lesson.ts#onSome~7`)}),`src/page/lesson.ts#ClickedExplainDifferently`),SucceededReexplain:({reexplanation:t})=>n({model:P(e,{reexplain:e=>n({isLoading:!1,alternatives:[...e.alternatives,t],maybeError:b()},`src/page/lesson.ts#reexplain~3`)})},`src/page/lesson.ts#SucceededReexplain`),FailedReexplain:({error:t})=>n({model:P(e,{reexplain:e=>n({...e,isLoading:!1,maybeError:x(t)},`src/page/lesson.ts#reexplain~4`)})},`src/page/lesson.ts#FailedReexplain`),SucceededFetchLesson:({state:t})=>n(Ew(t).pipe(Ow(),Mw(`Generating`,({startedAt:t})=>n({model:P(e,{load:()=>n(p6.Generating({startedAt:t}),`src/page/lesson.ts#load~2`)})},`src/page/lesson.ts#anonymous~74`)),Mw(`Failed`,({error:t})=>n({model:P(e,{load:()=>n(p6.Failed({error:t}),`src/page/lesson.ts#load~3`)})},`src/page/lesson.ts#anonymous~75`)),Mw(`Ready`,({lesson:t,answeredQuestionIds:r,style:i})=>{if(e.load._tag===`Ready`)return n({model:e},`src/page/lesson.ts#anonymous~76`);let a=w(t.steps,(e,t)=>n({key:`${t}`,step:e,attempt:0},`src/page/lesson.ts#anonymous~77`)),o=Ube(a,r),[s,c]=ra(a,o);return n(F6(P(e,{load:()=>n(p6.Ready({title:t.title,estimatedMinutes:t.estimatedMinutes,style:i,hasSources:t.hasSources}),`src/page/lesson.ts#load~4`),queue:()=>n(c,`src/page/lesson.ts#queue~7`),skipped:()=>n(s,`src/page/lesson.ts#skipped~2`),completedSteps:()=>n(o,`src/page/lesson.ts#completedSteps~4`)})),`src/page/lesson.ts#anonymous~76`)}),Fw),`src/page/lesson.ts#SucceededFetchLesson`),FailedFetchLesson:({error:t})=>n({model:P(e,{load:()=>n(p6.Failed({error:t}),`src/page/lesson.ts#load~5`)})},`src/page/lesson.ts#FailedFetchLesson`),TickedPoll:()=>n({model:e,commands:[x6({goalId:e.goalId,conceptId:e.conceptId})]},`src/page/lesson.ts#TickedPoll`),ClickedContinue:()=>n(T6(e)?{model:e}:F6(e),`src/page/lesson.ts#ClickedContinue`),ClickedRevealStep:()=>n({model:P(e,{revealedSteps:e=>n(e+1,`src/page/lesson.ts#revealedSteps~2`)})},`src/page/lesson.ts#ClickedRevealStep`),UpdatedGuess:({value:t})=>n({model:P(e,{guess:e=>n(e._tag===`Open`?m6.Open({text:t}):e,`src/page/lesson.ts#guess~2`)})},`src/page/lesson.ts#UpdatedGuess`),SubmittedGuess:()=>n({model:P(e,{guess:e=>n(e._tag===`Open`&&Ed(wd(e.text))?m6.Made({text:wd(e.text)}):e,`src/page/lesson.ts#guess~3`)})},`src/page/lesson.ts#SubmittedGuess`),ClickedSkipGuess:()=>n({model:P(e,{guess:e=>n(e._tag===`Open`?m6.Made({text:``}):e,`src/page/lesson.ts#guess~4`)})},`src/page/lesson.ts#ClickedSkipGuess`),GotQuizMessage:({message:t})=>n(Gbe(e,t),`src/page/lesson.ts#GotQuizMessage`),GotVizFrameMessage:({message:t})=>n(Rbe(e,t),`src/page/lesson.ts#GotVizFrameMessage`),CompletedMarkQuestionShown:({at:t})=>n({model:P(e,{questionShownAt:()=>n(t,`src/page/lesson.ts#questionShownAt`)})},`src/page/lesson.ts#CompletedMarkQuestionShown`),SucceededSubmitAnswer:({feedback:t})=>n({model:Wbe(P(e,{quickCheckVerdicts:r=>n(C(e.maybeCurrent,{onNone:()=>n(r,`src/page/lesson.ts#onNone~8`),onSome:e=>n(e.step._tag===`QuickCheck`?wi(r,t.verdict):r,`src/page/lesson.ts#onSome~8`)}),`src/page/lesson.ts#quickCheckVerdicts`),maybeQuiz:mr(e=>n(O3(e,t),`src/page/lesson.ts#anonymous~78`))}),t)},`src/page/lesson.ts#SucceededSubmitAnswer`),FailedSubmitAnswer:({error:t})=>n({model:P(e,{maybeQuiz:mr(k3),maybeError:()=>n(x(t),`src/page/lesson.ts#maybeError~3`)})},`src/page/lesson.ts#FailedSubmitAnswer`),UpdatedTeachBack:({value:t})=>n({model:P(e,{teachBack:e=>n(e._tag===`Writing`?g6.Writing({text:t}):e,`src/page/lesson.ts#teachBack`)})},`src/page/lesson.ts#UpdatedTeachBack`),SubmittedTeachBack:()=>n(g6.match(e.teachBack,{Writing:({text:t})=>n(wd(t).length<10?{model:e}:{model:P(e,{teachBack:()=>n(g6.Grading({text:t}),`src/page/lesson.ts#teachBack~2`)}),commands:[wbe({goalId:e.goalId,conceptId:e.conceptId,explanation:t})]},`src/page/lesson.ts#Writing`),Grading:()=>n({model:e},`src/page/lesson.ts#Grading`),Graded:()=>n({model:e},`src/page/lesson.ts#Graded`)}),`src/page/lesson.ts#SubmittedTeachBack`),SucceededTeachBack:({result:t})=>n({model:P(e,{teachBack:e=>n(g6.Graded({text:e._tag===`Writing`||e._tag===`Grading`?e.text:``,result:t,followUp:h6.Writing({text:``})}),`src/page/lesson.ts#teachBack~3`)})},`src/page/lesson.ts#SucceededTeachBack`),FailedTeachBack:({error:t})=>n({model:P(e,{teachBack:e=>n(e._tag===`Grading`?g6.Writing({text:e.text}):e,`src/page/lesson.ts#teachBack~4`),maybeError:()=>n(x(t),`src/page/lesson.ts#maybeError~4`)})},`src/page/lesson.ts#FailedTeachBack`),UpdatedFollowUp:({value:t})=>n({model:P(e,{teachBack:e=>n(e._tag===`Graded`?P(e,{followUp:e=>n(e._tag===`Writing`?h6.Writing({text:t}):e,`src/page/lesson.ts#followUp`)}):e,`src/page/lesson.ts#teachBack~5`)})},`src/page/lesson.ts#UpdatedFollowUp`),SubmittedFollowUp:()=>n(g6.match(e.teachBack,{Writing:()=>n({model:e},`src/page/lesson.ts#Writing~2`),Grading:()=>n({model:e},`src/page/lesson.ts#Grading~2`),Graded:t=>n(h6.match(t.followUp,{Writing:({text:r})=>n(wd(r).length<b6?{model:e}:{model:P(e,{teachBack:()=>n(P(t,{followUp:()=>n(h6.Sending({text:wd(r)}),`src/page/lesson.ts#followUp~2`)}),`src/page/lesson.ts#teachBack~6`),maybeError:()=>n(b(),`src/page/lesson.ts#maybeError~5`)}),commands:[Tbe({goalId:e.goalId,conceptId:e.conceptId,explanation:t.text,noviceQuestion:t.result.noviceQuestion,reply:wd(r)})]},`src/page/lesson.ts#Writing~3`),Sending:()=>n({model:e},`src/page/lesson.ts#Sending`),Answered:()=>n({model:e},`src/page/lesson.ts#Answered~3`),Skipped:()=>n({model:e},`src/page/lesson.ts#Skipped`)}),`src/page/lesson.ts#Graded~2`)}),`src/page/lesson.ts#SubmittedFollowUp`),ClickedSkipFollowUp:()=>n({model:P(e,{teachBack:e=>n(e._tag===`Graded`&&(e.followUp._tag===`Writing`||e.followUp._tag===`Sending`)?P(e,{followUp:()=>n(h6.Skipped(),`src/page/lesson.ts#followUp~3`)}):e,`src/page/lesson.ts#teachBack~7`)})},`src/page/lesson.ts#ClickedSkipFollowUp`),SucceededFollowUp:({reaction:t})=>n({model:P(e,{teachBack:e=>n(e._tag===`Graded`&&e.followUp._tag===`Sending`?P(e,{followUp:e=>n(h6.Answered({text:e._tag===`Sending`?e.text:``,reaction:t}),`src/page/lesson.ts#followUp~4`)}):e,`src/page/lesson.ts#teachBack~8`)})},`src/page/lesson.ts#SucceededFollowUp`),FailedFollowUp:({error:t})=>n({model:P(e,{teachBack:e=>n(e._tag===`Graded`&&e.followUp._tag===`Sending`?P(e,{followUp:e=>n(h6.Writing({text:e._tag===`Sending`?e.text:``}),`src/page/lesson.ts#followUp~5`)}):e,`src/page/lesson.ts#teachBack~9`),maybeError:()=>n(x(t),`src/page/lesson.ts#maybeError~6`)})},`src/page/lesson.ts#FailedFollowUp`),ClickedSkipLesson:()=>n({model:P(e,{completion:()=>n(y6.Completing(),`src/page/lesson.ts#completion~2`)}),commands:[Abe({goalId:e.goalId,conceptId:e.conceptId})]},`src/page/lesson.ts#ClickedSkipLesson`),SucceededSkipLesson:({outcome:t})=>n({model:P(e,{completion:()=>n(y6.Completed({outcome:t}),`src/page/lesson.ts#completion~3`)})},`src/page/lesson.ts#SucceededSkipLesson`),FailedSkipLesson:({error:t})=>n({model:P(e,{completion:()=>n(y6.NotStarted(),`src/page/lesson.ts#completion~4`),maybeError:()=>n(x(t),`src/page/lesson.ts#maybeError~7`)})},`src/page/lesson.ts#FailedSkipLesson`),ToggledTutor:()=>n({model:P(e,{tutor:e=>n(P(e,{isOpen:e=>n(!e,`src/page/lesson.ts#isOpen`)}),`src/page/lesson.ts#tutor`)})},`src/page/lesson.ts#ToggledTutor`),UpdatedTutorDraft:({value:t})=>n({model:P(e,{tutor:e=>n(P(e,{draft:()=>n(t,`src/page/lesson.ts#draft`)}),`src/page/lesson.ts#tutor~2`)})},`src/page/lesson.ts#UpdatedTutorDraft`),SubmittedTutorQuestion:()=>{let t=wd(e.tutor.draft);return t.length===0||e.tutor.isAsking?n({model:e},`src/page/lesson.ts#SubmittedTutorQuestion`):n({model:P(e,{tutor:e=>n(P(e,{draft:()=>n(``,`src/page/lesson.ts#draft~2`),isAsking:()=>n(!0,`src/page/lesson.ts#isAsking`),turns:wi({role:`Learner`,text:t})}),`src/page/lesson.ts#tutor~3`)}),commands:[jbe({goalId:e.goalId,conceptId:e.conceptId,question:t,stepContext:C(e.maybeCurrent,{onNone:()=>n(``,`src/page/lesson.ts#onNone~9`),onSome:t=>n(T6(e)?sr(w6(t.step),()=>n(``,`src/page/lesson.ts#anonymous~79`)):Fbe(t.step),`src/page/lesson.ts#onSome~9`)}),isGradedStep:E6(e)||T6(e),history:e.tutor.turns})]},`src/page/lesson.ts#SubmittedTutorQuestion`)},SucceededAskTutor:({answer:t})=>n({model:P(e,{tutor:e=>n(P(e,{isAsking:()=>n(!1,`src/page/lesson.ts#isAsking~2`),turns:wi({role:`Tutor`,text:t})}),`src/page/lesson.ts#tutor~4`)})},`src/page/lesson.ts#SucceededAskTutor`),FailedAskTutor:({error:t})=>n({model:P(e,{tutor:e=>n(P(e,{isAsking:()=>n(!1,`src/page/lesson.ts#isAsking~3`)}),`src/page/lesson.ts#tutor~5`),maybeError:()=>n(x(t),`src/page/lesson.ts#maybeError~8`)})},`src/page/lesson.ts#FailedAskTutor`),SucceededCompleteLesson:({outcome:t})=>n({model:P(e,{completion:()=>n(y6.Completed({outcome:t}),`src/page/lesson.ts#completion~5`)})},`src/page/lesson.ts#SucceededCompleteLesson`),SucceededFetchRound:({cards:t})=>{let r=Lee(w(t,e=>n(e.ideaId,`src/page/lesson.ts#anonymous~80`)));return n(P6(P(e,{round:e=>n(P(e,{load:()=>n(_6.Ready(),`src/page/lesson.ts#load~6`),cards:()=>n(t,`src/page/lesson.ts#cards`),ideaIds:()=>n(r,`src/page/lesson.ts#ideaIds`),queue:()=>n(w(r,e=>n({key:e,ideaId:e,attempt:0},`src/page/lesson.ts#anonymous~81`)),`src/page/lesson.ts#queue~8`)}),`src/page/lesson.ts#round~6`)})),`src/page/lesson.ts#SucceededFetchRound`)},FailedFetchRound:({error:t})=>n({model:P(e,{round:e=>n(P(e,{load:()=>n(_6.Failed({error:t}),`src/page/lesson.ts#load~7`)}),`src/page/lesson.ts#round~7`)})},`src/page/lesson.ts#FailedFetchRound`),ClickedRetryRound:()=>n(M6(P(e,{round:e=>n(P(e,{load:()=>n(_6.Idle(),`src/page/lesson.ts#load~8`)}),`src/page/lesson.ts#round~8`)})),`src/page/lesson.ts#ClickedRetryRound`),ClickedSkipRound:()=>n(j6(e)?F6(P(e,{maybeFlashcard:()=>n(b(),`src/page/lesson.ts#maybeFlashcard~5`)})):{model:e},`src/page/lesson.ts#ClickedSkipRound`),GotFlashcardMessage:({message:t})=>n(Kbe(e,t),`src/page/lesson.ts#GotFlashcardMessage`),SucceededSubmitFlashcard:({result:t})=>n({model:Bbe(P(e,{maybeFlashcard:mr(e=>n(a3(e,t),`src/page/lesson.ts#anonymous~82`)),round:e=>n(C(e.maybeCurrent,{onNone:()=>n(e,`src/page/lesson.ts#onNone~10`),onSome:r=>n(r.attempt===0?P(e,{firstTries:wi({ideaId:r.ideaId,isRight:t.verdict===`Correct`})}):e,`src/page/lesson.ts#onSome~10`)}),`src/page/lesson.ts#round~9`)}),t)},`src/page/lesson.ts#SucceededSubmitFlashcard`),FailedSubmitFlashcard:({error:t})=>n({model:P(e,{maybeFlashcard:mr(o3),maybeError:()=>n(x(t),`src/page/lesson.ts#maybeError~9`)})},`src/page/lesson.ts#FailedSubmitFlashcard`),SucceededExplainFlashcard:({questionId:t,body:r})=>n({model:P(e,{maybeFlashcard:mr(e=>n(e.card.questionId===t?s3(e,r):e,`src/page/lesson.ts#anonymous~83`))})},`src/page/lesson.ts#SucceededExplainFlashcard`),FailedExplainFlashcard:({questionId:t})=>n({model:P(e,{maybeFlashcard:mr(e=>n(e.card.questionId===t?c3(e):e,`src/page/lesson.ts#anonymous~84`))})},`src/page/lesson.ts#FailedExplainFlashcard`),FailedCompleteLesson:({error:t})=>n({model:P(e,{completion:()=>n(y6.Failed({error:t}),`src/page/lesson.ts#completion~6`)})},`src/page/lesson.ts#FailedCompleteLesson`)}),`src/page/lesson.ts#update`),Jbe=lA(I3)({read:e=>n(e.maybeQuiz,`src/page/lesson.ts#read~4`),toParentMessage:e=>n($.GotQuizMessage({message:e}),`src/page/lesson.ts#toParentMessage~2`)}),Ybe=e=>n(!T6(e)&&Cr(e.maybeCurrent,e=>n(e.step._tag===`Intro`||e.step._tag===`Read`||e.step._tag===`Connect`,`src/page/lesson.ts#anonymous~85`)),`src/page/lesson.ts#isContinueStep`),Xbe=e=>n(e instanceof HTMLElement&&(e.isContentEditable||[`INPUT`,`TEXTAREA`,`SELECT`,`BUTTON`,`A`].includes(e.tagName)),`src/page/lesson.ts#isTypingOrPressing`),Zbe=iA()(e=>n({lessonContinueKey:e({canContinue:Ky},{modelToDependencies:e=>n({canContinue:Ybe(e)},`src/page/lesson.ts#modelToDependencies`),dependenciesToStream:({canContinue:e})=>n(e?dk({target:()=>n(globalThis.document,`src/page/lesson.ts#target`),type:`keydown`,filterMapEvent:e=>n(xr($.ClickedContinue(),()=>n(e.key===`Enter`&&!e.repeat&&!e.ctrlKey&&!e.metaKey&&!Xbe(e.target),`src/page/lesson.ts#anonymous~87`)),`src/page/lesson.ts#filterMapEvent`)}):kC,`src/page/lesson.ts#dependenciesToStream`)}),pollWhileGenerating:e({isGenerating:Ky},{modelToDependencies:e=>n({isGenerating:e.load._tag===`Generating`},`src/page/lesson.ts#modelToDependencies~2`),dependenciesToStream:({isGenerating:e})=>n(e?TC(bbe).pipe(qC(1),zC(()=>n($.TickedPoll(),`src/page/lesson.ts#anonymous~88`))):kC,`src/page/lesson.ts#dependenciesToStream~2`)})},`src/page/lesson.ts#anonymous~86`)),R6=lA(s6)({read:e=>n(e.maybeFrame,`src/page/lesson.ts#read~5`),toParentMessage:O6}),Qbe=lA(_3)({read:e=>n(e.maybeFlashcard,`src/page/lesson.ts#read~6`),toParentMessage:k6}),$be=oA(Zbe,{lessonQuizKeyboard:Jbe.keyboard,lessonFlashcardKeyboard:Qbe.keyboard,lessonFrameEvents:R6.frameEvents,lessonFrameTheme:R6.theme}),z6=(e,t)=>n(t.div([t.Class(`ml-auto flex justify-end`)],[t.button([t.Type(`button`),t.OnClick($.ClickedContinue()),t.Class(I(`Primary`,`Large`))],[e,L(`arrowRight`,``,t)])]),`src/page/lesson.ts#continueButton`),exe=e=>n(Ew(e).pipe(Mw(`Intro`,()=>n(`Why it matters`,`src/page/lesson.ts#anonymous~89`)),Mw(`Prequestion`,()=>n(`Guess first`,`src/page/lesson.ts#anonymous~90`)),Mw(`Read`,()=>n(`Learn`,`src/page/lesson.ts#anonymous~91`)),Mw(`Check`,()=>n(`Quick check`,`src/page/lesson.ts#anonymous~92`)),Mw(`WorkedExample`,()=>n(`Example`,`src/page/lesson.ts#anonymous~93`)),Mw(`Connect`,()=>n(`Big picture`,`src/page/lesson.ts#anonymous~94`)),Mw(`TeachBack`,()=>n(`Teach it back`,`src/page/lesson.ts#anonymous~95`)),Mw(`Closing`,()=>n(`From memory`,`src/page/lesson.ts#anonymous~96`)),Mw(`Summary`,()=>n(`Recap`,`src/page/lesson.ts#anonymous~97`)),Mw(`QuickCheck`,`QuickCheckDecision`,()=>n(`Quick check`,`src/page/lesson.ts#anonymous~98`)),Mw(`Flashcards`,()=>n(`Flashcards`,`src/page/lesson.ts#anonymous~99`)),Fw),`src/page/lesson.ts#stepLabel`),txe=(e,t,r)=>n(r.div([r.Class(Bz(`reveal flex flex-col gap-5 p-6 sm:p-8`))],[t===`QuestionLed`?r.p([r.Class(zz(`Info`,`self-start px-3 py-1`))],[L(`lightbulb`,``,r),`Each part starts with a question`]):r.empty,r.p([r.Class(`text-lg font-medium`)],[e.framing]),Z4(e.motivation,`text-base`,r),xi(e.objectives,{onEmpty:()=>n(r.empty,`src/page/lesson.ts#onEmpty~3`),onNonEmpty:e=>n(r.ul([r.Class(`flex flex-col gap-1.5 rounded-xl bg-muted/50 p-4 text-sm`)],w(e,e=>n(r.li([r.Class(`flex gap-2`)],[L(`target`,`mt-0.5 size-3.5 shrink-0 text-primary`,r),e]),`src/page/lesson.ts#anonymous~100`))),`src/page/lesson.ts#onNonEmpty~3`)}),z6(`Start`,r)]),`src/page/lesson.ts#introView`),nxe={Analogy:`An analogy`,ConcreteExample:`An example`,FromScratch:`From the basics`,Contrast:`What it is and isn't`,Picture:`A picture`},B6=(e,t)=>n(t.div([t.Class(`flex flex-col gap-3`)],w(e.reexplain.alternatives,(e,r)=>n(t.keyed(`section`)(`alternative-${r}`,[t.Class(`reveal flex flex-col gap-2 rounded-xl border border-primary/25 bg-primary/5 p-5`)],[t.p([t.Class(`flex items-center gap-1.5 text-xs font-medium tracking-wide text-primary uppercase`)],[L(`lightbulb`,`size-3.5`,t),`Another way · ${nxe[e.angle]}`]),Z4(e.body,`text-[1.02rem] leading-relaxed`,t)]),`src/page/lesson.ts#anonymous~101`))),`src/page/lesson.ts#alternativesView`),V6=(e,t)=>n(e.reexplain.alternatives.length>=C6?t.p([t.Class(`text-sm text-muted-foreground`)],[`Still stuck? Ask the tutor.`]):t.div([t.Class(`flex flex-wrap items-center gap-3`)],[t.button([t.Type(`button`),t.Disabled(e.reexplain.isLoading),t.OnClick($.ClickedExplainDifferently()),t.Class(I(`Outline`,`Medium`))],e.reexplain.isLoading?[L(`refresh`,`spinner`,t),t.span([t.Class(`shimmer-text`)],[`Finding another way`])]:[L(`lightbulb`,``,t),Di(e.reexplain.alternatives)?`Explain it another way`:`Try another way`]),C(e.reexplain.maybeError,{onNone:()=>n(t.empty,`src/page/lesson.ts#onNone~11`),onSome:()=>n(t.span([t.Class(`text-sm text-destructive`)],[`That didn't work. Try again.`]),`src/page/lesson.ts#onSome~11`)})]),`src/page/lesson.ts#explainDifferentlyButton`),rxe={label:`Guess first. Wrong is OK.`,inputLabel:`Your guess`,placeholder:`Your best guess`,submitLabel:`Show me`},ixe={label:`Try it first. Wrong is OK.`,inputLabel:`Your try`,placeholder:`Your answer, or how you would start`,submitLabel:`See the steps`},H6=(e,t,r,i)=>n(i.div([i.Class(`pop-in flex flex-col gap-3 rounded-xl border border-info/30 bg-info/5 p-5`)],[i.p([i.Class(zz(`Info`,`self-start px-3 py-1`))],[r.label]),Z4(e,`text-lg leading-relaxed`,i),i.textarea([i.Value(t),i.Rows(2),i.Autofocus(!0),i.AriaLabel(r.inputLabel),i.Placeholder(r.placeholder),i.OnInput(e=>n($.UpdatedGuess({value:e}),`src/page/lesson.ts#anonymous~102`)),i.OnKeyDownPreventDefault((e,t)=>n(xr($.SubmittedGuess(),()=>n(e===`Enter`&&(t.ctrlKey||t.metaKey),`src/page/lesson.ts#anonymous~104`)),`src/page/lesson.ts#anonymous~103`)),i.Class(Vz(`resize-none text-base leading-relaxed`))]),i.div([i.Class(`flex items-center justify-end gap-2`)],[i.button([i.Type(`button`),i.OnClick($.ClickedSkipGuess()),i.Class(I(`Ghost`,`Large`,`text-muted-foreground`))],[`Skip`]),i.button([i.Type(`button`),i.Disabled(Td(wd(t))),i.OnClick($.SubmittedGuess()),i.Class(I(`Primary`,`Large`))],[r.submitLabel,L(`arrowRight`,``,i)])])]),`src/page/lesson.ts#guessView`),U6=(e,t,r)=>n(Td(t)?r.empty:r.p([r.Class(`reveal rounded-lg bg-muted/60 px-4 py-2 text-sm text-muted-foreground`)],[r.span([r.Class(`font-medium text-foreground`)],[`${e}: `]),t]),`src/page/lesson.ts#madeGuessView`),W6=e=>n(e.load._tag===`Ready`&&e.load.hasSources,`src/page/lesson.ts#hasSources`),axe=e=>n(Td(wd(e))?`Your source`:e.trim().replace(/\.(?:txt|md|markdown)$/i,``),`src/page/lesson.ts#documentLabel`),oxe=(e,t,r)=>n(W6(e)?r.p([r.Class(`flex items-center gap-1.5 text-xs font-medium text-muted-foreground`)],t.origin===`Source`?[L(`book`,`size-3.5 text-primary/70`,r),`From your source`]:[L(`sparkles`,`size-3.5`,r),`Added by BaviTutor`]):r.empty,`src/page/lesson.ts#provenanceView`),sxe=(e,t,r)=>n(W6(e)&&t.origin===`Source`?xi(t.quotes,{onEmpty:()=>n(r.empty,`src/page/lesson.ts#onEmpty~4`),onNonEmpty:e=>n(r.details([r.Class(`group`)],[r.summary([r.Class(`flex w-fit cursor-pointer list-none items-center gap-1.5 text-sm font-medium text-muted-foreground select-none hover:text-foreground [&::-webkit-details-marker]:hidden`)],[L(`chevronDown`,`size-4 -rotate-90 transition-transform group-open:rotate-0`,r),`Show the original`]),r.div([r.Class(`mt-3 flex flex-col gap-4`)],w(e,e=>n(r.figure([r.Class(`flex flex-col gap-1.5 border-l-2 border-primary/25 pl-4`)],[r.blockquote([r.Class(`text-sm leading-relaxed whitespace-pre-line text-muted-foreground`)],[e.text]),r.figcaption([r.Class(`text-xs text-muted-foreground/80`)],[axe(e.documentName)])]),`src/page/lesson.ts#anonymous~105`)))]),`src/page/lesson.ts#onNonEmpty~4`)}):r.empty,`src/page/lesson.ts#originalView`),cxe=(e,t,r)=>n(r.article([r.Class(Bz(`reveal flex flex-col gap-4 p-6 sm:p-8`))],[r.div([r.Class(`flex flex-col gap-1.5`)],[oxe(e,t,r),r.h2([r.Class(`text-xl font-semibold tracking-tight`)],[t.heading])]),...C(t.maybePredict,{onNone:()=>n(G6(e,t,r),`src/page/lesson.ts#onNone~12`),onSome:i=>n(m6.match(e.guess,{Open:({text:e})=>n([H6(i,e,rxe,r)],`src/page/lesson.ts#Open`),Made:({text:i})=>n([U6(`Your guess`,i,r),...G6(e,t,r)],`src/page/lesson.ts#Made`)}),`src/page/lesson.ts#onSome~12`)})]),`src/page/lesson.ts#readView`),G6=(e,t,r)=>n([Z4(t.body,`text-[1.05rem] leading-relaxed`,r),sxe(e,t,r),C(e.maybeFrame,{onNone:()=>n(r.empty,`src/page/lesson.ts#onNone~13`),onSome:e=>n(r.submodel({slotId:`lesson-visual-${e.frameId}`,model:e,view:_be,toParentMessage:O6}),`src/page/lesson.ts#onSome~13`)}),B6(e,r),r.div([r.Class(`flex flex-wrap items-center justify-between gap-3`)],[V6(e,r),z6(`Got it`,r)])],`src/page/lesson.ts#readBody`),lxe=(e,t,r)=>n(m6.match(e.guess,{Open:({text:e})=>n(r.div([r.Class(Bz(`reveal flex flex-col gap-4 p-6 sm:p-8`))],[H6(t.problem,e,ixe,r)]),`src/page/lesson.ts#Open~2`),Made:({text:i})=>n(uxe(e,t,i,r),`src/page/lesson.ts#Made~2`)}),`src/page/lesson.ts#workedExampleView`),uxe=(e,t,r,i)=>{let a=e.revealedSteps>=t.steps.length;return n(i.div([i.Class(Bz(`reveal flex flex-col gap-4 p-6 sm:p-8`))],[i.div([i.Class(`text-sm font-medium text-muted-foreground`)],[`Try each step first.`]),Z4(t.problem,`text-lg`,i),i.ol([i.Class(`flex flex-col gap-2`)],w(Vi(t.steps,e.revealedSteps),(e,t)=>n(i.keyed(`li`)(`${t}`,[i.Class(`pop-in flex gap-3 rounded-lg bg-muted/50 px-4 py-2.5`)],[i.span([i.Class(`font-mono text-xs text-muted-foreground`)],[`${t+1}`]),Z4(e,`prose-sm flex-1`,i)]),`src/page/lesson.ts#anonymous~106`))),a?i.div([i.Class(`flex flex-col gap-4`)],[U6(`Your try`,r,i),i.div([i.Class(`rounded-lg border border-success/40 bg-success/8 px-4 py-3`)],[Z4(`**Answer:** ${t.answer}`,`prose-sm`,i)]),z6(`Continue`,i)]):i.div([i.Class(`flex justify-end`)],[i.button([i.Type(`button`),i.OnClick($.ClickedRevealStep()),i.Class(I(`Secondary`,`Large`))],[`Show step ${e.revealedSteps+1} of ${t.steps.length}`])])]),`src/page/lesson.ts#workedStepsView`)},dxe=(e,t)=>n(t.div([t.Class(Bz(`reveal flex flex-col gap-4 p-6 sm:p-8`))],[t.div([t.Class(`flex items-center gap-2 font-semibold`)],[L(`network`,`size-4 text-primary`,t),`Where it fits`]),Z4(e.body,``,t),z6(`Continue`,t)]),`src/page/lesson.ts#connectView`),fxe=(e,t,r)=>n(r.div([r.Class(Bz(`reveal flex flex-col gap-4 p-6 sm:p-8`))],[r.div([r.Class(`flex items-center gap-2 font-semibold`)],[L(`graduation`,`size-4 text-primary`,r),`Teach it back`]),Z4(t.prompt,``,r),g6.match(e.teachBack,{Writing:({text:e})=>n(q6(e,!1,r),`src/page/lesson.ts#Writing~4`),Grading:({text:e})=>n(q6(e,!0,r),`src/page/lesson.ts#Grading~3`),Graded:({result:e,followUp:t})=>n(r.div([r.Class(`pop-in flex flex-col gap-4`)],[r.div([r.Class(`rounded-xl border bg-muted/40 p-4`)],[Z4(e.feedback,`prose-sm`,r),xi(e.ideaUnits,{onEmpty:()=>n(r.empty,`src/page/lesson.ts#onEmpty~5`),onNonEmpty:e=>n(r.ul([r.Class(`mt-3 flex flex-col gap-1 text-sm`)],w(e,e=>n(r.li([r.Class(`flex items-start gap-2`)],[e.status===`Present`?L(`check`,`mt-0.5 size-3.5 shrink-0 text-success`,r):e.status===`Partial`?L(`circleDashed`,`mt-0.5 size-3.5 shrink-0 text-amber-500`,r):L(`x`,`mt-0.5 size-3.5 shrink-0 text-destructive`,r),e.idea]),`src/page/lesson.ts#anonymous~107`))),`src/page/lesson.ts#onNonEmpty~5`)})]),pxe(e.noviceQuestion,t,r),h6.match(t,{Writing:()=>n(r.empty,`src/page/lesson.ts#Writing~5`),Sending:()=>n(r.empty,`src/page/lesson.ts#Sending~2`),Answered:()=>n(z6(`Continue`,r),`src/page/lesson.ts#Answered~4`),Skipped:()=>n(z6(`Continue`,r),`src/page/lesson.ts#Skipped~2`)})]),`src/page/lesson.ts#Graded~3`)})]),`src/page/lesson.ts#teachBackView`),pxe=(e,t,r)=>n(r.div([r.Class(`flex flex-col gap-3 rounded-xl border border-dashed p-4`)],[r.p([r.Class(`text-sm text-muted-foreground`)],[`A beginner asks:`]),r.p([r.Class(`max-w-[85%] self-start rounded-xl bg-muted/60 px-3 py-2 font-medium`)],[e]),h6.match(t,{Writing:({text:e})=>n(K6(e,!1,r),`src/page/lesson.ts#Writing~6`),Sending:({text:e})=>n(K6(e,!0,r),`src/page/lesson.ts#Sending~3`),Answered:({text:e,reaction:t})=>n(r.div([r.Class(`flex flex-col gap-3`)],[r.p([r.Class(`max-w-[85%] self-end rounded-xl bg-primary/10 px-3 py-2 text-sm`)],[e]),r.p([r.Class(`pop-in max-w-[85%] self-start rounded-xl bg-muted/60 px-3 py-2 text-sm`)],[t.reaction]),C(t.maybeCorrection,{onNone:()=>n(r.empty,`src/page/lesson.ts#onNone~14`),onSome:e=>n(r.div([r.Class(`pop-in flex items-start gap-2 rounded-lg border border-amber-500/40 bg-amber-500/8 px-3 py-2 text-sm`)],[L(`alert`,`mt-0.5 size-4 shrink-0`,r),r.div([r.Class(`flex-1`)],[r.span([r.Class(`font-medium`)],[`A quick fix: `]),e])]),`src/page/lesson.ts#onSome~14`)})]),`src/page/lesson.ts#Answered~5`),Skipped:()=>n(r.empty,`src/page/lesson.ts#Skipped~3`)})]),`src/page/lesson.ts#noviceView`),K6=(e,t,r)=>n(r.div([r.Class(`flex flex-col gap-2`)],[r.textarea([r.Value(e),r.Rows(3),r.Autofocus(!0),r.Disabled(t),r.AriaLabel(`Your answer to the beginner`),r.Placeholder(`Answer them`),r.OnInput(e=>n($.UpdatedFollowUp({value:e}),`src/page/lesson.ts#anonymous~108`)),r.OnKeyDownPreventDefault((e,t)=>n(xr($.SubmittedFollowUp(),()=>n(e===`Enter`&&(t.ctrlKey||t.metaKey),`src/page/lesson.ts#anonymous~110`)),`src/page/lesson.ts#anonymous~109`)),r.Class(Vz(`resize-none text-base`))]),r.div([r.Class(`flex items-center justify-end gap-2`)],[r.button([r.Type(`button`),r.OnClick($.ClickedSkipFollowUp()),r.Class(I(`Ghost`,`Large`,`text-muted-foreground`))],[`Skip`]),r.button([r.Type(`button`),r.Disabled(t||wd(e).length<b6),r.OnClick($.SubmittedFollowUp()),r.Class(I(`Primary`,`Large`))],[t?L(`refresh`,`spinner`,r):r.empty,t?`Sending…`:`Reply`])])]),`src/page/lesson.ts#followUpInput`),q6=(e,t,r)=>n(r.div([r.Class(`flex flex-col gap-3`)],[r.textarea([r.Value(e),r.Rows(5),r.Disabled(t),r.Placeholder(`Explain it in your own words…`),r.OnInput(e=>n($.UpdatedTeachBack({value:e}),`src/page/lesson.ts#anonymous~111`)),r.Class(Vz(`resize-y text-base leading-relaxed`))]),r.div([r.Class(`flex justify-end`)],[r.button([r.Type(`button`),r.Disabled(t||wd(e).length<10),r.OnClick($.SubmittedTeachBack()),r.Class(I(`Primary`,`Large`))],[t?L(`refresh`,`spinner`,r):r.empty,t?`Checking…`:`Check`])])]),`src/page/lesson.ts#teachBackInput`),mxe=(e,t,r)=>n(r.div([r.Class(Bz(`reveal flex flex-col gap-5 p-6 sm:p-8`))],[r.div([r.Class(`flex items-center gap-2 text-lg font-semibold`)],[L(`sparkles`,`size-5 text-primary`,r),`Key points`]),r.ul([r.Class(`flex flex-col gap-2`)],w(t.points,e=>n(r.li([r.Class(`flex gap-2`)],[L(`check`,`mt-1 size-4 shrink-0 text-success`,r),Z4(e,`prose-sm flex-1`,r)]),`src/page/lesson.ts#anonymous~112`))),y6.match(e.completion,{NotStarted:()=>n(r.empty,`src/page/lesson.ts#NotStarted`),Completing:()=>n(r.p([r.Class(`shimmer-text text-sm`)],[`Scheduling your first review…`]),`src/page/lesson.ts#Completing`),Failed:({error:e})=>n(r.p([r.Class(`text-sm text-destructive`)],[e]),`src/page/lesson.ts#Failed`),Completed:({outcome:e})=>n(r.div([r.Class(F(`pop-in flex items-start gap-3 rounded-xl border p-4`,e.criterionMet?`border-success/40 bg-success/8`:`border-amber-500/40 bg-amber-500/8`))],[L(e.criterionMet?`brain`:`refresh`,`mt-0.5 size-5 shrink-0`,r),r.p([r.Class(`text-sm`)],[e.message])]),`src/page/lesson.ts#Completed`)}),J6(e,r)]),`src/page/lesson.ts#summaryView`),J6=(e,t)=>n(t.div([t.Class(`flex flex-col-reverse gap-2 sm:flex-row sm:justify-end`)],[t.a([t.Href(Az({goalId:e.goalId,conceptId:e.conceptId})),t.Class(I(`Outline`,`Large`))],[L(`fileText`,``,t),`Read the notes`]),t.a([t.Href(Oz({goalId:e.goalId})),t.Class(I(`Primary`,`Large`))],[`Back to map`,L(`arrowRight`,``,t)])]),`src/page/lesson.ts#finishActions`),hxe=(e,t,r)=>n(C(e.maybeQuiz,{onNone:()=>n(r.empty,`src/page/lesson.ts#onNone~15`),onSome:i=>n(r.div([r.Class(`flex flex-col gap-3`)],[t._tag===`QuickCheck`?r.p([r.Class(zz(`Warning`,`reveal px-3 py-1`))],[`Get these right to skip the lesson.`]):r.empty,t._tag===`Prequestion`?r.p([r.Class(zz(`Info`,`reveal px-3 py-1`))],[`Just guess. Wrong is OK.`]):r.empty,r.submodel({slotId:`quiz-${i.question.id}`,model:i,view:V3(`Continue`),toParentMessage:e=>n($.GotQuizMessage({message:e}),`src/page/lesson.ts#toParentMessage~3`)}),S(I6(e))&&S(e.maybeLastRead)?r.div([r.Class(`reveal flex flex-col gap-3`)],[B6(e,r),V6(e,r)]):r.empty]),`src/page/lesson.ts#onSome~15`)}),`src/page/lesson.ts#quizView`),gxe=(e,t)=>{let r=ki(e.quickCheckVerdicts)&&pa(e.quickCheckVerdicts,e=>n(e===`Correct`,`src/page/lesson.ts#anonymous~113`));return n(y6.match(e.completion,{Completed:({outcome:r})=>n(t.div([t.Class(Bz(`reveal flex flex-col gap-4 p-6 sm:p-8`))],[t.div([t.Class(`flex items-center gap-2 text-lg font-semibold`)],[L(`check`,`size-5 text-success`,t),`Skipped`]),t.p([t.Class(`text-sm text-muted-foreground`)],[r.message]),J6(e,t)]),`src/page/lesson.ts#Completed~2`),NotStarted:()=>n(Y6(e,r,!1,t),`src/page/lesson.ts#NotStarted~2`),Completing:()=>n(Y6(e,r,!0,t),`src/page/lesson.ts#Completing~2`),Failed:()=>n(Y6(e,r,!1,t),`src/page/lesson.ts#Failed~2`)}),`src/page/lesson.ts#quickCheckDecisionView`)},Y6=(e,t,r,i)=>n(i.div([i.Class(Bz(`reveal flex flex-col gap-4 p-6 sm:p-8`))],[i.div([i.Class(`flex items-center gap-2 text-lg font-semibold`)],[L(t?`sparkles`:`book`,`size-5 text-primary`,i),t?`You already know this`:`Let's learn it`]),i.p([i.Class(`text-sm text-muted-foreground`)],[t?`All correct. If you skip, we'll still review it later.`:`You missed some. The lesson is short.`]),i.div([i.Class(`flex justify-end gap-2`)],t?[i.button([i.Type(`button`),i.OnClick($.ClickedContinue()),i.Class(I(`Ghost`,`Large`))],[`Learn it anyway`]),i.button([i.Type(`button`),i.Disabled(r),i.OnClick($.ClickedSkipLesson()),i.Class(I(`Primary`,`Large`))],[r?L(`refresh`,`spinner`,i):L(`check`,``,i),`Skip this lesson`])]:[i.button([i.Type(`button`),i.OnClick($.ClickedContinue()),i.Class(I(`Primary`,`Large`))],[`Start lesson`,L(`arrowRight`,``,i)])]),C(e.maybeError,{onNone:()=>n(i.empty,`src/page/lesson.ts#onNone~16`),onSome:e=>n(i.p([i.Class(`text-sm text-destructive`)],[e]),`src/page/lesson.ts#onSome~16`)})]),`src/page/lesson.ts#quickCheckChoice`),_xe=(e,t)=>n(t.ol([t.AriaLabel(`Card ${Math.min(e.ideaIds.length,e.firstTries.length+1)} of ${e.ideaIds.length}`),t.Class(`flex flex-wrap items-center justify-center gap-1.5`)],w(e.ideaIds,r=>{let i=Yi(e.firstTries,e=>n(e.ideaId===r,`src/page/lesson.ts#anonymous~115`)),a=Cr(e.maybeCurrent,e=>n(e.ideaId===r&&e.attempt===0,`src/page/lesson.ts#anonymous~116`));return n(t.keyed(`li`)(r,[t.Class(F(`size-2.5 rounded-full transition-colors duration-300`,C(i,{onNone:()=>n(a?`bg-primary`:`bg-muted`,`src/page/lesson.ts#onNone~17`),onSome:e=>n(e.isRight?`bg-success`:`bg-amber-500`,`src/page/lesson.ts#onSome~17`)})))],[]),`src/page/lesson.ts#anonymous~114`)})),`src/page/lesson.ts#roundDotsView`),vxe=(e,t)=>n(_6.match(e.round.load,{Failed:()=>n(t.div([t.Class(Bz(`reveal flex flex-col items-center gap-4 p-8 text-center`))],[t.p([t.Class(`font-medium`)],[`Your cards didn't load.`]),t.div([t.Class(`flex flex-wrap justify-center gap-2`)],[t.button([t.Type(`button`),t.OnClick($.ClickedSkipRound()),t.Class(I(`Ghost`,`Large`))],[`Skip for now`]),t.button([t.Type(`button`),t.OnClick($.ClickedRetryRound()),t.Class(I(`Primary`,`Large`))],[L(`refresh`,``,t),`Try again`])])]),`src/page/lesson.ts#Failed~3`),Idle:()=>n(X6(t),`src/page/lesson.ts#Idle`),Loading:()=>n(X6(t),`src/page/lesson.ts#Loading`),Ready:()=>n(X6(t),`src/page/lesson.ts#Ready`)}),`src/page/lesson.ts#roundWaitingView`),X6=e=>n(e.div([e.Class(Bz(`flex flex-col items-center gap-4 p-10 text-center`))],[L(`layers`,`size-6 text-primary`,e),e.p([e.Class(`shimmer-text text-base font-medium`)],[`Getting your cards ready…`])]),`src/page/lesson.ts#roundLoadingView`),yxe=(e,t)=>n(t.div([t.Class(`flex flex-col gap-4`)],[Di(e.round.ideaIds)?t.empty:_xe(e.round,t),C(e.maybeFlashcard,{onNone:()=>n(vxe(e,t),`src/page/lesson.ts#onNone~18`),onSome:e=>n(t.submodel({slotId:`flashcard-${e.card.questionId}`,model:e,view:x3(`Continue`),toParentMessage:k6}),`src/page/lesson.ts#onSome~18`)})]),`src/page/lesson.ts#flashcardsView`),bxe=(e,t,r)=>n(Ew(t.step).pipe(Ow(),Mw(`Intro`,t=>n(txe(t,e.load._tag===`Ready`?e.load.style:`Guided`,r),`src/page/lesson.ts#anonymous~117`)),Mw(`Read`,t=>n(cxe(e,t,r),`src/page/lesson.ts#anonymous~118`)),Mw(`WorkedExample`,t=>n(lxe(e,t,r),`src/page/lesson.ts#anonymous~119`)),Mw(`Connect`,e=>n(dxe(e,r),`src/page/lesson.ts#anonymous~120`)),Mw(`TeachBack`,t=>n(fxe(e,t,r),`src/page/lesson.ts#anonymous~121`)),Mw(`Summary`,t=>n(mxe(e,t,r),`src/page/lesson.ts#anonymous~122`)),Mw(`Prequestion`,`Check`,`Closing`,`QuickCheck`,t=>n(hxe(e,t,r),`src/page/lesson.ts#anonymous~123`)),Mw(`QuickCheckDecision`,()=>n(gxe(e,r),`src/page/lesson.ts#anonymous~124`)),Mw(`Flashcards`,()=>n(yxe(e,r),`src/page/lesson.ts#anonymous~125`)),Fw),`src/page/lesson.ts#stepView`),xxe=(e,t)=>{let r=e.completedSteps+e.queue.length+ +!!S(e.maybeCurrent),i=r===0?0:Math.round(e.completedSteps/r*100);return n(t.div([t.Class(`h-1 w-full overflow-hidden rounded-full bg-muted`)],[t.div([t.Class(`h-full rounded-full bg-primary transition-[width] duration-500`),t.Style({width:`${i}%`})])]),`src/page/lesson.ts#progressView`)},Sxe=e=>n(e.div([e.Class(Bz(`flex flex-col items-center gap-4 p-10 text-center`))],[e.span([e.Class(`flex size-12 items-center justify-center rounded-2xl bg-primary/12 text-primary`)],[L(`book`,`size-6`,e)]),e.p([e.Class(`shimmer-text text-lg font-medium`)],[`Writing your lesson…`]),e.p([e.Class(`max-w-md text-sm text-muted-foreground`)],[`This takes about a minute.`])]),`src/page/lesson.ts#generatingView`),Cxe=e=>n(e.p([e.Class(`text-center text-sm text-muted-foreground`)],[`Answer from memory. The tutor can help after.`]),`src/page/lesson.ts#recallNoteView`),wxe=(e,t)=>n(Ibe(e)?Cxe(t):e.tutor.isOpen?t.section([t.Class(Bz(`pop-in flex flex-col gap-3 p-4`))],[t.div([t.Class(`flex items-center justify-between`)],[t.div([t.Class(`flex items-center gap-2 text-sm font-semibold`)],[L(`sparkles`,`size-4 text-primary`,t),`Tutor`]),t.button([t.Type(`button`),t.AriaLabel(`Close tutor`),t.OnClick($.ToggledTutor()),t.Class(I(`Ghost`,`IconSmall`))],[L(`x`,``,t)])]),xi(e.tutor.turns,{onEmpty:()=>n(t.p([t.Class(`text-sm text-muted-foreground`)],[E6(e)||T6(e)?`Stuck? I'll give a hint, not the answer.`:`Ask anything about this step.`]),`src/page/lesson.ts#onEmpty~6`),onNonEmpty:e=>n(t.ol([t.Class(`flex max-h-96 flex-col gap-3 overflow-y-auto`)],w(e,(e,r)=>n(t.keyed(`li`)(`${r}`,[t.Class(F(`rounded-xl px-3 py-2 text-sm`,e.role===`Learner`?`self-end bg-primary/10`:`self-start bg-muted/60`))],[Z4(e.text,`prose-sm`,t)]),`src/page/lesson.ts#anonymous~126`))),`src/page/lesson.ts#onNonEmpty~6`)}),e.tutor.isAsking?t.p([t.Class(`shimmer-text text-sm`)],[`Thinking…`]):t.empty,t.form([t.OnSubmit($.SubmittedTutorQuestion()),t.Class(`flex items-end gap-2`)],[t.textarea([t.Value(e.tutor.draft),t.Rows(2),t.Placeholder(`Ask a question…`),t.OnInput(e=>n($.UpdatedTutorDraft({value:e}),`src/page/lesson.ts#anonymous~127`)),t.OnKeyDownPreventDefault((e,t)=>n(xr($.SubmittedTutorQuestion(),()=>n(e===`Enter`&&!t.shiftKey,`src/page/lesson.ts#anonymous~129`)),`src/page/lesson.ts#anonymous~128`)),t.Class(Vz(`resize-none text-sm`))]),t.button([t.Type(`submit`),t.AriaLabel(`Send`),t.Disabled(e.tutor.isAsking),t.Class(I(`Primary`,`Icon`))],[L(`arrowUp`,``,t)])])]):t.div([t.Class(`flex justify-center`)],[t.button([t.Type(`button`),t.OnClick($.ToggledTutor()),t.Class(I(`Ghost`,`Small`,`text-muted-foreground`))],[L(`sparkles`,``,t),`Ask the tutor`])]),`src/page/lesson.ts#tutorView`),Txe=qD((e,t)=>n(t.div([t.Class(`mx-auto flex w-full max-w-3xl flex-col gap-5 px-5 pt-6 pb-24`)],[t.div([t.Class(`flex items-center justify-between gap-4`)],[t.a([t.Href(Oz({goalId:e.goalId})),t.Class(`inline-flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground`)],[L(`arrowLeft`,`size-4`,t),`Map`]),C(e.maybeCurrent,{onNone:()=>n(t.empty,`src/page/lesson.ts#onNone~19`),onSome:e=>n(t.span([t.Class(`text-sm text-muted-foreground`)],[exe(e.step)]),`src/page/lesson.ts#onSome~19`)})]),p6.match(e.load,{Loading:()=>n(t.div([t.Class(`h-64 animate-pulse rounded-xl bg-muted/60`)]),`src/page/lesson.ts#Loading~2`),Generating:()=>n(Sxe(t),`src/page/lesson.ts#Generating`),Failed:({error:e})=>n(t.div([t.Class(Bz(`flex flex-col gap-3 p-6`))],[t.p([t.Class(`font-medium`)],[`We couldn't write this lesson.`]),t.p([t.Class(`text-sm text-muted-foreground`)],[e])]),`src/page/lesson.ts#Failed~4`),Ready:({title:r,estimatedMinutes:i})=>n(t.div([t.Class(`flex flex-col gap-5`)],[t.div([t.Class(`flex flex-col gap-3`)],[t.div([t.Class(`flex items-end justify-between gap-3`)],[t.h1([t.Class(`text-2xl font-semibold tracking-tight`)],[r]),t.span([t.Class(zz(`Neutral`))],[L(`clock`,``,t),`${i} min`])]),xxe(e,t)]),C(e.maybeError,{onNone:()=>n(t.empty,`src/page/lesson.ts#onNone~20`),onSome:e=>n(t.p([t.Role(`alert`),t.Class(`text-sm text-destructive`)],[e]),`src/page/lesson.ts#onSome~20`)}),Di(e.skipped)||e.completedSteps!==e.skipped.length?t.empty:t.div([t.Class(`reveal flex items-center justify-between gap-3 rounded-lg bg-muted/60 px-4 py-2 text-sm text-muted-foreground`)],[t.span([],[`Picked up where you left off.`]),t.button([t.Type(`button`),t.OnClick($.ClickedStartOver()),t.Class(I(`Ghost`,`Small`))],[L(`refresh`,``,t),`Start over`])]),C(e.maybeCurrent,{onNone:()=>n(t.empty,`src/page/lesson.ts#onNone~21`),onSome:r=>n(t.keyed(`div`)(r.key,[],[bxe(e,r,t)]),`src/page/lesson.ts#onSome~21`)}),wxe(e,t)]),`src/page/lesson.ts#Ready~2`)})]),`src/page/lesson.ts#anonymous~130`)),Exe=e=>n(e.load._tag===`Ready`?`${e.load.title} · Lesson`:`Lesson · BaviTutor`,`src/page/lesson.ts#pageTitle`),Dxe={Article:`newspaper`,Video:`circlePlay`,Course:`graduation`,Docs:`book`,Book:`library`},Z6={Article:`Article`,Video:`Video`,Course:`Course`,Docs:`Docs`,Book:`Book`},Q6=e=>n((e.replace(/^[a-z][a-z0-9+.-]*:\/\//i,``).split(/[/?#]/)[0]??e).replace(/^www\./,``).toLowerCase(),`src/component/resources.ts#hostOf`),Oxe=e=>n(/^https?:\/\//i.test(e),`src/component/resources.ts#isWebUrl`),kxe=(e,t,r)=>n(r.keyed(`li`)(e.url,[r.Class(`min-w-0`)],[r.a([r.Href(e.url),r.Target(`_blank`),r.Rel(`noopener noreferrer`),r.Title(`From ${e.origin}`),r.Class(F(`group flex min-w-0 items-start gap-3 rounded-lg transition-colors hover:bg-accent/60`,t?`-mx-2 px-2 py-1.5`:`-mx-3 px-3 py-2.5`))],[r.span([r.Class(F(`flex shrink-0 items-center justify-center rounded-md bg-primary/10 text-primary`,t?`mt-px size-6`:`mt-0.5 size-8`))],[L(Dxe[e.kind],t?`size-3.5`:`size-4`,r)]),r.span([r.Class(`flex min-w-0 flex-1 flex-col gap-0.5`)],[r.span([r.Class(F(`font-medium group-hover:text-primary`,t?`truncate text-sm`:`text-[15px] leading-snug`))],[e.title]),r.span([r.Class(F(`text-xs text-muted-foreground`,t?`truncate`:`break-words`))],[t?`${Z6[e.kind]} · ${Q6(e.url)}`:`${Z6[e.kind]} · ${Q6(e.url)} · ${e.origin}`])]),L(`external`,`mt-1 size-3.5 shrink-0 text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100`,r),r.span([r.Class(`sr-only`)],[`(opens in a new tab)`])])]),`src/component/resources.ts#resourceView`),Axe=(e,t,r,i)=>n(xi(da(e,e=>n(Oxe(e.url),`src/component/resources.ts#anonymous`)),{onEmpty:()=>n(i.empty,`src/component/resources.ts#onEmpty`),onNonEmpty:e=>n(i.ul([i.AriaLabel(r),i.Class(F(`flex flex-col`,t?`gap-0.5`:`gap-1`))],w(e,e=>n(kxe(e,t,i),`src/component/resources.ts#anonymous~2`))),`src/component/resources.ts#onNonEmpty`)}),`src/component/resources.ts#resourceListView`),$6=pT({Loading:{},Failed:{error:O},Ready:{notes:DI,fetchedAt:k}}),jxe=A({goalId:O,conceptId:O,load:$6}),e8=fT({SucceededFetchNotes:{notes:DI,fetchedAt:k},FailedFetchNotes:{error:O},ClickedRetry:{}}),t8=N(`FetchNotes`,{args:{goalId:O,conceptId:O},messages:[e8.SucceededFetchNotes,e8.FailedFetchNotes],execute:({goalId:e,conceptId:t})=>n(D(function*(){let r=yield*(yield*XR).learning.notes({params:{goalId:nI.make(e),conceptId:rI.make(t)}}),i=yield*hd;return n(e8.SucceededFetchNotes({notes:r,fetchedAt:i}),`src/page/notes.ts#anonymous`)}).pipe(af(`ConceptNotFound`,()=>n(T(e8.FailedFetchNotes({error:`That concept is not on this map any more.`})),`src/page/notes.ts#anonymous~2`)),rf(e=>n(T(e8.FailedFetchNotes({error:QR(e)})),`src/page/notes.ts#anonymous~3`))),`src/page/notes.ts#execute`)}),Mxe=(e,t)=>n({model:{goalId:e,conceptId:t,load:$6.Loading()},commands:[t8({goalId:e,conceptId:t})]},`src/page/notes.ts#init`),Nxe=(e,t)=>n(e8.match(t,{SucceededFetchNotes:({notes:t,fetchedAt:r})=>n({model:P(e,{load:()=>n($6.Ready({notes:t,fetchedAt:r}),`src/page/notes.ts#load`)})},`src/page/notes.ts#SucceededFetchNotes`),FailedFetchNotes:({error:t})=>n({model:P(e,{load:()=>n($6.Failed({error:t}),`src/page/notes.ts#load~2`)})},`src/page/notes.ts#FailedFetchNotes`),ClickedRetry:()=>n({model:P(e,{load:()=>n($6.Loading(),`src/page/notes.ts#load~3`)}),commands:[t8({goalId:e.goalId,conceptId:e.conceptId})]},`src/page/notes.ts#ClickedRetry`)}),`src/page/notes.ts#update`),Pxe=36e5,Fxe={Unknown:{label:`Not studied yet`,tone:`Neutral`,note:``},Assumed:{label:`Assumed known`,tone:`Neutral`,note:`You know what comes after it.`},Known:{label:`Known before`,tone:`Success`,note:``},Shaky:{label:`Shaky`,tone:`Warning`,note:`A quick check comes first.`},InLesson:{label:`In a lesson`,tone:`Primary`,note:`Started, not passed.`},Acquired:{label:`Learned`,tone:`Success`,note:`Reviews will make it stick.`},Consolidating:{label:`In review`,tone:`Info`,note:``},Mastered:{label:`Mastered`,tone:`Success`,note:`Recalled on two later days.`},Durable:{label:`Durable`,tone:`Success`,note:`Should last a month without review.`},Relearning:{label:`Relearning`,tone:`Warning`,note:`Slipped, so it comes back sooner.`}},Ixe=e=>n(new Date(e).toLocaleDateString(`en-US`,{weekday:`short`,month:`short`,day:`numeric`}),`src/page/notes.ts#formatDay`),Lxe=(e,t)=>{let r=(e-t)/Pxe;if(r<1)return n(`within the hour`,`src/page/notes.ts#fromNow`);if(r<36)return n(`in about ${Math.round(r)} hours`,`src/page/notes.ts#fromNow`);let i=Math.round(r/24);return n(i<60?`in ${i} days`:`in about ${Math.round(i/30)} months`,`src/page/notes.ts#fromNow`)},n8=`text-xs font-medium tracking-wide text-muted-foreground uppercase`,r8=(e,t,r,i)=>n(i.section([i.AriaLabelledBy(`notes-${e}`),i.Class(`flex flex-col gap-5 border-t py-8 last:pb-0`)],[i.h2([i.Id(`notes-${e}`),i.Class(`text-lg font-semibold tracking-tight`)],[t]),...r]),`src/page/notes.ts#sectionView`),Rxe=(e,t,r)=>{let i=Fxe[e.mastery];return n(r.dl([r.Class(`grid gap-4 rounded-xl bg-muted/50 px-4 py-3.5 text-sm sm:grid-cols-2 sm:px-5`)],[r.div([r.Class(`flex flex-col gap-1`)],[r.dt([r.Class(n8)],[`Your status`]),r.dd([r.Class(`flex flex-wrap items-center gap-x-2 gap-y-1`)],[r.span([r.Class(zz(i.tone,i.tone===`Neutral`?`border bg-background`:``))],[i.label]),i.note.length>0?r.span([r.Class(`text-muted-foreground`)],[i.note]):r.empty])]),r.div([r.Class(`flex flex-col gap-1`)],[r.dt([r.Class(n8)],[`Next review`]),r.dd([r.Class(`flex flex-wrap items-center gap-x-2 gap-y-1`)],C(e.maybeNextReviewAt,{onNone:()=>n([r.span([r.Class(`text-muted-foreground`)],[fI(e.mastery)?`Not scheduled`:`After you pass the lesson`])],`src/page/notes.ts#onNone`),onSome:e=>n(e<=t?[r.span([r.Class(`font-medium`)],[`Due now`]),r.a([r.Href(Mz()),r.Class(`font-medium text-primary underline-offset-4 hover:underline`)],[`Review it`])]:[r.time([r.Datetime(new Date(e).toISOString()),r.Class(`font-medium`)],[Ixe(e)]),r.span([r.Class(`text-muted-foreground`)],[Lxe(e,t)])],`src/page/notes.ts#onSome`)}))])]),`src/page/notes.ts#statusView`)},zxe=(e,t,r)=>n(r.header([r.Class(`flex flex-col gap-5 pb-8`)],[r.div([r.Class(`flex flex-col gap-2`)],[r.p([r.Class(F(n8,`flex items-center gap-1.5`))],[L(`fileText`,`size-3.5`,r),`Notes`]),r.h1([r.Id(`notes-title`),r.Class(`text-3xl leading-tight font-semibold tracking-tight text-balance`)],[e.concept.title]),r.p([r.Class(`text-base leading-relaxed text-muted-foreground`)],[e.concept.summary])]),Rxe(e,t,r)]),`src/page/notes.ts#headerView`),Bxe=(e,t)=>n(xi(e,{onEmpty:()=>n(t.empty,`src/page/notes.ts#onEmpty`),onNonEmpty:e=>n(r8(`key-ideas`,`Key ideas`,[t.ol([t.Class(`flex flex-col gap-3`)],w(e,(e,r)=>n(t.li([t.Class(`flex gap-3`)],[t.span([t.AriaHidden(!0),t.Class(`mt-0.5 flex size-6 shrink-0 items-center justify-center rounded-full bg-primary/12 text-xs font-semibold text-primary tabular-nums`)],[`${r+1}`]),Z4(e,`min-w-0 flex-1 prose-p:my-0`,t)]),`src/page/notes.ts#anonymous~4`)))],t),`src/page/notes.ts#onNonEmpty`)}),`src/page/notes.ts#keyIdeasView`),i8=(e,t)=>n(t.summary([t.Class(`flex cursor-pointer list-none items-center gap-1.5 text-sm font-medium text-muted-foreground select-none hover:text-foreground [&::-webkit-details-marker]:hidden`)],[L(`chevronDown`,`size-4 shrink-0 -rotate-90 transition-transform group-open:rotate-0`,t),...e]),`src/page/notes.ts#disclosureSummary`),a8=6,Vxe=e=>n(e.trim().length===0?`Your source`:e.trim().replace(/\.(?:txt|md|markdown)$/i,``),`src/page/notes.ts#documentLabel`),o8=(e,t,r,i)=>n(i.keyed(`li`)(e.id,[i.Class(`flex gap-3`)],[i.span([i.AriaHidden(!0),i.Class(`mt-0.5 flex size-6 shrink-0 items-center justify-center rounded-full bg-primary/12 text-xs font-semibold text-primary tabular-nums`)],[`${t+1}`]),i.div([i.Class(`flex min-w-0 flex-1 flex-col gap-2`)],[Z4(e.statement,`min-w-0 prose-p:my-0`,i),r&&e.origin===`Source`&&e.quote.length>0?i.figure([i.Class(`flex flex-col gap-1 border-l-2 border-primary/25 pl-3`)],[i.blockquote([i.Class(`text-sm leading-relaxed whitespace-pre-line text-muted-foreground`)],[e.quote]),i.figcaption([i.Class(`text-xs text-muted-foreground/80`)],[Vxe(e.documentName)])]):i.empty,r&&e.origin===`Added`?i.p([i.Class(`flex items-center gap-1.5 text-xs text-muted-foreground`)],[L(`sparkles`,`size-3`,i),`Added by BaviTutor`]):i.empty])]),`src/page/notes.ts#ideaView`),Hxe=(e,t)=>n(xi(e.ideas,{onEmpty:()=>n(t.empty,`src/page/notes.ts#onEmpty~2`),onNonEmpty:r=>{let[i,a]=ra(r,a8);return n(r8(`key-ideas`,`Key ideas`,[e.hasSources&&r.some(e=>n(e.origin===`Source`,`src/page/notes.ts#anonymous~5`))?t.p([t.Class(`-mt-2 text-sm text-muted-foreground`)],[`With the words from your source.`]):t.empty,t.ol([t.Class(`flex flex-col gap-4`)],w(i,(r,i)=>n(o8(r,i,e.hasSources,t),`src/page/notes.ts#anonymous~6`))),xi(a,{onEmpty:()=>n(t.empty,`src/page/notes.ts#onEmpty~3`),onNonEmpty:r=>n(t.details([t.Class(`group`)],[i8([t.span([],[`Show ${r.length} more`])],t),t.ol([t.Class(`mt-4 flex flex-col gap-4`)],w(r,(r,i)=>n(o8(r,a8+i,e.hasSources,t),`src/page/notes.ts#anonymous~7`)))]),`src/page/notes.ts#onNonEmpty~3`)})],t),`src/page/notes.ts#onNonEmpty~2`)}}),`src/page/notes.ts#ideasView`),Uxe=(e,t,r)=>n(r.keyed(`article`)(`chunk-${t}`,[r.Class(`flex flex-col gap-3`)],[r.h3([r.Class(`text-base font-semibold leading-snug`)],[Q4(e.heading,``,r)]),Z4(e.gist,`prose-sm sm:prose-base`,r),e.gist.trim()===e.body.trim()?r.empty:r.details([r.Class(`group`)],[i8([r.span([],[`Read more`])],r),r.div([r.Class(`mt-3 border-l-2 border-primary/25 pl-4`)],[Z4(e.body,`prose-sm`,r)])])]),`src/page/notes.ts#chunkView`),Wxe=(e,t)=>n(xi(e,{onEmpty:()=>n(t.empty,`src/page/notes.ts#onEmpty~4`),onNonEmpty:e=>n(r8(`explained`,`Step by step`,[t.div([t.Class(`flex flex-col gap-8`)],w(e,(e,r)=>n(Uxe(e,r,t),`src/page/notes.ts#anonymous~8`)))],t),`src/page/notes.ts#onNonEmpty~4`)}),`src/page/notes.ts#chunksView`),Gxe=(e,t,r)=>n(r.keyed(`details`)(`example-${t}`,[r.Class(`group rounded-xl border px-4 py-3 open:pb-4`)],[i8([r.span([r.Class(`text-foreground`)],[`Example ${t+1}`])],r),r.div([r.Class(`mt-3 flex flex-col gap-3`)],[Z4(e.problem,`prose-sm`,r),r.ol([r.Class(`flex list-decimal flex-col gap-1.5 pl-5 text-sm`)],w(e.steps,e=>n(r.li([r.Class(`pl-1 marker:text-muted-foreground`)],[Z4(e,`prose-sm prose-p:my-0`,r)]),`src/page/notes.ts#anonymous~9`))),r.div([r.Class(`flex flex-wrap items-baseline gap-x-2 rounded-lg bg-success/8 px-3 py-2 text-sm`)],[r.span([r.Class(`font-medium text-success`)],[`Answer`]),Q4(e.answer,`min-w-0`,r)])])]),`src/page/notes.ts#workedExampleView`),Kxe=(e,t)=>n(xi(e,{onEmpty:()=>n(t.empty,`src/page/notes.ts#onEmpty~5`),onNonEmpty:e=>n(r8(`examples`,`Worked examples`,[t.p([t.Class(`-mt-2 text-sm text-muted-foreground`)],[`Try each one first.`]),t.div([t.Class(`flex flex-col gap-3`)],w(e,(e,r)=>n(Gxe(e,r,t),`src/page/notes.ts#anonymous~10`)))],t),`src/page/notes.ts#onNonEmpty~5`)}),`src/page/notes.ts#workedExamplesView`),qxe=(e,t)=>n(xi(e,{onEmpty:()=>n(t.empty,`src/page/notes.ts#onEmpty~6`),onNonEmpty:e=>n(r8(`traps`,`Common traps`,[t.ul([t.Class(`flex flex-col gap-3`)],w(e,e=>n(t.li([t.Class(`flex flex-col gap-2 rounded-xl border border-amber-500/30 bg-amber-500/6 p-4`)],[t.div([t.Class(`flex gap-2.5 text-sm`)],[L(`x`,`mt-0.5 size-4 shrink-0 text-amber-600 dark:text-amber-400`,t),t.div([t.Class(`min-w-0 flex-1`)],[t.span([t.Class(`sr-only`)],[`Trap: `]),Q4(e.belief,`text-muted-foreground`,t)])]),t.div([t.Class(`flex gap-2.5 text-sm`)],[L(`check`,`mt-0.5 size-4 shrink-0 text-success`,t),t.div([t.Class(`min-w-0 flex-1`)],[t.span([t.Class(`sr-only`)],[`Instead: `]),Q4(e.correction,``,t)])])]),`src/page/notes.ts#anonymous~11`)))],t),`src/page/notes.ts#onNonEmpty~6`)}),`src/page/notes.ts#trapsView`),s8=(e,t,r,i,a)=>n(a.div([a.Class(`flex min-w-0 flex-col gap-2`)],[a.h3([a.Class(n8)],[t]),xi(r,{onEmpty:()=>n(a.p([a.Class(`text-sm text-muted-foreground`)],[i]),`src/page/notes.ts#onEmpty~7`),onNonEmpty:r=>n(a.ul([a.AriaLabel(t),a.Class(`flex flex-col gap-1.5`)],w(r,t=>n(a.keyed(`li`)(t.id,[a.Class(`min-w-0`)],[a.a([a.Href(Az({goalId:e,conceptId:t.id})),a.Class(`press flex min-w-0 items-center gap-2 rounded-lg border px-3 py-2 text-sm hover:border-primary/50 hover:text-primary`)],[a.span([a.AriaHidden(!0),a.Class(F(`size-2 shrink-0 rounded-full`,fI(t.mastery)?`bg-success`:`bg-border`))]),a.span([a.Class(`min-w-0 flex-1 leading-snug break-words`)],[t.title]),fI(t.mastery)?a.span([a.Class(`sr-only`)],[`(learned)`]):a.empty])]),`src/page/notes.ts#anonymous~12`))),`src/page/notes.ts#onNonEmpty~7`)})]),`src/page/notes.ts#neighbourList`),Jxe=(e,t,r)=>n(r8(`map`,`On the map`,[r.div([r.Class(`grid items-start gap-3 sm:grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)_auto_minmax(0,1fr)] sm:gap-4`)],[s8(e.goalId,`Builds on`,e.prerequisites,`Nothing. This is a starting point.`,r),L(`arrowRight`,`mx-auto size-4 rotate-90 text-muted-foreground sm:mt-9 sm:rotate-0`,r),r.div([r.Class(`flex min-w-0 flex-col gap-2`)],[r.h3([r.Class(n8)],[`This concept`]),r.p([r.AriaCurrent(`page`),r.Class(`rounded-lg border border-primary/40 bg-primary/8 px-3 py-2 text-sm font-medium`)],[e.concept.title])]),L(`arrowRight`,`mx-auto size-4 rotate-90 text-muted-foreground sm:mt-9 sm:rotate-0`,r),s8(e.goalId,`Unlocks`,e.unlocks,`Nothing. This is the end of the map.`,r)]),C(br(t,e=>n(e.trim().length>0,`src/page/notes.ts#anonymous~13`)),{onNone:()=>n(r.empty,`src/page/notes.ts#onNone~2`),onSome:e=>n(Z4(e,`prose-sm text-muted-foreground`,r),`src/page/notes.ts#onSome~2`)})],r),`src/page/notes.ts#mapView`),Yxe=(e,t)=>n(xi(e.resources,{onEmpty:()=>n(t.empty,`src/page/notes.ts#onEmpty~8`),onNonEmpty:e=>n(r8(`deeper`,`Go deeper`,[Axe(e,!1,`Resources`,t)],t),`src/page/notes.ts#onNonEmpty~8`)}),`src/page/notes.ts#resourcesView`),Xxe=(e,t)=>n(r8(`covers`,`What this covers`,[xi(e.concept.objectives,{onEmpty:()=>n(t.empty,`src/page/notes.ts#onEmpty~9`),onNonEmpty:e=>n(t.ul([t.AriaLabel(`You will be able to`),t.Class(`flex flex-col gap-2 text-sm`)],w(e,e=>n(t.li([t.Class(`flex gap-2`)],[L(`target`,`mt-0.5 size-4 shrink-0 text-primary`,t),e]),`src/page/notes.ts#anonymous~14`))),`src/page/notes.ts#onNonEmpty~9`)}),t.div([t.Class(`flex flex-col items-start gap-3 rounded-xl border border-dashed p-5`)],[t.p([t.Class(`text-sm text-muted-foreground`)],[`No lesson yet. Take it to fill in these notes.`]),t.a([t.Href(kz({goalId:e.goalId,conceptId:e.concept.id})),t.Class(I(`Primary`,`Medium`))],[L(`play`,`fill-current`,t),`Take the lesson`])])],t),`src/page/notes.ts#noLessonView`),Zxe=(e,t,r)=>n([Di(e.ideas)?Bxe(t.keyIdeas,r):r.empty,Wxe(t.chunks,r),Kxe(t.workedExamples,r),qxe(t.traps,r)],`src/page/notes.ts#lessonSectionsView`),Qxe=(e,t,r)=>n(r.article([r.AriaLabelledBy(`notes-title`),r.Class(Bz(`reveal flex flex-col px-5 py-7 sm:px-10 sm:py-10 print:border-0 print:shadow-none`))],[zxe(e,t,r),Hxe(e,r),...C(e.maybeLesson,{onNone:()=>n([Xxe(e,r)],`src/page/notes.ts#onNone~3`),onSome:t=>n(Zxe(e,t,r),`src/page/notes.ts#onSome~3`)}),Jxe(e,mr(e.maybeLesson,e=>n(e.connection,`src/page/notes.ts#anonymous~15`)),r),Yxe(e,r)]),`src/page/notes.ts#readyView`),$xe=e=>n(e.div([e.Role(`status`),e.AriaLabel(`Loading the notes`),e.Class(Bz(`flex flex-col gap-6 px-5 py-7 sm:px-10 sm:py-10`))],[e.div([e.Class(`h-4 w-20 animate-pulse rounded bg-muted`)]),e.div([e.Class(`h-9 w-2/3 animate-pulse rounded-lg bg-muted`)]),e.div([e.Class(`h-16 animate-pulse rounded-xl bg-muted/60`)]),e.div([e.Class(`h-40 animate-pulse rounded-xl bg-muted/60`)]),e.div([e.Class(`h-40 animate-pulse rounded-xl bg-muted/60`)])]),`src/page/notes.ts#loadingView`),eSe=(e,t)=>n(t.div([t.Role(`alert`),t.Class(Bz(`flex flex-col items-start gap-3 p-6`))],[t.p([t.Class(`font-medium`)],[`Couldn't load these notes`]),t.p([t.Class(`text-sm text-muted-foreground`)],[e]),t.button([t.Type(`button`),t.OnClick(e8.ClickedRetry()),t.Class(I(`Outline`,`Small`))],[L(`refresh`,``,t),`Try again`])]),`src/page/notes.ts#failedView`),tSe=(e,t)=>{let r=$6.match(e.load,{Loading:()=>n(b(),`src/page/notes.ts#Loading`),Failed:()=>n(b(),`src/page/notes.ts#Failed`),Ready:({notes:e})=>n(x(e),`src/page/notes.ts#Ready`)});return n(t.nav([t.AriaLabel(`Notes`),t.Class(`flex flex-wrap items-center justify-between gap-2 print:hidden`)],[t.a([t.Href(Oz({goalId:e.goalId})),t.Class(I(`Ghost`,`Small`,`-ml-3 max-w-full text-muted-foreground`))],[L(`arrowLeft`,``,t),t.span([t.Class(`truncate`)],[C(r,{onNone:()=>n(`Back to the map`,`src/page/notes.ts#onNone~4`),onSome:e=>n(e.goalTitle,`src/page/notes.ts#onSome~4`)})])]),C(br(r,e=>n(S(e.maybeLesson),`src/page/notes.ts#anonymous~16`)),{onNone:()=>n(t.empty,`src/page/notes.ts#onNone~5`),onSome:e=>n(t.a([t.Href(kz({goalId:e.goalId,conceptId:e.concept.id})),t.Class(I(`Outline`,`Small`))],[L(`play`,`size-3.5 fill-current`,t),`Open the lesson`]),`src/page/notes.ts#onSome~5`)})]),`src/page/notes.ts#topBarView`)},nSe=qD((e,t)=>n(t.div([t.Class(`mx-auto flex w-full max-w-3xl flex-col gap-4 px-4 pt-6 pb-24 sm:px-5 sm:pt-8`)],[tSe(e,t),$6.match(e.load,{Loading:()=>n($xe(t),`src/page/notes.ts#Loading~2`),Failed:({error:e})=>n(eSe(e,t),`src/page/notes.ts#Failed~2`),Ready:({notes:e,fetchedAt:r})=>n(Qxe(e,r,t),`src/page/notes.ts#Ready~2`)})]),`src/page/notes.ts#anonymous~17`)),rSe=e=>n($6.match(e.load,{Loading:()=>n(`Notes · BaviTutor`,`src/page/notes.ts#Loading~3`),Failed:()=>n(`Notes · BaviTutor`,`src/page/notes.ts#Failed~3`),Ready:({notes:e})=>n(`${e.concept.title} · Notes · BaviTutor`,`src/page/notes.ts#Ready~3`)}),`src/page/notes.ts#pageTitle`),c8=pT({Loading:{},Failed:{error:O},Ready:{view:qL}}),iSe=A({goalId:O,load:c8,maybeDetail:Mb(EL),selfDescription:O,isWorking:Ky,maybeQuiz:Mb(w3),questionShownAt:k,overrides:j(JL),isReviewOpen:Ky,maybeError:Mb(O)}),l8=fT({SucceededFetchDetail:{detail:EL},FailedFetchDetail:{error:O},SucceededPlacementAction:{view:qL},FailedPlacementAction:{error:O},TickedPoll:{},UpdatedSelfDescription:{value:O},ClickedStart:{},ClickedStartFromScratch:{},GotQuizMessage:{message:T3},CompletedMarkQuestionShown:{at:k},ClickedSkip:{},ClickedFinishEarly:{},ClickedToggleConcept:{conceptId:O},ClickedToggleReview:{},ClickedConfirm:{},ClickedRestart:{}}),u8=fT({FinishedPlacement:{}}),d8=e=>n({params:{goalId:nI.make(e)}},`src/page/placement.ts#goalParams`),f8=ef(e=>n(l8.SucceededPlacementAction({view:e}),`src/page/placement.ts#anonymous`)),p8=rf(e=>n(T(l8.FailedPlacementAction({error:QR(e)})),`src/page/placement.ts#anonymous~2`)),aSe=N(`FetchDetail`,{args:{goalId:O},messages:[l8.SucceededFetchDetail,l8.FailedFetchDetail],execute:({goalId:e})=>n(D(function*(){let t=yield*(yield*XR).goals.get(d8(e));return n(l8.SucceededFetchDetail({detail:t}),`src/page/placement.ts#anonymous~3`)}).pipe(rf(e=>n(T(l8.FailedFetchDetail({error:QR(e)})),`src/page/placement.ts#anonymous~4`))),`src/page/placement.ts#execute`)}),m8=N(`FetchPlacement`,{args:{goalId:O},messages:[l8.SucceededPlacementAction,l8.FailedPlacementAction],execute:({goalId:e})=>n(XR.pipe(Yd(t=>n(t.placement.view(d8(e)),`src/page/placement.ts#anonymous~5`)),f8,p8),`src/page/placement.ts#execute~2`)}),oSe=N(`StartPlacement`,{args:{goalId:O,selfDescription:O},messages:[l8.SucceededPlacementAction,l8.FailedPlacementAction],execute:({goalId:e,selfDescription:t})=>n(XR.pipe(Yd(r=>n(r.placement.start({...d8(e),payload:{selfDescription:t}}),`src/page/placement.ts#anonymous~6`)),f8,p8),`src/page/placement.ts#execute~3`)}),sSe=N(`AnswerPlacement`,{args:{goalId:O,questionId:O,response:FI,note:O,shownAt:k},messages:[l8.SucceededPlacementAction,l8.FailedPlacementAction],execute:e=>n(D(function*(){let t=yield*XR,r=yield*hd;return n(yield*t.placement.answer({...d8(e.goalId),payload:{answer:{questionId:OI.make(e.questionId),response:e.response,note:e.note,latencyMs:Math.max(0,r-e.shownAt),hintLevel:0}}}),`src/page/placement.ts#anonymous~7`)}).pipe(f8,p8),`src/page/placement.ts#execute~4`)}),cSe=N(`SkipQuestion`,{args:{goalId:O},messages:[l8.SucceededPlacementAction,l8.FailedPlacementAction],execute:({goalId:e})=>n(XR.pipe(Yd(t=>n(t.placement.skip(d8(e)),`src/page/placement.ts#anonymous~8`)),f8,p8),`src/page/placement.ts#execute~5`)}),lSe=N(`FinishPlacement`,{args:{goalId:O},messages:[l8.SucceededPlacementAction,l8.FailedPlacementAction],execute:({goalId:e})=>n(XR.pipe(Yd(t=>n(t.placement.finish(d8(e)),`src/page/placement.ts#anonymous~9`)),f8,p8),`src/page/placement.ts#execute~6`)}),uSe=N(`ApplyPlacement`,{args:{goalId:O,overrides:j(JL)},messages:[l8.SucceededPlacementAction,l8.FailedPlacementAction],execute:({goalId:e,overrides:t})=>n(XR.pipe(Yd(r=>n(r.placement.apply({...d8(e),payload:{overrides:t}}),`src/page/placement.ts#anonymous~10`)),f8,p8),`src/page/placement.ts#execute~7`)}),dSe=N(`ResetPlacement`,{args:{goalId:O},messages:[l8.SucceededPlacementAction,l8.FailedPlacementAction],execute:({goalId:e})=>n(XR.pipe(Yd(t=>n(t.placement.reset(d8(e)),`src/page/placement.ts#anonymous~11`)),f8,p8),`src/page/placement.ts#execute~8`)}),fSe=N(`MarkQuestionShown`,{messages:[l8.CompletedMarkQuestionShown],execute:hd.pipe(ef(e=>n(l8.CompletedMarkQuestionShown({at:e}),`src/page/placement.ts#anonymous~12`)))}),pSe=e=>n({model:{goalId:e,load:c8.Loading(),maybeDetail:b(),selfDescription:``,isWorking:!1,maybeQuiz:b(),questionShownAt:0,overrides:[],isReviewOpen:!1,maybeError:b()},commands:[m8({goalId:e}),aSe({goalId:e})]},`src/page/placement.ts#init`),mSe=(e,t)=>{let r=P(e,{load:()=>n(c8.Ready({view:t}),`src/page/placement.ts#load`),isWorking:()=>n(!1,`src/page/placement.ts#isWorking`),maybeError:()=>n(b(),`src/page/placement.ts#maybeError`)});return n(Ew(t).pipe(Ow(),Mw(`Asking`,({question:t})=>n(C(e.maybeQuiz,{onNone:()=>n(!1,`src/page/placement.ts#onNone`),onSome:e=>n(e.question.id===t.id,`src/page/placement.ts#onSome`)})?{model:r}:{model:P(r,{maybeQuiz:()=>n(x(D3(t)),`src/page/placement.ts#maybeQuiz`)}),commands:[fSe()]},`src/page/placement.ts#anonymous~13`)),Mw(`Applied`,()=>n({model:P(r,{maybeQuiz:()=>n(b(),`src/page/placement.ts#maybeQuiz~2`)}),outMessage:u8.FinishedPlacement()},`src/page/placement.ts#anonymous~14`)),Pw(()=>n({model:P(r,{maybeQuiz:()=>n(b(),`src/page/placement.ts#maybeQuiz~3`)})},`src/page/placement.ts#anonymous~15`))),`src/page/placement.ts#receiveView`)},hSe=LN({update:F3,read:e=>n(e.maybeQuiz,`src/page/placement.ts#read`),write:(e,t)=>n(P(e,{maybeQuiz:()=>n(x(t),`src/page/placement.ts#maybeQuiz~4`)}),`src/page/placement.ts#write`),toParentMessage:e=>n(l8.GotQuizMessage({message:e}),`src/page/placement.ts#toParentMessage`),foldOutMessage:E3.match({SubmittedAnswer:({response:e,note:t})=>n((r=>n({model:P(r,{isWorking:()=>n(!0,`src/page/placement.ts#isWorking~2`)}),commands:bi(mr(r.maybeQuiz,i=>n(sSe({goalId:r.goalId,questionId:i.question.id,response:e,note:t,shownAt:r.questionShownAt}),`src/page/placement.ts#anonymous~17`)))},`src/page/placement.ts#anonymous~16`)),`src/page/placement.ts#SubmittedAnswer`),ContinuedAfterFeedback:()=>n((e=>n({model:e},`src/page/placement.ts#anonymous~18`)),`src/page/placement.ts#ContinuedAfterFeedback`)})}),gSe=(e,t)=>n(C(e.maybeDetail,{onNone:()=>n(e,`src/page/placement.ts#onNone~2`),onSome:r=>{let{index:i}=GY(r.graph),a=h8(e,t)===`Known`?`Unknown`:`Known`,o=a===`Known`?rz(i,[t]):iz(i,[t]),s=da(e.overrides,e=>n(!o.has(e.conceptId),`src/page/placement.ts#anonymous~19`)),c=w([...o],e=>n(JL.make({conceptId:rI.make(e),choice:a}),`src/page/placement.ts#anonymous~20`));return n(P(e,{overrides:()=>n([...s,...c],`src/page/placement.ts#overrides`)}),`src/page/placement.ts#onSome~2`)}}),`src/page/placement.ts#toggleConcept`),_Se=(e,t)=>n(l8.match(t,{SucceededFetchDetail:({detail:t})=>n({model:P(e,{maybeDetail:()=>n(x(t),`src/page/placement.ts#maybeDetail`)})},`src/page/placement.ts#SucceededFetchDetail`),FailedFetchDetail:({error:t})=>n({model:P(e,{maybeError:()=>n(x(t),`src/page/placement.ts#maybeError~2`)})},`src/page/placement.ts#FailedFetchDetail`),SucceededPlacementAction:({view:t})=>n(mSe(e,t),`src/page/placement.ts#SucceededPlacementAction`),FailedPlacementAction:({error:t})=>n({model:P(e,{isWorking:()=>n(!1,`src/page/placement.ts#isWorking~3`),maybeQuiz:mr(k3),maybeError:()=>n(x(t),`src/page/placement.ts#maybeError~3`),load:e=>n(e._tag===`Loading`?c8.Failed({error:t}):e,`src/page/placement.ts#load~2`)})},`src/page/placement.ts#FailedPlacementAction`),TickedPoll:()=>n({model:e,commands:[m8({goalId:e.goalId})]},`src/page/placement.ts#TickedPoll`),UpdatedSelfDescription:({value:t})=>n({model:P(e,{selfDescription:()=>n(t,`src/page/placement.ts#selfDescription`)})},`src/page/placement.ts#UpdatedSelfDescription`),ClickedStart:()=>n({model:P(e,{isWorking:()=>n(!0,`src/page/placement.ts#isWorking~4`)}),commands:[oSe({goalId:e.goalId,selfDescription:e.selfDescription})]},`src/page/placement.ts#ClickedStart`),ClickedStartFromScratch:()=>n({model:e,outMessage:u8.FinishedPlacement()},`src/page/placement.ts#ClickedStartFromScratch`),GotQuizMessage:({message:t})=>n(hSe(e,t),`src/page/placement.ts#GotQuizMessage`),CompletedMarkQuestionShown:({at:t})=>n({model:P(e,{questionShownAt:()=>n(t,`src/page/placement.ts#questionShownAt`)})},`src/page/placement.ts#CompletedMarkQuestionShown`),ClickedSkip:()=>n({model:P(e,{isWorking:()=>n(!0,`src/page/placement.ts#isWorking~5`)}),commands:[cSe({goalId:e.goalId})]},`src/page/placement.ts#ClickedSkip`),ClickedFinishEarly:()=>n({model:P(e,{isWorking:()=>n(!0,`src/page/placement.ts#isWorking~6`)}),commands:[lSe({goalId:e.goalId})]},`src/page/placement.ts#ClickedFinishEarly`),ClickedToggleConcept:({conceptId:t})=>n({model:gSe(e,t)},`src/page/placement.ts#ClickedToggleConcept`),ClickedToggleReview:()=>n({model:P(e,{isReviewOpen:e=>n(!e,`src/page/placement.ts#isReviewOpen`)})},`src/page/placement.ts#ClickedToggleReview`),ClickedConfirm:()=>n({model:P(e,{isWorking:()=>n(!0,`src/page/placement.ts#isWorking~7`)}),commands:[uSe({goalId:e.goalId,overrides:e.overrides})]},`src/page/placement.ts#ClickedConfirm`),ClickedRestart:()=>n({model:P(e,{isWorking:()=>n(!0,`src/page/placement.ts#isWorking~8`),overrides:()=>n([],`src/page/placement.ts#overrides~2`)}),commands:[dSe({goalId:e.goalId})]},`src/page/placement.ts#ClickedRestart`)}),`src/page/placement.ts#update`),vSe=lA(I3)({read:e=>n(e.maybeQuiz,`src/page/placement.ts#read~2`),toParentMessage:e=>n(l8.GotQuizMessage({message:e}),`src/page/placement.ts#toParentMessage~2`)}),ySe=oA(iA()(e=>n({pollWhilePreparing:e({isPreparing:Ky},{modelToDependencies:e=>n({isPreparing:e.load._tag===`Ready`&&e.load.view._tag===`Preparing`},`src/page/placement.ts#modelToDependencies`),dependenciesToStream:({isPreparing:e})=>n(e?TC(La(3)).pipe(qC(1),zC(()=>n(l8.TickedPoll(),`src/page/placement.ts#anonymous~22`))):kC,`src/page/placement.ts#dependenciesToStream`)})},`src/page/placement.ts#anonymous~21`)),{placementQuizKeyboard:vSe.keyboard}),bSe=e=>n(e.load._tag===`Ready`&&e.load.view._tag===`Summary`?e.load.view.beliefs:[],`src/page/placement.ts#beliefsOf`),h8=(e,t)=>n(C(Xi(e.overrides,e=>n(e.conceptId===t,`src/page/placement.ts#anonymous~23`)),{onSome:e=>n(e.choice===`Known`?`Known`:`ToLearn`,`src/page/placement.ts#onSome~3`),onNone:()=>n(C(Yi(bSe(e),e=>n(e.conceptId===t,`src/page/placement.ts#anonymous~24`)),{onNone:()=>n(`ToLearn`,`src/page/placement.ts#onNone~4`),onSome:e=>n(e.status,`src/page/placement.ts#onSome~4`)}),`src/page/placement.ts#onNone~3`)}),`src/page/placement.ts#effectiveStatus`),xSe=(e,t)=>n(t.div([t.Class(`flex flex-col gap-6`)],[t.div([t.Class(`reveal flex flex-col gap-2 text-center`)],[t.h1([t.Class(`text-3xl font-semibold tracking-tight`)],[`Where should you start?`]),t.p([t.Class(`mx-auto max-w-xl text-muted-foreground`)],[`A short quiz finds what you know, so you can skip it.`])]),t.div([t.Class(Bz(`reveal stagger-1 flex flex-col gap-4 p-6`))],[t.div([t.Class(`flex items-start gap-3`)],[t.span([t.Class(`flex size-10 shrink-0 items-center justify-center rounded-xl bg-primary/12 text-primary`)],[L(`target`,`size-5`,t)]),t.div([],[t.p([t.Class(`font-semibold`)],[`Find my starting point`]),t.p([t.Class(`text-sm text-muted-foreground`)],[`About 6 to 10 questions. "I don't know" is fine.`])])]),t.textarea([t.Value(e.selfDescription),t.Rows(2),t.Placeholder(`What do you already know? Like "algebra in school, rusty on equations"`),t.OnInput(e=>n(l8.UpdatedSelfDescription({value:e}),`src/page/placement.ts#anonymous~25`)),t.Class(Vz(`resize-none text-sm`))]),t.div([t.Class(`flex justify-end`)],[t.button([t.Type(`button`),t.Disabled(e.isWorking),t.OnClick(l8.ClickedStart()),t.Class(I(`Primary`,`Large`))],[e.isWorking?L(`refresh`,`spinner`,t):t.empty,`Start the quiz`,L(`arrowRight`,``,t)])])]),t.button([t.Type(`button`),t.OnClick(l8.ClickedStartFromScratch()),t.Class(`reveal stagger-2 press mx-auto text-sm text-muted-foreground underline-offset-4 hover:text-foreground hover:underline`)],[`Skip and start from scratch`])]),`src/page/placement.ts#choiceView`),SSe=(e,t,r)=>n(r.div([r.Class(Bz(`flex flex-col items-center gap-4 p-10 text-center`))],[r.p([r.Class(`shimmer-text text-lg font-medium`)],[`Writing your questions…`]),r.div([r.Class(`h-1.5 w-64 overflow-hidden rounded-full bg-muted`)],[r.div([r.Class(`h-full rounded-full bg-primary transition-[width] duration-700`),r.Style({width:`${t===0?0:Math.round(e/t*100)}%`})])]),r.p([r.Class(`text-sm text-muted-foreground`)],[`${e} of ${t} ready`])]),`src/page/placement.ts#preparingView`),CSe=(e,t,r)=>{let i=t.number-1,a=i+t.questionsLeft,o=a===0?0:Math.round(i/a*100);return n(r.div([r.Class(`flex flex-col gap-4`)],[r.div([r.Class(`flex flex-col gap-2`)],[r.div([r.Class(`flex items-center justify-between text-sm`)],[r.span([r.Class(`font-medium`)],[`${t.conceptTitle} · Question ${t.number}`]),r.span([r.Class(`text-muted-foreground`)],[`about ${t.questionsLeft} left`])]),r.div([r.Class(`h-1 overflow-hidden rounded-full bg-muted`)],[r.div([r.Class(`h-full rounded-full bg-primary transition-[width] duration-500`),r.Style({width:`${o}%`})])]),t.isWarmup?r.p([r.Class(`text-sm text-muted-foreground`)],[`Warm-up. No timer. You'll see the answers at the end.`]):r.empty]),C(e.maybeQuiz,{onNone:()=>n(r.empty,`src/page/placement.ts#onNone~5`),onSome:e=>n(r.submodel({slotId:`placement-${e.question.id}`,model:e,view:V3(`Next`),toParentMessage:e=>n(l8.GotQuizMessage({message:e}),`src/page/placement.ts#toParentMessage~3`)}),`src/page/placement.ts#onSome~5`)}),r.div([r.Class(`flex items-center justify-between`)],[r.button([r.Type(`button`),r.Disabled(e.isWorking),r.OnClick(l8.ClickedSkip()),r.Class(I(`Ghost`,`Small`,`text-muted-foreground`))],[`Skip this one`]),t.canFinishEarly?r.button([r.Type(`button`),r.Disabled(e.isWorking),r.OnClick(l8.ClickedFinishEarly()),r.Class(I(`Outline`,`Small`))],[`Finish now`]):r.empty])]),`src/page/placement.ts#askingView`)},wSe={Known:{title:`You know these`,hint:`We'll skip these. Click one to move it.`,chip:`border-success/40 bg-success/8 hover:border-success`,dot:`bg-success`},QuickCheck:{title:`Quick check first`,hint:`A 1-minute check. Pass it to skip.`,chip:`border-amber-500/40 bg-amber-500/8 hover:border-amber-500`,dot:`bg-amber-500`},ToLearn:{title:`To learn`,hint:`Full lessons. Click one you know.`,chip:`border-border bg-card hover:border-primary/50`,dot:`bg-muted-foreground/50`}},TSe=(e,t,r)=>{let i=fr(e.maybeDetail),a=e=>n(i?.graph.concepts.find(t=>n(t.id===e,`src/page/placement.ts#anonymous~26`))?.title??e,`src/page/placement.ts#titleOf`),o=e=>n(i?.graph.concepts.find(t=>n(t.id===e,`src/page/placement.ts#anonymous~27`))?.depth??0,`src/page/placement.ts#depthOf`),s=[...t.beliefs].sort((e,t)=>n(o(e.conceptId)-o(t.conceptId),`src/page/placement.ts#anonymous~28`)),c=t=>n(da(s,r=>n(h8(e,r.conceptId)===t,`src/page/placement.ts#anonymous~29`)),`src/page/placement.ts#byStatus`),l=c(`Known`),u=c(`QuickCheck`),d=c(`ToLearn`);return n(r.div([r.Class(`flex flex-col gap-6`)],[r.div([r.Class(`reveal flex flex-col gap-2`)],[r.h1([r.Class(`text-3xl font-semibold tracking-tight`)],[`Here's where you stand`]),r.p([r.Class(`text-muted-foreground`)],[`You can skip ${l.length} of ${s.length} concepts. Your path has ${d.length+u.length} lessons. Fix anything that looks wrong.`])]),r.div([r.Class(`grid gap-4 lg:grid-cols-3`)],w([`Known`,`QuickCheck`,`ToLearn`],e=>{let t=wSe[e],i=c(e);return n(r.keyed(`section`)(e,[r.Class(Bz(`reveal flex flex-col gap-3 p-4`))],[r.div([r.Class(`flex items-center justify-between`)],[r.h2([r.Class(`flex items-center gap-2 font-semibold`)],[r.span([r.Class(F(`size-2.5 rounded-full`,t.dot))]),t.title]),r.span([r.Class(zz(`Neutral`))],[`${i.length}`])]),r.p([r.Class(`text-xs text-muted-foreground`)],[t.hint]),r.div([r.Class(`flex max-h-80 flex-wrap content-start gap-1.5 overflow-y-auto pr-1`)],w(i,e=>n(r.keyed(`button`)(e.conceptId,[r.Type(`button`),r.Title(`${Math.round(e.pKnown*100)}% likely known${e.wasAsked?`, you answered it`:``}`),r.OnClick(l8.ClickedToggleConcept({conceptId:e.conceptId})),r.Class(F(`press rounded-md border px-2 py-1 text-left text-xs transition-colors`,t.chip))],[e.wasAsked?`● `:``,a(e.conceptId)]),`src/page/placement.ts#anonymous~31`)))]),`src/page/placement.ts#anonymous~30`)})),r.div([r.Class(Bz(`p-4`))],[r.button([r.Type(`button`),r.OnClick(l8.ClickedToggleReview()),r.Class(`flex w-full items-center justify-between text-sm font-medium`)],[`See your ${t.answers.length} answers`,L(e.isReviewOpen?`minus`:`plus`,`size-4`,r)]),e.isReviewOpen?r.ol([r.Class(`mt-4 flex flex-col gap-4`)],w(t.answers,(e,t)=>n(r.keyed(`li`)(`${t}`,[r.Class(`flex flex-col gap-1.5 border-t pt-4 text-sm`)],[r.div([r.Class(`flex items-center gap-2`)],[r.span([r.Class(zz(e.verdict===`Correct`?`Success`:e.verdict===`DontKnow`||e.verdict===`Skipped`?`Neutral`:`Destructive`))],[e.verdict===`DontKnow`?`Didn't know`:e.verdict]),r.span([r.Class(`text-muted-foreground`)],[a(e.conceptId)])]),Z4(e.prompt,`prose-sm`,r),Z4(`**Answer:** ${e.correctAnswer}`,`prose-sm`,r),Z4(e.explanation,`prose-sm text-muted-foreground`,r)]),`src/page/placement.ts#anonymous~32`))):r.empty]),r.div([r.Class(`flex items-center justify-between gap-3`)],[r.button([r.Type(`button`),r.Disabled(e.isWorking),r.OnClick(l8.ClickedRestart()),r.Class(I(`Ghost`,`Medium`,`text-muted-foreground`))],[L(`refresh`,``,r),`Retake`]),r.button([r.Type(`button`),r.Disabled(e.isWorking),r.OnClick(l8.ClickedConfirm()),r.Class(I(`Primary`,`Large`))],[e.isWorking?L(`refresh`,`spinner`,r):L(`check`,``,r),`Build my path`])])]),`src/page/placement.ts#summaryView`)},ESe=qD((e,t)=>n(t.div([t.Class(`mx-auto flex w-full max-w-4xl flex-col gap-5 px-5 pt-6 pb-24`)],[t.a([t.Href(Oz({goalId:e.goalId})),t.Class(`inline-flex items-center gap-1.5 self-start text-sm text-muted-foreground hover:text-foreground`)],[L(`arrowLeft`,`size-4`,t),C(e.maybeDetail,{onNone:()=>n(`Map`,`src/page/placement.ts#onNone~6`),onSome:e=>n(e.goal.title,`src/page/placement.ts#onSome~6`)})]),C(e.maybeError,{onNone:()=>n(t.empty,`src/page/placement.ts#onNone~7`),onSome:e=>n(t.p([t.Role(`alert`),t.Class(`text-sm text-destructive`)],[e]),`src/page/placement.ts#onSome~7`)}),c8.match(e.load,{Loading:()=>n(t.div([t.Class(`h-64 animate-pulse rounded-xl bg-muted/60`)]),`src/page/placement.ts#Loading`),Failed:({error:e})=>n(t.p([t.Class(`text-sm text-destructive`)],[e]),`src/page/placement.ts#Failed`),Ready:({view:r})=>n(Ew(r).pipe(Ow(),Mw(`NotStarted`,()=>n(t.div([t.Class(`mx-auto w-full max-w-2xl`)],[xSe(e,t)]),`src/page/placement.ts#anonymous~34`)),Mw(`Preparing`,({ready:e,total:r})=>n(SSe(e,r,t),`src/page/placement.ts#anonymous~35`)),Mw(`Asking`,r=>n(t.div([t.Class(`mx-auto w-full max-w-2xl`)],[CSe(e,r,t)]),`src/page/placement.ts#anonymous~36`)),Mw(`Summary`,r=>n(TSe(e,r,t),`src/page/placement.ts#anonymous~37`)),Mw(`Applied`,()=>n(t.p([t.Class(`shimmer-text`)],[`Building your path…`]),`src/page/placement.ts#anonymous~38`)),Fw),`src/page/placement.ts#Ready`)})]),`src/page/placement.ts#anonymous~33`)),g8=pT({Loading:{},Failed:{error:O},Ready:{report:aR}}),DSe=A({load:g8}),_8=fT({SucceededFetchReport:{report:aR},FailedFetchReport:{error:O},ClickedRetry:{}}),v8=N(`FetchReport`,{messages:[_8.SucceededFetchReport,_8.FailedFetchReport],execute:D(function*(){let e=yield*(yield*XR).progress.report();return n(_8.SucceededFetchReport({report:e}),`src/page/progress.ts#anonymous`)}).pipe(rf(e=>n(T(_8.FailedFetchReport({error:QR(e)})),`src/page/progress.ts#anonymous~2`)))}),OSe=()=>n({model:{load:g8.Loading()},commands:[v8()]},`src/page/progress.ts#init`),kSe=(e,t)=>n(_8.match(t,{SucceededFetchReport:({report:t})=>n({model:P(e,{load:()=>n(g8.Ready({report:t}),`src/page/progress.ts#load`)})},`src/page/progress.ts#SucceededFetchReport`),FailedFetchReport:({error:t})=>n({model:P(e,{load:()=>n(g8.Failed({error:t}),`src/page/progress.ts#load~2`)})},`src/page/progress.ts#FailedFetchReport`),ClickedRetry:()=>n({model:P(e,{load:()=>n(g8.Loading(),`src/page/progress.ts#load~3`)}),commands:[v8()]},`src/page/progress.ts#ClickedRetry`)}),`src/page/progress.ts#update`),y8=10,ASe=5,b8={strongest:`bg-[oklch(0.52_0.16_40)] dark:bg-[oklch(0.82_0.14_60)]`,strong:`bg-primary`,light:`bg-[oklch(0.78_0.12_55)] dark:bg-[oklch(0.55_0.13_45)]`,gray:`bg-[oklch(0.72_0.015_70)] dark:bg-[oklch(0.5_0.012_70)]`,track:`bg-[oklch(0.93_0.006_75)] dark:bg-[oklch(0.28_0.008_60)]`},x8=[{part:`durable`,label:`Durable`,swatch:b8.strongest},{part:`mastered`,label:`Mastered`,swatch:b8.strong},{part:`learning`,label:`Learning`,swatch:b8.light},{part:`knownBefore`,label:`Known before`,swatch:b8.gray},{part:`notYet`,label:`Not yet`,swatch:b8.track}],S8=[{part:`durable`,label:`Durable`,swatch:b8.strongest},{part:`held`,label:`Held`,swatch:b8.strong},{part:`learning`,label:`Learning`,swatch:b8.light},{part:`notAsked`,label:`Not asked yet`,swatch:b8.track}],C8=e=>n({durable:e.durable,held:e.held-e.durable,learning:e.carded-e.held,notAsked:e.total-e.carded},`src/page/progress.ts#ideaParts`),jSe=[{part:`due`,label:`Concepts`,swatch:b8.strong},{part:`flashcards`,label:`Idea cards`,swatch:b8.light}],w8=[`bg-[oklch(0.93_0.006_75)] dark:bg-[oklch(0.28_0.008_60)]`,`bg-[oklch(0.85_0.09_60)] dark:bg-[oklch(0.42_0.09_45)]`,`bg-[oklch(0.76_0.13_52)] dark:bg-[oklch(0.53_0.12_45)]`,`bg-[oklch(0.65_0.18_43)] dark:bg-[oklch(0.65_0.16_47)]`,`bg-[oklch(0.52_0.16_38)] dark:bg-[oklch(0.8_0.15_58)]`],T8=e=>n(`${Math.round(e*100)}%`,`src/page/progress.ts#percent`),E8=(e,t)=>n(t===0?0:e/t,`src/page/progress.ts#ratio`),D8=(e,t,r=`${t}s`)=>n(`${e} ${e===1?t:r}`,`src/page/progress.ts#plural`),MSe=e=>n(new Date(`${e}T00:00:00Z`),`src/page/progress.ts#calendarDate`),O8=(e,t)=>n(MSe(e).toLocaleDateString(`en-US`,{...t,timeZone:`UTC`}),`src/page/progress.ts#formatDate`),k8=e=>n(O8(e,{weekday:`short`,month:`short`,day:`numeric`}),`src/page/progress.ts#longDate`),A8=(e,t,r,i,a,o)=>n(a.section([a.AriaLabelledBy(`${e}-title`),a.Class(Bz(F(`flex flex-col gap-6 p-5 sm:p-6`,o)))],[a.div([a.Class(`flex flex-col gap-1`)],[a.h2([a.Id(`${e}-title`),a.Class(`text-base font-semibold tracking-tight`)],[t]),a.p([a.Class(`text-sm text-muted-foreground`)],[r])]),...i]),`src/page/progress.ts#sectionView`),j8=(e,t,r,i)=>n(i.div([i.Class(`flex flex-col gap-0.5`)],[i.dt([i.Class(`text-xs text-muted-foreground`)],[e]),i.dd([i.Class(`text-2xl font-semibold tracking-tight`)],[t]),C(r,{onNone:()=>n(i.empty,`src/page/progress.ts#onNone`),onSome:e=>n(i.dd([i.Class(`text-xs text-muted-foreground`)],[e]),`src/page/progress.ts#onSome`)})]),`src/page/progress.ts#statView`),M8=(e,t)=>n(t.p([t.Class(`rounded-lg border border-dashed px-4 py-6 text-center text-sm text-muted-foreground`)],[e]),`src/page/progress.ts#emptyNote`),N8=(e,t)=>n(t.ul([t.AriaLabel(`Legend`),t.Class(`flex flex-wrap items-center gap-x-4 gap-y-1.5 text-xs text-muted-foreground`)],w(e,({label:e,swatch:r})=>n(t.li([t.Class(`flex items-center gap-1.5`)],[t.span([t.Class(F(`size-2.5 rounded-[3px]`,r))]),e]),`src/page/progress.ts#anonymous~3`))),`src/page/progress.ts#legendView`),P8=(e,t,r,i,a,o,s=`h-2.5`)=>n(o.div([o.Role(`img`),o.AriaLabel(`${a}: ${w(e,({part:e,label:r})=>n(`${t[e]} ${r.toLowerCase()}`,`src/page/progress.ts#anonymous~4`)).join(`, `)}`),o.Class(F(`flex w-full gap-[2px]`,s))],w(da(e,({part:e})=>n(t[e]>0,`src/page/progress.ts#anonymous~5`)),({part:e,label:a,swatch:s})=>n(o.div([o.Title(`${a}: ${t[e]} of ${D8(r,i)}`),o.Class(F(`h-full min-w-1 rounded-[3px]`,s)),o.Style({flex:`${t[e]} 1 0%`})]),`src/page/progress.ts#anonymous~6`))),`src/page/progress.ts#stackedBar`),NSe=(e,t)=>{let r=e.breakdown.durable+e.breakdown.mastered;return n(t.keyed(`li`)(e.goalId,[t.Class(`flex flex-col gap-2`)],[t.div([t.Class(`flex flex-col gap-0.5 text-sm sm:flex-row sm:items-baseline sm:justify-between sm:gap-4`)],[t.a([t.Href(Oz({goalId:e.goalId})),t.Class(`group inline-flex min-w-0 items-center gap-1 font-medium hover:text-primary`)],[t.span([t.Class(`truncate`)],[e.title]),L(`arrowRight`,`size-3.5 shrink-0 opacity-0 transition-opacity group-hover:opacity-100`,t)]),t.span([t.Class(`text-xs text-muted-foreground tabular-nums sm:shrink-0`)],[`${r} of ${D8(e.conceptCount,`concept`)} mastered`,e.breakdown.learning>0?` · ${e.breakdown.learning} learning`:``])]),P8(x8,e.breakdown,e.conceptCount,`concept`,e.title,t)]),`src/page/progress.ts#goalRow`)},PSe=e=>{let t=e.durable+e.mastered;return t===0&&e.learning===0?n(`None yet. A concept counts once you recall it on two later days.`,`src/page/progress.ts#headlineSentence`):n(t===0?`None yet. ${D8(e.learning,`concept is`,`concepts are`)} on the way.`:e.durable===0?`Recalled on two later days.`:`Recalled on two later days. ${e.durable} will last a month without review.`,`src/page/progress.ts#headlineSentence`)},FSe=(e,t,r)=>n(A8(`knowledge`,`Durable knowledge`,`What you still remember weeks later.`,[r.div([r.Class(`flex flex-col gap-6 lg:flex-row lg:items-end`)],[r.div([r.Class(`flex flex-1 items-end gap-4`)],[r.p([r.Class(`text-6xl leading-none font-semibold tracking-tight`)],[`${e.durable+e.mastered}`]),r.p([r.Class(`max-w-sm pb-1 text-sm text-muted-foreground`)],[r.span([r.Class(`block font-medium text-foreground`)],[e.durable+e.mastered===1?`concept mastered`:`concepts mastered`]),PSe(e)])]),r.dl([r.Class(`grid grid-cols-3 gap-6 lg:gap-8`)],[j8(`Durable`,`${e.durable}`,b(),r),j8(`Learning`,`${e.learning}`,b(),r),j8(`Known before`,`${e.knownBefore}`,b(),r)])]),xi(t,{onEmpty:()=>n(r.p([r.Class(`text-sm text-muted-foreground`)],[`No subjects yet. `,r.a([r.Href(Dz()),r.Class(`font-medium text-primary`)],[`Start one`])]),`src/page/progress.ts#onEmpty`),onNonEmpty:e=>n(r.div([r.Class(`flex flex-col gap-4 border-t pt-5`)],[N8(x8,r),r.ul([r.AriaLabel(`By subject`),r.Class(`flex flex-col gap-5`)],w(e,e=>n(NSe(e,r),`src/page/progress.ts#anonymous~7`)))]),`src/page/progress.ts#onNonEmpty`)})],r),`src/page/progress.ts#knowledgeView`),ISe=e=>n(ea(da(e,e=>n(e.ideas.carded>0,`src/page/progress.ts#anonymous~8`)),ir(rr,e=>n(E8(e.ideas.held,e.ideas.total),`src/page/progress.ts#anonymous~9`))),`src/page/progress.ts#weakestFirst`),LSe=(e,t)=>n(t.keyed(`li`)(`not-asked`,[t.Class(`py-3 text-sm text-muted-foreground`)],[`Not asked yet: ${D8(e,`more lesson`)}`]),`src/page/progress.ts#notAskedRow`),RSe=(e,t,r)=>n(r.keyed(`li`)(t.conceptId,[r.Class(`flex flex-col gap-1.5 py-3`)],[r.div([r.Class(`flex items-baseline justify-between gap-4 text-sm`)],[r.a([r.Href(Az({goalId:e,conceptId:t.conceptId})),r.Class(`min-w-0 truncate hover:text-primary`)],[t.title]),r.span([r.Class(`shrink-0 text-xs text-muted-foreground tabular-nums`)],[`${t.ideas.held} of ${t.ideas.total} held`])]),P8(S8,C8(t.ideas),t.ideas.total,`idea`,t.title,r,`h-1.5`)]),`src/page/progress.ts#lessonIdeasRow`),F8=(e,t)=>n(t.details([t.Class(`group`)],[t.summary([t.Class(`flex w-fit cursor-pointer list-none items-center gap-1.5 text-sm font-medium text-muted-foreground select-none hover:text-foreground [&::-webkit-details-marker]:hidden`)],[L(`chevronDown`,`size-4 shrink-0 -rotate-90 transition-transform group-open:rotate-0`,t),`${D8(e.lessons.length,`lesson`)}, weakest first`]),t.ul([t.AriaLabel(`Lessons in ${e.title}`),t.Class(`mt-2 flex flex-col divide-y`)],[...w(ISe(e.lessons),r=>n(RSe(e.goalId,r,t),`src/page/progress.ts#anonymous~10`)),...xi(da(e.lessons,e=>n(e.ideas.carded===0,`src/page/progress.ts#anonymous~11`)),{onEmpty:()=>n([],`src/page/progress.ts#onEmpty~2`),onNonEmpty:e=>n([LSe(e.length,t)],`src/page/progress.ts#onNonEmpty~2`)})])]),`src/page/progress.ts#lessonsDisclosure`),zSe=(e,t)=>n(t.keyed(`li`)(e.goalId,[t.Class(`flex flex-col gap-2`)],[t.div([t.Class(`flex flex-col gap-0.5 text-sm sm:flex-row sm:items-baseline sm:justify-between sm:gap-4`)],[t.a([t.Href(Oz({goalId:e.goalId})),t.Class(`group inline-flex min-w-0 items-center gap-1 font-medium hover:text-primary`)],[t.span([t.Class(`truncate`)],[e.title]),L(`arrowRight`,`size-3.5 shrink-0 opacity-0 transition-opacity group-hover:opacity-100`,t)]),t.span([t.Class(`text-xs text-muted-foreground tabular-nums sm:shrink-0`)],[`${e.ideas.recallableNow} of ${D8(e.ideas.total,`idea`)} remembered`])]),P8(S8,C8(e.ideas),e.ideas.total,`idea`,e.title,t),F8(e,t)]),`src/page/progress.ts#goalIdeasRow`),BSe=e=>e.carded===0?n(`None asked yet. Each lesson ends with a card for each idea.`,`src/page/progress.ts#ideasSentence`):e.recallableNow===0?n(`None right now. A review brings them back.`,`src/page/progress.ts#ideasSentence`):n(e.durable===0?`You can recall these right now.`:`You can recall these right now. ${e.durable} will last 3 weeks without review.`,`src/page/progress.ts#ideasSentence`),VSe=(e,t)=>{let r=C8(e.totals);return n(A8(`ideas`,`Ideas`,`Each idea in your lessons has its own card.`,[t.div([t.Class(`flex flex-col gap-6 lg:flex-row lg:items-end`)],[t.div([t.Class(`flex flex-1 items-end gap-4`)],[t.p([t.Class(`text-6xl leading-none font-semibold tracking-tight`)],[`${e.totals.recallableNow}`]),t.p([t.Class(`max-w-sm pb-1 text-sm text-muted-foreground`)],[t.span([t.Class(`block font-medium text-foreground`)],[`of ${D8(e.totals.total,`idea`)}`]),BSe(e.totals)])]),t.dl([t.Class(`grid grid-cols-3 gap-6 lg:gap-8`)],[j8(`Durable`,`${r.durable}`,x(`3 weeks or more`),t),j8(`Learning`,`${r.learning}`,x(`under a week`),t),j8(`Not asked yet`,`${r.notAsked}`,b(),t)])]),t.div([t.Class(`flex flex-col gap-4 border-t pt-5`)],[N8(S8,t),xi(e.goals,{onEmpty:()=>n(t.empty,`src/page/progress.ts#onEmpty~3`),onNonEmpty:i=>n(i.length===1?t.div([t.Class(`flex flex-col gap-3`)],[P8(S8,r,e.totals.total,`idea`,`All ideas`,t),F8(Fi(i),t)]):t.ul([t.AriaLabel(`Ideas by subject`),t.Class(`flex flex-col gap-5`)],w(i,e=>n(zSe(e,t),`src/page/progress.ts#anonymous~12`))),`src/page/progress.ts#onNonEmpty~3`)})])],t),`src/page/progress.ts#ideasView`)},I8=(e,t)=>n(sr(Mi(e.projection,t),()=>n(0,`src/page/progress.ts#anonymous~13`)),`src/page/progress.ts#projectionAt`),HSe=e=>n(Math.min(.8,Math.max(0,Math.floor((Math.min(e.targetRetention,...e.projection)-.05)*10)/10)),`src/page/progress.ts#projectionFloor`),L8=(e,t,r,i)=>n(i.line([i.X1(`0`),i.X2(`${t}`),i.Y1(`${e}`),i.Y2(`${e}`),i.Attribute(`vector-effect`,`non-scaling-stroke`),i.StrokeWidth(`1`),i.Class(r)]),`src/page/progress.ts#hairline`),R8=(e,t,r)=>n(r.span([r.Class(`absolute left-full ml-2 -translate-y-1/2 text-[11px] whitespace-nowrap text-muted-foreground tabular-nums`),r.Style({top:`${e}%`})],[t]),`src/page/progress.ts#axisLabel`),USe=(e,t)=>{let r=Math.max(1,e.projection.length-1),i=HSe(e),a=e=>n((1-e)/(1-i)*100,`src/page/progress.ts#toY`),o=w(e.projection,(e,t)=>n(`${t},${a(e)}`,`src/page/progress.ts#anonymous~14`)),s=da([0,7,r],t=>n(t<e.projection.length,`src/page/progress.ts#anonymous~15`)),c=a(e.targetRetention);return n(t.figure([t.Class(`flex flex-col gap-2`)],[t.div([t.AriaHidden(!0),t.Class(`relative mr-20 h-36`)],[t.svg([t.ViewBox(`0 0 ${r} 100`),t.PreserveAspectRatio(`none`),t.Class(`absolute inset-0 size-full overflow-visible`)],[L8(0,r,`stroke-border`,t),L8(100,r,`stroke-border`,t),L8(c,r,`stroke-muted-foreground/60`,t),t.polyline([t.Points(o.join(` `)),t.Fill(`none`),t.StrokeWidth(`2`),t.StrokeLinejoin(`round`),t.StrokeLinecap(`round`),t.Attribute(`vector-effect`,`non-scaling-stroke`),t.Class(`stroke-primary`)])]),R8(0,`100%`,t),R8(c,`${T8(e.targetRetention)} target`,t),R8(100,T8(i),t),...w(s,i=>n(t.span([t.Class(`absolute size-2.5 -translate-1/2 rounded-full bg-primary ring-2 ring-card`),t.Style({left:`${i/r*100}%`,top:`${a(I8(e,i))}%`})]),`src/page/progress.ts#anonymous~16`))]),t.div([t.AriaHidden(!0),t.Class(`relative mr-20 h-4 text-[11px] text-muted-foreground tabular-nums`)],w([{day:0,label:`Today`},{day:7,label:`1 week`},{day:14,label:`2 weeks`},{day:r,label:`${r} days`}],({day:e,label:i})=>n(t.span([t.Class(F(`absolute whitespace-nowrap`,e===0?``:e===r?`-translate-x-full`:`-translate-x-1/2`)),t.Style({left:`${e/r*100}%`})],[i]),`src/page/progress.ts#anonymous~17`))),t.figcaption([t.Class(`sr-only`)],[`Average predicted recall if you stop reviewing: ${T8(I8(e,0))} today, ${T8(I8(e,7))} in a week, ${T8(I8(e,14))} in two weeks, ${T8(I8(e,r))} in ${r} days. Target ${T8(e.targetRetention)}.`])]),`src/page/progress.ts#projectionChart`)},WSe=(e,t,r)=>{let{reviewed:i,remembered:a,windowDays:o}=e,s=E8(a,i),c=T8(t),l=`${a} of ${D8(i,r.unit)} in the last ${o} days.`;return i<y8?n(`${l} Too few to compare with the ${c} target yet.`,`src/page/progress.ts#retentionSentence`):s>=t+.05?n(`${l} Above the ${c} target. Your reviews are sticking.`,`src/page/progress.ts#retentionSentence`):s>=t-.05?n(`${l} Right on the ${c} target.`,`src/page/progress.ts#retentionSentence`):n(`${l} Below the ${c} target. Review on the day things are due.`,`src/page/progress.ts#retentionSentence`)},z8=(e,t,r,i)=>{let{reviewed:a,remembered:o}=e,s=a>=y8,c=E8(o,a),l=C(r.maybeLabel,{onNone:()=>n(``,`src/page/progress.ts#onNone~2`),onSome:e=>n(`${e}: `,`src/page/progress.ts#onSome~2`)});return n(i.div([i.Class(`flex flex-col gap-4`)],[C(r.maybeLabel,{onNone:()=>n(i.empty,`src/page/progress.ts#onNone~3`),onSome:e=>n(i.h4([i.Class(`-mb-2 text-xs font-medium text-muted-foreground`)],[e]),`src/page/progress.ts#onSome~3`)}),a===0?M8(`No ${r.unit}s in the last ${e.windowDays} days yet.`,i):i.div([i.Class(`flex flex-col gap-4`)],[i.p([i.Class(F(`font-semibold tracking-tight`,S(r.maybeLabel)?`text-3xl`:`text-4xl`))],[s?T8(c):`${o} of ${a}`,i.span([i.Class(`ml-2 text-sm font-normal tracking-normal text-muted-foreground`)],[s?`remembered`:`remembered so far`])]),s?i.div([i.Role(`img`),i.AriaLabel(`${l}${T8(c)} remembered against a ${T8(t)} target`),i.Class(`relative pb-5`)],[i.div([i.Class(`h-2 overflow-hidden rounded-full bg-muted`)],[i.div([i.Class(`h-full rounded-full bg-primary`),i.Style({width:T8(c)})])]),i.span([i.Class(`absolute -top-1 h-4 w-px -translate-x-1/2 bg-foreground/70`),i.Style({left:T8(t)})]),i.span([i.Class(`absolute top-4 -translate-x-1/2 text-[11px] whitespace-nowrap text-muted-foreground`),i.Style({left:T8(t)})],[`${T8(t)} target`])]):i.empty,i.p([i.Class(`text-sm text-muted-foreground`)],[WSe(e,t,r)])])]),`src/page/progress.ts#recallSampleView`)},GSe=(e,t)=>n(t.div([t.Class(`flex flex-col gap-4`)],[t.h3([t.Class(`text-sm font-medium`)],[`Actual recall`]),...e.ideaRetention.reviewed===0?[z8(e.retention,e.targetRetention,{unit:`review`,maybeLabel:b()},t)]:[z8(e.retention,e.targetRetention,{unit:`review`,maybeLabel:x(`Concepts`)},t),t.div([t.Class(`border-t pt-4`)],[z8(e.ideaRetention,e.targetRetention,{unit:`card`,maybeLabel:x(`Idea cards`)},t)])]]),`src/page/progress.ts#retentionView`),KSe=(e,t)=>n(A8(`memory`,`Memory health`,`How likely you are to remember what you studied.`,[e.cardCount===0?M8(`Nothing yet. Finish a lesson to start.`,t):t.div([t.Class(`grid gap-8 lg:grid-cols-[3fr_2fr] lg:gap-10`)],[t.div([t.Class(`flex flex-col gap-4`)],[t.h3([t.Class(`text-sm font-medium`)],[`Predicted recall`]),t.dl([t.Class(`grid grid-cols-3 gap-4`)],[j8(`Right now`,T8(I8(e,0)),b(),t),j8(`In 7 days`,T8(I8(e,7)),x(`without reviews`),t),j8(`In 30 days`,T8(I8(e,30)),x(`without reviews`),t)]),USe(e,t),t.p([t.Class(`text-xs text-muted-foreground`)],[`Average of ${D8(e.cardCount,`concept`)}. Each review lifts recall back up.`])]),t.div([t.Class(`border-t pt-6 lg:border-t-0 lg:border-l lg:pt-0 lg:pl-10`)],[GSe(e,t)])])],t),`src/page/progress.ts#memoryView`),qSe=(e,t)=>n(e===0?0:Math.min(4,Math.max(1,Math.ceil(e/t*4))),`src/page/progress.ts#heatLevel`),B8=e=>n(e.lessons+e.reviews,`src/page/progress.ts#dayTotal`),V8=e=>n(B8(e)===0?`${k8(e.date)}: nothing`:`${k8(e.date)}: ${[e.lessons>0?D8(e.lessons,`lesson`):``,e.reviews>0?D8(e.reviews,`review`):``].filter(e=>n(e.length>0,`src/page/progress.ts#anonymous~18`)).join(`, `)}`,`src/page/progress.ts#dayDescription`),JSe=e=>{let t=t=>n(C(gr(Mi(e,t),e=>n(Pi(e),`src/page/progress.ts#anonymous~19`)),{onNone:()=>n(``,`src/page/progress.ts#onNone~4`),onSome:e=>n(O8(e.date,{month:`short`}),`src/page/progress.ts#onSome~4`)}),`src/page/progress.ts#monthOf`);return n(w(e,(e,r)=>{let i=t(r),a=r===0||i!==t(r-1),o=r===0&&t(1)!==i;return n(a&&!o?i:``,`src/page/progress.ts#anonymous~20`)}),`src/page/progress.ts#monthLabels`)},YSe=(e,t)=>{let r=Math.max(1,...w(e.days,B8)),i=aa(e.days,7),a=Ii(e.days),o=da(e.days,e=>n(B8(e)>0,`src/page/progress.ts#anonymous~21`));return n(t.figure([t.Class(`flex flex-col gap-2`)],[t.div([t.AriaHidden(!0),t.Class(`flex gap-2`)],[t.div([t.Class(`mt-6 grid grid-rows-7 gap-1 text-[10px] leading-5 text-muted-foreground`)],w([``,`Mon`,``,`Wed`,``,`Fri`,``],e=>n(t.span([t.Class(`h-5`)],[e]),`src/page/progress.ts#anonymous~22`))),t.div([t.Class(`flex flex-col gap-1`)],[t.div([t.Class(`grid auto-cols-[20px] grid-flow-col gap-1 text-[10px] leading-5 text-muted-foreground`)],w(JSe(i),e=>n(t.span([t.Class(`overflow-visible whitespace-nowrap`)],[e]),`src/page/progress.ts#anonymous~23`))),t.div([t.Class(`grid auto-cols-[20px] grid-flow-col grid-rows-7 gap-1`)],w(e.days,e=>n(t.div([t.Title(V8(e)),t.Class(F(`size-5 rounded-[4px]`,w8[qSe(B8(e),r)],Cr(a,t=>n(t.date===e.date,`src/page/progress.ts#anonymous~25`))&&`ring-1 ring-foreground/50 ring-offset-1 ring-offset-card`))]),`src/page/progress.ts#anonymous~24`)))])]),t.div([t.AriaHidden(!0),t.Class(`flex items-center gap-1 pl-9 text-[10px] text-muted-foreground`)],[`Less`,...w(w8,e=>n(t.span([t.Class(F(`size-2.5 rounded-[3px]`,e))]),`src/page/progress.ts#anonymous~26`)),`More`]),t.figcaption([t.Class(`sr-only`)],[xi(o,{onEmpty:()=>n(`No lessons or reviews in the last 12 weeks.`,`src/page/progress.ts#onEmpty~4`),onNonEmpty:e=>n(`Active on ${D8(e.length,`day`)} in the last 12 weeks: ${w(e,V8).join(`; `)}.`,`src/page/progress.ts#onNonEmpty~4`)})])]),`src/page/progress.ts#heatmapView`)},XSe=(e,t)=>n(A8(`activity`,`Activity`,`Your lessons and reviews over 12 weeks.`,[YSe(e,t),t.dl([t.Class(`grid grid-cols-3 gap-4 border-t pt-5`)],[j8(`Current streak`,D8(e.streakDays,`day`),x(e.streakDays===0?`start one today`:`in a row`),t),j8(`Active days`,`${e.activeDays}`,x(`in 12 weeks`),t),j8(`Practice time`,`${e.effortMinutes} min`,x(`${e.effortMinutesLastWeek} min this week`),t)])],t),`src/page/progress.ts#activityView`),ZSe=(e,t,r)=>n([r.span([r.Class(`sm:hidden`)],[O8(e.date,{weekday:`narrow`})]),r.span([r.Class(`hidden sm:inline`)],[t===0?`Today`:O8(e.date,{weekday:`short`})])],`src/page/progress.ts#forecastLabel`),H8=e=>n(e.due+e.flashcards,`src/page/progress.ts#forecastTotal`),U8=(e,t,r)=>n(r?`${D8(e,`concept`)}, ${D8(t,`idea card`)}`:D8(e,`review`),`src/page/progress.ts#forecastCounts`),QSe=(e,t,r)=>{let i=H8(e);return n(i===0?r.div([r.Class(`w-full max-w-6 rounded-t-[4px] bg-border`),r.Style({height:`2px`})]):r.div([r.Class(`flex w-full max-w-6 flex-col gap-[2px]`),r.Style({height:`${Math.max(4,i/t*100)}%`})],w(da([{count:e.flashcards,swatch:b8.light},{count:e.due,swatch:b8.strong}],e=>n(e.count>0,`src/page/progress.ts#anonymous~27`)),(e,t)=>n(r.div([r.Class(F(`min-h-[3px]`,e.swatch,t===0&&`rounded-t-[4px]`)),r.Style({flex:`${e.count} 1 0%`})]),`src/page/progress.ts#anonymous~28`))),`src/page/progress.ts#forecastColumn`)},$Se=(e,t)=>{let r=e.laterFlashcards>0||ma(e.days,e=>n(e.flashcards>0,`src/page/progress.ts#anonymous~29`)),i=Math.max(ASe,...w(e.days,H8)),a=t=>n(fa(e.days,0,(e,r)=>n(e+t(r),`src/page/progress.ts#anonymous~30`)),`src/page/progress.ts#sum`),o=a(H8),s=e.later+e.laterFlashcards,c=Pi(e.days),l=C(c,{onNone:()=>n(0,`src/page/progress.ts#onNone~5`),onSome:e=>n(e.overdue+e.flashcardsOverdue,`src/page/progress.ts#onSome~5`)}),u=C(c,{onNone:()=>n(0,`src/page/progress.ts#onNone~6`),onSome:H8});return n(A8(`forecast`,`Upcoming reviews`,`Reviews due in the next two weeks.`,[o===0&&s===0?M8(`Nothing yet. Finish a lesson to see its first review here.`,t):t.figure([t.Class(`flex flex-col gap-4`)],[r?N8(jSe,t):t.empty,t.div([t.AriaHidden(!0),t.Class(`grid h-52 grid-cols-14 items-end gap-1`)],w(e.days,(e,a)=>n(t.div([t.Title(`${k8(e.date)}: ${U8(e.due,e.flashcards,r)}`),t.Class(`flex h-full flex-col items-center gap-1`)],[t.div([t.Class(`flex w-full flex-1 flex-col items-center justify-end gap-1`)],[H8(e)>0?t.span([t.Class(`text-[11px] font-medium tabular-nums`)],[`${H8(e)}`]):t.empty,QSe(e,i,t)]),t.span([t.Class(F(`text-[10px] leading-3 whitespace-nowrap`,a===0?`font-medium text-foreground`:`text-muted-foreground`))],ZSe(e,a,t)),t.span([t.Class(`text-[10px] leading-3 text-muted-foreground tabular-nums`)],[O8(e.date,{day:`numeric`})])]),`src/page/progress.ts#anonymous~31`))),t.figcaption([t.Class(`sr-only`)],[r?`${U8(a(e=>n(e.due,`src/page/progress.ts#anonymous~32`)),a(e=>n(e.flashcards,`src/page/progress.ts#anonymous~33`)),!0)} in the next 14 days. After that, ${U8(e.later,e.laterFlashcards,!0)}.`:`${D8(o,`review`)} in the next 14 days, ${e.later} after that.`]),t.table([t.Class(`sr-only`)],[t.caption([],[`Reviews due per day`]),t.tbody([],w(e.days,e=>n(t.tr([],[t.th([t.Scope(`row`)],[k8(e.date)]),t.td([],[U8(e.due,e.flashcards,r)])]),`src/page/progress.ts#anonymous~34`)))])]),o===0&&s===0?t.empty:t.dl([t.Class(`grid grid-cols-3 gap-4 border-t pt-5`)],[j8(`Due today`,`${u}`,x(l>0?`${l} due now`:`none yet`),t),j8(`Next 14 days`,`${o}`,x(`including today`),t),j8(`Later`,`${s}`,x(`after two weeks`),t)]),l>0?t.a([t.Href(Mz()),t.Class(I(`Outline`,`Small`,`self-start`))],[L(`brain`,``,t),`Review the ${l} due now`]):t.empty],t),`src/page/progress.ts#forecastView`)},W8={Guided:`Explained first`,QuestionLed:`Questions first`},G8=(e,t)=>n(t===0?`–`:T8(E8(e,t)),`src/page/progress.ts#styleShare`),eCe=e=>{if(ma(e.arms,t=>n(t.lessons<e.minimumLessons||t.closingAnswered===0,`src/page/progress.ts#anonymous~35`)))return n(`Too early to tell. Each style needs ${e.minimumLessons} lessons.`,`src/page/progress.ts#styleLead`);let[t,r]=e.arms;if(t===void 0||r===void 0)return n(`Too early to tell.`,`src/page/progress.ts#styleLead`);let i=Math.round((E8(r.closingFirstTry,r.closingAnswered)-E8(t.closingFirstTry,t.closingAnswered))*100);return n(i===0?`So far both styles do the same.`:`So far, ${W8[i>0?`QuestionLed`:`Guided`].toLowerCase()} gets ${Math.abs(i)} points more right on the first try.`,`src/page/progress.ts#styleLead`)},tCe=(e,t)=>n(t.div([t.Class(`flex flex-col gap-3 rounded-xl bg-muted/40 p-4`)],[t.h3([t.Class(`text-sm font-medium`)],[W8[e.style]]),t.dl([t.Class(`grid grid-cols-3 gap-3`)],[j8(`Lessons`,`${e.lessons}`,b(),t),j8(`Right first try`,G8(e.closingFirstTry,e.closingAnswered),x(`${e.closingFirstTry} of ${e.closingAnswered}`),t),j8(`Kept at first review`,G8(e.firstReviewsRemembered,e.firstReviews),x(`${e.firstReviewsRemembered} of ${e.firstReviews}`),t)])]),`src/page/progress.ts#styleArmView`),nCe=(e,t)=>n(A8(`lesson-styles`,`Lesson style test`,`Do lessons that ask first help you more?`,pa(e.arms,e=>n(e.lessons===0,`src/page/progress.ts#anonymous~36`))?[M8(`No lessons in the test yet. It starts once you know the basics a lesson builds on.`,t)]:[t.p([t.Class(`text-lg leading-snug font-medium text-balance`)],[eCe(e)]),t.div([t.Class(`grid gap-4 lg:grid-cols-2`)],w(e.arms,e=>n(tCe(e,t),`src/page/progress.ts#anonymous~37`)))],t),`src/page/progress.ts#lessonStylesView`),rCe=(e,t)=>n(t.div([t.Class(`flex flex-col gap-5`)],[t.div([t.Class(`reveal`)],[FSe(e.totals,e.goals,t)]),Di(e.ideas.goals)?t.empty:t.div([t.Class(`reveal stagger-1`)],[VSe(e.ideas,t)]),t.div([t.Class(`reveal stagger-1`)],[KSe(e.memory,t)]),t.div([t.Class(`reveal stagger-2 grid gap-5 lg:grid-cols-2`)],[XSe(e.activity,t),$Se(e.forecast,t)]),t.div([t.Class(`reveal stagger-3`)],[nCe(e.lessonStyles,t)])]),`src/page/progress.ts#reportView`),iCe=e=>n(e.div([e.Role(`status`),e.AriaLabel(`Loading your progress`),e.Class(`flex flex-col gap-5`)],[e.div([e.Class(`h-72 animate-pulse rounded-xl bg-muted/60`)]),e.div([e.Class(`h-64 animate-pulse rounded-xl bg-muted/60`)]),e.div([e.Class(`grid gap-5 lg:grid-cols-2`)],[e.div([e.Class(`h-56 animate-pulse rounded-xl bg-muted/60`)]),e.div([e.Class(`h-56 animate-pulse rounded-xl bg-muted/60`)])])]),`src/page/progress.ts#loadingView`),aCe=(e,t)=>n(t.div([t.Role(`alert`),t.Class(Bz(`flex flex-col items-start gap-3 p-6`))],[t.p([t.Class(`font-medium`)],[`Couldn't load your progress`]),t.p([t.Class(`text-sm text-muted-foreground`)],[e]),t.button([t.Type(`button`),t.OnClick(_8.ClickedRetry()),t.Class(I(`Outline`,`Small`))],[L(`refresh`,``,t),`Try again`])]),`src/page/progress.ts#failedView`),oCe=qD((e,t)=>n(t.div([t.Class(`mx-auto flex w-full max-w-5xl flex-col gap-6 px-5 pt-8 pb-24`)],[t.h1([t.Class(`text-3xl font-semibold tracking-tight`)],[`Progress`]),g8.match(e.load,{Loading:()=>n(iCe(t),`src/page/progress.ts#Loading`),Failed:({error:e})=>n(aCe(e,t),`src/page/progress.ts#Failed`),Ready:({report:e})=>n(rCe(e,t),`src/page/progress.ts#Ready`)})]),`src/page/progress.ts#anonymous~38`)),K8=A({key:O,item:tL,attempt:k}),sCe=A({conceptTitle:O,goalTitle:O,grading:tb([`Again`,`Hard`,`Good`,`Easy`]),isFlashcard:Ky}),q8=pT({Loading:{},Failed:{error:O},Ready:{session:iL}}),J8=pT({Off:{},Offered:{offer:rL},Running:{answered:j(sL),budget:k},Done:{summary:cL}}),cCe=A({load:q8,queue:j(K8),maybeCurrent:Mb(K8),maybeQuiz:Mb(w3),maybeFlashcard:Mb(t3),questionShownAt:k,outcomes:j(sCe),maybeLastResult:Mb(oL),maybeError:Mb(O),checkIn:J8,isLeechActionBusy:Ky,checkedBasics:j(O),cards:j(HI),shownCards:j(O),requestedIdeas:j(O),loadedIdeas:j(O),isFetchingCards:Ky,isCardFetchFailed:Ky}),Y8=fT({SucceededFetchSession:{session:iL},FailedFetchSession:{error:O},GotQuizMessage:{message:T3},GotFlashcardMessage:{message:n3},CompletedMarkQuestionShown:{at:k},SucceededSubmitReview:{result:oL},FailedSubmitReview:{error:O},SucceededFetchFlashcards:{ideaKeys:j(O),cards:j(HI)},FailedFetchFlashcards:{ideaKeys:j(O),error:O},SucceededSubmitFlashcard:{result:JI},FailedSubmitFlashcard:{error:O},SucceededExplainFlashcard:{questionId:O,body:O},FailedExplainFlashcard:{questionId:O,error:O},ClickedRetryFlashcards:{},ClickedSkipFlashcard:{},ClickedReload:{},ClickedJustFive:{},ClickedStartCheckIn:{},ClickedSkipCheckIn:{},SucceededFetchCheckInStep:{step:lL},FailedFetchCheckInStep:{error:O},ClickedCheckBasics:{goalId:O,conceptId:O},SucceededFetchLeechProbes:{conceptId:O,probes:j($I)},FailedFetchLeechProbes:{error:O},ClickedFreshLesson:{goalId:O,conceptId:O},SucceededStartFreshLesson:{},FailedStartFreshLesson:{error:O}}),lCe=6,uCe=7,X8=N(`FetchSession`,{messages:[Y8.SucceededFetchSession,Y8.FailedFetchSession],execute:D(function*(){let e=yield*(yield*XR).reviews.session();return n(Y8.SucceededFetchSession({session:e}),`src/page/review.ts#anonymous`)}).pipe(rf(e=>n(T(Y8.FailedFetchSession({error:QR(e)})),`src/page/review.ts#anonymous~2`)))}),Z8=N(`MarkQuestionShown`,{messages:[Y8.CompletedMarkQuestionShown],execute:hd.pipe(ef(e=>n(Y8.CompletedMarkQuestionShown({at:e}),`src/page/review.ts#anonymous~3`)))}),dCe=N(`SubmitReview`,{args:{goalId:O,conceptId:O,questionId:O,response:FI,note:O,hintLevel:k,shownAt:k},messages:[Y8.SucceededSubmitReview,Y8.FailedSubmitReview],execute:e=>n(D(function*(){let t=yield*XR,r=yield*hd,i=yield*t.reviews.answer({payload:{goalId:nI.make(e.goalId),conceptId:rI.make(e.conceptId),answer:{questionId:OI.make(e.questionId),response:e.response,note:e.note,latencyMs:Math.max(0,r-e.shownAt),hintLevel:e.hintLevel}}});return n(Y8.SucceededSubmitReview({result:i}),`src/page/review.ts#anonymous~4`)}).pipe(rf(e=>n(T(Y8.FailedSubmitReview({error:QR(e)})),`src/page/review.ts#anonymous~5`))),`src/page/review.ts#execute`)}),fCe=N(`FetchFlashcards`,{args:{ideas:j(A({goalId:O,ideaId:O}))},messages:[Y8.SucceededFetchFlashcards,Y8.FailedFetchFlashcards],execute:({ideas:e})=>n(D(function*(){let t=yield*(yield*XR).flashcards.batch({payload:{ideas:w(e,e=>n({goalId:nI.make(e.goalId),ideaId:oI.make(e.ideaId)},`src/page/review.ts#anonymous~7`))}});return n(Y8.SucceededFetchFlashcards({ideaKeys:w(e,e=>n($8(e.goalId,e.ideaId),`src/page/review.ts#anonymous~8`)),cards:t.cards}),`src/page/review.ts#anonymous~6`)}).pipe(rf(t=>n(T(Y8.FailedFetchFlashcards({ideaKeys:w(e,e=>n($8(e.goalId,e.ideaId),`src/page/review.ts#anonymous~10`)),error:QR(t)})),`src/page/review.ts#anonymous~9`))),`src/page/review.ts#execute~2`)}),pCe=N(`SubmitFlashcard`,{args:{goalId:O,questionId:O,response:KI,recallMs:k,latencyMs:k},messages:[Y8.SucceededSubmitFlashcard,Y8.FailedSubmitFlashcard],execute:e=>n(D(function*(){let t=yield*(yield*XR).flashcards.answer({params:{goalId:nI.make(e.goalId)},payload:{questionId:OI.make(e.questionId),response:e.response,recallMs:e.recallMs,latencyMs:e.latencyMs,context:`Review`}});return n(Y8.SucceededSubmitFlashcard({result:t}),`src/page/review.ts#anonymous~11`)}).pipe(rf(e=>n(T(Y8.FailedSubmitFlashcard({error:QR(e)})),`src/page/review.ts#anonymous~12`))),`src/page/review.ts#execute~3`)}),mCe=N(`ExplainFlashcard`,{args:{goalId:O,questionId:O,response:KI},messages:[Y8.SucceededExplainFlashcard,Y8.FailedExplainFlashcard],execute:e=>n(D(function*(){let t=yield*(yield*XR).flashcards.explain({params:{goalId:nI.make(e.goalId)},payload:{questionId:OI.make(e.questionId),response:e.response}});return n(Y8.SucceededExplainFlashcard({questionId:e.questionId,body:t.body}),`src/page/review.ts#anonymous~13`)}).pipe(rf(t=>n(T(Y8.FailedExplainFlashcard({questionId:e.questionId,error:QR(t)})),`src/page/review.ts#anonymous~14`))),`src/page/review.ts#execute~4`)}),Q8=N(`FetchCheckInStep`,{args:{answered:j(sL)},messages:[Y8.SucceededFetchCheckInStep,Y8.FailedFetchCheckInStep],execute:({answered:e})=>n(D(function*(){let t=yield*(yield*XR).reviews.replacementNext({payload:{answered:e}});return n(Y8.SucceededFetchCheckInStep({step:t}),`src/page/review.ts#anonymous~15`)}).pipe(rf(e=>n(T(Y8.FailedFetchCheckInStep({error:QR(e)})),`src/page/review.ts#anonymous~16`))),`src/page/review.ts#execute~5`)}),hCe=N(`FetchLeechProbes`,{args:{goalId:O,conceptId:O},messages:[Y8.SucceededFetchLeechProbes,Y8.FailedFetchLeechProbes],execute:({goalId:e,conceptId:t})=>n(qz(e,t).pipe(ef(e=>n(Y8.SucceededFetchLeechProbes({conceptId:t,probes:e}),`src/page/review.ts#anonymous~17`)),rf(e=>n(T(Y8.FailedFetchLeechProbes({error:QR(e)})),`src/page/review.ts#anonymous~18`))),`src/page/review.ts#execute~6`)}),gCe=N(`StartFreshLesson`,{args:{goalId:O,conceptId:O},messages:[Y8.SucceededStartFreshLesson,Y8.FailedStartFreshLesson],execute:({goalId:e,conceptId:t})=>n(Jz(e,t).pipe(tf(Y8.SucceededStartFreshLesson()),rf(e=>n(T(Y8.FailedStartFreshLesson({error:QR(e)})),`src/page/review.ts#anonymous~19`))),`src/page/review.ts#execute~7`)}),_Ce=()=>n({model:{load:q8.Loading(),queue:[],maybeCurrent:b(),maybeQuiz:b(),maybeFlashcard:b(),questionShownAt:0,outcomes:[],maybeLastResult:b(),maybeError:b(),checkIn:J8.Off(),isLeechActionBusy:!1,checkedBasics:[],cards:[],shownCards:[],requestedIdeas:[],loadedIdeas:[],isFetchingCards:!1,isCardFetchFailed:!1},commands:[X8()]},`src/page/review.ts#init`),$8=(e,t)=>n(`${e}/${t}`,`src/page/review.ts#ideaKey`),e5=e=>n($8(e.goalId,e.ideaId),`src/page/review.ts#slotKey`),t5=e=>n(e.item._tag===`ConceptItem`?x(e.item.item):b(),`src/page/review.ts#conceptItemOf`),n5=e=>n(e.item._tag===`FlashcardItem`?x(e.item.slot):b(),`src/page/review.ts#slotOf`),r5=e=>n(e._tag===`ConceptItem`?{conceptTitle:e.item.conceptTitle,goalTitle:e.item.goalTitle}:{conceptTitle:e.slot.conceptTitle,goalTitle:e.slot.goalTitle},`src/page/review.ts#titlesOf`),i5=(e,t)=>n({key:e,item:{_tag:`ConceptItem`,item:t},attempt:0},`src/page/review.ts#conceptEntry`),a5=e=>n(Y8.GotFlashcardMessage({message:e}),`src/page/review.ts#toFlashcardMessage`),o5=(e,t)=>{let r=t(e.model);return n({model:r.model,commands:[...e.commands??[],...r.commands??[]]},`src/page/review.ts#andThen`)},s5=e=>{let t=t=>n(e.requestedIdeas.includes(e5(t)),`src/page/review.ts#isRequested`),r=la(w([...bi(e.maybeCurrent),...e.queue],n5)),i=qi(r,e=>n(!t(e),`src/page/review.ts#anonymous~20`)),a=!e.isFetchingCards&&!e.isCardFetchFailed&&e.checkIn._tag===`Off`&&Cr(i,e=>n(e<uCe,`src/page/review.ts#anonymous~21`)),o=Vi(ga(da(r,e=>n(!t(e),`src/page/review.ts#anonymous~22`)),(e,t)=>n(e5(e)===e5(t),`src/page/review.ts#anonymous~23`)),lCe);return n(!a||Di(o)?{model:e}:{model:P(e,{requestedIdeas:e=>n([...e,...w(o,e5)],`src/page/review.ts#requestedIdeas`),isFetchingCards:()=>n(!0,`src/page/review.ts#isFetchingCards`)}),commands:[fCe({ideas:w(o,e=>n({goalId:e.goalId,ideaId:e.ideaId},`src/page/review.ts#anonymous~24`))})]},`src/page/review.ts#ensureCards`)},vCe=(e,t)=>n(lr(Tz(da(e.cards,e=>n($8(e.goalId,e.ideaId)===e5(t),`src/page/review.ts#anonymous~25`)),e=>n(e.questionId,`src/page/review.ts#anonymous~26`),e.shownCards)),`src/page/review.ts#phrasingFor`),c5=e=>n(C(gr(e.maybeCurrent,e=>n(n5(e),`src/page/review.ts#anonymous~27`)),{onNone:()=>n({model:e},`src/page/review.ts#onNone`),onSome:t=>n(S(e.maybeFlashcard)?{model:e}:C(vCe(e,t),{onNone:()=>n(e.loadedIdeas.includes(e5(t))?l5(e):{model:e},`src/page/review.ts#onNone~2`),onSome:t=>{let r=i3(t);return n({model:P(e,{maybeFlashcard:()=>n(x(r.model),`src/page/review.ts#maybeFlashcard`),shownCards:wi(t.questionId),maybeError:()=>n(b(),`src/page/review.ts#maybeError`)}),commands:BO(r.commands??[],a5)},`src/page/review.ts#onSome~2`)}}),`src/page/review.ts#onSome`)}),`src/page/review.ts#showCardIfReady`),l5=e=>n(o5(xi(e.queue,{onEmpty:()=>n({model:P(e,{maybeCurrent:()=>n(b(),`src/page/review.ts#maybeCurrent`),maybeQuiz:()=>n(b(),`src/page/review.ts#maybeQuiz`),maybeFlashcard:()=>n(b(),`src/page/review.ts#maybeFlashcard~2`)})},`src/page/review.ts#onEmpty`),onNonEmpty:([t,...r])=>{let i=t.item,a=P(e,{maybeCurrent:()=>n(x(t),`src/page/review.ts#maybeCurrent~2`),queue:()=>n(r,`src/page/review.ts#queue`),maybeQuiz:()=>n(b(),`src/page/review.ts#maybeQuiz~2`),maybeFlashcard:()=>n(b(),`src/page/review.ts#maybeFlashcard~3`),maybeLastResult:()=>n(b(),`src/page/review.ts#maybeLastResult`)});return n(i._tag===`ConceptItem`?{model:P(a,{maybeQuiz:()=>n(x(D3(i.item.question,{canHint:!0})),`src/page/review.ts#maybeQuiz~3`)}),commands:[Z8()]}:c5(a),`src/page/review.ts#onNonEmpty`)}}),s5),`src/page/review.ts#enterNext`),u5=(e,t,r)=>{let i=new Set(la(w(e.queue,e=>n(mr(t5(e),e=>n(e.conceptId,`src/page/review.ts#anonymous~29`)),`src/page/review.ts#anonymous~28`))));return n(xi(da(t,e=>n(!i.has(e.conceptId),`src/page/review.ts#anonymous~30`)),{onEmpty:()=>n(e,`src/page/review.ts#onEmpty~2`),onNonEmpty:t=>n(P(e,{queue:e=>n([...w(t,(t,i)=>n(i5(`${r}:${t.conceptId}:${e.length}:${i}`,t),`src/page/review.ts#anonymous~31`)),...e],`src/page/review.ts#queue~2`)}),`src/page/review.ts#onNonEmpty~2`)}),`src/page/review.ts#queueNext`)},yCe=(e,t)=>n(u5(u5(e,C(gr(e.maybeCurrent,t5),{onNone:()=>n([],`src/page/review.ts#onNone~3`),onSome:e=>n(Yz(e,t.creditedConcepts),`src/page/review.ts#onSome~3`)}),`covered`),t.probes,`probe`),`src/page/review.ts#queueFollowUps`),bCe=(e,t)=>n(e._tag===`ConceptItem`?{_tag:`ConceptItem`,item:{...e.item,...sr(t,()=>n({},`src/page/review.ts#anonymous~32`)),alsoCovers:[]}}:e,`src/page/review.ts#reAskItem`),d5=(e,t,r)=>n(C(e.maybeCurrent,{onNone:()=>n(e,`src/page/review.ts#onNone~4`),onSome:i=>n(wz(t,i.attempt)?P(e,{queue:e=>{let t={key:`${i.key}:again`,item:bCe(i.item,r),attempt:i.attempt+1};return n(sr(Zi(e,Math.min(2,e.length),t),()=>n(wi(e,t),`src/page/review.ts#anonymous~33`)),`src/page/review.ts#queue~3`)}}):e,`src/page/review.ts#onSome~4`)}),`src/page/review.ts#reAsk`),f5=e=>n(e.checkIn._tag===`Running`,`src/page/review.ts#isCheckingIn`),xCe=e=>n(J8.match(e.checkIn,{Off:()=>n([],`src/page/review.ts#Off`),Offered:()=>n([],`src/page/review.ts#Offered`),Running:({answered:e})=>n(e,`src/page/review.ts#Running`),Done:()=>n([],`src/page/review.ts#Done`)}),`src/page/review.ts#answeredSoFar`),p5=e=>n(f5(e)?{model:P(e,{maybeCurrent:()=>n(b(),`src/page/review.ts#maybeCurrent~3`),maybeQuiz:()=>n(b(),`src/page/review.ts#maybeQuiz~4`),maybeLastResult:()=>n(b(),`src/page/review.ts#maybeLastResult~2`)}),commands:[Q8({answered:xCe(e)})]}:l5(e),`src/page/review.ts#continueAfterFeedback`),SCe=LN({update:F3,read:e=>n(e.maybeQuiz,`src/page/review.ts#read`),write:(e,t)=>n(P(e,{maybeQuiz:()=>n(x(t),`src/page/review.ts#maybeQuiz~5`)}),`src/page/review.ts#write`),toParentMessage:e=>n(Y8.GotQuizMessage({message:e}),`src/page/review.ts#toParentMessage`),foldOutMessage:E3.match({SubmittedAnswer:({response:e,note:t,hintLevel:r})=>n((i=>n({model:i,commands:bi(mr(gr(i.maybeCurrent,t5),a=>n(dCe({goalId:a.goalId,conceptId:a.conceptId,questionId:a.question.id,response:e,note:t,hintLevel:r,shownAt:i.questionShownAt}),`src/page/review.ts#anonymous~35`)))},`src/page/review.ts#anonymous~34`)),`src/page/review.ts#SubmittedAnswer`),ContinuedAfterFeedback:()=>n(p5,`src/page/review.ts#ContinuedAfterFeedback`)})}),CCe=LN({update:g3,read:e=>n(e.maybeFlashcard,`src/page/review.ts#read~2`),write:(e,t)=>n(P(e,{maybeFlashcard:()=>n(x(t),`src/page/review.ts#maybeFlashcard~4`)}),`src/page/review.ts#write~2`),toParentMessage:a5,foldOutMessage:r3.match({Answered:({response:e,recallMs:t,latencyMs:r})=>n((i=>n({model:i,commands:bi(mr(i.maybeFlashcard,i=>n(pCe({goalId:i.card.goalId,questionId:i.card.questionId,response:e,recallMs:t,latencyMs:r}),`src/page/review.ts#anonymous~37`)))},`src/page/review.ts#anonymous~36`)),`src/page/review.ts#Answered`),Continued:()=>n(p5,`src/page/review.ts#Continued`),RequestedExplanation:({response:e})=>n((t=>n({model:t,commands:bi(mr(t.maybeFlashcard,t=>n(mCe({goalId:t.card.goalId,questionId:t.card.questionId,response:e}),`src/page/review.ts#anonymous~39`)))},`src/page/review.ts#anonymous~38`)),`src/page/review.ts#RequestedExplanation`)})}),wCe=(e,t)=>n(J8.match(e.checkIn,{Off:()=>n(e,`src/page/review.ts#Off~2`),Offered:()=>n(e,`src/page/review.ts#Offered~2`),Done:()=>n(e,`src/page/review.ts#Done~2`),Running:({answered:r,budget:i})=>n(C(gr(e.maybeCurrent,t5),{onNone:()=>n(e,`src/page/review.ts#onNone~5`),onSome:a=>n(P(e,{checkIn:()=>n(J8.Running({budget:i,answered:wi(r,{goalId:a.goalId,conceptId:a.conceptId,verdict:t.feedback.verdict,isMultipleChoice:a.question.kind===`MultipleChoice`})}),`src/page/review.ts#checkIn`)}),`src/page/review.ts#onSome~5`)}),`src/page/review.ts#Running~2`)}),`src/page/review.ts#recordCheckInAnswer`),m5=(e,t,r)=>n(P(e,{outcomes:i=>n(C(e.maybeCurrent,{onNone:()=>n(i,`src/page/review.ts#onNone~6`),onSome:e=>n(e.attempt===0?wi(i,{...r5(e.item),grading:t,isFlashcard:r}):i,`src/page/review.ts#onSome~6`)}),`src/page/review.ts#outcomes`)}),`src/page/review.ts#withOutcome`),h5=(e,t)=>n(m5(P(e,{maybeQuiz:mr(e=>n(O3(e,t.feedback),`src/page/review.ts#anonymous~40`)),maybeLastResult:()=>n(x(t),`src/page/review.ts#maybeLastResult~3`)}),t.grading,!1),`src/page/review.ts#withResult`),TCe=(e,t)=>n(Y8.match(t,{SucceededFetchSession:({session:t})=>{let r=P(e,{load:()=>n(q8.Ready({session:t}),`src/page/review.ts#load`),queue:()=>n(w(t.items,(e,t)=>n({key:`${t}:${e._tag===`ConceptItem`?e.item.conceptId:e.slot.ideaId}`,item:e,attempt:0},`src/page/review.ts#anonymous~41`)),`src/page/review.ts#queue~4`),outcomes:()=>n([],`src/page/review.ts#outcomes~2`),maybeCurrent:()=>n(b(),`src/page/review.ts#maybeCurrent~4`),maybeQuiz:()=>n(b(),`src/page/review.ts#maybeQuiz~6`),maybeFlashcard:()=>n(b(),`src/page/review.ts#maybeFlashcard~5`),maybeLastResult:()=>n(b(),`src/page/review.ts#maybeLastResult~4`),cards:()=>n([],`src/page/review.ts#cards`),shownCards:()=>n([],`src/page/review.ts#shownCards`),requestedIdeas:()=>n([],`src/page/review.ts#requestedIdeas~2`),loadedIdeas:()=>n([],`src/page/review.ts#loadedIdeas`),isFetchingCards:()=>n(!1,`src/page/review.ts#isFetchingCards~2`),isCardFetchFailed:()=>n(!1,`src/page/review.ts#isCardFetchFailed`),checkIn:()=>n(C(t.maybeReplacement,{onNone:()=>n(J8.Off(),`src/page/review.ts#onNone~7`),onSome:e=>n(J8.Offered({offer:e}),`src/page/review.ts#onSome~7`)}),`src/page/review.ts#checkIn~2`)});return n(S(t.maybeReplacement)?{model:r}:l5(r),`src/page/review.ts#SucceededFetchSession`)},FailedFetchSession:({error:t})=>n({model:P(e,{load:()=>n(q8.Failed({error:t}),`src/page/review.ts#load~2`)})},`src/page/review.ts#FailedFetchSession`),GotQuizMessage:({message:t})=>n(SCe(e,t),`src/page/review.ts#GotQuizMessage`),GotFlashcardMessage:({message:t})=>n(CCe(e,t),`src/page/review.ts#GotFlashcardMessage`),CompletedMarkQuestionShown:({at:t})=>n({model:P(e,{questionShownAt:()=>n(t,`src/page/review.ts#questionShownAt`)})},`src/page/review.ts#CompletedMarkQuestionShown`),SucceededSubmitReview:({result:t})=>{let r=d5(h5(e,t),t.grading,t.maybeVariant),i=Cr(e.maybeCurrent,e=>n(e.attempt===0,`src/page/review.ts#anonymous~42`));return n({model:f5(e)?h5(wCe(e,t),t):i?yCe(r,t):r},`src/page/review.ts#SucceededSubmitReview`)},FailedSubmitReview:({error:t})=>n({model:P(e,{maybeQuiz:mr(k3),maybeError:()=>n(x(t),`src/page/review.ts#maybeError~2`)})},`src/page/review.ts#FailedSubmitReview`),SucceededFetchFlashcards:({ideaKeys:t,cards:r})=>n(o5(c5(P(e,{cards:e=>n([...e,...da(r,t=>n(!ma(e,e=>n(e.questionId===t.questionId,`src/page/review.ts#anonymous~44`)),`src/page/review.ts#anonymous~43`))],`src/page/review.ts#cards~2`),loadedIdeas:e=>n([...e,...t],`src/page/review.ts#loadedIdeas~2`),isFetchingCards:()=>n(!1,`src/page/review.ts#isFetchingCards~3`)})),s5),`src/page/review.ts#SucceededFetchFlashcards`),FailedFetchFlashcards:({ideaKeys:t,error:r})=>n({model:P(e,{requestedIdeas:e=>n(da(e,e=>n(!t.includes(e),`src/page/review.ts#anonymous~45`)),`src/page/review.ts#requestedIdeas~3`),isFetchingCards:()=>n(!1,`src/page/review.ts#isFetchingCards~4`),isCardFetchFailed:()=>n(!0,`src/page/review.ts#isCardFetchFailed~2`),maybeError:()=>n(x(r),`src/page/review.ts#maybeError~3`)})},`src/page/review.ts#FailedFetchFlashcards`),ClickedRetryFlashcards:()=>n(s5(P(e,{isCardFetchFailed:()=>n(!1,`src/page/review.ts#isCardFetchFailed~3`),maybeError:()=>n(b(),`src/page/review.ts#maybeError~4`)})),`src/page/review.ts#ClickedRetryFlashcards`),ClickedSkipFlashcard:()=>n(l5(P(e,{isCardFetchFailed:()=>n(!1,`src/page/review.ts#isCardFetchFailed~4`),maybeError:()=>n(b(),`src/page/review.ts#maybeError~5`)})),`src/page/review.ts#ClickedSkipFlashcard`),SucceededSubmitFlashcard:({result:t})=>n({model:d5(m5(P(e,{maybeFlashcard:mr(e=>n(a3(e,t),`src/page/review.ts#anonymous~46`))}),t.grading,!0),t.grading,b())},`src/page/review.ts#SucceededSubmitFlashcard`),FailedSubmitFlashcard:({error:t})=>n({model:P(e,{maybeFlashcard:mr(o3),maybeError:()=>n(x(t),`src/page/review.ts#maybeError~6`)})},`src/page/review.ts#FailedSubmitFlashcard`),SucceededExplainFlashcard:({questionId:t,body:r})=>n({model:P(e,{maybeFlashcard:mr(e=>n(e.card.questionId===t?s3(e,r):e,`src/page/review.ts#anonymous~47`))})},`src/page/review.ts#SucceededExplainFlashcard`),FailedExplainFlashcard:({questionId:t})=>n({model:P(e,{maybeFlashcard:mr(e=>n(e.card.questionId===t?c3(e):e,`src/page/review.ts#anonymous~48`))})},`src/page/review.ts#FailedExplainFlashcard`),ClickedJustFive:()=>n({model:x5(e)?P(e,{queue:e=>n(Vi(e,4),`src/page/review.ts#queue~5`)}):e},`src/page/review.ts#ClickedJustFive`),ClickedReload:()=>n({model:P(e,{load:()=>n(q8.Loading(),`src/page/review.ts#load~3`),checkIn:()=>n(J8.Off(),`src/page/review.ts#checkIn~3`)}),commands:[X8()]},`src/page/review.ts#ClickedReload`),ClickedStartCheckIn:()=>n(J8.match(e.checkIn,{Off:()=>n({model:e},`src/page/review.ts#Off~3`),Running:()=>n({model:e},`src/page/review.ts#Running~3`),Done:()=>n({model:e},`src/page/review.ts#Done~3`),Offered:({offer:t})=>n({model:P(e,{checkIn:()=>n(J8.Running({answered:[],budget:t.questionBudget}),`src/page/review.ts#checkIn~4`)}),commands:[Q8({answered:[]})]},`src/page/review.ts#Offered~3`)}),`src/page/review.ts#ClickedStartCheckIn`),ClickedSkipCheckIn:()=>n(l5(P(e,{checkIn:()=>n(J8.Off(),`src/page/review.ts#checkIn~5`)})),`src/page/review.ts#ClickedSkipCheckIn`),SucceededFetchCheckInStep:({step:t})=>n(C(t.maybeItem,{onNone:()=>n({model:P(e,{checkIn:()=>n(J8.Done({summary:t.summary}),`src/page/review.ts#checkIn~6`),maybeCurrent:()=>n(b(),`src/page/review.ts#maybeCurrent~5`),maybeQuiz:()=>n(b(),`src/page/review.ts#maybeQuiz~7`),maybeLastResult:()=>n(b(),`src/page/review.ts#maybeLastResult~5`)})},`src/page/review.ts#onNone~8`),onSome:r=>n({model:P(e,{maybeCurrent:()=>n(x(i5(`check-in:${t.asked}:${r.conceptId}`,r)),`src/page/review.ts#maybeCurrent~6`),maybeQuiz:()=>n(x(D3(r.question)),`src/page/review.ts#maybeQuiz~8`),maybeFlashcard:()=>n(b(),`src/page/review.ts#maybeFlashcard~6`),maybeLastResult:()=>n(b(),`src/page/review.ts#maybeLastResult~6`),checkIn:e=>n(J8.match(e,{Off:()=>n(e,`src/page/review.ts#Off~4`),Offered:()=>n(e,`src/page/review.ts#Offered~4`),Done:()=>n(e,`src/page/review.ts#Done~4`),Running:({answered:e})=>n(J8.Running({answered:e,budget:t.budget}),`src/page/review.ts#Running~4`)}),`src/page/review.ts#checkIn~7`)}),commands:[Z8()]},`src/page/review.ts#onSome~8`)}),`src/page/review.ts#SucceededFetchCheckInStep`),FailedFetchCheckInStep:({error:t})=>n({model:P(e,{maybeError:()=>n(x(t),`src/page/review.ts#maybeError~7`)})},`src/page/review.ts#FailedFetchCheckInStep`),ClickedCheckBasics:({goalId:t,conceptId:r})=>n({model:P(e,{isLeechActionBusy:()=>n(!0,`src/page/review.ts#isLeechActionBusy`)}),commands:[hCe({goalId:t,conceptId:r})]},`src/page/review.ts#ClickedCheckBasics`),SucceededFetchLeechProbes:({conceptId:t,probes:r})=>n({model:u5(P(e,{isLeechActionBusy:()=>n(!1,`src/page/review.ts#isLeechActionBusy~2`),checkedBasics:wi(t)}),r,`basics`)},`src/page/review.ts#SucceededFetchLeechProbes`),FailedFetchLeechProbes:({error:t})=>n({model:P(e,{isLeechActionBusy:()=>n(!1,`src/page/review.ts#isLeechActionBusy~3`),maybeError:()=>n(x(t),`src/page/review.ts#maybeError~8`)})},`src/page/review.ts#FailedFetchLeechProbes`),ClickedFreshLesson:({goalId:t,conceptId:r})=>n({model:P(e,{isLeechActionBusy:()=>n(!0,`src/page/review.ts#isLeechActionBusy~4`)}),commands:[gCe({goalId:t,conceptId:r})]},`src/page/review.ts#ClickedFreshLesson`),SucceededStartFreshLesson:()=>n({model:P(e,{isLeechActionBusy:()=>n(!1,`src/page/review.ts#isLeechActionBusy~5`)})},`src/page/review.ts#SucceededStartFreshLesson`),FailedStartFreshLesson:({error:t})=>n({model:P(e,{isLeechActionBusy:()=>n(!1,`src/page/review.ts#isLeechActionBusy~6`),maybeError:()=>n(x(t),`src/page/review.ts#maybeError~9`)})},`src/page/review.ts#FailedStartFreshLesson`)}),`src/page/review.ts#update`),ECe=lA(I3)({read:e=>n(e.maybeQuiz,`src/page/review.ts#read~3`),toParentMessage:e=>n(Y8.GotQuizMessage({message:e}),`src/page/review.ts#toParentMessage~2`)}),DCe=lA(_3)({read:e=>n(e.maybeFlashcard,`src/page/review.ts#read~4`),toParentMessage:a5}),OCe={reviewQuizKeyboard:ECe.keyboard,reviewFlashcardKeyboard:DCe.keyboard},kCe=e=>{if(e<1)return n(`in under an hour`,`src/page/review.ts#formatHoursAway`);if(e<36)return n(`in about ${Math.round(e)} hours`,`src/page/review.ts#formatHoursAway`);let t=Math.round(e/24);return n(t<60?`in ${t} days`:`in about ${Math.round(t/30)} months`,`src/page/review.ts#formatHoursAway`)},ACe=(e,t,r)=>{let i=da(Yz(t,e.creditedConcepts),t=>n(!ma(e.probes,e=>n(e.conceptId===t.conceptId,`src/page/review.ts#anonymous~50`)),`src/page/review.ts#anonymous~49`));return n(r.div([r.Class(`pop-in flex flex-wrap items-center gap-2 text-sm text-muted-foreground`)],[L(`clock`,`size-4`,r),e.counted?`Next review ${kCe(e.nextDueInHours)}`:`Already reviewed today. The schedule stays the same.`,xi(e.probes,{onEmpty:()=>n(r.empty,`src/page/review.ts#onEmpty~3`),onNonEmpty:e=>n(r.span([r.Class(zz(`Warning`))],[`${e.length} quick check${e.length===1?``:`s`} next`]),`src/page/review.ts#onNonEmpty~3`)}),xi(e.creditedConcepts,{onEmpty:()=>n(r.empty,`src/page/review.ts#onEmpty~4`),onNonEmpty:e=>n(r.span([r.Class(zz(`Info`))],[`Also refreshed ${e.length} more`]),`src/page/review.ts#onNonEmpty~4`)}),xi(i,{onEmpty:()=>n(r.empty,`src/page/review.ts#onEmpty~5`),onNonEmpty:e=>n(r.span([r.Class(zz(`Neutral`))],[`${e.length===1?e[0]?.conceptTitle??``:`${e.length} others`} get${e.length===1?`s`:``} ${e.length===1?`its`:`their`} own question`]),`src/page/review.ts#onNonEmpty~5`)})]),`src/page/review.ts#scheduleNote`)},jCe=e=>n(S(e.maybeLastResult)||Cr(e.maybeFlashcard,u3),`src/page/review.ts#isCurrentAnswered`),MCe=(e,t)=>{let r=e.outcomes.length,i=J8.match(e.checkIn,{Off:()=>n(r+e.queue.length+(S(e.maybeCurrent)&&!jCe(e)?1:0),`src/page/review.ts#Off~5`),Offered:()=>n(r+e.queue.length,`src/page/review.ts#Offered~5`),Running:({budget:e})=>n(Math.max(e,r),`src/page/review.ts#Running~5`),Done:()=>n(r,`src/page/review.ts#Done~5`)}),a=i===0?100:Math.round(r/i*100);return n(t.div([t.Class(`h-1 overflow-hidden rounded-full bg-muted`)],[t.div([t.Class(`h-full rounded-full bg-primary transition-[width] duration-500`),t.Style({width:`${a}%`})])]),`src/page/review.ts#progressView`)},NCe=(e,t,r)=>{let i=t=>n(e.outcomes.filter(e=>n(e.grading===t,`src/page/review.ts#anonymous~51`)).length,`src/page/review.ts#count`),a=e.outcomes.filter(e=>n(e.isFlashcard,`src/page/review.ts#anonymous~52`)).length,o=e.outcomes.length-a;return n(r.div([r.Class(Bz(`reveal flex flex-col gap-5 p-6 sm:p-8`))],[r.div([r.Class(`flex items-center gap-3`)],[r.span([r.Class(`flex size-10 items-center justify-center rounded-xl bg-success/12 text-success`)],[L(`check`,`size-5`,r)]),r.div([],[r.h2([r.Class(`text-xl font-semibold`)],[Di(e.outcomes)?`Nothing due right now`:`Review done`]),r.p([r.Class(`text-sm text-muted-foreground`)],[Di(e.outcomes)?`Everything is still fresh. Come back later.`:`${RCe(o,a)} Each comes back just before you'd forget it.`])])]),FCe(e.outcomes,r),i(`Again`)+i(`Hard`)>0?r.p([r.Class(`rounded-lg bg-muted/50 px-4 py-3 text-sm text-muted-foreground`)],[`Hard ones stick best. Misses come back sooner. `,r.a([r.Href(Pz()),r.Class(`font-medium text-foreground underline-offset-4 hover:underline`)],[`See your progress`])]):r.empty,r.p([r.Class(`text-sm text-muted-foreground`)],[`Coming up: ${t.dueTomorrow} in 24 hours, ${t.dueThisWeek} this week.`]),r.div([r.Class(`flex justify-end gap-2`)],[r.button([r.Type(`button`),r.OnClick(Y8.ClickedReload()),r.Class(I(`Ghost`,`Medium`))],[L(`refresh`,``,r),`Check again`]),r.a([r.Href(Dz()),r.Class(I(`Primary`,`Medium`))],[`Learn something new`,L(`arrowRight`,``,r)])])]),`src/page/review.ts#summaryView`)},PCe=e=>{let t=(e,t)=>n(e.goalTitle===t.goalTitle&&e.conceptTitle===t.conceptTitle,`src/page/review.ts#isSameConcept`);return n(w(ga(e,t),r=>n({title:r.conceptTitle,needsPractice:ma(e,e=>n(t(e,r)&&(e.grading===`Again`||e.grading===`Hard`),`src/page/review.ts#anonymous~54`))},`src/page/review.ts#anonymous~53`)),`src/page/review.ts#sessionConcepts`)},g5=5,_5=(e,t,r,i,a)=>n(Di(i)?a.empty:a.div([a.Class(`flex flex-col gap-2 rounded-xl bg-muted/50 p-4`)],[a.p([a.Class(F(`flex items-center gap-1.5 font-semibold`,r))],[L(t,`size-4`,a),e]),a.ul([a.AriaLabel(e),a.Class(`flex flex-col gap-1 text-sm`)],[...w(Vi(i,g5),e=>n(a.li([],[e]),`src/page/review.ts#anonymous~55`)),...i.length>g5?[a.li([a.Class(`text-muted-foreground`)],[`and ${i.length-g5} more`])]:[]])]),`src/page/review.ts#conceptListView`),FCe=(e,t)=>{let r=PCe(e),i=e=>n(w(da(r,t=>n(t.needsPractice===e,`src/page/review.ts#anonymous~56`)),e=>n(e.title,`src/page/review.ts#anonymous~57`)),`src/page/review.ts#titlesWhere`);return n(Di(r)?t.empty:t.div([t.Class(`grid gap-2 sm:grid-cols-2`)],[_5(`Strong`,`check`,`text-success`,i(!1),t),_5(`Needs practice`,`refresh`,`text-amber-600 dark:text-amber-400`,i(!0),t)]),`src/page/review.ts#sessionConceptsView`)},ICe=[`Second`,`Third`,`Fourth`,`Fifth`],LCe=e=>n(C(Mi(ICe,e-1),{onNone:()=>n(`Try ${e+1}`,`src/page/review.ts#onNone~9`),onSome:e=>n(`${e} try`,`src/page/review.ts#onSome~9`)}),`src/page/review.ts#tryLabel`),RCe=(e,t)=>n(`You did ${[...e>0?[`${e} concept${e===1?``:`s`}`]:[],...t>0?[`${t} card${t===1?``:`s`}`]:[]].join(` and `)}.`,`src/page/review.ts#doneText`),zCe=(e,t)=>n(t.div([t.Class(Bz(`reveal flex flex-col gap-4 p-6 sm:p-8`))],[t.div([t.Class(`flex items-center gap-3`)],[t.span([t.Class(`flex size-10 items-center justify-center rounded-xl bg-success/12 text-success`)],[L(`check`,`size-5`,t)]),t.h2([t.Class(`text-xl font-semibold`)],[`Check-in done`])]),t.p([t.Class(`text-sm leading-relaxed text-muted-foreground`)],[rB(e)]),t.div([t.Class(`flex flex-wrap justify-end gap-2`)],[t.a([t.Href(Dz()),t.Class(I(`Ghost`,`Medium`))],[`Back home`]),t.button([t.Type(`button`),t.OnClick(Y8.ClickedReload()),t.Class(I(`Primary`,`Medium`))],[`Keep reviewing`,L(`arrowRight`,``,t)])])]),`src/page/review.ts#checkInDoneView`),BCe=(e,t,r)=>n(C(gr(e.maybeLastResult,e=>n(cr(e.maybeLeech,()=>n(t.maybeLeech,`src/page/review.ts#anonymous~59`)),`src/page/review.ts#anonymous~58`)),{onNone:()=>n(r.empty,`src/page/review.ts#onNone~10`),onSome:t=>n(Qz(t,{maybeCheckBasics:f5(e)?b():x(Y8.ClickedCheckBasics({goalId:t.goalId,conceptId:t.conceptId})),freshLesson:Y8.ClickedFreshLesson({goalId:t.goalId,conceptId:t.conceptId}),isBusy:e.isLeechActionBusy,isChecked:e.checkedBasics.includes(t.conceptId)},r),`src/page/review.ts#onSome~10`)}),`src/page/review.ts#leechView`),v5=(e,t,r,i)=>{let a=r5(e.item);return n(i.div([i.Class(`flex flex-wrap items-center gap-2 text-sm`)],[i.span([i.Class(`font-medium`)],[a.conceptTitle]),i.span([i.Class(`text-muted-foreground`)],[`· ${a.goalTitle}`]),e.attempt>0?i.span([i.Class(zz(`Warning`))],[LCe(e.attempt)]):i.empty,...t,i.span([i.Class(F(`ml-auto text-xs text-muted-foreground`))],[`Memory strength ${Math.round(r*100)}%`])]),`src/page/review.ts#itemHeader`)},y5=e=>n(f5(e)||!Di(e.queue)?`Next`:`Finish`,`src/page/review.ts#continueLabel`),VCe=(e,t,r,i)=>n(i.div([i.Class(`flex flex-col gap-3`)],[v5(t,S(r.maybeLeech)?[i.span([i.Class(zz(`Warning`))],[`Keeps slipping`])]:[],r.retrievability,i),Xz(r,i),C(e.maybeQuiz,{onNone:()=>n(i.empty,`src/page/review.ts#onNone~11`),onSome:a=>n(i.submodel({slotId:`review-${t.key}`,model:a,view:V3(y5(e),x(Az({goalId:r.goalId,conceptId:r.conceptId}))),toParentMessage:e=>n(Y8.GotQuizMessage({message:e}),`src/page/review.ts#toParentMessage~3`)}),`src/page/review.ts#onSome~11`)}),C(e.maybeLastResult,{onNone:()=>n(i.empty,`src/page/review.ts#onNone~12`),onSome:e=>n(ACe(e,r,i),`src/page/review.ts#onSome~12`)}),BCe(e,r,i)]),`src/page/review.ts#conceptView`),HCe=(e,t)=>n(t.div([t.Class(Bz(`flex flex-col items-center gap-4 p-10 text-center`))],e.isCardFetchFailed?[t.p([t.Class(`font-medium`)],[`This card didn't load.`]),t.div([t.Class(`flex flex-wrap justify-center gap-2`)],[t.button([t.Type(`button`),t.OnClick(Y8.ClickedSkipFlashcard()),t.Class(I(`Ghost`,`Large`))],[`Skip it`]),t.button([t.Type(`button`),t.OnClick(Y8.ClickedRetryFlashcards()),t.Class(I(`Primary`,`Large`))],[L(`refresh`,``,t),`Try again`])])]:[L(`layers`,`size-6 text-primary`,t),t.p([t.Class(`shimmer-text text-base font-medium`)],[`Getting your card ready…`])]),`src/page/review.ts#cardWaitingView`),UCe=(e,t,r,i)=>n(i.div([i.Class(`flex flex-col gap-3`)],[v5(t,[i.span([i.Class(zz(`Info`))],[`Card`])],r.retrievability,i),C(e.maybeFlashcard,{onNone:()=>n(HCe(e,i),`src/page/review.ts#onNone~13`),onSome:r=>n(i.submodel({slotId:`flashcard-${t.key}`,model:r,view:x3(y5(e)),toParentMessage:a5}),`src/page/review.ts#onSome~13`)})]),`src/page/review.ts#flashcardView`),b5=(e,t,r)=>n(t.item._tag===`ConceptItem`?VCe(e,t,t.item.item,r):UCe(e,t,t.item.slot,r),`src/page/review.ts#currentView`),WCe=(e,t)=>n(J8.match(e.checkIn,{Off:()=>n(t.empty,`src/page/review.ts#Off~6`),Offered:()=>n(t.empty,`src/page/review.ts#Offered~6`),Done:()=>n(t.empty,`src/page/review.ts#Done~6`),Running:({answered:r,budget:i})=>n(t.p([t.Class(`flex items-center gap-2 text-sm text-muted-foreground`)],[L(`sparkles`,`size-4 text-primary`,t),`Check-in question ${Math.min(i,r.length+ +!S(e.maybeLastResult))} of up to ${i}`]),`src/page/review.ts#Running~6`)}),`src/page/review.ts#checkInHeader`),GCe=(e,t,r)=>n(r.div([r.Class(`flex flex-col gap-4`)],[e.checkIn._tag===`Off`?C(t.maybeCatchUp,{onNone:()=>n(r.empty,`src/page/review.ts#onNone~14`),onSome:e=>n(eB(e,r),`src/page/review.ts#onSome~14`)}):r.empty,MCe(e,r),WCe(e,r),J8.match(e.checkIn,{Offered:({offer:e})=>n(nB(e,{start:Y8.ClickedStartCheckIn(),skip:Y8.ClickedSkipCheckIn()},r),`src/page/review.ts#Offered~7`),Done:({summary:e})=>n(zCe(e,r),`src/page/review.ts#Done~7`),Running:()=>n(C(e.maybeCurrent,{onNone:()=>n(r.div([r.Class(`h-64 animate-pulse rounded-xl bg-muted/60`)]),`src/page/review.ts#onNone~15`),onSome:t=>n(r.keyed(`div`)(t.key,[],[b5(e,t,r)]),`src/page/review.ts#onSome~15`)}),`src/page/review.ts#Running~7`),Off:()=>n(C(e.maybeCurrent,{onNone:()=>n(NCe(e,t,r),`src/page/review.ts#onNone~16`),onSome:t=>n(r.keyed(`div`)(t.key,[],[b5(e,t,r)]),`src/page/review.ts#onSome~16`)}),`src/page/review.ts#Off~7`)})]),`src/page/review.ts#readyView`),x5=e=>n(!f5(e)&&Di(e.outcomes)&&e.queue.length>=5,`src/page/review.ts#canShortenSession`),KCe=(e,t)=>n(x5(e)?t.div([t.Class(`flex flex-wrap items-center justify-between gap-2 text-sm text-muted-foreground`)],[t.span([],[`${e.queue.length+1} to review`]),t.button([t.Type(`button`),t.OnClick(Y8.ClickedJustFive()),t.Class(I(`Ghost`,`Small`,`text-muted-foreground`))],[L(`clock`,``,t),`Just 5 for now`])]):t.empty,`src/page/review.ts#justFiveView`),qCe=qD((e,t)=>n(t.div([t.Class(`mx-auto flex w-full max-w-2xl flex-col gap-5 px-5 pt-8 pb-24`)],[t.div([t.Class(`flex flex-col gap-1`)],[t.h1([t.Class(`text-3xl font-semibold tracking-tight`)],[`Review`]),t.p([t.Class(`text-muted-foreground`)],[`Answer from memory.`])]),C(e.maybeError,{onNone:()=>n(t.empty,`src/page/review.ts#onNone~17`),onSome:e=>n(t.p([t.Role(`alert`),t.Class(`text-sm text-destructive`)],[e]),`src/page/review.ts#onSome~17`)}),KCe(e,t),q8.match(e.load,{Loading:()=>n(t.div([t.Class(`h-64 animate-pulse rounded-xl bg-muted/60`)]),`src/page/review.ts#Loading`),Failed:({error:e})=>n(t.p([t.Class(`text-sm text-destructive`)],[e]),`src/page/review.ts#Failed`),Ready:({session:r})=>n(GCe(e,r,t),`src/page/review.ts#Ready`)})]),`src/page/review.ts#anonymous~60`)),S5=Math.min,C5=Math.max,w5=Math.round,T5=Math.floor,E5=e=>({x:e,y:e}),JCe={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function D5(e,t,n){return C5(e,S5(t,n))}function O5(e,t){return typeof e==`function`?e(t):e}function k5(e){return e.split(`-`)[0]}function A5(e){return e.split(`-`)[1]}function j5(e){return e===`x`?`y`:`x`}function M5(e){return e===`y`?`height`:`width`}function N5(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function P5(e){return j5(N5(e))}function YCe(e,t,n){n===void 0&&(n=!1);let r=A5(e),i=P5(e),a=M5(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=R5(o)),[o,R5(o)]}function XCe(e){let t=R5(e);return[F5(e),t,F5(t)]}function F5(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var I5=[`left`,`right`],L5=[`right`,`left`],ZCe=[`top`,`bottom`],QCe=[`bottom`,`top`];function $Ce(e,t,n){switch(e){case`top`:case`bottom`:return n?t?L5:I5:t?I5:L5;case`left`:case`right`:return t?ZCe:QCe;default:return[]}}function ewe(e,t,n,r){let i=A5(e),a=$Ce(k5(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(F5)))),a}function R5(e){let t=k5(e);return JCe[t]+e.slice(t.length)}function twe(e){return{top:e.top??0,right:e.right??0,bottom:e.bottom??0,left:e.left??0}}function z5(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:twe(e)}function B5(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function V5(e,t,n){let{reference:r,floating:i}=e,a=N5(t),o=P5(t),s=M5(o),c=k5(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}let m=A5(t);return m&&(p[o]+=f*(m===`end`?1:-1)*(n&&l?-1:1)),p}async function nwe(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=O5(t,e),p=z5(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=B5(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=B5(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var rwe=50,iwe=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:nwe},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=V5(l,r,c),f=r,p=0,m={};for(let n=0;n<a.length;n++){let h=a[n];if(!h)continue;let{name:g,fn:_}=h,{x:v,y,data:ee,reset:te}=await _({x:u,y:d,initialPlacement:r,placement:f,strategy:i,middlewareData:m,rects:l,platform:s,elements:{reference:e,floating:t}});u=v??u,d=y??d,m[g]={...m[g],...ee},te&&p<rwe&&(p++,typeof te==`object`&&(te.placement&&(f=te.placement),te.rects&&(l=te.rects===!0?await o.getElementRects({reference:e,floating:t,strategy:i}):te.rects),{x:u,y:d}=V5(l,f,c)),n=-1)}return{x:u,y:d,placement:f,strategy:i,middlewareData:m}},awe=e=>({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=O5(e,t)||{};if(l==null)return{};let d=z5(u),f={x:n,y:r},p=P5(i),m=M5(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,ee=a.reference[m]+a.reference[p]-f[p]-a.floating[m],te=f[p]-a.reference[p],ne=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),re=ne?ne[y]:0;(!re||!await(o.isElement==null?void 0:o.isElement(ne)))&&(re=s.floating[y]||a.floating[m]);let ie=ee/2-te/2,ae=re/2-h[m]/2-1,oe=S5(d[_],ae),se=S5(d[v],ae),ce=re-h[m]-se,le=re/2-h[m]/2+ie,ue=D5(oe,le,ce),de=!c.arrow&&A5(i)!=null&&le!==ue&&a.reference[m]/2-(le<oe?oe:se)-h[m]/2<0,fe=de?le<oe?le-oe:le-ce:0;return{[p]:f[p]+fe,data:{[p]:ue,centerOffset:le-ue-fe,...de&&{alignmentOffset:fe}},reset:de}}}),owe=function(e){return e===void 0&&(e={}),{name:`flip`,options:e,async fn(t){var n;let{placement:r,middlewareData:i,rects:a,initialPlacement:o,platform:s,elements:c}=t,{mainAxis:l=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f=`bestFit`,fallbackAxisSideDirection:p=`none`,flipAlignment:m=!0,...h}=O5(e,t);if((n=i.arrow)!=null&&n.alignmentOffset)return{};let g=k5(r),_=N5(o),v=k5(o)===o,y=await(s.isRTL==null?void 0:s.isRTL(c.floating)),ee=d||(v||!m?[R5(o)]:XCe(o)),te=p!==`none`;!d&&te&&ee.push(...ewe(o,m,p,y));let ne=[o,...ee],re=await s.detectOverflow(t,h),ie=[],ae=i.flip?.overflows||[];if(l&&ie.push(re[g]),u){let e=YCe(r,a,y);ie.push(re[e[0]],re[e[1]])}if(ae=[...ae,{placement:r,overflows:ie}],!ie.every(e=>e<=0)){let e=(i.flip?.index||0)+1,t=ne[e];if(t&&(u!==`alignment`||_===N5(t)||ae.every(e=>N5(e.placement)!==_||e.overflows[0]>0)))return{data:{index:e,overflows:ae},reset:{placement:t}};let n=ae.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=ae.filter(e=>{if(te){let t=N5(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o}if(r!==n)return{reset:{placement:n}}}return{}}}},swe=new Set([`left`,`top`]);async function cwe(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=k5(n),s=A5(n),c=N5(n)===`y`,l=swe.has(o)?-1:1,u=a&&c?-1:1,d=O5(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var lwe=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await cwe(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},uwe=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=O5(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=N5(i),p=j5(f),m=u[p],h=u[f],g=(e,t)=>D5(t+d[e===`y`?`top`:`left`],t,t-d[e===`y`?`bottom`:`right`]);o&&(m=g(p,m)),s&&(h=g(f,h));let _=c.fn({...t,[p]:m,[f]:h});return{..._,data:{x:_.x-n,y:_.y-r,enabled:{[p]:o,[f]:s}}}}}},dwe=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){let{placement:n,rects:r,platform:i,elements:a}=t,{apply:o=()=>{},...s}=O5(e,t),c=await i.detectOverflow(t,s),l=k5(n),u=A5(n),d=N5(n)===`y`,{width:f,height:p}=r.floating,m,h;l===`top`||l===`bottom`?(m=l,h=u===(await(i.isRTL==null?void 0:i.isRTL(a.floating))?`start`:`end`)?`left`:`right`):(h=l,m=u===`end`?`top`:`bottom`);let g=p-c.top-c.bottom,_=f-c.left-c.right,v=S5(p-c[m],g),y=S5(f-c[h],_),ee=t.middlewareData.shift,te=!ee,ne=v,re=y;ee!=null&&ee.enabled.x&&(re=_),ee!=null&&ee.enabled.y&&(ne=g),te&&!u&&(d?re=f-2*C5(c.left,c.right):ne=p-2*C5(c.top,c.bottom)),await o({...t,availableWidth:re,availableHeight:ne});let ie=await i.getDimensions(a.floating);return f!==ie.width||p!==ie.height?{reset:{rects:!0}}:{}}}};function H5(){return typeof window<`u`}function U5(e){return K5(e)?(e.nodeName||``).toLowerCase():`#document`}function W5(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function G5(e){return((K5(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function K5(e){return H5()?e instanceof Node||e instanceof W5(e).Node:!1}function q5(e){return H5()?e instanceof Element||e instanceof W5(e).Element:!1}function J5(e){return H5()?e instanceof HTMLElement||e instanceof W5(e).HTMLElement:!1}function Y5(e){return!H5()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof W5(e).ShadowRoot}function X5(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=r7(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function fwe(e){return/^(table|td|th)$/.test(U5(e))}function Z5(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var pwe=/transform|translate|scale|rotate|perspective|filter/,mwe=/paint|layout|strict|content/,Q5=e=>!!e&&e!==`none`,$5;function e7(e){let t=q5(e)?r7(e):e;return Q5(t.transform)||Q5(t.translate)||Q5(t.scale)||Q5(t.rotate)||Q5(t.perspective)||!t7()&&(Q5(t.backdropFilter)||Q5(t.filter))||pwe.test(t.willChange||``)||mwe.test(t.contain||``)}function hwe(e){let t=a7(e);for(;J5(t)&&!n7(t);){if(e7(t))return t;if(Z5(t))return null;t=a7(t)}return null}function t7(){return $5??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),$5}function n7(e){return/^(html|body|#document)$/.test(U5(e))}function r7(e){return W5(e).getComputedStyle(e)}function i7(e){return q5(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function a7(e){if(U5(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||Y5(e)&&e.host||G5(e);return Y5(t)?t.host:t}function o7(e){let t=a7(e);return n7(t)?(e.ownerDocument||e).body:J5(t)&&X5(t)?t:o7(t)}function s7(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=o7(e),i=r===e.ownerDocument?.body,a=W5(r);if(i){let e=c7(a);return t.concat(a,a.visualViewport||[],X5(r)?r:[],e&&n?s7(e):[])}return t.concat(r,s7(r,[],n))}function c7(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function l7(e){let t=r7(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=J5(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=w5(n)!==a||w5(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function u7(e){return q5(e)?e:e.contextElement}function d7(e){let t=u7(e);if(!J5(t))return E5(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=l7(t),o=(a?w5(n.width):n.width)/r,s=(a?w5(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var gwe=E5(0);function f7(e){let t=W5(e);return!t7()||!t.visualViewport?gwe:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function _we(e,t,n){return t===void 0&&(t=!1),!!n&&t&&n===W5(e)}function p7(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=u7(e),o=E5(1);t&&(r?q5(r)&&(o=d7(r)):o=d7(e));let s=_we(a,n,r)?f7(a):E5(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a&&r){let e=W5(a),t=q5(r)?W5(r):r,n=e,i=c7(n);for(;i&&t!==n;){let e=d7(i),t=i.getBoundingClientRect(),r=r7(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=W5(i),i=c7(n)}}return B5({width:u,height:d,x:c,y:l})}function m7(e,t){let n=i7(e).scrollLeft;return t?t.left+n:p7(G5(e)).left+n}function h7(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-m7(e,n),y:n.top+t.scrollTop}}function vwe(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=G5(r),s=t?Z5(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=E5(1),u=E5(0),d=J5(r);if((d||!a)&&((U5(r)!==`body`||X5(o))&&(c=i7(r)),d)){let e=p7(r);l=d7(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?h7(o,c):E5(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function ywe(e){return e.getClientRects?Array.from(e.getClientRects()):[]}function bwe(e){let t=i7(e),n=e.ownerDocument.body,r=C5(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),i=C5(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight),a=-t.scrollLeft+m7(e),o=-t.scrollTop;return r7(n).direction===`rtl`&&(a+=C5(e.clientWidth,n.clientWidth)-r),{width:r,height:i,x:a,y:o}}var xwe=25;function Swe(e,t,n){n===void 0&&(n=`viewport`);let r=n===`layoutViewport`,i=W5(e),a=G5(e),o=i.visualViewport,s=a.clientWidth,c=a.clientHeight,l=0,u=0;if(o){let e=!t7()||t===`fixed`;r?e||(l=-o.offsetLeft,u=-o.offsetTop):(s=o.width,c=o.height,e&&(l=o.offsetLeft,u=o.offsetTop))}if(m7(a)<=0){let e=a.ownerDocument,t=e.body,n=getComputedStyle(t),r=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,i=Math.abs(a.clientWidth-t.clientWidth-r),o=getComputedStyle(a).scrollbarGutter===`stable both-edges`?i/2:i;o<=xwe&&(s-=o)}return{width:s,height:c,x:l,y:u}}function Cwe(e,t){let n=p7(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=d7(e);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function g7(e,t,n){let r;if(t===`viewport`||t===`layoutViewport`)r=Swe(e,n,t);else if(t===`document`)r=bwe(G5(e));else if(q5(t))r=Cwe(t,n);else{let n=f7(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return B5(r)}function wwe(e,t){let n=t.get(e);if(n)return n;let r=s7(e,[],!1).filter(e=>q5(e)&&U5(e)!==`body`),i=null,a=r7(e).position===`fixed`,o=a?a7(e):e;for(;q5(o)&&!n7(o);){let e=r7(o),t=e7(o),n=i?i.position:a?`fixed`:``;!t&&(n===`fixed`||n===`absolute`&&e.position===`static`)?r=r.filter(e=>e!==o):i=e,o=a7(o)}return t.set(e,r),r}function Twe(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?Z5(t)?[]:wwe(t,this._c):[].concat(n),r],o=g7(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e<a.length;e++){let n=g7(t,a[e],i);s=C5(n.top,s),c=S5(n.right,c),l=S5(n.bottom,l),u=C5(n.left,u)}return{width:c-u,height:l-s,x:u,y:s}}function Ewe(e){let{width:t,height:n}=l7(e);return{width:t,height:n}}function Dwe(e,t,n){let r=J5(t),i=G5(t),a=n===`fixed`,o=p7(e,!0,a,t),s={scrollLeft:0,scrollTop:0},c=E5(0);if((r||!a)&&((U5(t)!==`body`||X5(i))&&(s=i7(t)),r)){let e=p7(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}!r&&i&&(c.x=m7(i));let l=i&&!r&&!a?h7(i,s):E5(0);return{x:o.left+s.scrollLeft-c.x-l.x,y:o.top+s.scrollTop-c.y-l.y,width:o.width,height:o.height}}function _7(e){return r7(e).position===`static`}function v7(e,t){if(!J5(e)||r7(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return G5(e)===n&&(n=n.ownerDocument.body),n}function y7(e,t){let n=W5(e);if(Z5(e))return n;if(!J5(e)){let t=a7(e);for(;t&&!n7(t);){if(q5(t)&&!_7(t))return t;t=a7(t)}return n}let r=v7(e,t);for(;r&&fwe(r)&&_7(r);)r=v7(r,t);return r&&n7(r)&&_7(r)&&!e7(r)?n:r||hwe(e)||n}var Owe=async function(e){let t=this.getOffsetParent||y7,n=this.getDimensions,r=await n(e.floating);return{reference:Dwe(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function kwe(e){return r7(e).direction===`rtl`}var Awe={convertOffsetParentRelativeRectToViewportRelativeRect:vwe,getDocumentElement:G5,getClippingRect:Twe,getOffsetParent:y7,getElementRects:Owe,getClientRects:ywe,getDimensions:Ewe,getScale:d7,isElement:q5,isRTL:kwe};function b7(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function jwe(e,t,n){let r=null,i,a=G5(e);function o(){var e;clearTimeout(i),(e=r)==null||e.disconnect(),r=null}function s(n,c){n===void 0&&(n=!1),c===void 0&&(c=1),o();let l=e.getBoundingClientRect(),{left:u,top:d,width:f,height:p}=l;if(n||t(),!f||!p)return;let m=T5(d),h=T5(a.clientWidth-(u+f)),g=T5(a.clientHeight-(d+p)),_=T5(u),v={rootMargin:-m+`px `+-h+`px `+-g+`px `+-_+`px`,threshold:C5(0,S5(1,c))||1},y=!0;function ee(t){let n=t[0].intersectionRatio;if(!b7(l,e.getBoundingClientRect()))return s();if(n!==c){if(!y)return s();n?s(!1,n):i=setTimeout(()=>{s(!1,1e-7)},1e3)}y=!1}try{r=new IntersectionObserver(ee,{...v,root:a.ownerDocument})}catch{r=new IntersectionObserver(ee,v)}r.observe(e)}let c=W5(e),l=()=>s(n);return c.addEventListener(`resize`,l),s(!0),()=>{c.removeEventListener(`resize`,l),o()}}function Mwe(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=u7(e),u=i||a?[...l?s7(l):[],...t?s7(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n),a&&e.addEventListener(`resize`,n)});let d=l&&s?jwe(l,n,a):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?p7(e):null;c&&g();function g(){let t=p7(e);h&&!b7(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var Nwe=lwe,Pwe=uwe,Fwe=owe,Iwe=dwe,Lwe=awe,Rwe=(e,t,n)=>{let r=new Map,i=n??{},a={...Awe,...i.platform,_c:r};return iwe(e,t,{...i,platform:a})},zwe=tb([`top`,`right`,`bottom`,`left`,`top-start`,`top-end`,`right-start`,`right-end`,`bottom-start`,`bottom-end`,`left-start`,`left-end`]),Bwe=eb([k,A({top:Ry(k),right:Ry(k),bottom:Ry(k),left:Ry(k)})]),Vwe=A({placement:zy(zwe),gap:zy(k),offset:zy(k),padding:zy(Bwe),portal:zy(Ky),isPlacementLocked:zy(Ky)}),x7=`foldkit-portal-root`,S7=`data-foldkit-portal-root`,Hwe=e=>{let t=e.getRootNode(),r=t instanceof ShadowRoot,i=r?t:document,a=r?t:document.body,o=i.getElementById(x7);if(o)return n(o,`@foldkit/ui/anchor/anchor.js#getOrCreateContainingRootPortalRoot`);let s=document.createElement(`div`);return s.id=x7,a.prepend(s),n(s,`@foldkit/ui/anchor/anchor.js#getOrCreateContainingRootPortalRoot`)},Uwe=e=>{let t=e.querySelector(`:scope > [${S7}]`);if(t instanceof HTMLElement)return n(t,`@foldkit/ui/anchor/anchor.js#getOrCreateDialogPortalRoot`);let r=document.createElement(`div`);return r.setAttribute(S7,``),e.append(r),n(r,`@foldkit/ui/anchor/anchor.js#getOrCreateDialogPortalRoot`)},Wwe=e=>n(e.hasAttribute(S7),`@foldkit/ui/anchor/anchor.js#isDialogPortalRoot`),Gwe=e=>n(C(lr(e.closest(`dialog`)),{onNone:()=>n(Hwe(e),`@foldkit/ui/anchor/anchor.js#onNone`),onSome:Uwe}),`@foldkit/ui/anchor/anchor.js#getOrCreatePortalRoot`),C7=e=>{let t=Gwe(e);return t.appendChild(e),n((()=>{try{e.remove()}catch{}Wwe(t)&&!t.hasChildNodes()&&t.remove()}),`@foldkit/ui/anchor/anchor.js#portalToContainingRoot`)},Kwe=e=>{let t=e.closest(`dialog`);return n(m(lr(e.parentElement),br(e=>n(t!==null&&e!==t,`@foldkit/ui/anchor/anchor.js#anonymous~2`))),`@foldkit/ui/anchor/anchor.js#findWrapperInsideDialog`)},qwe=e=>n(C(Kwe(e),{onNone:()=>n(C7(e),`@foldkit/ui/anchor/anchor.js#onNone~2`),onSome:t=>(t.before(e),n((()=>n(e.remove(),`@foldkit/ui/anchor/anchor.js#anonymous~3`)),`@foldkit/ui/anchor/anchor.js#onSome`))}),`@foldkit/ui/anchor/anchor.js#portalBackdrop`),w7=e=>n(e!==null&&(getComputedStyle(e).position===`fixed`||w7(e.parentElement)),`@foldkit/ui/anchor/anchor.js#isInsideFixedContainer`),Jwe=e=>n(m(e,Dd(`-`),Fi),`@foldkit/ui/anchor/anchor.js#toSide`),T7=(e,t,n)=>{n===void 0?e.style.setProperty(t,`initial`):e.style.setProperty(t,`${n}px`)},Ywe=(e,t)=>{let r=e.getRootNode(),i=r instanceof ShadowRoot,a=i?r:document;if(!(e instanceof HTMLElement))return console.error(`[@foldkit/ui] anchorSetup requires an HTML panel. The panel will not be positioned.`),n(p,`@foldkit/ui/anchor/anchor.js#anchorSetup`);let o=a.getElementById(t.buttonId);if(o===null)return console.error(`[@foldkit/ui] anchorSetup could not find a trigger with id "${t.buttonId}". The panel will not be positioned.`),n(p,`@foldkit/ui/anchor/anchor.js#anchorSetup`);if(!(o instanceof HTMLElement))return console.error(`[@foldkit/ui] anchorSetup requires an HTML trigger with id "${t.buttonId}". The panel will not be positioned.`),n(p,`@foldkit/ui/anchor/anchor.js#anchorSetup`);let s=t.anchor.portal??!0,c=s?C7(e):void 0,l=s&&w7(o),u=i||l?`fixed`:`absolute`;u===`fixed`&&(e.style.position=`fixed`);let d=m(lr(t.arrowId),_r(e=>n(a.getElementById(e),`@foldkit/ui/anchor/anchor.js#anonymous~4`)),br(t=>n(e.contains(t),`@foldkit/ui/anchor/anchor.js#anonymous~5`))),f=C(d,{onNone:()=>n([],`@foldkit/ui/anchor/anchor.js#onNone~3`),onSome:e=>n([Lwe({element:e,padding:t.arrowPadding??0})],`@foldkit/ui/anchor/anchor.js#onSome~2`)}),{placement:h,gap:g,offset:_,padding:v,isPlacementLocked:y}=t.anchor,ee=t.interceptTab??!0,te=y??!1,ne=!0,re=!0,ie=!1,ae=!1,oe=!1,se,ce=()=>{if(!re)return;if(ie){ae=!0;return}let n=te&&se!==void 0,r=Rwe(o,e,{placement:se??h??`bottom-start`,strategy:u,middleware:[Nwe({mainAxis:g??0,crossAxis:_??0}),...n?[]:[Fwe({padding:v??0})],Pwe({padding:v??0}),Iwe({padding:v??0,apply({rects:t,availableHeight:n}){re&&(e.style.setProperty(`--button-width`,`${t.reference.width}px`),e.style.maxHeight=`${Math.max(0,n)}px`,or(d)&&(e.style.overflowY=`auto`,e.style.overscrollBehavior=`none`))}}),...f]});ie=!0,r.then(({x:n,y:r,placement:i,middlewareData:o})=>{if(oe=!1,re){if(e.style.left=`${n}px`,e.style.top=`${r}px`,te&&(se??=i),e.setAttribute(`data-placement`,Jwe(se??i)),S(d)){let{x:t,y:n}=o.arrow??{};T7(e,`--arrow-x`,t),T7(e,`--arrow-y`,n)}ne&&(ne=!1,e.style.visibility=``,(t.focusAfterPosition??!1)&&requestAnimationFrame(()=>{if(!re)return;let n=t.focusSelector?a.querySelector(t.focusSelector):e;n instanceof HTMLElement&&n.focus({preventScroll:!0})}))}},e=>{oe||(oe=!0,console.error(`[@foldkit/ui] anchorSetup could not position the panel. It keeps the visibility its caller rendered until positioning succeeds.`,e))}).finally(()=>{ie=!1,re&&ae&&(ae=!1,ce())})},le=Mwe(o,e,ce),ue=e=>{e instanceof KeyboardEvent&&e.key===`Tab`&&o.focus()},de=s&&ee;return de&&e.addEventListener(`keydown`,ue),n((()=>{re=!1,ae=!1,le(),de&&e.removeEventListener(`keydown`,ue),e.removeAttribute(`data-placement`),e.style.removeProperty(`overflow-y`),e.style.removeProperty(`overscroll-behavior`),e.style.removeProperty(`--arrow-x`),e.style.removeProperty(`--arrow-y`),c?.()}),`@foldkit/ui/anchor/anchor.js#anchorSetup`)},Xwe=A({id:O,isShowing:Ky,transitionState:tb([`Idle`,`EnterStart`,`EnterAnimating`,`LeaveStart`,`LeaveAnimating`]),transitionGeneration:k}),E7=fT({Showed:{},Hid:{},CompletedWaitForPaint:{generation:k},EndedAnimation:{generation:k}}),D7=fT({StartedLeaveAnimating:{generation:k},TransitionedOut:{}}),Zwe=e=>n({id:e.id,isShowing:e.isShowing??!1,transitionState:`Idle`,transitionGeneration:0},`@foldkit/ui/animation/schema.js#init`),Qwe=0,$we=`�`,eTe=127,tTe=31,nTe=48,rTe=57,O7=45,iTe=95,aTe=65,oTe=90,sTe=97,cTe=122,lTe=128,k7=e=>n(e>=nTe&&e<=rTe,`@foldkit/ui/internal/selectors.js#isDigitCode`),uTe=e=>n(e>=lTe||k7(e)||e===O7||e===iTe||e>=aTe&&e<=oTe||e>=sTe&&e<=cTe,`@foldkit/ui/internal/selectors.js#isIdentifierCode`),dTe=e=>{let t=e.charCodeAt(0),r=``;for(let n=0;n<e.length;n++){let i=e.charCodeAt(n),a=e.charAt(n);i===Qwe?r+=$we:i>=1&&i<=tTe||i===eTe||k7(i)&&(n===0||n===1&&t===O7)?r+=`\\${i.toString(16)} `:n===0&&i===O7&&e.length===1?r+=`\\${a}`:uTe(i)?r+=a:r+=`\\${a}`}return n(r,`@foldkit/ui/internal/selectors.js#escapeCssIdentifier`)},A7=e=>n(`#${dTe(e)}`,`@foldkit/ui/internal/selectors.js#idSelector`),fTe=e=>n(A7(e),`@foldkit/ui/animation/update.js#elementSelector`),j7=Ow(),M7=N(`WaitForPaint`,{args:{generation:k},messages:[E7.CompletedWaitForPaint],execute:({generation:e})=>n(Kde.pipe(tf(E7.CompletedWaitForPaint({generation:e}))),`@foldkit/ui/animation/update.js#execute`)}),pTe=N(`WaitForAnimationSettled`,{args:{id:O,generation:k},messages:[E7.EndedAnimation],execute:({id:e,generation:t})=>n(fk(fTe(e)).pipe(tf(E7.EndedAnimation({generation:t}))),`@foldkit/ui/animation/update.js#execute~2`)});function N7(e,t){return n(E7.match(t,{Showed:()=>{if(e.isShowing)return n({model:e},`@foldkit/ui/animation/update.js#Showed`);let t=bd(e.transitionGeneration);return n({model:P(e,{isShowing:()=>n(!0,`@foldkit/ui/animation/update.js#isShowing`),transitionState:()=>n(`EnterStart`,`@foldkit/ui/animation/update.js#transitionState`),transitionGeneration:()=>n(t,`@foldkit/ui/animation/update.js#transitionGeneration`)}),commands:[M7({generation:t})]},`@foldkit/ui/animation/update.js#Showed`)},Hid:()=>{if(e.transitionState===`LeaveStart`||e.transitionState===`LeaveAnimating`||!e.isShowing)return n({model:e},`@foldkit/ui/animation/update.js#Hid`);let t=bd(e.transitionGeneration);return n({model:P(e,{isShowing:()=>n(!1,`@foldkit/ui/animation/update.js#isShowing~2`),transitionState:()=>n(`LeaveStart`,`@foldkit/ui/animation/update.js#transitionState~2`),transitionGeneration:()=>n(t,`@foldkit/ui/animation/update.js#transitionGeneration~2`)}),commands:[M7({generation:t})]},`@foldkit/ui/animation/update.js#Hid`)},CompletedWaitForPaint:({generation:t})=>t===e.transitionGeneration?n(Ew(e.transitionState).pipe(j7,kw(`EnterStart`,()=>n({model:P(e,{transitionState:()=>n(`EnterAnimating`,`@foldkit/ui/animation/update.js#transitionState~3`)}),commands:[pTe({id:e.id,generation:e.transitionGeneration})]},`@foldkit/ui/animation/update.js#anonymous`)),kw(`LeaveStart`,()=>n({model:P(e,{transitionState:()=>n(`LeaveAnimating`,`@foldkit/ui/animation/update.js#transitionState~4`)}),outMessage:D7.StartedLeaveAnimating({generation:e.transitionGeneration})},`@foldkit/ui/animation/update.js#anonymous~2`)),Pw(()=>n({model:e},`@foldkit/ui/animation/update.js#anonymous~3`))),`@foldkit/ui/animation/update.js#CompletedWaitForPaint`):n({model:e},`@foldkit/ui/animation/update.js#CompletedWaitForPaint`),EndedAnimation:({generation:t})=>t===e.transitionGeneration?n(Ew(e.transitionState).pipe(j7,kw(`EnterAnimating`,()=>n({model:P(e,{transitionState:()=>n(`Idle`,`@foldkit/ui/animation/update.js#transitionState~5`)})},`@foldkit/ui/animation/update.js#anonymous~4`)),kw(`LeaveAnimating`,()=>n({model:P(e,{transitionState:()=>n(`Idle`,`@foldkit/ui/animation/update.js#transitionState~6`)}),outMessage:D7.TransitionedOut()},`@foldkit/ui/animation/update.js#anonymous~5`)),Pw(()=>n({model:e},`@foldkit/ui/animation/update.js#anonymous~6`))),`@foldkit/ui/animation/update.js#EndedAnimation`):n({model:e},`@foldkit/ui/animation/update.js#EndedAnimation`)}),`@foldkit/ui/animation/update.js#update`)}var mTe=e=>n(N7(e,E7.Showed()),`@foldkit/ui/animation/update.js#show`),hTe=e=>n(N7(e,E7.Hid()),`@foldkit/ui/animation/update.js#hide`),P7=o(2,(e,t)=>n(xr(t,()=>n(e,`@foldkit/ui/internal/optionExtensions.js#anonymous~2`)),`@foldkit/ui/internal/optionExtensions.js#anonymous`)),gTe=(e,t)=>n(na(w(e,(e,r)=>n({key:t(e,r),item:e},`@foldkit/ui/group.js#anonymous`)),e=>{let t=Fi(e).key,[r,i]=Wi(e,e=>n(e.key===t,`@foldkit/ui/group.js#anonymous~3`));return n([{key:t,items:w(r,({item:e})=>n(e,`@foldkit/ui/group.js#anonymous~4`))},i],`@foldkit/ui/group.js#anonymous~2`)}),`@foldkit/ui/group.js#groupContiguous`),_Te=e=>n(e.length===1,`@foldkit/ui/keyboard.js#isPrintableKey`),F7=(e,t)=>n((e%t+t)%t,`@foldkit/ui/keyboard.js#wrapIndex`),I7=(e,t,r)=>n(((i,a)=>n(m(e,_i(t=>n(F7(i+t*a,e),`@foldkit/ui/keyboard.js#anonymous~2`)),Yi(Se(r)),sr(()=>n(t,`@foldkit/ui/keyboard.js#anonymous~3`))),`@foldkit/ui/keyboard.js#anonymous`)),`@foldkit/ui/keyboard.js#findFirstEnabledIndex`),vTe=(e,t,r,i,a)=>{let o=I7(r,i,a);return n((a=>n(Ew(a).pipe(kw(e,()=>n(o(i+1,1),`@foldkit/ui/keyboard.js#anonymous~5`)),kw(t,()=>n(o(i-1,-1),`@foldkit/ui/keyboard.js#anonymous~6`)),Aw(`Home`,`PageUp`,()=>n(o(0,1),`@foldkit/ui/keyboard.js#anonymous~7`)),Aw(`End`,`PageDown`,()=>n(o(r-1,-1),`@foldkit/ui/keyboard.js#anonymous~8`)),Pw(()=>n(i,`@foldkit/ui/keyboard.js#anonymous~9`))),`@foldkit/ui/keyboard.js#anonymous~4`)),`@foldkit/ui/keyboard.js#keyToIndex`)},yTe=(e,t,r,i,a,o)=>{let s=Cd(t),c=+!o,l=C(r,{onNone:()=>n(0,`@foldkit/ui/typeahead.js#onNone`),onSome:e=>n(e+c,`@foldkit/ui/typeahead.js#onSome`)});return n(m(e,Ai,_i(t=>n(F7(l+t,e.length),`@foldkit/ui/typeahead.js#anonymous~2`)),Yi(t=>n(!i(t)&&m(e,Mi(t),Cr(e=>n(m(a(e,t),Cd,Od(s)),`@foldkit/ui/typeahead.js#anonymous`))),`@foldkit/ui/typeahead.js#isEnabledMatch`))),`@foldkit/ui/typeahead.js#resolveTypeaheadMatch`)},L7=tb([`Pointer`,`Keyboard`]),bTe=A({id:O,isOpen:Ky,isAnimated:Ky,isModal:Ky,orientation:tb([`Vertical`,`Horizontal`]),animation:Xwe,maybeActiveItemIndex:Mb(k),activationTrigger:L7,searchQuery:O,searchVersion:k,maybeLastPointerPosition:Mb(A({screenX:k,screenY:k})),maybeLastButtonPointerType:Mb(O)}),xTe=e=>n({id:e.id,isOpen:!1,isAnimated:e.isAnimated??!1,isModal:e.isModal??!1,orientation:e.orientation??`Vertical`,animation:Zwe({id:`${e.id}-listbox`}),maybeActiveItemIndex:b(),activationTrigger:`Keyboard`,searchQuery:``,searchVersion:0,maybeLastPointerPosition:b(),maybeLastButtonPointerType:b()},`@foldkit/ui/listbox/shared.js#baseInit`),R7=fT({Opened:{maybeActiveItemIndex:Mb(k)},Closed:{},BlurredItems:{},ActivatedItem:{index:k,activationTrigger:L7},DeactivatedItem:{},SelectedItem:{item:O},MovedPointerOverItem:{index:k,screenX:k,screenY:k},RequestedItemClick:{index:k},Searched:{key:O,maybeTargetIndex:Mb(k)},CompletedDelayClearSearch:{version:k},CompletedLockScroll:{},CompletedUnlockScroll:{},CompletedInertOthers:{},CompletedRestoreInert:{},CompletedFocusButton:{},CompletedFocusItems:{},CompletedScrollIntoView:{},CompletedClickItem:{},IgnoredMouseClick:{},SuppressedSpaceScroll:{},SuppressedItemCommit:{},CompletedAnchorListbox:{},CompletedPortalListboxBackdrop:{},GotAnimationMessage:{message:E7},PressedPointerOnButton:{pointerType:O,button:k}}),z7=fT({Selected:{value:O}}),B7=e=>n(A7(`${e}-button`),`@foldkit/ui/listbox/shared.js#buttonSelector`),V7=e=>n(A7(`${e}-items`),`@foldkit/ui/listbox/shared.js#itemsSelector`),H7=(e,t)=>n(A7(`${e}-item-${t}`),`@foldkit/ui/listbox/shared.js#itemSelector`),U7=(e,t)=>n(`${e}-item-${t}`,`@foldkit/ui/listbox/shared.js#itemId`),W7=tj(),STe=e=>n(W7(e,{isOpen:()=>n(!1,`@foldkit/ui/listbox/shared.js#isOpen`),maybeActiveItemIndex:()=>n(b(),`@foldkit/ui/listbox/shared.js#maybeActiveItemIndex`),searchQuery:()=>n(``,`@foldkit/ui/listbox/shared.js#searchQuery`),searchVersion:()=>n(0,`@foldkit/ui/listbox/shared.js#searchVersion`),maybeLastPointerPosition:()=>n(b(),`@foldkit/ui/listbox/shared.js#maybeLastPointerPosition`),maybeLastButtonPointerType:()=>n(b(),`@foldkit/ui/listbox/shared.js#maybeLastButtonPointerType`)}),`@foldkit/ui/listbox/shared.js#closedModel`),CTe=N(`LockScroll`,{messages:[R7.CompletedLockScroll],execute:cfe.pipe(tf(R7.CompletedLockScroll()))}),wTe=N(`UnlockScroll`,{messages:[R7.CompletedUnlockScroll],execute:JO.pipe(tf(R7.CompletedUnlockScroll()))}),TTe=N(`InertOthers`,{args:{id:O},messages:[R7.CompletedInertOthers],execute:({id:e})=>n(nfe(e,[B7(e),V7(e)]).pipe(tf(R7.CompletedInertOthers())),`@foldkit/ui/listbox/shared.js#execute`)}),ETe=N(`RestoreInert`,{args:{id:O},messages:[R7.CompletedRestoreInert],execute:({id:e})=>n(rfe(e).pipe(tf(R7.CompletedRestoreInert())),`@foldkit/ui/listbox/shared.js#execute~2`)}),DTe=N(`FocusButton`,{args:{id:O},messages:[R7.CompletedFocusButton],execute:({id:e})=>n(lk(B7(e)).pipe(lf,tf(R7.CompletedFocusButton())),`@foldkit/ui/listbox/shared.js#execute~3`)}),OTe=N(`FocusItems`,{args:{id:O},messages:[R7.CompletedFocusItems],execute:({id:e})=>n(lk(V7(e)).pipe(lf,tf(R7.CompletedFocusItems())),`@foldkit/ui/listbox/shared.js#execute~4`)}),kTe=N(`ScrollIntoView`,{args:{id:O,index:k},messages:[R7.CompletedScrollIntoView],execute:({id:e,index:t})=>n(_fe(H7(e,t)).pipe(lf,tf(R7.CompletedScrollIntoView())),`@foldkit/ui/listbox/shared.js#execute~5`)}),ATe=N(`ClickItem`,{args:{id:O,index:k},messages:[R7.CompletedClickItem],execute:({id:e,index:t})=>n(gfe(H7(e,t)).pipe(lf,tf(R7.CompletedClickItem())),`@foldkit/ui/listbox/shared.js#execute~6`)}),jTe=N(`DelayClearSearch`,{args:{version:k},messages:[R7.CompletedDelayClearSearch],execute:({version:e})=>n(ff(350).pipe(tf(R7.CompletedDelayClearSearch({version:e}))),`@foldkit/ui/listbox/shared.js#execute~7`)}),MTe=N(`DetectMovementOrAnimationEnd`,{args:{id:O,generation:k},messages:[R7.GotAnimationMessage],execute:({id:e,generation:t})=>n(pf(vfe(B7(e)).pipe(tf(R7.GotAnimationMessage({message:E7.EndedAnimation({generation:t})}))),fk(V7(e)).pipe(tf(R7.GotAnimationMessage({message:E7.EndedAnimation({generation:t})})))),`@foldkit/ui/listbox/shared.js#execute~8`)}),NTe=e=>{let t=LN({update:N7,read:e=>n(x(e.animation),`@foldkit/ui/listbox/shared.js#read`),write:(e,t)=>n(W7(e,{animation:()=>n(t,`@foldkit/ui/listbox/shared.js#animation`)}),`@foldkit/ui/listbox/shared.js#write`),toParentMessage:e=>n(R7.GotAnimationMessage({message:e}),`@foldkit/ui/listbox/shared.js#toParentMessage`),foldOutMessage:D7.match({StartedLeaveAnimating:({generation:e})=>n((t=>n({model:t,commands:[MTe({id:t.id,generation:e})]},`@foldkit/ui/listbox/shared.js#anonymous`)),`@foldkit/ui/listbox/shared.js#StartedLeaveAnimating`),TransitionedOut:()=>n((e=>n({model:e},`@foldkit/ui/listbox/shared.js#anonymous~2`)),`@foldkit/ui/listbox/shared.js#TransitionedOut`)})}),r=VN({update:mTe,read:e=>n(x(e.animation),`@foldkit/ui/listbox/shared.js#read~2`),write:(e,t)=>n(W7(e,{animation:()=>n(t,`@foldkit/ui/listbox/shared.js#animation~2`)}),`@foldkit/ui/listbox/shared.js#write~2`),toParentMessage:e=>n(R7.GotAnimationMessage({message:e}),`@foldkit/ui/listbox/shared.js#toParentMessage~2`)}),i=VN({update:hTe,read:e=>n(x(e.animation),`@foldkit/ui/listbox/shared.js#read~3`),write:(e,t)=>n(W7(e,{animation:()=>n(t,`@foldkit/ui/listbox/shared.js#animation~3`)}),`@foldkit/ui/listbox/shared.js#write~3`),toParentMessage:e=>n(R7.GotAnimationMessage({message:e}),`@foldkit/ui/listbox/shared.js#toParentMessage~3`)}),a=(e,t)=>e.isAnimated?n(IN(e,[e=>n({model:e,commands:t},`@foldkit/ui/listbox/shared.js#anonymous~3`),r,e=>n({model:W7(e,{isOpen:()=>n(!0,`@foldkit/ui/listbox/shared.js#isOpen~2`)})},`@foldkit/ui/listbox/shared.js#anonymous~4`)]),`@foldkit/ui/listbox/shared.js#openListbox`):n({model:W7(e,{isOpen:()=>n(!0,`@foldkit/ui/listbox/shared.js#isOpen~3`)}),commands:t},`@foldkit/ui/listbox/shared.js#openListbox`),o=(e,t)=>{if(!e.isOpen)return n({model:e},`@foldkit/ui/listbox/shared.js#closeListbox`);let r=STe(e);return e.isAnimated?n(IN(r,[e=>n({model:e,commands:t},`@foldkit/ui/listbox/shared.js#anonymous~5`),i]),`@foldkit/ui/listbox/shared.js#closeListbox`):n({model:r,commands:t},`@foldkit/ui/listbox/shared.js#closeListbox`)};return n((r,i)=>{let s=P7(r.isModal,CTe()),c=P7(r.isModal,wTe()),l=P7(r.isModal,TTe({id:r.id})),u=P7(r.isModal,ETe({id:r.id})),d=DTe({id:r.id}),f=OTe({id:r.id}),p=[...la([s,l]),f],h=[d,...la([c,u])],g=la([c,u]);return n(R7.match(i,{CompletedLockScroll:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedLockScroll`),CompletedUnlockScroll:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedUnlockScroll`),CompletedInertOthers:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedInertOthers`),CompletedRestoreInert:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedRestoreInert`),CompletedFocusButton:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedFocusButton`),CompletedFocusItems:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedFocusItems`),CompletedScrollIntoView:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedScrollIntoView`),CompletedClickItem:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedClickItem`),SuppressedSpaceScroll:()=>n({model:r},`@foldkit/ui/listbox/shared.js#SuppressedSpaceScroll`),SuppressedItemCommit:()=>n({model:r},`@foldkit/ui/listbox/shared.js#SuppressedItemCommit`),CompletedAnchorListbox:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedAnchorListbox`),CompletedPortalListboxBackdrop:()=>n({model:r},`@foldkit/ui/listbox/shared.js#CompletedPortalListboxBackdrop`),Opened:({maybeActiveItemIndex:e})=>n(a(W7(r,{maybeActiveItemIndex:()=>n(e,`@foldkit/ui/listbox/shared.js#maybeActiveItemIndex~2`),activationTrigger:()=>n(C(e,{onNone:()=>n(`Pointer`,`@foldkit/ui/listbox/shared.js#onNone`),onSome:()=>n(`Keyboard`,`@foldkit/ui/listbox/shared.js#onSome`)}),`@foldkit/ui/listbox/shared.js#activationTrigger`),searchQuery:()=>n(``,`@foldkit/ui/listbox/shared.js#searchQuery~2`),searchVersion:()=>n(0,`@foldkit/ui/listbox/shared.js#searchVersion~2`),maybeLastPointerPosition:()=>n(b(),`@foldkit/ui/listbox/shared.js#maybeLastPointerPosition~2`)}),p),`@foldkit/ui/listbox/shared.js#Opened`),Closed:()=>n(o(r,h),`@foldkit/ui/listbox/shared.js#Closed`),BlurredItems:()=>Cr(r.maybeLastButtonPointerType,Ue(`mouse`))?n({model:r},`@foldkit/ui/listbox/shared.js#BlurredItems`):n(o(r,g),`@foldkit/ui/listbox/shared.js#BlurredItems`),ActivatedItem:({index:e,activationTrigger:t})=>n({model:W7(r,{maybeActiveItemIndex:()=>n(x(e),`@foldkit/ui/listbox/shared.js#maybeActiveItemIndex~3`),activationTrigger:()=>n(t,`@foldkit/ui/listbox/shared.js#activationTrigger~2`)}),commands:t===`Keyboard`?[kTe({id:r.id,index:e})]:[]},`@foldkit/ui/listbox/shared.js#ActivatedItem`),MovedPointerOverItem:({index:e,screenX:t,screenY:i})=>Cr(r.maybeLastPointerPosition,e=>n(e.screenX===t&&e.screenY===i,`@foldkit/ui/listbox/shared.js#anonymous~6`))?n({model:r},`@foldkit/ui/listbox/shared.js#MovedPointerOverItem`):n({model:W7(r,{maybeActiveItemIndex:()=>n(x(e),`@foldkit/ui/listbox/shared.js#maybeActiveItemIndex~4`),activationTrigger:()=>n(`Pointer`,`@foldkit/ui/listbox/shared.js#activationTrigger~3`),maybeLastPointerPosition:()=>n(x({screenX:t,screenY:i}),`@foldkit/ui/listbox/shared.js#maybeLastPointerPosition~3`)})},`@foldkit/ui/listbox/shared.js#MovedPointerOverItem`),DeactivatedItem:()=>n(r.activationTrigger===`Pointer`?{model:W7(r,{maybeActiveItemIndex:()=>n(b(),`@foldkit/ui/listbox/shared.js#maybeActiveItemIndex~5`)})}:{model:r},`@foldkit/ui/listbox/shared.js#DeactivatedItem`),SelectedItem:({item:t})=>n(e(r,t,{closeWithFocus:(e,t)=>n(m(o(e,h),FN(t)),`@foldkit/ui/listbox/shared.js#closeWithFocus`),closeWithoutFocus:(e,t)=>n(m(o(e,g),FN(t)),`@foldkit/ui/listbox/shared.js#closeWithoutFocus`)}),`@foldkit/ui/listbox/shared.js#SelectedItem`),RequestedItemClick:({index:e})=>n({model:r,commands:[ATe({id:r.id,index:e})]},`@foldkit/ui/listbox/shared.js#RequestedItemClick`),Searched:({key:e,maybeTargetIndex:t})=>{let i=r.searchQuery+e,a=bd(r.searchVersion);return n({model:W7(r,{searchQuery:()=>n(i,`@foldkit/ui/listbox/shared.js#searchQuery~3`),searchVersion:()=>n(a,`@foldkit/ui/listbox/shared.js#searchVersion~3`),maybeActiveItemIndex:()=>n(cr(t,()=>n(r.maybeActiveItemIndex,`@foldkit/ui/listbox/shared.js#anonymous~7`)),`@foldkit/ui/listbox/shared.js#maybeActiveItemIndex~6`)}),commands:[jTe({version:a})]},`@foldkit/ui/listbox/shared.js#Searched`)},CompletedDelayClearSearch:({version:e})=>e===r.searchVersion?n({model:W7(r,{searchQuery:()=>n(``,`@foldkit/ui/listbox/shared.js#searchQuery~4`)})},`@foldkit/ui/listbox/shared.js#CompletedDelayClearSearch`):n({model:r},`@foldkit/ui/listbox/shared.js#CompletedDelayClearSearch`),GotAnimationMessage:({message:e})=>n(t(r,e),`@foldkit/ui/listbox/shared.js#GotAnimationMessage`),PressedPointerOnButton:({pointerType:e,button:t})=>{let i=W7(r,{maybeLastButtonPointerType:()=>n(x(e),`@foldkit/ui/listbox/shared.js#maybeLastButtonPointerType~2`)});return e!==`mouse`||t!==0?n({model:i},`@foldkit/ui/listbox/shared.js#PressedPointerOnButton`):r.isOpen?n(IN(i,[e=>n(o(e,h),`@foldkit/ui/listbox/shared.js#anonymous~8`),t=>n({model:W7(t,{maybeLastButtonPointerType:()=>n(x(e),`@foldkit/ui/listbox/shared.js#maybeLastButtonPointerType~3`)})},`@foldkit/ui/listbox/shared.js#anonymous~9`)]),`@foldkit/ui/listbox/shared.js#PressedPointerOnButton`):n(a(W7(i,{maybeActiveItemIndex:()=>n(b(),`@foldkit/ui/listbox/shared.js#maybeActiveItemIndex~7`),activationTrigger:()=>n(`Pointer`,`@foldkit/ui/listbox/shared.js#activationTrigger~4`),searchQuery:()=>n(``,`@foldkit/ui/listbox/shared.js#searchQuery~5`),searchVersion:()=>n(0,`@foldkit/ui/listbox/shared.js#searchVersion~4`),maybeLastPointerPosition:()=>n(b(),`@foldkit/ui/listbox/shared.js#maybeLastPointerPosition~4`)}),p),`@foldkit/ui/listbox/shared.js#PressedPointerOnButton`)},IgnoredMouseClick:()=>n({model:W7(r,{maybeLastButtonPointerType:()=>n(b(),`@foldkit/ui/listbox/shared.js#maybeLastButtonPointerType~4`)})},`@foldkit/ui/listbox/shared.js#IgnoredMouseClick`)}),`@foldkit/ui/listbox/shared.js#internalUpdate`)},`@foldkit/ui/listbox/shared.js#makeUpdate`)},PTe=jE(`AnchorListbox`,{args:{buttonId:O,anchor:Vwe},messages:[R7.CompletedAnchorListbox],execute:({element:e,buttonId:t,anchor:r})=>n(D(function*(){return yield*Tf(E(()=>n(Ywe(e,{buttonId:t,anchor:r,focusAfterPosition:!0}),`@foldkit/ui/listbox/shared.js#anonymous~11`)),e=>n(E(e),`@foldkit/ui/listbox/shared.js#anonymous~12`)),n(R7.CompletedAnchorListbox(),`@foldkit/ui/listbox/shared.js#anonymous~10`)}),`@foldkit/ui/listbox/shared.js#execute~9`)}),FTe=jE(`PortalListboxBackdrop`,{messages:[R7.CompletedPortalListboxBackdrop],execute:({element:e})=>n(D(function*(){return yield*Tf(E(()=>n(qwe(e),`@foldkit/ui/listbox/shared.js#anonymous~14`)),e=>n(E(e),`@foldkit/ui/listbox/shared.js#anonymous~15`)),n(R7.CompletedPortalListboxBackdrop(),`@foldkit/ui/listbox/shared.js#anonymous~13`)}),`@foldkit/ui/listbox/shared.js#execute~10`)}),ITe=e=>{let t=qD((t,r,i)=>{let{id:a,isOpen:o,orientation:s,animation:{transitionState:c},maybeActiveItemIndex:l,searchQuery:u,maybeLastButtonPointerType:d}=t,{items:f,itemToConfig:p,isItemDisabled:h,isButtonDisabled:g,buttonContent:_,buttonClassName:v,buttonAttributes:y=[],itemsClassName:ee,itemsAttributes:te=[],itemsScrollClassName:ne,itemsScrollAttributes:re=[],backdropClassName:ie,backdropAttributes:ae=[],className:oe,attributes:se=[],itemGroupKey:ce,groupToHeading:le,groupClassName:de,groupAttributes:fe=[],separatorClassName:pe,separatorAttributes:me=[],anchor:he={},name:ge,form:_e,isDisabled:ve,isReadOnly:ye=!1,isInvalid:be,ariaLabel:xe,ariaLabelledBy:Se,selectedValues:Ce}=r,we=r.itemToValue??(e=>n(globalThis.String(e),`@foldkit/ui/listbox/shared.js#anonymous~17`)),Te=e=>n(ta(Ce,e),`@foldkit/ui/listbox/shared.js#isValueSelected`),Ee=r.itemToSearchText??(e=>n(we(e),`@foldkit/ui/listbox/shared.js#anonymous~18`)),De=c===`LeaveStart`||c===`LeaveAnimating`,Oe=o||De,ke=Ew(c).pipe(kw(`EnterStart`,()=>n([i.DataAttribute(`closed`,``),i.DataAttribute(`enter`,``),i.DataAttribute(`transition`,``)],`@foldkit/ui/listbox/shared.js#anonymous~19`)),kw(`EnterAnimating`,()=>n([i.DataAttribute(`enter`,``),i.DataAttribute(`transition`,``)],`@foldkit/ui/listbox/shared.js#anonymous~20`)),kw(`LeaveStart`,()=>n([i.DataAttribute(`leave`,``),i.DataAttribute(`transition`,``)],`@foldkit/ui/listbox/shared.js#anonymous~21`)),kw(`LeaveAnimating`,()=>n([i.DataAttribute(`closed`,``),i.DataAttribute(`leave`,``),i.DataAttribute(`transition`,``)],`@foldkit/ui/listbox/shared.js#anonymous~22`)),Pw(()=>n([],`@foldkit/ui/listbox/shared.js#anonymous~23`))),Ae=e=>n(ue(h)&&m(f,Mi(e),Cr(t=>n(h(t,e),`@foldkit/ui/listbox/shared.js#anonymous~24`))),`@foldkit/ui/listbox/shared.js#isItemDisabledByIndex`),je=ve||g,Me=s===`Horizontal`?`ArrowRight`:`ArrowDown`,Ne=s===`Horizontal`?`ArrowLeft`:`ArrowUp`,Pe=[Me,Ne,`Home`,`End`,`PageUp`,`PageDown`],Fe=e=>n(ta(Pe,e),`@foldkit/ui/listbox/shared.js#isNavigationKey`),Ie=I7(f.length,0,Ae)(0,1),Le=I7(f.length,0,Ae)(f.length-1,-1),Re=m(Ce,Pi,gr(e=>n(qi(f,t=>n(we(t)===e,`@foldkit/ui/listbox/shared.js#anonymous~26`)),`@foldkit/ui/listbox/shared.js#anonymous~25`))),ze=e=>n(o?Ke(e):Ew(e).pipe(Aw(`Enter`,` `,`ArrowDown`,()=>n(x(R7.Opened({maybeActiveItemIndex:cr(Re,()=>n(x(Ie),`@foldkit/ui/listbox/shared.js#anonymous~28`))})),`@foldkit/ui/listbox/shared.js#anonymous~27`)),kw(`ArrowUp`,()=>n(x(R7.Opened({maybeActiveItemIndex:cr(Re,()=>n(x(Le),`@foldkit/ui/listbox/shared.js#anonymous~30`))})),`@foldkit/ui/listbox/shared.js#anonymous~29`)),Pw(()=>n(b(),`@foldkit/ui/listbox/shared.js#anonymous~31`))),`@foldkit/ui/listbox/shared.js#handleButtonKeyDown`),Be=(e,t)=>n(x(R7.PressedPointerOnButton({pointerType:e,button:t})),`@foldkit/ui/listbox/shared.js#handleButtonPointerDown`),Ve=()=>Cr(d,e=>n(e===`mouse`,`@foldkit/ui/listbox/shared.js#anonymous~32`))?n(R7.IgnoredMouseClick(),`@foldkit/ui/listbox/shared.js#handleButtonClick`):n(o?R7.Closed():R7.Opened({maybeActiveItemIndex:b()}),`@foldkit/ui/listbox/shared.js#handleButtonClick`),He=e=>n(P7(e===` `,R7.SuppressedSpaceScroll()),`@foldkit/ui/listbox/shared.js#handleSpaceKeyUp`),Ue=e=>n(C(l,{onNone:()=>n(Ew(e).pipe(Aw(Ne,`End`,`PageDown`,()=>n(Le,`@foldkit/ui/listbox/shared.js#anonymous~33`)),Pw(()=>n(Ie,`@foldkit/ui/listbox/shared.js#anonymous~34`))),`@foldkit/ui/listbox/shared.js#onNone~2`),onSome:t=>n(vTe(Me,Ne,f.length,t,Ae)(e),`@foldkit/ui/listbox/shared.js#onSome~2`)}),`@foldkit/ui/listbox/shared.js#resolveActiveIndex`),We=e=>{let t=u+e,r=yTe(f,t,l,Ae,Ee,Ed(u));return n(x(R7.Searched({key:e,maybeTargetIndex:r})),`@foldkit/ui/listbox/shared.js#searchForKey`)},Ge=()=>n(ye?hr(l,R7.SuppressedItemCommit()):mr(l,e=>n(R7.RequestedItemClick({index:e}),`@foldkit/ui/listbox/shared.js#anonymous~35`)),`@foldkit/ui/listbox/shared.js#resolveCommitMessage`),Ke=e=>n(Ew(e).pipe(kw(`Escape`,()=>n(x(R7.Closed()),`@foldkit/ui/listbox/shared.js#anonymous~36`)),kw(`Enter`,Ge),kw(` `,()=>n(Ed(u)?We(` `):Ge(),`@foldkit/ui/listbox/shared.js#anonymous~37`)),kw(Fe,()=>n(x(R7.ActivatedItem({index:Ue(e),activationTrigger:`Keyboard`})),`@foldkit/ui/listbox/shared.js#anonymous~38`)),kw(_Te,()=>n(We(e),`@foldkit/ui/listbox/shared.js#anonymous~39`)),Pw(()=>n(b(),`@foldkit/ui/listbox/shared.js#anonymous~40`))),`@foldkit/ui/listbox/shared.js#handleItemsKeyDown`),qe=ue(xe)?n([i.AriaLabel(xe)],`@foldkit/ui/listbox/shared.js#resolveButtonLabel`):ue(Se)?n([i.AriaLabelledBy(Se)],`@foldkit/ui/listbox/shared.js#resolveButtonLabel`):n([],`@foldkit/ui/listbox/shared.js#resolveButtonLabel`),Je=[i.Id(`${a}-button`),i.Type(`button`),i.AriaHasPopup(`listbox`),i.AriaExpanded(Oe),...Oe?[i.AriaControls(`${a}-items`)]:[],...qe,...je?[i.AriaDisabled(!0),i.DataAttribute(`disabled`,``)]:[i.OnPointerDown(Be),i.OnKeyDownPreventDefault(ze),i.OnKeyUpPreventDefault(He),i.OnClick(Ve())],...Oe?[i.DataAttribute(`open`,``),i.Style({position:`relative`,zIndex:`1`})]:[],...ye?[i.DataAttribute(`readonly`,``)]:[],...be?[i.DataAttribute(`invalid`,``)]:[],...v?[i.Class(v)]:[],...y],Ye=C(l,{onNone:()=>n([],`@foldkit/ui/listbox/shared.js#onNone~3`),onSome:e=>n([i.AriaActiveDescendant(U7(a,e))],`@foldkit/ui/listbox/shared.js#onSome~3`)}),Xe=[i.Style({position:`absolute`,margin:`0`,visibility:`hidden`}),i.OnMount(PTe({buttonId:`${a}-button`,anchor:he}))],Ze=[i.Id(`${a}-items`),i.Role(`listbox`),i.AriaOrientation(Cd(s)),...e.ariaMultiSelectable?[i.AriaMultiSelectable(!0)]:[],...ye?[i.AriaReadonly(!0),i.DataAttribute(`readonly`,``)]:[],i.AriaLabelledBy(`${a}-button`),...Ye,i.Tabindex(-1),...Xe,...ke,...De?[]:[i.OnKeyDownPreventDefault(Ke),i.OnKeyUpPreventDefault(He),i.OnBlur(R7.BlurredItems())],...ee?[i.Class(ee)]:[],...te],Qe=w(f,(e,t)=>{let r=Cr(l,e=>n(e===t,`@foldkit/ui/listbox/shared.js#anonymous~42`)),o=Ae(t),s=Te(we(e)),c=p(e,{isActive:r,isDisabled:o,isReadOnly:ye,isSelected:s}),u=!o&&!De,d=u&&!ye;return n(i.keyed(`div`)(U7(a,t),[i.Id(U7(a,t)),i.Role(`option`),i.AriaSelected(s),...r?[i.DataAttribute(`active`,``)]:[],...s?[i.DataAttribute(`selected`,``)]:[],...o?[i.AriaDisabled(!0),i.DataAttribute(`disabled`,``)]:[],...ye?[i.DataAttribute(`readonly`,``)]:[],...d?[i.OnClick(R7.SelectedItem({item:we(e)}))]:[],...u?[...r?[]:[i.OnPointerMove((e,r,i)=>n(P7(i!==`touch`,R7.MovedPointerOverItem({index:t,screenX:e,screenY:r})),`@foldkit/ui/listbox/shared.js#anonymous~43`))],i.OnPointerLeave(e=>n(P7(e!==`touch`,R7.DeactivatedItem()),`@foldkit/ui/listbox/shared.js#anonymous~44`))]:[],...c.className?[i.Class(c.className)]:[]],[c.content]),`@foldkit/ui/listbox/shared.js#anonymous~41`)}),$e=()=>n(ce?ca(gTe(Qe,(e,t)=>n(Mi(f,t).pipe(C({onNone:()=>n(``,`@foldkit/ui/listbox/shared.js#onNone~4`),onSome:e=>n(ce(e,t),`@foldkit/ui/listbox/shared.js#onSome~4`)})),`@foldkit/ui/listbox/shared.js#anonymous~45`)),(e,t)=>{let r=lr(le?.(e.key)),o=`${a}-heading-${e.key}`,s=[...C(r,{onNone:()=>n([],`@foldkit/ui/listbox/shared.js#onNone~5`),onSome:e=>n([i.keyed(`div`)(o,[i.Id(o),i.Role(`presentation`),...e.className?[i.Class(e.className)]:[]],[e.content])],`@foldkit/ui/listbox/shared.js#onSome~5`)}),...e.items],c=i.keyed(`div`)(`${a}-group-${e.key}`,[i.Role(`group`),...S(r)?[i.AriaLabelledBy(o)]:[],...de?[i.Class(de)]:[],...fe],s);return n([...t>0&&(pe||ki(me))?[i.keyed(`div`)(`${a}-separator-${t}`,[i.Role(`separator`),...pe?[i.Class(pe)]:[],...me])]:[],c],`@foldkit/ui/listbox/shared.js#anonymous~46`)}):Qe,`@foldkit/ui/listbox/shared.js#renderGroupedItems`),et=i.keyed(`div`)(`${a}-backdrop`,[i.OnMount(FTe()),...De?[]:[i.OnClick(R7.Closed())],...ie?[i.Class(ie)]:[],...ae]),tt=$e(),nt=ne||ki(re)?[i.div([...ne?[i.Class(ne)]:[],...re],tt)]:tt,rt=[et,i.keyed(`div`)(`${a}-items-container`,Ze,nt)],it=_e?[i.Attribute(`form`,_e)]:[],at=ge?xi(Ce,{onEmpty:()=>n([i.input([i.Type(`hidden`),i.Name(ge),...it])],`@foldkit/ui/listbox/shared.js#onEmpty`),onNonEmpty:w(e=>n(i.input([i.Type(`hidden`),i.Name(ge),i.Value(e),...it]),`@foldkit/ui/listbox/shared.js#anonymous~47`))}):[],ot=[...oe?[i.Class(oe)]:[],...se,...Oe?[i.DataAttribute(`open`,``)]:[],...ve?[i.DataAttribute(`disabled`,``)]:[],...ye?[i.DataAttribute(`readonly`,``)]:[],...be?[i.DataAttribute(`invalid`,``)]:[]];return n(i.div(ot,[i.keyed(`button`)(`${a}-button`,Je,[_]),...at,...Oe?rt:[]]),`@foldkit/ui/listbox/shared.js#anonymous~16`)});return n((()=>n(t,`@foldkit/ui/listbox/shared.js#anonymous~48`)),`@foldkit/ui/listbox/shared.js#makeView`)},G7=A({...bTe.fields}),K7=e=>n(xTe(e),`@foldkit/ui/listbox/single.js#init`),LTe=NTe((e,t,r)=>n(r.closeWithFocus(e,z7.Selected({value:t})),`@foldkit/ui/listbox/single.js#anonymous`)),RTe=ITe({ariaMultiSelectable:!1})(),zTe=qD((e,{maybeSelectedValue:t,...r},i)=>n(RTe(e,{...r,selectedValues:yr(t)},i),`@foldkit/ui/listbox/single.js#anonymous~2`)),q7=()=>{let e=LTe;return n({view:zTe,update:e,selectItem:(t,r)=>n(e(t,R7.SelectedItem({item:r})),`@foldkit/ui/listbox/single.js#selectItem~2`),open:t=>n(e(t,R7.Opened({maybeActiveItemIndex:b()})),`@foldkit/ui/listbox/single.js#open~2`),close:t=>n(e(t,R7.Closed()),`@foldkit/ui/listbox/single.js#close~2`)},`@foldkit/ui/listbox/single.js#create`)},J7=pT({Loading:{},Failed:{error:O},Ready:{settings:_R}}),Y7=pT({Idle:{},Saving:{},Saved:{},Failed:{error:O}}),X7=pT({Loading:{},Failed:{error:O},Ready:{options:j(pR)}}),Z7=A({deep:G7,smart:G7,fast:G7}),BTe=A({load:J7,draftRetention:k,save:Y7,notificationPermission:O,defaults:_R,models:X7,modelListboxes:Z7,reasoningListboxes:Z7}),VTe=tb([`dailyMinutes`,`desiredRetention`,`maxNewLessonsPerDay`,`showVisuals`,`reminder`]),Q7=fT({SucceededFetchSettings:{settings:_R,defaults:_R},FailedFetchSettings:{error:O},ClickedRetry:{},ClickedDailyMinutes:{minutes:sR},ClickedNewLessonCap:{count:k},MovedRetention:{value:O},ReleasedRetention:{value:O},ToggledVisuals:{},ToggledReminder:{},ChangedReminderTime:{value:O},CompletedRequestNotifications:{permission:O},SucceededSaveSettings:{settings:_R},FailedSaveSettings:{error:O},SucceededFetchModels:{options:j(pR)},FailedFetchModels:{error:O},GotModelListboxMessage:{tier:uR,message:R7},GotReasoningListboxMessage:{tier:uR,message:R7},ToggledFastMode:{tier:uR},ClickedResetPreference:{preference:VTe},ClickedResetPreferences:{},ClickedResetTier:{tier:uR},ClickedResetModels:{}}),$7=N(`FetchSettings`,{messages:[Q7.SucceededFetchSettings,Q7.FailedFetchSettings],execute:D(function*(){let e=yield*XR,[t,r]=yield*Pd([e.settings.get(),e.settings.defaults()],{concurrency:2});return n(Q7.SucceededFetchSettings({settings:t,defaults:r}),`src/page/settings.ts#anonymous`)}).pipe(rf(e=>n(T(Q7.FailedFetchSettings({error:QR(e)})),`src/page/settings.ts#anonymous~2`)))}),HTe=N(`FetchModels`,{messages:[Q7.SucceededFetchModels,Q7.FailedFetchModels],execute:D(function*(){let e=yield*(yield*XR).settings.models();return n(Q7.SucceededFetchModels({options:e}),`src/page/settings.ts#anonymous~3`)}).pipe(rf(e=>n(T(Q7.FailedFetchModels({error:QR(e)})),`src/page/settings.ts#anonymous~4`)))}),UTe=N(`RequestNotifications`,{messages:[Q7.CompletedRequestNotifications],execute:Id(()=>n(`Notification`in globalThis?globalThis.Notification.requestPermission():Promise.resolve(`unsupported`),`src/page/settings.ts#anonymous~5`)).pipe(ef(e=>n(Q7.CompletedRequestNotifications({permission:e}),`src/page/settings.ts#anonymous~6`)),rf(()=>n(T(Q7.CompletedRequestNotifications({permission:`unsupported`})),`src/page/settings.ts#anonymous~7`)))}),WTe=N(`SaveSettings`,{args:{settings:_R},messages:[Q7.SucceededSaveSettings,Q7.FailedSaveSettings],execute:({settings:e})=>n(D(function*(){let t=yield*(yield*XR).settings.set({payload:e});return n(Q7.SucceededSaveSettings({settings:t}),`src/page/settings.ts#anonymous~8`)}).pipe(rf(e=>n(T(Q7.FailedSaveSettings({error:QR(e)})),`src/page/settings.ts#anonymous~9`))),`src/page/settings.ts#execute`)}),e9=e=>n({deep:K7({id:`${e}-deep`}),smart:K7({id:`${e}-smart`}),fast:K7({id:`${e}-fast`})},`src/page/settings.ts#tierListboxes`),GTe=()=>n({model:{load:J7.Loading(),draftRetention:.9,save:Y7.Idle(),notificationPermission:`unknown`,defaults:vR,models:X7.Loading(),modelListboxes:e9(`model`),reasoningListboxes:e9(`reasoning`)},commands:[$7(),HTe()]},`src/page/settings.ts#init`),t9=e=>n(Qte(globalThis.Number(e)/100,{minimum:hR,maximum:gR}),`src/page/settings.ts#parseRetention`),n9=e=>n((t=>n(J7.match(e.load,{Loading:()=>n({model:e},`src/page/settings.ts#Loading`),Failed:()=>n({model:e},`src/page/settings.ts#Failed`),Ready:({settings:r})=>{let i=t(r);return n({model:P(e,{load:()=>n(J7.Ready({settings:i}),`src/page/settings.ts#load`),draftRetention:()=>n(i.desiredRetention,`src/page/settings.ts#draftRetention`),save:()=>n(Y7.Saving(),`src/page/settings.ts#save`)}),commands:[WTe({settings:i})]},`src/page/settings.ts#Ready`)}}),`src/page/settings.ts#anonymous~10`)),`src/page/settings.ts#change`),r9=(e,t,r)=>n({deep:t===`deep`?r:e.deep,smart:t===`smart`?r:e.smart,fast:t===`fast`?r:e.fast},`src/page/settings.ts#withTier`),i9=e=>n(X7.match(e.models,{Loading:()=>n([],`src/page/settings.ts#Loading~2`),Failed:()=>n([],`src/page/settings.ts#Failed~2`),Ready:({options:e})=>n(e,`src/page/settings.ts#Ready~2`)}),`src/page/settings.ts#modelOptions`),a9=(e,t)=>n((r=>n(n9(r)(i=>n({...i,models:r9(i.models,e,yR(t(i.models[e]),i9(r)))},`src/page/settings.ts#anonymous~12`)),`src/page/settings.ts#anonymous~11`)),`src/page/settings.ts#changeChoice`),o9={dailyMinutes:(e,t)=>n({...e,dailyMinutes:t.dailyMinutes},`src/page/settings.ts#dailyMinutes`),desiredRetention:(e,t)=>n({...e,desiredRetention:t.desiredRetention},`src/page/settings.ts#desiredRetention`),maxNewLessonsPerDay:(e,t)=>n({...e,maxNewLessonsPerDay:t.maxNewLessonsPerDay},`src/page/settings.ts#maxNewLessonsPerDay`),showVisuals:(e,t)=>n({...e,showVisuals:t.showVisuals},`src/page/settings.ts#showVisuals`),reminder:(e,t)=>n({...e,reminder:t.reminder},`src/page/settings.ts#reminder`)},s9=[`dailyMinutes`,`desiredRetention`,`maxNewLessonsPerDay`,`showVisuals`,`reminder`],c9=(e,t,r)=>n(r===`desiredRetention`?Math.round(e.desiredRetention*100)!==Math.round(t.desiredRetention*100):r===`reminder`?e.reminder.isOn!==t.reminder.isOn||e.reminder.time!==t.reminder.time:e[r]!==t[r],`src/page/settings.ts#isPreferenceChanged`),l9=(e,t,r)=>{let i=e.models[r],a=t.models[r];return n(i.model!==a.model||i.reasoning!==a.reasoning||i.fastMode!==a.fastMode,`src/page/settings.ts#isTierChanged`)},u9=q7(),d9=q7(),f9=e=>n(LN({update:u9.update,read:t=>n(x(t.modelListboxes[e]),`src/page/settings.ts#read`),write:(t,r)=>n(P(t,{modelListboxes:t=>n(r9(t,e,r),`src/page/settings.ts#modelListboxes`)}),`src/page/settings.ts#write`),toParentMessage:t=>n(Q7.GotModelListboxMessage({tier:e,message:t}),`src/page/settings.ts#toParentMessage`),foldOutMessage:z7.match({Selected:({value:t})=>n((r=>n(a9(e,e=>n({...e,model:t},`src/page/settings.ts#anonymous~14`))(r),`src/page/settings.ts#anonymous~13`)),`src/page/settings.ts#Selected`)})}),`src/page/settings.ts#foldModelListbox`),p9=e=>n(LN({update:d9.update,read:t=>n(x(t.reasoningListboxes[e]),`src/page/settings.ts#read~2`),write:(t,r)=>n(P(t,{reasoningListboxes:t=>n(r9(t,e,r),`src/page/settings.ts#reasoningListboxes`)}),`src/page/settings.ts#write~2`),toParentMessage:t=>n(Q7.GotReasoningListboxMessage({tier:e,message:t}),`src/page/settings.ts#toParentMessage~2`),foldOutMessage:z7.match({Selected:({value:t})=>n((r=>n(a9(e,e=>n({...e,reasoning:t},`src/page/settings.ts#anonymous~16`))(r),`src/page/settings.ts#anonymous~15`)),`src/page/settings.ts#Selected~2`)})}),`src/page/settings.ts#foldReasoningListbox`),KTe={deep:f9(`deep`),smart:f9(`smart`),fast:f9(`fast`)},qTe={deep:p9(`deep`),smart:p9(`smart`),fast:p9(`fast`)},JTe=(e,t)=>n(Q7.match(t,{SucceededFetchSettings:({settings:t,defaults:r})=>n({model:P(e,{load:()=>n(J7.Ready({settings:t}),`src/page/settings.ts#load~2`),defaults:()=>n(r,`src/page/settings.ts#defaults`),draftRetention:()=>n(t.desiredRetention,`src/page/settings.ts#draftRetention~2`)})},`src/page/settings.ts#SucceededFetchSettings`),ClickedResetPreference:({preference:t})=>n(n9(e)(r=>n(o9[t](r,e.defaults),`src/page/settings.ts#anonymous~17`)),`src/page/settings.ts#ClickedResetPreference`),ClickedResetPreferences:()=>n(n9(e)(t=>n(s9.reduce((t,r)=>n(o9[r](t,e.defaults),`src/page/settings.ts#anonymous~19`),t),`src/page/settings.ts#anonymous~18`)),`src/page/settings.ts#ClickedResetPreferences`),ClickedResetTier:({tier:t})=>n(a9(t,()=>n(e.defaults.models[t],`src/page/settings.ts#anonymous~20`))(e),`src/page/settings.ts#ClickedResetTier`),ClickedResetModels:()=>n(n9(e)(t=>n({...t,models:e.defaults.models},`src/page/settings.ts#anonymous~21`)),`src/page/settings.ts#ClickedResetModels`),FailedFetchSettings:({error:t})=>n({model:P(e,{load:()=>n(J7.Failed({error:t}),`src/page/settings.ts#load~3`)})},`src/page/settings.ts#FailedFetchSettings`),ClickedRetry:()=>n({model:P(e,{load:()=>n(J7.Loading(),`src/page/settings.ts#load~4`)}),commands:[$7()]},`src/page/settings.ts#ClickedRetry`),ClickedDailyMinutes:({minutes:t})=>n(n9(e)(e=>n({...e,dailyMinutes:t},`src/page/settings.ts#anonymous~22`)),`src/page/settings.ts#ClickedDailyMinutes`),ClickedNewLessonCap:({count:t})=>n(n9(e)(e=>n({...e,maxNewLessonsPerDay:t},`src/page/settings.ts#anonymous~23`)),`src/page/settings.ts#ClickedNewLessonCap`),MovedRetention:({value:t})=>n({model:P(e,{draftRetention:()=>n(t9(t),`src/page/settings.ts#draftRetention~3`)})},`src/page/settings.ts#MovedRetention`),ReleasedRetention:({value:t})=>n(n9(e)(e=>n({...e,desiredRetention:t9(t)},`src/page/settings.ts#anonymous~24`)),`src/page/settings.ts#ReleasedRetention`),ToggledVisuals:()=>n(n9(e)(e=>n({...e,showVisuals:!e.showVisuals},`src/page/settings.ts#anonymous~25`)),`src/page/settings.ts#ToggledVisuals`),ToggledReminder:()=>{let t=n9(e)(e=>n({...e,reminder:{...e.reminder,isOn:!e.reminder.isOn}},`src/page/settings.ts#anonymous~26`));return n(J7.match(e.load,{Loading:()=>n(!1,`src/page/settings.ts#Loading~3`),Failed:()=>n(!1,`src/page/settings.ts#Failed~3`),Ready:({settings:e})=>n(!e.reminder.isOn,`src/page/settings.ts#Ready~3`)})?{model:t.model,commands:[...t.commands??[],UTe()]}:t,`src/page/settings.ts#ToggledReminder`)},ChangedReminderTime:({value:t})=>n(/^\d{2}:\d{2}$/.test(t)?n9(e)(e=>n({...e,reminder:{...e.reminder,time:t}},`src/page/settings.ts#anonymous~27`)):{model:e},`src/page/settings.ts#ChangedReminderTime`),CompletedRequestNotifications:({permission:t})=>n({model:P(e,{notificationPermission:()=>n(t,`src/page/settings.ts#notificationPermission`)})},`src/page/settings.ts#CompletedRequestNotifications`),SucceededSaveSettings:({settings:t})=>n({model:P(e,{load:()=>n(J7.Ready({settings:t}),`src/page/settings.ts#load~5`),draftRetention:()=>n(t.desiredRetention,`src/page/settings.ts#draftRetention~4`),save:()=>n(Y7.Saved(),`src/page/settings.ts#save~2`)})},`src/page/settings.ts#SucceededSaveSettings`),FailedSaveSettings:({error:t})=>n({model:P(e,{save:()=>n(Y7.Failed({error:t}),`src/page/settings.ts#save~3`)})},`src/page/settings.ts#FailedSaveSettings`),SucceededFetchModels:({options:t})=>n({model:P(e,{models:()=>n(X7.Ready({options:t}),`src/page/settings.ts#models`)})},`src/page/settings.ts#SucceededFetchModels`),FailedFetchModels:({error:t})=>n({model:P(e,{models:()=>n(X7.Failed({error:t}),`src/page/settings.ts#models~2`)})},`src/page/settings.ts#FailedFetchModels`),GotModelListboxMessage:({tier:t,message:r})=>n(KTe[t](e,r),`src/page/settings.ts#GotModelListboxMessage`),GotReasoningListboxMessage:({tier:t,message:r})=>n(qTe[t](e,r),`src/page/settings.ts#GotReasoningListboxMessage`),ToggledFastMode:({tier:t})=>n(a9(t,e=>n({...e,fastMode:!e.fastMode},`src/page/settings.ts#anonymous~28`))(e),`src/page/settings.ts#ToggledFastMode`)}),`src/page/settings.ts#update`),YTe=[10,20,30,45],XTe=[1,2,3,4,5],m9=e=>n(`${Math.round(e*100)}%`,`src/page/settings.ts#percent`),ZTe=e=>{let t=Sz(e),r=100-Math.round(e*100);return Math.abs(e-.9)<.005?n(`Recommended. You remember about 9 in 10 things.`,`src/page/settings.ts#retentionPreview`):n(e<.9?`Reviews come ${t.toFixed(1)} times further apart than at 90%. You forget about ${r} in 100 things.`:`Reviews come ${(1/t).toFixed(1)} times as often as at 90%. You remember about ${100-r} in 100. Good before an exam.`,`src/page/settings.ts#retentionPreview`)},h9=(e,t,r,i,a,o)=>n(o.div([o.Role(`radiogroup`),o.AriaLabel(a),o.Class(`inline-flex w-fit rounded-lg bg-muted p-1`)],w(e,e=>n(o.button([o.Type(`button`),o.Role(`radio`),o.AriaChecked(t(e)),o.OnClick(i(e)),o.Class(F(`press h-8 min-w-12 rounded-md px-3 text-sm font-medium tabular-nums transition-colors`,t(e)?`bg-background text-foreground shadow-sm dark:bg-input/40`:`text-muted-foreground hover:text-foreground`))],[r(e)]),`src/page/settings.ts#anonymous~29`))),`src/page/settings.ts#segmented`),QTe=(e,t,r)=>n(r.button([r.Type(`button`),r.AriaLabel(e),r.Title(e),r.OnClick(t),r.Class(`press pop-in inline-flex size-7 shrink-0 items-center justify-center rounded-md text-muted-foreground outline-none hover:bg-accent hover:text-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50`)],[L(`undo`,`size-3.5`,r)]),`src/page/settings.ts#undoButton`),g9=(e,t,r)=>n(r.button([r.Type(`button`),r.AriaLabel(e),r.Title(e),r.OnClick(t),r.Class(I(`Ghost`,`Small`,`pop-in shrink-0 text-muted-foreground`))],[L(`undo`,``,r),`Reset all`]),`src/page/settings.ts#resetAllButton`),_9=(e,t,r,i)=>n(i.div([i.Class(`flex items-start justify-between gap-4 p-5 sm:p-6`)],[i.div([i.Class(`flex flex-col gap-1`)],[i.h2([i.Class(`font-semibold`)],[e]),t.length>0?i.p([i.Class(`text-sm text-muted-foreground`)],[t]):i.empty]),r]),`src/page/settings.ts#cardHeader`),v9=(e,t,r,i,a)=>n(a.div([a.Class(`flex min-h-7 items-center gap-1`)],[a.h3([a.Class(`font-medium`)],[e]),t?QTe(r,i,a):a.empty]),`src/page/settings.ts#rowTitle`),y9=(e,t,r,i,a,o)=>n(v9(e,c9(i,a,t),`Reset ${e.toLowerCase()} to ${r}`,Q7.ClickedResetPreference({preference:t}),o),`src/page/settings.ts#preferenceTitle`),b9=(e,t,r,i)=>n(i.div([i.Class(`flex flex-col gap-3 p-5 sm:p-6`)],[i.div([i.Class(`flex flex-col gap-1`)],[e,t.length>0?i.p([i.Class(`text-sm text-muted-foreground`)],[t]):i.empty]),r]),`src/page/settings.ts#row`),$Te=(e,t)=>n(t.div([t.Class(`flex flex-col gap-3`)],[t.div([t.Class(`flex items-center gap-4`)],[t.span([t.Class(`text-xs text-muted-foreground`)],[`85%`]),t.input([t.Type(`range`),t.Min(`85`),t.Max(`95`),t.Step(`1`),t.Value(`${Math.round(e.draftRetention*100)}`),t.AriaLabel(`Desired retention, in percent`),t.OnInput(e=>n(Q7.MovedRetention({value:e}),`src/page/settings.ts#anonymous~30`)),t.OnChange(e=>n(Q7.ReleasedRetention({value:e}),`src/page/settings.ts#anonymous~31`)),t.Class(`h-2 flex-1 cursor-pointer accent-primary`)]),t.span([t.Class(`text-xs text-muted-foreground`)],[`95%`]),t.span([t.Class(`w-12 text-right text-lg font-semibold text-primary tabular-nums`)],[m9(e.draftRetention)])]),t.p([t.AriaLive(`polite`),t.Class(`text-sm text-muted-foreground`)],[ZTe(e.draftRetention)])]),`src/page/settings.ts#retentionControl`),x9=(e,t,r,i)=>n(i.button([i.Type(`button`),i.Role(`switch`),i.AriaChecked(e),i.AriaLabel(t),i.OnClick(r),i.Class(F(`press relative inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full transition-colors focus-visible:ring-[3px] focus-visible:ring-ring/50 outline-none`,e?`bg-primary`:`bg-input dark:bg-input/80`))],[i.span([i.Class(F(`inline-block size-5 rounded-full bg-background shadow-sm transition-transform`,e?`translate-x-5.5`:`translate-x-0.5`))],[])]),`src/page/settings.ts#switchButton`),S9=[{tier:`deep`,title:`Knowledge maps`,description:`Builds each subject map. Runs once per subject, so a strong model pays off.`},{tier:`smart`,title:`Research and teaching`,description:`Reads sources, writes lessons and questions, and answers the tutor chat.`},{tier:`fast`,title:`Quick grading`,description:`Grades written answers. Speed matters most here.`}],C9={auto:`Auto`,low:`Low`,medium:`Medium`,high:`High`,xhigh:`Extra high`,max:`Max`},w9=`press inline-flex h-9 w-full items-center rounded-lg border border-input bg-background px-3 text-left text-sm shadow-xs outline-none hover:bg-accent focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:opacity-50 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-60 dark:bg-input/30`,T9=`z-50 max-h-96 overflow-y-auto rounded-xl border bg-popover p-1 text-popover-foreground shadow-lg outline-none`,E9={placement:`bottom-start`,gap:6,padding:8},D9=(e,t)=>n(t.span([t.Class(`flex w-full items-center justify-between gap-2`)],[t.span([t.Class(`truncate`)],[e]),L(`chevronDown`,`size-4 shrink-0 opacity-60`,t)]),`src/page/settings.ts#triggerContent`),O9=e=>n(F(`cursor-pointer rounded-lg`,e&&`bg-accent text-accent-foreground`),`src/page/settings.ts#itemClass`),eEe=(e,t,r)=>n(r.div([r.Class(`flex items-start gap-2 px-3 py-2`)],[r.div([r.Class(`flex min-w-0 flex-1 flex-col gap-0.5`)],[r.span([r.Class(`flex items-center gap-1.5 text-sm font-medium`)],[e.displayName,e.supportsFastMode?L(`zap`,`size-3 text-primary`,r):r.empty]),r.span([r.Class(`text-xs text-muted-foreground`)],[e.description])]),t?L(`check`,`mt-0.5 size-4 text-primary`,r):r.empty]),`src/page/settings.ts#modelItem`),tEe=(e,t)=>{let r=e.defaults.models[t];return n(`${C(Yi(i9(e),e=>n(e.value===r.model,`src/page/settings.ts#anonymous~32`)),{onNone:()=>n(r.model,`src/page/settings.ts#onNone`),onSome:e=>n(e.displayName,`src/page/settings.ts#onSome`)})}, ${C9[r.reasoning]} reasoning${r.fastMode?`, fast mode`:``}`,`src/page/settings.ts#defaultChoiceLabel`)},nEe=(e,t,r,i)=>{let a=t.models[r.tier],o=i9(e),s=Yi(o,e=>n(e.value===a.model,`src/page/settings.ts#anonymous~33`)),c=[`auto`,...C(s,{onNone:()=>n([],`src/page/settings.ts#onNone~2`),onSome:e=>n(e.reasoningLevels,`src/page/settings.ts#onSome~2`)})],l=e.models._tag!==`Ready`;return n(i.div([i.Class(`flex flex-col gap-3 p-5 sm:p-6`)],[i.div([i.Class(`flex flex-col gap-1`)],[v9(r.title,l9(t,e.defaults,r.tier),`Reset ${r.title.toLowerCase()} to ${tEe(e,r.tier)}`,Q7.ClickedResetTier({tier:r.tier}),i),i.p([i.Class(`text-sm text-muted-foreground`)],[r.description])]),i.div([i.Class(`flex flex-wrap items-center gap-2`)],[i.div([i.Class(`w-full sm:w-64`)],[i.submodel({slotId:`model-${r.tier}`,model:e.modelListboxes[r.tier],view:u9.view,viewInputs:{items:o,itemToValue:e=>n(e.value,`src/page/settings.ts#itemToValue`),maybeSelectedValue:x(a.model),isDisabled:l,ariaLabel:`${r.title} model`,buttonContent:D9(C(s,{onNone:()=>n(a.model,`src/page/settings.ts#onNone~3`),onSome:e=>n(e.displayName,`src/page/settings.ts#onSome~3`)}),i),buttonClassName:w9,itemsClassName:F(T9,`w-80`),backdropClassName:`fixed inset-0 z-40`,anchor:E9,itemGroupKey:e=>n(e.isLatest?`latest`:`pinned`,`src/page/settings.ts#itemGroupKey`),groupToHeading:e=>n({content:i.span([],[e===`latest`?`Latest · updates on its own`:`Pinned versions`]),className:`px-3 pt-2 pb-1 text-[11px] font-medium tracking-wide text-muted-foreground uppercase`},`src/page/settings.ts#groupToHeading`),itemToSearchText:e=>n(e.displayName,`src/page/settings.ts#itemToSearchText`),itemToConfig:(e,{isActive:t,isSelected:r})=>n({className:O9(t),content:eEe(e,r,i)},`src/page/settings.ts#itemToConfig`)},toParentMessage:e=>n(Q7.GotModelListboxMessage({tier:r.tier,message:e}),`src/page/settings.ts#toParentMessage~3`)})]),i.div([i.Class(`w-40`)],[i.submodel({slotId:`reasoning-${r.tier}`,model:e.reasoningListboxes[r.tier],view:d9.view,viewInputs:{items:c,maybeSelectedValue:x(a.reasoning),isDisabled:l||c.length===1,ariaLabel:`${r.title} reasoning`,buttonContent:D9(`${C9[a.reasoning]} reasoning`,i),buttonClassName:w9,itemsClassName:F(T9,`w-56`),backdropClassName:`fixed inset-0 z-40`,anchor:E9,itemToConfig:(e,{isActive:t,isSelected:r})=>n({className:O9(t),content:i.div([i.Class(`flex items-start gap-2 px-3 py-2`)],[i.div([i.Class(`flex flex-1 flex-col gap-0.5`)],[i.span([i.Class(`text-sm font-medium`)],[C9[e]]),e===`auto`?i.span([i.Class(`text-xs text-muted-foreground`)],[`Picks the level for each step`]):i.empty]),r?L(`check`,`mt-0.5 size-4 text-primary`,i):i.empty])},`src/page/settings.ts#itemToConfig~2`)},toParentMessage:e=>n(Q7.GotReasoningListboxMessage({tier:r.tier,message:e}),`src/page/settings.ts#toParentMessage~4`)})]),Cr(s,e=>n(e.supportsFastMode,`src/page/settings.ts#anonymous~34`))?i.button([i.Type(`button`),i.Role(`switch`),i.AriaChecked(a.fastMode),i.Title(`Faster replies. Uses more of your plan.`),i.OnClick(Q7.ToggledFastMode({tier:r.tier})),i.Class(F(`press inline-flex h-9 items-center gap-1.5 rounded-lg border px-3 text-sm outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50`,a.fastMode?`border-primary/50 bg-primary/10 text-primary`:`border-input text-muted-foreground hover:bg-accent`))],[L(`zap`,`size-3.5`,i),`Fast mode`]):i.empty])]),`src/page/settings.ts#tierRow`)},k9=4,A9=e=>n(Math.round(k9*Math.max(ER(e.models.smart,`smart`,`medium`),ER(e.models.deep,`deep`,`low`))),`src/page/settings.ts#researchMinutes`),rEe=(e,t)=>n(A9(e)>=k9*1.5?t.p([t.Class(`mx-5 mb-4 flex items-start gap-2 rounded-lg bg-amber-500/10 px-3 py-2 text-sm text-amber-700 sm:mx-6 dark:text-amber-300`)],[L(`clock`,`mt-0.5 size-4 shrink-0`,t),`With these picks, a new subject takes about ${A9(e)} minutes to research instead of ${k9}. Lessons are slower too.`]):t.empty,`src/page/settings.ts#researchTimeNote`),iEe=(e,t,r)=>n(r.section([r.Class(Bz(`reveal divide-y`))],[_9(`AI models`,`Bigger models and more reasoning are slower and use more of your Claude plan.`,ma(S9,r=>n(l9(t,e.defaults,r.tier),`src/page/settings.ts#anonymous~35`))?g9(`Reset every AI model setting to its default`,Q7.ClickedResetModels(),r):r.empty,r),rEe(t,r),X7.match(e.models,{Loading:()=>n(r.empty,`src/page/settings.ts#Loading~4`),Ready:()=>n(r.empty,`src/page/settings.ts#Ready~4`),Failed:({error:e})=>n(r.p([r.Class(`px-5 pb-4 text-sm text-destructive sm:px-6`)],[`Couldn't load models: ${e}`]),`src/page/settings.ts#Failed~4`)}),...w(S9,i=>n(nEe(e,t,i,r),`src/page/settings.ts#anonymous~36`))]),`src/page/settings.ts#modelsCard`),aEe=(e,t)=>n(Y7.match(e,{Idle:()=>n(t.empty,`src/page/settings.ts#Idle`),Saving:()=>n(t.span([t.Class(zz(`Neutral`))],[L(`refresh`,`spinner`,t),`Saving`]),`src/page/settings.ts#Saving`),Saved:()=>n(t.span([t.Class(zz(`Success`))],[L(`check`,``,t),`Saved`]),`src/page/settings.ts#Saved`),Failed:({error:e})=>n(t.span([t.Class(zz(`Destructive`)),t.Title(e)],[L(`alert`,``,t),`Not saved`]),`src/page/settings.ts#Failed~5`)}),`src/page/settings.ts#saveStatus`),oEe=(e,t,r)=>n(r.section([r.Class(Bz(`reveal divide-y`))],[_9(`Your learning`,``,ma(s9,r=>n(c9(t,e.defaults,r),`src/page/settings.ts#anonymous~37`))?g9(`Reset every learning setting to its default`,Q7.ClickedResetPreferences(),r):r.empty,r),b9(y9(`Daily time`,`dailyMinutes`,`${e.defaults.dailyMinutes} min`,t,e.defaults,r),`Reviews come first. New lessons fill the rest.`,h9(YTe,e=>n(e===t.dailyMinutes,`src/page/settings.ts#anonymous~38`),e=>n(`${e} min`,`src/page/settings.ts#anonymous~39`),e=>n(Q7.ClickedDailyMinutes({minutes:e}),`src/page/settings.ts#anonymous~40`),`Daily time`,r),r),b9(y9(`How much to remember`,`desiredRetention`,m9(e.defaults.desiredRetention),t,e.defaults,r),``,$Te(e,r),r),b9(y9(`New concepts per day`,`maxNewLessonsPerDay`,`${e.defaults.maxNewLessonsPerDay}`,t,e.defaults,r),`More new concepts means more reviews later. 3 is steady. 5 is a lot.`,h9(XTe,e=>n(e===t.maxNewLessonsPerDay,`src/page/settings.ts#anonymous~41`),e=>n(`${e}`,`src/page/settings.ts#anonymous~42`),e=>n(Q7.ClickedNewLessonCap({count:e}),`src/page/settings.ts#anonymous~43`),`New concepts per day`,r),r),r.div([r.Class(`flex items-center justify-between gap-6 p-5 sm:p-6`)],[r.div([r.Class(`flex flex-col gap-1`)],[y9(`Visual explanations`,`showVisuals`,e.defaults.showVisuals?`on`:`off`,t,e.defaults,r),r.p([r.Class(`text-sm text-muted-foreground`)],[`Moving diagrams in lessons. Off loads faster.`])]),x9(t.showVisuals,`Visual explanations`,Q7.ToggledVisuals(),r)]),sEe(e,t,r)]),`src/page/settings.ts#settingsView`),sEe=(e,t,r)=>n(r.div([r.Class(`flex flex-col gap-3 p-5 sm:p-6`)],[r.div([r.Class(`flex items-start justify-between gap-6`)],[r.div([r.Class(`flex flex-col gap-1`)],[y9(`Daily reminder`,`reminder`,e.defaults.reminder.isOn?e.defaults.reminder.time:`off`,t,e.defaults,r),r.p([r.Class(`text-sm text-muted-foreground`)],[`A daily nudge when something is due. Keep BaviTutor open in a pinned tab.`])]),x9(t.reminder.isOn,`Daily reminder`,Q7.ToggledReminder(),r)]),t.reminder.isOn?r.div([r.Class(`reveal flex flex-wrap items-center gap-3 text-sm`)],[r.label([r.For(`reminder-time`),r.Class(`text-muted-foreground`)],[`Remind me at`]),r.input([r.Id(`reminder-time`),r.Type(`time`),r.Value(t.reminder.time),r.OnChange(e=>n(Q7.ChangedReminderTime({value:e}),`src/page/settings.ts#anonymous~44`)),r.Class(`h-8 rounded-md border border-input bg-transparent px-2 text-sm shadow-xs outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 dark:bg-input/30 dark:[color-scheme:dark]`)]),e.notificationPermission===`denied`?r.span([r.Class(`text-destructive`)],[`Notifications are blocked. Allow them in your browser's site settings.`]):e.notificationPermission===`unsupported`?r.span([r.Class(`text-destructive`)],[`This browser can't show notifications.`]):r.empty]):r.empty]),`src/page/settings.ts#reminderRow`),cEe=qD((e,t)=>n(t.div([t.Class(`mx-auto flex w-full max-w-2xl flex-col gap-6 px-5 py-10`)],[t.div([t.Class(`flex items-end justify-between gap-4`)],[t.div([t.Class(`flex flex-col gap-1`)],[t.h1([t.Class(`text-2xl font-semibold tracking-tight`)],[`Settings`]),t.p([t.Class(`text-sm text-muted-foreground`)],[`Changes save as you go.`])]),aEe(e.save,t)]),J7.match(e.load,{Loading:()=>n(t.div([t.Class(Bz(`h-96 animate-pulse bg-muted/40`))],[]),`src/page/settings.ts#Loading~5`),Failed:({error:e})=>n(t.div([t.Class(Bz(`flex flex-col items-start gap-3 p-6`))],[t.p([t.Class(`text-sm text-destructive`)],[e]),t.button([t.Type(`button`),t.OnClick(Q7.ClickedRetry()),t.Class(I(`Outline`,`Small`))],[L(`refresh`,``,t),`Try again`])]),`src/page/settings.ts#Failed~6`),Ready:({settings:r})=>n(t.div([t.Class(`flex flex-col gap-6`)],[oEe(e,r,t),iEe(e,r,t)]),`src/page/settings.ts#Ready~5`)})]),`src/page/settings.ts#anonymous~45`)),lEe=`Settings · BaviTutor`,j9=ST(j(MR),O),M9=pT({Nothing:{},Example:{exampleId:O},Generated:{visualId:O}}),N9=pT({Idle:{},Submitting:{},Failed:{error:O}}),uEe=A({brief:O,conceptTitle:O,context:O,submission:N9,history:j9.schema,selection:M9,maybeFrame:Mb(X3)}),P9=fT({UpdatedBrief:{value:O},UpdatedConceptTitle:{value:O},UpdatedContext:{value:O},ClickedPreset:{brief:O},SubmittedBrief:{},SucceededGenerateVisual:{visual:MR},FailedGenerateVisual:{error:O},SucceededFetchHistory:{visuals:j(MR)},FailedFetchHistory:{error:O},TickedRefresh:{},SelectedExample:{exampleId:O},SelectedVisual:{visualId:O},GotVizFrameMessage:{message:Q3}}),dEe=[`show that a fraction a/b is a parts of b equal pieces using a pie`,`show why the slope of a line is constant: rise over run on two different triangles`,`binary search halving an array`],fEe=La(4),F9=N(`FetchHistory`,{messages:[P9.SucceededFetchHistory,P9.FailedFetchHistory],execute:D(function*(){let e=yield*(yield*XR).visuals.listDev();return n(P9.SucceededFetchHistory({visuals:e}),`src/page/devVisuals.ts#anonymous`)}).pipe(rf(e=>n(T(P9.FailedFetchHistory({error:QR(e)})),`src/page/devVisuals.ts#anonymous~2`)))}),pEe=N(`GenerateVisual`,{args:{brief:O,conceptTitle:O,context:O},messages:[P9.SucceededGenerateVisual,P9.FailedGenerateVisual],execute:e=>n(D(function*(){let t=yield*(yield*XR).visuals.generateDev({payload:e});return n(P9.SucceededGenerateVisual({visual:t}),`src/page/devVisuals.ts#anonymous~3`)}).pipe(rf(e=>n(T(P9.FailedGenerateVisual({error:QR(e)})),`src/page/devVisuals.ts#anonymous~4`))),`src/page/devVisuals.ts#execute`)}),mEe=()=>n({model:{brief:``,conceptTitle:``,context:``,submission:N9.Idle(),history:j9.Loading(),selection:M9.Nothing(),maybeFrame:b()},commands:[F9()]},`src/page/devVisuals.ts#init`),I9=e=>n(P9.GotVizFrameMessage({message:e}),`src/page/devVisuals.ts#toFrameMessage`),hEe=LN({update:o6,read:e=>n(e.maybeFrame,`src/page/devVisuals.ts#read`),write:(e,t)=>n(P(e,{maybeFrame:()=>n(x(t),`src/page/devVisuals.ts#maybeFrame`)}),`src/page/devVisuals.ts#write`),toParentMessage:I9,foldOutMessage:$3.match({ReachedLastStep:()=>n((e=>n({model:e},`src/page/devVisuals.ts#anonymous~5`)),`src/page/devVisuals.ts#ReachedLastStep`),BecameUnavailable:()=>n((e=>n({model:e,commands:[F9()]},`src/page/devVisuals.ts#anonymous~6`)),`src/page/devVisuals.ts#BecameUnavailable`)})}),L9=(e,t)=>n(UN(r6({goalId:AR,visualId:t}),{toParentModel:r=>n(P(e,{selection:()=>n(M9.Generated({visualId:t}),`src/page/devVisuals.ts#selection`),maybeFrame:()=>n(x(r),`src/page/devVisuals.ts#maybeFrame~2`)}),`src/page/devVisuals.ts#toParentModel`),toParentMessage:I9}),`src/page/devVisuals.ts#showGenerated`),gEe=(e,t)=>n(C(Yi(W3,e=>n(e.id===t,`src/page/devVisuals.ts#anonymous~7`)),{onNone:()=>n({model:e},`src/page/devVisuals.ts#onNone`),onSome:r=>n({model:P(e,{selection:()=>n(M9.Example({exampleId:t}),`src/page/devVisuals.ts#selection~2`),maybeFrame:()=>n(x(ibe({key:r.id,code:r.code,title:r.title})),`src/page/devVisuals.ts#maybeFrame~3`)})},`src/page/devVisuals.ts#onSome`)}),`src/page/devVisuals.ts#showExample`),_Ee=(e,t)=>n(P9.match(t,{UpdatedBrief:({value:t})=>n({model:P(e,{brief:()=>n(t,`src/page/devVisuals.ts#brief`)})},`src/page/devVisuals.ts#UpdatedBrief`),UpdatedConceptTitle:({value:t})=>n({model:P(e,{conceptTitle:()=>n(t,`src/page/devVisuals.ts#conceptTitle`)})},`src/page/devVisuals.ts#UpdatedConceptTitle`),UpdatedContext:({value:t})=>n({model:P(e,{context:()=>n(t,`src/page/devVisuals.ts#context`)})},`src/page/devVisuals.ts#UpdatedContext`),ClickedPreset:({brief:t})=>n({model:P(e,{brief:()=>n(t,`src/page/devVisuals.ts#brief~2`)})},`src/page/devVisuals.ts#ClickedPreset`),SubmittedBrief:()=>{let t=wd(e.brief);return n(t.length===0||e.submission._tag===`Submitting`?{model:e}:{model:P(e,{submission:()=>n(N9.Submitting(),`src/page/devVisuals.ts#submission`)}),commands:[pEe({brief:t,conceptTitle:wd(e.conceptTitle),context:wd(e.context)})]},`src/page/devVisuals.ts#SubmittedBrief`)},SucceededGenerateVisual:({visual:t})=>{let r=L9(P(e,{submission:()=>n(N9.Idle(),`src/page/devVisuals.ts#submission~2`)}),t.visualId);return n({model:r.model,commands:[...r.commands??[],F9()]},`src/page/devVisuals.ts#SucceededGenerateVisual`)},FailedGenerateVisual:({error:t})=>n({model:P(e,{submission:()=>n(N9.Failed({error:t}),`src/page/devVisuals.ts#submission~3`)})},`src/page/devVisuals.ts#FailedGenerateVisual`),SucceededFetchHistory:({visuals:t})=>n({model:P(e,{history:()=>n(j9.Success({data:t}),`src/page/devVisuals.ts#history`)})},`src/page/devVisuals.ts#SucceededFetchHistory`),FailedFetchHistory:({error:t})=>n({model:P(e,{history:()=>n(j9.Failure({error:t}),`src/page/devVisuals.ts#history~2`)})},`src/page/devVisuals.ts#FailedFetchHistory`),TickedRefresh:()=>n({model:e,commands:[F9()]},`src/page/devVisuals.ts#TickedRefresh`),SelectedExample:({exampleId:t})=>n(gEe(e,t),`src/page/devVisuals.ts#SelectedExample`),SelectedVisual:({visualId:t})=>n(L9(e,t),`src/page/devVisuals.ts#SelectedVisual`),GotVizFrameMessage:({message:t})=>n(hEe(e,t),`src/page/devVisuals.ts#GotVizFrameMessage`)}),`src/page/devVisuals.ts#update`),vEe=e=>n(C(TT(e.history),{onNone:()=>n(!1,`src/page/devVisuals.ts#onNone~2`),onSome:e=>n(ma(e,e=>n(e.status===`Generating`,`src/page/devVisuals.ts#anonymous~8`)),`src/page/devVisuals.ts#onSome~2`)}),`src/page/devVisuals.ts#isAnyGenerating`),yEe=oA(iA()(e=>n({refreshWhileGenerating:e({isPolling:Ky},{modelToDependencies:e=>n({isPolling:vEe(e)},`src/page/devVisuals.ts#modelToDependencies`),dependenciesToStream:({isPolling:e})=>n(e?TC(fEe).pipe(qC(1),zC(()=>n(P9.TickedRefresh(),`src/page/devVisuals.ts#anonymous~10`))):kC,`src/page/devVisuals.ts#dependenciesToStream`)})},`src/page/devVisuals.ts#anonymous~9`)),lA(s6)({read:e=>n(e.maybeFrame,`src/page/devVisuals.ts#read~2`),toParentMessage:I9})),bEe=d6({showDetails:!0}),R9={Generating:`Info`,Ready:`Success`,Failed:`Destructive`,Skipped:`Neutral`},z9=(e,t)=>n(t.h2([t.Class(`text-xs font-semibold tracking-wide text-muted-foreground uppercase`)],[e]),`src/page/devVisuals.ts#sectionTitle`),xEe=e=>n(M9.matchOrElse(e.selection,{Generated:({visualId:t})=>n(gr(TT(e.history),e=>n(Yi(e,e=>n(e.visualId===t,`src/page/devVisuals.ts#anonymous~12`)),`src/page/devVisuals.ts#anonymous~11`)),`src/page/devVisuals.ts#Generated`)},()=>n(b(),`src/page/devVisuals.ts#anonymous~13`)),`src/page/devVisuals.ts#selectedVisual`),SEe=(e,t)=>n(C(xEe(e),{onNone:()=>n(t.empty,`src/page/devVisuals.ts#onNone~3`),onSome:e=>n(t.div([t.Class(Bz(`flex flex-col gap-2 p-4 text-sm`))],[t.div([t.Class(`flex flex-wrap items-center gap-2`)],[t.span([t.Class(zz(R9[e.status]))],[e.status]),t.span([t.Class(`text-muted-foreground`)],[`${e.attempts} attempt${e.attempts===1?``:`s`}`]),t.code([t.Class(`ml-auto text-xs text-muted-foreground`)],[e.visualId])]),t.p([t.Class(`font-medium`)],[e.brief]),e.reviewNote.length>0?t.p([t.Class(`text-muted-foreground`)],[t.span([t.Class(`font-medium text-foreground`)],[`Review: `]),e.reviewNote]):t.empty]),`src/page/devVisuals.ts#onSome~3`)}),`src/page/devVisuals.ts#detailsView`),CEe=(e,t)=>n(t.div([t.Class(`flex min-w-0 flex-col gap-4`)],[C(e.maybeFrame,{onNone:()=>n(t.div([t.Class(Bz(`flex aspect-[16/10] flex-col items-center justify-center gap-2 p-6 text-center text-sm text-muted-foreground`))],[L(`sparkles`,`size-5`,t),`Pick an example, or generate a visual from a brief.`]),`src/page/devVisuals.ts#onNone~4`),onSome:e=>n(t.keyed(`div`)(e.frameId,[],[t.submodel({slotId:`viz-frame`,model:e,view:bEe,toParentMessage:I9})]),`src/page/devVisuals.ts#onSome~4`)}),SEe(e,t)]),`src/page/devVisuals.ts#stageView`),B9=e=>n(F(`press flex w-full items-center gap-2 rounded-lg border px-3 py-2 text-left text-sm transition-colors`,{"border-primary bg-primary/8":e,"hover:bg-accent/50":!e}),`src/page/devVisuals.ts#listButtonClass`),wEe=(e,t)=>n(t.section([t.Class(`flex flex-col gap-2`)],[z9(`Examples`,t),...w(W3,r=>n(t.keyed(`button`)(r.id,[t.Type(`button`),t.OnClick(P9.SelectedExample({exampleId:r.id})),t.Class(B9(M9.matchOrElse(e.selection,{Example:({exampleId:e})=>n(e===r.id,`src/page/devVisuals.ts#Example`)},()=>n(!1,`src/page/devVisuals.ts#anonymous~15`))))],[L(`play`,`size-3.5 text-primary`,t),r.title]),`src/page/devVisuals.ts#anonymous~14`))]),`src/page/devVisuals.ts#examplesView`),TEe=(e,t)=>{let r=e.submission._tag===`Submitting`;return n(t.form([t.OnSubmit(P9.SubmittedBrief()),t.Class(`flex flex-col gap-2`)],[z9(`Generate from a brief`,t),t.textarea([t.Value(e.brief),t.Rows(4),t.AriaLabel(`Visual brief`),t.Placeholder(`One idea, the concrete labelled elements, and the insight to make visible…`),t.OnInput(e=>n(P9.UpdatedBrief({value:e}),`src/page/devVisuals.ts#anonymous~16`)),t.Class(Vz(`resize-y text-sm`))]),t.div([t.Class(`flex flex-wrap gap-1.5`)],w(dEe,e=>n(t.keyed(`button`)(e,[t.Type(`button`),t.Title(e),t.OnClick(P9.ClickedPreset({brief:e})),t.Class(zz(`Neutral`,`press max-w-full cursor-pointer truncate hover:bg-accent`))],[e]),`src/page/devVisuals.ts#anonymous~17`))),t.input([t.Value(e.conceptTitle),t.AriaLabel(`Concept title (optional)`),t.Placeholder(`Concept title (optional)`),t.OnInput(e=>n(P9.UpdatedConceptTitle({value:e}),`src/page/devVisuals.ts#anonymous~18`)),t.Class(Vz(`text-sm`))]),t.textarea([t.Value(e.context),t.Rows(2),t.AriaLabel(`Lesson text (optional)`),t.Placeholder(`Lesson text the visual sits next to (optional)`),t.OnInput(e=>n(P9.UpdatedContext({value:e}),`src/page/devVisuals.ts#anonymous~19`)),t.Class(Vz(`resize-y text-sm`))]),t.button([t.Type(`submit`),t.Disabled(r||wd(e.brief).length===0),t.Class(I(`Primary`,`Medium`))],[r?L(`refresh`,`spinner`,t):L(`sparkles`,``,t),r?`Starting…`:`Generate`]),N9.matchOrElse(e.submission,{Failed:({error:e})=>n(t.p([t.Class(`text-sm text-destructive`)],[e]),`src/page/devVisuals.ts#Failed`)},()=>n(t.empty,`src/page/devVisuals.ts#anonymous~20`))]),`src/page/devVisuals.ts#formView`)},EEe=(e,t,r)=>n(r.keyed(`button`)(t.visualId,[r.Type(`button`),r.OnClick(P9.SelectedVisual({visualId:t.visualId})),r.Class(B9(M9.matchOrElse(e.selection,{Generated:({visualId:e})=>n(e===t.visualId,`src/page/devVisuals.ts#Generated~2`)},()=>n(!1,`src/page/devVisuals.ts#anonymous~21`))))],[r.span([r.Class(zz(R9[t.status]))],[t.status===`Generating`?L(`refresh`,`spinner`,r):r.empty,t.status]),r.span([r.Class(`min-w-0 flex-1 truncate`)],[t.brief])]),`src/page/devVisuals.ts#historyItemView`),DEe=(e,t)=>n(t.section([t.Class(`flex flex-col gap-2`)],[z9(`Recent`,t),CT(e.history,{onIdle:()=>n(t.empty,`src/page/devVisuals.ts#onIdle`),onLoading:()=>n(t.p([t.Class(`text-sm text-muted-foreground`)],[`Loading…`]),`src/page/devVisuals.ts#onLoading`),onRefreshing:r=>n(V9(e,r,t),`src/page/devVisuals.ts#onRefreshing`),onFailure:e=>n(t.p([t.Class(`text-sm text-destructive`)],[e]),`src/page/devVisuals.ts#onFailure`),onStale:({data:r})=>n(V9(e,r,t),`src/page/devVisuals.ts#onStale`),onSuccess:r=>n(V9(e,r,t),`src/page/devVisuals.ts#onSuccess`)})]),`src/page/devVisuals.ts#historyView`),V9=(e,t,r)=>n(xi(t,{onEmpty:()=>n(r.p([r.Class(`text-sm text-muted-foreground`)],[`Nothing yet.`]),`src/page/devVisuals.ts#onEmpty`),onNonEmpty:t=>n(r.div([r.Class(`flex flex-col gap-1.5`)],w(t,t=>n(EEe(e,t,r),`src/page/devVisuals.ts#anonymous~22`))),`src/page/devVisuals.ts#onNonEmpty`)}),`src/page/devVisuals.ts#historyListView`),OEe=qD((e,t)=>n(t.div([t.Class(`mx-auto flex w-full max-w-7xl flex-col gap-6 px-5 py-8`)],[t.header([t.Class(`flex flex-col gap-1`)],[t.div([t.Class(`flex items-center gap-2`)],[t.h1([t.Class(`text-2xl font-semibold tracking-tight`)],[`Visual explanations`]),t.span([t.Class(zz(`Warning`))],[`dev`])]),t.p([t.Class(`max-w-3xl text-sm text-muted-foreground`)],[`Preview the hand-written bv scenes, or type a brief to run it through the same pipeline lesson visuals use.`])]),t.div([t.Class(`grid gap-6 lg:grid-cols-[minmax(0,1fr)_22rem]`)],[CEe(e,t),t.aside([t.Class(`flex flex-col gap-6`)],[wEe(e,t),TEe(e,t),DEe(e,t)])])]),`src/page/devVisuals.ts#anonymous~23`)),kEe=A({route:Ez,home:Yme,maybeGoal:Mb(ame),maybeLesson:Mb(ybe),maybeNotes:Mb(jxe),maybePlacement:Mb(iSe),maybeReview:Mb(cCe),maybeSettings:Mb(BTe),maybeProgress:Mb(DSe),maybeToday:Mb(pL),isDark:Ky,studyMinutes:k,nextBreakAt:k,maybeReminder:Mb(mR),maybeDevVisuals:Mb(uEe)}),AEe=A({isDark:Ky}),H9=fT({ClickedLink:{request:nA},ChangedUrl:{url:Qk},CompletedNavigateInternal:{},CompletedLoadExternal:{},ToggledTheme:{},TickedStudyMinute:{},SucceededFetchReminder:{reminder:mR},FailedFetchReminder:{},TickedReminderClock:{},CompletedReminderCheck:{},ClickedTakeBreak:{},ClickedKeepStudying:{},CompletedApplyTheme:{},GotHomeMessage:{message:wZ},GotGoalMessage:{message:R},GotLessonMessage:{message:$},GotNotesMessage:{message:e8},GotPlacementMessage:{message:l8},GotReviewMessage:{message:Y8},GotSettingsMessage:{message:Q7},GotProgressMessage:{message:_8},SucceededFetchToday:{today:pL},FailedFetchToday:{},GotDevVisualsMessage:{message:P9}}),U9=N(`NavigateInternal`,{args:{url:O},messages:[H9.CompletedNavigateInternal],execute:({url:e})=>n(rA(e).pipe(tf(H9.CompletedNavigateInternal())),`src/main.ts#execute`)}),jEe=N(`LoadExternal`,{args:{href:O},messages:[H9.CompletedLoadExternal],execute:({href:e})=>n(Mpe(e).pipe(tf(H9.CompletedLoadExternal())),`src/main.ts#execute~2`)}),MEe=N(`ApplyTheme`,{args:{isDark:Ky},messages:[H9.CompletedApplyTheme],execute:({isDark:e})=>n(E(()=>{globalThis.document.documentElement.classList.toggle(`dark`,e),globalThis.localStorage.setItem(`bavi-theme`,e?`dark`:`light`)}).pipe(lf,tf(H9.CompletedApplyTheme())),`src/main.ts#execute~3`)}),W9=N(`FetchToday`,{messages:[H9.SucceededFetchToday,H9.FailedFetchToday],execute:D(function*(){let e=yield*(yield*XR).reviews.today();return n(H9.SucceededFetchToday({today:e}),`src/main.ts#anonymous~2`)}).pipe(rf(()=>n(T(H9.FailedFetchToday()),`src/main.ts#anonymous~3`)))}),G9=N(`FetchReminder`,{messages:[H9.SucceededFetchReminder,H9.FailedFetchReminder],execute:D(function*(){let e=yield*(yield*XR).settings.get();return n(H9.SucceededFetchReminder({reminder:e.reminder}),`src/main.ts#anonymous~4`)}).pipe(rf(()=>n(T(H9.FailedFetchReminder()),`src/main.ts#anonymous~5`)))}),K9=e=>n(`${e}`.padStart(2,`0`),`src/main.ts#pad`),q9=`bavi-reminded-day`,NEe=N(`CheckReminder`,{args:{time:O},messages:[H9.CompletedReminderCheck],execute:({time:e})=>n(D(function*(){let t=new Date,r=`${K9(t.getHours())}:${K9(t.getMinutes())}`,i=`${t.getFullYear()}-${K9(t.getMonth()+1)}-${K9(t.getDate())}`,a=globalThis.localStorage;if(r<e||a.getItem(q9)===i||(a.setItem(q9,i),!(`Notification`in globalThis&&globalThis.Notification.permission===`granted`&&globalThis.document.visibilityState!==`visible`)))return n(H9.CompletedReminderCheck(),`src/main.ts#anonymous~6`);let o=yield*(yield*XR).reviews.today(),s=o.nextLessons[0],c=[...o.dueCount+o.dueFlashcards>0?[`${o.dueCount+o.dueFlashcards} review${o.dueCount+o.dueFlashcards===1?``:`s`} due, about ${o.estimatedReviewMinutes} min`]:[],...o.plan.newLessonSlots>0&&s!==void 0?[`Next up: ${s.conceptTitle}`]:[]];if(c.length>0){let e=new globalThis.Notification(`BaviTutor`,{body:c.join(` · `),icon:`/icon.svg`,tag:`bavitutor-daily`});e.onclick=()=>{globalThis.focus(),globalThis.location.assign(o.dueCount+o.dueFlashcards>0?`/review`:`/`)}}return n(H9.CompletedReminderCheck(),`src/main.ts#anonymous~6`)}).pipe(rf(()=>n(T(H9.CompletedReminderCheck()),`src/main.ts#anonymous~7`))),`src/main.ts#execute~4`)}),PEe=E(()=>{let e=globalThis.localStorage.getItem(`bavi-theme`);return n({isDark:e===null?globalThis.matchMedia(`(prefers-color-scheme: dark)`).matches:e===`dark`},`src/main.ts#anonymous~8`)}).pipe(rf(()=>n(T({isDark:!1}),`src/main.ts#anonymous~9`))),FEe=LN({update:mhe,read:e=>n(x(e.home),`src/main.ts#read`),write:(e,t)=>n(P(e,{home:()=>n(t,`src/main.ts#home`)}),`src/main.ts#write`),toParentMessage:e=>n(H9.GotHomeMessage({message:e}),`src/main.ts#toParentMessage`),foldOutMessage:TZ.match({CreatedGoal:({goalId:e})=>n((t=>n({model:t,commands:[U9({url:Oz({goalId:e})})]},`src/main.ts#anonymous~10`)),`src/main.ts#CreatedGoal`)})}),IEe=LN({update:Sme,read:e=>n(e.maybeGoal,`src/main.ts#read~2`),write:(e,t)=>n(P(e,{maybeGoal:()=>n(x(t),`src/main.ts#maybeGoal`)}),`src/main.ts#write~2`),toParentMessage:e=>n(H9.GotGoalMessage({message:e}),`src/main.ts#toParentMessage~2`),foldOutMessage:ZX.match({DeletedGoal:()=>n((e=>n({model:P(e,{maybeGoal:()=>n(b(),`src/main.ts#maybeGoal~2`)}),commands:[U9({url:Dz()})]},`src/main.ts#anonymous~11`)),`src/main.ts#DeletedGoal`)})}),LEe=LN({update:qbe,read:e=>n(e.maybeLesson,`src/main.ts#read~3`),write:(e,t)=>n(P(e,{maybeLesson:()=>n(x(t),`src/main.ts#maybeLesson`)}),`src/main.ts#write~3`),toParentMessage:e=>n(H9.GotLessonMessage({message:e}),`src/main.ts#toParentMessage~3`)}),REe=LN({update:Nxe,read:e=>n(e.maybeNotes,`src/main.ts#read~4`),write:(e,t)=>n(P(e,{maybeNotes:()=>n(x(t),`src/main.ts#maybeNotes`)}),`src/main.ts#write~4`),toParentMessage:e=>n(H9.GotNotesMessage({message:e}),`src/main.ts#toParentMessage~4`)}),zEe=LN({update:_Se,read:e=>n(e.maybePlacement,`src/main.ts#read~5`),write:(e,t)=>n(P(e,{maybePlacement:()=>n(x(t),`src/main.ts#maybePlacement`)}),`src/main.ts#write~5`),toParentMessage:e=>n(H9.GotPlacementMessage({message:e}),`src/main.ts#toParentMessage~5`),foldOutMessage:u8.match({FinishedPlacement:()=>n((e=>n({model:e,commands:bi(mr(e.maybePlacement,e=>n(U9({url:Oz({goalId:e.goalId})}),`src/main.ts#anonymous~13`)))},`src/main.ts#anonymous~12`)),`src/main.ts#FinishedPlacement`)})}),BEe=LN({update:TCe,read:e=>n(e.maybeReview,`src/main.ts#read~6`),write:(e,t)=>n(P(e,{maybeReview:()=>n(x(t),`src/main.ts#maybeReview`)}),`src/main.ts#write~6`),toParentMessage:e=>n(H9.GotReviewMessage({message:e}),`src/main.ts#toParentMessage~6`)}),VEe=LN({update:JTe,read:e=>n(e.maybeSettings,`src/main.ts#read~7`),write:(e,t)=>n(P(e,{maybeSettings:()=>n(x(t),`src/main.ts#maybeSettings`)}),`src/main.ts#write~7`),toParentMessage:e=>n(H9.GotSettingsMessage({message:e}),`src/main.ts#toParentMessage~7`)}),HEe=LN({update:kSe,read:e=>n(e.maybeProgress,`src/main.ts#read~8`),write:(e,t)=>n(P(e,{maybeProgress:()=>n(x(t),`src/main.ts#maybeProgress`)}),`src/main.ts#write~8`),toParentMessage:e=>n(H9.GotProgressMessage({message:e}),`src/main.ts#toParentMessage~8`)}),UEe=LN({update:_Ee,read:e=>n(e.maybeDevVisuals,`src/main.ts#read~9`),write:(e,t)=>n(P(e,{maybeDevVisuals:()=>n(x(t),`src/main.ts#maybeDevVisuals`)}),`src/main.ts#write~9`),toParentMessage:e=>n(H9.GotDevVisualsMessage({message:e}),`src/main.ts#toParentMessage~9`)}),J9=e=>n(S(e.maybeDevVisuals)?{model:e}:UN(mEe(),{toParentModel:t=>n(P(e,{maybeDevVisuals:()=>n(x(t),`src/main.ts#maybeDevVisuals~2`)}),`src/main.ts#toParentModel`),toParentMessage:e=>n(H9.GotDevVisualsMessage({message:e}),`src/main.ts#toParentMessage~10`)}),`src/main.ts#enterDevVisuals`),Y9=(e,t)=>n(Ez.match(t,{Home:()=>n(VN({update:dhe,read:e=>n(x(e.home),`src/main.ts#read~10`),write:(e,t)=>n(P(e,{home:()=>n(t,`src/main.ts#home~2`)}),`src/main.ts#write~10`),toParentMessage:e=>n(H9.GotHomeMessage({message:e}),`src/main.ts#toParentMessage~11`)})(P(e,{maybeGoal:()=>n(b(),`src/main.ts#maybeGoal~3`)})),`src/main.ts#Home`),Goal:({goalId:t})=>{let r=C(e.maybeGoal,{onNone:()=>n(!1,`src/main.ts#onNone`),onSome:e=>n(e.goalId===t,`src/main.ts#onSome`)}),i=P(e,{maybeLesson:()=>n(b(),`src/main.ts#maybeLesson~2`)});return n(r?VN({update:_me,read:e=>n(e.maybeGoal,`src/main.ts#read~11`),write:(e,t)=>n(P(e,{maybeGoal:()=>n(x(t),`src/main.ts#maybeGoal~4`)}),`src/main.ts#write~11`),toParentMessage:e=>n(H9.GotGoalMessage({message:e}),`src/main.ts#toParentMessage~12`)})(i):UN(vme(t),{toParentModel:e=>n(P(i,{maybeGoal:()=>n(x(e),`src/main.ts#maybeGoal~5`)}),`src/main.ts#toParentModel~2`),toParentMessage:e=>n(H9.GotGoalMessage({message:e}),`src/main.ts#toParentMessage~13`)}),`src/main.ts#Goal`)},Review:()=>n(UN(_Ce(),{toParentModel:t=>n(P(e,{maybeReview:()=>n(x(t),`src/main.ts#maybeReview~2`)}),`src/main.ts#toParentModel~3`),toParentMessage:e=>n(H9.GotReviewMessage({message:e}),`src/main.ts#toParentMessage~14`)}),`src/main.ts#Review`),Settings:()=>n(UN(GTe(),{toParentModel:t=>n(P(e,{maybeSettings:()=>n(x(t),`src/main.ts#maybeSettings~2`)}),`src/main.ts#toParentModel~4`),toParentMessage:e=>n(H9.GotSettingsMessage({message:e}),`src/main.ts#toParentMessage~15`)}),`src/main.ts#Settings`),Progress:()=>n(UN(OSe(),{toParentModel:t=>n(P(e,{maybeProgress:()=>n(x(t),`src/main.ts#maybeProgress~2`)}),`src/main.ts#toParentModel~5`),toParentMessage:e=>n(H9.GotProgressMessage({message:e}),`src/main.ts#toParentMessage~16`)}),`src/main.ts#Progress`),Placement:({goalId:t})=>n(UN(pSe(t),{toParentModel:t=>n(P(e,{maybePlacement:()=>n(x(t),`src/main.ts#maybePlacement~2`)}),`src/main.ts#toParentModel~6`),toParentMessage:e=>n(H9.GotPlacementMessage({message:e}),`src/main.ts#toParentMessage~17`)}),`src/main.ts#Placement`),Lesson:({goalId:t,conceptId:r})=>C(e.maybeLesson,{onNone:()=>n(!1,`src/main.ts#onNone~2`),onSome:e=>n(e.goalId===t&&e.conceptId===r,`src/main.ts#onSome~2`)})?n({model:e},`src/main.ts#Lesson`):n(UN(Pbe(t,r),{toParentModel:t=>n(P(e,{maybeLesson:()=>n(x(t),`src/main.ts#maybeLesson~3`)}),`src/main.ts#toParentModel~7`),toParentMessage:e=>n(H9.GotLessonMessage({message:e}),`src/main.ts#toParentMessage~18`)}),`src/main.ts#Lesson`),Notes:({goalId:t,conceptId:r})=>n(UN(Mxe(t,r),{toParentModel:t=>n(P(e,{maybeNotes:()=>n(x(t),`src/main.ts#maybeNotes~2`)}),`src/main.ts#toParentModel~8`),toParentMessage:e=>n(H9.GotNotesMessage({message:e}),`src/main.ts#toParentMessage~19`)}),`src/main.ts#Notes`),NotFound:()=>n({model:e},`src/main.ts#NotFound`),DevVisuals:()=>n(J9(e),`src/main.ts#DevVisuals`)}),`src/main.ts#enterRoute`),WEe=(e,t)=>n(H9.match(t,{ClickedLink:({request:t})=>n(nA.match(t,{Internal:({url:t})=>n({model:e,commands:[U9({url:jpe(t)})]},`src/main.ts#Internal`),External:({href:t})=>n({model:e,commands:[jEe({href:t})]},`src/main.ts#External`)}),`src/main.ts#ClickedLink`),ChangedUrl:({url:t})=>{let r=Fz(t),i=Y9(P(e,{route:()=>n(r,`src/main.ts#route`)}),r);return n({model:i.model,commands:[...i.commands??[],W9(),G9()]},`src/main.ts#ChangedUrl`)},CompletedNavigateInternal:()=>n({model:e},`src/main.ts#CompletedNavigateInternal`),CompletedLoadExternal:()=>n({model:e},`src/main.ts#CompletedLoadExternal`),ToggledTheme:()=>{let t=!e.isDark;return n({model:P(e,{isDark:()=>n(t,`src/main.ts#isDark`)}),commands:[MEe({isDark:t})]},`src/main.ts#ToggledTheme`)},CompletedApplyTheme:()=>n({model:e},`src/main.ts#CompletedApplyTheme`),SucceededFetchReminder:({reminder:t})=>n({model:P(e,{maybeReminder:()=>n(x(t),`src/main.ts#maybeReminder`)})},`src/main.ts#SucceededFetchReminder`),FailedFetchReminder:()=>n({model:e},`src/main.ts#FailedFetchReminder`),TickedReminderClock:()=>n(C(e.maybeReminder,{onNone:()=>n({model:e},`src/main.ts#onNone~3`),onSome:t=>n(t.isOn?{model:e,commands:[NEe({time:t.time})]}:{model:e},`src/main.ts#onSome~3`)}),`src/main.ts#TickedReminderClock`),CompletedReminderCheck:()=>n({model:e},`src/main.ts#CompletedReminderCheck`),TickedStudyMinute:()=>n({model:P(e,{studyMinutes:e=>n(e+1,`src/main.ts#studyMinutes`)})},`src/main.ts#TickedStudyMinute`),ClickedTakeBreak:()=>n({model:P(e,{studyMinutes:()=>n(0,`src/main.ts#studyMinutes~2`),nextBreakAt:()=>n(Z9,`src/main.ts#nextBreakAt`)})},`src/main.ts#ClickedTakeBreak`),ClickedKeepStudying:()=>n({model:P(e,{nextBreakAt:()=>n(e.studyMinutes+KEe,`src/main.ts#nextBreakAt~2`)})},`src/main.ts#ClickedKeepStudying`),GotHomeMessage:({message:t})=>n(FEe(e,t),`src/main.ts#GotHomeMessage`),GotGoalMessage:({message:t})=>n(IEe(e,t),`src/main.ts#GotGoalMessage`),GotLessonMessage:({message:t})=>n(LEe(e,t),`src/main.ts#GotLessonMessage`),GotNotesMessage:({message:t})=>n(REe(e,t),`src/main.ts#GotNotesMessage`),GotPlacementMessage:({message:t})=>n(zEe(e,t),`src/main.ts#GotPlacementMessage`),GotReviewMessage:({message:t})=>n(BEe(e,t),`src/main.ts#GotReviewMessage`),GotSettingsMessage:({message:t})=>n(VEe(e,t),`src/main.ts#GotSettingsMessage`),GotProgressMessage:({message:t})=>n(HEe(e,t),`src/main.ts#GotProgressMessage`),SucceededFetchToday:({today:t})=>n({model:P(e,{maybeToday:()=>n(x(t),`src/main.ts#maybeToday`)})},`src/main.ts#SucceededFetchToday`),FailedFetchToday:()=>n({model:e},`src/main.ts#FailedFetchToday`),GotDevVisualsMessage:({message:t})=>n(UEe(e,t),`src/main.ts#GotDevVisualsMessage`)}),`src/main.ts#update`),X9=(e,t)=>{let r=Y9(e.model,t);return n({model:r.model,commands:[...e.commands??[],...r.commands??[],W9(),G9()]},`src/main.ts#withRoute`)},GEe=(e,t)=>{let r=Fz(t),i=UN(uhe(),{toParentModel:t=>n({route:r,home:t,maybeGoal:b(),maybeLesson:b(),maybeNotes:b(),maybePlacement:b(),maybeReview:b(),maybeSettings:b(),maybeProgress:b(),maybeToday:b(),isDark:e.isDark,maybeDevVisuals:b(),studyMinutes:0,nextBreakAt:Z9,maybeReminder:b()},`src/main.ts#toParentModel~9`),toParentMessage:e=>n(H9.GotHomeMessage({message:e}),`src/main.ts#toParentMessage~20`)});return n(Ez.match(r,{Home:()=>n({model:i.model,commands:[...i.commands??[],W9(),G9()]},`src/main.ts#Home~2`),Goal:()=>n(X9(i,r),`src/main.ts#Goal~2`),Lesson:()=>n(X9(i,r),`src/main.ts#Lesson~2`),Notes:()=>n(X9(i,r),`src/main.ts#Notes~2`),Placement:()=>n(X9(i,r),`src/main.ts#Placement~2`),Review:()=>n(X9(i,r),`src/main.ts#Review~2`),Settings:()=>n(X9(i,r),`src/main.ts#Settings~2`),Progress:()=>n(X9(i,r),`src/main.ts#Progress~2`),NotFound:()=>n(i,`src/main.ts#NotFound~2`),DevVisuals:()=>{let e=J9(i.model);return n({model:e.model,commands:[...i.commands??[],...e.commands??[]]},`src/main.ts#DevVisuals~2`)}}),`src/main.ts#init`)},Z9=25,KEe=15,Q9=e=>n(e._tag===`Lesson`||e._tag===`Review`||e._tag===`Placement`,`src/main.ts#isStudyRoute`),qEe=iA()(e=>n({reminderClock:e({isOn:Ky},{modelToDependencies:e=>n({isOn:Cr(e.maybeReminder,e=>n(e.isOn,`src/main.ts#anonymous~15`))},`src/main.ts#modelToDependencies`),dependenciesToStream:({isOn:e})=>n(e?TC(La(30)).pipe(zC(()=>n(H9.TickedReminderClock(),`src/main.ts#anonymous~16`))):kC,`src/main.ts#dependenciesToStream`)}),studyClock:e({isStudying:Ky},{modelToDependencies:e=>n({isStudying:Q9(e.route)},`src/main.ts#modelToDependencies~2`),dependenciesToStream:({isStudying:e})=>n(e?TC(Ra(1)).pipe(qC(1),zC(()=>n(H9.TickedStudyMinute(),`src/main.ts#anonymous~17`))):kC,`src/main.ts#dependenciesToStream~2`)})},`src/main.ts#anonymous~14`)),JEe=lA(_he)({read:e=>n(x(e.home),`src/main.ts#read~12`),toParentMessage:e=>n(H9.GotHomeMessage({message:e}),`src/main.ts#toParentMessage~21`),when:({route:e})=>n(e._tag===`Home`,`src/main.ts#when`)}),YEe=lA(Tme)({read:e=>n(e.maybeGoal,`src/main.ts#read~13`),toParentMessage:e=>n(H9.GotGoalMessage({message:e}),`src/main.ts#toParentMessage~22`),when:({route:e})=>n(e._tag===`Goal`,`src/main.ts#when~2`)}),XEe=lA($be)({read:e=>n(e.maybeLesson,`src/main.ts#read~14`),toParentMessage:e=>n(H9.GotLessonMessage({message:e}),`src/main.ts#toParentMessage~23`),when:({route:e})=>n(e._tag===`Lesson`,`src/main.ts#when~3`)}),ZEe=lA(ySe)({read:e=>n(e.maybePlacement,`src/main.ts#read~15`),toParentMessage:e=>n(H9.GotPlacementMessage({message:e}),`src/main.ts#toParentMessage~24`),when:({route:e})=>n(e._tag===`Placement`,`src/main.ts#when~4`)}),QEe=oA(qEe,lA(OCe)({read:e=>n(e.maybeReview,`src/main.ts#read~16`),toParentMessage:e=>n(H9.GotReviewMessage({message:e}),`src/main.ts#toParentMessage~25`),when:({route:e})=>n(e._tag===`Review`,`src/main.ts#when~5`)}),JEe,YEe,XEe,ZEe,lA(yEe)({read:e=>n(e.maybeDevVisuals,`src/main.ts#read~17`),toParentMessage:e=>n(H9.GotDevVisualsMessage({message:e}),`src/main.ts#toParentMessage~26`),when:({route:e})=>n(e._tag===`DevVisuals`,`src/main.ts#when~6`)})),$Ee=e=>n(Cr(e.maybeToday,e=>n(e.studiedCount>0||e.dueCount+e.dueFlashcards>0,`src/main.ts#anonymous~18`)),`src/main.ts#hasStudied`),eDe=(e,t)=>n(t.header([t.Class(`sticky top-0 z-20 border-b border-transparent bg-background/80 backdrop-blur-md supports-[backdrop-filter]:bg-background/60`)],[t.div([t.Class(`mx-auto flex h-14 w-full max-w-7xl items-center justify-between px-5`)],[t.a([t.Href(Dz()),t.Class(`press flex items-center gap-2 font-semibold tracking-tight`)],[t.img([t.Src(`/icon.svg`),t.Alt(``),t.Class(`size-7 rounded-lg`)]),`BaviTutor`]),t.div([t.Class(`flex items-center gap-1`)],[t.div([t.Class(`contents`)],$Ee(e)?[nDe(e,t),tDe(e,t)]:[]),t.a([t.Href(Nz()),t.AriaLabel(`Settings`),t.Title(`Settings`),t.Class(I(`Ghost`,`Icon`,e.route._tag===`Settings`?`bg-accent text-accent-foreground`:``))],[L(`sliders`,``,t)]),t.button([t.Type(`button`),t.AriaLabel(e.isDark?`Switch to light theme`:`Switch to dark theme`),t.OnClick(H9.ToggledTheme()),t.Class(I(`Ghost`,`Icon`))],[e.isDark?L(`sun`,``,t):L(`moon`,``,t)])])])]),`src/main.ts#navView`),tDe=(e,t)=>{let r=C(e.maybeToday,{onNone:()=>n(0,`src/main.ts#onNone~4`),onSome:e=>n(e.dueCount+e.dueFlashcards,`src/main.ts#onSome~4`)});return n(t.a([t.Href(Mz()),t.Class(I(`Ghost`,`Medium`,F(`max-sm:px-2.5`,e.route._tag===`Review`&&`bg-accent text-accent-foreground`)))],[L(`brain`,``,t),$9(`Review`,t),r>0?t.span([t.Class(`ml-0.5 inline-flex min-w-5 items-center justify-center rounded-full bg-primary px-1.5 text-[11px] font-semibold text-primary-foreground tabular-nums`)],[`${r}`]):t.empty]),`src/main.ts#reviewLink`)},nDe=(e,t)=>n(t.a([t.Href(Pz()),t.Class(I(`Ghost`,`Medium`,F(`max-sm:px-2.5`,e.route._tag===`Progress`&&`bg-accent text-accent-foreground`)))],[L(`chart`,``,t),$9(`Progress`,t)]),`src/main.ts#progressLink`),$9=(e,t)=>n(t.span([t.Class(`sr-only sm:not-sr-only`)],[e]),`src/main.ts#navLabel`),rDe=(e,t)=>n(Q9(e.route)&&e.studyMinutes>=e.nextBreakAt?t.div([t.Role(`status`),t.Class(`pop-in fixed inset-x-4 bottom-4 z-30 mx-auto flex max-w-xl flex-col gap-3 rounded-2xl border bg-popover p-4 text-popover-foreground shadow-lg sm:flex-row sm:items-center`)],[t.div([t.Class(`flex flex-1 items-start gap-3`)],[L(`clock`,`mt-0.5 size-5 shrink-0 text-primary`,t),t.div([t.Class(`flex flex-col gap-0.5`)],[t.p([t.Class(`font-medium`)],[`${e.studyMinutes} minutes done. Time for a break?`]),t.p([t.Class(`text-sm text-muted-foreground`)],[`Stand up and rest your eyes for 5 minutes. We saved your spot.`])])]),t.div([t.Class(`flex shrink-0 gap-2 sm:flex-col`)],[t.button([t.Type(`button`),t.OnClick(H9.ClickedTakeBreak()),t.Class(I(`Primary`,`Small`))],[`Take a break`]),t.button([t.Type(`button`),t.OnClick(H9.ClickedKeepStudying()),t.Class(I(`Ghost`,`Small`))],[`15 more minutes`])])]):t.empty,`src/main.ts#breakPromptView`),iDe=e=>n(e.div([e.Class(`mx-auto flex max-w-md flex-col items-center gap-4 px-5 pt-24 text-center`)],[e.p([e.Class(`text-5xl font-semibold`)],[`404`]),e.p([e.Class(`text-muted-foreground`)],[`Page not found.`]),e.a([e.Href(Dz()),e.Class(I(`Outline`))],[`Go home`])]),`src/main.ts#notFoundView`);PN(EN({Model:kEe,Flags:AEe,init:GEe,update:WEe,view:(e,t)=>{let r=Ez.match(e.route,{Home:()=>n(t.submodel({slotId:`home`,model:e.home,view:Phe,toParentMessage:e=>n(H9.GotHomeMessage({message:e}),`src/main.ts#toParentMessage~27`)}),`src/main.ts#Home~3`),Goal:()=>n(C(e.maybeGoal,{onNone:()=>n(t.empty,`src/main.ts#onNone~5`),onSome:e=>n(t.submodel({slotId:`goal`,model:e,view:Kme,toParentMessage:e=>n(H9.GotGoalMessage({message:e}),`src/main.ts#toParentMessage~28`)}),`src/main.ts#onSome~5`)}),`src/main.ts#Goal~3`),Review:()=>n(C(e.maybeReview,{onNone:()=>n(t.empty,`src/main.ts#onNone~6`),onSome:e=>n(t.submodel({slotId:`review`,model:e,view:qCe,toParentMessage:e=>n(H9.GotReviewMessage({message:e}),`src/main.ts#toParentMessage~29`)}),`src/main.ts#onSome~6`)}),`src/main.ts#Review~3`),Progress:()=>n(C(e.maybeProgress,{onNone:()=>n(t.empty,`src/main.ts#onNone~7`),onSome:e=>n(t.submodel({slotId:`progress`,model:e,view:oCe,toParentMessage:e=>n(H9.GotProgressMessage({message:e}),`src/main.ts#toParentMessage~30`)}),`src/main.ts#onSome~7`)}),`src/main.ts#Progress~3`),Placement:()=>n(C(e.maybePlacement,{onNone:()=>n(t.empty,`src/main.ts#onNone~8`),onSome:e=>n(t.submodel({slotId:`placement`,model:e,view:ESe,toParentMessage:e=>n(H9.GotPlacementMessage({message:e}),`src/main.ts#toParentMessage~31`)}),`src/main.ts#onSome~8`)}),`src/main.ts#Placement~3`),Lesson:()=>n(C(e.maybeLesson,{onNone:()=>n(t.empty,`src/main.ts#onNone~9`),onSome:e=>n(t.submodel({slotId:`lesson`,model:e,view:Txe,toParentMessage:e=>n(H9.GotLessonMessage({message:e}),`src/main.ts#toParentMessage~32`)}),`src/main.ts#onSome~9`)}),`src/main.ts#Lesson~3`),Notes:()=>n(C(e.maybeNotes,{onNone:()=>n(t.empty,`src/main.ts#onNone~10`),onSome:e=>n(t.submodel({slotId:`notes`,model:e,view:nSe,toParentMessage:e=>n(H9.GotNotesMessage({message:e}),`src/main.ts#toParentMessage~33`)}),`src/main.ts#onSome~10`)}),`src/main.ts#Notes~3`),Settings:()=>n(C(e.maybeSettings,{onNone:()=>n(t.empty,`src/main.ts#onNone~11`),onSome:e=>n(t.submodel({slotId:`settings`,model:e,view:cEe,toParentMessage:e=>n(H9.GotSettingsMessage({message:e}),`src/main.ts#toParentMessage~34`)}),`src/main.ts#onSome~11`)}),`src/main.ts#Settings~3`),NotFound:()=>n(iDe(t),`src/main.ts#NotFound~3`),DevVisuals:()=>n(C(e.maybeDevVisuals,{onNone:()=>n(t.empty,`src/main.ts#onNone~12`),onSome:e=>n(t.submodel({slotId:`dev-visuals`,model:e,view:OEe,toParentMessage:e=>n(H9.GotDevVisualsMessage({message:e}),`src/main.ts#toParentMessage~35`)}),`src/main.ts#onSome~12`)}),`src/main.ts#DevVisuals~3`)});return n({title:Ew(e.route).pipe(Mw(`Goal`,()=>n(C(e.maybeGoal,{onNone:()=>n(`BaviTutor`,`src/main.ts#onNone~13`),onSome:qme}),`src/main.ts#anonymous~19`)),Mw(`Placement`,()=>n(`Placement quiz · BaviTutor`,`src/main.ts#anonymous~20`)),Mw(`Review`,()=>n(`Review · BaviTutor`,`src/main.ts#anonymous~21`)),Mw(`Settings`,()=>n(lEe,`src/main.ts#anonymous~22`)),Mw(`Progress`,()=>n(`Progress · BaviTutor`,`src/main.ts#anonymous~23`)),Mw(`Notes`,()=>n(C(e.maybeNotes,{onNone:()=>n(`Notes · BaviTutor`,`src/main.ts#onNone~14`),onSome:rSe}),`src/main.ts#anonymous~24`)),Mw(`Lesson`,()=>n(C(e.maybeLesson,{onNone:()=>n(`Lesson · BaviTutor`,`src/main.ts#onNone~15`),onSome:Exe}),`src/main.ts#anonymous~25`)),Pw(()=>n(`BaviTutor · learn anything`,`src/main.ts#anonymous~26`))),body:t.div([t.Class(`flex min-h-dvh flex-col`)],[eDe(e,t),t.main([t.Class(`flex-1`)],[r]),rDe(e,t)])},`src/main.ts#view`)},subscriptions:QEe,resources:ZR,container:document.getElementById(`root`),routing:{onUrlRequest:e=>n(H9.ClickedLink({request:e}),`src/entry.ts#onUrlRequest`),onUrlChange:e=>n(H9.ChangedUrl({url:e}),`src/entry.ts#onUrlChange`)},devTools:{Message:H9}}),{flags:PEe});