Files
kandev/apps/web/components/diff/diff-viewer-resolver.tsx
T
2026-02-18 18:24:41 +00:00

47 lines
1.8 KiB
TypeScript

'use client';
import { memo } from 'react';
import { useEditorProvider } from '@/hooks/use-editor-resolver';
import { DiffViewer as PierreDiffViewer, DiffViewInline as PierreDiffViewInline } from './diff-viewer';
import { MonacoDiffViewer } from '@/components/editors/monaco/monaco-diff-viewer';
import type { FileDiffData, DiffComment } from '@/lib/diff/types';
import type { RevertBlockInfo } from './diff-viewer';
export type { RevertBlockInfo };
interface DiffViewerResolverProps {
data: FileDiffData;
enableComments?: boolean;
sessionId?: string;
onCommentAdd?: (comment: DiffComment) => void;
onCommentDelete?: (commentId: string) => void;
comments?: DiffComment[];
className?: string;
compact?: boolean;
hideHeader?: boolean;
onOpenFile?: (filePath: string) => void;
onRevert?: (filePath: string) => void;
enableAcceptReject?: boolean;
onRevertBlock?: (filePath: string, info: RevertBlockInfo) => void;
wordWrap?: boolean;
editable?: boolean;
onModifiedContentChange?: (filePath: string, content: string) => void;
}
export const DiffViewerResolved = memo(function DiffViewerResolved(props: DiffViewerResolverProps) {
const provider = useEditorProvider('diff-viewer');
if (provider === 'monaco') {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const { enableComments, ...rest } = props;
return <MonacoDiffViewer {...rest} />;
}
return <PierreDiffViewer {...props} />;
});
export function DiffViewInlineResolved({ data, className }: { data: FileDiffData; className?: string }) {
const provider = useEditorProvider('chat-diff');
if (provider === 'monaco') {
return <MonacoDiffViewer data={data} compact hideHeader className={className} />;
}
return <PierreDiffViewInline data={data} className={className} />;
}