From fd2029cbd7ccb27ff91d9901cbb3293ef476bcb2 Mon Sep 17 00:00:00 2001 From: Jona Date: Sat, 17 Oct 2026 00:19:32 -0400 Subject: [PATCH 1/4] Add persistent frozen leading rows and columns (#79) --- README.md | 5 +- media/frozen-panes.js | 82 ++++++++++ media/main.js | 44 +++++- package.json | 14 +- src/CsvEditorProvider.ts | 69 ++++++++- src/commands.ts | 19 +++ src/test/edit-integrity-harness.ts | 11 +- src/test/frozen-pane-commands.test.ts | 44 ++++++ src/test/frozen-panes.test.ts | 213 ++++++++++++++++++++++++++ 9 files changed, 492 insertions(+), 9 deletions(-) create mode 100644 media/frozen-panes.js create mode 100644 src/test/frozen-pane-commands.test.ts create mode 100644 src/test/frozen-panes.test.ts diff --git a/README.md b/README.md index 8f7a614..34625d7 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Working with CSV files shouldn’t be a chore. With CSV, you get: - **Interactive Editing:** Two modes — type to start a quick edit, or press Enter/double‑click for detail edit. Changes commit to the document when focus leaves the cell or CSV view; unsaved changes remain visible when you switch tabs. - **Smart Resizing:** Automatic widths follow the longest line in multiline cells. Drag within 10 pixels on either side of a column boundary to resize; widths are remembered per file across closing and reopening. Double-click a column boundary to restore automatic sizing. Resizing also works with the header row hidden. - **Dynamic Color Coding:** Visual cues based on data type help you quickly identify numbers, dates, booleans, and more (with opt‑in cool palette and theme-foreground mode settings). -- **Sticky Headers:** Keep column titles in view as you scroll through large datasets. +- **Frozen Rows and Columns:** Keep any number of leading visible rows and data columns in view. Right-click a cell to freeze through its row/column or unfreeze; counts are remembered per file. Frozen rows use measured heights, including multiline cells and zoom. The serial index stays visible alongside frozen data columns. - **Enhanced Keyboard Navigation:** Navigate cells with arrows and Tab/Shift+Tab; quick edits can commit with arrow keys; `Ctrl/Cmd + A` selects all; `Ctrl/Cmd + C` copies selection. - **Advanced Multi-Cell Selection:** Easily select and copy blocks of data, then paste them elsewhere as properly formatted CSV. - **Add/Delete Columns:** Right-click any cell to add a column left or right, or remove the selected column. @@ -85,6 +85,8 @@ Open the Command Palette and search for: - `CSV: Toggle Extension On/Off` (`csv.toggleExtension`) - `CSV: Toggle First Row as Header` (`csv.toggleHeader`) +- `CSV: Freeze Leading Rows` (`csv.changeFrozenRows`) +- `CSV: Freeze Leading Columns` (`csv.changeFrozenColumns`) - `CSV: Toggle Serial Index Column` (`csv.toggleSerialIndex`) - `CSV: Change CSV Separator` (`csv.changeSeparator`) - `CSV: Reset CSV Separator (Inherit)` (`csv.resetSeparator`) @@ -121,6 +123,7 @@ Per-file (stored by the extension; set via commands): - Serial index column (default `true`) — `CSV: Toggle Serial Index Column` - CSV separator override — `CSV: Change CSV Separator` (or clear it with `CSV: Reset CSV Separator (Inherit)`) - Hide first N rows (default `0`) — `CSV: Hide First N Rows` +- Frozen leading visible rows/columns — `CSV: Freeze Leading Rows` / `CSV: Freeze Leading Columns`. Enter `0` to unfreeze that axis. The default keeps the first header row frozen; with headers off, no rows freeze until requested. Hidden metadata rows do not count; the virtual append row is never frozen as a leading row. --- diff --git a/media/frozen-panes.js b/media/frozen-panes.js new file mode 100644 index 0000000..381ca5c --- /dev/null +++ b/media/frozen-panes.js @@ -0,0 +1,82 @@ +// Layout uses measured dimensions so multiline cells, manual sizes and zoom agree. +window.createFrozenPaneManager = ({ table, firstRow, realRowCount, onNeedRows }) => { + let rows = 0; + let columns = 0; + let scheduled = false; + let disposed = false; + const count = value => Number.isSafeInteger(Number(value)) && Number(value) >= 0 ? Number(value) : 0; + const renderedRows = () => Array.from(table.rows).map(row => { + const dataCell = Array.from(row.cells).find(cell => cell.hasAttribute('data-row')); + return { element: row, index: Number(dataCell?.getAttribute('data-row')) }; + }).filter(row => Number.isInteger(row.index)); + const schedule = () => { + if (scheduled || disposed) return; + scheduled = true; + requestAnimationFrame(() => { scheduled = false; if (!disposed) layout(); }); + }; + const observer = typeof ResizeObserver === 'function' ? new ResizeObserver(schedule) : null; + const observedRows = new WeakSet(); + const layout = () => { + const rendered = renderedRows(); + for (const { element } of rendered) { + if (!observedRows.has(element)) { + observedRows.add(element); + observer?.observe(element); + } + } + table.querySelectorAll('.csv-frozen-row, .csv-frozen-column').forEach(cell => { + cell.classList.remove('csv-frozen-row', 'csv-frozen-column'); + cell.style.top = ''; + cell.style.left = ''; + cell.style.zIndex = ''; + }); + const representative = rendered[0]?.element; + const leftByColumn = new Map(); + let left = 0; + if (columns && representative) { + for (const cell of Array.from(representative.cells)) { + const attr = cell.getAttribute('data-col'); + const col = attr === null ? -1 : Number(attr); + if (col >= columns) break; + leftByColumn.set(col, left); + left += cell.getBoundingClientRect().width; + } + } + let top = 0; + const lastFrozenRow = Math.min(firstRow + rows, realRowCount) - 1; + for (const { element, index } of rendered) { + const frozenRow = index >= firstRow && index <= lastFrozenRow; + const height = element.getBoundingClientRect().height || Math.max(0, ...Array.from(element.cells).map(cell => cell.getBoundingClientRect().height)); + for (const cell of Array.from(element.cells)) { + const attr = cell.getAttribute('data-col'); + const col = attr === null ? -1 : Number(attr); + const frozenColumn = leftByColumn.has(col); + if (frozenRow) { + cell.classList.add('csv-frozen-row'); + cell.style.top = `${top}px`; + } + if (frozenColumn) { + cell.classList.add('csv-frozen-column'); + cell.style.left = `${leftByColumn.get(col)}px`; + } + if (frozenRow || frozenColumn) { + cell.style.zIndex = frozenRow && frozenColumn ? '4' : (frozenRow ? '3' : '2'); + } + } + if (frozenRow) top += height; + } + if (lastFrozenRow >= firstRow && (rendered[rendered.length - 1]?.index ?? -1) < lastFrozenRow) { + onNeedRows?.(lastFrozenRow); + } + }; + return { + schedule, + layout, + update(nextRows, nextColumns) { + rows = count(nextRows); + columns = count(nextColumns); + schedule(); + }, + dispose() { disposed = true; observer?.disconnect(); } + }; +}; diff --git a/media/main.js b/media/main.js index 2b204c5..3feb207 100644 --- a/media/main.js +++ b/media/main.js @@ -6,6 +6,8 @@ try { document.body.focus({ preventScroll: true }); } catch { try { document.bod const vscode = acquireVsCodeApi(); const root = document.getElementById('csv-root'); +let frozenRowCount = Number(root?.dataset?.frozenrows || '0'); +let frozenColumnCount = Number(root?.dataset?.frozencolumns || '0'); const parsePositiveNumber = value => { const parsed = typeof value === 'string' ? Number.parseFloat(value) : Number(value); if (!Number.isFinite(parsed) || parsed <= 0) return undefined; @@ -77,6 +79,7 @@ const persistColumnSizes = () => { vscode.postMessage({ type: 'columnSizesChanged', columnSizes: { ...columnSizeState } }); }; const applySizeStateToRenderedCells = () => { + window.csvFrozenPanes?.schedule(); for (const [col, width] of Object.entries(columnSizeState)) { const px = Math.max(40, Math.round(Number(width))); table.querySelectorAll(`[data-col="${col}"]`).forEach(cell => { @@ -385,6 +388,12 @@ const clearSelection = () => { currentSelection.forEach(c => c.classList.remove( const contextMenu = document.getElementById('contextMenu'); /* ──────── UPDATED showContextMenu ──────── */ +const changeFrozenPanes = change => { + frozenRowCount = change.rows ?? frozenRowCount; + frozenColumnCount = change.columns ?? frozenColumnCount; + window.csvFrozenPanes?.update(frozenRowCount, frozenColumnCount); + vscode.postMessage({ type: 'freezePanesChanged', rows: frozenRowCount, columns: frozenColumnCount }); +}; const showContextMenu = (x, y, row, col) => { contextMenu.innerHTML = ''; const item = (label, cb) => { @@ -403,6 +412,15 @@ const showContextMenu = (x, y, row, col) => { item('Copy', () => copySelectionToClipboard()); item('Paste', () => pasteFromClipboard()); divider(); + if (Number.isInteger(row) && row >= Number(root?.dataset?.firstrow || '0') && row < Number(root?.dataset?.realrowcount || '0')) { + item('Freeze rows through this row', () => changeFrozenPanes({ rows: row - Number(root?.dataset?.firstrow || '0') + 1 })); + } + if (Number.isInteger(col) && col >= 0) { + item('Freeze columns through this column', () => changeFrozenPanes({ columns: col + 1 })); + } + if (frozenRowCount > 0) item('Unfreeze rows', () => changeFrozenPanes({ rows: 0 })); + if (frozenColumnCount > 0) item('Unfreeze columns', () => changeFrozenPanes({ columns: 0 })); + divider(); // Derive multi-row/column selection counts const selectedIndexCells = currentSelection.filter(el => el && el.getAttribute && el.getAttribute('data-col') === '-1'); const selectedRowIds = Array.from(new Set(selectedIndexCells.map(el => parseInt(el.getAttribute('data-row') || '-1', 10)).filter(n => !isNaN(n)))).sort((a,b)=>a-b); @@ -602,6 +620,7 @@ const getResizeEdgeInfo = (target, e) => { return null; }; const applyColumnWidth = (col, widthPx) => { + window.csvFrozenPanes?.schedule(); const width = Math.max(40, Math.round(widthPx)); columnSizeState[String(col)] = width; table.querySelectorAll(`[data-col="${col}"]`).forEach(cell => { @@ -609,6 +628,7 @@ const applyColumnWidth = (col, widthPx) => { }); }; const resetColumnWidth = col => { + window.csvFrozenPanes?.schedule(); delete columnSizeState[String(col)]; table.querySelectorAll(`[data-col="${col}"]`).forEach(cell => { const automatic = automaticColumnSizes.get(cell); @@ -616,6 +636,7 @@ const resetColumnWidth = col => { }); }; const applyRowHeight = (row, heightPx) => { + window.csvFrozenPanes?.schedule(); const height = Math.max(getMinRowHeight(), Math.round(heightPx)); rowSizeState[String(row)] = height; table.querySelectorAll(`[data-row="${row}"]`).forEach(cell => { @@ -624,6 +645,7 @@ const applyRowHeight = (row, heightPx) => { }); }; const resetRowHeight = row => { + window.csvFrozenPanes?.schedule(); delete rowSizeState[String(row)]; table.querySelectorAll(`[data-row="${row}"]`).forEach(cell => { cell.style.height = ''; @@ -719,6 +741,7 @@ const onGlobalDragEnd = () => { resizeState = null; table.style.cursor = ''; persistState(); + window.csvFrozenPanes?.schedule(); } if (!reorderState) return; @@ -2079,7 +2102,11 @@ const copySelectionToClipboard = (cut = false) => { window.addEventListener('message', event => { const message = event.data; - if(message.type === 'focus'){ + if (message.type === 'frozenPanes') { + frozenRowCount = Number(message.rows); + frozenColumnCount = Number(message.columns); + window.csvFrozenPanes?.update(frozenRowCount, frozenColumnCount); + } else if(message.type === 'focus'){ if (anchorCell) { try { anchorCell.focus({ preventScroll: true }); } catch { try { anchorCell.focus(); } catch {} } } else { @@ -2111,6 +2138,7 @@ window.addEventListener('message', event => { remoteNextChunkStart = -1; remoteHasMoreChunks = false; } + window.csvFrozenPanes?.schedule(); if (csvChunks.length && pendingEnsureTarget) { ensureTargetStep(); } else if (csvChunks.length && nearBottom()) { @@ -2237,3 +2265,17 @@ document.addEventListener('keydown', e => { clearSelection(); } }); + +// Freeze layout never replaces cells or moves focus, including during a live edit. +if (typeof window.createFrozenPaneManager === 'function') { + window.csvFrozenPanes = window.createFrozenPaneManager({ + table, + firstRow: Number(root?.dataset?.firstrow || '0'), + realRowCount: Number(root?.dataset?.realrowcount || '0'), + onNeedRows: () => loadNextChunk() + }); + window.csvFrozenPanes.update(frozenRowCount, frozenColumnCount); + window.addEventListener('csvChunkLoaded', () => window.csvFrozenPanes.schedule()); + window.addEventListener('resize', () => window.csvFrozenPanes.schedule()); + window.addEventListener('pagehide', () => window.csvFrozenPanes.dispose(), { once: true }); +} diff --git a/package.json b/package.json index 092489b..e787037 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,9 @@ "onCommand:csv.changeFontFamily", "onCommand:csv.changeIgnoreRows", "onCommand:csv.changeEncoding", - "onCommand:csv.toggleClickableLinks" + "onCommand:csv.toggleClickableLinks", + "onCommand:csv.changeFrozenRows", + "onCommand:csv.changeFrozenColumns" ], "main": "./out/extension.js", "contributes": { @@ -99,6 +101,14 @@ { "command": "csv.toggleClickableLinks", "title": "CSV: Toggle Clickable Links" + }, + { + "command": "csv.changeFrozenRows", + "title": "CSV: Freeze Leading Rows" + }, + { + "command": "csv.changeFrozenColumns", + "title": "CSV: Freeze Leading Columns" } ], "configuration": { @@ -113,7 +123,7 @@ "csv.fontFamily": { "type": "string", "default": "", - "description": "Font family used by the CSV custom editor. Leave empty to inherit ‘editor.fontFamily’.", + "description": "Font family used by the CSV custom editor. Leave empty to inherit \u2018editor.fontFamily\u2019.", "scope": "application" }, "csv.fontSize": { diff --git a/src/CsvEditorProvider.ts b/src/CsvEditorProvider.ts index a1484e4..e13e706 100644 --- a/src/CsvEditorProvider.ts +++ b/src/CsvEditorProvider.ts @@ -3,6 +3,8 @@ import * as vscode from 'vscode'; import * as path from 'path'; import { parseClipboardMatrix, serializeClipboardMatrix } from './clipboard'; +type FrozenPanes = { rows: number; columns: number }; + type SeparatorMode = 'extension' | 'auto' | 'default'; type SeparatorSettings = { mode: SeparatorMode; @@ -70,6 +72,7 @@ class CsvEditorController { private document!: vscode.TextDocument; private separatorCache: { version: number; configKey: string; separator: string } | undefined; private isDiffContext = false; + private currentHeader = false; private chunkRenderState: ChunkRenderState | undefined; constructor(private readonly context: vscode.ExtensionContext) {} @@ -148,6 +151,9 @@ class CsvEditorController { case 'save': await this.handleSave(); break; + case 'freezePanesChanged': + await this.setFrozenPanes({ rows: e.rows, columns: e.columns }); + break; case 'columnSizesChanged': await CsvEditorProvider.setColumnSizesForUri(this.context, this.document.uri, e.columnSizes); break; @@ -416,6 +422,15 @@ class CsvEditorController { ); } + public getCurrentFrozenPanes(): FrozenPanes { + return CsvEditorProvider.getFrozenPanesForUri(this.context, this.document.uri, this.currentHeader); + } + + public async setFrozenPanes(change: Partial): Promise { + await CsvEditorProvider.setFrozenPanesForUri(this.context, this.document.uri, change); + this.currentWebviewPanel?.webview.postMessage({ type: 'frozenPanes', ...this.getCurrentFrozenPanes() }); + } + public getDocumentUri(): vscode.Uri { return this.document.uri; } @@ -1413,6 +1428,7 @@ class CsvEditorController { const cellPadding = config.get('cellPadding', 4); const data = this.trimTrailingEmptyRows((parsed.data || []) as string[][]); const treatHeader = this.getEffectiveHeader(data, hiddenRows); + this.currentHeader = treatHeader; const clickableLinks = config.get('clickableLinks', true); const configuredColumnColorMode = config.get('columnColorMode', 'type'); const diffUseThemeForeground = config.get('diffUseThemeForeground', true); @@ -1456,7 +1472,10 @@ class CsvEditorController { hasRemoteChunks, mouseWheelZoomEnabled, mouseWheelZoomInvert, - columnSizes: CsvEditorProvider.getColumnSizesForUri(this.context, this.document.uri) + columnSizes: CsvEditorProvider.getColumnSizesForUri(this.context, this.document.uri), + frozenPanes: this.getCurrentFrozenPanes(), + firstVisibleRow: hiddenRows, + realRowCount: data.length }); } @@ -1710,14 +1729,21 @@ class CsvEditorController { mouseWheelZoomEnabled: boolean; mouseWheelZoomInvert: boolean; columnSizes: Record; + frozenPanes: FrozenPanes; + firstVisibleRow: number; + realRowCount: number; }): string { - const { webview, nonce, fontFamily, fontSize, cellPadding, separator, tableHtml, chunksJson, extraColumnColorCss, nextChunkStart, hasRemoteChunks, mouseWheelZoomEnabled, mouseWheelZoomInvert, columnSizes } = args; + const { webview, nonce, fontFamily, fontSize, cellPadding, separator, tableHtml, chunksJson, extraColumnColorCss, nextChunkStart, hasRemoteChunks, mouseWheelZoomEnabled, mouseWheelZoomInvert, columnSizes, frozenPanes, firstVisibleRow, realRowCount } = args; const isDark = vscode.window.activeColorTheme.kind === vscode.ColorThemeKind.Dark; // Build script URI using file path for compatibility (older APIs may lack Uri.joinPath) const scriptUri = webview.asWebviewUri( vscode.Uri.file(path.join(this.context.extensionPath, 'media', 'main.js')) ); + const frozenPanesScriptUri = webview.asWebviewUri( + vscode.Uri.file(path.join(this.context.extensionPath, 'media', 'frozen-panes.js')) + ); + // Safe separator transport (assumes single character; see assumptions) const sepCode = (separator && separator.length > 0) ? separator.codePointAt(0)! : ','.codePointAt(0)!; @@ -1734,7 +1760,7 @@ class CsvEditorController { .table-container { overflow: auto; height: 100vh; } table { border-collapse: collapse; width: max-content; } th, td { padding: ${cellPadding}px 8px; border: 1px solid ${isDark ? '#555' : '#ccc'}; font-size: inherit; } - th { position: sticky; top: 0; background-color: ${isDark ? '#1e1e1e' : '#ffffff'}; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } + th { position: static; background-color: ${isDark ? '#1e1e1e' : '#ffffff'}; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } td { overflow: visible; white-space: pre-wrap; overflow-wrap: anywhere; } td.selected, th.selected { background-color: ${isDark ? '#333333' : '#cce0ff'} !important; } td.editing, th.editing { overflow: visible !important; white-space: pre-wrap !important; overflow-wrap: anywhere !important; max-width: none !important; } @@ -1918,12 +1944,25 @@ class CsvEditorController { #contextMenu div { padding: 4px 12px; cursor: pointer; } #contextMenu div:hover { background: ${isDark ? '#3d3d3d' : '#eeeeee'}; } + #csv-root .csv-frozen-row, #csv-root .csv-frozen-column { + position: sticky; + background-color: var(--vscode-editor-background, ${isDark ? '#1e1e1e' : '#ffffff'}) !important; + } + #csv-root .csv-frozen-row.selected, #csv-root .csv-frozen-column.selected { + background-image: linear-gradient(var(--vscode-editor-selectionBackground, ${isDark ? '#333333' : '#cce0ff'}), var(--vscode-editor-selectionBackground, ${isDark ? '#333333' : '#cce0ff'})); + } + #csv-root .csv-frozen-row.highlight, #csv-root .csv-frozen-column.highlight { + background-image: linear-gradient(var(--vscode-editor-findMatchHighlightBackground, transparent), var(--vscode-editor-findMatchHighlightBackground, transparent)); + } + #csv-root .csv-frozen-row.active-match, #csv-root .csv-frozen-column.active-match { + background-image: linear-gradient(var(--vscode-editor-findMatchBackground, transparent), var(--vscode-editor-findMatchBackground, transparent)); + } /* Per-column computed colors */ ${extraColumnColorCss} -
+
${tableHtml}
@@ -1971,6 +2010,7 @@ class CsvEditorController {
+ `; @@ -2234,6 +2274,7 @@ export class CsvEditorProvider implements vscode.CustomTextEditorProvider { public static readonly serialKey = 'csv.serialIndexByUri'; public static readonly sepKey = 'csv.separatorByUri'; public static readonly columnSizesKey = 'csv.columnSizesByUri'; + public static readonly frozenPanesKey = 'csv.frozenPanesByUri'; private static readonly DEFAULT_SEPARATOR = ','; private static readonly DEFAULT_SEPARATOR_MODE: SeparatorMode = 'extension'; private static readonly BUILTIN_SEPARATORS_BY_EXTENSION: Record = { @@ -2604,6 +2645,26 @@ export class CsvEditorProvider implements vscode.CustomTextEditorProvider { await context.workspaceState.update(CsvEditorProvider.serialKey, map); } + public static getFrozenPanesForUri(context: vscode.ExtensionContext, uri: vscode.Uri, header: boolean): FrozenPanes { + const map = context.workspaceState.get>>(CsvEditorProvider.frozenPanesKey, {}); + const saved = map[uri.toString()] ?? {}; + const valid = (value: unknown): value is number => typeof value === 'number' && Number.isSafeInteger(value) && value >= 0; + return { rows: valid(saved.rows) ? saved.rows : (header ? 1 : 0), columns: valid(saved.columns) ? saved.columns : 0 }; + } + + public static async setFrozenPanesForUri(context: vscode.ExtensionContext, uri: vscode.Uri, change: Partial): Promise { + const map = { ...context.workspaceState.get>>(CsvEditorProvider.frozenPanesKey, {}) }; + const saved = { ...map[uri.toString()] }; + for (const axis of ['rows', 'columns'] as const) { + const value = change[axis]; + if (typeof value === 'number' && Number.isSafeInteger(value) && value >= 0) { + saved[axis] = value; + } + } + map[uri.toString()] = saved; + await context.workspaceState.update(CsvEditorProvider.frozenPanesKey, map); + } + public static normalizeColumnSizes(raw: unknown): Record { const sizes: Record = {}; if (!raw || typeof raw !== 'object' || Array.isArray(raw)) { diff --git a/src/commands.ts b/src/commands.ts index 6241b3d..ae6f429 100644 --- a/src/commands.ts +++ b/src/commands.ts @@ -19,8 +19,27 @@ async function toggleBooleanConfig(key: string, defaultVal: boolean, messagePref CsvEditorProvider.editors.forEach(ed => ed.refresh()); } +async function changeFrozenPaneCount(axis: 'rows' | 'columns') { + const active = CsvEditorProvider.getActiveProvider(); + if (!active) { + vscode.window.showInformationMessage('Open a CSV/TSV/PSV file in the CSV editor.'); + return; + } + const current = active.getCurrentFrozenPanes()[axis]; + const input = await vscode.window.showInputBox({ + prompt: `Number of leading visible ${axis} to freeze (0 unfreezes)`, + value: String(current), + validateInput: value => /^\d+$/.test(value) && Number.isSafeInteger(Number(value)) ? undefined : 'Enter a non-negative whole number.' + }); + if (input !== undefined && /^\d+$/.test(input) && Number.isSafeInteger(Number(input))) { + await active.setFrozenPanes({ [axis]: Number(input) }); + } +} + export function registerCsvCommands(context: vscode.ExtensionContext) { context.subscriptions.push( + vscode.commands.registerCommand('csv.changeFrozenRows', () => changeFrozenPaneCount('rows')), + vscode.commands.registerCommand('csv.changeFrozenColumns', () => changeFrozenPaneCount('columns')), vscode.commands.registerCommand('csv.toggleExtension', () => toggleBooleanConfig('enabled', true, 'CSV extension') ), diff --git a/src/test/edit-integrity-harness.ts b/src/test/edit-integrity-harness.ts index 1a48ed0..7d3e171 100644 --- a/src/test/edit-integrity-harness.ts +++ b/src/test/edit-integrity-harness.ts @@ -49,6 +49,9 @@ export async function createEditorHarness(options: { separator?: string; header?: boolean; remote?: boolean; + frozenRows?: number; + frozenColumns?: number; + hiddenRows?: number; } = {}) { const separator = options.separator ?? ','; let text = Papa.unparse(options.rows ?? [['name', 'value'], ['one', 'two']], { delimiter: separator }); @@ -84,6 +87,10 @@ export async function createEditorHarness(options: { } }; await CsvEditorProvider.setHeaderForUri(context as any, uri as any, options.header ?? true); + if (options.hiddenRows !== undefined) { + await CsvEditorProvider.setHiddenRowsForUri(context as any, uri as any, options.hiddenRows); + } + await CsvEditorProvider.setFrozenPanesForUri(context as any, uri as any, { rows: options.frozenRows, columns: options.frozenColumns }); const panel = { active: true, visible: true, @@ -100,7 +107,7 @@ export async function createEditorHarness(options: { onDidDispose() {} }; const harness = { - document, panel, messages, changeListeners, saveListeners, + document, panel, messages, changeListeners, saveListeners, context, get diskText() { return diskText; }, get pendingEdits() { return delayedEdits.length; }, deferEdits() { deferEdits = true; }, @@ -147,6 +154,8 @@ export function createWebviewDom(html: string) { window.HTMLElement.prototype.scrollIntoView = () => {}; window.IntersectionObserver = class { observe() {} }; const source = fs.readFileSync(path.join(process.cwd(), 'media', 'main.js'), 'utf8'); + const freezeSource = fs.readFileSync(path.join(process.cwd(), 'media', 'frozen-panes.js'), 'utf8'); + window.eval(freezeSource); window.eval(`${source}\nwindow.editingTestApi = { editCell, setSingleSelection };`); return { window, messages, diff --git a/src/test/frozen-pane-commands.test.ts b/src/test/frozen-pane-commands.test.ts new file mode 100644 index 0000000..0330794 --- /dev/null +++ b/src/test/frozen-pane-commands.test.ts @@ -0,0 +1,44 @@ +import assert from 'assert'; +import Module from 'module'; +import { describe, it } from 'node:test'; + +const commands = new Map Promise>(); +let input: string | undefined; +let prompt: any; +const changes: any[] = []; +const originalRequire = Module.prototype.require; +Module.prototype.require = function (id: string) { + if (id === 'vscode') { + return { + commands: { registerCommand: (name: string, callback: () => Promise) => { commands.set(name, callback); return { dispose() {} }; } }, + window: { showInputBox: async (options: any) => { prompt = options; return input; }, showInformationMessage() {} } + }; + } + return originalRequire.apply(this, arguments as any); +}; +import { registerCsvCommands } from '../commands'; +import { CsvEditorProvider } from '../CsvEditorProvider'; +Module.prototype.require = originalRequire; +registerCsvCommands({ subscriptions: [] } as any); + +describe('Frozen-pane commands', () => { + it('updates the requested axis with validated counts and leaves cancellation unchanged', async () => { + CsvEditorProvider.currentActive = { getCurrentFrozenPanes: () => ({ rows: 3, columns: 1 }), setFrozenPanes: async (change: any) => changes.push(change) } as any; + input = '2'; + await commands.get('csv.changeFrozenRows')!(); + assert.strictEqual(prompt.value, '3'); + assert.strictEqual(prompt.validateInput('0'), undefined); + assert.ok(prompt.validateInput('-1')); + assert.ok(prompt.validateInput('1.5')); + assert.deepStrictEqual(changes, [{ rows: 2 }]); + input = '0'; + await commands.get('csv.changeFrozenColumns')!(); + assert.deepStrictEqual(changes, [{ rows: 2 }, { columns: 0 }]); + input = undefined; + await commands.get('csv.changeFrozenRows')!(); + input = 'invalid'; + await commands.get('csv.changeFrozenRows')!(); + assert.strictEqual(changes.length, 2); + CsvEditorProvider.currentActive = undefined; + }); +}); diff --git a/src/test/frozen-panes.test.ts b/src/test/frozen-panes.test.ts new file mode 100644 index 0000000..3078bd6 --- /dev/null +++ b/src/test/frozen-panes.test.ts @@ -0,0 +1,213 @@ +import assert from 'assert'; +import fs from 'fs'; +import path from 'path'; +import { describe, it } from 'node:test'; +import { createEditorHarness, createWebviewDom } from './edit-integrity-harness'; +const { CsvEditorProvider } = require('../CsvEditorProvider') as typeof import('../CsvEditorProvider'); + +function measure(view: ReturnType, heights = [25, 60, 35, 30]) { + for (const row of Array.from(view.window.document.querySelectorAll('tr')) as any[]) { + const index = Number(row.querySelector('[data-row]')?.getAttribute('data-row')); + const height = () => (heights[index] ?? 30) * (parseFloat(view.window.document.body.style.fontSize) / 14 || 1); + row.getBoundingClientRect = () => ({ height: height() }); + for (const cell of Array.from(row.cells) as any[]) { + const col = cell.getAttribute('data-col') === null ? -1 : Number(cell.getAttribute('data-col')); + const width = () => parseFloat(cell.style.width) || (col === -1 ? 30 : (col === 0 ? 90 : 140)); + cell.getBoundingClientRect = () => ({ left: col === -1 ? 0 : 30 + col * 90, right: col === -1 ? 30 : 30 + col * 90 + width(), width: width(), height: height() }); + } + } +} + +async function fixture(options: Parameters[0] = {}) { + const host = await createEditorHarness({ rows: [['Name', 'Value'], ['one\nsecond line', 'a'], ['two', 'b'], ['three', 'c']], ...options }); + const view = createWebviewDom(host.panel.webview.html); + measure(view); + return { host, view }; +} + +describe('Frozen panes', () => { + it('keeps measured multiline leading rows and data columns with proper corner stacking', async () => { + const { view } = await fixture({ frozenRows: 3, frozenColumns: 1 }); + try { + view.window.csvFrozenPanes.layout(); + assert.strictEqual(view.cell(0, 0).style.top, '0px'); + assert.strictEqual(view.cell(1, 0).style.top, '25px'); + assert.strictEqual(view.cell(2, 0).style.top, '85px'); + assert.strictEqual(view.cell(1, -1).style.left, '0px'); + assert.strictEqual(view.cell(1, 0).style.left, '30px'); + assert.strictEqual(view.cell(1, 0).style.zIndex, '4'); + assert.strictEqual(view.cell(1, 1).style.zIndex, '3'); + assert.strictEqual(view.cell(3, 0).style.zIndex, '2'); + assert.ok(!view.cell(3, 1).classList.contains('csv-frozen-row')); + assert.ok(!view.cell(4, 0).classList.contains('csv-frozen-row'), 'append row remains virtual'); + } finally { view.close(); } + }); + + it('recomputes measured offsets after zoom and column resizing', async () => { + const { view } = await fixture({ frozenRows: 3, frozenColumns: 2 }); + try { + view.window.csvFrozenPanes.layout(); + view.cell(1, 0).focus(); + view.key('+', { ctrlKey: true }); + view.window.csvFrozenPanes.layout(); + assert.strictEqual(view.cell(2, 0).style.top, '93.5px'); + view.cell(0, 0).style.width = '200px'; + view.window.csvFrozenPanes.layout(); + assert.strictEqual(view.cell(1, 1).style.left, '230px'); + } finally { view.close(); } + }); + + it('supports headers off and hidden metadata without freezing the append row', async () => { + const { view } = await fixture({ header: false, frozenRows: 100, hiddenRows: 1 }); + try { + view.window.csvFrozenPanes.layout(); + assert.strictEqual(view.cell(1, 0).style.top, '0px'); + assert.strictEqual(view.cell(2, 0).style.top, '60px'); + assert.ok(!view.cell(4, 0).classList.contains('csv-frozen-row')); + } finally { view.close(); } + }); + + it('preserves the existing default header freeze and allows explicit zero to unfreeze it', async () => { + const { host, view } = await fixture(); + try { + view.window.csvFrozenPanes.layout(); + assert.ok(view.cell(0, 0).classList.contains('csv-frozen-row')); + await host.receive({ type: 'freezePanesChanged', rows: 0, columns: 0 }); + const update = host.messages.slice().reverse().find((message: any) => message.type === 'frozenPanes'); + view.window.dispatchEvent(new view.window.MessageEvent('message', { data: update })); + view.window.csvFrozenPanes.layout(); + assert.ok(!view.cell(0, 0).classList.contains('csv-frozen-row')); + assert.deepStrictEqual(CsvEditorProvider.getFrozenPanesForUri(host.context as any, host.document.uri as any, true), { rows: 0, columns: 0 }); + } finally { view.close(); } + }); + + it('persists each axis by URI and retains defaults for untouched files/header modes', async () => { + const { host, view } = await fixture(); + try { + const uri = host.document.uri as any; + await CsvEditorProvider.setFrozenPanesForUri(host.context as any, uri, { rows: 3 }); + await CsvEditorProvider.setFrozenPanesForUri(host.context as any, uri, { columns: 2 }); + assert.deepStrictEqual(CsvEditorProvider.getFrozenPanesForUri(host.context as any, uri, true), { rows: 3, columns: 2 }); + await CsvEditorProvider.setFrozenPanesForUri(host.context as any, uri, { rows: -1, columns: Infinity }); + assert.deepStrictEqual(CsvEditorProvider.getFrozenPanesForUri(host.context as any, uri, true), { rows: 3, columns: 2 }); + const other = { toString: () => 'file:///other.tsv' } as any; + assert.deepStrictEqual(CsvEditorProvider.getFrozenPanesForUri(host.context as any, other, true), { rows: 1, columns: 0 }); + assert.deepStrictEqual(CsvEditorProvider.getFrozenPanesForUri(host.context as any, other, false), { rows: 0, columns: 0 }); + } finally { view.close(); } + }); + + it('updates freeze state without replacing an active multiline draft, caret or selection', async () => { + const { host, view } = await fixture(); + try { + const cell = view.cell(1, 0); + view.start(cell); + cell.textContent = 'unsaved\nmultiline draft'; + view.caret(cell.firstChild, 8); + const html = host.panel.webview.html; + await host.receive({ type: 'freezePanesChanged', rows: 3, columns: 1 }); + const update = host.messages.slice().reverse().find((message: any) => message.type === 'frozenPanes'); + view.window.dispatchEvent(new view.window.MessageEvent('message', { data: update })); + view.window.csvFrozenPanes.layout(); + assert.strictEqual(host.panel.webview.html, html); + assert.strictEqual(view.cell(1, 0), cell); + assert.strictEqual(cell.textContent, 'unsaved\nmultiline draft'); + assert.strictEqual(view.window.document.activeElement, cell); + assert.strictEqual(view.window.getSelection().anchorOffset, 8); + } finally { view.close(); } + }); + + it('requests and freezes leading rows extending beyond the initial remote chunk', async () => { + const rows = Array.from({ length: 1100 }, (_, row) => [`row${row}`, 'value']); + const { host, view } = await fixture({ rows, frozenRows: 1002, frozenColumns: 1 }); + try { + view.window.csvFrozenPanes.layout(); + const request = view.messages.find((message: any) => message.type === 'requestChunk'); + assert.ok(request); + await host.receive(request); + const response = host.messages.slice().reverse().find((message: any) => message.type === 'chunkData'); + view.window.dispatchEvent(new view.window.MessageEvent('message', { data: response })); + view.window.csvFrozenPanes.layout(); + view.window.csvFrozenPanes.layout(); + assert.ok(view.cell(1001, 0).classList.contains('csv-frozen-row')); + assert.ok(view.cell(1002, 0).classList.contains('csv-frozen-column')); + const appendRequest = view.messages.slice().reverse().find((message: any) => message.type === 'requestChunk'); + await host.receive(appendRequest); + const appendResponse = host.messages.slice().reverse().find((message: any) => message.type === 'chunkData'); + view.window.dispatchEvent(new view.window.MessageEvent('message', { data: appendResponse })); + view.window.__csvLoadNextChunk(); + view.window.csvFrozenPanes.layout(); + assert.ok(!view.cell(1100, 0).classList.contains('csv-frozen-row')); + } finally { view.close(); } + }); + + it('freezes through a context-menu target using visible row counts and can unfreeze', async () => { + const { view } = await fixture({ hiddenRows: 1, header: false }); + try { + const target = view.cell(2, 1); + const openMenu = () => { + target.dispatchEvent(new view.window.MouseEvent('mousedown', { button: 2, bubbles: true, cancelable: true })); + target.dispatchEvent(new view.window.MouseEvent('contextmenu', { bubbles: true, cancelable: true })); + }; + const choose = (label: string) => { + const item = Array.from(view.window.document.querySelectorAll('#contextMenu div')).find((element: any) => element.textContent === label) as any; + assert.ok(item, label); + item.click(); + }; + openMenu(); + choose('Freeze rows through this row'); + openMenu(); + choose('Freeze columns through this column'); + view.window.csvFrozenPanes.layout(); + assert.strictEqual(view.cell(2, 1).style.zIndex, '4'); + assert.deepStrictEqual(JSON.parse(JSON.stringify(view.messages.filter((message: any) => message.type === 'freezePanesChanged'))), [ + { type: 'freezePanesChanged', rows: 2, columns: 0 }, { type: 'freezePanesChanged', rows: 2, columns: 2 } + ]); + openMenu(); + choose('Unfreeze rows'); + view.window.csvFrozenPanes.layout(); + assert.ok(!view.cell(2, 1).classList.contains('csv-frozen-row')); + assert.ok(view.cell(2, 1).classList.contains('csv-frozen-column')); + } finally { view.close(); } + }); + + it('observes row-height changes and recalculates sticky offsets on the next frame', async () => { + const { view } = await fixture({ frozenRows: 3 }); + try { + view.window.csvFrozenPanes.dispose(); + let resized = () => {}; + let observed = 0; + let disconnected = false; + view.window.ResizeObserver = class { + constructor(callback: () => void) { resized = callback; } + observe() { observed++; } + disconnect() { disconnected = true; } + }; + const heights = [25, 60, 35, 30]; + measure(view, heights); + const manager = view.window.createFrozenPaneManager({ table: view.window.document.querySelector('table'), firstRow: 0, realRowCount: 4 }); + manager.update(3, 0); + await new Promise(resolve => view.window.requestAnimationFrame(resolve)); + assert.ok(observed > 0); + assert.strictEqual(view.cell(2, 0).style.top, '85px'); + heights[1] = 100; + resized(); + await new Promise(resolve => view.window.requestAnimationFrame(resolve)); + assert.strictEqual(view.cell(2, 0).style.top, '125px'); + manager.dispose(); + assert.strictEqual(disconnected, true); + } finally { view.close(); } + }); + + it('adds documented command contributions and opaque sticky theme surfaces', () => { + const manifest = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'package.json'), 'utf8')); + const readme = fs.readFileSync(path.join(process.cwd(), 'README.md'), 'utf8'); + for (const command of ['csv.changeFrozenRows', 'csv.changeFrozenColumns']) { + assert.ok(manifest.contributes.commands.some((item: any) => item.command === command)); + assert.ok(manifest.activationEvents.includes(`onCommand:${command}`)); + assert.ok(readme.includes(command)); + } + const provider = fs.readFileSync(path.join(process.cwd(), 'src', 'CsvEditorProvider.ts'), 'utf8'); + assert.ok(provider.includes('background-color: var(--vscode-editor-background,')); + assert.ok(provider.includes('background-image: linear-gradient(var(--vscode-editor-selectionBackground,')); + }); +}); From ad33b378a9ffed81e13f763c7dac5945b039e559 Mon Sep 17 00:00:00 2001 From: Jona Date: Sat, 17 Oct 2026 03:04:28 -0400 Subject: [PATCH 2/4] Fix frozen row top-edge paint seam --- README.md | 2 +- media/frozen-panes.js | 8 ++++++- src/test/frozen-panes.test.ts | 43 ++++++++++++++++++++++++++++------- 3 files changed, 43 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 6ff0a4b..3e59ed3 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Working with CSV files shouldn’t be a chore. With CSV, you get: - **Interactive Editing:** Two modes — type to start a quick edit, or press Enter/double‑click for detail edit. Changes commit to the document when focus leaves the cell or CSV view; unsaved changes remain visible when you switch tabs. - **Smart Resizing:** Automatic widths follow the longest line in multiline cells. Drag close to a column boundary to resize; the narrow grab area leaves small columns selectable. Widths are remembered per file across closing and reopening. Double-click a column boundary to restore automatic sizing. Resizing also works with the header row hidden. - **Dynamic Color Coding:** Visual cues based on data type help you quickly identify numbers, dates, booleans, and more (with opt‑in cool palette and theme-foreground mode settings). -- **Frozen Rows and Columns:** Keep any number of leading visible rows and data columns in view. Right-click a cell to freeze through its row/column or unfreeze; counts are remembered per file. Frozen rows use measured heights, including multiline cells and zoom. The serial index stays visible alongside frozen data columns. +- **Frozen Rows and Columns:** Keep any number of leading visible rows and data columns in view. Right-click a cell to freeze through its row/column or unfreeze; counts are remembered per file. Frozen rows use measured heights, including multiline cells and zoom, and cover the top edge so scrolling text cannot bleed above them. The serial index stays visible alongside frozen data columns. - **Enhanced Keyboard Navigation:** Navigate cells with arrows and Tab/Shift+Tab; quick edits can commit with arrow keys; `Ctrl/Cmd + A` selects all; `Ctrl/Cmd + C` copies selection. - **Advanced Multi-Cell Selection:** Easily select and copy blocks of data, then paste them elsewhere as properly formatted CSV. - **Add/Delete Columns:** Right-click any cell to add a column left or right, or remove the selected column. diff --git a/media/frozen-panes.js b/media/frozen-panes.js index 381ca5c..8aeb5a6 100644 --- a/media/frozen-panes.js +++ b/media/frozen-panes.js @@ -42,8 +42,14 @@ window.createFrozenPaneManager = ({ table, firstRow, realRowCount, onNeedRows }) left += cell.getBoundingClientRect().width; } } - let top = 0; const lastFrozenRow = Math.min(firstRow + rows, realRowCount) - 1; + const firstFrozenCell = rendered.find(({ index }) => index >= firstRow && index <= lastFrozenRow)?.element.cells[0]; + // A collapsed border straddles the sticky edge. Cover its inner half once, + // keeping the measured spacing between frozen rows unchanged. + const topBorder = firstFrozenCell && getComputedStyle(table).borderCollapse === 'collapse' + ? parseFloat(getComputedStyle(firstFrozenCell).borderTopWidth) || 0 + : 0; + let top = -topBorder / 2; for (const { element, index } of rendered) { const frozenRow = index >= firstRow && index <= lastFrozenRow; const height = element.getBoundingClientRect().height || Math.max(0, ...Array.from(element.cells).map(cell => cell.getBoundingClientRect().height)); diff --git a/src/test/frozen-panes.test.ts b/src/test/frozen-panes.test.ts index 3078bd6..f2285a2 100644 --- a/src/test/frozen-panes.test.ts +++ b/src/test/frozen-panes.test.ts @@ -30,9 +30,9 @@ describe('Frozen panes', () => { const { view } = await fixture({ frozenRows: 3, frozenColumns: 1 }); try { view.window.csvFrozenPanes.layout(); - assert.strictEqual(view.cell(0, 0).style.top, '0px'); - assert.strictEqual(view.cell(1, 0).style.top, '25px'); - assert.strictEqual(view.cell(2, 0).style.top, '85px'); + assert.strictEqual(view.cell(0, 0).style.top, '-0.5px'); + assert.strictEqual(view.cell(1, 0).style.top, '24.5px'); + assert.strictEqual(view.cell(2, 0).style.top, '84.5px'); assert.strictEqual(view.cell(1, -1).style.left, '0px'); assert.strictEqual(view.cell(1, 0).style.left, '30px'); assert.strictEqual(view.cell(1, 0).style.zIndex, '4'); @@ -43,6 +43,31 @@ describe('Frozen panes', () => { } finally { view.close(); } }); + it('covers the collapsed top border once without rounding fractional row spacing', async () => { + const { view } = await fixture({ frozenRows: 3, frozenColumns: 1 }); + try { + const table = view.window.document.querySelector('table'); + measure(view, [25.5, 60.25, 35.75, 30]); + for (const [collapse, border, firstTop] of [ + ['collapse', 1, -0.5], + ['collapse', 2, -1], + ['collapse', 0, 0], + ['separate', 1, 0] + ] as const) { + table.style.borderCollapse = collapse; + for (const cell of Array.from(table.querySelectorAll('th, td')) as any[]) { + cell.style.borderTopWidth = `${border}px`; + } + view.window.csvFrozenPanes.layout(); + assert.strictEqual(view.cell(0, 0).style.top, `${firstTop}px`); + assert.strictEqual(view.cell(1, 0).style.top, `${firstTop + 25.5}px`); + assert.strictEqual(view.cell(2, 0).style.top, `${firstTop + 85.75}px`); + assert.strictEqual(table.rows[0].cells[0].style.top, `${firstTop}px`, 'serial corner shares the frozen row origin'); + assert.strictEqual(view.cell(0, 0).style.left, '30px', 'horizontal offsets remain measured independently'); + } + } finally { view.close(); } + }); + it('recomputes measured offsets after zoom and column resizing', async () => { const { view } = await fixture({ frozenRows: 3, frozenColumns: 2 }); try { @@ -50,7 +75,7 @@ describe('Frozen panes', () => { view.cell(1, 0).focus(); view.key('+', { ctrlKey: true }); view.window.csvFrozenPanes.layout(); - assert.strictEqual(view.cell(2, 0).style.top, '93.5px'); + assert.strictEqual(view.cell(2, 0).style.top, '93px'); view.cell(0, 0).style.width = '200px'; view.window.csvFrozenPanes.layout(); assert.strictEqual(view.cell(1, 1).style.left, '230px'); @@ -61,8 +86,8 @@ describe('Frozen panes', () => { const { view } = await fixture({ header: false, frozenRows: 100, hiddenRows: 1 }); try { view.window.csvFrozenPanes.layout(); - assert.strictEqual(view.cell(1, 0).style.top, '0px'); - assert.strictEqual(view.cell(2, 0).style.top, '60px'); + assert.strictEqual(view.cell(1, 0).style.top, '-0.5px'); + assert.strictEqual(view.cell(2, 0).style.top, '59.5px'); assert.ok(!view.cell(4, 0).classList.contains('csv-frozen-row')); } finally { view.close(); } }); @@ -77,6 +102,8 @@ describe('Frozen panes', () => { view.window.dispatchEvent(new view.window.MessageEvent('message', { data: update })); view.window.csvFrozenPanes.layout(); assert.ok(!view.cell(0, 0).classList.contains('csv-frozen-row')); + assert.strictEqual(view.cell(0, 0).style.top, '', 'unfreezing clears the collapsed-border correction'); + assert.strictEqual(view.cell(1, 0).style.top, ''); assert.deepStrictEqual(CsvEditorProvider.getFrozenPanesForUri(host.context as any, host.document.uri as any, true), { rows: 0, columns: 0 }); } finally { view.close(); } }); @@ -188,11 +215,11 @@ describe('Frozen panes', () => { manager.update(3, 0); await new Promise(resolve => view.window.requestAnimationFrame(resolve)); assert.ok(observed > 0); - assert.strictEqual(view.cell(2, 0).style.top, '85px'); + assert.strictEqual(view.cell(2, 0).style.top, '84.5px'); heights[1] = 100; resized(); await new Promise(resolve => view.window.requestAnimationFrame(resolve)); - assert.strictEqual(view.cell(2, 0).style.top, '125px'); + assert.strictEqual(view.cell(2, 0).style.top, '124.5px'); manager.dispose(); assert.strictEqual(disconnected, true); } finally { view.close(); } From e017682a95387400837b46bd8b7161c8ac78a24c Mon Sep 17 00:00:00 2001 From: Jona Date: Sat, 17 Oct 2026 03:06:31 -0400 Subject: [PATCH 3/4] Add verified frozen top-edge screenshot --- images/frozen-top-edge.jpg | Bin 0 -> 47028 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/frozen-top-edge.jpg diff --git a/images/frozen-top-edge.jpg b/images/frozen-top-edge.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d0ef25d3719727b7ed0bb8d17e2ca3b4640c3a38 GIT binary patch literal 47028 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 literal 0 HcmV?d00001 From 7c641b9f91bc37edb3ea1c27727012e01f871288 Mon Sep 17 00:00:00 2001 From: Jona Date: Sat, 17 Oct 2026 10:21:36 -0400 Subject: [PATCH 4/4] Paint opaque divider seams on every frozen row --- README.md | 2 +- images/frozen-row-dividers.jpg | Bin 0 -> 201046 bytes src/CsvEditorProvider.ts | 9 +++ src/test/frozen-panes.test.ts | 110 +++++++++++++++++++++++++++++++++ 4 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 images/frozen-row-dividers.jpg diff --git a/README.md b/README.md index 54a63cc..b3ed2c2 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Working with CSV files shouldn’t be a chore. With CSV, you get: - **Interactive Editing:** Two modes — type to start a quick edit, or press Enter/double‑click for detail edit. Changes commit to the document when focus leaves the cell or CSV view; unsaved changes remain visible when you switch tabs. - **Smart Resizing:** Automatic widths follow the longest line in multiline cells. Drag close to a column boundary to resize; the narrow grab area leaves small columns selectable. Widths are remembered per file across closing and reopening. Double-click a column boundary to restore automatic sizing. Resizing also works with the header row hidden. - **Dynamic Color Coding:** Visual cues based on data type help you quickly identify numbers, dates, booleans, and more (with opt‑in cool palette and theme-foreground mode settings). -- **Frozen Rows and Columns:** Keep any number of leading visible rows and data columns in view. Right-click a cell to freeze through its row/column or unfreeze; counts are remembered per file. Frozen rows use measured heights, including multiline cells and zoom, and cover the top edge so scrolling text cannot bleed above them. The serial index stays visible alongside frozen data columns. +- **Frozen Rows and Columns:** Keep any number of leading visible rows and data columns in view. Right-click a cell to freeze through its row/column or unfreeze; counts are remembered per file. Frozen rows use measured heights, including multiline cells and zoom, and paint divider-colored edges on every frozen row so scrolling text cannot show through the seams. The serial index stays visible alongside frozen data columns. - **Enhanced Keyboard Navigation:** Navigate cells with arrows and Tab/Shift+Tab; quick edits can commit with arrow keys; `Ctrl/Cmd + A` selects all; `Ctrl/Cmd + C` copies selection. - **Advanced Multi-Cell Selection:** Easily select and copy blocks of data, then paste them elsewhere as properly formatted CSV. - **Add/Delete Columns:** Right-click any cell to add a column left or right, or remove the selected column. diff --git a/images/frozen-row-dividers.jpg b/images/frozen-row-dividers.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7ee76419301bd90c048e85597c629b9687f023c4 GIT binary patch literal 201046 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, heights = [25, 60, 3 } } +// jsdom does not implement pseudo-element computed styles. Match the live +// cell against the real rule's owner selector; browser QA checks raster paint. +function dividerRules(view: ReturnType): any[] { + return (Array.from(view.window.document.styleSheets) as any[]) + .flatMap(sheet => Array.from(sheet.cssRules) as any[]) + .filter(rule => rule.selectorText?.includes('.csv-frozen-row') && rule.selectorText.includes('::before')); +} + +function dividerRule(view: ReturnType, cell: any): any { + return dividerRules(view).find(rule => cell.matches(rule.selectorText.replace(/::before\b/g, ''))); +} + async function fixture(options: Parameters[0] = {}) { const host = await createEditorHarness({ rows: [['Name', 'Value'], ['one\nsecond line', 'a'], ['two', 'b'], ['three', 'c']], ...options }); const view = createWebviewDom(host.panel.webview.html); @@ -29,6 +41,95 @@ async function fixture(options: Parameters[0] = {}) } describe('Frozen panes', () => { + it('paints every frozen row divider, including serial and corner cells, without painting column-only or append cells', async () => { + for (const separator of [',', '\t']) { + for (const header of [true, false]) { + const { host, view } = await fixture({ separator, header, hiddenRows: header ? 0 : 1, frozenRows: header ? 3 : 2, frozenColumns: 1 }); + try { + const document = view.window.document; + const accessibility = document.createElement('style'); + accessibility.textContent = fs.readFileSync(path.join(process.cwd(), 'media', 'high-contrast.css'), 'utf8'); + document.head.append(accessibility); + measure(view, [25.5, 60.25, 35.75, 30]); + view.window.csvFrozenPanes.layout(); + const frozen = Array.from(document.querySelectorAll('.csv-frozen-row')) as any[]; + assert.strictEqual(frozen.length, (header ? 3 : 2) * 3, 'every data and serial cell in every requested row is frozen'); + if (header) { assert.ok(frozen.includes(document.querySelector('thead th')), 'the coordinate-free serial corner is included'); } + const firstRow = header ? 0 : 1; + assert.strictEqual(view.cell(firstRow, 0).style.top, '-0.5px'); + assert.strictEqual(view.cell(2, 0).style.top, header ? '85.25px' : '59.75px', 'fractional measured row spacing is unchanged'); + const geometry = frozen.map(cell => [cell.style.top, cell.style.left, cell.style.height, cell.style.width, cell.getBoundingClientRect().height]); + for (const theme of ['vscode-light', 'vscode-dark', 'vscode-high-contrast', 'vscode-high-contrast-light']) { + document.body.className = theme; + for (const cell of frozen) { + const rule = dividerRule(view, cell); + assert.ok(rule, `${theme}: ${cell.tagName} row ${cell.dataset.row ?? 'corner'} must cover its collapsed divider seam`); + assert.ok(rule.style.getPropertyValue('content'), 'the divider pseudo-element is generated'); + assert.strictEqual(rule.style.getPropertyValue('position'), 'absolute'); + assert.strictEqual(rule.style.getPropertyValue('pointer-events'), 'none', 'divider paint cannot intercept cell selection or editing'); + assert.ok(parseFloat(rule.style.getPropertyValue('inset')) < 0, 'the seam cover extends across the collapsed edge'); + const border = rule.style.getPropertyValue('border-block'); + assert.ok(border.includes('--csv-contrast-border') && border.includes('--csv-table-border'), 'both divider edges follow the existing HC/table border colors'); + assert.strictEqual(rule.style.getPropertyValue('color'), '', 'divider paint does not replace cell foregrounds'); + } + for (const cell of [view.cell(3, 0), view.cell(3, 1), view.cell(4, 0), view.cell(4, -1)]) { + assert.ok(!cell.classList.contains('csv-frozen-row')); + assert.ok(!dividerRule(view, cell), 'column-only, unfrozen and virtual cells do not receive row seam paint'); + } + assert.deepStrictEqual(frozen.map(cell => [cell.style.top, cell.style.left, cell.style.height, cell.style.width, cell.getBoundingClientRect().height]), geometry); + } + view.window.csvFrozenPanes.update(0, 1); + view.window.csvFrozenPanes.layout(); + for (const cell of frozen) { + assert.ok(!cell.classList.contains('csv-frozen-row')); + assert.ok(!dividerRule(view, cell), 'unfreezing removes only the row divider paint'); + assert.strictEqual(cell.style.top, ''); + } + assert.strictEqual(view.cell(firstRow, 0).style.left, '30px', 'column freezing remains intact'); + assert.strictEqual(host.document.version, 1); + assert.strictEqual(host.document.getText(), host.diskText); + } finally { view.close(); } + } + } + }); + + it('keeps frozen selection and Find surfaces, outlines, colors and geometry unchanged by the divider paint rule', async () => { + const { view } = await fixture({ frozenRows: 3, frozenColumns: 1 }); + try { + const document = view.window.document; + const accessibility = document.createElement('style'); + accessibility.textContent = fs.readFileSync(path.join(process.cwd(), 'media', 'high-contrast.css'), 'utf8'); + document.head.append(accessibility); + measure(view, [25.5, 60.25, 35.75, 30]); + view.window.csvFrozenPanes.layout(); + view.cell(0, 0).classList.add('selected'); + view.cell(1, 0).classList.add('highlight'); + view.cell(2, 0).classList.add('active-match'); + const cells = Array.from(document.querySelectorAll('th, td')) as any[]; + const styles = Array.from(document.querySelectorAll('style')) as any[]; + const originalStyles = styles.map(style => style.textContent); + const paintRules = dividerRules(view); + const withoutPaint = styles.map(style => Array.from(style.sheet.cssRules) + .filter((rule: any) => !paintRules.includes(rule)) + .map((rule: any) => rule.cssText).join('\n')); + assert.ok(paintRules.length > 0, 'the actual provider stylesheet supplies the row seam paint'); + const snapshot = () => cells.map(cell => { + const computed = view.window.getComputedStyle(cell); + return ['background-color', 'background-image', 'outline', 'outline-offset', 'color', 'border-top-width', 'padding', 'height', 'width', 'position', 'top', 'left', 'z-index'].map(property => computed.getPropertyValue(property)); + }); + for (const theme of ['vscode-light', 'vscode-dark', 'vscode-high-contrast', 'vscode-high-contrast-light']) { + document.body.className = theme; + const painted = snapshot(); + styles.forEach((style, index) => { style.textContent = withoutPaint[index]; }); + assert.deepStrictEqual(snapshot(), painted, `${theme}: painting the seam changes no existing selection/Find surface, outline, foreground or layout property`); + styles.forEach((style, index) => { style.textContent = originalStyles[index]; }); + assert.deepStrictEqual(snapshot(), painted); + assert.ok(view.cell(0, 0).classList.contains('selected')); + assert.ok(view.cell(1, 0).classList.contains('highlight')); + assert.ok(view.cell(2, 0).classList.contains('active-match')); + } + } finally { view.close(); } + }); it('keeps measured multiline leading rows and data columns with proper corner stacking', async () => { const { view } = await fixture({ frozenRows: 3, frozenColumns: 1 }); try { @@ -134,6 +235,8 @@ describe('Frozen panes', () => { cell.textContent = 'unsaved\nmultiline draft'; view.caret(cell.firstChild, 8); const html = host.panel.webview.html; + const source = host.document.getText(); + const selected = Array.from(view.window.document.querySelectorAll('.selected')); await host.receive({ type: 'freezePanesChanged', rows: 3, columns: 1 }); const update = host.messages.slice().reverse().find((message: any) => message.type === 'frozenPanes'); view.window.dispatchEvent(new view.window.MessageEvent('message', { data: update })); @@ -143,6 +246,10 @@ describe('Frozen panes', () => { assert.strictEqual(cell.textContent, 'unsaved\nmultiline draft'); assert.strictEqual(view.window.document.activeElement, cell); assert.strictEqual(view.window.getSelection().anchorOffset, 8); + assert.deepStrictEqual(Array.from(view.window.document.querySelectorAll('.selected')), selected); + assert.ok(dividerRule(view, cell), 'seam paint also covers the actively edited frozen row'); + assert.strictEqual(host.document.getText(), source); + assert.strictEqual(host.document.version, 1); } finally { view.close(); } }); @@ -159,7 +266,10 @@ describe('Frozen panes', () => { view.window.csvFrozenPanes.layout(); view.window.csvFrozenPanes.layout(); assert.ok(view.cell(1001, 0).classList.contains('csv-frozen-row')); + assert.ok(dividerRule(view, view.cell(1001, 0)), 'remote rows inherit the same divider paint'); + assert.ok(dividerRule(view, view.cell(1001, -1)), 'remote serial cells are painted too'); assert.ok(view.cell(1002, 0).classList.contains('csv-frozen-column')); + assert.ok(!dividerRule(view, view.cell(1002, 0))); const appendRequest = view.messages.slice().reverse().find((message: any) => message.type === 'requestChunk'); await host.receive(appendRequest); const appendResponse = host.messages.slice().reverse().find((message: any) => message.type === 'chunkData');