{"version":3,"file":"CodeReviewBot-CGh-qSwY.js","sources":["../../components/features/CodeReviewBot.tsx"],"sourcesContent":["import React, { useState, useCallback } from 'react';\nimport { reviewCode } from '../../services/geminiService.ts';\nimport { CpuChipIcon } from '../icons/FeatureIcons.tsx';\nimport { LoadingSpinner } from './shared/LoadingSpinner.tsx';\nimport { marked } from 'marked';\n\nconst exampleCode = `function UserList(users) {\n if (users.length = 0) {\n return \"no users\";\n } else {\n return (\n users.map(u => {\n return
  • {u.name}
  • \n })\n )\n }\n}`;\n\nexport const CodeReviewBot: React.FC = () => {\n const [code, setCode] = useState(exampleCode);\n const [review, setReview] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState('');\n\n const handleGenerate = useCallback(async () => {\n if (!code.trim()) {\n setError('Please enter some code to review.');\n return;\n }\n setIsLoading(true);\n setError('');\n setReview('');\n try {\n const result = await reviewCode(code);\n setReview(result);\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : 'An unknown error occurred.';\n setError(`Failed to get review: ${errorMessage}`);\n } finally {\n setIsLoading(false);\n }\n }, [code]);\n\n return (\n
    \n
    \n

    \n \n AI Code Review Bot\n

    \n

    Get an automated code review from Gemini.

    \n
    \n
    \n
    \n \n setCode(e.target.value)}\n placeholder=\"Paste your code here...\"\n className=\"flex-grow p-4 bg-slate-900 border border-slate-700 rounded-md resize-none font-mono text-sm text-cyan-300\"\n />\n \n {isLoading ? : 'Request Review'}\n \n
    \n
    \n \n
    \n {isLoading &&
    }\n {error &&

    {error}

    }\n {review && !isLoading && (\n \n )}\n {!isLoading && !review && !error &&
    Review will appear here.
    }\n
    \n
    \n
    \n
    \n );\n};"],"names":["exampleCode","CodeReviewBot","code","setCode","useState","review","setReview","isLoading","setIsLoading","error","setError","handleGenerate","useCallback","result","reviewCode","err","errorMessage","jsxs","jsx","CpuChipIcon","e","LoadingSpinner","marked"],"mappings":"o8EAMA,MAAMA,EAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAYPC,GAA0B,IAAM,CACzC,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAAA,SAAiBJ,CAAW,EAC9C,CAACK,EAAQC,CAAS,EAAIF,EAAAA,SAAiB,EAAE,EACzC,CAACG,EAAWC,CAAY,EAAIJ,EAAAA,SAAkB,EAAK,EACnD,CAACK,EAAOC,CAAQ,EAAIN,EAAAA,SAAiB,EAAE,EAEvCO,EAAiBC,EAAAA,YAAY,SAAY,CAC3C,GAAI,CAACV,EAAK,OAAQ,CACdQ,EAAS,mCAAmC,EAC5C,MACJ,CACAF,EAAa,EAAI,EACjBE,EAAS,EAAE,EACXJ,EAAU,EAAE,EACZ,GAAI,CACA,MAAMO,EAAS,MAAMC,EAAWZ,CAAI,EACpCI,EAAUO,CAAM,CACpB,OAASE,EAAK,CACV,MAAMC,EAAeD,aAAe,MAAQA,EAAI,QAAU,6BAC1DL,EAAS,yBAAyBM,CAAY,EAAE,CACpD,QAAA,CACIR,EAAa,EAAK,CACtB,CACJ,EAAG,CAACN,CAAI,CAAC,EAET,OACIe,EAAAA,KAAC,MAAA,CAAI,UAAU,yCACX,SAAA,CAAAA,EAAAA,KAAC,SAAA,CAAO,UAAU,OACd,SAAA,CAAAA,EAAAA,KAAC,KAAA,CAAG,UAAU,sDACV,SAAA,CAAAC,EAAAA,IAACC,EAAA,EAAY,EACbD,EAAAA,IAAC,OAAA,CAAK,UAAU,OAAO,SAAA,oBAAA,CAAkB,CAAA,EAC7C,EACAA,EAAAA,IAAC,IAAA,CAAE,UAAU,sBAAsB,SAAA,2CAAA,CAAyC,CAAA,EAChF,EACAD,EAAAA,KAAC,MAAA,CAAI,UAAU,yEACX,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,UAAU,uBACX,SAAA,CAAAC,MAAC,QAAA,CAAM,QAAQ,aAAa,UAAU,0CAA0C,SAAA,iBAAc,EAC9FA,EAAAA,IAAC,WAAA,CACG,GAAG,aACH,MAAOhB,EACP,SAAWkB,GAAMjB,EAAQiB,EAAE,OAAO,KAAK,EACvC,YAAY,0BACZ,UAAU,2GAAA,CAAA,EAEdF,EAAAA,IAAC,SAAA,CACG,QAASP,EACT,SAAUJ,EACV,UAAU,iJAET,SAAAA,EAAYW,EAAAA,IAACG,EAAA,CAAA,CAAe,EAAK,gBAAA,CAAA,CACtC,EACJ,EACAJ,EAAAA,KAAC,MAAA,CAAI,UAAU,uBACX,SAAA,CAAAC,EAAAA,IAAC,QAAA,CAAM,UAAU,0CAA0C,SAAA,cAAW,EACtED,EAAAA,KAAC,MAAA,CAAI,UAAU,sFACV,SAAA,CAAAV,SAAc,MAAA,CAAI,UAAU,0CAA0C,SAAAW,MAACG,IAAe,EAAE,EACxFZ,GAASS,EAAAA,IAAC,IAAA,CAAE,UAAU,eAAgB,SAAAT,EAAM,EAC5CJ,GAAU,CAACE,GACRW,EAAAA,IAAC,MAAA,CACG,UAAU,yCACV,wBAAyB,CAAE,OAAQI,EAAOjB,CAAM,CAAA,CAAE,CAAA,EAGxD,CAACE,GAAa,CAACF,GAAU,CAACI,GAASS,EAAAA,IAAC,MAAA,CAAI,UAAU,yDAAyD,SAAA,0BAAA,CAAwB,CAAA,CAAA,CACzI,CAAA,CAAA,CACJ,CAAA,CAAA,CACJ,CAAA,EACJ,CAER"}