@file-viewer/renderer-spreadsheet 2.1.4 → 2.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/spreadsheet.js +24 -3
- package/package.json +2 -2
package/dist/spreadsheet.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createFileViewerWorkerController, createFileViewerTranslator, createFileViewerZoomChangeEmitter as createZoomChangeEmitter, registerFileViewerZoomProvider, resolveFileViewerSpreadsheetWorkerUrl, unregisterFileViewerZoomProvider, } from '@file-viewer/core';
|
|
2
2
|
import { buildRows, clampWindowStart, collectWindowStarts, createEmptyVirtualState, DEFAULT_SHEET_DEFAULTS, displayCellKey, getDataKey, INDEX_COLUMN_KEY, markWindowState, ROW_STATE_FIELD, RowState, WINDOW_SIZE, } from './spreadsheet/state.js';
|
|
3
3
|
import { buildColumns, createTableConfig, detectIndexOffset, getDisplayColumns, getRowHeight, HEADER_HEIGHT, INDEX_COLUMN_WIDTH, normalizeCellStyle, normalizeRowHeight, RESIZABLE_COLUMN_MIN_WIDTH, } from './spreadsheet/view.js';
|
|
4
|
+
const EXCEL_IMAGE_SCROLLBAR_GUARD = 18;
|
|
4
5
|
const spreadsheetStyle = `
|
|
5
6
|
.excel-wrapper{position:relative;width:100%;height:100%;display:flex;flex-direction:column;background:#fff;color:#172033;font-family:Aptos,'Segoe UI','PingFang SC','Microsoft YaHei',sans-serif}
|
|
6
7
|
.excel-wrapper *{box-sizing:border-box}
|
|
@@ -13,7 +14,7 @@ const spreadsheetStyle = `
|
|
|
13
14
|
.excel-wrapper .sheet-loading{position:absolute;right:18px;bottom:18px;z-index:20;display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:14px;background:rgba(33,163,102,.1);border:1px solid rgba(33,163,102,.2);box-shadow:0 8px 20px rgba(33,163,102,.12);color:#1a7f50;font-size:12px;font-weight:700;pointer-events:none}
|
|
14
15
|
.excel-wrapper .sheet-loading-dot{width:8px;height:8px;flex-shrink:0;border-radius:999px;background:#21a366;box-shadow:0 0 0 6px rgba(33,163,102,.12);animation:sheet-loading-pulse 1.2s ease-in-out infinite}
|
|
15
16
|
.excel-wrapper .sheet-loading-summary{color:#5f6368}
|
|
16
|
-
.excel-wrapper .excel-image-viewport{position:absolute;
|
|
17
|
+
.excel-wrapper .excel-image-viewport{position:absolute;z-index:35;overflow:hidden;pointer-events:none}
|
|
17
18
|
.excel-wrapper .excel-image-layer{position:absolute;inset:0 auto auto 0;width:0;height:0;transform-origin:0 0;will-change:transform}
|
|
18
19
|
.excel-wrapper .excel-image{position:absolute;display:block;max-width:none;height:auto;object-fit:contain;user-select:none}
|
|
19
20
|
.excel-wrapper .loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.96);z-index:999;backdrop-filter:blur(6px)}
|
|
@@ -346,10 +347,26 @@ const renderFileViewerSpreadsheet = async (buffer, target, _type, context) => {
|
|
|
346
347
|
minScale: 0.5,
|
|
347
348
|
maxScale: 2.5,
|
|
348
349
|
});
|
|
350
|
+
const getImageViewportScrollbarGuard = () => {
|
|
351
|
+
const tableContainer = tableHost.querySelector('.e-virt-table-container');
|
|
352
|
+
const vertical = tableContainer
|
|
353
|
+
? Math.max(tableContainer.offsetWidth - tableContainer.clientWidth, 0)
|
|
354
|
+
: 0;
|
|
355
|
+
const horizontal = tableContainer
|
|
356
|
+
? Math.max(tableContainer.offsetHeight - tableContainer.clientHeight, 0)
|
|
357
|
+
: 0;
|
|
358
|
+
// e-virt-table may draw overlay scrollbars, so keep a small reserved lane
|
|
359
|
+
// even when native scrollbar metrics report zero.
|
|
360
|
+
return {
|
|
361
|
+
vertical: vertical || EXCEL_IMAGE_SCROLLBAR_GUARD,
|
|
362
|
+
horizontal: horizontal || EXCEL_IMAGE_SCROLLBAR_GUARD,
|
|
363
|
+
};
|
|
364
|
+
};
|
|
349
365
|
const renderImages = () => {
|
|
350
366
|
const margin = 240;
|
|
351
|
-
const
|
|
352
|
-
const
|
|
367
|
+
const guard = getImageViewportScrollbarGuard();
|
|
368
|
+
const width = Math.max(imageViewportState.width - scalePx(INDEX_COLUMN_WIDTH) - guard.vertical, 0);
|
|
369
|
+
const height = Math.max(imageViewportState.height - scalePx(HEADER_HEIGHT) - guard.horizontal, 0);
|
|
353
370
|
const visibleImages = sheetImages.filter((image) => {
|
|
354
371
|
const x = scalePx(image.left) - imageViewportState.scrollX;
|
|
355
372
|
const y = scalePx(image.top) - imageViewportState.scrollY;
|
|
@@ -362,6 +379,10 @@ const renderFileViewerSpreadsheet = async (buffer, target, _type, context) => {
|
|
|
362
379
|
Object.assign(imageViewport.style, {
|
|
363
380
|
left: `${scalePx(INDEX_COLUMN_WIDTH)}px`,
|
|
364
381
|
top: `${scalePx(HEADER_HEIGHT)}px`,
|
|
382
|
+
right: 'auto',
|
|
383
|
+
bottom: 'auto',
|
|
384
|
+
width: `${width}px`,
|
|
385
|
+
height: `${height}px`,
|
|
365
386
|
});
|
|
366
387
|
imageLayer.style.transform =
|
|
367
388
|
`translate(${-imageViewportState.scrollX}px, ${-imageViewportState.scrollY}px)`;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@file-viewer/renderer-spreadsheet",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.6",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Standalone spreadsheet renderer plugin for Flyfish File Viewer powered by styled-exceljs and e-virt-table.",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"LICENSE"
|
|
69
69
|
],
|
|
70
70
|
"dependencies": {
|
|
71
|
-
"@file-viewer/core": "^2.1.
|
|
71
|
+
"@file-viewer/core": "^2.1.6",
|
|
72
72
|
"e-virt-table": "^1.3.26",
|
|
73
73
|
"styled-exceljs": "0.21.1",
|
|
74
74
|
"tinycolor2": "^1.6.0"
|