import { useState } from 'react'; import { useRecoilValue } from 'recoil'; import ProgressCircle from './ProgressCircle'; import CancelledIcon from './CancelledIcon'; import ProgressText from './ProgressText'; import FinishedIcon from './FinishedIcon'; import MarkdownLite from './MarkdownLite'; import { useProgress } from '~/hooks'; import store from '~/store'; export default function CodeAnalyze({ initialProgress = 0.1, code, outputs = [], isSubmitting, }: { initialProgress: number; code: string; outputs: Record[]; isSubmitting: boolean; }) { const showCodeDefault = useRecoilValue(store.showCode); const [showCode, setShowCode] = useState(showCodeDefault); const progress = useProgress(initialProgress); const radius = 56.08695652173913; const circumference = 2 * Math.PI * radius; const offset = circumference - progress * circumference; const logs = outputs.reduce((acc, output) => { if (output['logs']) { return acc + output['logs'] + '\n'; } return acc; }, ''); return ( <>
{progress < 1 ? ( ) : ( )}
setShowCode((prev) => !prev)} inProgressText="Analyzing" finishedText="Finished analyzing" hasInput={!!code.length} />
{showCode && (
{logs && (
Result
{logs}
)}
)} ); } const CodeInProgress = ({ offset, circumference, radius, isSubmitting, progress, }: { progress: number; offset: number; circumference: number; radius: number; isSubmitting: boolean; }) => { if (progress < 1 && !isSubmitting) { return ; } return (
); };