@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.
Files changed (131) hide show
  1. package/dist/cjs/excel-parser/cfb-decryptor.d.ts +6 -0
  2. package/dist/cjs/excel-parser/cfb-decryptor.d.ts.map +1 -1
  3. package/dist/cjs/excel-parser/cfb-decryptor.js +6 -0
  4. package/dist/cjs/excel-parser/helpers.d.ts +9 -1
  5. package/dist/cjs/excel-parser/helpers.d.ts.map +1 -1
  6. package/dist/cjs/excel-parser/helpers.js +37 -0
  7. package/dist/cjs/excel-parser/interface.d.ts +10 -1
  8. package/dist/cjs/excel-parser/interface.d.ts.map +1 -1
  9. package/dist/cjs/excel-parser/plugins/ods/index.d.ts +19 -0
  10. package/dist/cjs/excel-parser/plugins/ods/index.d.ts.map +1 -1
  11. package/dist/cjs/excel-parser/plugins/ods/index.js +676 -304
  12. package/dist/cjs/excel-parser/plugins/ods/styles.d.ts +43 -1
  13. package/dist/cjs/excel-parser/plugins/ods/styles.d.ts.map +1 -1
  14. package/dist/cjs/excel-parser/plugins/ods/styles.js +343 -45
  15. package/dist/cjs/excel-parser/plugins/xls/index.d.ts +11 -3
  16. package/dist/cjs/excel-parser/plugins/xls/index.d.ts.map +1 -1
  17. package/dist/cjs/excel-parser/plugins/xls/index.js +55 -6
  18. package/dist/cjs/excel-parser/plugins/xlsb/index.d.ts +4 -0
  19. package/dist/cjs/excel-parser/plugins/xlsb/index.d.ts.map +1 -1
  20. package/dist/cjs/excel-parser/plugins/xlsb/index.js +21 -9
  21. package/dist/cjs/excel-parser/plugins/xlsx/charts.d.ts +10 -0
  22. package/dist/cjs/excel-parser/plugins/xlsx/charts.d.ts.map +1 -1
  23. package/dist/cjs/excel-parser/plugins/xlsx/charts.js +68 -9
  24. package/dist/cjs/excel-parser/plugins/xlsx/drawing.d.ts +28 -1
  25. package/dist/cjs/excel-parser/plugins/xlsx/drawing.d.ts.map +1 -1
  26. package/dist/cjs/excel-parser/plugins/xlsx/drawing.js +155 -20
  27. package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts +26 -1
  28. package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts.map +1 -1
  29. package/dist/cjs/excel-parser/plugins/xlsx/index.js +567 -234
  30. package/dist/cjs/excel-parser/plugins/xlsx/pivots.d.ts.map +1 -1
  31. package/dist/cjs/excel-parser/plugins/xlsx/pivots.js +125 -37
  32. package/dist/cjs/excel-parser/plugins/xlsx/sheet-views.d.ts +3 -0
  33. package/dist/cjs/excel-parser/plugins/xlsx/sheet-views.d.ts.map +1 -1
  34. package/dist/cjs/excel-parser/plugins/xlsx/sheet-views.js +4 -1
  35. package/dist/cjs/excel-parser/plugins/xlsx/styles.d.ts.map +1 -1
  36. package/dist/cjs/excel-parser/plugins/xlsx/styles.js +12 -2
  37. package/dist/cjs/excel-parser/registry.d.ts.map +1 -1
  38. package/dist/cjs/excel-parser/registry.js +2 -0
  39. package/dist/cjs/excel-parser/types.d.ts +7 -1
  40. package/dist/cjs/excel-parser/types.d.ts.map +1 -1
  41. package/dist/cjs/excel-parser/workbook.d.ts +1 -0
  42. package/dist/cjs/excel-parser/workbook.d.ts.map +1 -1
  43. package/dist/cjs/excel-parser/workbook.js +4 -0
  44. package/dist/cjs/excel-parser/worker.js +3 -1
  45. package/dist/cjs/exporter/ods/ods-export.d.ts.map +1 -1
  46. package/dist/cjs/exporter/ods/ods-export.js +432 -175
  47. package/dist/cjs/exporter/xlsx/chart-builder.d.ts.map +1 -1
  48. package/dist/cjs/exporter/xlsx/chart-builder.js +210 -6
  49. package/dist/cjs/exporter/xlsx/pivot-builder.d.ts +8 -0
  50. package/dist/cjs/exporter/xlsx/pivot-builder.d.ts.map +1 -1
  51. package/dist/cjs/exporter/xlsx/pivot-builder.js +141 -42
  52. package/dist/cjs/exporter/xlsx/style-builder.js +9 -3
  53. package/dist/cjs/exporter/xlsx/threaded-comments-builder.d.ts +7 -1
  54. package/dist/cjs/exporter/xlsx/threaded-comments-builder.d.ts.map +1 -1
  55. package/dist/cjs/exporter/xlsx/threaded-comments-builder.js +15 -3
  56. package/dist/cjs/exporter/xlsx/xlsx-export.d.ts +11 -2
  57. package/dist/cjs/exporter/xlsx/xlsx-export.d.ts.map +1 -1
  58. package/dist/cjs/exporter/xlsx/xlsx-export.js +678 -222
  59. package/dist/cjs/helpers/implicit-intersection.d.ts +16 -0
  60. package/dist/cjs/helpers/implicit-intersection.d.ts.map +1 -0
  61. package/dist/cjs/helpers/implicit-intersection.js +197 -0
  62. package/dist/cjs/print-settings.d.ts +105 -0
  63. package/dist/cjs/print-settings.d.ts.map +1 -0
  64. package/dist/cjs/print-settings.js +494 -0
  65. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  66. package/dist/esm/excel-parser/cfb-decryptor.d.ts +6 -0
  67. package/dist/esm/excel-parser/cfb-decryptor.d.ts.map +1 -1
  68. package/dist/esm/excel-parser/cfb-decryptor.js +6 -0
  69. package/dist/esm/excel-parser/helpers.d.ts +9 -1
  70. package/dist/esm/excel-parser/helpers.d.ts.map +1 -1
  71. package/dist/esm/excel-parser/helpers.js +34 -0
  72. package/dist/esm/excel-parser/interface.d.ts +10 -1
  73. package/dist/esm/excel-parser/interface.d.ts.map +1 -1
  74. package/dist/esm/excel-parser/plugins/ods/index.d.ts +19 -0
  75. package/dist/esm/excel-parser/plugins/ods/index.d.ts.map +1 -1
  76. package/dist/esm/excel-parser/plugins/ods/index.js +347 -33
  77. package/dist/esm/excel-parser/plugins/ods/styles.d.ts +43 -1
  78. package/dist/esm/excel-parser/plugins/ods/styles.d.ts.map +1 -1
  79. package/dist/esm/excel-parser/plugins/ods/styles.js +276 -2
  80. package/dist/esm/excel-parser/plugins/xls/index.d.ts +11 -3
  81. package/dist/esm/excel-parser/plugins/xls/index.d.ts.map +1 -1
  82. package/dist/esm/excel-parser/plugins/xls/index.js +37 -5
  83. package/dist/esm/excel-parser/plugins/xlsb/index.d.ts +4 -0
  84. package/dist/esm/excel-parser/plugins/xlsb/index.d.ts.map +1 -1
  85. package/dist/esm/excel-parser/plugins/xlsb/index.js +20 -6
  86. package/dist/esm/excel-parser/plugins/xlsx/charts.d.ts +10 -0
  87. package/dist/esm/excel-parser/plugins/xlsx/charts.d.ts.map +1 -1
  88. package/dist/esm/excel-parser/plugins/xlsx/charts.js +69 -6
  89. package/dist/esm/excel-parser/plugins/xlsx/drawing.d.ts +28 -1
  90. package/dist/esm/excel-parser/plugins/xlsx/drawing.d.ts.map +1 -1
  91. package/dist/esm/excel-parser/plugins/xlsx/drawing.js +99 -0
  92. package/dist/esm/excel-parser/plugins/xlsx/index.d.ts +26 -1
  93. package/dist/esm/excel-parser/plugins/xlsx/index.d.ts.map +1 -1
  94. package/dist/esm/excel-parser/plugins/xlsx/index.js +362 -26
  95. package/dist/esm/excel-parser/plugins/xlsx/pivots.d.ts.map +1 -1
  96. package/dist/esm/excel-parser/plugins/xlsx/pivots.js +86 -6
  97. package/dist/esm/excel-parser/plugins/xlsx/sheet-views.d.ts +3 -0
  98. package/dist/esm/excel-parser/plugins/xlsx/sheet-views.d.ts.map +1 -1
  99. package/dist/esm/excel-parser/plugins/xlsx/sheet-views.js +2 -0
  100. package/dist/esm/excel-parser/plugins/xlsx/styles.d.ts.map +1 -1
  101. package/dist/esm/excel-parser/plugins/xlsx/styles.js +12 -2
  102. package/dist/esm/excel-parser/registry.d.ts.map +1 -1
  103. package/dist/esm/excel-parser/registry.js +2 -0
  104. package/dist/esm/excel-parser/types.d.ts +7 -1
  105. package/dist/esm/excel-parser/types.d.ts.map +1 -1
  106. package/dist/esm/excel-parser/workbook.d.ts +1 -0
  107. package/dist/esm/excel-parser/workbook.d.ts.map +1 -1
  108. package/dist/esm/excel-parser/workbook.js +3 -0
  109. package/dist/esm/excel-parser/worker.js +2 -0
  110. package/dist/esm/exporter/ods/ods-export.d.ts.map +1 -1
  111. package/dist/esm/exporter/ods/ods-export.js +306 -35
  112. package/dist/esm/exporter/xlsx/chart-builder.d.ts.map +1 -1
  113. package/dist/esm/exporter/xlsx/chart-builder.js +161 -0
  114. package/dist/esm/exporter/xlsx/pivot-builder.d.ts +8 -0
  115. package/dist/esm/exporter/xlsx/pivot-builder.d.ts.map +1 -1
  116. package/dist/esm/exporter/xlsx/pivot-builder.js +104 -19
  117. package/dist/esm/exporter/xlsx/style-builder.js +9 -3
  118. package/dist/esm/exporter/xlsx/threaded-comments-builder.d.ts +7 -1
  119. package/dist/esm/exporter/xlsx/threaded-comments-builder.d.ts.map +1 -1
  120. package/dist/esm/exporter/xlsx/threaded-comments-builder.js +15 -3
  121. package/dist/esm/exporter/xlsx/xlsx-export.d.ts +11 -2
  122. package/dist/esm/exporter/xlsx/xlsx-export.d.ts.map +1 -1
  123. package/dist/esm/exporter/xlsx/xlsx-export.js +449 -47
  124. package/dist/esm/helpers/implicit-intersection.d.ts +16 -0
  125. package/dist/esm/helpers/implicit-intersection.d.ts.map +1 -0
  126. package/dist/esm/helpers/implicit-intersection.js +184 -0
  127. package/dist/esm/print-settings.d.ts +105 -0
  128. package/dist/esm/print-settings.d.ts.map +1 -0
  129. package/dist/esm/print-settings.js +422 -0
  130. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  131. package/package.json +3 -3
@@ -1,19 +1,68 @@
1
1
  import { __awaiter, __extends, __generator } from "tslib";
2
- import { BaseWorkbookPlugin } from "../base/index";
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 (_buffer, _password) {
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
- // TODO: Implement XLS loading (CFB format)
12
- console.warn("XLS support not implemented yet");
13
- return [2 /*return*/];
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
- }(BaseWorkbookPlugin));
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":"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"}
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
- // Bit 1 (0x0002): fShowGridLines - if 0, gridlines are hidden
304
- var showGridLines = (flags & 0x0002) !== 0;
305
- return { showGridLines: showGridLines };
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":"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"}
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) : {})), (radarStyle ? { radarStyle: radarStyle } : {})), (typeof binCount === "number" ? { binCount: binCount } : {})), ((barLayout === null || barLayout === void 0 ? void 0 : barLayout.stackedType)
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: ["c:areaChart", "areaChart", "c:area3DChart", "area3DChart"],
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: ["c:pieChart", "pieChart", "c:ofPieChart", "ofPieChart"],
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,EAWf,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;;;;;;;;;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,CA6dvC;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"}
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"}