\n \n
\n
\n QURAN SPACE\n
\n

${n}

\n
Space: ${e.roomCode}
\n
\n ${r}\n ${a}\n \n \n \n `;var _}q(()=>{e.isOpen&&async function(){w(i,!0),w(u,null);try{const n=await fm.getNotes(e.roomCode,void 0,"shared");n.success&&n.notes?(w(l,n.notes,!0),w(m,N(p)(3),!0),w(h,ke(n.notes.content),!0)):w(h,{general_notes:[],ayah_notes:[]},!0);const r=P();w(c,ge(e.roomCode,r),!0)}catch(n){console.error("Error loading notes:",n),w(u,N(p)(440),!0)}finally{w(i,!1)}}()}),xc(n,{get open(){return e.isOpen},onOpenChange:function(n){n||e.onClose()},children:(n,r)=>{Ac(n,{class:"flex max-h-[90vh] w-[95vw] max-w-lg flex-col p-0 sm:w-[85vw]",portalProps:{},children:(n,r)=>{var t=Ff(),o=_e(t);!function(n,e){E(e,!0);let r=y(e,"ref",15,null),a=v(e,["$$slots","$$events","$$legacy","ref","class","children"]);var _=$c();G(_,n=>({"data-slot":"dialog-header",class:n,...a}),[()=>J_("flex flex-col gap-2 text-center sm:text-start",e.class)]);var t=D(_);an(t,()=>e.children??Wn),cn(_),L(_,n=>r(n),()=>r()),dn(n,_),en()}(o,{class:"shrink-0 px-4 py-2.5 pb-2 sm:px-6 sm:py-3 sm:pb-2",children:(n,r)=>{var t=$f(),o=_e(t);!function(n,e){E(e,!0);let r=y(e,"ref",15,null),a=v(e,["$$slots","$$events","$$legacy","ref","class"]);var _=ne(),t=_e(_);{let n=b(()=>J_("text-lg leading-none font-semibold",e.class));un(t,()=>T,(e,_)=>{_(e,C({"data-slot":"dialog-title",get class(){return N(n)}},()=>a,{get ref(){return r()},set ref(n){r(n)}}))})}dn(n,_),en()}(o,{class:"text-lg font-semibold sm:text-xl dark:text-foreground/90",children:(n,e)=>{a();var r=Xn();A(()=>re(r,N(m))),dn(n,r)},$$slots:{default:!0}}),function(n,e){E(e,!0);let r=y(e,"ref",15,null),a=v(e,["$$slots","$$events","$$legacy","ref","class"]);var t=ne(),o=_e(t);{let n=b(()=>J_("text-sm text-muted-foreground",e.class));un(o,()=>_,(e,_)=>{_(e,C({"data-slot":"dialog-description",get class(){return N(n)}},()=>a,{get ref(){return r()},set ref(n){r(n)}}))})}dn(n,t),en()}(d(o,2),{class:"text-xs text-muted-foreground sm:text-sm",children:(n,r)=>{{let r=b(()=>N(p).c(445)),a=b(()=>[e.roomCode]);ct(n,{get x(){return N(r)},get a(){return N(a)}})}},$$slots:{default:!0}}),dn(n,t)},$$slots:{default:!0}});var s=d(o,2),l=D(s),x=D(l);{let n=b(()=>"general"===N(f)?"bg-background font-semibold text-foreground shadow-sm":"text-muted-foreground hover:text-foreground");ht(x,{variant:"ghost",type:"button",get class(){return`flex-1 rounded-md px-3 py-2 transition-all ${N(n)??""}`},onclick:()=>w(f,"general"),children:(n,e)=>{{let e=b(()=>N(p).c(382)),r=b(()=>[N(c).general_notes.length+N(h).general_notes.length]);ct(n,{get x(){return N(e)},get a(){return N(r)}})}},$$slots:{default:!0}})}var S=d(x,2);{let n=b(()=>"ayah"===N(f)?"bg-background font-semibold text-foreground shadow-sm":"text-muted-foreground hover:text-foreground");ht(S,{variant:"ghost",type:"button",get class(){return`flex-1 rounded-md px-3 py-2 transition-all ${N(n)??""}`},onclick:()=>w(f,"ayah"),children:(n,e)=>{{let e=b(()=>N(p).c(383)),r=b(()=>[N(c).ayah_notes.length+N(h).ayah_notes.length]);ct(n,{get x(){return N(e)},get a(){return N(r)}})}},$$slots:{default:!0}})}cn(l),cn(s);var q=d(s,2),U=D(q),H=n=>{var e=Sf(),r=D(e),a=D(r,!0);cn(r),cn(e),A(n=>re(a,n),[()=>N(p)(388)]),dn(n,e)},V=n=>{var e=Cf(),r=D(e),a=D(r,!0);cn(r),cn(e),A(()=>re(a,N(u))),dn(n,e)},W=n=>{var r=Df(),a=D(r),_=n=>{var r=Tf(),a=D(r),_=D(a),t=D(_);{let n=b(()=>"private"===N(g)?"bg-background text-foreground shadow":"text-muted-foreground");ht(t,{variant:"ghost",type:"button",get class(){return`rounded-sm px-2 py-0.5 transition sm:px-3 sm:py-1 ${N(n)??""}`},onclick:()=>w(g,"private"),children:(n,e)=>{{let e=b(()=>N(p).c(344)),r=b(()=>[N(c).general_notes.length]);ct(n,{get x(){return N(e)},get a(){return N(r)}})}},$$slots:{default:!0}})}var o=d(t,2);{let n=b(()=>"shared"===N(g)?"bg-background text-foreground shadow":"text-muted-foreground");ht(o,{variant:"ghost",type:"button",get class(){return`rounded-sm px-2 py-0.5 transition sm:px-3 sm:py-1 ${N(n)??""}`},onclick:()=>w(g,"shared"),children:(n,e)=>{{let e=b(()=>N(p).c(345)),r=b(()=>[N(h).general_notes.length]);ct(n,{get x(){return N(e)},get a(){return N(r)}})}},$$slots:{default:!0}})}cn(_),cn(a);var s=d(a,2),i=n=>{var e=Mf(),r=D(e);{let n=b(()=>N(p).c(446)),e=b(()=>[N(g)]);ct(r,{get x(){return N(n)},get a(){return N(e)}})}cn(e),dn(n,e)},u=n=>{var r=Af();Gn(r,21,()=>N($),n=>n.id,(n,r)=>{var a=zf(),_=D(a),t=D(_),o=D(t,!0);cn(t);var s=d(t,2),i=D(s);{let n=b(()=>N(p)(447));ht(i,{variant:"ghost",size:"icon",type:"button",class:"rounded p-1 text-muted-foreground transition hover:bg-muted hover:text-foreground sm:p-1.5",onclick:()=>async function(n,e){try{const r=window.open("","_blank");if(!r)return;const a=`\n
\n
${R(n.content).replace(/\n/g,"
")}
\n
\n `,_=`\n
\n

${"private"===e?N(p)(348):N(p)(441)} General Note

\n ${a}\n
\n `,t=O(N(p)(443),_,"");r.document.write(t),r.document.close(),r.onload=()=>{setTimeout(()=>{r.print(),r.close()},250)}}catch(r){console.error("Failed to download note:",r)}}(N(r),N(g)),get title(){return N(n)},children:(n,e)=>{jt(n,{size:14})},$$slots:{default:!0}})}var u=d(i,2),l=n=>{{let a=b(()=>N(p)(448));ht(n,{variant:"ghost",size:"icon",type:"button",class:"rounded p-1 text-muted-foreground transition hover:bg-destructive/10 hover:text-destructive sm:p-1.5",onclick:()=>async function(n,r){if(F(r))if("private"===r){const r=P(),a={...N(c)};a.general_notes=a.general_notes.filter(e=>e.id!==n),w(c,a,!0);const{save_personal_notes:_}=await import("/chunks/PersonalNotesStorage-CNrNZ_F6.js").then(n=>n.t);_(e.roomCode,r,a)}else{if(!N(h).general_notes.find(e=>e.id===n))return;if((await fm.deleteNotes(e.roomCode,parseInt(n))).success){const e={...N(h)};e.general_notes=e.general_notes.filter(e=>e.id!==n),w(h,e,!0)}}}(N(r).id,N(g)),get title(){return N(a)},children:(n,e)=>{_o(n,{size:14})},$$slots:{default:!0}})}},y=b(()=>F(N(g)));En(u,n=>{N(y)&&n(l)}),cn(s),cn(_);var m=d(_,2),v=D(m);{let n=b(()=>N(p).c(23)),e=b(()=>[I(N(r).updated_at)]);ct(v,{get x(){return N(n)},get a(){return N(e)}})}cn(m),cn(a),A(()=>re(o,N(r).content)),dn(n,a)}),cn(r),dn(n,r)};En(s,n=>{0===N($).length?n(i):n(u,-1)}),cn(r),dn(n,r)};En(a,n=>{"general"===N(f)&&n(_)});var t=d(a,2),o=n=>{var r=Lf(),a=D(r),_=D(a),t=D(_);{let n=b(()=>"private"===N(k)?"bg-background text-foreground shadow":"text-muted-foreground");ht(t,{variant:"ghost",type:"button",get class(){return`rounded-sm px-2 py-0.5 transition sm:px-3 sm:py-1 ${N(n)??""}`},onclick:()=>w(k,"private"),children:(n,e)=>{{let e=b(()=>N(p).c(344)),r=b(()=>[N(c).ayah_notes.length]);ct(n,{get x(){return N(e)},get a(){return N(r)}})}},$$slots:{default:!0}})}var o=d(t,2);{let n=b(()=>"shared"===N(k)?"bg-background text-foreground shadow":"text-muted-foreground");ht(o,{variant:"ghost",type:"button",get class(){return`rounded-sm px-2 py-0.5 transition sm:px-3 sm:py-1 ${N(n)??""}`},onclick:()=>w(k,"shared"),children:(n,e)=>{{let e=b(()=>N(p).c(345)),r=b(()=>[N(h).ayah_notes.length]);ct(n,{get x(){return N(e)},get a(){return N(r)}})}},$$slots:{default:!0}})}cn(_),cn(a);var s=d(a,2),i=n=>{var e=qf(),r=D(e);{let n=b(()=>N(p).c(449)),e=b(()=>[N(k)]);ct(r,{get x(){return N(n)},get a(){return N(e)}})}cn(e),dn(n,e)},u=n=>{var r=Ef();Gn(r,21,()=>N(z),n=>n.surah,(n,r)=>{const a=b(()=>!N(j).has(N(r).surah));var _=Rf(),t=D(_);ht(t,{variant:"ghost",type:"button",class:"flex w-full items-center justify-between gap-1 p-2 transition hover:bg-muted/20 sm:gap-2 sm:p-2.5",onclick:()=>{return n=N(r).surah,N(j).has(n)?N(j).delete(n):N(j).add(n),void w(j,new Set(N(j)),!0);var n},children:(n,e)=>{var _=jf(),t=_e(_),o=D(t),s=D(o,!0);cn(o);var i=d(o,2),u=D(i);cn(i),cn(t);var l=d(t,2);{let n=b(()=>["text-muted-foreground transition-transform","h-4 w-4",!N(a)&&"rotate-180"]);zt(l,{get class(){return N(n)}})}A(n=>{yn(o,1,`rounded-full px-2 py-1 text-xs font-medium ${n??""}`),re(s,N(r).surah_name_ar),re(u,`${N(r).notes.length??""}\n ${1===N(r).notes.length?"note":"notes"}`)},[()=>function(n){const e=["bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-200","bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200","bg-purple-100 text-purple-800 dark:bg-purple-900 dark:text-purple-200","bg-pink-100 text-pink-800 dark:bg-pink-900 dark:text-pink-200","bg-orange-100 text-orange-800 dark:bg-orange-900 dark:text-orange-200","bg-cyan-100 text-cyan-800 dark:bg-cyan-900 dark:text-cyan-200","bg-indigo-100 text-indigo-800 dark:bg-indigo-900 dark:text-indigo-200","bg-teal-100 text-teal-800 dark:bg-teal-900 dark:text-teal-200","bg-rose-100 text-rose-800 dark:bg-rose-900 dark:text-rose-200","bg-amber-100 text-amber-800 dark:bg-amber-900 dark:text-amber-200"];return e[n%e.length]}(N(r).surah)]),dn(n,_)},$$slots:{default:!0}});var o=d(t,2),s=n=>{var a=If();Gn(a,21,()=>N(r).notes,n=>n.id,(n,r)=>{var a=Pf(),_=D(a),t=D(_),o=D(t),s=D(o);{let n=b(()=>N(p).c(174)),e=b(()=>[N(r).ayah]);ct(s,{get x(){return N(n)},get a(){return N(e)}})}cn(o);var i=d(o,2),u=n=>{var e=Nf(),a=D(e);{let n=b(()=>N(p).c(175)),e=b(()=>[N(r).page]);ct(a,{get x(){return N(n)},get a(){return N(e)}})}cn(e),dn(n,e)};En(i,n=>{N(r).page&&n(u)}),cn(t);var l=d(t,2),y=D(l);{let n=b(()=>N(p)(447));ht(y,{variant:"ghost",size:"icon",type:"button",class:"rounded p-1 text-muted-foreground transition hover:bg-muted hover:text-foreground sm:p-1.5",onclick:()=>async function(n,e){try{const r=window.open("","_blank");if(!r)return;const a=[N(p)(173,[n.surah]),N(p)(174,[n.ayah])];null!=n.page&&a.push(N(p)(175,[n.page]));const _=`\n
\n
${a.join(" · ")}
\n
${R(n.note).replace(/\n/g,"
")}
\n
\n `,t=`\n
\n

${"private"===e?N(p)(348):N(p)(441)} Ayah Note

\n ${_}\n
\n `,o=O(N(p)(444),"",t);r.document.write(o),r.document.close(),r.onload=()=>{setTimeout(()=>{r.print(),r.close()},250)}}catch(r){console.error("Failed to download note:",r)}}(N(r),N(k)),get title(){return N(n)},children:(n,e)=>{jt(n,{size:14})},$$slots:{default:!0}})}var m=d(y,2),g=n=>{{let a=b(()=>N(p)(448));ht(n,{variant:"ghost",size:"icon",type:"button",class:"rounded p-1 text-muted-foreground transition hover:bg-destructive/10 hover:text-destructive sm:p-1.5",onclick:()=>async function(n,r){if(F(r))if("private"===r){const r=P(),a={...N(c)};a.ayah_notes=a.ayah_notes.filter(e=>e.id!==n),w(c,a,!0);const{save_personal_notes:_}=await import("/chunks/PersonalNotesStorage-CNrNZ_F6.js").then(n=>n.t);_(e.roomCode,r,a)}else{if(!N(h).ayah_notes.find(e=>e.id===n))return;if((await fm.deleteNotes(e.roomCode,parseInt(n))).success){const e={...N(h)};e.ayah_notes=e.ayah_notes.filter(e=>e.id!==n),w(h,e,!0)}}}(N(r).id,N(k)),get title(){return N(a)},children:(n,e)=>{_o(n,{size:14})},$$slots:{default:!0}})}},v=b(()=>F(N(k)));En(m,n=>{N(v)&&n(g)}),cn(l),cn(_);var f=d(_,2),x=D(f,!0);cn(f);var $=d(f,2),S=D($);{let n=b(()=>N(p).c(23)),e=b(()=>[I(N(r).updated_at)]);ct(S,{get x(){return N(n)},get a(){return N(e)}})}cn($),cn(a),A(()=>re(x,N(r).note)),dn(n,a)}),cn(a),dn(n,a)};En(o,n=>{N(a)||n(s)}),cn(_),dn(n,_)}),cn(r),dn(n,r)};En(s,n=>{0===N(M).length?n(i):n(u,-1)}),cn(r),dn(n,r)};En(t,n=>{"ayah"===N(f)&&n(o)}),cn(r),dn(n,r)};En(U,n=>{N(i)?n(H):N(u)?n(V,1):n(W,-1)}),cn(q),dn(n,t)},$$slots:{default:!0}})},$$slots:{default:!0}}),en(),o()}var Uf=O('
'),Hf=O('
'),Vf=O('
'),Wf=O(' '),Bf=O('
',1),Kf=O(" ",1),Gf=O(" ",1);function Qf(n,e){E(e,!0);const[r,_]=S();let t=y(e,"showCreatedDate",3,!1);const o=b(()=>e.room.codeid);let s=W(!1),i=W(null),u=W(!1);async function h(){try{const n=await fm.getNotes(e.room.codeid);let a={general_notes:[],ayah_notes:[]};n.success&&n.notes?(w(i,n.notes,!0),a=ke(n.notes.content)):w(i,null);const _=Dn(j_,"$session",r).user?.id?.toString()||"guest",t=ge(e.room.codeid,_),o={general_notes:[...a.general_notes,...t.general_notes],ayah_notes:[...a.ayah_notes,...t.ayah_notes]};w(s,we(o),!0)}catch(n){console.warn("Failed to check for session notes:",n),w(s,!1),w(i,null)}}async function c(){try{await navigator.clipboard.writeText(e.room.codeid)}catch(n){console.error("Failed to copy room code:",n)}}h();const p=b(()=>Ra("main"));function m(){Mh({title:N(p)(176),message:N(p)(177),confirmLabel:N(p)(178),cancelLabel:N(p)(166),destructive:!0,redirectTo:null,onConfirm:g})}async function g(){try{if((await Ps.deleteRoom(e.room.codeid)).success){const n=new CustomEvent("roomDeleted",{detail:{roomCode:e.room.codeid}});document.dispatchEvent(n)}}catch(n){console.error("Failed to delete room:",n)}}var v=Gf();l("notesSaved",k,function(n){n.detail?.roomCode===e.room.codeid&&h()}),l("personalNotesUpdated",M,function(n){n.detail?.roomCode===e.room.codeid&&h()});var f=_e(v);id(f,{class:"w-full py-2 transition-shadow duration-150 hover:shadow-md",children:(n,r)=>{var _=Kf(),o=_e(_);pd(o,{class:"px-3 pt-2.5 pb-1.5",children:(n,r)=>{var _=Uf(),t=D(_);bd(t,{class:"mb-1 text-sm leading-5 font-semibold",children:(n,r)=>{a();var _=Xn();A(n=>re(_,n),[()=>e.room.name?e.room.name:N(p)(179,[e.room.codeid])]),dn(n,_)},$$slots:{default:!0}});var o=d(t,2),s=D(o),i=D(s,!0);cn(s),cn(o),cn(_),A((n,r,a)=>{yn(o,1,Bn(e.room.is_owner?"mt-1 inline-block h-2 w-2 shrink-0 rounded-full bg-primary/80":"mt-1 inline-block h-2 w-2 shrink-0 rounded-full bg-muted-foreground/40")),$(o,"title",n),$(o,"aria-label",r),re(i,a)},[()=>e.room.is_owner?N(p)(180):N(p)(181),()=>e.room.is_owner?N(p)(180):N(p)(181),()=>e.room.is_owner?N(p)(180):N(p)(181)]),dn(n,_)},$$slots:{default:!0}}),ld(d(o,2),{class:"space-y-1 px-3 pt-0 pb-3",children:(n,r)=>{var _=Bf(),o=_e(_),l=D(o),h=D(l),y=D(h,!0);cn(h);var g=d(h,2),v=D(g),k=D(v,!0);cn(v);var f=d(v,2);{let n=b(()=>N(p)(183));ht(f,{variant:"ghost",size:"sm",class:"h-4 w-4 p-0",onclick:c,get title(){return N(n)},children:(n,e)=>{qt(n,{size:10})},$$slots:{default:!0}})}cn(g),cn(l);var x=d(l,2),$=n=>{var r=Hf(),a=D(r),_=D(a,!0);cn(a);var t=d(a,2),o=D(t,!0);cn(t),cn(r),A((n,e)=>{re(_,n),re(o,e)},[()=>N(p)(184),()=>{return n=e.room.created_at,new Date(n).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"});var n}]),dn(n,r)};En(x,n=>{t()&&n($)});var S=d(x,2),C=n=>{var e=Vf(),r=D(e),a=D(r,!0);cn(r);var _=d(r,2),t=D(_,!0);cn(_),cn(e),A((n,e)=>{re(a,n),re(t,e)},[()=>N(p)(185),()=>N(p)(186)]),dn(n,e)};En(S,n=>{e.room.has_password&&n(C)}),cn(o);var M=d(o,2),z=D(M),T=D(z),q=D(T,!0);cn(T);var j=d(T,2),P=n=>{{const e=n=>{Rt(n,{size:10,class:"mr-1"})};let r=b(()=>N(p)(188));ht(n,{variant:"outline",size:"sm",class:"h-5 border-gray-200 bg-white px-2 text-[11px] hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:hover:bg-gray-700",onclick:()=>N(i)&&w(u,!0),get title(){return N(r)},_w_snippet_0:e,children:(n,r)=>{{let r=b(()=>[e]),a=b(()=>N(p).c(189));ct(n,{get t(){return N(r)},get x(){return N(a)}})}},$$slots:{_w_snippet_0:!0,default:!0}})}},I=n=>{var e=Wf(),r=D(e,!0);cn(e),A(n=>re(r,n),[()=>N(p)(190)]),dn(n,e)};En(j,n=>{N(s)?n(P):n(I,-1)}),cn(z),cn(M);var R=d(M,2),E=D(R);ht(E,{onclick:()=>window.navgo.goto(`/room/${e.room.codeid}`),size:"sm",variant:"secondary",class:"h-7 flex-1 px-2.5 text-xs",children:(n,e)=>{a();var r=Xn();A(n=>re(r,n),[()=>N(p)(55)]),dn(n,r)},$$slots:{default:!0}});var L=d(E,2),F=n=>{{let e=b(()=>N(p)(191));ht(n,{variant:"destructive",size:"sm",class:"h-7 w-auto px-2",onclick:m,get title(){return N(e)},children:(n,e)=>{_o(n,{size:13,class:"bi bi-trash3"})},$$slots:{default:!0}})}};En(L,n=>{e.room.is_owner&&n(F)}),cn(R),A((n,r)=>{re(y,n),re(k,e.room.codeid),re(q,r)},[()=>N(p)(182),()=>N(p)(187)]),dn(n,_)},$$slots:{default:!0}}),dn(n,_)},$$slots:{default:!0}}),Of(d(f,2),{get isOpen(){return N(u)},get roomCode(){return N(o)},get roomName(){return e.room.name},get roomCreatedAt(){return e.room.created_at},get isHost(){return e.room.is_owner},onClose:()=>w(u,!1)}),dn(n,v),en(),_()}var Jf=O("
");function Yf(n,e){E(e,!0);let r=y(e,"ref",15,null),a=v(e,["$$slots","$$events","$$legacy","ref","class"]);var _=Jf();G(_,n=>({"data-slot":"skeleton",class:n,...a}),[()=>J_("animate-pulse rounded-md bg-accent",e.class)]),L(_,n=>r(n),()=>r()),dn(n,_),en()}var Xf=O('
');var Zf=O("",1),nx=O('
');function ex(n,e){E(e,!0);let r=y(e,"ref",15,null),a=y(e,"value",15),_=v(e,["$$slots","$$events","$$legacy","ref","value","class","children"]);var t=nx(),o=D(t);G(o,n=>({"data-slot":"native-select",class:n,..._}),[()=>J_("h-9 w-full min-w-0 appearance-none rounded-md border border-input bg-transparent px-3 py-2 pe-9 text-sm shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed dark:bg-input/30 dark:hover:bg-input/50","focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50","aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",e.class)]),V(o,()=>{var n=D(o),r=Zf(),a=_e(r);an(a,()=>e.children??Wn),dn(n,r)}),L(o,n=>r(n),()=>r()),zt(d(o,2),{class:"pointer-events-none absolute end-3.5 top-1/2 size-4 -translate-y-1/2 text-muted-foreground opacity-50 select-none","aria-hidden":"true","data-slot":"native-select-icon"}),cn(t),J(o,a),dn(n,t),en()}var rx=/* @__PURE__ */n({default:()=>bx,loader:()=>ax});function ax(){return{rooms:"/api/rooms"}}b(()=>Ra("main"));var _x=O('

'),tx=O('
'),ox=O('

'),dx=O(""),sx=O(""),ix=O('

'),ux=O(' ',1),lx=O("
"),hx=O('...'),cx=O('
'),yx=O('

'),px=O('
'),mx=O('
',1);function bx(n,e){E(e,!0);const r=()=>Dn(j_,"$session",_),[_,t]=S(),o=y(e,"data",3,null),s=b(()=>Ra("main")),i=b(()=>[{value:"all",label:N(s)(94)},{value:"created",label:N(s)(95)},{value:"joined",label:N(s)(96)}]),u=b(()=>[{value:"activity",label:N(s)(46)},{value:"created",label:N(s)(97)},{value:"name",label:N(s)(98)}]),h=Array.isArray(o()?.rooms?.rooms)?o().rooms.rooms:[],c=b(()=>o()?.rooms?.detail??o()?.rooms?.message??o()?.rooms?.error??(o()?.__error?N(s)(99):null)),p="string"==typeof N(c)&&N(c).trim()?N(c):null;let m=K({phase:p?"error":"ready",rooms:h,error:p,search:"",ownership:"all",sort:"activity",page:1});const g=b(()=>{let n=m.rooms;const e=m.search.trim().toLowerCase();return e&&(n=n.filter(n=>n.codeid.toLowerCase().includes(e)||!!n.name&&n.name.toLowerCase().includes(e))),"created"===m.ownership?n=n.filter(n=>n.is_owner):"joined"===m.ownership&&(n=n.filter(n=>!n.is_owner)),[...n].sort((n,e)=>{switch(m.sort){case"activity":return new Date(e.last_activity_at).getTime()-new Date(n.last_activity_at).getTime();case"created":return new Date(e.created_at).getTime()-new Date(n.created_at).getTime();case"name":return(n.name||n.codeid).toLowerCase().localeCompare((e.name||e.codeid).toLowerCase());default:return 0}})}),w=b(()=>Math.ceil(N(g).length/12)),f=b(()=>{const n=Math.max(N(w),1);return Math.min(Math.max(m.page,1),n)}),x=b(()=>{const n=12*(N(f)-1);return N(g).slice(n,n+12)}),$=b(()=>N(g).filter(n=>n.is_owner).length),M=b(()=>N(g).filter(n=>!n.is_owner).length);function z(n){m.search=n.currentTarget.value,m.page=1}function T(n){m.ownership=n.currentTarget.value,m.page=1}function q(n){m.sort=n.currentTarget.value}function j(n){const e=Math.max(N(w),1);n<1||n>e||(m.page=n,window.scrollTo({top:0,behavior:"smooth"}))}async function P(){try{m.phase="loading",m.error=null;const n=await Ps.getRooms();if(n.success&&n.rooms)return m.rooms=n.rooms,void(m.phase="ready");m.error=n.error||N(s)(99),m.phase="error"}catch(n){console.error("Error loading rooms:",n),m.error=N(s)(100),m.phase="error"}}var I=mx();tn("13t0tly",n=>{$n(n=>{k.title=n??""},[()=>N(s)(101)])}),l("visibilitychange",k,function(){!document.hidden&&r().user?.id&&P()}),l("roomDeleted",k,function(n){const e=n.detail?.roomCode;e&&(m.rooms=m.rooms.filter(n=>n.codeid!==e),setTimeout(()=>{P()},500))});var R=_e(I),L=D(R);{let n=b(()=>N(s)(90));Vo(L,{get title(){return N(n)}})}var F=d(L,2),O=D(F),U=n=>{var e=_x(),r=D(e),_=D(r);!function(n,e){E(e,!0);let r=v(e,["$$slots","$$events","$$legacy"]);const a=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326"}]];vt(n,C({name:"bell"},()=>r,{get iconNode(){return a},children:(n,r)=>{var a=ne(),_=_e(a);an(_,()=>e.children??Wn),dn(n,a)},$$slots:{default:!0}})),en()}(D(_),{size:24}),cn(_);var t=d(_,2),o=D(t,!0);cn(t);var i=d(t,2),u=D(i,!0);cn(i),ht(d(i,2),{type:"button",class:"mt-4",get onclick(){return M_},children:(n,e)=>{a();var r=Xn();A(n=>re(r,n),[()=>N(s)(103)]),dn(n,r)},$$slots:{default:!0}}),cn(r),cn(e),A((n,e)=>{re(o,n),re(u,e)},[()=>N(s)(102),()=>N(s)(619)]),dn(n,e)},H=n=>{var e=tx(),r=D(e);Yf(r,{class:"h-24 rounded-lg border bg-card"});var a=d(r,2);Gn(a,20,()=>Array(6),hn,(n,e)=>{!function(n){var e=Xf(),r=D(e),a=D(r);Yf(a,{class:"h-4 w-28 rounded"}),Yf(d(a,2),{class:"h-2 w-2 rounded-full"}),cn(r);var _=d(r,2),t=D(_),o=D(t);Yf(o,{class:"h-3 w-16 rounded"}),Yf(d(o,2),{class:"h-4 w-20 rounded"}),cn(t);var s=d(t,2),i=D(s);Yf(i,{class:"h-3 w-20 rounded"}),Yf(d(i,2),{class:"h-4 w-14 rounded"}),cn(s),cn(_);var u=d(_,2),l=D(u);Yf(l,{class:"h-7 flex-1 rounded"}),Yf(d(l,2),{class:"h-7 w-9 rounded"}),cn(u),cn(e),dn(n,e)}(n)}),cn(a),cn(e),dn(n,e)},V=n=>{var e=ox(),r=D(e),_=D(r);!function(n,e){E(e,!0);let r=v(e,["$$slots","$$events","$$legacy"]);const a=[["circle",{cx:"12",cy:"12",r:"10"}],["path",{d:"m15 9-6 6"}],["path",{d:"m9 9 6 6"}]];vt(n,C({name:"circle-x"},()=>r,{get iconNode(){return a},children:(n,r)=>{var a=ne(),_=_e(a);an(_,()=>e.children??Wn),dn(n,a)},$$slots:{default:!0}})),en()}(D(_),{size:24,class:"text-red-600 dark:text-red-400"}),cn(_);var t=d(_,2),o=D(t,!0);cn(t);var i=d(t,2),u=D(i,!0);cn(i),ht(d(i,2),{onclick:P,variant:"outline",class:"mt-4",children:(n,e)=>{a();var r=Xn();A(n=>re(r,n),[()=>N(s)(105)]),dn(n,r)},$$slots:{default:!0}}),cn(r),cn(e),A((n,e)=>{re(o,n),re(u,e)},[()=>N(s)(104),()=>m.error||N(s)(99)]),dn(n,e)},W=n=>{var e=px(),r=D(e),_=D(r),t=D(_),o=D(t),l=D(o);{let n=b(()=>N(s)(106));Jd(l,{type:"text",get placeholder(){return N(n)},get value(){return m.search},oninput:z,class:"w-full rounded-lg border border-input bg-background py-2.5 pr-10 pl-10 text-sm shadow-sm transition-all focus:border-primary focus:ring-2 focus:ring-primary/20 focus:outline-none"})}cn(o),cn(t);var h=d(t,2),c=D(h),y=D(c,!0);cn(c),ex(d(c,2),{id:"ownership-filter",get value(){return m.ownership},onchange:T,class:"cursor-pointer rounded-lg border border-input bg-background py-1.5 pr-7 pl-2.5 text-sm font-medium shadow-sm transition-all hover:bg-accent focus:border-primary focus:ring-2 focus:ring-primary/20 focus:outline-none",children:(n,e)=>{var r=ne(),a=_e(r);Gn(a,17,()=>N(i),n=>n.value,(n,e)=>{var r=dx(),a=D(r,!0);cn(r);var _={};A(()=>{re(a,N(e).label),_!==(_=N(e).value)&&(r.value=(r.__value=N(e).value)??"")}),dn(n,r)}),dn(n,r)},$$slots:{default:!0}}),cn(h);var p=d(h,2),k=D(p),S=D(k,!0);cn(k),ex(d(k,2),{id:"sort-by-select",get value(){return m.sort},onchange:q,class:"cursor-pointer rounded-lg border border-input bg-background py-1.5 pr-7 pl-2.5 text-sm font-medium shadow-sm transition-all hover:bg-accent focus:border-primary focus:ring-2 focus:ring-primary/20 focus:outline-none",children:(n,e)=>{var r=ne(),a=_e(r);Gn(a,17,()=>N(u),n=>n.value,(n,e)=>{var r=sx(),a=D(r,!0);cn(r);var _={};A(()=>{re(a,N(e).label),_!==(_=N(e).value)&&(r.value=(r.__value=N(e).value)??"")}),dn(n,r)}),dn(n,r)},$$slots:{default:!0}}),cn(p),cn(_),cn(r);var P=d(r,2),I=n=>{var e=ix(),r=D(e),_=D(r),t=D(_),o=n=>{!function(n,e){E(e,!0);let r=v(e,["$$slots","$$events","$$legacy"]);const a=[["circle",{cx:"11",cy:"11",r:"8"}],["line",{x1:"21",x2:"16.65",y1:"21",y2:"16.65"}],["line",{x1:"11",x2:"11",y1:"8",y2:"14"}],["line",{x1:"8",x2:"14",y1:"11",y2:"11"}]];vt(n,C({name:"zoom-in"},()=>r,{get iconNode(){return a},children:(n,r)=>{var a=ne(),_=_e(a);an(_,()=>e.children??Wn),dn(n,a)},$$slots:{default:!0}})),en()}(n,{size:32,"stroke-width":1.5,class:"text-muted-foreground"})},i=n=>{!function(n,e){E(e,!0);let r=v(e,["$$slots","$$events","$$legacy"]);const a=[["circle",{cx:"12",cy:"12",r:"10"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16"}]];vt(n,C({name:"circle-alert"},()=>r,{get iconNode(){return a},children:(n,r)=>{var a=ne(),_=_e(a);an(_,()=>e.children??Wn),dn(n,a)},$$slots:{default:!0}})),en()}(n,{size:32,"stroke-width":1.5,class:"text-muted-foreground"})};En(t,n=>{m.search||"all"!==m.ownership?n(o):n(i,-1)}),cn(_);var u=d(_,2),l=D(u),h=n=>{{let e=b(()=>N(s).c(109)),r=b(()=>[m.search]);ct(n,{get x(){return N(e)},get a(){return N(r)}})}},c=n=>{var e=Xn();A(n=>re(e,n),[()=>N(s)(110)]),dn(n,e)},y=n=>{var e=Xn();A(n=>re(e,n),[()=>N(s)(111)]),dn(n,e)};En(l,n=>{m.search?n(h):"all"!==m.ownership?n(c,1):n(y,-1)}),cn(u);var p=d(u,2),g=D(p),w=n=>{var e=Xn();A(n=>re(e,n),[()=>N(s)(620)]),dn(n,e)},k=n=>{var e=Xn();A(n=>re(e,n),[()=>N(s)(621)]),dn(n,e)},f=n=>{var e=Xn();A(n=>re(e,n),[()=>N(s)(622)]),dn(n,e)};En(g,n=>{m.search?n(w):"all"!==m.ownership?n(k,1):n(f,-1)}),cn(p);var x=d(p,2),$=n=>{ht(n,{href:"/",class:"mt-4",children:(n,e)=>{a();var r=Xn();A(n=>re(r,n),[()=>N(s)(112)]),dn(n,r)},$$slots:{default:!0}})};En(x,n=>{m.search||"all"!==m.ownership||n($)}),cn(r),cn(e),dn(n,e)},R=n=>{var e=yx(),r=D(e),_=D(r),t=D(_,!0);cn(_);var o=d(_,2),i=D(o,!0);cn(o);var u=d(o,2),l=n=>{var e=ux(),r=_e(e),a=D(r);{let n=b(()=>N(s).c(115)),e=b(()=>[N($)]);ct(a,{get x(){return N(n)},get a(){return N(e)}})}cn(r);var _=d(r,2),t=D(_);{let n=b(()=>N(s).c(116)),e=b(()=>[N(M)]);ct(t,{get x(){return N(n)},get a(){return N(e)}})}cn(_),dn(n,e)};En(u,n=>{"all"===m.ownership&&n(l)}),cn(r);var h=d(r,2);Gn(h,21,()=>N(x),n=>n.id,(n,e)=>{var r=lx();Qf(D(r),{get room(){return N(e)},get showCreatedDate(){return N(e).is_owner}}),cn(r),dn(n,r)}),cn(h);var c=d(h,2),y=n=>{var e=cx(),r=D(e);{let n=b(()=>1===N(f));ht(r,{variant:"outline",size:"sm",onclick:()=>j(N(f)-1),get disabled(){return N(n)},class:"h-9 w-9 p-0",children:(n,e)=>{!function(n,e){E(e,!0);let r=v(e,["$$slots","$$events","$$legacy"]);const a=[["path",{d:"m15 18-6-6 6-6"}]];vt(n,C({name:"chevron-left"},()=>r,{get iconNode(){return a},children:(n,r)=>{var a=ne(),_=_e(a);an(_,()=>e.children??Wn),dn(n,a)},$$slots:{default:!0}})),en()}(n,{size:16})},$$slots:{default:!0}})}var _=d(r,2);Gn(_,17,()=>Array(N(w)),hn,(n,e,r)=>{const _=b(()=>r+1);var t=ne(),o=_e(t),d=n=>{{let e=b(()=>N(f)===N(_)?"default":"outline");ht(n,{get variant(){return N(e)},size:"sm",onclick:()=>j(N(_)),class:"h-9 min-w-[36px] px-3",children:(n,e)=>{a();var r=Xn();A(()=>re(r,N(_))),dn(n,r)},$$slots:{default:!0}})}},s=n=>{var e=hx();dn(n,e)};En(o,n=>{1===N(_)||N(_)===N(w)||N(_)>=N(f)-1&&N(_)<=N(f)+1?n(d):N(_)!==N(f)-2&&N(_)!==N(f)+2||n(s,1)}),dn(n,t)});var t=d(_,2);{let n=b(()=>N(f)===N(w));ht(t,{variant:"outline",size:"sm",onclick:()=>j(N(f)+1),get disabled(){return N(n)},class:"h-9 w-9 p-0",children:(n,e)=>{At(n,{size:16})},$$slots:{default:!0}})}cn(e),dn(n,e)};En(c,n=>{N(w)>1&&n(y)}),cn(e),A(n=>{re(t,n),re(i,N(g).length)},[()=>"created"===m.ownership?N(s)(113):"joined"===m.ownership?N(s)(114):N(s)(90)]),dn(n,e)};En(P,n=>{0===N(g).length?n(I):n(R,-1)}),cn(e),A((n,e)=>{re(y,n),re(S,e)},[()=>N(s)(107),()=>N(s)(108)]),dn(n,e)};En(O,n=>{r().user?.id?"loading"===m.phase?n(H,1):"error"===m.phase?n(V,2):n(W,-1):n(U)}),cn(F),cn(R),Th(d(R,2),{}),dn(n,I),en(),t()}var gx=600/920,wx=1e-6;function vx(n,e,r,a,_){return{id:n,title:e,passed:r,summary:a,details:_}}function kx(n,e){let r=n,a=r/gx;return a>e&&(a=e,r=a*gx),{x:(n-r)/2,y:(e-a)/2,w:r,h:a}}function fx(n,e,r){const a=Al(n,e,r);return{x:r.w>0?(a.x-r.x)/r.w:0,y:r.h>0?(a.y-r.y)/r.h:0}}function xx(n){const e=new Set(n.classes??[]);return{tagName:(n.tag_name??"div").toUpperCase(),id:n.id??"",getAttribute:e=>"data-room-shared-stage-surface"===e&&n.data_surface?"true":null,closest:e=>"#translation-page"===e&&"translation-page"===(n.id??"")?{}:null,classList:{contains:n=>e.has(n)}}}function $x(){const n=["desktop_wide","tablet_portrait","phone_portrait"],e={x:500,y:766.6667},r=[];let a=null,_=0;for(const t of n){const n=Rv(t),o=kx(n.width,n.height),d=Pi(o);if(!d)return vx("viewport-matrix","Desktop, tablet, and phone room shells keep the same normalized surface mapping",!1,`Could not derive a camera for ${n.label}.`,r);const s=fx(e,d,o);a?_=Math.max(_,Math.abs(s.x-a.x),Math.abs(s.y-a.y)):a=s,r.push(`${n.label}: surface ${o.w.toFixed(1)}×${o.h.toFixed(1)} · probe ${s.x.toFixed(4)}, ${s.y.toFixed(4)}`)}return vx("viewport-matrix","Desktop, tablet, and phone room shells keep the same normalized surface mapping",_<=wx,`Worst normalized delta across three room shells: ${_.toExponential(2)}.`,r)}function Sx(){const n={x:120,y:40,w:600,h:920},e={x:96,y:24,w:480,h:736},r={x:500,y:766.6667},a=Pi(n),_=Pi(e);if(!a||!_)return vx("cursor-reprojection","World-space cursors reproject cleanly after local resize or zoom",!1,"Could not derive a canonical camera for the resize reprojection scenario.",[]);const t=Al(r,a,n),o=Al(r,_,e),d=fx(r,a,n),s=fx(r,_,e),i=e.w>0?(t.x-e.x)/e.w:0,u=e.h>0?(t.y-e.y)/e.h:0,l=Math.max(Math.abs(s.x-d.x),Math.abs(s.y-d.y)),h=Math.max(Math.abs(i-d.x),Math.abs(u-d.y)),c=l<=wx&&h>.01;return vx("cursor-reprojection","World-space cursors reproject cleanly after local resize or zoom",c,c?"Reprojecting from world coordinates keeps the cursor aligned after local viewport changes, while stale screen pixels drift immediately.":"World-space reprojection no longer behaves differently from stale screen-space cursor storage.",[`Initial screen point: ${t.x.toFixed(1)}, ${t.y.toFixed(1)}`,`Resized screen point: ${o.x.toFixed(1)}, ${o.y.toFixed(1)}`,`Reprojected normalized delta: ${l.toExponential(2)}`,`Stale normalized delta: ${h.toExponential(2)}`])}function Cx(){const n=[xx({tag_name:"mushaf-page",data_surface:!0}),xx({id:"translation-page"}),xx({classes:["reflection-room-iframe-container"]}),xx({tag_name:"iframe"}),xx({})],e=n.map(n=>qi(n)),r=["mushaf","translation","reflection","iframe","root"].every((n,r)=>e[r]===n);return vx("surface-labelling","Room canary diagnostics identify the authoritative surface kind",r,r?"Mushaf, translation, reflection, iframe, and root room surfaces all keep stable labels.":"At least one surface kind did not resolve to the expected label.",n.map(n=>`${qi(n)} → ${ji(n)}`))}function Mx(){const n=cu({left:40,top:80},{left:132,top:196,width:600,height:920}),e=yu(n),r=yu({x:-12,y:-8,w:600,h:920}),a=92===n.x&&116===n.y&&600===n.w&&920===n.h&&"left: 92px; top: 116px; width: 600px; height: 920px;"===e&&"left: 0px; top: 0px; width: 600px; height: 920px;"===r;return vx("overlay-clipping","Overlay clipping stays pinned to the authoritative surface rect",a,a?"Overlay frames remain root-relative and clamp invalid offsets away from the full-room shell.":"Overlay frame derivation no longer matches the expected room-relative rect.",[`Rect: x=${n.x}, y=${n.y}, w=${n.w}, h=${n.h}`,`Style: ${e}`,`Clamped style: ${r}`])}function zx(){const n=du({connected:!1,role:"student",has_requested_sync:!1,strict_transport_enabled:!1}),e=du({connected:!0,role:"teacher",has_requested_sync:!1,strict_transport_enabled:!1}),r=du({connected:!0,role:"student",has_requested_sync:!0,strict_transport_enabled:!0}),a=du({connected:!0,role:"student",has_requested_sync:!1,strict_transport_enabled:!1}),_="not-connected"===n&&"teacher"===e&&"shared-only-requested"===r&&"shared-plus-legacy-pending"===a;return vx("request-sync-mode","Student join flow exposes the expected shared-only vs shared-plus-legacy modes",_,_?"Strict students advertise shared-only sync, while non-strict students still expose shared plus legacy snapshot behavior.":"The room canary request-sync mode no longer matches the strict vs hybrid rollout contract.",[`Disconnected student: ${n}`,`Teacher: ${e}`,`Strict student requested: ${r}`,`Hybrid student pending: ${a}`])}function Ax(n={}){const e={x:120,y:40,w:600,h:920},r=Pi(e),a=xx({tag_name:"mushaf-page",data_surface:!0});if(!r)throw new Error("Could not derive the canonical surface camera for a strict snapshot.");const _=su({viewport:{width:1280,height:800,device_pixel_ratio:1},shared_stage_enabled:!0,strict_transport_enabled:n.strict??!0,canary_enabled:!0,connected:!0,role:"student",mode:"reading",translations_visible:!1,has_requested_sync:!0,surface:a,surface_rect:e,surface_camera:r,cursor:{...nu,enabled:!0,strict:n.strict??!0,transport:!1===n.strict?"hybrid":"strict-sync-lab",surface_ready:!0,remote_authority:"sync-lab",local_visible:!0,local_world_point:{x:500,y:600},updated_at:1},whiteboard_state:{open:!1,live:!1,dismissed:!1},annotation_state:{open:!1,live:!1,dismissed:!1},whiteboard_overlay:{ready:!0,kind:"mushaf",rect:e,style:"left: 120px; top: 40px; width: 600px; height: 920px;",updated_at:1},annotation_overlay:{ready:!0,kind:"mushaf",rect:e,style:"left: 120px; top: 40px; width: 600px; height: 920px;",updated_at:1},replay_preload_key:"room|1",replay_loading_key:null,replay_loaded_key:"room|1",replay_ready:!0,replay_persisted_signature:"sig"});return(n.failed??0)<=0?_:{..._,failed:n.failed??1,passed:Math.max(0,_.total-(n.failed??1)),checks:_.checks.map((n,e)=>0===e?{...n,passed:!1,detail:"Injected failure for deterministic regression coverage."}:n)}}function Tx(n,e){return{snapshot:n,received_at:e}}function qx(){const n=1e4,e=Ax(),r=Ax({strict:!1}),a=Ax({failed:1,strict:!1}),_=Rc({shared_stage_enabled:!0,strict_requested:!0,local_snapshot:e,peer_snapshots:{student_a:Tx(r,n)},participant_ids:["teacher_a","student_a"],local_identity:"teacher_a",now:n}),t=Rc({shared_stage_enabled:!0,strict_requested:!0,local_snapshot:e,peer_snapshots:{},participant_ids:["teacher_a","student_a"],local_identity:"teacher_a",now:n}),o=Rc({shared_stage_enabled:!0,strict_requested:!0,local_snapshot:e,peer_snapshots:{student_a:Tx(a,n)},participant_ids:["teacher_a","student_a"],local_identity:"teacher_a",now:n}),d="ready"==_.status&&_.ready&&"pending-peers"==t.status&&!t.ready&&1==t.missing_peers.length&&"blocked-peers"==o.status&&!o.ready&&1==o.failing_peers.length;return vx("cutover-readiness","Peer canary readiness gates strict room cutover deterministically",d,d?"Healthy peer snapshots unlock strict cutover, while missing or failing peers keep the room in a safe non-strict state.":"Peer canary readiness no longer gates strict room cutover as expected.",[`Ready: ${_.status} · peers ${_.peers_ready}/${_.peers_total}`,`Pending: ${t.status} · missing ${t.missing_peers.join(", ")||"none"}`,`Blocked: ${o.status} · failing ${o.failing_peers.join(", ")||"none"}`])}function jx(){const n=1e4,e=Ax({strict:!1}),r=Ic({peer_snapshots:{student_a:Tx(e,n),stale_peer:Tx(e,1999),departed_peer:Tx(e,n)},participant_ids:["teacher_a","student_a","stale_peer"],local_identity:"teacher_a",now:n}),a=Object.keys(r).sort(),_=1===a.length&&"student_a"===a[0];return vx("peer-snapshot-pruning","Peer snapshot pruning drops departed and stale peers deterministically",_,_?"Only connected peers with current snapshots remain visible to the room canary guard.":"Peer snapshot pruning kept stale or departed peers longer than expected.",[`Remaining peers: ${a.join(", ")||"none"}`,`Snapshot count: ${a.length}`])}function Nx(){const n=ou({preload_key:null,ready:!1,loading_key:null,loaded_key:null}),e=ou({preload_key:"room|1",ready:!1,loading_key:"room|1",loaded_key:null}),r=ou({preload_key:"room|1",ready:!0,loading_key:null,loaded_key:"room|1"}),a=ou({preload_key:"room|1",ready:!1,loading_key:null,loaded_key:"room|1"}),_="idle"===n&&"loading"===e&&"ready"===r&&"blocked"===a;return vx("replay-status","Replay preload status stays explicit across idle, loading, ready, and blocked outcomes",_,_?"The canary replay status remains explicit enough to distinguish safe preload from blocked preload.":"Replay preload status no longer maps to the expected lifecycle states.",[`Idle: ${n}`,`Loading: ${e}`,`Ready: ${r}`,`Blocked: ${a}`])}function Px(){const n={x:120,y:40,w:600,h:920},e=Pi(n),r=xx({tag_name:"mushaf-page",data_surface:!0});if(!e)return vx("snapshot-checks","The room canary snapshot stays internally self-consistent",!1,"Could not derive the canonical surface camera for the snapshot.",[]);const a=su({viewport:{width:1280,height:800,device_pixel_ratio:1},shared_stage_enabled:!0,strict_transport_enabled:!0,canary_enabled:!0,connected:!0,role:"student",mode:"reading",translations_visible:!1,has_requested_sync:!0,surface:r,surface_rect:n,surface_camera:e,cursor:{...nu,surface_ready:!0,remote_authority:"sync-lab",local_visible:!0,local_world_point:{x:500,y:600},updated_at:1},whiteboard_state:{open:!1,live:!1,dismissed:!1},annotation_state:{open:!1,live:!1,dismissed:!1},whiteboard_overlay:{ready:!0,kind:"mushaf",rect:n,style:"left: 120px; top: 40px; width: 600px; height: 920px;",updated_at:1},annotation_overlay:{ready:!0,kind:"mushaf",rect:n,style:"left: 120px; top: 40px; width: 600px; height: 920px;",updated_at:1},replay_preload_key:"room|1",replay_loading_key:null,replay_loaded_key:"room|1",replay_ready:!0,replay_persisted_signature:"sig"}),_=0===a.failed&&a.passed===a.total&&"shared-only-requested"===a.room.request_sync_mode&&"ready"===a.replay.status&&"mushaf"===a.surface.descriptor?.kind;return vx("snapshot-checks","The room canary snapshot stays internally self-consistent",_,_?"A strict-mode student snapshot with a resolved Mushaf surface produces an all-pass canary check set.":"The room canary snapshot no longer produces the expected all-pass state under nominal strict-mode inputs.",[`Checks: ${a.passed} / ${a.total}`,`Request sync mode: ${a.room.request_sync_mode}`,`Replay status: ${a.replay.status}`,`Surface kind: ${a.surface.descriptor?.kind??"none"}`])}var Ix=/* @__PURE__ */n({default:()=>Dx}),Rx=O('
  • '),Ex=O('

    '),Lx=O('

    ');function Dx(n,e){E(e,!0);const r=b(()=>Ra("main")),_=function(){const n=[$x(),Sx(),Cx(),Mx(),zx(),Nx(),qx(),jx(),Px()],e=n.filter(n=>n.passed).length;return{generated_at:/* @__PURE__ */(new Date).toISOString(),total:n.length,passed:e,failed:n.length-e,scenarios:n}}(),t=new Date(_.generated_at).toLocaleString(),o=0===_.failed?"flex flex-wrap items-center justify-between gap-3 rounded-2xl border border-emerald-500/30 bg-emerald-500/10 p-4 shadow-sm":"flex flex-wrap items-center justify-between gap-3 rounded-2xl border border-destructive/30 bg-destructive/10 p-4 shadow-sm";var s=Lx();tn("tl0wwv",n=>{$n(n=>{k.title=n??""},[()=>N(r)(884)])});var i=D(s),u=D(i),l=D(u),h=D(l),c=D(h,!0);cn(h);var y=d(h,2),p=D(y),m=D(p,!0);cn(p);var g=d(p,2),w=D(g,!0);cn(g),cn(y),cn(l);var v=d(l,2),f=D(v);ht(f,{variant:"outline",href:"/sync-lab-regression",children:(n,e)=>{a();var _=Xn();A(n=>re(_,n),[()=>N(r)(888)]),dn(n,_)},$$slots:{default:!0}});var x=d(f,2);ht(x,{variant:"outline",href:"/sync-lab",children:(n,e)=>{a();var _=Xn();A(n=>re(_,n),[()=>N(r)(781)]),dn(n,_)},$$slots:{default:!0}}),ht(d(x,2),{variant:"outline",href:"/",children:(n,e)=>{a();var _=Xn();A(n=>re(_,n),[()=>N(r)(50)]),dn(n,_)},$$slots:{default:!0}}),cn(v),cn(u);var S=d(u,2),C=D(S),M=D(C),z=D(M,!0);cn(M);var T=d(M,2),q=D(T);{let n=b(()=>N(r).c(783)),e=b(()=>[t]);ct(q,{get x(){return N(n)},get a(){return N(e)}})}cn(T),cn(C);var j=d(C,2),P=D(j),I=D(P);{let n=b(()=>N(r).c(784)),e=b(()=>[_.passed,_.total]);ct(I,{get x(){return N(n)},get a(){return N(e)}})}cn(P);var R=d(P,2),L=D(R);{let n=b(()=>N(r).c(785)),e=b(()=>[_.failed]);ct(L,{get x(){return N(n)},get a(){return N(e)}})}cn(R),cn(j),cn(S);var F=d(S,2);Gn(F,21,()=>_.scenarios,n=>n.id,(n,e)=>{var r=Ex(),a=D(r),_=D(a),t=D(_),o=D(t,!0);cn(t);var s=d(t,2),i=D(s,!0);cn(s),cn(_);var u=d(_,2),l=D(u,!0);cn(u),cn(a);var h=d(a,2),c=D(h,!0);cn(h);var y=d(h,2);Gn(y,23,()=>N(e).details,(n,r)=>`${N(e).id}-${r}`,(n,e)=>{var r=Rx(),a=D(r,!0);cn(r),A(()=>re(a,N(e))),dn(n,r)}),cn(y),cn(r),A((n,a)=>{$(r,"data-testid",`room-shared-stage-regression-${N(e).id}`),$(r,"data-regression-status",N(e).passed?"pass":"fail"),yn(r,1,n),re(o,N(e).title),re(i,N(e).id),yn(u,1,a),re(l,N(e).passed?"PASS":"FAIL"),re(c,N(e).summary)},[()=>Bn(N(e).passed?"rounded-2xl border border-emerald-500/30 bg-card/70 p-4 shadow-sm":"rounded-2xl border border-destructive/30 bg-card/70 p-4 shadow-sm"),()=>Bn(N(e).passed?"inline-flex items-center rounded-full border border-emerald-500/40 bg-emerald-500/15 px-2.5 py-1 text-xs font-semibold text-emerald-700 dark:text-emerald-300":"inline-flex items-center rounded-full border border-destructive/40 bg-destructive/15 px-2.5 py-1 text-xs font-semibold text-destructive")]),dn(n,r)}),cn(F);var O=d(F,2),U=D(O),H=D(U,!0);cn(U);var V=d(U,2),W=D(V),B=D(W),K=D(B,!0);cn(B);var G=d(B,2),Q=D(G,!0);cn(G),cn(W);var J=d(W,2),Y=D(J),X=D(Y,!0);cn(Y);var Z=d(Y,2),nn=D(Z,!0);cn(Z),cn(J);var rn=d(J,2),an=D(rn),_n=D(an,!0);cn(an);var on=d(an,2),sn=D(on,!0);cn(on),cn(rn);var un=d(rn,2),ln=D(un),hn=D(ln,!0);cn(ln);var pn=d(ln,2),mn=D(pn,!0);cn(pn),cn(un),cn(V),cn(O),cn(i),cn(s),A((n,e,r,a,t,d,s,i,u,l,h,y,p)=>{re(c,n),re(m,e),re(w,r),$(S,"data-regression-failed",_.failed),yn(S,1,Bn(o)),re(z,a),re(H,t),re(K,d),re(Q,s),re(X,i),re(nn,u),re(_n,l),re(sn,h),re(hn,y),re(mn,p)},[()=>N(r)(885),()=>N(r)(886),()=>N(r)(887),()=>N(r)(782),()=>N(r)(786),()=>N(r)(889),()=>N(r)(890),()=>N(r)(891),()=>N(r)(892),()=>N(r)(893),()=>N(r)(894),()=>N(r)(895),()=>N(r)(896)]),dn(n,s),en()}var Fx=O(""),Ox=O("
    "),Ux=O("
    "),Hx=O(''),Vx=O(""),Wx=O('
    '),Bx=O('
    '),Kx=O('

    ');function Gx(n,e){E(e,!0);const r={x:500,y:500};let _=W(!0),t=W(!0),s=W("desktop_wide"),i=W(K(Sl(fl))),u=W(null);const l=b(()=>Ra("main"));let h=K([{id:"student_phone",name:N(l)(672),preset_id:"phone_portrait",follow_teacher_camera:!0,local_camera:Sl(fl)},{id:"student_tablet",name:N(l)(673),preset_id:"tablet_landscape",follow_teacher_camera:!0,local_camera:Sl(fl)},{id:"student_square",name:N(l)(674),preset_id:"square",follow_teacher_camera:!0,local_camera:Sl(fl)}]);const y=b(()=>Rv(N(s))),p=b(()=>`${N(y).width} / ${N(y).height}`),g=window.devicePixelRatio.toFixed(2);function v(n){return Number.isFinite(n)?n.toFixed(1):"0.0"}function k(n){return h.find(e=>e.id===n)??null}function f(n,e){const r=e.currentTarget;!function(n,e){const r=k(n);r&&(r.follow_teacher_camera=e,r.local_camera=Sl(N(i)))}(n,r?.checked??!1)}function x(n,e){const r=e.currentTarget;r&&function(n,e){const r=k(n);r&&(r.preset_id=e)}(n,r.value)}function $(n,e,r){const a=k(n);a&&(a.local_camera=jl(a.local_camera,kl,e,r))}function S(n,e){const r=k(n);r&&(r.local_camera=Nl(r.local_camera,kl,e))}var C=Kx(),M=D(C),z=D(M),T=D(z),q=D(T),j=D(q,!0);cn(q);var P=d(q,2),I=D(P),L=D(I,!0);cn(I);var F=d(I,2),O=D(F,!0);cn(F),cn(P),cn(T);var U=d(T,2),H=D(U);ht(H,{variant:"outline",href:"/",children:(n,e)=>{a();var r=Xn();A(n=>re(r,n),[()=>N(l)(50)]),dn(n,r)},$$slots:{default:!0}});var V=d(H,2);ht(V,{variant:"outline",href:"/sync-lab-regression",children:(n,e)=>{a();var r=Xn();A(n=>re(r,n),[()=>N(l)(883)]),dn(n,r)},$$slots:{default:!0}}),ht(d(V,2),{variant:"outline",onclick:function(){w(s,"desktop_wide"),w(i,Sl(fl),!0),w(u,null),w(_,!0),w(t,!0);const n=["phone_portrait","tablet_landscape","square"];for(const[e,r]of h.entries())r.follow_teacher_camera=!0,r.local_camera=Sl(fl),r.preset_id=n[e]??"desktop_wide"},children:(n,e)=>{a();var r=Xn();A(n=>re(r,n),[()=>N(l)(678)]),dn(n,r)},$$slots:{default:!0}}),cn(U),cn(z);var B=d(z,2),G=D(B),Q=D(G),Y=D(Q),X=D(Y,!0);cn(Y);var Z=d(Y,2),rn=D(Z),an=D(rn,!0);cn(rn);var _n=d(rn,2),tn=D(_n,!0);cn(_n);var on=d(_n,2),sn=D(on,!0);cn(on);var un=d(on,2),ln=D(un,!0);cn(un),cn(Z),cn(Q);var hn=d(Q,2),yn=D(hn),pn=D(yn,!0);cn(yn);var mn=d(yn,2),bn=D(mn),gn=D(bn),wn=D(gn,!0);cn(gn);var vn=d(gn,2);Gn(vn,21,()=>Iv,n=>n.id,(n,e)=>{var r=Fx(),a=D(r,!0);cn(r);var _={};A(()=>{re(a,N(e).label),_!==(_=N(e).id)&&(r.value=(r.__value=N(e).id)??"")}),dn(n,r)}),cn(vn),cn(bn);var kn=d(bn,2),fn=D(kn),xn=D(fn,!0);cn(fn);var $n=d(fn,2);m($n),cn(kn);var Sn=d(kn,2),Cn=D(Sn),Mn=D(Cn,!0);cn(Cn);var zn=d(Cn,2);m(zn),cn(Sn);var An=d(Sn,2),Tn=D(An),qn=D(Tn);{let n=b(()=>N(l).c(688)),e=b(()=>[g]);ct(qn,{get x(){return N(n)},get a(){return N(e)}})}cn(Tn);var jn=d(Tn,2),Nn=n=>{var e=Ox(),r=D(e);{let n=b(()=>N(l).c(689)),e=b(()=>[v(N(u).x),v(N(u).y)]);ct(r,{get x(){return N(n)},get a(){return N(e)}})}cn(e),dn(n,e)},Pn=n=>{var e=Ux(),r=D(e,!0);cn(e),A(n=>re(r,n),[()=>N(l)(690)]),dn(n,e)};En(jn,n=>{N(u)?n(Nn):n(Pn,-1)}),cn(An),cn(mn),cn(hn);var In=d(hn,2),Rn=D(In),Dn=D(Rn,!0);cn(Rn);var Fn=d(Rn,2),On=D(Fn),Un=D(On,!0);cn(On);var Hn=d(On,2),Vn=D(Hn,!0);cn(Hn),cn(Fn),cn(In),cn(G);var Wn=d(G,2),Bn=D(Wn),Kn=D(Bn);{let n=b(()=>N(l)(83)),e=b(()=>N(t)?r:null),a=b(()=>N(l)(694));mk(Kn,{get label(){return N(n)},get preset_label(){return N(y).label},get preset_aspect_ratio(){return N(p)},get camera(){return N(i)},get world_size(){return kl},get cursor_world(){return N(u)},get probe_world(){return N(e)},get helper_text(){return N(a)},interactive:!0,get show_debug(){return N(_)},on_cursor_change:function(n){w(u,n,!0)}})}cn(Bn);var Qn=d(Bn,2);Gn(Qn,21,()=>h,n=>n.id,(n,e)=>{var a=Bx(),o=D(a),s=D(o),h=D(s),y=D(h),p=D(y,!0);cn(y);var g=d(y,2),w=D(g,!0);cn(g),cn(h);var v=d(h,2);{const n=n=>{var r=Hx();m(r),A(()=>Ln(r,N(e).follow_teacher_camera)),c("change",r,n=>f(N(e).id,n)),dn(n,r)};var C=D(v);{let e=b(()=>[n]),r=b(()=>N(l).c(696));ct(C,{get t(){return N(e)},get x(){return N(r)}})}cn(v)}cn(s);var M=d(s,2),z=D(M),T=D(z,!0);cn(z);var q,j=d(z,2);Gn(j,21,()=>Iv,n=>n.id,(n,e)=>{var r=Vx(),a=D(r,!0);cn(r);var _={};A(()=>{re(a,N(e).label),_!==(_=N(e).id)&&(r.value=(r.__value=N(e).id)??"")}),dn(n,r)}),cn(j),nn(j),cn(M),cn(o);var P=d(o,2),I=n=>{var r=Wx(),a=D(r),_=D(a,!0);cn(a);var t=d(a,2),o=D(t),s=d(o,2),u=D(s,!0);cn(s);var h=d(s,2),y=d(h,2),p=d(y,2),m=d(p,2),b=d(m,2);cn(t),cn(r),A((n,e)=>{re(_,n),re(u,e)},[()=>N(l)(698),()=>N(l)(438)]),c("click",o,()=>$(N(e).id,0,-40)),c("click",s,()=>function(n){const e=k(n);e&&(e.local_camera=Sl(N(i)))}(N(e).id)),c("click",h,()=>S(N(e).id,.9)),c("click",y,()=>$(N(e).id,-40,0)),c("click",p,()=>$(N(e).id,40,0)),c("click",m,()=>S(N(e).id,1.1)),c("click",b,()=>$(N(e).id,0,40)),dn(n,r)};En(P,n=>{N(e).follow_teacher_camera||n(I)});var E=d(P,2);{let n=b(()=>Rv(N(e).preset_id).label),a=b(()=>function(n){const e=Rv(n);return`${e.width} / ${e.height}`}(N(e).preset_id)),o=b(()=>function(n){return n.follow_teacher_camera?N(i):n.local_camera}(N(e))),d=b(()=>N(t)?r:null),s=b(()=>N(e).follow_teacher_camera?N(l)(699):N(l)(700));mk(E,{get label(){return N(e).name},get preset_label(){return N(n)},get preset_aspect_ratio(){return N(a)},get camera(){return N(o)},get world_size(){return kl},get cursor_world(){return N(u)},get probe_world(){return N(d)},get helper_text(){return N(s)},interactive:!1,get show_debug(){return N(_)}})}cn(a),A((n,r)=>{re(p,N(e).name),re(w,n),re(T,r),q!==(q=N(e).preset_id)&&(j.value=(j.__value=N(e).preset_id)??"",R(j,N(e).preset_id))},[()=>N(l)(695),()=>N(l)(697)]),c("change",j,n=>x(N(e).id,n)),dn(n,a)}),cn(Qn),cn(Wn),cn(B),cn(M),cn(C),A((n,e,r,a,_,t,o,d,s,i,u,l,h,c,y)=>{re(j,n),re(L,e),re(O,r),re(X,a),re(an,_),re(tn,t),re(sn,o),re(ln,d),re(pn,s),re(wn,i),re(xn,u),re(Mn,l),re(Dn,h),re(Un,c),re(Vn,y)},[()=>N(l)(675),()=>N(l)(676),()=>N(l)(677),()=>N(l)(679),()=>N(l)(680),()=>N(l)(681),()=>N(l)(682),()=>N(l)(683),()=>N(l)(684),()=>N(l)(685),()=>N(l)(686),()=>N(l)(687),()=>N(l)(691),()=>N(l)(692),()=>N(l)(693)]),J(vn,()=>N(s),n=>w(s,n)),o($n,()=>N(_),n=>w(_,n)),o(zn,()=>N(t),n=>w(t,n)),dn(n,C),en()}H(["change","click"]);var Qx=/* @__PURE__ */n({default:()=>r$,loader:()=>Jx});function Jx({params:n}){const e=n?.id?String(n.id):"";if(!e)return{};const r=encodeURIComponent(e),a=sessionStorage.getItem(`room_owner_secret_${e}`)||localStorage.getItem(`room-${e}-owner-secret`)||"";return a&&sessionStorage.setItem(`room_owner_secret_${e}`,a),{room_info:`/api/rooms/info/${r}${a?`?owner_secret=${encodeURIComponent(a)}`:""}`}}b(()=>Ra("main"));var Yx=O('
    '),Xx=O(''),Zx=O('

    '),n$=O('

    '),e$=O('

    ');function r$(n,e){E(e,!0);const r=()=>Dn(j_,"$session",_),[_,t]=S(),o="quranspace_sync_lab_name";let s=y(e,"id",3,""),i=y(e,"data",3,null);const u=$g();let h=W(""),p=W(K(Ys(s()?String(s()):""))),v=W(!1),f=W(""),x=W(null),C=W(null),M=W(K([]));const z=b(()=>r().user?.id?r().user:null),T=b(()=>!!r().user?.id),j=b(()=>s()?String(s()):""),P=b(()=>i()?.room_info&&"object"==typeof i().room_info?i().room_info:null),I=b(()=>"string"==typeof N(P)?.name&&N(P).name.trim()?N(P).name.trim():""),R=b(()=>Bs(N(j))),F=b(()=>Ra("main")),O=b(()=>404===i()?.__error?.status?N(F)(654):410===i()?.__error?.status?N(F)(655):""),U=b(()=>!0===N(P)?.has_password),H=b(()=>N(U)||!!N(p).trim()||N(f).toLowerCase().includes("password")),V=b(()=>N(j)?N(I)?`${N(I)} · Sync Lab · Quran Space`:N(F)(657,[N(j)]):N(F)(656));function B(){const n="string"==typeof N(z)?.name?N(z).name.trim():"";return n||(localStorage.getItem(o)?.trim()||"")}function G(){w(h,B(),!0)}function Q(n,e){!N(C)?.handle_message?.(n,e)&&rm(n)&&function(n,e){w(M,[...N(M),{message:n,participant:e}],!0)}(n,e)}async function J(){await u.disconnect(),w(x,null),w(M,[],!0)}function Y(n){n.preventDefault(),async function(){if(N(v)||u.isConnecting||!N(j))return;const n=Tv(N(h),B());w(h,n,!0),w(v,!0),w(f,"");const e=await u.connectToRoom(N(j),n,Q,N(T),N(p).trim()||void 0,N(R)||void 0);w(v,!1),e.success?(w(x,"teacher"===e.role?"teacher":"student",!0),localStorage.setItem(o,n),N(p).trim()&&sessionStorage.setItem(`room_password_${N(j)}`,N(p).trim())):w(f,e.error||N(F)(658),!0)}()}q(()=>{r().loaded&&!N(h).trim()&&w(h,B(),!0)}),q(()=>{if(!N(C)||!N(M).length)return;const n=[];for(const e of N(M))N(C).handle_message?.(e.message,e.participant)||n.push(e);w(M,n,!0)}),q(()=>{u.isConnected||w(x,null)});var X=ne();tn("nkst00",n=>{$n(()=>{k.title=N(V)??""})});var Z=_e(X),nn=n=>{var e=e$(),r=D(e),_=D(r),t=D(_),o=D(t),s=D(o,!0);cn(o);var i=d(o,2),y=D(i),b=D(y,!0);cn(y);var k=d(y,2),S=D(k,!0);cn(k),cn(i),cn(t);var M=d(t,2),z=D(M);ht(z,{variant:"outline",href:"/sync-lab",children:(n,e)=>{a();var r=Xn();A(n=>re(r,n),[()=>N(F)(660)]),dn(n,r)},$$slots:{default:!0}});var T=d(z,2);ht(T,{variant:"outline",href:"/sync-lab-regression",children:(n,e)=>{a();var r=Xn();A(n=>re(r,n),[()=>N(F)(797)]),dn(n,r)},$$slots:{default:!0}});var q=d(T,2);ht(q,{variant:"outline",get href(){return`/room/${N(j)??""}`},children:(n,e)=>{a();var r=Xn();A(n=>re(r,n),[()=>N(F)(661)]),dn(n,r)},$$slots:{default:!0}});var P=d(q,2),E=n=>{ht(n,{variant:"outline",onclick:J,children:(n,e)=>{a();var r=Xn();A(n=>re(r,n),[()=>N(F)(662)]),dn(n,r)},$$slots:{default:!0}})};En(P,n=>{u.isConnected&&n(E)}),cn(M),cn(_);var U=d(_,2),V=D(U),W=D(V),B=D(W,!0);cn(W);var K=d(W,2),Q=D(K,!0);cn(K),cn(V);var X=d(V,2),Z=D(X),nn=D(Z,!0);cn(Z);var en=d(Z,2),rn=D(en,!0);cn(en),cn(X);var an=d(X,2),_n=D(an),tn=D(_n,!0);cn(_n);var on=d(_n,2),sn=D(on,!0);cn(on),cn(an);var un=d(an,2),ln=D(un),hn=D(ln,!0);cn(ln);var yn=d(ln,2),pn=D(yn,!0);cn(yn),cn(un),cn(U);var mn=d(U,2),bn=n=>{var e=Yx(),r=D(e,!0);cn(e),A(()=>re(r,N(O))),dn(n,e)},gn=n=>{var e=n$(),r=D(e),a=D(r),_=D(a,!0);cn(a);var t=d(a,2),o=D(t,!0);cn(t),cn(r);var s=d(r,2),i=D(s),y=D(i),b=D(y,!0);cn(y);var k=d(y,2);m(k),cn(i);var x=d(i,2),S=n=>{var e=Xx(),r=D(e),a=D(r,!0);cn(r);var _=d(r,2);m(_),cn(e),A((n,e)=>{re(a,n),$(_,"placeholder",e)},[()=>N(F)(665),()=>N(F)(253)]),g(_,()=>N(p),n=>w(p,n)),dn(n,e)};En(x,n=>{N(H)&&n(S)});var C=d(x,2),M=D(C),z=D(M),T=D(z,!0);cn(z);var q=d(z,2),P=D(q,!0);cn(q),cn(M);var E=d(M,2),L=D(E),O=D(L,!0);cn(L);var U=d(L,2),V=D(U,!0);cn(U),cn(E);var W=d(E,2),B=D(W),K=D(B,!0);cn(B);var Q=d(B,2),J=D(Q,!0);cn(Q),cn(W);var X=d(W,2),Z=D(X),nn=D(Z,!0);cn(Z);var en=d(Z,2),rn=D(en,!0);cn(en),cn(X),cn(C);var an=d(C,2),_n=n=>{var e=Zx(),r=D(e,!0);cn(e),A(()=>re(r,N(f))),dn(n,e)};En(an,n=>{N(f)&&n(_n)});var tn=d(an,2),on=D(tn),sn=D(on,!0);cn(on);var un=d(on,2),ln=D(un,!0);cn(un),cn(tn),cn(s),cn(e),A((n,e,r,a,t,d,s,i,l,h,c)=>{re(_,n),re(o,e),re(b,r),$(k,"placeholder",a),re(T,t),re(P,N(j)),re(O,d),re(V,N(I)||"—"),re(K,s),re(J,N(R)?"found":"not found"),re(nn,i),re(rn,l),on.disabled=N(v)||u.isConnecting,re(sn,h),re(ln,c)},[()=>N(F)(798),()=>N(F)(799),()=>N(F)(1099),()=>N(F)(664),()=>N(F)(666),()=>N(F)(667),()=>N(F)(663),()=>N(F)(668),()=>N(F)(669),()=>N(v)||u.isConnecting?N(F)(636):N(F)(670),()=>N(F)(671)]),l("submit",s,Y),g(k,()=>N(h),n=>w(h,n)),c("click",un,G),dn(n,e)},wn=n=>{L(lf(n,{get liveKitService(){return u.service},get connected(){return u.isConnected},get role(){return N(x)},get local_name(){return N(h)},get participants_count(){return u.participantCount}}),n=>w(C,n,!0),()=>N(C))};En(mn,n=>{N(O)?n(bn):u.isConnected?n(wn,-1):n(gn,1)}),cn(r),cn(e),A((n,e,r,a,_,t,o)=>{re(s,n),re(b,e),re(S,r),re(B,a),re(Q,N(j)),re(nn,_),re(rn,N(x)||"not connected"),re(tn,t),re(sn,u.participantCount),re(hn,o),re(pn,N(R)?"found":"not found")},[()=>N(F)(795),()=>N(I)||N(F)(659,[N(j)]),()=>N(F)(796),()=>N(F)(39),()=>N(F)(40),()=>N(F)(31),()=>N(F)(663)]),dn(n,e)},rn=n=>{Gx(n,{})};En(Z,n=>{N(j)?n(nn):n(rn,-1)}),dn(n,X),en(),t()}H(["click"]);function a$(n,e,r){const a=Al(n,e,r);return{x:r.w>0?(a.x-r.x)/r.w:0,y:r.h>0?(a.y-r.y)/r.h:0}}function _$(n,e){return{x:e.w>0?(n.x-e.x)/e.w*kl.width:0,y:e.h>0?(n.y-e.y)/e.h*kl.height:0}}function t$(n,e){return{...n,last_updated_at:e}}function o$(){const n=Nl(jl(fl,kl,110,60),kl,.72),e=[{x:150,y:850},{x:500,y:500},{x:820,y:220}],r=["desktop_wide","laptop","tablet_portrait","phone_portrait","phone_landscape","square"];let a=0;const _=[];for(const t of r){const r=Rv(t),o=Cl(r.width,r.height,n);for(const _ of e){const e=a$(_,n,o),r={x:(_.x-n.x)/n.w,y:(_.y-n.y)/n.h},t=Math.max(Math.abs(e.x-r.x),Math.abs(e.y-r.y));a=Math.max(a,t)}const d=a$({x:500,y:500},n,o);_.push(`${r.label}: content ${o.w.toFixed(2)}×${o.h.toFixed(2)} · probe ${d.x.toFixed(4)}, ${d.y.toFixed(4)}`)}return{id:"mixed-device-lock",title:"Mixed-device contain mapping stays locked to the same world camera",passed:a<=1e-6,summary:`Worst normalized delta across six device presets: ${a.toExponential(2)}.`,details:_}}function d$(){const n=Nl(fl,kl,.78),e=Nl(jl(fl,kl,180,120),kl,.62),r={x:820,y:220},a=Cl(1440,900,n),_=Cl(390,844,e),t=a$(r,n,a),o=a$(r,e,_),d=Math.max(Math.abs(t.x-o.x),Math.abs(t.y-o.y));return{id:"detached-camera-divergence",title:"Detached student cameras diverge intentionally",passed:d>.1,summary:`Teacher/student normalized delta for one world point: ${d.toFixed(4)}.`,details:[`Teacher normalized position: ${t.x.toFixed(4)}, ${t.y.toFixed(4)}`,`Detached student normalized position: ${o.x.toFixed(4)}, ${o.y.toFixed(4)}`,"This should be different, because follow-teacher-camera is intentionally off."]}}function s$(){const n=il(99),e="page_99_ayah_4_128",r=function(n){const e=dl(n);return e?{anchor_id:e.id,anchor_label:e.label,anchor_kind:e.kind,anchor_page_id:e.page_id}:null}(e),a={metadata:JSON.stringify({role:"teacher"})};if(!n||!r)return{id:"late-join-round-trip",title:"Teacher snapshot survives late join and document round-trip",passed:!1,summary:"Could not resolve the production semantic attachment for page 99.",details:[]};const _=Yw(Uw,{type:Gp,camera:fl,cursor:{point:{x:500,y:500},name:"Teacher"},mushaf_state:Tu,semantic_state:{visible:!0,selected_anchor_ids:{[n]:e}},vector_state:{whiteboard_strokes:[],annotation_strokes:[],annotation_boxes:[{kind:"box",id:"page99-box",layer:"annotation",page_id:n,x:380,y:280,w:48,h:30,width:4,author:"Teacher",created_at:333444555,semantic_attachment:r}]},draft:null,timestamp:333444555},a);if(!_)return{id:"late-join-round-trip",title:"Teacher snapshot survives late join and document round-trip",passed:!1,summary:"The room replay reducer did not accept the teacher state message.",details:[]};const t=Ww(Vw(_),{last_updated_at:_.last_updated_at}),o=!!t&&Bw(t)===Bw(_);return{id:"late-join-round-trip",title:"Teacher snapshot survives late join and document round-trip",passed:o,summary:o?"Semantic selection and page-aware annotation box survived late join replay and persisted document restore.":"The restored replay state diverged from the teacher-authored snapshot.",details:[`Selected anchor for ${n}: ${_.semantic_state.selected_anchor_ids[n]??"none"}`,`Annotation boxes restored: ${t?.vector_state.annotation_boxes.length??0}`,`Replay signature: ${Bw(_).slice(0,96)}…`]}}function i$(){const n=il(1),e=t$({...Uw,semantic_state:{visible:!0,selected_anchor_ids:n?{[n]:"page_1_ayah_1_1"}:{}}},600),r=nv({role:"teacher",current_state:e,baseline_last_updated_at:e.last_updated_at,result:{success:!1}}),a=nv({role:"teacher",current_state:e,baseline_last_updated_at:e.last_updated_at,result:{success:!0,document:{version:1,semantic_state:{visible:!0,selected_anchor_ids:{page_1:"missing_anchor"}},vector_state:{whiteboard_strokes:[],annotation_strokes:[],annotation_boxes:[]}}}}),_=nv({role:"teacher",current_state:Uw,baseline_last_updated_at:Uw.last_updated_at,result:{success:!0,document:null}}),t=nv({role:"teacher",current_state:e,baseline_last_updated_at:e.last_updated_at,result:{success:!0,document:Vw(t$(Uw,120)),updated_at:120}}),o=!r.ready&&!a.ready&&_.ready&&"broadcast_and_persist"===_.action&&_.next_persisted_signature===Zw&&t.ready&&"broadcast_and_persist"===t.action&&"local_newer_than_persisted"===t.reason&&void 0===t.next_state;return{id:"preload-gating",title:"Reconnect preload only unlocks persistence after a valid outcome",passed:o,summary:o?"Failed/invalid preload stays not-ready, while missing or stale persisted state still allows safe teacher rebroadcast.":"At least one preload branch no longer matches the expected readiness contract.",details:[`Failed request → ready=${r.ready} · action=${r.action}`,`Invalid document → ready=${a.ready} · action=${a.action}`,`Missing document → ready=${_.ready} · action=${_.action}`,`Older persisted document → ready=${t.ready} · action=${t.action}`]}}function u$(){const n=[{x:10,y:20},{x:30,y:40}],e=n.map(n=>uh(n)),r=n.map(n=>uh(n)),a=_$(n[1],{x:10,y:20,w:20,h:20}),_=_$(n[1],{x:10,y:20,w:940,h:890}),t=JSON.stringify(e)===JSON.stringify(r),o=Math.max(Math.abs(a.x-_.x),Math.abs(a.y-_.y)),d=[{x:900,y:910},{x:950,y:910}].map(n=>uh(n));return{id:"whiteboard-canonical-stability",title:"Whiteboard replay stays in canonical world space when distant shapes are added",passed:t&&o>100,summary:`Canonical mapping stayed fixed while the legacy bbox-fit method would have drifted by ${o.toFixed(2)} world units.`,details:[`Canonical first stroke end: ${e[1].x.toFixed(2)}, ${e[1].y.toFixed(2)}`,`Far shape end still projects to: ${d[1].x.toFixed(2)}, ${d[1].y.toFixed(2)}`,`Legacy bbox-fit first end before/after: ${a.x.toFixed(2)}, ${a.y.toFixed(2)} → ${_.x.toFixed(2)}, ${_.y.toFixed(2)}`]}}function l$(){const n=il(99),e=dl("page_99_ayah_4_128"),r=il(999);return{id:"production-catalog-coverage",title:"Regression suite covers non-lab production pages too",passed:"page_99"===n&&"page_99"===e?.page_id&&"4:128"===e?.verse_key&&null===r,summary:`Resolved page 99 to ${n??"null"} and left unsupported page 999 unresolved.`,details:[`Anchor page 99 label: ${e?.label??"missing"}`,`Anchor page 99 verse key: ${e?.verse_key??"missing"}`,`Unsupported page 999 resolves to: ${r??"null"}`]}}var h$=/* @__PURE__ */n({default:()=>m$}),c$=O('
  • '),y$=O('

    '),p$=O('

    ');function m$(n,e){E(e,!0);const r=b(()=>Ra("main")),_=function(){const n=[o$(),d$(),s$(),i$(),u$(),l$()],e=n.filter(n=>n.passed).length;return{generated_at:/* @__PURE__ */(new Date).toISOString(),total:n.length,passed:e,failed:n.length-e,scenarios:n}}(),t=new Date(_.generated_at).toLocaleString(),o=0===_.failed?"flex flex-wrap items-center justify-between gap-3 rounded-2xl border border-emerald-500/30 bg-emerald-500/10 p-4 shadow-sm":"flex flex-wrap items-center justify-between gap-3 rounded-2xl border border-destructive/30 bg-destructive/10 p-4 shadow-sm";var s=p$();tn("ym3rf1",n=>{$n(n=>{k.title=n??""},[()=>N(r)(777)])});var i=D(s),u=D(i),l=D(u),h=D(l),c=D(h,!0);cn(h);var y=d(h,2),p=D(y),m=D(p,!0);cn(p);var g=d(p,2),w=D(g,!0);cn(g),cn(y),cn(l);var v=d(l,2),f=D(v);ht(f,{variant:"outline",href:"/room-shared-stage-regression",children:(n,e)=>{a();var _=Xn();A(n=>re(_,n),[()=>N(r)(897)]),dn(n,_)},$$slots:{default:!0}});var x=d(f,2);ht(x,{variant:"outline",href:"/sync-lab",children:(n,e)=>{a();var _=Xn();A(n=>re(_,n),[()=>N(r)(781)]),dn(n,_)},$$slots:{default:!0}}),ht(d(x,2),{variant:"outline",href:"/",children:(n,e)=>{a();var _=Xn();A(n=>re(_,n),[()=>N(r)(50)]),dn(n,_)},$$slots:{default:!0}}),cn(v),cn(u);var S=d(u,2),C=D(S),M=D(C),z=D(M,!0);cn(M);var T=d(M,2),q=D(T);{let n=b(()=>N(r).c(783)),e=b(()=>[t]);ct(q,{get x(){return N(n)},get a(){return N(e)}})}cn(T),cn(C);var j=d(C,2),P=D(j),I=D(P);{let n=b(()=>N(r).c(784)),e=b(()=>[_.passed,_.total]);ct(I,{get x(){return N(n)},get a(){return N(e)}})}cn(P);var R=d(P,2),L=D(R);{let n=b(()=>N(r).c(785)),e=b(()=>[_.failed]);ct(L,{get x(){return N(n)},get a(){return N(e)}})}cn(R),cn(j),cn(S);var F=d(S,2);Gn(F,21,()=>_.scenarios,n=>n.id,(n,e)=>{var r=y$(),a=D(r),_=D(a),t=D(_),o=D(t,!0);cn(t);var s=d(t,2),i=D(s,!0);cn(s),cn(_);var u=d(_,2),l=D(u,!0);cn(u),cn(a);var h=d(a,2),c=D(h,!0);cn(h);var y=d(h,2);Gn(y,23,()=>N(e).details,(n,r)=>`${N(e).id}-${r}`,(n,e)=>{var r=c$(),a=D(r,!0);cn(r),A(()=>re(a,N(e))),dn(n,r)}),cn(y),cn(r),A((n,a)=>{$(r,"data-testid",`sync-lab-regression-${N(e).id}`),$(r,"data-regression-status",N(e).passed?"pass":"fail"),yn(r,1,n),re(o,N(e).title),re(i,N(e).id),yn(u,1,a),re(l,N(e).passed?"PASS":"FAIL"),re(c,N(e).summary)},[()=>Bn(N(e).passed?"rounded-2xl border border-emerald-500/30 bg-card/70 p-4 shadow-sm":"rounded-2xl border border-destructive/30 bg-card/70 p-4 shadow-sm"),()=>Bn(N(e).passed?"inline-flex items-center rounded-full border border-emerald-500/40 bg-emerald-500/15 px-2.5 py-1 text-xs font-semibold text-emerald-700 dark:text-emerald-300":"inline-flex items-center rounded-full border border-destructive/40 bg-destructive/15 px-2.5 py-1 text-xs font-semibold text-destructive")]),dn(n,r)}),cn(F);var O=d(F,2),U=D(O),H=D(U,!0);cn(U);var V=d(U,2),W=D(V),B=D(W),K=D(B,!0);cn(B);var G=d(B,2),Q=D(G,!0);cn(G),cn(W);var J=d(W,2),Y=D(J),X=D(Y,!0);cn(Y);var Z=d(Y,2),nn=D(Z,!0);cn(Z),cn(J);var rn=d(J,2),an=D(rn),_n=D(an,!0);cn(an);var on=d(an,2),sn=D(on,!0);cn(on),cn(rn);var un=d(rn,2),ln=D(un),hn=D(ln,!0);cn(ln);var pn=d(ln,2),mn=D(pn,!0);cn(pn),cn(un),cn(V),cn(O),cn(i),cn(s),A((n,e,r,a,t,d,s,i,u,l,h,y,p)=>{re(c,n),re(m,e),re(w,r),$(S,"data-regression-failed",_.failed),yn(S,1,Bn(o)),re(z,a),re(H,t),re(K,d),re(Q,s),re(X,i),re(nn,u),re(_n,l),re(sn,h),re(hn,y),re(mn,p)},[()=>N(r)(778),()=>N(r)(779),()=>N(r)(780),()=>N(r)(782),()=>N(r)(786),()=>N(r)(787),()=>N(r)(788),()=>N(r)(789),()=>N(r)(790),()=>N(r)(791),()=>N(r)(792),()=>N(r)(793),()=>N(r)(794)]),dn(n,s),en()}var b$=[["/",ni],["/call-ended",fd],["/faq",Dd],["/admin/stats",Wo],["/new",oi],["/sync-lab-regression",h$],["/room-shared-stage-regression",Ix],["/sync-lab/:id",Qx],["/sync-lab",Qx],["/room/:id",wv],["/room-sync/:id",hf],["/room-sync",hf],["/my-spaces",rx],["/profile",li]],g$=K({Component:null,route_data:null,is_404:!1});var w$=new class{#n={base:"/",rewrite:void 0,preload_delay:20,preload_on_hover:!0,before_navigate:void 0,after_navigate:void 0,tick:Cn,scroll_to_top:!0,aria_current:!1,attach_to_window:!0,search:{show_defaults:!1,debounce:0,push_history:!0,sort:!0,array_style:"repeat"},load_plan_defaults:{parse:"json",cache:{strategy:"swr",ttl:864e5}}};#e=[];#r="/";#a=/^\/+/;#_=/* @__PURE__ */new Map;#t={url:null,internal_url:null,path:"",context:void 0,route:null,params:{},matches:[],layouts:Object.create(null),search_params:{}};#o=0;#d="";#s=/* @__PURE__ */new Map;#i=0;#u=0;#l=null;#h=null;#c="navgo";#y=null;#p=null;#m={};#b=[];#g={...this.#n.search};#w=!1;#v=null;#k=null;route=Y({url:new URL(location.href),internal_url:new URL(location.href),path:ca(new URL(location.href).pathname),context:void 0,route:null,params:{},matches:[],layouts:Object.create(null),search_params:{}});nav=null;is_navigating=Y(!1);search_params=function(n=()=>""){let e={};const r=Y(e),a={subscribe:r.subscribe,set(n){e=n&&"object"==typeof n?n:{},r.set(e)},update(n){a.set(n(e))},toString:()=>n(e),set_stringifier(e){n=e||(()=>"")}};return a}();#f=async n=>{const e=this.#x(n,!0);if(!e)return;const r=new URL(e.href,location.href);if(r.hash&&this.#$(r,this.#t.url)){const e=location.href.split("#")[1],a=r.href.split("#")[1]??"";return e===a?(n.preventDefault(),void(""===a||"top"===a&&!document.getElementById("top")?scrollTo({top:0}):ya("#"+a))):(this.#d=r.href,void r.href)}n.preventDefault(),await new Promise(n=>{requestAnimationFrame(()=>{setTimeout(n,0)}),setTimeout(n,100)}),e.href,this.goto(e.href,{replace:!1,literal:!0},"link",n)};#S=n=>{if(this.#d===location.href)return;const e=n?.state?.__navgo,r=this.#t.url,a=this.#C(location.href,{literal:!0});if(r&&a&&this.#$(a.url,r)){const e=this.#M(a);return this.#z(n),this.route.set(e),void this.#A()}if(e?.shallow){const _="string"==typeof e.from?e.from:null;if(!_||r&&ca(_)===ca(r.pathname)){const e=this.#M(a);return this.#T(e.url),this.#z(n),this.route.set(e),void this.#A()}}this.goto(location.href,{replace:!0,literal:!0},"popstate",n)};#q=()=>{const n=this.#d,e=n===location.href;if(this.#d="",e){const n=this.#o;this.#j();const e=history.state&&"object"==typeof history.state?history.state:{},r=n+1,a={...e,__navgo:{...e.__navgo,idx:r}};history.replaceState(a,"",location.href),this.#o=r;const _=new Map(this.#s.get(n)||[]);_.set("window",{x:scrollX||0,y:scrollY||0}),this.#s.set(r,_),location.href}else{const e=history.state?.__navgo?.idx;if(n||"number"!=typeof e||(this.#o=e),!location.hash){const n=this.#s.get(this.#o)?.get?.("window");n?(setTimeout(()=>scrollTo(n.x,n.y),0),this.#o):this.#n.scroll_to_top&&setTimeout(()=>scrollTo(0,0),0)}}const r=this.#M(this.#C(location.href,{literal:!0}));this.route.set(r),this.#A()};#N=null;#P=n=>{const e=this.#x(n,"mousedown"===n.type);e&&(e.href,this.preload(e.href,{literal:!0}))};#I=n=>{clearTimeout(this.#N),this.#N=setTimeout(()=>this.#P(n),this.#n.preload_delay)};#R=n=>this.#P(n);#E=n=>{if(this.#d===location.href)return;const e=n?.target,r=e&&e!==window&&e!==document?e?.dataset?.scrollId||e?.id:"window";if(!r)return;const a="window"===r?{x:scrollX||0,y:scrollY||0}:{x:e.scrollLeft||0,y:e.scrollTop||0},_=this.#s.get(this.#o)||/* @__PURE__ */new Map;_.set(String(r),a),this.#s.set(this.#o,_),this.#o};#L=n=>{try{sessionStorage.setItem(`__navgo_scroll:${location.href}`,JSON.stringify({x:scrollX,y:scrollY}))}catch{}const e=this.#D({type:"leave",to:null,will_unload:!0,event:n});this.#F(e),e.cancelled&&(n.preventDefault(),n.returnValue="")};#O(n){if(!n?.url)return null;const e=n.internal_url||n.url;return{url:n.url,internal_url:e,path:n.path||e.pathname||"",context:n.context}}#U(n,e=void 0){const r=this.#O(n);if(!r)return null;const a={...r,params:n?.params||{},route:n?.route||null,matches:n?.matches||[],layouts:n?.layouts||Object.create(null)};return e?{...a,...e}:a}#M(n,e=location.href){return this.#t=n?{...this.#t,...this.#O(n)}:{...this.#t,url:new URL(e,location.href)},this.#t}#H(n,e=location.href){if(null==n)return new URL(location.href);let r=n instanceof URL?n.href:String(n);const a=/^[a-zA-Z][a-zA-Z\d+\-.]*:/.test(r),_=/^(?:\/|\?|#|\.\/?|\.\.\/?)/.test(r);return a||_||(r="/"+r),new URL(r,e)}#V(n){return ca(n.pathname)+(n.search||"")}#$(n,e){return!!n&&!!e&&this.#V(n)===this.#V(e)}#W(n){const e=ca(n);return this.#a.test(e)&&e.replace(this.#a,"/")||!1}#B(n){const e=String(n||"/"),r="/"===e[0]?e:"/"+e;return"/"==this.#r?r:"/"===r?this.#r+"/":this.#r+r}#K(n=void 0){return void 0!==n?n:void 0!==this.#t.context?this.#t.context:this.#G(location.href)?.context}#Q(n,e=n,r=void 0){return e.pathname=ca(e.pathname),{url:n,internal_url:e,path:e.pathname,load_key:this.#V(n),context:r}}#J(n,e,r=void 0){const a=this.#n.rewrite?.[n];if("function"!=typeof a)return{url:e,context:r};try{const n=a({url:new URL(e.href),current:this.#U(this.#t),context:r});return n?"string"==typeof n||n instanceof URL?{url:new URL(n,e),context:r}:{url:new URL(n.url??e,e),context:void 0!==n.context?n.context:r}:{url:e,context:r}}catch(_){return{url:e,context:r}}}#G(n){const e=this.#H(n,location.href);if(e.origin!==location.origin)return null;const r=this.#W(e.pathname);if(!r)return null;const a=new URL(e.href);a.pathname=r;const _=this.#J("input",a);return this.#Q(e,_.url,_.context)}#Y(n,e=void 0){const r=this.#t.internal_url?.href||this.#G(location.href)?.internal_url?.href||location.href,a=this.#H(n,r);if(a.origin!==location.origin)return null;a.pathname=ca(a.pathname);const _=this.#J("output",a,this.#K(e)),t=_.url;return t.origin!==location.origin?null:(t.pathname=this.#B(t.pathname),this.#Q(t,a,_.context))}#C(n,e={}){if(null==n)return null;const r=n instanceof URL?n.href:String(n),a=!/^[a-zA-Z][a-zA-Z\d+\-.]*:/.test(r)||this.#H(n,location.href).origin===location.origin,_=a?this.#G(n):null;if(e.literal)return _;if(!a)return null;const t=!!_&&_.path!==ca(_.url.pathname),o=t?_:this.#Y(n,e.context);return o||_}format(n){if(!n)return n;const e=this.#G(n),r=!!e&&e.internal_url.pathname+(e.internal_url.search||"")+(e.internal_url.hash||"");return r||!1}href(n=location.href,e={}){const r=this.#C(n,e);return!!r&&(e.absolute?r.url.href:r.url.pathname+r.url.search+r.url.hash)}#x(n,e=!1){if(!n||n.defaultPrevented||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||e&&n.button)return null;const r=(n.composedPath()[0]||n.target)?.closest?.("a"),a=r?.getAttribute?.("href");return a&&!r.target&&!r.download&&r.host===location.host&&this.#C(a,{literal:!0})?{a:r,href:a}:null}#A(){if(!this.#n.aria_current)return;const n=this.#t.url&&ca(this.#t.url.pathname);if(n)for(const e of document.querySelectorAll("a[href]")){const r=e.getAttribute("href");if("#"===r[0])continue;const a=r&&this.#C(r,{literal:!0})?.url;a&&ca(a.pathname)===n?e.setAttribute("aria-current","page"):"page"===e.getAttribute("aria-current")&&e.removeAttribute("aria-current")}}#X(n){if(!n)return{};const e=n[1],r=n[2];if(!r)return e||{};const a={...e||{},...r},_=e?.param_rules,t=r?.param_rules;if(_||t){const n={},e=n=>void 0!==n?.schema||void 0!==n?.coercer?n:n?{schema:n}:{};for(const r in _||{})n[r]=e(_[r]);for(const r in t||{})n[r]={...n[r],...e(t[r])};a.param_rules=n}return a}#Z(n,e){const r=n instanceof Request?n:new Request(n,e),a=new Headers(r.headers);if(e?.headers)for(const[_,t]of new Headers(e.headers))a.set(_,t);return new Request(r.url,{...e,method:"GET",headers:a})}#nn="__navgo_meta:";#en(n){try{return JSON.parse(sessionStorage.getItem(this.#nn+n)||"null")}catch{return null}}#rn(n,e){try{sessionStorage.setItem(this.#nn+n,JSON.stringify(e))}catch{}}#an(n,e,r,a,_){const{url:t,internal_url:o=t,path:d=o?.pathname||"",context:s}=e||{};return{route_entry:n,url:t,internal_url:o,path:d,context:s,params:r,search_params:a,signal:_.signal,fetch:(n,e)=>fetch(n,{...e,signal:_.signal}),invalidate:n=>this.invalidate(n)}}#_n(n,e,r,a){const{url:_,internal_url:t=_,path:o=t?.pathname||"",context:d}=r||{},s={route_entry:e,url:_,internal_url:t,path:o,context:d,params:a};let i=null,u=ma(this.#n.search||{});const l=n=>{if(!n)return;const e="function"==typeof n?n(s):n;e?.entries&&(i=e)};for(const c of n||[]){if("layout"!==c.type)continue;const n=c.__entry;u=ma(u,n?.search_options),l(n?.search_schema)}const h=this.#X(e);return u=ma(u,h?.search_options),l(h?.search_schema),{schema:i,opts:u}}#tn(n){const e=n||{};this.#w=!0;try{this.#t.search_params=e,this.#t.url&&this.route.set(this.#t),this.search_params.set(e)}finally{this.#w=!1}}#on(n){this.#p=n?.schema||null,this.#g=ma(this.#n.search||{},n?.opts||{}),this.#m=n?.defaults||{},this.#b=this.#p?.entries?Object.keys(this.#p.entries):[],this.#k?.cancel?.(),this.#k=this.#g.debounce>0?na(n=>this.#dn(n),this.#g.debounce):null,this.search_params.set_stringifier(n=>this.#sn(n)),this.#tn(n?.search_params??{})}#sn(n){return this.#p?ka(this.#t.url||new URL(location.href),n,this.#b,this.#m,this.#g,sa):""}#T(n){if(!this.#p)return this.#tn({});const e=wa(ga(n,this.#p,this.#g),this.#p,this.#m,this.#g);this.#tn(e)}#dn(n){if(!this.#p)return;const e=function(n,e,r,a,_,t){const o=new URL(n.href),d=ka(n,e,r,a,_,t);return o.search=d?`?${d}`:"",o.href===n.href?null:o}(this.#t.url||new URL(location.href),n,this.#b,this.#m,this.#g,sa);e&&(this.#g.push_history?this.push_state(e.href):this.replace_state(e.href))}async#in(n,e,r,a,_){const t=new Headers(n.headers);r?.etag&&t.set("If-None-Match",r.etag),r?.last_modified&&t.set("If-Modified-Since",r.last_modified);const o=await fetch(new Request(n,{headers:t}),{signal:_});if(!e)return o;if(304===o.status){this.#rn(n.url,{...r,ts:Date.now()});try{return await e.match(n)||o}catch{return o}}if(o.ok){try{await e.put(n,o.clone())}catch{}this.#rn(n.url,{ts:Date.now(),etag:o.headers.get("ETag"),last_modified:o.headers.get("Last-Modified"),tags:a||[]})}return o}async#un(n,e){return"function"==typeof e?e(n):n[e||"json"]()}async#ln(n,e,r){let a=null;try{a=await caches.open(this.#c)}catch{}const _={},t={},o=/* @__PURE__ */new Set,d=this.#n.load_plan_defaults||{};return await Promise.all(Object.entries(n||{}).map(async([n,s])=>{const i="string"==typeof s?{request:s}:s||{},u=this.#Z(i.request,i.init),l=new URL(u.url);l.origin===location.origin&&o.add(l.pathname+l.search);const h=i.parse||d.parse||"json",c={...d.cache||{},...i.cache||{}},y=c.strategy||"swr",p=c.ttl??864e5,m=c.tags||[],b=a?this.#en(u.url):null;let g;try{g=await(a?.match?.(u))}catch{}const w=!!(b&&"number"==typeof b.ts&&Date.now()-b.ts<=p);let v,k="network";if(a&&"no-store"!==y)if("cache-first"===y&&g&&w)v=g,k="cache";else if("swr"===y&&g)if(w)v=g,k="cache";else if(0===r)try{v=await this.#in(u,a,b,m,e.signal),k="network"}catch{v=g,k="stale"}else v=g,k="stale",this.#in(u,a,b,m,e.signal).then(n=>this.#un(n.clone?n.clone():n,h)).then(e=>this.#hn(r,n,e)).catch(()=>{});else if("network-first"===y)try{v=await this.#in(u,a,b,m,e.signal)}catch(f){if(!g)throw f;v=g,k=w?"cache":"stale"}else v=await this.#in(u,a,b,m,e.signal);else v=await fetch(u,{signal:e.signal});_[n]=await this.#un(v.clone?v.clone():v,h),t[n]=k})),{..._,__meta:{source:t,at:Date.now(),preloads:[...o]}}}#hn(n,e,r){const a=this.#y;if(n!==this.#u||!a||a.id!==n)return;const _=a.nav?.to?.data;if(_&&"object"==typeof _){if(!sa(_[e],r))try{_[e]=r,_.__meta?.source&&(_.__meta.source[e]="revalidated"),a.nav.status=this.#cn(a.nav.to),a.updated=!0,this.route.set(this.#t);for(const n of a.cbs||[])try{n()}catch{}}catch{}}else a.pending?.set(e,r)}async#yn(n,e,r,a,_,t,o){if(!n)return;const d=n(this.#an(e,r,a,_,t));return d instanceof Promise?d:d&&"object"==typeof d&&!Array.isArray(d)?this.#ln(d,t,o):d}#F(n){const e=this.#t.matches||[];for(let a=e.length-1;a>=0;a--){const _=e[a];try{"route"===_.type?this.#X(_.route)?.before_route_leave?.(n):_.__entry?.before_route_leave?.(n)}catch(r){xa()}if(n.cancelled)break}}#pn(n){const e=Object.create(null);for(const r of n||[])"layout"===r.type&&r.id&&(e[r.id]=r);return e}#cn(n){const e=n?.data?.__error;return"number"==typeof e?.status?e.status:e?500:null===n?.route?404:200}#mn(n,e){const r=[];for(const a of e||[]){const n={type:"layout",layout:a.layout};a.id&&(n.id=a.id),Object.defineProperty(n,"__entry",{value:a}),r.push(n)}return r.push({type:"route",route:n}),r}async#bn(n,e,r,a){const _=n.matches||this.#mn(n.route,n.stack),{url:t}=e||{},{schema:o,opts:d}=this.#_n(_,n.route,e,n.params),s=o&&la(o)||{},i=o?wa(ga(t,o,d),o,s,d):{},u=_.map(_=>{const t="route"===_.type?this.#X(_.route):_.__entry,o="route"===_.type?_.route:n.route;return Promise.resolve(this.#yn(t?.loader,o,e,n.params,i,r,a)).catch(n=>({__error:n}))}),l=await Promise.all(u);for(let h=0;h<_.length;h++)_[h].data=l[h];return{matches:_,layouts:this.#pn(_),data:l[l.length-1],search:{schema:o,opts:d,defaults:s,search_params:i}}}#D({type:n,from:e,to:r,will_unload:a=!1,event:_}){const t=void 0!==e?e:this.#U(this.#t),o=r?.route&&this.#X(r.route)?.ssr;return{type:n,from:t,to:r,status:200,ssr:o&&"object"==typeof o?{serve_shell:!0===o.serve_shell,refresh_every:Number.isFinite(o.refresh_every)?Math.max(0,Math.floor(o.refresh_every)):0}:void 0,will_unload:a,cancelled:!1,event:_,cancel(){this.cancelled=!0}}}async goto(n=location.href,e={},r="goto",a=void 0){const _=++this.#i;this.#u=_;const t=()=>{if("popstate"!==r)return;const n=a?.state?.__navgo?.idx;if(null!=n){const e=n-this.#o;e&&history.go(-e)}};try{const d=this.#C(n,e);if(!d)return;this.is_navigating.set(!0);const{url:s,path:i,load_key:u}=d;this.#y={id:_,nav:null,cbs:/* @__PURE__ */new Set,updated:!1,pending:/* @__PURE__ */new Map},this.#h?.abort?.();const l=new AbortController;this.#h=l;let h=this.#D({type:r,to:this.#U(d),event:a});if(e.replace,this.#F(h),h.cancelled)return void t();let c,y=null,p=null;try{y=await this.match(i)}catch(o){p=o}if(_!==this.#u)return;if(h.to=this.#U(y?{...d,params:y.params||{},route:y.route||null,matches:y.matches||[],layouts:y.layouts||this.#pn(y.matches||[])}:d),p&&(h.to.data={__error:p}),h.status=this.#cn(h.to),h.from){try{this.#n.before_navigate?.(h)}catch(o){}if(h.from,h.to,h.cancelled)return void t();if(_!==this.#u)return}if(y&&!p){const n=this.#_.get(u);c=n?.data??await(n?.promise||this.#bn(y,d,l,_)).catch(n=>({matches:[],data:{__error:n}})),this.#_.delete(u);c?.matches?.some(n=>n?.data?.__error)}if(_!==this.#u)return;if("popstate"!==r&&("goto"!==r||null!=this.#t.url)){const n=this.#o+(e.replace?0:1),a={...history.state&&"object"==typeof history.state?history.state:{},__navgo:{idx:n,type:r}};history[(e.replace?"replace":"push")+"State"](a,null,s.href),e.replace,s.href,this.#o=n,e.replace||(this.#s.delete(n),this.#j())}if(_!==this.#u)return;const m=this.#t,b=y&&!p&&c?.matches||[],g=y&&!p?c?.layouts||this.#pn(b):Object.create(null),w=p?{__error:p}:y?c?.data:{__error:{status:404}};this.#t={...this.#U({...d,route:p?null:y?.route||null,params:p?{}:y?.params||{},matches:b,layouts:g}),search_params:{}},this.#on(y&&!p?c?.search:null),h=this.#D({type:r,from:this.#U(m),to:this.#U(this.#t,{data:w}),event:a}),h.status=this.#cn(h.to),this.nav=h;const v=this.#y;if(v&&v.id===_){v.nav=h;const n=h.to?.data;if(n&&"object"==typeof n&&v.pending?.size){for(const[e,r]of v.pending)sa(n[e],r)||(n[e]=r,n.__meta?.source&&(n.__meta.source[e]="revalidated"),v.updated=!0);v.pending.clear(),h.status=this.#cn(h.to)}}this.route.set(this.#t);try{await(this.#n.after_navigate?.(h,n=>{if(_!==this.#u)return;const e=this.#y;e&&e.id===_&&(e.cbs.add(n),e.updated&&("function"==typeof queueMicrotask?queueMicrotask:setTimeout)(n,0))}))}catch(o){}if(_!==this.#u)return;h.from,h.to,h.type,this.#o;try{await(this.#n.tick?.())}catch(o){}this.#A(),this.#z(h)}catch(o){}finally{_===this.#u&&this.is_navigating.set(!1)}}#gn(n,e,r){const a=new URL(n||location.href,location.href),_=this.#o;r||this.#j();const t=history.state&&"object"==typeof history.state?history.state:{};history.replaceState({...t,__navgo:{...t.__navgo,pos:{x:scrollX||0,y:scrollY||0}}},"",location.href);try{sessionStorage.setItem(`__navgo_scroll:${location.href}`,JSON.stringify({x:scrollX||0,y:scrollY||0}))}catch{}const o=_+(r?0:1),d={...e,__navgo:{shallow:!0,idx:o,from:ca(this.#t.url?.pathname||location.pathname)}};history[(r?"replace":"push")+"State"](d,"",a.href),a.href,this.#o=o;const s=r?this.#s.get(o)||/* @__PURE__ */new Map:new Map(this.#s.get(_)||[]);s.set("window",{x:scrollX||0,y:scrollY||0}),this.#s.set(o,s);const i=this.#M(this.#C(a.href,{literal:!0}),a);this.#T(i.url),this.route.set(i),this.#A()}push_state(n,e){this.#gn(n,e,!1)}replace_state(n,e){this.#gn(n,e,!0)}async invalidate(n){const e=Array.isArray(n)?n:[n];let r;try{r=await caches.open(this.#c)}catch{return}const a=this.#nn,_=[];for(const t of e){const n=String(t);if(n.includes("://")||n.startsWith("/"))_.push(n);else for(let e=0;enull);if(!t)return;if(this.#_.has(_)){const n=this.#_.get(_);return n.promise?n.promise.then(n=>n?.data):n.data?.data}const o={},d=new AbortController;return o.promise=this.#bn(t,r,d,0).then(n=>(o.data=n,delete o.promise,n),n=>{const e={matches:[],data:{__error:n}};return o.data=e,delete o.promise,e}),this.#_.set(_,o),o.promise.then(n=>n?.data)}catch(r){}}async match(n){let e,r;for(let a=0;a{if(this.#w)return;if(!this.#p)return;const e=wa(n||{},this.#p,this.#m,this.#g);sa(e,n)||this.#tn(e),this.#k?this.#k(e):this.#dn(e)}),this.#r,this.#e.length,this.#n.preload_on_hover,this.#n.preload_delay}init(){history.scrollRestoration="manual",addEventListener("popstate",this.#S),addEventListener("click",this.#f),addEventListener("beforeunload",this.#L),addEventListener("hashchange",this.#q),this.#l=function(n,e,{signal:r,edges:a=["leading","trailing"]}={}){let _=null;const t=na(function(...e){_=Date.now(),n.apply(this,e)},e,{signal:r,edges:a}),o=function(...r){if(null==_&&(_=Date.now()),Date.now()-_>=e)return _=Date.now(),n.apply(this,r),t.cancel(),void t.schedule();t.apply(this,r)};return o.cancel=t.cancel,o.flush=t.flush,o}(this.#E,100),addEventListener("scroll",this.#l,{capture:!0}),this.#n.preload_on_hover&&(navigator.connection?.saveData||addEventListener("mousemove",this.#I),addEventListener("touchstart",this.#R,{passive:!0}),addEventListener("mousedown",this.#R),this.#n.preload_delay);const n=history.state?.__navgo?.idx;if(null==n){const n=history.state&&"object"==typeof history.state?history.state:{},e={...n,__navgo:{...n.__navgo,idx:this.#o}};history.replaceState(e,"",location.href),this.#o}else this.#o=n,this.#o;return this.#n.attach_to_window&&(window.navgo=this),this.goto()}destroy(){removeEventListener("popstate",this.#S),removeEventListener("click",this.#f),removeEventListener("mousemove",this.#I),removeEventListener("touchstart",this.#R),removeEventListener("mousedown",this.#R),removeEventListener("beforeunload",this.#L),removeEventListener("hashchange",this.#q),removeEventListener("scroll",this.#l,{capture:!0}),this.#s.clear(),this.#v?.(),delete window.navgo}#j(){for(const n of this.#s.keys())n>this.#o&&this.#s.delete(n);this.#o}#z(n){const e=location.hash,r=n?.type||n?.event?.type;requestAnimationFrame(()=>{if(n&&"from"in n?null==n.from:!r)try{const n=`__navgo_scroll:${location.href}`,{x:e,y:r}=JSON.parse(sessionStorage.getItem(n));return sessionStorage.removeItem(n),void scrollTo(e,r)}catch{}if("popstate"===r){const e=(n?.state??n?.event?.state)?.__navgo,r=e?.idx,a="number"==typeof r?r:this.#o-1;this.#o=a;const _=this.#s.get(a);let t=e?.pos||_?.get?.("window");if(!t)try{const n=`__navgo_scroll:${location.href}`;t=JSON.parse(sessionStorage.getItem(n))||null,sessionStorage.removeItem(n)}catch{}t&&(scrollTo(t.x,t.y),setTimeout(()=>scrollTo(t.x,t.y),0));for(const[n,o]of _||[]){if("window"===n)continue;const e=`[data-scroll-id="${CSS.escape(n)}"],#${CSS.escape(n)}`,r=document.querySelector(e);r&&(r.scrollTo?.(o.x,o.y),r.scrollLeft=o.x,r.scrollTop=o.y)}if(t)return}e&&ya(e)||this.#n.scroll_to_top&&scrollTo(0,0)})}}(b$,{after_navigate:function(n){g$.is_404=404===n.to?.data?.__error?.status||!n.to?.route,g$.route_data=n.to?.data??null,g$.Component=n.to?.route?.[1]?.default||n.to?.route?.[1]?.cmp||null},load_plan_defaults:{cache:{strategy:"no-store"}}}),v$=j_.subscribe(async n=>{n.loaded&&(v$(),await w$.init(),Jn(bt,{target:document.body,props:g$}))});