import { memo, useMemo } from "react"; import { FileCode, Plus } from "lucide-react"; import { ScrollBody } from "./ui"; import { parseDiffLines, type FileChange } from "./view-model"; export const DiffContent = memo(function DiffContent({ filePath, file, diff, onAddAttachment, }: { filePath: string; file?: FileChange; diff?: string; onAddAttachment?: (filePath: string, lineNumber: number, lineContent: string) => void; }) { const diffLines = useMemo(() => (diff ? parseDiffLines(diff) : []), [diff]); return ( <>
{filePath}
{file ? (
+{file.added} −{file.removed}
) : null}
{diff ? (
{diffLines.map((line) => { const isHunk = line.kind === "hunk"; return (
onAddAttachment(filePath, line.lineNumber, line.text) : undefined} >
{!isHunk && onAddAttachment ? ( ) : null} {isHunk ? "" : line.lineNumber}
{line.text}
); })}
) : (
No diff data available for this file
)}
); });