/** * @fileoverview Read-only, virtualized XLSX preview for the file-preview overlay. * * `CodemanSpreadsheetPreview.open({ container, url, size })` fetches the workbook * bytes (same-origin only, `?preview=true` so the server applies its 10 MB * preview cap), hands them to spreadsheet-preview-worker.js, and renders only * the visible tile of cells. Parsing happens entirely in the browser worker; the * server just streams the file through its existing confined raw routes. * * Every workbook string (cell text, sheet names) is written with `textContent`, * never markup. The per-style `