progy 0.16.2 → 0.16.5
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.
- package/dist/backend/server.js +17 -17
- package/dist/cli.js +22 -22
- package/dist/public/main.js +1 -1
- package/package.json +1 -1
package/dist/public/main.js
CHANGED
|
@@ -3043,7 +3043,7 @@ Expecting `+_6.join(", ")+", got '"+(this.terminals_[Q6]||Q6)+"'";else M6="Parse
|
|
|
3043
3043
|
`).replace(/\\"/g,'"');if(OX.set(B),!G||G==="")an("ai")}});let Q=OX.get()||"";if(Q.startsWith('{"explanation":"'))Q=Q.replace('{"explanation":"',"");if(Q.endsWith('"}'))Q=Q.substring(0,Q.length-2);Q=Q.replace(/\\n/g,`
|
|
3044
3044
|
`).replace(/\\"/g,'"').replace(/\\\\/g,"\\").replace(/\\t/g,"\t").replace(/\\r/g,"\r"),Q=Q.trim(),OX.set(Q),an("ai");let Z={id:crypto.randomUUID(),type:"explain",content:Q,timestamp:Date.now(),exerciseId:X.id};Kl.set([...Kl.get(),Z]),_h6(X,"explanation",Q).catch(console.error)}catch(Q){OX.set(`Error: ${Q.message||"Failed to get explanation."}`)}finally{TQ.set(!1)}};async function _h6(X,Y,J){try{let Q=new Date().toISOString().replace(/[:.]/g,"-"),Z=`progy-notes/${X.module}/${X.id}-${Y}-${Q}.md`,K=`# AI ${Y==="hint"?"Hint":"Explanation"} - ${X.exerciseName}
|
|
3045
3045
|
|
|
3046
|
-
${J}`;if(!(await fetch("/notes/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:Z,content:K})})).ok)throw Error("Failed to save note");if(!(await fetch("/local/git/commit",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:`docs: save AI ${Y} for ${X.exerciseName}`})})).ok)throw Error("Failed to commit note");if(!(await fetch("/local/git/sync",{method:"POST"})).ok)throw Error("Failed to push note");console.log("[AI] Synced to GitHub:",Z)}catch(Q){console.error("[AI] GitHub Sync failed:",Q)}}var HD=j0(jh6,(X)=>X.data||{}),WD=j0(kh6,(X)=>X.data||null),bh6=j0(on,(X)=>X.data?.markdown||null),xh6=j0(xq6,(X)=>X.data||null),fh6=j0(dI7,(X)=>X.data||{}),hq6=j0(HD,(X)=>Object.values(X).reduce((Y,J)=>Y+(Array.isArray(J)?J.length:0),0)),yq6=j0(eZ,(X)=>Object.values(X).filter((Y)=>Y==="pass").length),hh6=j0([hq6,yq6],(X,Y)=>X>0?Math.round(Y/X*100):0);var yh6=(X)=>fq6.set(X);var en=(X)=>{if(_1.set(X),OX.set(null),TQ.set(!1),!X)pW.set(""),tn.set("")},mq6=()=>jh6.revalidate(),gq6=()=>kh6.revalidate(),L56=async()=>{let X=_1.get();if(!X)return;lW.set(!0),nn.set("output");try{let J=await(await fetch("/exercises/run",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({exerciseName:X.exerciseName,id:X.id,module:X.module,entryPoint:X.entryPoint})})).json();pW.set(J.rawOutput||J.output||""),tn.set(J.friendlyOutput||"");let Q=J.success?"pass":"fail";if(eZ.setKey(X.id,Q),J.success){if(J.progress)E56("/progress",J.progress);else gq6();mq6()}}catch(Y){pW.set("Failed to run tests."),eZ.setKey(X.id,"fail")}finally{lW.set(!1)}};WD.subscribe((X)=>{if(X&&X.exercises){let Y={};for(let[J,Q]of Object.entries(X.exercises))Y[J]=Q.status;eZ.set(Y)}});_1.subscribe((X)=>{if(X&&X.module)S56.set(X.module)});function mh6(X,Y={}){let J=K3();J.routes=Object.keys(X).map((z)=>{let F=X[z];if(typeof F!=="string")return[z,...[F].flat()];F=F.replace(/\/$/g,"")||"/";let q=F.replace(/[\s!#$()+,.:<=?[\\\]^{|}]/g,"\\$&").replace(/\/\\:(\w+)\\\?/g,"(?:/(?<$1>(?<=/)[^/]+))?").replace(/\/\\:(\w+)/g,"/(?<$1>[^/]+)");return[z,RegExp("^"+q+"$","i"),null,F]});let Q,Z=(z)=>{let F=new URL(z.replace(/#$/,""),"http://a"),q=F.pathname+F.search+F.hash;if(Q===q)return!1;Q=q;let H=Y.search?F.pathname+F.search:F.pathname;H=H.replace(/\/($|\?)/,"$1")||"/";for(let[U,O,D]of J.routes){let A=H.match(O);if(A)return{hash:F.hash,params:D?D(...A.slice(1)):Object.keys({...A.groups}).reduce((N,E)=>{return N[E]=A.groups[E]?decodeURIComponent(A.groups[E]):"",N},{}),path:H,route:U,search:Object.fromEntries(F.searchParams)}}},K=(z)=>{let F=z.target.closest("a");if(F&&z.button===0&&F.target!=="_blank"&&F.origin===location.origin&&F.rel!=="external"&&F.target!=="_self"&&!F.download&&!z.altKey&&!z.metaKey&&!z.ctrlKey&&!z.shiftKey&&!z.defaultPrevented){z.preventDefault();let q=location.hash!==F.hash;if(J.open(F.href),q){if(location.hash=F.hash,F.hash===""||F.hash==="#")window.dispatchEvent(new HashChangeEvent("hashchange"))}}},G=J.set;delete J.set;let B=()=>{let z=Z(location.href);if(z!==!1)G(z)};if(typeof window<"u"&&typeof location<"u")zD(J,()=>{let z=Z(location.href);if(z!==!1)G(z);if(Y.links!==!1)document.body.addEventListener("click",K);return window.addEventListener("popstate",B),window.addEventListener("hashchange",B),()=>{Q=void 0,document.body.removeEventListener("click",K),window.removeEventListener("popstate",B),window.removeEventListener("hashchange",B)}});else G(Z("/"));return J.open=(z,F)=>{let q=Z(z);if(q!==!1){if(typeof history<"u")if(F)history.replaceState(null,null,z);else history.pushState(null,null,z);G(q)}},J}var KJ=mh6({home:"/",editor:"/editor",editorModule:"/editor/:moduleId",editorExercise:"/editor/:moduleId/:exerciseId",map:"/map",git:"/git",studio:"/studio"});var M9={};u2(M9,{createDialogScope:()=>i$7,WarningProvider:()=>e$7,Trigger:()=>QL7,Title:()=>qa,Root:()=>Ga,Portal:()=>Ba,Overlay:()=>za,DialogTrigger:()=>FH6,DialogTitle:()=>OH6,DialogPortal:()=>HH6,DialogOverlay:()=>WH6,DialogDescription:()=>DH6,DialogContent:()=>UH6,DialogClose:()=>AH6,Dialog:()=>zH6,Description:()=>Ha,Content:()=>Fa,Close:()=>ZL7});var O0=W7(P2(),1);var EH5=!!(typeof window<"u"&&window.document&&window.document.createElement);function Q4(X,Y,{checkForDefaultPrevented:J=!0}={}){return function(Z){if(X?.(Z),J===!1||!Z.defaultPrevented)return Y?.(Z)}}var uh6=W7(P2(),1);function gh6(X,Y){if(typeof X==="function")return X(Y);else if(X!==null&&X!==void 0)X.current=Y}function UD(...X){return(Y)=>{let J=!1,Q=X.map((Z)=>{let K=gh6(Z,Y);if(!J&&typeof K=="function")J=!0;return K});if(J)return()=>{for(let Z=0;Z<Q.length;Z++){let K=Q[Z];if(typeof K=="function")K();else gh6(X[Z],null)}}}}function v0(...X){return uh6.useCallback(UD(...X),X)}var GJ=W7(P2(),1),uq6=W7(q1(),1);function ph6(X,Y){let J=GJ.createContext(Y),Q=(K)=>{let{children:G,...B}=K,z=GJ.useMemo(()=>B,Object.values(B));return uq6.jsx(J.Provider,{value:z,children:G})};Q.displayName=X+"Provider";function Z(K){let G=GJ.useContext(J);if(G)return G;if(Y!==void 0)return Y;throw Error(`\`${K}\` must be used within \`${X}\``)}return[Q,Z]}function F9(X,Y=[]){let J=[];function Q(K,G){let B=GJ.createContext(G),z=J.length;J=[...J,G];let F=(H)=>{let{scope:U,children:O,...D}=H,A=U?.[X]?.[z]||B,N=GJ.useMemo(()=>D,Object.values(D));return uq6.jsx(A.Provider,{value:N,children:O})};F.displayName=K+"Provider";function q(H,U){let O=U?.[X]?.[z]||B,D=GJ.useContext(O);if(D)return D;if(G!==void 0)return G;throw Error(`\`${H}\` must be used within \`${K}\``)}return[F,q]}let Z=()=>{let K=J.map((G)=>{return GJ.createContext(G)});return function(B){let z=B?.[X]||K;return GJ.useMemo(()=>({[`__scope${X}`]:{...B,[X]:z}}),[B,z])}};return Z.scopeName=X,[Q,iI7(Z,...Y)]}function iI7(...X){let Y=X[0];if(X.length===1)return Y;let J=()=>{let Q=X.map((Z)=>({useScope:Z(),scopeName:Z.scopeName}));return function(K){let G=Q.reduce((B,{useScope:z,scopeName:F})=>{let H=z(K)[`__scope${F}`];return{...B,...H}},{});return GJ.useMemo(()=>({[`__scope${Y.scopeName}`]:G}),[G])}};return J.scopeName=Y.scopeName,J}var pq6=W7(P2(),1);var lh6=W7(P2(),1),q9=globalThis?.document?lh6.useLayoutEffect:()=>{};var rI7=pq6[" useId ".trim().toString()]||(()=>{return}),sI7=0;function H9(X){let[Y,J]=pq6.useState(rI7());return q9(()=>{if(!X)J((Q)=>Q??String(sI7++))},[X]),X||(Y?`radix-${Y}`:"")}var BJ=W7(P2(),1);var j56=W7(P2(),1);var nI7=BJ[" useInsertionEffect ".trim().toString()]||q9;function cW({prop:X,defaultProp:Y,onChange:J=()=>{},caller:Q}){let[Z,K,G]=aI7({defaultProp:Y,onChange:J}),B=X!==void 0,z=B?X:Z;{let q=BJ.useRef(X!==void 0);BJ.useEffect(()=>{let H=q.current;if(H!==B)console.warn(`${Q} is changing from ${H?"controlled":"uncontrolled"} to ${B?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`);q.current=B},[B,Q])}let F=BJ.useCallback((q)=>{if(B){let H=oI7(q)?q(X):q;if(H!==X)G.current?.(H)}else K(q)},[B,X,K,G]);return[z,F]}function aI7({defaultProp:X,onChange:Y}){let[J,Q]=BJ.useState(X),Z=BJ.useRef(J),K=BJ.useRef(Y);return nI7(()=>{K.current=Y},[Y]),BJ.useEffect(()=>{if(Z.current!==J)K.current?.(J),Z.current=J},[J,Z]),[J,Q,K]}function oI7(X){return typeof X==="function"}var bH5=Symbol("RADIX:SYNC_STATE");var G3=W7(P2(),1);var dh6=W7(P2(),1),ch6=W7(un(),1);var H1=W7(P2(),1);var k56=W7(q1(),1);function qq(X){let Y=tI7(X),J=H1.forwardRef((Q,Z)=>{let{children:K,...G}=Q,B=H1.Children.toArray(K),z=B.find(X$7);if(z){let F=z.props.children,q=B.map((H)=>{if(H===z){if(H1.Children.count(F)>1)return H1.Children.only(null);return H1.isValidElement(F)?F.props.children:null}else return H});return k56.jsx(Y,{...G,ref:Z,children:H1.isValidElement(F)?H1.cloneElement(F,void 0,q):null})}return k56.jsx(Y,{...G,ref:Z,children:K})});return J.displayName=`${X}.Slot`,J}function tI7(X){let Y=H1.forwardRef((J,Q)=>{let{children:Z,...K}=J;if(H1.isValidElement(Z)){let G=J$7(Z),B=Y$7(K,Z.props);if(Z.type!==H1.Fragment)B.ref=Q?UD(Q,G):G;return H1.cloneElement(Z,B)}return H1.Children.count(Z)>1?H1.Children.only(null):null});return Y.displayName=`${X}.SlotClone`,Y}var eI7=Symbol("radix.slottable");function X$7(X){return H1.isValidElement(X)&&typeof X.type==="function"&&"__radixId"in X.type&&X.type.__radixId===eI7}function Y$7(X,Y){let J={...Y};for(let Q in Y){let Z=X[Q],K=Y[Q];if(/^on[A-Z]/.test(Q)){if(Z&&K)J[Q]=(...B)=>{let z=K(...B);return Z(...B),z};else if(Z)J[Q]=Z}else if(Q==="style")J[Q]={...Z,...K};else if(Q==="className")J[Q]=[Z,K].filter(Boolean).join(" ")}return{...X,...J}}function J$7(X){let Y=Object.getOwnPropertyDescriptor(X.props,"ref")?.get,J=Y&&"isReactWarning"in Y&&Y.isReactWarning;if(J)return X.ref;if(Y=Object.getOwnPropertyDescriptor(X,"ref")?.get,J=Y&&"isReactWarning"in Y&&Y.isReactWarning,J)return X.props.ref;return X.props.ref||X.ref}var ih6=W7(q1(),1),Q$7=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],K5=Q$7.reduce((X,Y)=>{let J=qq(`Primitive.${Y}`),Q=dh6.forwardRef((Z,K)=>{let{asChild:G,...B}=Z,z=G?J:Y;if(typeof window<"u")window[Symbol.for("radix-ui")]=!0;return ih6.jsx(z,{...B,ref:K})});return Q.displayName=`Primitive.${Y}`,{...X,[Y]:Q}},{});function v56(X,Y){if(X)ch6.flushSync(()=>X.dispatchEvent(Y))}var Gl=W7(P2(),1);function _8(X){let Y=Gl.useRef(X);return Gl.useEffect(()=>{Y.current=X}),Gl.useMemo(()=>(...J)=>Y.current?.(...J),[])}var rh6=W7(P2(),1);function sh6(X,Y=globalThis?.document){let J=_8(X);rh6.useEffect(()=>{let Q=(Z)=>{if(Z.key==="Escape")J(Z)};return Y.addEventListener("keydown",Q,{capture:!0}),()=>Y.removeEventListener("keydown",Q,{capture:!0})},[J,Y])}var dq6=W7(q1(),1),Z$7="DismissableLayer",lq6="dismissableLayer.update",K$7="dismissableLayer.pointerDownOutside",G$7="dismissableLayer.focusOutside",nh6,oh6=G3.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Xa=G3.forwardRef((X,Y)=>{let{disableOutsidePointerEvents:J=!1,onEscapeKeyDown:Q,onPointerDownOutside:Z,onFocusOutside:K,onInteractOutside:G,onDismiss:B,...z}=X,F=G3.useContext(oh6),[q,H]=G3.useState(null),U=q?.ownerDocument??globalThis?.document,[,O]=G3.useState({}),D=v0(Y,(k)=>H(k)),A=Array.from(F.layers),[N]=[...F.layersWithOutsidePointerEventsDisabled].slice(-1),E=A.indexOf(N),R=q?A.indexOf(q):-1,w=F.layersWithOutsidePointerEventsDisabled.size>0,$=R>=E,S=F$7((k)=>{let _=k.target,f=[...F.branches].some((x)=>x.contains(_));if(!$||f)return;if(Z?.(k),G?.(k),!k.defaultPrevented)B?.()},U),I=q$7((k)=>{let _=k.target;if([...F.branches].some((x)=>x.contains(_)))return;if(K?.(k),G?.(k),!k.defaultPrevented)B?.()},U);return sh6((k)=>{if(R!==F.layers.size-1)return;if(Q?.(k),!k.defaultPrevented&&B)k.preventDefault(),B()},U),G3.useEffect(()=>{if(!q)return;if(J){if(F.layersWithOutsidePointerEventsDisabled.size===0)nh6=U.body.style.pointerEvents,U.body.style.pointerEvents="none";F.layersWithOutsidePointerEventsDisabled.add(q)}return F.layers.add(q),ah6(),()=>{if(J&&F.layersWithOutsidePointerEventsDisabled.size===1)U.body.style.pointerEvents=nh6}},[q,U,J,F]),G3.useEffect(()=>{return()=>{if(!q)return;F.layers.delete(q),F.layersWithOutsidePointerEventsDisabled.delete(q),ah6()}},[q,F]),G3.useEffect(()=>{let k=()=>O({});return document.addEventListener(lq6,k),()=>document.removeEventListener(lq6,k)},[]),dq6.jsx(K5.div,{...z,ref:D,style:{pointerEvents:w?$?"auto":"none":void 0,...X.style},onFocusCapture:Q4(X.onFocusCapture,I.onFocusCapture),onBlurCapture:Q4(X.onBlurCapture,I.onBlurCapture),onPointerDownCapture:Q4(X.onPointerDownCapture,S.onPointerDownCapture)})});Xa.displayName=Z$7;var B$7="DismissableLayerBranch",z$7=G3.forwardRef((X,Y)=>{let J=G3.useContext(oh6),Q=G3.useRef(null),Z=v0(Y,Q);return G3.useEffect(()=>{let K=Q.current;if(K)return J.branches.add(K),()=>{J.branches.delete(K)}},[J.branches]),dq6.jsx(K5.div,{...X,ref:Z})});z$7.displayName=B$7;function F$7(X,Y=globalThis?.document){let J=_8(X),Q=G3.useRef(!1),Z=G3.useRef(()=>{});return G3.useEffect(()=>{let K=(B)=>{if(B.target&&!Q.current){let F=function(){th6(K$7,J,q,{discrete:!0})};var z=F;let q={originalEvent:B};if(B.pointerType==="touch")Y.removeEventListener("click",Z.current),Z.current=F,Y.addEventListener("click",Z.current,{once:!0});else F()}else Y.removeEventListener("click",Z.current);Q.current=!1},G=window.setTimeout(()=>{Y.addEventListener("pointerdown",K)},0);return()=>{window.clearTimeout(G),Y.removeEventListener("pointerdown",K),Y.removeEventListener("click",Z.current)}},[Y,J]),{onPointerDownCapture:()=>Q.current=!0}}function q$7(X,Y=globalThis?.document){let J=_8(X),Q=G3.useRef(!1);return G3.useEffect(()=>{let Z=(K)=>{if(K.target&&!Q.current)th6(G$7,J,{originalEvent:K},{discrete:!1})};return Y.addEventListener("focusin",Z),()=>Y.removeEventListener("focusin",Z)},[Y,J]),{onFocusCapture:()=>Q.current=!0,onBlurCapture:()=>Q.current=!1}}function ah6(){let X=new CustomEvent(lq6);document.dispatchEvent(X)}function th6(X,Y,J,{discrete:Q}){let Z=J.originalEvent.target,K=new CustomEvent(X,{bubbles:!1,cancelable:!0,detail:J});if(Y)Z.addEventListener(X,Y,{once:!0});if(Q)v56(Z,K);else Z.dispatchEvent(K)}var zJ=W7(P2(),1);var Qy6=W7(q1(),1),cq6="focusScope.autoFocusOnMount",iq6="focusScope.autoFocusOnUnmount",eh6={bubbles:!1,cancelable:!0},H$7="FocusScope",Ya=zJ.forwardRef((X,Y)=>{let{loop:J=!1,trapped:Q=!1,onMountAutoFocus:Z,onUnmountAutoFocus:K,...G}=X,[B,z]=zJ.useState(null),F=_8(Z),q=_8(K),H=zJ.useRef(null),U=v0(Y,(A)=>z(A)),O=zJ.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;zJ.useEffect(()=>{if(Q){let R=function(I){if(O.paused||!B)return;let k=I.target;if(B.contains(k))H.current=k;else iW(H.current,{select:!0})},w=function(I){if(O.paused||!B)return;let k=I.relatedTarget;if(k===null)return;if(!B.contains(k))iW(H.current,{select:!0})},$=function(I){if(document.activeElement!==document.body)return;for(let _ of I)if(_.removedNodes.length>0)iW(B)};var A=R,N=w,E=$;document.addEventListener("focusin",R),document.addEventListener("focusout",w);let S=new MutationObserver($);if(B)S.observe(B,{childList:!0,subtree:!0});return()=>{document.removeEventListener("focusin",R),document.removeEventListener("focusout",w),S.disconnect()}}},[Q,B,O.paused]),zJ.useEffect(()=>{if(B){Yy6.add(O);let A=document.activeElement;if(!B.contains(A)){let E=new CustomEvent(cq6,eh6);if(B.addEventListener(cq6,F),B.dispatchEvent(E),!E.defaultPrevented){if(W$7(A$7(Zy6(B)),{select:!0}),document.activeElement===A)iW(B)}}return()=>{B.removeEventListener(cq6,F),setTimeout(()=>{let E=new CustomEvent(iq6,eh6);if(B.addEventListener(iq6,q),B.dispatchEvent(E),!E.defaultPrevented)iW(A??document.body,{select:!0});B.removeEventListener(iq6,q),Yy6.remove(O)},0)}}},[B,F,q,O]);let D=zJ.useCallback((A)=>{if(!J&&!Q)return;if(O.paused)return;let N=A.key==="Tab"&&!A.altKey&&!A.ctrlKey&&!A.metaKey,E=document.activeElement;if(N&&E){let R=A.currentTarget,[w,$]=U$7(R);if(!(w&&$)){if(E===R)A.preventDefault()}else if(!A.shiftKey&&E===$){if(A.preventDefault(),J)iW(w,{select:!0})}else if(A.shiftKey&&E===w){if(A.preventDefault(),J)iW($,{select:!0})}}},[J,Q,O.paused]);return Qy6.jsx(K5.div,{tabIndex:-1,...G,ref:U,onKeyDown:D})});Ya.displayName=H$7;function W$7(X,{select:Y=!1}={}){let J=document.activeElement;for(let Q of X)if(iW(Q,{select:Y}),document.activeElement!==J)return}function U$7(X){let Y=Zy6(X),J=Xy6(Y,X),Q=Xy6(Y.reverse(),X);return[J,Q]}function Zy6(X){let Y=[],J=document.createTreeWalker(X,NodeFilter.SHOW_ELEMENT,{acceptNode:(Q)=>{let Z=Q.tagName==="INPUT"&&Q.type==="hidden";if(Q.disabled||Q.hidden||Z)return NodeFilter.FILTER_SKIP;return Q.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});while(J.nextNode())Y.push(J.currentNode);return Y}function Xy6(X,Y){for(let J of X)if(!M$7(J,{upTo:Y}))return J}function M$7(X,{upTo:Y}){if(getComputedStyle(X).visibility==="hidden")return!0;while(X){if(Y!==void 0&&X===Y)return!1;if(getComputedStyle(X).display==="none")return!0;X=X.parentElement}return!1}function O$7(X){return X instanceof HTMLInputElement&&"select"in X}function iW(X,{select:Y=!1}={}){if(X&&X.focus){let J=document.activeElement;if(X.focus({preventScroll:!0}),X!==J&&O$7(X)&&Y)X.select()}}var Yy6=D$7();function D$7(){let X=[];return{add(Y){let J=X[0];if(Y!==J)J?.pause();X=Jy6(X,Y),X.unshift(Y)},remove(Y){X=Jy6(X,Y),X[0]?.resume()}}}function Jy6(X,Y){let J=[...X],Q=J.indexOf(Y);if(Q!==-1)J.splice(Q,1);return J}function A$7(X){return X.filter((Y)=>Y.tagName!=="A")}var _56=W7(P2(),1),Ky6=W7(un(),1);var Gy6=W7(q1(),1),C$7="Portal",Ja=_56.forwardRef((X,Y)=>{let{container:J,...Q}=X,[Z,K]=_56.useState(!1);q9(()=>K(!0),[]);let G=J||Z&&globalThis?.document?.body;return G?Ky6.default.createPortal(Gy6.jsx(K5.div,{...Q,ref:Y}),G):null});Ja.displayName=C$7;var W9=W7(P2(),1);var By6=W7(P2(),1);function P$7(X,Y){return By6.useReducer((J,Q)=>{return Y[J][Q]??J},X)}var FJ=(X)=>{let{present:Y,children:J}=X,Q=N$7(Y),Z=typeof J==="function"?J({present:Q.isPresent}):W9.Children.only(J),K=v0(Q.ref,E$7(Z));return typeof J==="function"||Q.isPresent?W9.cloneElement(Z,{ref:K}):null};FJ.displayName="Presence";function N$7(X){let[Y,J]=W9.useState(),Q=W9.useRef(null),Z=W9.useRef(X),K=W9.useRef("none"),G=X?"mounted":"unmounted",[B,z]=P$7(G,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return W9.useEffect(()=>{let F=b56(Q.current);K.current=B==="mounted"?F:"none"},[B]),q9(()=>{let F=Q.current,q=Z.current;if(q!==X){let U=K.current,O=b56(F);if(X)z("MOUNT");else if(O==="none"||F?.display==="none")z("UNMOUNT");else if(q&&U!==O)z("ANIMATION_OUT");else z("UNMOUNT");Z.current=X}},[X,z]),q9(()=>{if(Y){let F,q=Y.ownerDocument.defaultView??window,H=(O)=>{let A=b56(Q.current).includes(CSS.escape(O.animationName));if(O.target===Y&&A){if(z("ANIMATION_END"),!Z.current){let N=Y.style.animationFillMode;Y.style.animationFillMode="forwards",F=q.setTimeout(()=>{if(Y.style.animationFillMode==="forwards")Y.style.animationFillMode=N})}}},U=(O)=>{if(O.target===Y)K.current=b56(Q.current)};return Y.addEventListener("animationstart",U),Y.addEventListener("animationcancel",H),Y.addEventListener("animationend",H),()=>{q.clearTimeout(F),Y.removeEventListener("animationstart",U),Y.removeEventListener("animationcancel",H),Y.removeEventListener("animationend",H)}}else z("ANIMATION_END")},[Y,z]),{isPresent:["mounted","unmountSuspended"].includes(B),ref:W9.useCallback((F)=>{Q.current=F?getComputedStyle(F):null,J(F)},[])}}function b56(X){return X?.animationName||"none"}function E$7(X){let Y=Object.getOwnPropertyDescriptor(X.props,"ref")?.get,J=Y&&"isReactWarning"in Y&&Y.isReactWarning;if(J)return X.ref;if(Y=Object.getOwnPropertyDescriptor(X,"ref")?.get,J=Y&&"isReactWarning"in Y&&Y.isReactWarning,J)return X.props.ref;return X.props.ref||X.ref}var Fy6=W7(P2(),1),rq6=0;function x56(){Fy6.useEffect(()=>{let X=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",X[0]??zy6()),document.body.insertAdjacentElement("beforeend",X[1]??zy6()),rq6++,()=>{if(rq6===1)document.querySelectorAll("[data-radix-focus-guard]").forEach((Y)=>Y.remove());rq6--}},[])}function zy6(){let X=document.createElement("span");return X.setAttribute("data-radix-focus-guard",""),X.tabIndex=0,X.style.outline="none",X.style.opacity="0",X.style.position="fixed",X.style.pointerEvents="none",X}var U9=function(){return U9=Object.assign||function(Y){for(var J,Q=1,Z=arguments.length;Q<Z;Q++){J=arguments[Q];for(var K in J)if(Object.prototype.hasOwnProperty.call(J,K))Y[K]=J[K]}return Y},U9.apply(this,arguments)};function f56(X,Y){var J={};for(var Q in X)if(Object.prototype.hasOwnProperty.call(X,Q)&&Y.indexOf(Q)<0)J[Q]=X[Q];if(X!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var Z=0,Q=Object.getOwnPropertySymbols(X);Z<Q.length;Z++)if(Y.indexOf(Q[Z])<0&&Object.prototype.propertyIsEnumerable.call(X,Q[Z]))J[Q[Z]]=X[Q[Z]]}return J}function qy6(X,Y,J){if(J||arguments.length===2){for(var Q=0,Z=Y.length,K;Q<Z;Q++)if(K||!(Q in Y)){if(!K)K=Array.prototype.slice.call(Y,0,Q);K[Q]=Y[Q]}}return X.concat(K||Array.prototype.slice.call(Y))}var u56=W7(P2(),1);var b8=W7(P2(),1);var OD="right-scroll-bar-position",DD="width-before-scroll-bar",sq6="with-scroll-bars-hidden",nq6="--removed-body-scroll-bar-size";function h56(X,Y){if(typeof X==="function")X(Y);else if(X)X.current=Y;return X}var Hy6=W7(P2(),1);function Wy6(X,Y){var J=Hy6.useState(function(){return{value:X,callback:Y,facade:{get current(){return J.value},set current(Q){var Z=J.value;if(Z!==Q)J.value=Q,J.callback(Q,Z)}}}})[0];return J.callback=Y,J.facade}var y56=W7(P2(),1);var R$7=typeof window<"u"?y56.useLayoutEffect:y56.useEffect,Uy6=new WeakMap;function aq6(X,Y){var J=Wy6(Y||null,function(Q){return X.forEach(function(Z){return h56(Z,Q)})});return R$7(function(){var Q=Uy6.get(J);if(Q){var Z=new Set(Q),K=new Set(X),G=J.current;Z.forEach(function(B){if(!K.has(B))h56(B,null)}),K.forEach(function(B){if(!Z.has(B))h56(B,G)})}Uy6.set(J,X)},[X]),J}function V$7(X){return X}function w$7(X,Y){if(Y===void 0)Y=V$7;var J=[],Q=!1,Z={read:function(){if(Q)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");if(J.length)return J[J.length-1];return X},useMedium:function(K){var G=Y(K,Q);return J.push(G),function(){J=J.filter(function(B){return B!==G})}},assignSyncMedium:function(K){Q=!0;while(J.length){var G=J;J=[],G.forEach(K)}J={push:function(B){return K(B)},filter:function(){return J}}},assignMedium:function(K){Q=!0;var G=[];if(J.length){var B=J;J=[],B.forEach(K),G=J}var z=function(){var q=G;G=[],q.forEach(K)},F=function(){return Promise.resolve().then(z)};F(),J={push:function(q){G.push(q),F()},filter:function(q){return G=G.filter(q),J}}}};return Z}function oq6(X){if(X===void 0)X={};var Y=w$7(null);return Y.options=U9({async:!0,ssr:!1},X),Y}var My6=W7(P2(),1),Oy6=function(X){var Y=X.sideCar,J=f56(X,["sideCar"]);if(!Y)throw Error("Sidecar: please provide `sideCar` property to import the right car");var Q=Y.read();if(!Q)throw Error("Sidecar medium not found");return My6.createElement(Q,U9({},J))};Oy6.isSideCarExport=!0;function tq6(X,Y){return X.useMedium(Y),Oy6}var m56=oq6();var eq6=function(){return},Qa=b8.forwardRef(function(X,Y){var J=b8.useRef(null),Q=b8.useState({onScrollCapture:eq6,onWheelCapture:eq6,onTouchMoveCapture:eq6}),Z=Q[0],K=Q[1],G=X.forwardProps,B=X.children,z=X.className,F=X.removeScrollBar,q=X.enabled,H=X.shards,U=X.sideCar,O=X.noRelative,D=X.noIsolation,A=X.inert,N=X.allowPinchZoom,E=X.as,R=E===void 0?"div":E,w=X.gapMode,$=f56(X,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),S=U,I=aq6([J,Y]),k=U9(U9({},$),Z);return b8.createElement(b8.Fragment,null,q&&b8.createElement(S,{sideCar:m56,removeScrollBar:F,shards:H,noRelative:O,noIsolation:D,inert:A,setCallbacks:K,allowPinchZoom:!!N,lockRef:J,gapMode:w}),G?b8.cloneElement(b8.Children.only(B),U9(U9({},k),{ref:I})):b8.createElement(R,U9({},k,{className:z,ref:I}),B))});Qa.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};Qa.classNames={fullWidth:DD,zeroRight:OD};var _0=W7(P2(),1);var zl=W7(P2(),1);var Cy6=W7(P2(),1);var Dy6;var Ay6=function(){if(Dy6)return Dy6;if(typeof __webpack_nonce__<"u")return __webpack_nonce__;return};function T$7(){if(!document)return null;var X=document.createElement("style");X.type="text/css";var Y=Ay6();if(Y)X.setAttribute("nonce",Y);return X}function S$7(X,Y){if(X.styleSheet)X.styleSheet.cssText=Y;else X.appendChild(document.createTextNode(Y))}function I$7(X){var Y=document.head||document.getElementsByTagName("head")[0];Y.appendChild(X)}var XH6=function(){var X=0,Y=null;return{add:function(J){if(X==0){if(Y=T$7())S$7(Y,J),I$7(Y)}X++},remove:function(){if(X--,!X&&Y)Y.parentNode&&Y.parentNode.removeChild(Y),Y=null}}};var YH6=function(){var X=XH6();return function(Y,J){Cy6.useEffect(function(){return X.add(Y),function(){X.remove()}},[Y&&J])}};var Za=function(){var X=YH6(),Y=function(J){var{styles:Q,dynamic:Z}=J;return X(Q,Z),null};return Y};var $$7={left:0,top:0,right:0,gap:0},JH6=function(X){return parseInt(X||"",10)||0},L$7=function(X){var Y=window.getComputedStyle(document.body),J=Y[X==="padding"?"paddingLeft":"marginLeft"],Q=Y[X==="padding"?"paddingTop":"marginTop"],Z=Y[X==="padding"?"paddingRight":"marginRight"];return[JH6(J),JH6(Q),JH6(Z)]},QH6=function(X){if(X===void 0)X="margin";if(typeof window>"u")return $$7;var Y=L$7(X),J=document.documentElement.clientWidth,Q=window.innerWidth;return{left:Y[0],top:Y[1],right:Y[2],gap:Math.max(0,Q-J+Y[2]-Y[0])}};var j$7=Za(),Bl="data-scroll-locked",k$7=function(X,Y,J,Q){var{left:Z,top:K,right:G,gap:B}=X;if(J===void 0)J="margin";return`
|
|
3046
|
+
${J}`;if(!(await fetch("/notes/save",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:Z,content:K})})).ok)throw Error("Failed to save note");if(!(await fetch("/local/git/commit",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:`docs: save AI ${Y} for ${X.exerciseName}`})})).ok)throw Error("Failed to commit note");if(!(await fetch("/local/git/sync",{method:"POST"})).ok)throw Error("Failed to push note");console.log("[AI] Synced to GitHub:",Z)}catch(Q){console.error("[AI] GitHub Sync failed:",Q)}}var HD=j0(jh6,(X)=>{let Y=X.data||{};if(Y.error)return{};return Y}),WD=j0(kh6,(X)=>X.data||null),bh6=j0(on,(X)=>X.data?.markdown||null),xh6=j0(xq6,(X)=>X.data||null),fh6=j0(dI7,(X)=>X.data||{}),hq6=j0(HD,(X)=>Object.values(X).reduce((Y,J)=>Y+(Array.isArray(J)?J.length:0),0)),yq6=j0(eZ,(X)=>Object.values(X).filter((Y)=>Y==="pass").length),hh6=j0([hq6,yq6],(X,Y)=>X>0?Math.round(Y/X*100):0);var yh6=(X)=>fq6.set(X);var en=(X)=>{if(_1.set(X),OX.set(null),TQ.set(!1),!X)pW.set(""),tn.set("")},mq6=()=>jh6.revalidate(),gq6=()=>kh6.revalidate(),L56=async()=>{let X=_1.get();if(!X)return;lW.set(!0),nn.set("output");try{let J=await(await fetch("/exercises/run",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({exerciseName:X.exerciseName,id:X.id,module:X.module,entryPoint:X.entryPoint})})).json();pW.set(J.rawOutput||J.output||""),tn.set(J.friendlyOutput||"");let Q=J.success?"pass":"fail";if(eZ.setKey(X.id,Q),J.success){if(J.progress)E56("/progress",J.progress);else gq6();mq6()}}catch(Y){pW.set("Failed to run tests."),eZ.setKey(X.id,"fail")}finally{lW.set(!1)}};WD.subscribe((X)=>{if(X&&X.exercises){let Y={};for(let[J,Q]of Object.entries(X.exercises))Y[J]=Q.status;eZ.set(Y)}});_1.subscribe((X)=>{if(X&&X.module)S56.set(X.module)});function mh6(X,Y={}){let J=K3();J.routes=Object.keys(X).map((z)=>{let F=X[z];if(typeof F!=="string")return[z,...[F].flat()];F=F.replace(/\/$/g,"")||"/";let q=F.replace(/[\s!#$()+,.:<=?[\\\]^{|}]/g,"\\$&").replace(/\/\\:(\w+)\\\?/g,"(?:/(?<$1>(?<=/)[^/]+))?").replace(/\/\\:(\w+)/g,"/(?<$1>[^/]+)");return[z,RegExp("^"+q+"$","i"),null,F]});let Q,Z=(z)=>{let F=new URL(z.replace(/#$/,""),"http://a"),q=F.pathname+F.search+F.hash;if(Q===q)return!1;Q=q;let H=Y.search?F.pathname+F.search:F.pathname;H=H.replace(/\/($|\?)/,"$1")||"/";for(let[U,O,D]of J.routes){let A=H.match(O);if(A)return{hash:F.hash,params:D?D(...A.slice(1)):Object.keys({...A.groups}).reduce((N,E)=>{return N[E]=A.groups[E]?decodeURIComponent(A.groups[E]):"",N},{}),path:H,route:U,search:Object.fromEntries(F.searchParams)}}},K=(z)=>{let F=z.target.closest("a");if(F&&z.button===0&&F.target!=="_blank"&&F.origin===location.origin&&F.rel!=="external"&&F.target!=="_self"&&!F.download&&!z.altKey&&!z.metaKey&&!z.ctrlKey&&!z.shiftKey&&!z.defaultPrevented){z.preventDefault();let q=location.hash!==F.hash;if(J.open(F.href),q){if(location.hash=F.hash,F.hash===""||F.hash==="#")window.dispatchEvent(new HashChangeEvent("hashchange"))}}},G=J.set;delete J.set;let B=()=>{let z=Z(location.href);if(z!==!1)G(z)};if(typeof window<"u"&&typeof location<"u")zD(J,()=>{let z=Z(location.href);if(z!==!1)G(z);if(Y.links!==!1)document.body.addEventListener("click",K);return window.addEventListener("popstate",B),window.addEventListener("hashchange",B),()=>{Q=void 0,document.body.removeEventListener("click",K),window.removeEventListener("popstate",B),window.removeEventListener("hashchange",B)}});else G(Z("/"));return J.open=(z,F)=>{let q=Z(z);if(q!==!1){if(typeof history<"u")if(F)history.replaceState(null,null,z);else history.pushState(null,null,z);G(q)}},J}var KJ=mh6({home:"/",editor:"/editor",editorModule:"/editor/:moduleId",editorExercise:"/editor/:moduleId/:exerciseId",map:"/map",git:"/git",studio:"/studio"});var M9={};u2(M9,{createDialogScope:()=>i$7,WarningProvider:()=>e$7,Trigger:()=>QL7,Title:()=>qa,Root:()=>Ga,Portal:()=>Ba,Overlay:()=>za,DialogTrigger:()=>FH6,DialogTitle:()=>OH6,DialogPortal:()=>HH6,DialogOverlay:()=>WH6,DialogDescription:()=>DH6,DialogContent:()=>UH6,DialogClose:()=>AH6,Dialog:()=>zH6,Description:()=>Ha,Content:()=>Fa,Close:()=>ZL7});var O0=W7(P2(),1);var EH5=!!(typeof window<"u"&&window.document&&window.document.createElement);function Q4(X,Y,{checkForDefaultPrevented:J=!0}={}){return function(Z){if(X?.(Z),J===!1||!Z.defaultPrevented)return Y?.(Z)}}var uh6=W7(P2(),1);function gh6(X,Y){if(typeof X==="function")return X(Y);else if(X!==null&&X!==void 0)X.current=Y}function UD(...X){return(Y)=>{let J=!1,Q=X.map((Z)=>{let K=gh6(Z,Y);if(!J&&typeof K=="function")J=!0;return K});if(J)return()=>{for(let Z=0;Z<Q.length;Z++){let K=Q[Z];if(typeof K=="function")K();else gh6(X[Z],null)}}}}function v0(...X){return uh6.useCallback(UD(...X),X)}var GJ=W7(P2(),1),uq6=W7(q1(),1);function ph6(X,Y){let J=GJ.createContext(Y),Q=(K)=>{let{children:G,...B}=K,z=GJ.useMemo(()=>B,Object.values(B));return uq6.jsx(J.Provider,{value:z,children:G})};Q.displayName=X+"Provider";function Z(K){let G=GJ.useContext(J);if(G)return G;if(Y!==void 0)return Y;throw Error(`\`${K}\` must be used within \`${X}\``)}return[Q,Z]}function F9(X,Y=[]){let J=[];function Q(K,G){let B=GJ.createContext(G),z=J.length;J=[...J,G];let F=(H)=>{let{scope:U,children:O,...D}=H,A=U?.[X]?.[z]||B,N=GJ.useMemo(()=>D,Object.values(D));return uq6.jsx(A.Provider,{value:N,children:O})};F.displayName=K+"Provider";function q(H,U){let O=U?.[X]?.[z]||B,D=GJ.useContext(O);if(D)return D;if(G!==void 0)return G;throw Error(`\`${H}\` must be used within \`${K}\``)}return[F,q]}let Z=()=>{let K=J.map((G)=>{return GJ.createContext(G)});return function(B){let z=B?.[X]||K;return GJ.useMemo(()=>({[`__scope${X}`]:{...B,[X]:z}}),[B,z])}};return Z.scopeName=X,[Q,iI7(Z,...Y)]}function iI7(...X){let Y=X[0];if(X.length===1)return Y;let J=()=>{let Q=X.map((Z)=>({useScope:Z(),scopeName:Z.scopeName}));return function(K){let G=Q.reduce((B,{useScope:z,scopeName:F})=>{let H=z(K)[`__scope${F}`];return{...B,...H}},{});return GJ.useMemo(()=>({[`__scope${Y.scopeName}`]:G}),[G])}};return J.scopeName=Y.scopeName,J}var pq6=W7(P2(),1);var lh6=W7(P2(),1),q9=globalThis?.document?lh6.useLayoutEffect:()=>{};var rI7=pq6[" useId ".trim().toString()]||(()=>{return}),sI7=0;function H9(X){let[Y,J]=pq6.useState(rI7());return q9(()=>{if(!X)J((Q)=>Q??String(sI7++))},[X]),X||(Y?`radix-${Y}`:"")}var BJ=W7(P2(),1);var j56=W7(P2(),1);var nI7=BJ[" useInsertionEffect ".trim().toString()]||q9;function cW({prop:X,defaultProp:Y,onChange:J=()=>{},caller:Q}){let[Z,K,G]=aI7({defaultProp:Y,onChange:J}),B=X!==void 0,z=B?X:Z;{let q=BJ.useRef(X!==void 0);BJ.useEffect(()=>{let H=q.current;if(H!==B)console.warn(`${Q} is changing from ${H?"controlled":"uncontrolled"} to ${B?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`);q.current=B},[B,Q])}let F=BJ.useCallback((q)=>{if(B){let H=oI7(q)?q(X):q;if(H!==X)G.current?.(H)}else K(q)},[B,X,K,G]);return[z,F]}function aI7({defaultProp:X,onChange:Y}){let[J,Q]=BJ.useState(X),Z=BJ.useRef(J),K=BJ.useRef(Y);return nI7(()=>{K.current=Y},[Y]),BJ.useEffect(()=>{if(Z.current!==J)K.current?.(J),Z.current=J},[J,Z]),[J,Q,K]}function oI7(X){return typeof X==="function"}var bH5=Symbol("RADIX:SYNC_STATE");var G3=W7(P2(),1);var dh6=W7(P2(),1),ch6=W7(un(),1);var H1=W7(P2(),1);var k56=W7(q1(),1);function qq(X){let Y=tI7(X),J=H1.forwardRef((Q,Z)=>{let{children:K,...G}=Q,B=H1.Children.toArray(K),z=B.find(X$7);if(z){let F=z.props.children,q=B.map((H)=>{if(H===z){if(H1.Children.count(F)>1)return H1.Children.only(null);return H1.isValidElement(F)?F.props.children:null}else return H});return k56.jsx(Y,{...G,ref:Z,children:H1.isValidElement(F)?H1.cloneElement(F,void 0,q):null})}return k56.jsx(Y,{...G,ref:Z,children:K})});return J.displayName=`${X}.Slot`,J}function tI7(X){let Y=H1.forwardRef((J,Q)=>{let{children:Z,...K}=J;if(H1.isValidElement(Z)){let G=J$7(Z),B=Y$7(K,Z.props);if(Z.type!==H1.Fragment)B.ref=Q?UD(Q,G):G;return H1.cloneElement(Z,B)}return H1.Children.count(Z)>1?H1.Children.only(null):null});return Y.displayName=`${X}.SlotClone`,Y}var eI7=Symbol("radix.slottable");function X$7(X){return H1.isValidElement(X)&&typeof X.type==="function"&&"__radixId"in X.type&&X.type.__radixId===eI7}function Y$7(X,Y){let J={...Y};for(let Q in Y){let Z=X[Q],K=Y[Q];if(/^on[A-Z]/.test(Q)){if(Z&&K)J[Q]=(...B)=>{let z=K(...B);return Z(...B),z};else if(Z)J[Q]=Z}else if(Q==="style")J[Q]={...Z,...K};else if(Q==="className")J[Q]=[Z,K].filter(Boolean).join(" ")}return{...X,...J}}function J$7(X){let Y=Object.getOwnPropertyDescriptor(X.props,"ref")?.get,J=Y&&"isReactWarning"in Y&&Y.isReactWarning;if(J)return X.ref;if(Y=Object.getOwnPropertyDescriptor(X,"ref")?.get,J=Y&&"isReactWarning"in Y&&Y.isReactWarning,J)return X.props.ref;return X.props.ref||X.ref}var ih6=W7(q1(),1),Q$7=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],K5=Q$7.reduce((X,Y)=>{let J=qq(`Primitive.${Y}`),Q=dh6.forwardRef((Z,K)=>{let{asChild:G,...B}=Z,z=G?J:Y;if(typeof window<"u")window[Symbol.for("radix-ui")]=!0;return ih6.jsx(z,{...B,ref:K})});return Q.displayName=`Primitive.${Y}`,{...X,[Y]:Q}},{});function v56(X,Y){if(X)ch6.flushSync(()=>X.dispatchEvent(Y))}var Gl=W7(P2(),1);function _8(X){let Y=Gl.useRef(X);return Gl.useEffect(()=>{Y.current=X}),Gl.useMemo(()=>(...J)=>Y.current?.(...J),[])}var rh6=W7(P2(),1);function sh6(X,Y=globalThis?.document){let J=_8(X);rh6.useEffect(()=>{let Q=(Z)=>{if(Z.key==="Escape")J(Z)};return Y.addEventListener("keydown",Q,{capture:!0}),()=>Y.removeEventListener("keydown",Q,{capture:!0})},[J,Y])}var dq6=W7(q1(),1),Z$7="DismissableLayer",lq6="dismissableLayer.update",K$7="dismissableLayer.pointerDownOutside",G$7="dismissableLayer.focusOutside",nh6,oh6=G3.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Xa=G3.forwardRef((X,Y)=>{let{disableOutsidePointerEvents:J=!1,onEscapeKeyDown:Q,onPointerDownOutside:Z,onFocusOutside:K,onInteractOutside:G,onDismiss:B,...z}=X,F=G3.useContext(oh6),[q,H]=G3.useState(null),U=q?.ownerDocument??globalThis?.document,[,O]=G3.useState({}),D=v0(Y,(k)=>H(k)),A=Array.from(F.layers),[N]=[...F.layersWithOutsidePointerEventsDisabled].slice(-1),E=A.indexOf(N),R=q?A.indexOf(q):-1,w=F.layersWithOutsidePointerEventsDisabled.size>0,$=R>=E,S=F$7((k)=>{let _=k.target,f=[...F.branches].some((x)=>x.contains(_));if(!$||f)return;if(Z?.(k),G?.(k),!k.defaultPrevented)B?.()},U),I=q$7((k)=>{let _=k.target;if([...F.branches].some((x)=>x.contains(_)))return;if(K?.(k),G?.(k),!k.defaultPrevented)B?.()},U);return sh6((k)=>{if(R!==F.layers.size-1)return;if(Q?.(k),!k.defaultPrevented&&B)k.preventDefault(),B()},U),G3.useEffect(()=>{if(!q)return;if(J){if(F.layersWithOutsidePointerEventsDisabled.size===0)nh6=U.body.style.pointerEvents,U.body.style.pointerEvents="none";F.layersWithOutsidePointerEventsDisabled.add(q)}return F.layers.add(q),ah6(),()=>{if(J&&F.layersWithOutsidePointerEventsDisabled.size===1)U.body.style.pointerEvents=nh6}},[q,U,J,F]),G3.useEffect(()=>{return()=>{if(!q)return;F.layers.delete(q),F.layersWithOutsidePointerEventsDisabled.delete(q),ah6()}},[q,F]),G3.useEffect(()=>{let k=()=>O({});return document.addEventListener(lq6,k),()=>document.removeEventListener(lq6,k)},[]),dq6.jsx(K5.div,{...z,ref:D,style:{pointerEvents:w?$?"auto":"none":void 0,...X.style},onFocusCapture:Q4(X.onFocusCapture,I.onFocusCapture),onBlurCapture:Q4(X.onBlurCapture,I.onBlurCapture),onPointerDownCapture:Q4(X.onPointerDownCapture,S.onPointerDownCapture)})});Xa.displayName=Z$7;var B$7="DismissableLayerBranch",z$7=G3.forwardRef((X,Y)=>{let J=G3.useContext(oh6),Q=G3.useRef(null),Z=v0(Y,Q);return G3.useEffect(()=>{let K=Q.current;if(K)return J.branches.add(K),()=>{J.branches.delete(K)}},[J.branches]),dq6.jsx(K5.div,{...X,ref:Z})});z$7.displayName=B$7;function F$7(X,Y=globalThis?.document){let J=_8(X),Q=G3.useRef(!1),Z=G3.useRef(()=>{});return G3.useEffect(()=>{let K=(B)=>{if(B.target&&!Q.current){let F=function(){th6(K$7,J,q,{discrete:!0})};var z=F;let q={originalEvent:B};if(B.pointerType==="touch")Y.removeEventListener("click",Z.current),Z.current=F,Y.addEventListener("click",Z.current,{once:!0});else F()}else Y.removeEventListener("click",Z.current);Q.current=!1},G=window.setTimeout(()=>{Y.addEventListener("pointerdown",K)},0);return()=>{window.clearTimeout(G),Y.removeEventListener("pointerdown",K),Y.removeEventListener("click",Z.current)}},[Y,J]),{onPointerDownCapture:()=>Q.current=!0}}function q$7(X,Y=globalThis?.document){let J=_8(X),Q=G3.useRef(!1);return G3.useEffect(()=>{let Z=(K)=>{if(K.target&&!Q.current)th6(G$7,J,{originalEvent:K},{discrete:!1})};return Y.addEventListener("focusin",Z),()=>Y.removeEventListener("focusin",Z)},[Y,J]),{onFocusCapture:()=>Q.current=!0,onBlurCapture:()=>Q.current=!1}}function ah6(){let X=new CustomEvent(lq6);document.dispatchEvent(X)}function th6(X,Y,J,{discrete:Q}){let Z=J.originalEvent.target,K=new CustomEvent(X,{bubbles:!1,cancelable:!0,detail:J});if(Y)Z.addEventListener(X,Y,{once:!0});if(Q)v56(Z,K);else Z.dispatchEvent(K)}var zJ=W7(P2(),1);var Qy6=W7(q1(),1),cq6="focusScope.autoFocusOnMount",iq6="focusScope.autoFocusOnUnmount",eh6={bubbles:!1,cancelable:!0},H$7="FocusScope",Ya=zJ.forwardRef((X,Y)=>{let{loop:J=!1,trapped:Q=!1,onMountAutoFocus:Z,onUnmountAutoFocus:K,...G}=X,[B,z]=zJ.useState(null),F=_8(Z),q=_8(K),H=zJ.useRef(null),U=v0(Y,(A)=>z(A)),O=zJ.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;zJ.useEffect(()=>{if(Q){let R=function(I){if(O.paused||!B)return;let k=I.target;if(B.contains(k))H.current=k;else iW(H.current,{select:!0})},w=function(I){if(O.paused||!B)return;let k=I.relatedTarget;if(k===null)return;if(!B.contains(k))iW(H.current,{select:!0})},$=function(I){if(document.activeElement!==document.body)return;for(let _ of I)if(_.removedNodes.length>0)iW(B)};var A=R,N=w,E=$;document.addEventListener("focusin",R),document.addEventListener("focusout",w);let S=new MutationObserver($);if(B)S.observe(B,{childList:!0,subtree:!0});return()=>{document.removeEventListener("focusin",R),document.removeEventListener("focusout",w),S.disconnect()}}},[Q,B,O.paused]),zJ.useEffect(()=>{if(B){Yy6.add(O);let A=document.activeElement;if(!B.contains(A)){let E=new CustomEvent(cq6,eh6);if(B.addEventListener(cq6,F),B.dispatchEvent(E),!E.defaultPrevented){if(W$7(A$7(Zy6(B)),{select:!0}),document.activeElement===A)iW(B)}}return()=>{B.removeEventListener(cq6,F),setTimeout(()=>{let E=new CustomEvent(iq6,eh6);if(B.addEventListener(iq6,q),B.dispatchEvent(E),!E.defaultPrevented)iW(A??document.body,{select:!0});B.removeEventListener(iq6,q),Yy6.remove(O)},0)}}},[B,F,q,O]);let D=zJ.useCallback((A)=>{if(!J&&!Q)return;if(O.paused)return;let N=A.key==="Tab"&&!A.altKey&&!A.ctrlKey&&!A.metaKey,E=document.activeElement;if(N&&E){let R=A.currentTarget,[w,$]=U$7(R);if(!(w&&$)){if(E===R)A.preventDefault()}else if(!A.shiftKey&&E===$){if(A.preventDefault(),J)iW(w,{select:!0})}else if(A.shiftKey&&E===w){if(A.preventDefault(),J)iW($,{select:!0})}}},[J,Q,O.paused]);return Qy6.jsx(K5.div,{tabIndex:-1,...G,ref:U,onKeyDown:D})});Ya.displayName=H$7;function W$7(X,{select:Y=!1}={}){let J=document.activeElement;for(let Q of X)if(iW(Q,{select:Y}),document.activeElement!==J)return}function U$7(X){let Y=Zy6(X),J=Xy6(Y,X),Q=Xy6(Y.reverse(),X);return[J,Q]}function Zy6(X){let Y=[],J=document.createTreeWalker(X,NodeFilter.SHOW_ELEMENT,{acceptNode:(Q)=>{let Z=Q.tagName==="INPUT"&&Q.type==="hidden";if(Q.disabled||Q.hidden||Z)return NodeFilter.FILTER_SKIP;return Q.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});while(J.nextNode())Y.push(J.currentNode);return Y}function Xy6(X,Y){for(let J of X)if(!M$7(J,{upTo:Y}))return J}function M$7(X,{upTo:Y}){if(getComputedStyle(X).visibility==="hidden")return!0;while(X){if(Y!==void 0&&X===Y)return!1;if(getComputedStyle(X).display==="none")return!0;X=X.parentElement}return!1}function O$7(X){return X instanceof HTMLInputElement&&"select"in X}function iW(X,{select:Y=!1}={}){if(X&&X.focus){let J=document.activeElement;if(X.focus({preventScroll:!0}),X!==J&&O$7(X)&&Y)X.select()}}var Yy6=D$7();function D$7(){let X=[];return{add(Y){let J=X[0];if(Y!==J)J?.pause();X=Jy6(X,Y),X.unshift(Y)},remove(Y){X=Jy6(X,Y),X[0]?.resume()}}}function Jy6(X,Y){let J=[...X],Q=J.indexOf(Y);if(Q!==-1)J.splice(Q,1);return J}function A$7(X){return X.filter((Y)=>Y.tagName!=="A")}var _56=W7(P2(),1),Ky6=W7(un(),1);var Gy6=W7(q1(),1),C$7="Portal",Ja=_56.forwardRef((X,Y)=>{let{container:J,...Q}=X,[Z,K]=_56.useState(!1);q9(()=>K(!0),[]);let G=J||Z&&globalThis?.document?.body;return G?Ky6.default.createPortal(Gy6.jsx(K5.div,{...Q,ref:Y}),G):null});Ja.displayName=C$7;var W9=W7(P2(),1);var By6=W7(P2(),1);function P$7(X,Y){return By6.useReducer((J,Q)=>{return Y[J][Q]??J},X)}var FJ=(X)=>{let{present:Y,children:J}=X,Q=N$7(Y),Z=typeof J==="function"?J({present:Q.isPresent}):W9.Children.only(J),K=v0(Q.ref,E$7(Z));return typeof J==="function"||Q.isPresent?W9.cloneElement(Z,{ref:K}):null};FJ.displayName="Presence";function N$7(X){let[Y,J]=W9.useState(),Q=W9.useRef(null),Z=W9.useRef(X),K=W9.useRef("none"),G=X?"mounted":"unmounted",[B,z]=P$7(G,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return W9.useEffect(()=>{let F=b56(Q.current);K.current=B==="mounted"?F:"none"},[B]),q9(()=>{let F=Q.current,q=Z.current;if(q!==X){let U=K.current,O=b56(F);if(X)z("MOUNT");else if(O==="none"||F?.display==="none")z("UNMOUNT");else if(q&&U!==O)z("ANIMATION_OUT");else z("UNMOUNT");Z.current=X}},[X,z]),q9(()=>{if(Y){let F,q=Y.ownerDocument.defaultView??window,H=(O)=>{let A=b56(Q.current).includes(CSS.escape(O.animationName));if(O.target===Y&&A){if(z("ANIMATION_END"),!Z.current){let N=Y.style.animationFillMode;Y.style.animationFillMode="forwards",F=q.setTimeout(()=>{if(Y.style.animationFillMode==="forwards")Y.style.animationFillMode=N})}}},U=(O)=>{if(O.target===Y)K.current=b56(Q.current)};return Y.addEventListener("animationstart",U),Y.addEventListener("animationcancel",H),Y.addEventListener("animationend",H),()=>{q.clearTimeout(F),Y.removeEventListener("animationstart",U),Y.removeEventListener("animationcancel",H),Y.removeEventListener("animationend",H)}}else z("ANIMATION_END")},[Y,z]),{isPresent:["mounted","unmountSuspended"].includes(B),ref:W9.useCallback((F)=>{Q.current=F?getComputedStyle(F):null,J(F)},[])}}function b56(X){return X?.animationName||"none"}function E$7(X){let Y=Object.getOwnPropertyDescriptor(X.props,"ref")?.get,J=Y&&"isReactWarning"in Y&&Y.isReactWarning;if(J)return X.ref;if(Y=Object.getOwnPropertyDescriptor(X,"ref")?.get,J=Y&&"isReactWarning"in Y&&Y.isReactWarning,J)return X.props.ref;return X.props.ref||X.ref}var Fy6=W7(P2(),1),rq6=0;function x56(){Fy6.useEffect(()=>{let X=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",X[0]??zy6()),document.body.insertAdjacentElement("beforeend",X[1]??zy6()),rq6++,()=>{if(rq6===1)document.querySelectorAll("[data-radix-focus-guard]").forEach((Y)=>Y.remove());rq6--}},[])}function zy6(){let X=document.createElement("span");return X.setAttribute("data-radix-focus-guard",""),X.tabIndex=0,X.style.outline="none",X.style.opacity="0",X.style.position="fixed",X.style.pointerEvents="none",X}var U9=function(){return U9=Object.assign||function(Y){for(var J,Q=1,Z=arguments.length;Q<Z;Q++){J=arguments[Q];for(var K in J)if(Object.prototype.hasOwnProperty.call(J,K))Y[K]=J[K]}return Y},U9.apply(this,arguments)};function f56(X,Y){var J={};for(var Q in X)if(Object.prototype.hasOwnProperty.call(X,Q)&&Y.indexOf(Q)<0)J[Q]=X[Q];if(X!=null&&typeof Object.getOwnPropertySymbols==="function"){for(var Z=0,Q=Object.getOwnPropertySymbols(X);Z<Q.length;Z++)if(Y.indexOf(Q[Z])<0&&Object.prototype.propertyIsEnumerable.call(X,Q[Z]))J[Q[Z]]=X[Q[Z]]}return J}function qy6(X,Y,J){if(J||arguments.length===2){for(var Q=0,Z=Y.length,K;Q<Z;Q++)if(K||!(Q in Y)){if(!K)K=Array.prototype.slice.call(Y,0,Q);K[Q]=Y[Q]}}return X.concat(K||Array.prototype.slice.call(Y))}var u56=W7(P2(),1);var b8=W7(P2(),1);var OD="right-scroll-bar-position",DD="width-before-scroll-bar",sq6="with-scroll-bars-hidden",nq6="--removed-body-scroll-bar-size";function h56(X,Y){if(typeof X==="function")X(Y);else if(X)X.current=Y;return X}var Hy6=W7(P2(),1);function Wy6(X,Y){var J=Hy6.useState(function(){return{value:X,callback:Y,facade:{get current(){return J.value},set current(Q){var Z=J.value;if(Z!==Q)J.value=Q,J.callback(Q,Z)}}}})[0];return J.callback=Y,J.facade}var y56=W7(P2(),1);var R$7=typeof window<"u"?y56.useLayoutEffect:y56.useEffect,Uy6=new WeakMap;function aq6(X,Y){var J=Wy6(Y||null,function(Q){return X.forEach(function(Z){return h56(Z,Q)})});return R$7(function(){var Q=Uy6.get(J);if(Q){var Z=new Set(Q),K=new Set(X),G=J.current;Z.forEach(function(B){if(!K.has(B))h56(B,null)}),K.forEach(function(B){if(!Z.has(B))h56(B,G)})}Uy6.set(J,X)},[X]),J}function V$7(X){return X}function w$7(X,Y){if(Y===void 0)Y=V$7;var J=[],Q=!1,Z={read:function(){if(Q)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");if(J.length)return J[J.length-1];return X},useMedium:function(K){var G=Y(K,Q);return J.push(G),function(){J=J.filter(function(B){return B!==G})}},assignSyncMedium:function(K){Q=!0;while(J.length){var G=J;J=[],G.forEach(K)}J={push:function(B){return K(B)},filter:function(){return J}}},assignMedium:function(K){Q=!0;var G=[];if(J.length){var B=J;J=[],B.forEach(K),G=J}var z=function(){var q=G;G=[],q.forEach(K)},F=function(){return Promise.resolve().then(z)};F(),J={push:function(q){G.push(q),F()},filter:function(q){return G=G.filter(q),J}}}};return Z}function oq6(X){if(X===void 0)X={};var Y=w$7(null);return Y.options=U9({async:!0,ssr:!1},X),Y}var My6=W7(P2(),1),Oy6=function(X){var Y=X.sideCar,J=f56(X,["sideCar"]);if(!Y)throw Error("Sidecar: please provide `sideCar` property to import the right car");var Q=Y.read();if(!Q)throw Error("Sidecar medium not found");return My6.createElement(Q,U9({},J))};Oy6.isSideCarExport=!0;function tq6(X,Y){return X.useMedium(Y),Oy6}var m56=oq6();var eq6=function(){return},Qa=b8.forwardRef(function(X,Y){var J=b8.useRef(null),Q=b8.useState({onScrollCapture:eq6,onWheelCapture:eq6,onTouchMoveCapture:eq6}),Z=Q[0],K=Q[1],G=X.forwardProps,B=X.children,z=X.className,F=X.removeScrollBar,q=X.enabled,H=X.shards,U=X.sideCar,O=X.noRelative,D=X.noIsolation,A=X.inert,N=X.allowPinchZoom,E=X.as,R=E===void 0?"div":E,w=X.gapMode,$=f56(X,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),S=U,I=aq6([J,Y]),k=U9(U9({},$),Z);return b8.createElement(b8.Fragment,null,q&&b8.createElement(S,{sideCar:m56,removeScrollBar:F,shards:H,noRelative:O,noIsolation:D,inert:A,setCallbacks:K,allowPinchZoom:!!N,lockRef:J,gapMode:w}),G?b8.cloneElement(b8.Children.only(B),U9(U9({},k),{ref:I})):b8.createElement(R,U9({},k,{className:z,ref:I}),B))});Qa.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1};Qa.classNames={fullWidth:DD,zeroRight:OD};var _0=W7(P2(),1);var zl=W7(P2(),1);var Cy6=W7(P2(),1);var Dy6;var Ay6=function(){if(Dy6)return Dy6;if(typeof __webpack_nonce__<"u")return __webpack_nonce__;return};function T$7(){if(!document)return null;var X=document.createElement("style");X.type="text/css";var Y=Ay6();if(Y)X.setAttribute("nonce",Y);return X}function S$7(X,Y){if(X.styleSheet)X.styleSheet.cssText=Y;else X.appendChild(document.createTextNode(Y))}function I$7(X){var Y=document.head||document.getElementsByTagName("head")[0];Y.appendChild(X)}var XH6=function(){var X=0,Y=null;return{add:function(J){if(X==0){if(Y=T$7())S$7(Y,J),I$7(Y)}X++},remove:function(){if(X--,!X&&Y)Y.parentNode&&Y.parentNode.removeChild(Y),Y=null}}};var YH6=function(){var X=XH6();return function(Y,J){Cy6.useEffect(function(){return X.add(Y),function(){X.remove()}},[Y&&J])}};var Za=function(){var X=YH6(),Y=function(J){var{styles:Q,dynamic:Z}=J;return X(Q,Z),null};return Y};var $$7={left:0,top:0,right:0,gap:0},JH6=function(X){return parseInt(X||"",10)||0},L$7=function(X){var Y=window.getComputedStyle(document.body),J=Y[X==="padding"?"paddingLeft":"marginLeft"],Q=Y[X==="padding"?"paddingTop":"marginTop"],Z=Y[X==="padding"?"paddingRight":"marginRight"];return[JH6(J),JH6(Q),JH6(Z)]},QH6=function(X){if(X===void 0)X="margin";if(typeof window>"u")return $$7;var Y=L$7(X),J=document.documentElement.clientWidth,Q=window.innerWidth;return{left:Y[0],top:Y[1],right:Y[2],gap:Math.max(0,Q-J+Y[2]-Y[0])}};var j$7=Za(),Bl="data-scroll-locked",k$7=function(X,Y,J,Q){var{left:Z,top:K,right:G,gap:B}=X;if(J===void 0)J="margin";return`
|
|
3047
3047
|
.`.concat(sq6,` {
|
|
3048
3048
|
overflow: hidden `).concat(Q,`;
|
|
3049
3049
|
padding-right: `).concat(B,"px ").concat(Q,`;
|