import{r as t,j as e}from"./react-B-lWpQRQ.js";import{m as y}from"./mermaid-Di130UA9.js";import{q as M,t as E,v as $,L as j,M as A}from"./index-DyMS-nC-.js";import"./@google-xfXoiafW.js";import"./@braintree-DY5JYOZd.js";import"./@mermaid-js-Ce0__7Tp.js";import"./langium-B_PGe6V2.js";import"./vscode-jsonrpc-2tvYB2ki.js";import"./chevrotain-D5DQZOif.js";import"./@chevrotain-DMYZVohV.js";import"./lodash-es-CKTcnrxn.js";import"./chevrotain-allstar-eFSt8-qu.js";import"./vscode-languageserver-types-NoPvPymt.js";import"./vscode-languageserver-textdocument-CKBVUiR3.js";import"./vscode-uri-CoxP0whD.js";import"./ts-dedent-DrFu-skq.js";import"./d3-transition-B3UNvQtR.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-interpolate-CfLzPKWk.js";import"./d3-color-amxIadob.js";import"./d3-selection-Bj1BqfTz.js";import"./d3-ease-DRPgKoYJ.js";import"./d3-zoom-BPoWDlND.js";import"./dompurify-CGs5VtEq.js";import"./stylis-D5iaQeiq.js";import"./dagre-d3-es-B7gFXptC.js";import"./cytoscape-CyJtwmzi.js";import"./cytoscape-cose-bilkent-NPpav9ZH.js";import"./cose-base-B9X2GT9R.js";import"./layout-base-85SqnYhL.js";import"./khroma-DUX6PT6k.js";import"./dayjs-eqEFLWAl.js";import"./d3-scale-BchcX-lF.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./d3-shape-CcP_g-Bt.js";import"./d3-path-CimkQT29.js";import"./roughjs-GtHDBO_d.js";import"./d3-sankey-CgO6js3K.js";import"./d3-scale-chromatic-CvOaoHrI.js";import"./@iconify-D2F_yRRF.js";import"./cytoscape-fcose-V_63gsaN.js";import"./d3-hierarchy-S4eE0pp0.js";import"./react-dom-CU2yWD-Y.js";import"./scheduler-DYLXRpC5.js";import"./idb-Dob3nYDb.js";import"./axe-core-CA05Kxsw.js";import"./marked-CesSW9Du.js";const R=`const bubbleSort = (arr) => { for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr.length - i - 1; j++) { if (arr[j] > arr[j + 1]) { [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]; } } } return arr; };`,T=l=>l.replace(/&/g,"&").replace(//g,">").replace(/\b(const|let|var|function|return|if|for|=>|import|from|export|default)\b/g,'$1').replace(/(\`|'|")(.*?)(\`|'|")/g,'$1$2$3').replace(/(\/\/.*)/g,'$1').replace(/(\{|\}|\(|\)|\[|\])/g,'$1');y.initialize({startOnLoad:!1,theme:"neutral",securityLevel:"loose"});const Te=({initialCode:l})=>{const[n,b]=t.useState(l||R),[a,v]=t.useState(null),[c,N]=t.useState(""),[m,u]=t.useState(null),[i,w]=t.useState(!1),[f,h]=t.useState(""),[d,C]=t.useState("summary"),p=t.useRef(null),x=t.useRef(null),g=t.useCallback(async r=>{if(!r.trim()){h("Please enter some code to explain.");return}w(!0),h(""),v(null),N(""),u(null),C("summary");try{const[s,o]=await Promise.all([M(r),E(r)]);v(s),N(o.replace(/```mermaid\n|```/g,""))}catch(s){const o=s instanceof Error?s.message:"An unknown error occurred.";h(`Failed to get explanation: ${o}`)}finally{w(!1)}},[]);t.useEffect(()=>{l&&(b(l),g(l))},[l,g]),t.useEffect(()=>{(async()=>{if(d==="flowchart"&&c&&!m)try{const s=document.documentElement.classList.contains("dark")?"dark":"neutral";y.initialize({startOnLoad:!1,theme:s,securityLevel:"loose"});const{svg:o}=await y.render(`mermaid-graph-${Date.now()}`,c);u(o)}catch(s){console.error("Mermaid rendering error:",s),u('
Error rendering flowchart. The diagram syntax may be invalid.
')}})()},[d,c,m]);const S=()=>{x.current&&p.current&&(x.current.scrollTop=p.current.scrollTop,x.current.scrollLeft=p.current.scrollLeft)},L=t.useMemo(()=>T(n),[n]),k=()=>{if(!a)return null;switch(d){case"summary":return e.jsx(A,{content:a.summary});case"lineByLine":return e.jsx("div",{className:"space-y-3",children:a.lineByLine.map((r,s)=>e.jsxs("div",{className:"p-3 bg-background rounded-md border border-border",children:[e.jsxs("p",{className:"font-mono text-xs text-primary mb-1",children:["Lines: ",r.lines]}),e.jsx("p",{className:"text-sm",children:r.explanation})]},s))});case"complexity":return e.jsxs("div",{children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Time Complexity:"})," ",e.jsx("span",{className:"font-mono text-amber-600",children:a.complexity.time})]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Space Complexity:"})," ",e.jsx("span",{className:"font-mono text-amber-600",children:a.complexity.space})]})]});case"suggestions":return e.jsx("ul",{className:"list-disc list-inside space-y-2",children:a.suggestions.map((r,s)=>e.jsx("li",{children:r},s))});case"flowchart":return c?m?e.jsx("div",{className:"w-full h-full flex items-center justify-center [&>svg]:max-w-full [&>svg]:max-h-full",dangerouslySetInnerHTML:{__html:m}}):e.jsx("div",{className:"w-full h-full flex items-center justify-center",children:e.jsx(j,{})}):e.jsx("div",{className:"text-text-secondary h-full flex items-center justify-center",children:"Could not generate a flowchart for this code."})}};return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6 flex-shrink-0",children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center",children:[e.jsx($,{}),e.jsx("span",{className:"ml-3",children:"AI Code Explainer"})]}),e.jsx("p",{className:"text-text-secondary mt-1",children:"Get a detailed, structured analysis of any code snippet."})]}),e.jsxs("div",{className:"flex-grow grid grid-cols-1 md:grid-cols-2 gap-6 min-h-0",children:[e.jsxs("div",{className:"flex flex-col min-h-0 md:col-span-1",children:[e.jsx("label",{htmlFor:"code-input",className:"text-sm font-medium text-text-secondary mb-2",children:"Your Code"}),e.jsxs("div",{className:"relative flex-grow bg-surface border border-border rounded-md focus-within:ring-2 focus-within:ring-primary overflow-hidden",children:[e.jsx("textarea",{ref:p,id:"code-input",value:n,onChange:r=>b(r.target.value),onScroll:S,placeholder:"Paste your code here...",spellCheck:"false",className:"absolute inset-0 w-full h-full p-4 bg-transparent resize-none font-mono text-sm text-transparent caret-primary outline-none z-10"}),e.jsx("pre",{ref:x,"aria-hidden":"true",className:"absolute inset-0 w-full h-full p-4 font-mono text-sm text-text-primary pointer-events-none z-0 whitespace-pre-wrap overflow-auto no-scrollbar",dangerouslySetInnerHTML:{__html:L+` `}})]}),e.jsx("div",{className:"mt-4 flex-shrink-0",children:e.jsx("button",{onClick:()=>g(n),disabled:i,className:"btn-primary w-full flex items-center justify-center px-6 py-3",children:i?e.jsx(j,{}):"Analyze Code"})})]}),e.jsxs("div",{className:"flex flex-col min-h-0 md:col-span-1",children:[e.jsx("label",{className:"text-sm font-medium text-text-secondary mb-2",children:"AI Analysis"}),e.jsxs("div",{className:"relative flex-grow flex flex-col bg-surface border border-border rounded-md overflow-hidden",children:[e.jsx("div",{className:"flex-shrink-0 flex border-b border-border",children:["summary","lineByLine","complexity","suggestions","flowchart"].map(r=>e.jsx("button",{onClick:()=>C(r),disabled:!a,className:`px-4 py-2 text-sm font-medium capitalize transition-colors ${d===r?"bg-background text-primary font-semibold":"text-text-secondary hover:bg-gray-100 dark:hover:bg-slate-700 disabled:text-gray-400 dark:disabled:text-slate-500"}`,children:r.replace(/([A-Z])/g," $1")},r))}),e.jsxs("div",{className:"p-4 flex-grow overflow-y-auto",children:[i&&e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsx(j,{})}),f&&e.jsx("p",{className:"text-red-500",children:f}),a&&!i&&k(),!i&&!a&&!f&&e.jsx("div",{className:"text-text-secondary h-full flex items-center justify-center",children:"The analysis will appear here."})]})]})]})]})]})};export{Te as AiCodeExplainer}; //# sourceMappingURL=AiCodeExplainer-DBywGusR.js.map