diff --git a/src/lib/components/CodeViewer/CodeViewer.svelte b/src/lib/components/CodeViewer/CodeViewer.svelte index c18e218de..d5566fde1 100644 --- a/src/lib/components/CodeViewer/CodeViewer.svelte +++ b/src/lib/components/CodeViewer/CodeViewer.svelte @@ -90,9 +90,9 @@ return { html: content, highlighted }; }; - $: rows = diffRows.rows.map((row) => ({ ...row, render: renderRowContent(row) })); + $: renderedRows = diffRows.rows.map((row) => ({ ...row, render: renderRowContent(row) })); - type RenderedRow = (typeof rows)[0]; + type RenderedRow = (typeof renderedRows)[0]; const padHighlighted = (rows: RenderedRow[]): RenderedRow[] => { const chunks: (RenderedRow[] | RenderedRow)[] = []; @@ -168,35 +168,55 @@ } return chunks.flatMap((chunk) => chunk); }; + + $: rows = highlight.length > 0 ? padHighlighted(renderedRows) : renderedRows; + $: originalLineNumberDigits = String(rows.at(-1)?.originalLineNumber || '0').length; + $: currentLineNumberDigits = String(rows.at(-1)?.currentLineNumber || '0').length; -
- {#each highlight.length > 0 ? padHighlighted(rows) : rows as row} - {@const baseNumber = - row.type === RowType.Equal || row.type === RowType.Deletion - ? String(row.originalLineNumber) - : ''} - {@const curNumber = - row.type === RowType.Equal || row.type === RowType.Addition - ? String(row.currentLineNumber) - : ''} -
{baseNumber}
-
{curNumber}
-
- {row.type === RowType.Addition ? '+' : row.type === RowType.Deletion ? '-' : ''} -
-
- {#each row.render.html as content} - {@html content} - {/each} -
- {/each} -
+ + + {#each rows as row} + {@const baseNumber = + row.type === RowType.Equal || row.type === RowType.Deletion + ? String(row.originalLineNumber) + : ''} + {@const curNumber = + row.type === RowType.Equal || row.type === RowType.Addition + ? String(row.currentLineNumber) + : ''} + + + + {/each} + +
+ + + + {#each row.render.html as content} + {@html content} + {/each} +
+ + diff --git a/src/lib/components/CodeViewer/diff.css b/src/lib/components/CodeViewer/diff.css index 4fc9c1ba2..c81873f2d 100644 --- a/src/lib/components/CodeViewer/diff.css +++ b/src/lib/components/CodeViewer/diff.css @@ -1,14 +1,3 @@ -.diff-listing { - display: grid; - grid-template-columns: max-content max-content max-content auto; -} - -.diff-line-marker { - border-right: 1px solid var(--color-details-hairline); - width: 20px; - text-align: center; -} - .diff-line-marker-addition, .diff-line-addition { --override-addition-background-color: hsl(144deg 55% 49% / 20%);