import CodeMirrorMerge from 'react-codemirror-merge'; import clsx from 'clsx'; import { AutomationTestingProps } from '@/types'; import { FileNameHeader, FileNameHeaderRow } from './FileNameHeader'; import styles from './CodeEditor.module.css'; import { CodeEditorType, useCodeEditorExtensions, } from './useCodeEditorExtensions'; import { theme } from './CodeEditor'; const { Original } = CodeMirrorMerge; const { Modified } = CodeMirrorMerge; type Props = { originalCode: string; newCode: string; id: string; type?: CodeEditorType; placeholder?: string; height?: string; fileNames?: { original: string; modified: string; }; className?: string; } & AutomationTestingProps; const defaultCollapseUnchanged = { margin: 10, minSize: 10, }; export function DiffViewer({ originalCode, newCode, id, 'data-cy': dataCy, type, placeholder = 'No values found', height = '500px', fileNames, className, }: Props) { const extensions = useCodeEditorExtensions(type); const hasFileNames = !!fileNames?.original && !!fileNames?.modified; return (
{hasFileNames && ( )} {/* additional div, so that the scroll gutter doesn't overlap with the rounded border, and always show scrollbar, so that the file name headers align */}
.cm-scroller]:!min-h-[var(--editor-min-height)]' )} id={id} data-cy={dataCy} collapseUnchanged={defaultCollapseUnchanged} >
); } function DiffFileNameHeaders({ originalCopyText, modifiedCopyText, originalFileName, modifiedFileName, }: { originalCopyText: string; modifiedCopyText: string; originalFileName: string; modifiedFileName: string; }) { return (
); }