Githubgemini / assets /AiCodeExplainer-DGin5jQC.js
admin08077's picture
Upload 315 files
2fdad72 verified
import{r as t,j as e}from"./react-CIdJ77ke.js";import{m as j}from"./mermaid-KwKZWwy0.js";import"./dayjs-CeEF-NGT.js";import"./@braintree-DzxiOROe.js";import"./d3-transition-CiCB8KJE.js";import"./d3-zoom-BYoC3mS3.js";import"./dompurify-J5RlrwSC.js";import{h as M,i as R,j as T,k as $,L as g,M as E}from"./index-CX7Qxd1D.js";import"./accessibilityService-PX6aNbbc.js";import"./workspaceConnectorService-KhhKdOYD.js";import"./d3-selection-C52G7wmG.js";import"./dagre-d3-es-CTpFWynZ.js";import"./lodash-es-Dt6r0yiR.js";import"./d3-shape-CX8xTzfR.js";import"./d3-path-CimkQT29.js";import"./d3-fetch-BOsq7VnW.js";import"./khroma-DUX6PT6k.js";import"./uuid-DhYbOkY1.js";import"./d3-scale-DRZz3QW5.js";import"./internmap-BkD7Hj8s.js";import"./d3-array-DGRYoJHh.js";import"./d3-format-CzD4bSOQ.js";import"./d3-interpolate-CtIaNujU.js";import"./d3-color-amxIadob.js";import"./d3-time-format-CUNN4Ell.js";import"./d3-time-6cSPyVSY.js";import"./d3-axis-DSWTncID.js";import"./elkjs-oKFFZvz7.js";import"./cytoscape-DtBltrT8.js";import"./cytoscape-cose-bilkent-Cgr1thlj.js";import"./cose-base-CwCxnKwh.js";import"./layout-base-CMXQqlmj.js";import"./d3-sankey-DgqkLiUE.js";import"./d3-scale-chromatic-B-NsZVaP.js";import"./ts-dedent-DrFu-skq.js";import"./stylis-D5iaQeiq.js";import"./mdast-util-from-markdown-CLAsVoWb.js";import"./micromark-CTBPIv-_.js";import"./micromark-util-combine-extensions-Bka6Sc1c.js";import"./micromark-util-chunked-DrRIdSP-.js";import"./micromark-factory-space-x2vfxbz5.js";import"./micromark-util-character-Bcm1tP9o.js";import"./micromark-core-commonmark-AH8VCgT7.js";import"./micromark-util-classify-character-Cq7Fg3xE.js";import"./micromark-util-resolve-all-PQCKh0dx.js";import"./decode-named-character-reference-C3-224fz.js";import"./micromark-util-subtokenize-QwsxNXk2.js";import"./micromark-factory-destination-CypD_wgM.js";import"./micromark-factory-label-CRHH4ZHP.js";import"./micromark-factory-title-B7kCBvC9.js";import"./micromark-factory-whitespace-B322EA6O.js";import"./micromark-util-normalize-identifier-C9ANKk3v.js";import"./micromark-util-html-tag-name-DbKNfynz.js";import"./micromark-util-decode-numeric-character-reference-DRnCnno4.js";import"./micromark-util-decode-string-DJl8Y_PO.js";import"./unist-util-stringify-position-Ch_qCilz.js";import"./mdast-util-to-string-C_aolqmU.js";import"./d3-timer-DdKHrDhs.js";import"./d3-dispatch-kxCwF96_.js";import"./d3-ease-DRPgKoYJ.js";import"./react-dom-R9L8nDNe.js";import"./scheduler-CoSDG3-6.js";import"./@google-CcUHq7Ay.js";import"./idb-Dob3nYDb.js";import"./marked-BrGMJkBT.js";import"./jszip-CFFhfFtd.js";import"./octokit-B6bKu3NB.js";import"./@octokit-MBEWYTsi.js";import"./bottleneck-D_vuF9V7.js";import"./universal-user-agent-CLgqIJsR.js";import"./before-after-hook-y8XtM9xW.js";import"./fast-content-type-parse-3SwieiST.js";import"./axe-core-Cc5paZPx.js";const A=`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;
};`,z=o=>o.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\b(const|let|var|function|return|if|for|=>|import|from|export|default)\b/g,'<span class="text-indigo-400 font-semibold">$1</span>').replace(/(\`|'|")(.*?)(\`|'|")/g,'<span class="text-emerald-400">$1$2$3</span>').replace(/(\/\/.*)/g,'<span class="text-gray-400 italic">$1</span>').replace(/(\{|\}|\(|\)|\[|\])/g,'<span class="text-gray-400">$1</span>');j.initialize({startOnLoad:!1,securityLevel:"loose"});const er=({initialCode:o})=>{const[i,y]=t.useState(o||A),[a,b]=t.useState(null),[d,v]=t.useState(""),[n,N]=t.useState(!1),[x,u]=t.useState(""),[m,w]=t.useState("summary"),[C]=M(),c=t.useRef(null),p=t.useRef(null),l=t.useRef(null),f=t.useCallback(async r=>{if(!r.trim()){u("Please enter some code to explain.");return}N(!0),u(""),b(null),v(""),w("summary");try{const[s,h]=await Promise.all([R(r),T(r)]);b(s),v(h.replace(/```mermaid\n|```/g,""))}catch(s){const h=s instanceof Error?s.message:"An unknown error occurred.";u(`Failed to get explanation: ${h}`)}finally{N(!1)}},[]);t.useEffect(()=>{o&&(y(o),f(o))},[o,f]),t.useEffect(()=>{(async()=>{if(m==="flowchart"&&d&&l.current)try{j.initialize({startOnLoad:!1,theme:C.mode==="dark"?"dark":"neutral",securityLevel:"loose"}),l.current.innerHTML="";const{svg:s}=await j.render(`mermaid-graph-${Date.now()}`,d);l.current.innerHTML=s}catch(s){console.error("Mermaid rendering error:",s),l.current.innerHTML='<p class="text-red-500">Error rendering flowchart.</p>'}})()},[m,d,C.mode]);const L=()=>{p.current&&c.current&&(p.current.scrollTop=c.current.scrollTop,p.current.scrollLeft=c.current.scrollLeft)},k=t.useMemo(()=>z(i),[i]),S=()=>{if(!a)return null;switch(m){case"summary":return e.jsx(E,{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 e.jsx("div",{ref:l,className:"w-full h-full flex items-center justify-center",children:e.jsx(g,{})})}};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:c,id:"code-input",value:i,onChange:r=>y(r.target.value),onScroll:L,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:p,"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:k+`
`}})]}),e.jsx("div",{className:"mt-4 flex-shrink-0",children:e.jsx("button",{onClick:()=>f(i),disabled:n,className:"btn-primary w-full flex items-center justify-center px-6 py-3",children:n?e.jsx(g,{}):"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:()=>w(r),disabled:!a,className:`px-4 py-2 text-sm font-medium capitalize transition-colors ${m===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:[n&&e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsx(g,{})}),x&&e.jsx("p",{className:"text-red-500",children:x}),a&&!n&&S(),!n&&!a&&!x&&e.jsx("div",{className:"text-text-secondary h-full flex items-center justify-center",children:"The analysis will appear here."})]})]})]})]})]})};export{er as AiCodeExplainer};
//# sourceMappingURL=AiCodeExplainer-DGin5jQC.js.map