@extend-ai/react-xlsx 0.8.3 → 0.8.4
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/index.cjs +904 -178
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +904 -178
- package/dist/index.js.map +1 -1
- package/dist/xlsx-worker.js +67 -21
- package/dist/xlsx-worker.js.map +1 -1
- package/package.json +1 -1
package/dist/xlsx-worker.js
CHANGED
|
@@ -4120,6 +4120,10 @@ function parseSheetState(archive, path, options) {
|
|
|
4120
4120
|
let hasVerticalMerges = false;
|
|
4121
4121
|
let maxHorizontalMergeEndCol = -1;
|
|
4122
4122
|
let maxVerticalMergeEndRow = -1;
|
|
4123
|
+
let minContentCol = Number.POSITIVE_INFINITY;
|
|
4124
|
+
let minContentRow = Number.POSITIVE_INFINITY;
|
|
4125
|
+
let maxContentCol = -1;
|
|
4126
|
+
let maxContentRow = -1;
|
|
4123
4127
|
const columnWidthCharacterWidthPx = measureColumnCharacterWidthPx(
|
|
4124
4128
|
options?.defaultFont?.family,
|
|
4125
4129
|
options?.defaultFont?.sizePt
|
|
@@ -4132,6 +4136,26 @@ function parseSheetState(archive, path, options) {
|
|
|
4132
4136
|
sheetViewNode?.getAttribute("zoomScale") ?? sheetViewNode?.getAttribute("zoomScaleNormal") ?? Number.NaN
|
|
4133
4137
|
);
|
|
4134
4138
|
const zoomScale = Number.isFinite(rawZoomScale) && rawZoomScale > 0 ? rawZoomScale : 100;
|
|
4139
|
+
const trackContentCell = (cellRef) => {
|
|
4140
|
+
if (!cellRef) {
|
|
4141
|
+
return;
|
|
4142
|
+
}
|
|
4143
|
+
const cell = parseA1CellReference(cellRef);
|
|
4144
|
+
if (!cell) {
|
|
4145
|
+
return;
|
|
4146
|
+
}
|
|
4147
|
+
minContentCol = Math.min(minContentCol, cell.col);
|
|
4148
|
+
minContentRow = Math.min(minContentRow, cell.row);
|
|
4149
|
+
maxContentCol = Math.max(maxContentCol, cell.col);
|
|
4150
|
+
maxContentRow = Math.max(maxContentRow, cell.row);
|
|
4151
|
+
};
|
|
4152
|
+
const isMeaningfulCellNode = (cellNode) => {
|
|
4153
|
+
if (getFirstChild(cellNode, "f") || getFirstChild(cellNode, "is")) {
|
|
4154
|
+
return true;
|
|
4155
|
+
}
|
|
4156
|
+
const valueNode = getFirstChild(cellNode, "v");
|
|
4157
|
+
return Boolean(valueNode && (valueNode.textContent ?? "").length > 0);
|
|
4158
|
+
};
|
|
4135
4159
|
getLocalElements(document2, "row").forEach((rowNode) => {
|
|
4136
4160
|
const rowIndex = Number(rowNode.getAttribute("r") ?? 0) - 1;
|
|
4137
4161
|
const height = Number(rowNode.getAttribute("ht") ?? Number.NaN);
|
|
@@ -4146,17 +4170,36 @@ function parseSheetState(archive, path, options) {
|
|
|
4146
4170
|
if (rowIndex >= 0 && isHidden) {
|
|
4147
4171
|
hiddenRows.add(rowIndex);
|
|
4148
4172
|
}
|
|
4149
|
-
|
|
4150
|
-
|
|
4173
|
+
getChildElements(rowNode, "c").forEach((cellNode) => {
|
|
4174
|
+
const cellRef = cellNode.getAttribute("r");
|
|
4175
|
+
if (isMeaningfulCellNode(cellNode)) {
|
|
4176
|
+
trackContentCell(cellRef);
|
|
4177
|
+
}
|
|
4178
|
+
if (includeCachedFormulaValues) {
|
|
4151
4179
|
const formulaNode = getFirstChild(cellNode, "f");
|
|
4152
4180
|
const valueNode = getFirstChild(cellNode, "v");
|
|
4153
|
-
const cellRef = cellNode.getAttribute("r");
|
|
4154
4181
|
if (formulaNode && valueNode && cellRef) {
|
|
4155
4182
|
cachedFormulaValues[cellRef] = valueNode.textContent ?? "";
|
|
4156
4183
|
}
|
|
4157
|
-
}
|
|
4184
|
+
}
|
|
4185
|
+
});
|
|
4186
|
+
});
|
|
4187
|
+
getLocalElements(document2, "mergeCell").forEach((mergeNode) => {
|
|
4188
|
+
const reference = mergeNode.getAttribute("ref");
|
|
4189
|
+
const range = reference ? parseA1RangeReference(reference) : null;
|
|
4190
|
+
if (!range) {
|
|
4191
|
+
return;
|
|
4192
|
+
}
|
|
4193
|
+
if (range.end.col > range.start.col) {
|
|
4194
|
+
hasHorizontalMerges = true;
|
|
4195
|
+
maxHorizontalMergeEndCol = Math.max(maxHorizontalMergeEndCol, range.end.col);
|
|
4196
|
+
}
|
|
4197
|
+
if (range.end.row > range.start.row) {
|
|
4198
|
+
hasVerticalMerges = true;
|
|
4199
|
+
maxVerticalMergeEndRow = Math.max(maxVerticalMergeEndRow, range.end.row);
|
|
4158
4200
|
}
|
|
4159
4201
|
});
|
|
4202
|
+
const maxMetadataCol = Math.max(maxContentCol, maxHorizontalMergeEndCol, 0) + 256;
|
|
4160
4203
|
getLocalElements(document2, "col").forEach((colNode) => {
|
|
4161
4204
|
const min = Number(colNode.getAttribute("min") ?? 0) - 1;
|
|
4162
4205
|
const max = Number(colNode.getAttribute("max") ?? 0) - 1;
|
|
@@ -4168,7 +4211,7 @@ function parseSheetState(archive, path, options) {
|
|
|
4168
4211
|
return;
|
|
4169
4212
|
}
|
|
4170
4213
|
}
|
|
4171
|
-
for (let col = min; col <= max; col += 1) {
|
|
4214
|
+
for (let col = min; col <= Math.min(max, maxMetadataCol); col += 1) {
|
|
4172
4215
|
if (col >= 0) {
|
|
4173
4216
|
if (Number.isFinite(width)) {
|
|
4174
4217
|
const widthPx = sheetColumnWidthToPixels(width, columnWidthCharacterWidthPx);
|
|
@@ -4183,21 +4226,6 @@ function parseSheetState(archive, path, options) {
|
|
|
4183
4226
|
}
|
|
4184
4227
|
}
|
|
4185
4228
|
});
|
|
4186
|
-
getLocalElements(document2, "mergeCell").forEach((mergeNode) => {
|
|
4187
|
-
const reference = mergeNode.getAttribute("ref");
|
|
4188
|
-
const range = reference ? parseA1RangeReference(reference) : null;
|
|
4189
|
-
if (!range) {
|
|
4190
|
-
return;
|
|
4191
|
-
}
|
|
4192
|
-
if (range.end.col > range.start.col) {
|
|
4193
|
-
hasHorizontalMerges = true;
|
|
4194
|
-
maxHorizontalMergeEndCol = Math.max(maxHorizontalMergeEndCol, range.end.col);
|
|
4195
|
-
}
|
|
4196
|
-
if (range.end.row > range.start.row) {
|
|
4197
|
-
hasVerticalMerges = true;
|
|
4198
|
-
maxVerticalMergeEndRow = Math.max(maxVerticalMergeEndRow, range.end.row);
|
|
4199
|
-
}
|
|
4200
|
-
});
|
|
4201
4229
|
return {
|
|
4202
4230
|
cachedFormulaValues,
|
|
4203
4231
|
columnWidthCharacterWidthPx,
|
|
@@ -4210,6 +4238,10 @@ function parseSheetState(archive, path, options) {
|
|
|
4210
4238
|
hasVerticalMerges,
|
|
4211
4239
|
maxHorizontalMergeEndCol,
|
|
4212
4240
|
maxVerticalMergeEndRow,
|
|
4241
|
+
maxContentCol,
|
|
4242
|
+
maxContentRow,
|
|
4243
|
+
minContentCol: Number.isFinite(minContentCol) ? minContentCol : -1,
|
|
4244
|
+
minContentRow: Number.isFinite(minContentRow) ? minContentRow : -1,
|
|
4213
4245
|
hiddenCols: [...hiddenCols].sort((left, right) => left - right),
|
|
4214
4246
|
hiddenRows: [...hiddenRows].sort((left, right) => left - right),
|
|
4215
4247
|
rowHeightOverridesPx,
|
|
@@ -4517,6 +4549,20 @@ function resolveWorksheetZoomScale(worksheet, sheetState) {
|
|
|
4517
4549
|
const value = candidates.find((entry) => typeof entry === "number" && Number.isFinite(entry) && entry > 0);
|
|
4518
4550
|
return value ?? DEFAULT_ZOOM_SCALE;
|
|
4519
4551
|
}
|
|
4552
|
+
function resolveSheetDisplayUsedRange(usedRange, sheetState) {
|
|
4553
|
+
const [minRow, minCol, maxRow, maxCol] = usedRange;
|
|
4554
|
+
const maxMeaningfulRow = Math.max(sheetState?.maxContentRow ?? -1, sheetState?.maxVerticalMergeEndRow ?? -1);
|
|
4555
|
+
const maxMeaningfulCol = Math.max(sheetState?.maxContentCol ?? -1, sheetState?.maxHorizontalMergeEndCol ?? -1);
|
|
4556
|
+
if (maxMeaningfulRow < 0 && maxMeaningfulCol < 0) {
|
|
4557
|
+
return usedRange;
|
|
4558
|
+
}
|
|
4559
|
+
return [
|
|
4560
|
+
sheetState?.minContentRow !== void 0 && sheetState.minContentRow >= 0 ? Math.min(minRow, sheetState.minContentRow) : minRow,
|
|
4561
|
+
sheetState?.minContentCol !== void 0 && sheetState.minContentCol >= 0 ? Math.min(minCol, sheetState.minContentCol) : minCol,
|
|
4562
|
+
maxMeaningfulRow >= 0 ? Math.min(maxRow, maxMeaningfulRow) : maxRow,
|
|
4563
|
+
maxMeaningfulCol >= 0 ? Math.min(maxCol, maxMeaningfulCol) : maxCol
|
|
4564
|
+
];
|
|
4565
|
+
}
|
|
4520
4566
|
function buildSheetList(nextWorkbook, structureAssets, showHiddenSheets = false) {
|
|
4521
4567
|
const sheetsByWorkbookSheetIndex = [];
|
|
4522
4568
|
for (let index = 0; index < nextWorkbook.sheetCount; index += 1) {
|
|
@@ -4583,7 +4629,7 @@ function buildSheetList(nextWorkbook, structureAssets, showHiddenSheets = false)
|
|
|
4583
4629
|
});
|
|
4584
4630
|
continue;
|
|
4585
4631
|
}
|
|
4586
|
-
const [minRow, minCol, maxRow, maxCol] = usedRange;
|
|
4632
|
+
const [minRow, minCol, maxRow, maxCol] = resolveSheetDisplayUsedRange(usedRange, sheetState);
|
|
4587
4633
|
const hiddenRows = (sheetState?.hiddenRows ?? []).filter((row) => row >= 0 && row <= maxRow);
|
|
4588
4634
|
const hiddenCols = (sheetState?.hiddenCols ?? []).filter((col) => col >= 0 && col <= maxCol);
|
|
4589
4635
|
sheetsByWorkbookSheetIndex.push({
|