@rowsncolumns/toolkit 24.4.1 → 24.4.3
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/cjs/excel-parser/cfb-decryptor.d.ts +6 -0
- package/dist/cjs/excel-parser/cfb-decryptor.d.ts.map +1 -1
- package/dist/cjs/excel-parser/cfb-decryptor.js +6 -0
- package/dist/cjs/excel-parser/helpers.d.ts +9 -1
- package/dist/cjs/excel-parser/helpers.d.ts.map +1 -1
- package/dist/cjs/excel-parser/helpers.js +37 -0
- package/dist/cjs/excel-parser/interface.d.ts +10 -1
- package/dist/cjs/excel-parser/interface.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/ods/index.d.ts +19 -0
- package/dist/cjs/excel-parser/plugins/ods/index.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/ods/index.js +676 -304
- package/dist/cjs/excel-parser/plugins/ods/styles.d.ts +43 -1
- package/dist/cjs/excel-parser/plugins/ods/styles.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/ods/styles.js +343 -45
- package/dist/cjs/excel-parser/plugins/xls/index.d.ts +11 -3
- package/dist/cjs/excel-parser/plugins/xls/index.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xls/index.js +55 -6
- package/dist/cjs/excel-parser/plugins/xlsb/index.d.ts +4 -0
- package/dist/cjs/excel-parser/plugins/xlsb/index.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsb/index.js +21 -9
- package/dist/cjs/excel-parser/plugins/xlsx/charts.d.ts +10 -0
- package/dist/cjs/excel-parser/plugins/xlsx/charts.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/charts.js +68 -9
- package/dist/cjs/excel-parser/plugins/xlsx/drawing.d.ts +28 -1
- package/dist/cjs/excel-parser/plugins/xlsx/drawing.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/drawing.js +155 -20
- package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts +26 -1
- package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/index.js +567 -234
- package/dist/cjs/excel-parser/plugins/xlsx/pivots.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/pivots.js +125 -37
- package/dist/cjs/excel-parser/plugins/xlsx/sheet-views.d.ts +3 -0
- package/dist/cjs/excel-parser/plugins/xlsx/sheet-views.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/sheet-views.js +4 -1
- package/dist/cjs/excel-parser/plugins/xlsx/styles.d.ts.map +1 -1
- package/dist/cjs/excel-parser/plugins/xlsx/styles.js +12 -2
- package/dist/cjs/excel-parser/registry.d.ts.map +1 -1
- package/dist/cjs/excel-parser/registry.js +2 -0
- package/dist/cjs/excel-parser/types.d.ts +7 -1
- package/dist/cjs/excel-parser/types.d.ts.map +1 -1
- package/dist/cjs/excel-parser/workbook.d.ts +1 -0
- package/dist/cjs/excel-parser/workbook.d.ts.map +1 -1
- package/dist/cjs/excel-parser/workbook.js +4 -0
- package/dist/cjs/excel-parser/worker.js +3 -1
- package/dist/cjs/exporter/ods/ods-export.d.ts.map +1 -1
- package/dist/cjs/exporter/ods/ods-export.js +432 -175
- package/dist/cjs/exporter/xlsx/chart-builder.d.ts.map +1 -1
- package/dist/cjs/exporter/xlsx/chart-builder.js +210 -6
- package/dist/cjs/exporter/xlsx/pivot-builder.d.ts +8 -0
- package/dist/cjs/exporter/xlsx/pivot-builder.d.ts.map +1 -1
- package/dist/cjs/exporter/xlsx/pivot-builder.js +141 -42
- package/dist/cjs/exporter/xlsx/style-builder.js +9 -3
- package/dist/cjs/exporter/xlsx/threaded-comments-builder.d.ts +7 -1
- package/dist/cjs/exporter/xlsx/threaded-comments-builder.d.ts.map +1 -1
- package/dist/cjs/exporter/xlsx/threaded-comments-builder.js +15 -3
- package/dist/cjs/exporter/xlsx/xlsx-export.d.ts +11 -2
- package/dist/cjs/exporter/xlsx/xlsx-export.d.ts.map +1 -1
- package/dist/cjs/exporter/xlsx/xlsx-export.js +678 -222
- package/dist/cjs/helpers/implicit-intersection.d.ts +16 -0
- package/dist/cjs/helpers/implicit-intersection.d.ts.map +1 -0
- package/dist/cjs/helpers/implicit-intersection.js +197 -0
- package/dist/cjs/print-settings.d.ts +105 -0
- package/dist/cjs/print-settings.d.ts.map +1 -0
- package/dist/cjs/print-settings.js +494 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/excel-parser/cfb-decryptor.d.ts +6 -0
- package/dist/esm/excel-parser/cfb-decryptor.d.ts.map +1 -1
- package/dist/esm/excel-parser/cfb-decryptor.js +6 -0
- package/dist/esm/excel-parser/helpers.d.ts +9 -1
- package/dist/esm/excel-parser/helpers.d.ts.map +1 -1
- package/dist/esm/excel-parser/helpers.js +34 -0
- package/dist/esm/excel-parser/interface.d.ts +10 -1
- package/dist/esm/excel-parser/interface.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/ods/index.d.ts +19 -0
- package/dist/esm/excel-parser/plugins/ods/index.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/ods/index.js +347 -33
- package/dist/esm/excel-parser/plugins/ods/styles.d.ts +43 -1
- package/dist/esm/excel-parser/plugins/ods/styles.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/ods/styles.js +276 -2
- package/dist/esm/excel-parser/plugins/xls/index.d.ts +11 -3
- package/dist/esm/excel-parser/plugins/xls/index.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xls/index.js +37 -5
- package/dist/esm/excel-parser/plugins/xlsb/index.d.ts +4 -0
- package/dist/esm/excel-parser/plugins/xlsb/index.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsb/index.js +20 -6
- package/dist/esm/excel-parser/plugins/xlsx/charts.d.ts +10 -0
- package/dist/esm/excel-parser/plugins/xlsx/charts.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/charts.js +69 -6
- package/dist/esm/excel-parser/plugins/xlsx/drawing.d.ts +28 -1
- package/dist/esm/excel-parser/plugins/xlsx/drawing.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/drawing.js +99 -0
- package/dist/esm/excel-parser/plugins/xlsx/index.d.ts +26 -1
- package/dist/esm/excel-parser/plugins/xlsx/index.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/index.js +362 -26
- package/dist/esm/excel-parser/plugins/xlsx/pivots.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/pivots.js +86 -6
- package/dist/esm/excel-parser/plugins/xlsx/sheet-views.d.ts +3 -0
- package/dist/esm/excel-parser/plugins/xlsx/sheet-views.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/sheet-views.js +2 -0
- package/dist/esm/excel-parser/plugins/xlsx/styles.d.ts.map +1 -1
- package/dist/esm/excel-parser/plugins/xlsx/styles.js +12 -2
- package/dist/esm/excel-parser/registry.d.ts.map +1 -1
- package/dist/esm/excel-parser/registry.js +2 -0
- package/dist/esm/excel-parser/types.d.ts +7 -1
- package/dist/esm/excel-parser/types.d.ts.map +1 -1
- package/dist/esm/excel-parser/workbook.d.ts +1 -0
- package/dist/esm/excel-parser/workbook.d.ts.map +1 -1
- package/dist/esm/excel-parser/workbook.js +3 -0
- package/dist/esm/excel-parser/worker.js +2 -0
- package/dist/esm/exporter/ods/ods-export.d.ts.map +1 -1
- package/dist/esm/exporter/ods/ods-export.js +306 -35
- package/dist/esm/exporter/xlsx/chart-builder.d.ts.map +1 -1
- package/dist/esm/exporter/xlsx/chart-builder.js +161 -0
- package/dist/esm/exporter/xlsx/pivot-builder.d.ts +8 -0
- package/dist/esm/exporter/xlsx/pivot-builder.d.ts.map +1 -1
- package/dist/esm/exporter/xlsx/pivot-builder.js +104 -19
- package/dist/esm/exporter/xlsx/style-builder.js +9 -3
- package/dist/esm/exporter/xlsx/threaded-comments-builder.d.ts +7 -1
- package/dist/esm/exporter/xlsx/threaded-comments-builder.d.ts.map +1 -1
- package/dist/esm/exporter/xlsx/threaded-comments-builder.js +15 -3
- package/dist/esm/exporter/xlsx/xlsx-export.d.ts +11 -2
- package/dist/esm/exporter/xlsx/xlsx-export.d.ts.map +1 -1
- package/dist/esm/exporter/xlsx/xlsx-export.js +449 -47
- package/dist/esm/helpers/implicit-intersection.d.ts +16 -0
- package/dist/esm/helpers/implicit-intersection.d.ts.map +1 -0
- package/dist/esm/helpers/implicit-intersection.js +184 -0
- package/dist/esm/print-settings.d.ts +105 -0
- package/dist/esm/print-settings.d.ts.map +1 -0
- package/dist/esm/print-settings.js +422 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -1,19 +1,68 @@
|
|
|
1
1
|
import { __awaiter, __extends, __generator } from "tslib";
|
|
2
|
-
import {
|
|
2
|
+
import { detectCfbContainerKind, LEGACY_XLS_UNSUPPORTED_MESSAGE, XLS_NOT_A_WORKBOOK_MESSAGE, } from "../../cfb-decryptor";
|
|
3
|
+
import { XlsxPlugin } from "../xlsx/index";
|
|
4
|
+
var ZIP_SIGNATURE = [0x50, 0x4b, 0x03, 0x04];
|
|
5
|
+
var CFB_SIGNATURE = [0xd0, 0xcf, 0x11, 0xe0, 0xa1, 0xb1, 0x1a, 0xe1];
|
|
6
|
+
var readHeader = function (source, length) { return __awaiter(void 0, void 0, void 0, function () {
|
|
7
|
+
var slice, _a;
|
|
8
|
+
return __generator(this, function (_b) {
|
|
9
|
+
switch (_b.label) {
|
|
10
|
+
case 0:
|
|
11
|
+
if (!(source instanceof File)) return [3 /*break*/, 2];
|
|
12
|
+
return [4 /*yield*/, source.slice(0, length).arrayBuffer()];
|
|
13
|
+
case 1:
|
|
14
|
+
_a = _b.sent();
|
|
15
|
+
return [3 /*break*/, 3];
|
|
16
|
+
case 2:
|
|
17
|
+
_a = source.slice(0, length);
|
|
18
|
+
_b.label = 3;
|
|
19
|
+
case 3:
|
|
20
|
+
slice = _a;
|
|
21
|
+
return [2 /*return*/, new Uint8Array(slice)];
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}); };
|
|
25
|
+
var startsWith = function (header, signature) {
|
|
26
|
+
return header.length >= signature.length &&
|
|
27
|
+
signature.every(function (byte, index) { return header[index] === byte; });
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* `.xls` handler. The BIFF (Excel 97-2003) binary format is not parsed;
|
|
31
|
+
* this plugin exists so a `.xls` file gets a clear, actionable error
|
|
32
|
+
* instead of falling through to the xlsx zip reader (which fails with an
|
|
33
|
+
* opaque "not a zip" error) or stalling in the password prompt. The one
|
|
34
|
+
* `.xls` shape that does load is an OOXML package saved with the wrong
|
|
35
|
+
* extension — Excel opens those too, so they are handed to the xlsx parser.
|
|
36
|
+
*/
|
|
3
37
|
var XlsPlugin = /** @class */ (function (_super) {
|
|
4
38
|
__extends(XlsPlugin, _super);
|
|
5
39
|
function XlsPlugin() {
|
|
6
40
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
7
41
|
}
|
|
8
|
-
XlsPlugin.prototype.load = function (
|
|
42
|
+
XlsPlugin.prototype.load = function (buffer, password) {
|
|
9
43
|
return __awaiter(this, void 0, void 0, function () {
|
|
44
|
+
var header, kind;
|
|
10
45
|
return __generator(this, function (_a) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
46
|
+
switch (_a.label) {
|
|
47
|
+
case 0: return [4 /*yield*/, readHeader(buffer, CFB_SIGNATURE.length)];
|
|
48
|
+
case 1:
|
|
49
|
+
header = _a.sent();
|
|
50
|
+
if (startsWith(header, ZIP_SIGNATURE)) {
|
|
51
|
+
return [2 /*return*/, _super.prototype.load.call(this, buffer, password)];
|
|
52
|
+
}
|
|
53
|
+
if (!startsWith(header, CFB_SIGNATURE)) return [3 /*break*/, 3];
|
|
54
|
+
return [4 /*yield*/, detectCfbContainerKind(buffer)];
|
|
55
|
+
case 2:
|
|
56
|
+
kind = _a.sent();
|
|
57
|
+
if (kind === "encrypted-ooxml") {
|
|
58
|
+
throw new Error("PASSWORD_REQUIRED");
|
|
59
|
+
}
|
|
60
|
+
throw new Error(LEGACY_XLS_UNSUPPORTED_MESSAGE);
|
|
61
|
+
case 3: throw new Error(XLS_NOT_A_WORKBOOK_MESSAGE);
|
|
62
|
+
}
|
|
14
63
|
});
|
|
15
64
|
});
|
|
16
65
|
};
|
|
17
66
|
return XlsPlugin;
|
|
18
|
-
}(
|
|
67
|
+
}(XlsxPlugin));
|
|
19
68
|
export { XlsPlugin };
|
|
@@ -2,6 +2,10 @@ import type { Color, IterativeCalculationOptions } from "@rowsncolumns/common-ty
|
|
|
2
2
|
import type { BorderStyle, ConditionalFormatRule, DataValidationRuleRecord, EmbeddedChart, NamedRange, Sheet, SpreadsheetTheme, TableView } from "@rowsncolumns/spreadsheet";
|
|
3
3
|
import type { EmbeddedObjectWithPosition, ProcessSheetDataResult } from "../../types";
|
|
4
4
|
import { BaseWorkbookPlugin } from "../base/index";
|
|
5
|
+
export declare const parseBrtWsViewPayload: (payload: Uint8Array) => {
|
|
6
|
+
showGridLines: boolean;
|
|
7
|
+
rightToLeft: boolean;
|
|
8
|
+
};
|
|
5
9
|
export declare const parseBrtNamePayload: (payload: Uint8Array, resolveSheetNameByXti?: (ixti: number) => string | undefined) => {
|
|
6
10
|
name: string;
|
|
7
11
|
formula: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsb/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EAEL,2BAA2B,EAE5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACV,WAAW,EAGX,qBAAqB,EACrB,wBAAwB,EAExB,aAAa,EACb,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,SAAS,EACV,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsb/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { XMLParser } from "fast-xml-parser";
|
|
|
5
5
|
import { get } from "lodash-es";
|
|
6
6
|
import { parseRgce } from "./rgce-parser";
|
|
7
7
|
import { StreamingZipParser } from "../../zip-parser-streaming";
|
|
8
|
-
import { createFilterSpecsFromAutoFilter, excelColumnWidthToPixels, getRangeFromAddressRef, } from "../../helpers";
|
|
8
|
+
import { createFilterSpecsFromAutoFilter, excelColumnWidthToPixels, getRangeFromAddressRef, parseTableColumnTotals, } from "../../helpers";
|
|
9
9
|
import { defaultSpreadsheetTheme } from "../../theme-default";
|
|
10
10
|
import { BaseWorkbookPlugin } from "../base/index";
|
|
11
11
|
import { processChart } from "../xlsx/charts";
|
|
@@ -300,10 +300,17 @@ var parseBrtShrFmla = function (payload) {
|
|
|
300
300
|
var parseWsView = function (payload) {
|
|
301
301
|
var reader = new Reader(payload);
|
|
302
302
|
var flags = reader.readUInt16LE();
|
|
303
|
-
//
|
|
304
|
-
|
|
305
|
-
|
|
303
|
+
// MS-XLSB 2.4.865 BrtWsView flag word: A fWnProt (0x0001), B fDspFmla
|
|
304
|
+
// (0x0002), C fDspGrid (0x0004), D fDspRwCol (0x0008), E fDspZeros
|
|
305
|
+
// (0x0010), F fRightToLeft (0x0020), G fSelected (0x0040), … Excel writes
|
|
306
|
+
// 0x039c for a plain sheet and 0x0398 for `showGridLines="0"`: gridlines
|
|
307
|
+
// are bit C, not bit B (which is "show formulas" and is normally clear).
|
|
308
|
+
var showGridLines = (flags & 0x0004) !== 0;
|
|
309
|
+
// OOXML `<sheetView rightToLeft="1">`.
|
|
310
|
+
var rightToLeft = (flags & 0x0020) !== 0;
|
|
311
|
+
return { showGridLines: showGridLines, rightToLeft: rightToLeft };
|
|
306
312
|
};
|
|
313
|
+
export var parseBrtWsViewPayload = parseWsView;
|
|
307
314
|
var parsePane = function (payload) {
|
|
308
315
|
var reader = new Reader(payload);
|
|
309
316
|
var xSplit = reader.readFloat64LE();
|
|
@@ -1299,6 +1306,7 @@ var XlsbPlugin = /** @class */ (function (_super) {
|
|
|
1299
1306
|
sheet.rowMetadata = stats.rowMetadata;
|
|
1300
1307
|
sheet.columnMetadata = stats.columnMetadata;
|
|
1301
1308
|
sheet.showGridLines = stats.showGridLines;
|
|
1309
|
+
sheet.rightToLeft = stats.rightToLeft;
|
|
1302
1310
|
sheet.frozenRowCount = stats.frozenRowCount;
|
|
1303
1311
|
sheet.frozenColumnCount = stats.frozenColumnCount;
|
|
1304
1312
|
sheet.basicFilterRange = stats.basicFilterRange;
|
|
@@ -1731,12 +1739,13 @@ var XlsbPlugin = /** @class */ (function (_super) {
|
|
|
1731
1739
|
columns = columnDefsArray.map(function (colDef) {
|
|
1732
1740
|
var _a;
|
|
1733
1741
|
var name = ((_a = colDef === null || colDef === void 0 ? void 0 : colDef.a$) === null || _a === void 0 ? void 0 : _a.name) || "";
|
|
1742
|
+
var totals = parseTableColumnTotals(colDef);
|
|
1734
1743
|
var calculatedColumnFormula = get(colDef, "calculatedColumnFormula") ||
|
|
1735
1744
|
get(colDef, "x:calculatedColumnFormula");
|
|
1736
1745
|
if (calculatedColumnFormula) {
|
|
1737
|
-
return { name: name, formula: calculatedColumnFormula };
|
|
1746
|
+
return __assign(__assign({ name: name }, totals), { formula: calculatedColumnFormula });
|
|
1738
1747
|
}
|
|
1739
|
-
return { name: name };
|
|
1748
|
+
return __assign({ name: name }, totals);
|
|
1740
1749
|
});
|
|
1741
1750
|
autoFilter = (_d = tableDefinition.autoFilter) !== null && _d !== void 0 ? _d : tableDefinition["x:autoFilter"];
|
|
1742
1751
|
filterSpecs = createFilterSpecsFromAutoFilter(autoFilter);
|
|
@@ -1785,7 +1794,7 @@ var XlsbPlugin = /** @class */ (function (_super) {
|
|
|
1785
1794
|
};
|
|
1786
1795
|
XlsbPlugin.prototype.scanSheetStats = function (path) {
|
|
1787
1796
|
return __awaiter(this, void 0, void 0, function () {
|
|
1788
|
-
var binary, records, currentRow, maxRow, maxCol, prevCol, merges, rowMetadata, columnMetadata, showGridLines, frozenRowCount, frozenColumnCount, basicFilterRange, tablePartRelIds, records_5, records_5_1, record, payload, view, pane, relId, parsedRow, parsedCol, col, dimensionProps, merge, parsed;
|
|
1797
|
+
var binary, records, currentRow, maxRow, maxCol, prevCol, merges, rowMetadata, columnMetadata, showGridLines, rightToLeft, frozenRowCount, frozenColumnCount, basicFilterRange, tablePartRelIds, records_5, records_5_1, record, payload, view, pane, relId, parsedRow, parsedCol, col, dimensionProps, merge, parsed;
|
|
1789
1798
|
var e_14, _a;
|
|
1790
1799
|
var _this = this;
|
|
1791
1800
|
return __generator(this, function (_b) {
|
|
@@ -1809,6 +1818,8 @@ var XlsbPlugin = /** @class */ (function (_super) {
|
|
|
1809
1818
|
if (record.type === RT.BrtWsView) {
|
|
1810
1819
|
view = parseWsView(payload);
|
|
1811
1820
|
showGridLines = view.showGridLines;
|
|
1821
|
+
if (view.rightToLeft)
|
|
1822
|
+
rightToLeft = true;
|
|
1812
1823
|
continue;
|
|
1813
1824
|
}
|
|
1814
1825
|
if (record.type === RT.BrtPane) {
|
|
@@ -1898,6 +1909,7 @@ var XlsbPlugin = /** @class */ (function (_super) {
|
|
|
1898
1909
|
rowMetadata: rowMetadata,
|
|
1899
1910
|
columnMetadata: columnMetadata,
|
|
1900
1911
|
showGridLines: showGridLines,
|
|
1912
|
+
rightToLeft: rightToLeft,
|
|
1901
1913
|
frozenRowCount: frozenRowCount,
|
|
1902
1914
|
frozenColumnCount: frozenColumnCount,
|
|
1903
1915
|
basicFilterRange: basicFilterRange,
|
|
@@ -1962,9 +1974,9 @@ var XlsbPlugin = /** @class */ (function (_super) {
|
|
|
1962
1974
|
sheet.basicFilterRange.startColumnIndex &&
|
|
1963
1975
|
t.range.endColumnIndex === sheet.basicFilterRange.endColumnIndex;
|
|
1964
1976
|
})) === null || _d === void 0 ? void 0 : _d.filterSpecs;
|
|
1965
|
-
sheets.push(__assign(__assign(__assign(__assign({ sheetId: sheet.sheetId, title: sheet.title, hidden: sheet.hidden, rowCount: Math.max(minRowCount, sheet.rowCount), columnCount: Math.max(minColumnCount, sheet.columnCount), rowMetadata: sheet.rowMetadata, columnMetadata: sheet.columnMetadata, merges: sheet.merges }, (sheet.showGridLines !== undefined
|
|
1977
|
+
sheets.push(__assign(__assign(__assign(__assign(__assign({ sheetId: sheet.sheetId, title: sheet.title, hidden: sheet.hidden, rowCount: Math.max(minRowCount, sheet.rowCount), columnCount: Math.max(minColumnCount, sheet.columnCount), rowMetadata: sheet.rowMetadata, columnMetadata: sheet.columnMetadata, merges: sheet.merges }, (sheet.showGridLines !== undefined
|
|
1966
1978
|
? { showGridLines: sheet.showGridLines }
|
|
1967
|
-
: {})), (sheet.frozenRowCount !== undefined && sheet.frozenRowCount > 0
|
|
1979
|
+
: {})), (sheet.rightToLeft ? { rightToLeft: true } : {})), (sheet.frozenRowCount !== undefined && sheet.frozenRowCount > 0
|
|
1968
1980
|
? { frozenRowCount: sheet.frozenRowCount }
|
|
1969
1981
|
: {})), (sheet.frozenColumnCount !== undefined && sheet.frozenColumnCount > 0
|
|
1970
1982
|
? { frozenColumnCount: sheet.frozenColumnCount }
|
|
@@ -17,6 +17,16 @@ export declare function extractChartDataRange(plotArea: any, chartType: string,
|
|
|
17
17
|
export declare function extractHiddenDimensionStrategy(chart: any): HIDDEN_DIMENSION_STRATEGY | undefined;
|
|
18
18
|
export declare function extractChartTitle(chart: any): string;
|
|
19
19
|
export declare function determineChartType(chart: any): "bar" | "column" | "line" | "pie" | "doughnut" | "area" | "radar" | "stock" | "scatter" | "bubble" | "treemap" | "sunburst" | "histogram" | "boxplot" | "waterfall" | "funnel";
|
|
20
|
+
/**
|
|
21
|
+
* The authored 3-D / surface chart class, when the plot area's chart
|
|
22
|
+
* element is one of Excel's 3-D variants. These degrade to their 2-D
|
|
23
|
+
* `chartType` (bar3DChart → bar/column, line3DChart → line, pie3DChart →
|
|
24
|
+
* pie, area3DChart / surfaceChart / surface3DChart → area) and the
|
|
25
|
+
* original class is preserved verbatim as `sourceChartType`, matching the
|
|
26
|
+
* Rust importer, so the renderer's echarts-gl pipeline and the exporter's
|
|
27
|
+
* 3-D writer can restore it. Undefined for plain 2-D charts.
|
|
28
|
+
*/
|
|
29
|
+
export declare function extractThreeDSourceChartType(plotArea: any): "BAR_3D" | "LINE_3D" | "PIE_3D" | "AREA_3D" | "SURFACE" | "SURFACE_3D" | undefined;
|
|
20
30
|
/**
|
|
21
31
|
* Phase 5.5 — pull binCount out of the c15:histogramChart extension
|
|
22
32
|
* marker. Returns undefined if absent.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"charts.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/charts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,SAAS,EAET,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,UAAU,EACX,MAAM,2BAA2B,CAAC;AAInC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,CAAC;AAkDnF,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,kBAAkB,EAC7B,SAAS,EAAE,GAAG,EACd,eAAe,CAAC,EAAE,eAAe,EACjC,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"charts.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/charts.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,7 +50,7 @@ function toInt(value) {
|
|
|
50
50
|
}
|
|
51
51
|
export function processChart(chartTarget, drawingPath, anchor, sheetId, zipParser, xmlParser, sheetDimensions, resolveSheetId) {
|
|
52
52
|
return __awaiter(this, void 0, void 0, function () {
|
|
53
|
-
var chartPath, drawingDir, chartContent, chartXml, chart, chartSpaceRoot, roundedCornersRaw, roundedCornersVal, roundedCorners, chartId, title, titleTextFormat, chartType, plotArea, series, domains, dataRange, bubbleSizes, scatterStyle, hiddenDimensionStrategy, position, legend, dataLabels, _a, valueAxisOptions, secondaryValueAxisOptions, categoryAxisOptions, doughnutHoleSize, ofPieOptions, radarStyle, binCount, barLayout, err_1;
|
|
53
|
+
var chartPath, drawingDir, chartContent, chartXml, chart, chartSpaceRoot, roundedCornersRaw, roundedCornersVal, roundedCorners, chartId, title, titleTextFormat, chartType, plotArea, series, domains, dataRange, bubbleSizes, scatterStyle, hiddenDimensionStrategy, position, legend, dataLabels, _a, valueAxisOptions, secondaryValueAxisOptions, categoryAxisOptions, doughnutHoleSize, ofPieOptions, threeDSourceChartType, radarStyle, binCount, barLayout, err_1;
|
|
54
54
|
var _b;
|
|
55
55
|
return __generator(this, function (_c) {
|
|
56
56
|
switch (_c.label) {
|
|
@@ -119,6 +119,7 @@ export function processChart(chartTarget, drawingPath, anchor, sheetId, zipParse
|
|
|
119
119
|
_a = extractAxisOptions(plotArea), valueAxisOptions = _a.valueAxisOptions, secondaryValueAxisOptions = _a.secondaryValueAxisOptions, categoryAxisOptions = _a.categoryAxisOptions;
|
|
120
120
|
doughnutHoleSize = chartType === "doughnut" ? extractDoughnutHoleSize(plotArea) : undefined;
|
|
121
121
|
ofPieOptions = chartType === "pie" ? extractOfPieOptions(plotArea) : undefined;
|
|
122
|
+
threeDSourceChartType = extractThreeDSourceChartType(plotArea);
|
|
122
123
|
radarStyle = chartType === "radar" ? extractRadarStyle(plotArea) : undefined;
|
|
123
124
|
binCount = chartType === "histogram"
|
|
124
125
|
? extractC15HistogramBinCount(plotArea)
|
|
@@ -128,7 +129,7 @@ export function processChart(chartTarget, drawingPath, anchor, sheetId, zipParse
|
|
|
128
129
|
: undefined;
|
|
129
130
|
return [2 /*return*/, {
|
|
130
131
|
chartId: chartId,
|
|
131
|
-
spec: __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ title: title }, (titleTextFormat ? { titleTextFormat: titleTextFormat } : {})), { chartType: chartType, domains: domains, series: series, dataRange: dataRange, hiddenDimensionStrategy: hiddenDimensionStrategy }), (chartType === "scatter" || chartType === "bubble"
|
|
132
|
+
spec: __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({ title: title }, (titleTextFormat ? { titleTextFormat: titleTextFormat } : {})), { chartType: chartType, domains: domains, series: series, dataRange: dataRange, hiddenDimensionStrategy: hiddenDimensionStrategy }), (chartType === "scatter" || chartType === "bubble"
|
|
132
133
|
? { bubbleLabels: [] }
|
|
133
134
|
: {})), (bubbleSizes && bubbleSizes.length ? { bubbleSizes: bubbleSizes } : {})), (scatterStyle
|
|
134
135
|
? { scatterStyle: scatterStyle }
|
|
@@ -137,7 +138,9 @@ export function processChart(chartTarget, drawingPath, anchor, sheetId, zipParse
|
|
|
137
138
|
: {})), (categoryAxisOptions ? { categoryAxisOptions: categoryAxisOptions } : {})), (typeof doughnutHoleSize === "number"
|
|
138
139
|
? { doughnutHoleSize: doughnutHoleSize }
|
|
139
140
|
: {})), (ofPieOptions
|
|
140
|
-
? __assign({ sourceChartType: "OF_PIE" }, ofPieOptions) : {})), (
|
|
141
|
+
? __assign({ sourceChartType: "OF_PIE" }, ofPieOptions) : {})), (threeDSourceChartType && !ofPieOptions
|
|
142
|
+
? { sourceChartType: threeDSourceChartType }
|
|
143
|
+
: {})), (radarStyle ? { radarStyle: radarStyle } : {})), (typeof binCount === "number" ? { binCount: binCount } : {})), ((barLayout === null || barLayout === void 0 ? void 0 : barLayout.stackedType)
|
|
141
144
|
? { stackedType: barLayout.stackedType }
|
|
142
145
|
: {})), (typeof (barLayout === null || barLayout === void 0 ? void 0 : barLayout.overlap) === "number"
|
|
143
146
|
? { overlap: barLayout.overlap }
|
|
@@ -208,6 +211,12 @@ function getSeriesElements(plotArea, chartType) {
|
|
|
208
211
|
"areaChart.ser",
|
|
209
212
|
"c:area3DChart.c:ser",
|
|
210
213
|
"area3DChart.ser",
|
|
214
|
+
// Surface / contour charts degrade to area (sourceChartType
|
|
215
|
+
// SURFACE / SURFACE_3D); their series carry the same cat/val shape.
|
|
216
|
+
"c:surfaceChart.c:ser",
|
|
217
|
+
"surfaceChart.ser",
|
|
218
|
+
"c:surface3DChart.c:ser",
|
|
219
|
+
"surface3DChart.ser",
|
|
211
220
|
]);
|
|
212
221
|
case "radar":
|
|
213
222
|
return getWithFallback(plotArea, ["c:radarChart.c:ser", "radarChart.ser"]);
|
|
@@ -552,6 +561,12 @@ export function determineChartType(chart) {
|
|
|
552
561
|
"areaChart",
|
|
553
562
|
"c:area3DChart",
|
|
554
563
|
"area3DChart",
|
|
564
|
+
// Surface / contour degrade to area — the same 2-D base the Rust
|
|
565
|
+
// importer and the renderer's surface pipeline use.
|
|
566
|
+
"c:surfaceChart",
|
|
567
|
+
"surfaceChart",
|
|
568
|
+
"c:surface3DChart",
|
|
569
|
+
"surface3DChart",
|
|
555
570
|
]))
|
|
556
571
|
return "area";
|
|
557
572
|
if (getWithFallback(plotArea, ["c:radarChart", "radarChart"]))
|
|
@@ -566,6 +581,31 @@ export function determineChartType(chart) {
|
|
|
566
581
|
return "bubble";
|
|
567
582
|
return "column"; // default
|
|
568
583
|
}
|
|
584
|
+
/**
|
|
585
|
+
* The authored 3-D / surface chart class, when the plot area's chart
|
|
586
|
+
* element is one of Excel's 3-D variants. These degrade to their 2-D
|
|
587
|
+
* `chartType` (bar3DChart → bar/column, line3DChart → line, pie3DChart →
|
|
588
|
+
* pie, area3DChart / surfaceChart / surface3DChart → area) and the
|
|
589
|
+
* original class is preserved verbatim as `sourceChartType`, matching the
|
|
590
|
+
* Rust importer, so the renderer's echarts-gl pipeline and the exporter's
|
|
591
|
+
* 3-D writer can restore it. Undefined for plain 2-D charts.
|
|
592
|
+
*/
|
|
593
|
+
export function extractThreeDSourceChartType(plotArea) {
|
|
594
|
+
var has = function (paths) { return Boolean(getWithFallback(plotArea, paths)); };
|
|
595
|
+
if (has(["c:bar3DChart", "bar3DChart"]))
|
|
596
|
+
return "BAR_3D";
|
|
597
|
+
if (has(["c:line3DChart", "line3DChart"]))
|
|
598
|
+
return "LINE_3D";
|
|
599
|
+
if (has(["c:pie3DChart", "pie3DChart"]))
|
|
600
|
+
return "PIE_3D";
|
|
601
|
+
if (has(["c:area3DChart", "area3DChart"]))
|
|
602
|
+
return "AREA_3D";
|
|
603
|
+
if (has(["c:surface3DChart", "surface3DChart"]))
|
|
604
|
+
return "SURFACE_3D";
|
|
605
|
+
if (has(["c:surfaceChart", "surfaceChart"]))
|
|
606
|
+
return "SURFACE";
|
|
607
|
+
return undefined;
|
|
608
|
+
}
|
|
569
609
|
/**
|
|
570
610
|
* Phase 5.5 — detect the c15 extension marker our exporter writes on
|
|
571
611
|
* the plotArea. Returns the originating chart type (histogram /
|
|
@@ -744,7 +784,16 @@ var CHART_TYPE_CONTAINERS = [
|
|
|
744
784
|
chartType: "line",
|
|
745
785
|
},
|
|
746
786
|
{
|
|
747
|
-
paths: [
|
|
787
|
+
paths: [
|
|
788
|
+
"c:areaChart",
|
|
789
|
+
"areaChart",
|
|
790
|
+
"c:area3DChart",
|
|
791
|
+
"area3DChart",
|
|
792
|
+
"c:surfaceChart",
|
|
793
|
+
"surfaceChart",
|
|
794
|
+
"c:surface3DChart",
|
|
795
|
+
"surface3DChart",
|
|
796
|
+
],
|
|
748
797
|
chartType: "area",
|
|
749
798
|
},
|
|
750
799
|
{
|
|
@@ -1896,13 +1945,23 @@ function extractDataLabelsOptions(plotArea, chartType) {
|
|
|
1896
1945
|
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
1897
1946
|
// Look for <c:dLbls> inside the chartType-specific container. We pick
|
|
1898
1947
|
// the first one we find — chart-level labels apply to all series.
|
|
1948
|
+
// The 3-D classes (bar3DChart / line3DChart / pie3DChart / area3DChart)
|
|
1949
|
+
// degrade to the same `chartType` and carry `<c:dLbls>` in the same slot
|
|
1950
|
+
// of their group, so they are looked up alongside the 2-D container.
|
|
1899
1951
|
var containerKeys = {
|
|
1900
|
-
bar: ["c:barChart", "barChart"],
|
|
1901
|
-
column: ["c:barChart", "barChart"],
|
|
1902
|
-
line: ["c:lineChart", "lineChart"],
|
|
1903
|
-
pie: [
|
|
1952
|
+
bar: ["c:barChart", "barChart", "c:bar3DChart", "bar3DChart"],
|
|
1953
|
+
column: ["c:barChart", "barChart", "c:bar3DChart", "bar3DChart"],
|
|
1954
|
+
line: ["c:lineChart", "lineChart", "c:line3DChart", "line3DChart"],
|
|
1955
|
+
pie: [
|
|
1956
|
+
"c:pieChart",
|
|
1957
|
+
"pieChart",
|
|
1958
|
+
"c:ofPieChart",
|
|
1959
|
+
"ofPieChart",
|
|
1960
|
+
"c:pie3DChart",
|
|
1961
|
+
"pie3DChart",
|
|
1962
|
+
],
|
|
1904
1963
|
doughnut: ["c:doughnutChart", "doughnutChart"],
|
|
1905
|
-
area: ["c:areaChart", "areaChart"],
|
|
1964
|
+
area: ["c:areaChart", "areaChart", "c:area3DChart", "area3DChart"],
|
|
1906
1965
|
};
|
|
1907
1966
|
var keys = (_b = containerKeys[chartType]) !== null && _b !== void 0 ? _b : [];
|
|
1908
1967
|
var container;
|
|
@@ -1,9 +1,28 @@
|
|
|
1
|
-
import type { EmbeddedObject, EmbedShapeSpec } from "@rowsncolumns/spreadsheet";
|
|
1
|
+
import type { EmbeddedObject, EmbedImageSpec, EmbedShapeSpec } from "@rowsncolumns/spreadsheet";
|
|
2
2
|
import { type XMLParser } from "fast-xml-parser";
|
|
3
3
|
import { type StreamingZipParser } from "../../zip-parser-streaming";
|
|
4
4
|
export type EmbeddedObjectWithPosition = EmbeddedObject & {
|
|
5
5
|
isInsideCell?: boolean;
|
|
6
6
|
};
|
|
7
|
+
/** `processAnchors` anchor-type tags, keyed by the drawing element name. */
|
|
8
|
+
declare const ANCHOR_KIND_BY_ELEMENT: {
|
|
9
|
+
readonly oneCellAnchor: "oneCellAnchor";
|
|
10
|
+
readonly twoCellAnchor: "twoCellAnchors";
|
|
11
|
+
readonly absoluteAnchor: "absoluteAnchors";
|
|
12
|
+
};
|
|
13
|
+
type AnchorElementName = keyof typeof ANCHOR_KIND_BY_ELEMENT;
|
|
14
|
+
/**
|
|
15
|
+
* The `<xdr:wsDr>` anchors in document order — Excel's z-order (first is
|
|
16
|
+
* the back-most object). The unordered parse keeps document order within one
|
|
17
|
+
* element name but groups the three anchor kinds apart, so the kind sequence
|
|
18
|
+
* is read off the raw part and the parsed nodes are dealt out in that order.
|
|
19
|
+
* Anchors the scan does not account for (namespace quirks) trail in their
|
|
20
|
+
* parsed order, so nothing is ever dropped.
|
|
21
|
+
*/
|
|
22
|
+
export declare function anchorsInDocumentOrder(drawing: any, drawingXml: string): Array<{
|
|
23
|
+
kind: (typeof ANCHOR_KIND_BY_ELEMENT)[AnchorElementName];
|
|
24
|
+
node: any;
|
|
25
|
+
}>;
|
|
7
26
|
/**
|
|
8
27
|
* Process different types of image anchors
|
|
9
28
|
* @param anchors The anchor elements from the drawing
|
|
@@ -15,6 +34,13 @@ export type EmbeddedObjectWithPosition = EmbeddedObject & {
|
|
|
15
34
|
* @returns An array of image objects with their properties and binary data
|
|
16
35
|
*/
|
|
17
36
|
export declare function processAnchors(anchors: any, anchorType: string, drawingPath: string, sheetId: number, zipParser: StreamingZipParser, xmlParser: XMLParser): Promise<EmbeddedObjectWithPosition[]>;
|
|
37
|
+
/**
|
|
38
|
+
* Picture-format adjustments off an `<xdr:pic>`: `<a:blipFill><a:srcRect>`
|
|
39
|
+
* (crop), `<a:blip><a:lum bright contrast>` (brightness / contrast) and
|
|
40
|
+
* `<a:blip><a:alphaModFix amt>` (opacity → `transparency`). Only present
|
|
41
|
+
* values are returned so an untouched picture stays a bare image spec.
|
|
42
|
+
*/
|
|
43
|
+
export declare function parsePictureAdjustments(picture: any): Pick<EmbedImageSpec, "crop" | "brightness" | "contrast" | "transparency">;
|
|
18
44
|
/**
|
|
19
45
|
* Whether an `<xdr:sp>` should import as a drawing shape (`EmbedShapeSpec`)
|
|
20
46
|
* rather than a textbox. Text boxes are excluded explicitly (`txBox="1"`), and
|
|
@@ -36,4 +62,5 @@ export declare function parseShapeSpec(shape: any): EmbedShapeSpec;
|
|
|
36
62
|
* @returns Boolean indicating if the image is inside a cell
|
|
37
63
|
*/
|
|
38
64
|
export declare function determineIfOneCellInsideCell(fromColOff: number, fromRowOff: number, fLocksWithSheet: string, cx: number, cy: number): boolean;
|
|
65
|
+
export {};
|
|
39
66
|
//# sourceMappingURL=drawing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawing.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/drawing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,cAAc,EAEd,cAAc,
|
|
1
|
+
{"version":3,"file":"drawing.d.ts","sourceRoot":"","sources":["../../../../../excel-parser/plugins/xlsx/drawing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,cAAc,EAEd,cAAc,EACd,cAAc,EAYf,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAoDrE,MAAM,MAAM,0BAA0B,GAAG,cAAc,GAAG;IACxD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,4EAA4E;AAC5E,QAAA,MAAM,sBAAsB;;;;CAIlB,CAAC;AAEX,KAAK,iBAAiB,GAAG,MAAM,OAAO,sBAAsB,CAAC;AAK7D;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,GAAG,EACZ,UAAU,EAAE,MAAM,GACjB,KAAK,CAAC;IACP,IAAI,EAAE,CAAC,OAAO,sBAAsB,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACzD,IAAI,EAAE,GAAG,CAAC;CACX,CAAC,CAkCD;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,GAAG,EACZ,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,kBAAkB,EAC7B,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,0BAA0B,EAAE,CAAC,CA8dvC;AASD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,GAAG,GACX,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,GAAG,cAAc,CAAC,CAuC3E;AA6OD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CASlD;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,cAAc,CA8CzD;AA8MD;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,OAAO,CAqBT"}
|