-
-
-
-
+
+
+
+ {maxLength === 0
+ ? 'No bytes'
+ : `${visibleOffset.toLocaleString()}–${Math.max(visibleOffset, pageEnd - 1).toLocaleString()} of ${maxLength.toLocaleString()}`}
+
+
+
+
+ {currentPage} / {pageCount}
+
+
+
+
+
+ {rows.length === 0 ? (
+
+ Paste data or open two local files to compare.
+
+ ) : (
+
+
+ Address
+ Left
+ Right
+
+ {rows.map((row) => (
+
+
{row.offset.toString(16).padStart(8, '0')}
+
+ {row.cells.map((cell) => (
+
+ ))}
+
+
+ {row.cells.map((cell) => (
+
+ ))}
+
+
+ ))}
+
+ )}
+
+
+
+ {selected && selectedOffset !== null && (
+
+
+ Selected offset
+
+ 0x{selectedOffset.toString(16)}
+
+ Left
+ {byteLabel(selected.left)}
+
+
+ Right
+ {byteLabel(selected.right)}
+
+ {selected.status}
+
+ )}
+
+ );
+}
+
+function DiffSource({
+ label,
+ value,
+ file,
+ onChange,
+ onOpen,
+ onClose,
+}: {
+ label: string;
+ value: string;
+ file: FileSource | null;
+ onChange: (value: string) => void;
+ onOpen: () => void;
+ onClose: () => void;
+}) {
+ return (
+
+
+
{label}
+ {file ? (
+
+ ) : (
+
+ )}
+
+ {file ? (
+
+
+
{file.name}
+
{formatSize(file.bytes.length)}
+
- First differing offset: {result.firstDiffOffset}
-
- {result.preview.join('\n') || 'No preview'}
-
-
+ ) : (
+