@rowsncolumns/toolkit 24.4.5 → 24.5.0

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 (113) hide show
  1. package/dist/cjs/autofilter-condition.d.ts +45 -1
  2. package/dist/cjs/autofilter-condition.d.ts.map +1 -1
  3. package/dist/cjs/autofilter-condition.js +135 -12
  4. package/dist/cjs/excel-parser/helpers.d.ts +15 -1
  5. package/dist/cjs/excel-parser/helpers.d.ts.map +1 -1
  6. package/dist/cjs/excel-parser/helpers.js +119 -5
  7. package/dist/cjs/excel-parser/interface.d.ts +3 -1
  8. package/dist/cjs/excel-parser/interface.d.ts.map +1 -1
  9. package/dist/cjs/excel-parser/plugins/ods/index.d.ts.map +1 -1
  10. package/dist/cjs/excel-parser/plugins/ods/index.js +186 -97
  11. package/dist/cjs/excel-parser/plugins/ods/styles.d.ts +15 -0
  12. package/dist/cjs/excel-parser/plugins/ods/styles.d.ts.map +1 -1
  13. package/dist/cjs/excel-parser/plugins/ods/styles.js +80 -6
  14. package/dist/cjs/excel-parser/plugins/xlsb/index.d.ts.map +1 -1
  15. package/dist/cjs/excel-parser/plugins/xlsb/index.js +107 -103
  16. package/dist/cjs/excel-parser/plugins/xlsx/charts.d.ts +77 -1
  17. package/dist/cjs/excel-parser/plugins/xlsx/charts.d.ts.map +1 -1
  18. package/dist/cjs/excel-parser/plugins/xlsx/charts.js +920 -122
  19. package/dist/cjs/excel-parser/plugins/xlsx/drawing.d.ts +7 -1
  20. package/dist/cjs/excel-parser/plugins/xlsx/drawing.d.ts.map +1 -1
  21. package/dist/cjs/excel-parser/plugins/xlsx/drawing.js +24 -9
  22. package/dist/cjs/excel-parser/plugins/xlsx/form-controls.d.ts +24 -3
  23. package/dist/cjs/excel-parser/plugins/xlsx/form-controls.d.ts.map +1 -1
  24. package/dist/cjs/excel-parser/plugins/xlsx/form-controls.js +25 -3
  25. package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts +24 -1
  26. package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts.map +1 -1
  27. package/dist/cjs/excel-parser/plugins/xlsx/index.js +561 -394
  28. package/dist/cjs/excel-parser/plugins/xlsx/pivots.d.ts +8 -2
  29. package/dist/cjs/excel-parser/plugins/xlsx/pivots.d.ts.map +1 -1
  30. package/dist/cjs/excel-parser/plugins/xlsx/pivots.js +312 -21
  31. package/dist/cjs/excel-parser/plugins/xlsx/relationships.d.ts +6 -0
  32. package/dist/cjs/excel-parser/plugins/xlsx/relationships.d.ts.map +1 -1
  33. package/dist/cjs/excel-parser/plugins/xlsx/relationships.js +9 -0
  34. package/dist/cjs/excel-parser/plugins/xlsx/theme.d.ts +1 -1
  35. package/dist/cjs/excel-parser/types.d.ts +9 -1
  36. package/dist/cjs/excel-parser/types.d.ts.map +1 -1
  37. package/dist/cjs/excel-parser/workbook.d.ts +1 -0
  38. package/dist/cjs/excel-parser/workbook.d.ts.map +1 -1
  39. package/dist/cjs/excel-parser/workbook.js +5 -0
  40. package/dist/cjs/excel-parser/worker.js +2 -0
  41. package/dist/cjs/exporter/ods/ods-export.d.ts.map +1 -1
  42. package/dist/cjs/exporter/ods/ods-export.js +255 -80
  43. package/dist/cjs/exporter/xlsx/chart-builder.d.ts +7 -1
  44. package/dist/cjs/exporter/xlsx/chart-builder.d.ts.map +1 -1
  45. package/dist/cjs/exporter/xlsx/chart-builder.js +902 -119
  46. package/dist/cjs/exporter/xlsx/form-controls-builder.d.ts +16 -3
  47. package/dist/cjs/exporter/xlsx/form-controls-builder.d.ts.map +1 -1
  48. package/dist/cjs/exporter/xlsx/form-controls-builder.js +30 -8
  49. package/dist/cjs/exporter/xlsx/pivot-builder.d.ts.map +1 -1
  50. package/dist/cjs/exporter/xlsx/pivot-builder.js +206 -162
  51. package/dist/cjs/exporter/xlsx/style-builder.d.ts +8 -2
  52. package/dist/cjs/exporter/xlsx/style-builder.d.ts.map +1 -1
  53. package/dist/cjs/exporter/xlsx/style-builder.js +25 -0
  54. package/dist/cjs/exporter/xlsx/xlsx-export.d.ts +2 -2
  55. package/dist/cjs/exporter/xlsx/xlsx-export.d.ts.map +1 -1
  56. package/dist/cjs/exporter/xlsx/xlsx-export.js +728 -452
  57. package/dist/esm/autofilter-condition.d.ts +45 -1
  58. package/dist/esm/autofilter-condition.d.ts.map +1 -1
  59. package/dist/esm/autofilter-condition.js +131 -11
  60. package/dist/esm/excel-parser/helpers.d.ts +15 -1
  61. package/dist/esm/excel-parser/helpers.d.ts.map +1 -1
  62. package/dist/esm/excel-parser/helpers.js +94 -4
  63. package/dist/esm/excel-parser/interface.d.ts +3 -1
  64. package/dist/esm/excel-parser/interface.d.ts.map +1 -1
  65. package/dist/esm/excel-parser/plugins/ods/index.d.ts.map +1 -1
  66. package/dist/esm/excel-parser/plugins/ods/index.js +105 -22
  67. package/dist/esm/excel-parser/plugins/ods/styles.d.ts +15 -0
  68. package/dist/esm/excel-parser/plugins/ods/styles.d.ts.map +1 -1
  69. package/dist/esm/excel-parser/plugins/ods/styles.js +79 -5
  70. package/dist/esm/excel-parser/plugins/xlsb/index.d.ts.map +1 -1
  71. package/dist/esm/excel-parser/plugins/xlsb/index.js +15 -7
  72. package/dist/esm/excel-parser/plugins/xlsx/charts.d.ts +77 -1
  73. package/dist/esm/excel-parser/plugins/xlsx/charts.d.ts.map +1 -1
  74. package/dist/esm/excel-parser/plugins/xlsx/charts.js +708 -16
  75. package/dist/esm/excel-parser/plugins/xlsx/drawing.d.ts +7 -1
  76. package/dist/esm/excel-parser/plugins/xlsx/drawing.d.ts.map +1 -1
  77. package/dist/esm/excel-parser/plugins/xlsx/drawing.js +23 -0
  78. package/dist/esm/excel-parser/plugins/xlsx/form-controls.d.ts +24 -3
  79. package/dist/esm/excel-parser/plugins/xlsx/form-controls.d.ts.map +1 -1
  80. package/dist/esm/excel-parser/plugins/xlsx/form-controls.js +21 -3
  81. package/dist/esm/excel-parser/plugins/xlsx/index.d.ts +24 -1
  82. package/dist/esm/excel-parser/plugins/xlsx/index.d.ts.map +1 -1
  83. package/dist/esm/excel-parser/plugins/xlsx/index.js +192 -54
  84. package/dist/esm/excel-parser/plugins/xlsx/pivots.d.ts +8 -2
  85. package/dist/esm/excel-parser/plugins/xlsx/pivots.d.ts.map +1 -1
  86. package/dist/esm/excel-parser/plugins/xlsx/pivots.js +220 -4
  87. package/dist/esm/excel-parser/plugins/xlsx/relationships.d.ts +6 -0
  88. package/dist/esm/excel-parser/plugins/xlsx/relationships.d.ts.map +1 -1
  89. package/dist/esm/excel-parser/plugins/xlsx/relationships.js +9 -0
  90. package/dist/esm/excel-parser/plugins/xlsx/theme.d.ts +1 -1
  91. package/dist/esm/excel-parser/types.d.ts +9 -1
  92. package/dist/esm/excel-parser/types.d.ts.map +1 -1
  93. package/dist/esm/excel-parser/workbook.d.ts +1 -0
  94. package/dist/esm/excel-parser/workbook.d.ts.map +1 -1
  95. package/dist/esm/excel-parser/workbook.js +4 -0
  96. package/dist/esm/excel-parser/worker.js +2 -0
  97. package/dist/esm/exporter/ods/ods-export.d.ts.map +1 -1
  98. package/dist/esm/exporter/ods/ods-export.js +238 -72
  99. package/dist/esm/exporter/xlsx/chart-builder.d.ts +7 -1
  100. package/dist/esm/exporter/xlsx/chart-builder.d.ts.map +1 -1
  101. package/dist/esm/exporter/xlsx/chart-builder.js +674 -58
  102. package/dist/esm/exporter/xlsx/form-controls-builder.d.ts +16 -3
  103. package/dist/esm/exporter/xlsx/form-controls-builder.d.ts.map +1 -1
  104. package/dist/esm/exporter/xlsx/form-controls-builder.js +29 -8
  105. package/dist/esm/exporter/xlsx/pivot-builder.d.ts.map +1 -1
  106. package/dist/esm/exporter/xlsx/pivot-builder.js +187 -139
  107. package/dist/esm/exporter/xlsx/style-builder.d.ts +8 -2
  108. package/dist/esm/exporter/xlsx/style-builder.d.ts.map +1 -1
  109. package/dist/esm/exporter/xlsx/style-builder.js +28 -0
  110. package/dist/esm/exporter/xlsx/xlsx-export.d.ts +2 -2
  111. package/dist/esm/exporter/xlsx/xlsx-export.d.ts.map +1 -1
  112. package/dist/esm/exporter/xlsx/xlsx-export.js +451 -197
  113. package/package.json +10 -5
@@ -3,19 +3,19 @@ import { addressToCell, addressToSelection, alpha2number, checkIfStringIsReferen
3
3
  import { XMLParser } from "fast-xml-parser";
4
4
  import { get } from "lodash-es";
5
5
  import { Parser as HtmlParser } from "htmlparser2";
6
- import { createFilterSpecsFromAutoFilter, excelColumnWidthToPixels, findMax, getRangeFromAddressRef, parseTableColumnTotals, } from "../../helpers";
6
+ import { createFilterSpecsFromAutoFilter, excelColumnWidthToPixels, findMax, createSortSpecsFromSortState, getRangeFromAddressRef, hiddenFilterButtonColumns, parseTableColumnTotals, } from "../../helpers";
7
7
  import { defaultSpreadsheetTheme } from "../../theme-default";
8
8
  import { Unescape } from "../../utils";
9
9
  import { compactPrintSettings, isBuiltinPrintName, isDefaultPageMargins, parsePrintAreaFormula, parsePrintTitlesFormula, PRINT_AREA_NAME, } from "../../../print-settings";
10
10
  import { StreamingZipParser } from "../../zip-parser-streaming";
11
11
  import { SheetDataValidationStamper } from "../../dv-cell-stamp";
12
12
  import { BaseWorkbookPlugin } from "../base/index";
13
- import { processChart } from "./charts";
14
- import { customFiltersToCondition, dynamicFilterToCondition, } from "../../../autofilter-condition";
13
+ import { bindPivotChartsToPivotTables, PIVOT_SOURCE_NAME_KEY, processChart, } from "./charts";
14
+ import { customFiltersToCriteria, dynamicFilterToCondition, top10FilterToCondition, } from "../../../autofilter-condition";
15
15
  import { getConditionalFormattingFromSheet } from "./conditional-formatting";
16
16
  import { getDataValidationsForSheet as parseDataValidationsFromSheetData } from "./data-validations";
17
- import { anchorsInDocumentOrder, processAnchors, } from "./drawing";
18
- import { getRelationsById } from "./relationships";
17
+ import { anchorPlacementFromEditAs, anchorsInDocumentOrder, processAnchors, } from "./drawing";
18
+ import { getRelationsById, getSheetRelsPath } from "./relationships";
19
19
  import { hasPowerQueryParts, } from "../../../power-query";
20
20
  import { extractSheetViewProperties } from "./sheet-views";
21
21
  import { EMPTY_SHEET_THREADED_COMMENTS, parsePersons, parseThreadedComments, } from "./threaded-comments";
@@ -412,7 +412,7 @@ var WorkbookStyles = /** @class */ (function () {
412
412
  */
413
413
  WorkbookStyles.prototype.getCustomTableStyleBanding = function (styleName) {
414
414
  var e_4, _a;
415
- var _b, _c;
415
+ var _b, _c, _d, _e, _f;
416
416
  var style = this.tableStyles.get(styleName);
417
417
  if (!style)
418
418
  return undefined;
@@ -421,8 +421,8 @@ var WorkbookStyles = /** @class */ (function () {
421
421
  columnProperties: {},
422
422
  };
423
423
  try {
424
- for (var _d = __values(style.elements), _e = _d.next(); !_e.done; _e = _d.next()) {
425
- var element = _e.value;
424
+ for (var _g = __values(style.elements), _h = _g.next(); !_h.done; _h = _g.next()) {
425
+ var element = _h.value;
426
426
  var type = (_b = element.a$) === null || _b === void 0 ? void 0 : _b.type;
427
427
  var dxfId = (_c = element.a$) === null || _c === void 0 ? void 0 : _c.dxfId;
428
428
  if (type === undefined || dxfId === undefined)
@@ -439,10 +439,17 @@ var WorkbookStyles = /** @class */ (function () {
439
439
  if (color)
440
440
  bandedDef.rowProperties.headerColor = color;
441
441
  break;
442
- case "totalRow":
442
+ case "totalRow": {
443
443
  if (color)
444
444
  bandedDef.rowProperties.totalRowColor = color;
445
+ // Excel's totals element bolds the row (`<font><b/></font>`), fill or not.
446
+ var font = (dxf === null || dxf === void 0 ? void 0 : dxf.font) || (dxf === null || dxf === void 0 ? void 0 : dxf["x:font"]);
447
+ var b = (_d = font === null || font === void 0 ? void 0 : font.b) !== null && _d !== void 0 ? _d : font === null || font === void 0 ? void 0 : font["x:b"];
448
+ if (b !== undefined && ((_f = (_e = b === null || b === void 0 ? void 0 : b.a$) === null || _e === void 0 ? void 0 : _e.val) !== null && _f !== void 0 ? _f : b === null || b === void 0 ? void 0 : b.val) !== "0") {
449
+ bandedDef.rowProperties.totalRowBold = true;
450
+ }
445
451
  break;
452
+ }
446
453
  case "firstRowStripe":
447
454
  if (color)
448
455
  bandedDef.rowProperties.firstBandColor = color;
@@ -459,13 +466,21 @@ var WorkbookStyles = /** @class */ (function () {
459
466
  if (color)
460
467
  bandedDef.columnProperties.secondBandColor = color;
461
468
  break;
469
+ case "firstColumn":
470
+ if (color)
471
+ bandedDef.rowProperties.firstColumnColor = color;
472
+ break;
473
+ case "lastColumn":
474
+ if (color)
475
+ bandedDef.rowProperties.lastColumnColor = color;
476
+ break;
462
477
  }
463
478
  }
464
479
  }
465
480
  catch (e_4_1) { e_4 = { error: e_4_1 }; }
466
481
  finally {
467
482
  try {
468
- if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
483
+ if (_h && !_h.done && (_a = _g.return)) _a.call(_g);
469
484
  }
470
485
  finally { if (e_4) throw e_4.error; }
471
486
  }
@@ -774,6 +789,11 @@ var XlsxPlugin = /** @class */ (function (_super) {
774
789
  * multi-sheet workbook never retains more than one worksheet DOM.
775
790
  */
776
791
  _this.lastSheetDataCache = null;
792
+ /**
793
+ * Per-rid memo of a chartsheet's parsed chart, so `Sheet.chartId` (set by
794
+ * `getSheets()`) and `getCharts()` see the same generated chart id.
795
+ */
796
+ _this.chartsheetChartsCache = new Map();
777
797
  /** workbook.xml sheet elements indexed by sheetId (sheet-scoped API). */
778
798
  _this.worksheetBySheetId = new Map();
779
799
  /**
@@ -1165,6 +1185,15 @@ var XlsxPlugin = /** @class */ (function (_super) {
1165
1185
  entry.dynamicFilterType = attrs.type;
1166
1186
  }
1167
1187
  }
1188
+ // <top10 top="1" percent="0" val="10"/> (Excel's "Top 10…")
1189
+ if (name === "top10" && currentFilterColumn !== null) {
1190
+ var entry = getOrCreateFilterColumn(currentFilterColumn);
1191
+ entry.top10 = {
1192
+ top: typeof attrs.top === "string" ? attrs.top : undefined,
1193
+ percent: typeof attrs.percent === "string" ? attrs.percent : undefined,
1194
+ val: typeof attrs.val === "string" ? attrs.val : undefined,
1195
+ };
1196
+ }
1168
1197
  if (name === "tablePart") {
1169
1198
  var rid_1 = attrs["r:id"];
1170
1199
  if (typeof rid_1 === "string") {
@@ -1232,15 +1261,20 @@ var XlsxPlugin = /** @class */ (function (_super) {
1232
1261
  };
1233
1262
  }
1234
1263
  if ((_c = raw.customFilters) === null || _c === void 0 ? void 0 : _c.length) {
1235
- var condition = customFiltersToCondition(raw.customFilters, raw.customFiltersAnd === true);
1236
- if (condition)
1237
- criteria.condition = condition;
1264
+ var conditions = customFiltersToCriteria(raw.customFilters, raw.customFiltersAnd === true);
1265
+ if (conditions)
1266
+ Object.assign(criteria, conditions);
1238
1267
  }
1239
1268
  else if (raw.dynamicFilterType) {
1240
1269
  var condition = dynamicFilterToCondition(raw.dynamicFilterType);
1241
1270
  if (condition)
1242
1271
  criteria.condition = condition;
1243
1272
  }
1273
+ else if (raw.top10) {
1274
+ var condition = top10FilterToCondition(raw.top10);
1275
+ if (condition)
1276
+ criteria.condition = condition;
1277
+ }
1244
1278
  return { columnIndex: columnIndex, filterCriteria: criteria };
1245
1279
  });
1246
1280
  sheetViewData = sheetViewAttrs || paneAttrs
@@ -1348,7 +1382,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
1348
1382
  return [2 /*return*/, { maxColumnIndex: maxColumnIndex, maxRowIndex: maxRowIndex }];
1349
1383
  }
1350
1384
  sheetPath = this.resolveSheetPath(relation.target);
1351
- sheetRelPath = sheetPath.replace("worksheets", "worksheets/_rels") + ".rels";
1385
+ sheetRelPath = getSheetRelsPath(sheetPath);
1352
1386
  return [4 /*yield*/, this.zipParser.getText(sheetRelPath)];
1353
1387
  case 2:
1354
1388
  sheetRelContent = _e.sent();
@@ -1518,7 +1552,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
1518
1552
  controls: false,
1519
1553
  };
1520
1554
  sheetPath = this.resolveSheetPath(relation.target);
1521
- sheetRelPath = sheetPath.replace("worksheets", "worksheets/_rels") + ".rels";
1555
+ sheetRelPath = getSheetRelsPath(sheetPath);
1522
1556
  sheetRelationships = {};
1523
1557
  _b.label = 1;
1524
1558
  case 1:
@@ -2106,6 +2140,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
2106
2140
  this.personsPromise = null;
2107
2141
  this.sheetFeatures.clear();
2108
2142
  this.lastSheetDataCache = null;
2143
+ this.chartsheetChartsCache.clear();
2109
2144
  this.sheetMetadataCache.clear();
2110
2145
  this.dataValidationsBySheetCache.clear();
2111
2146
  this.conditionalFormattingBySheetCache.clear();
@@ -2144,6 +2179,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
2144
2179
  this.personsPromise = null;
2145
2180
  this.sheetFeatures.clear();
2146
2181
  this.lastSheetDataCache = null;
2182
+ this.chartsheetChartsCache.clear();
2147
2183
  this.sheetMetadataCache.clear();
2148
2184
  this.dataValidationsBySheetCache.clear();
2149
2185
  this.conditionalFormattingBySheetCache.clear();
@@ -2176,9 +2212,9 @@ var XlsxPlugin = /** @class */ (function (_super) {
2176
2212
  var tables, target, sheetPath, sheetRelPath, sheetRelContent, sheetRels, tableRelations, tableRelationsArray, _loop_3, this_1, tablePartIds_1, tablePartIds_1_1, tableRId, e_16_1, err_3;
2177
2213
  var e_16, _a;
2178
2214
  var _this = this;
2179
- var _b;
2180
- return __generator(this, function (_c) {
2181
- switch (_c.label) {
2215
+ var _b, _c;
2216
+ return __generator(this, function (_d) {
2217
+ switch (_d.label) {
2182
2218
  case 0:
2183
2219
  tables = [];
2184
2220
  if (!tablePartIds.length) {
@@ -2188,22 +2224,23 @@ var XlsxPlugin = /** @class */ (function (_super) {
2188
2224
  sheetPath = target.startsWith("/xl")
2189
2225
  ? target.replace(/^\//gi, "")
2190
2226
  : "xl/".concat(this.relations[rId].target);
2191
- sheetRelPath = sheetPath.replace("worksheets", "worksheets/_rels") + ".rels";
2192
- _c.label = 1;
2227
+ sheetRelPath = getSheetRelsPath(sheetPath);
2228
+ _d.label = 1;
2193
2229
  case 1:
2194
- _c.trys.push([1, 11, , 12]);
2230
+ _d.trys.push([1, 11, , 12]);
2195
2231
  return [4 /*yield*/, this.zipParser.getText(sheetRelPath)];
2196
2232
  case 2:
2197
- sheetRelContent = _c.sent();
2233
+ sheetRelContent = _d.sent();
2198
2234
  sheetRels = this.xmlParser.parse(sheetRelContent);
2199
2235
  tableRelations = get(sheetRels, "Relationships.Relationship");
2200
2236
  tableRelationsArray = Array.isArray(tableRelations)
2201
2237
  ? tableRelations
2202
2238
  : [tableRelations];
2203
2239
  _loop_3 = function (tableRId) {
2204
- var tableRel, tablePath, tableContent, tableData, tableDefinition, attrs, displayName, headerRow, totalRow, showFirstColumn, showLastColumn, showRowStripes, showColumnStripes, columnDefinitions, columnDefsArray, columns, tableStyle, tableStyleAttrs, filterButton, range, autoFilter, filterSpecs, tableView, fullStyleName, styleName, bandedRange, _d, headerColor, headerBorder, totalRowColor, totalRowBorder;
2205
- return __generator(this, function (_e) {
2206
- switch (_e.label) {
2240
+ var tableRel, tablePath, tableContent, tableData, tableDefinition, attrs, displayName, headerRow, totalRow, tableStyle, tableStyleAttrs, showFirstColumn, showLastColumn, showRowStripes, showColumnStripes, columnDefinitions, columnDefsArray, columns, autoFilter, filterButton, _e, _f, colId, range, filterSpecs, sortSpecs, tableView, fullStyleName, styleName, bandedRange, _g, headerColor, headerBorder, totalRowColor, totalRowBorder, firstColumnColor, lastColumnColor, totalRowBold;
2241
+ var e_17, _h;
2242
+ return __generator(this, function (_j) {
2243
+ switch (_j.label) {
2207
2244
  case 0:
2208
2245
  tableRel = tableRelationsArray.find(function (rel) { return rel.a$.Id === tableRId; });
2209
2246
  if (!tableRel)
@@ -2222,7 +2259,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
2222
2259
  }
2223
2260
  return [4 /*yield*/, this_1.zipParser.getText(tablePath)];
2224
2261
  case 1:
2225
- tableContent = _e.sent();
2262
+ tableContent = _j.sent();
2226
2263
  tableData = this_1.xmlParser.parse(tableContent || "");
2227
2264
  tableDefinition = get(tableData, "table") || get(tableData, "x:table");
2228
2265
  if (tableDefinition) {
@@ -2230,10 +2267,14 @@ var XlsxPlugin = /** @class */ (function (_super) {
2230
2267
  displayName = attrs.displayName || attrs.name || "Table".concat(tables.length + 1);
2231
2268
  headerRow = attrs.headerRowCount !== "0";
2232
2269
  totalRow = attrs.totalsRowCount === "1";
2233
- showFirstColumn = attrs.showFirstColumn === "1";
2234
- showLastColumn = attrs.showLastColumn === "1";
2235
- showRowStripes = attrs.showRowStripes !== "0";
2236
- showColumnStripes = attrs.showColumnStripes === "1";
2270
+ tableStyle = get(tableDefinition, "tableStyleInfo") ||
2271
+ get(tableDefinition, "x:tableStyleInfo") ||
2272
+ {};
2273
+ tableStyleAttrs = tableStyle.a$ || {};
2274
+ showFirstColumn = tableStyleAttrs.showFirstColumn === "1";
2275
+ showLastColumn = tableStyleAttrs.showLastColumn === "1";
2276
+ showRowStripes = tableStyleAttrs.showRowStripes !== "0";
2277
+ showColumnStripes = tableStyleAttrs.showColumnStripes === "1";
2237
2278
  columnDefinitions = get(tableDefinition, "tableColumns.tableColumn") ||
2238
2279
  get(tableDefinition, "x:tableColumns.x:tableColumn");
2239
2280
  columnDefsArray = Array.isArray(columnDefinitions)
@@ -2253,30 +2294,27 @@ var XlsxPlugin = /** @class */ (function (_super) {
2253
2294
  }
2254
2295
  return columnObj;
2255
2296
  });
2256
- tableStyle = get(tableDefinition, "tableStyleInfo") ||
2257
- get(tableDefinition, "x:tableStyleInfo") ||
2258
- {};
2259
- tableStyleAttrs = tableStyle.a$ || {};
2260
- filterButton = attrs.filterButton !== "0";
2297
+ autoFilter = (_b = tableDefinition.autoFilter) !== null && _b !== void 0 ? _b : tableDefinition["x:autoFilter"];
2298
+ filterButton = attrs.filterButton !== "0" && (!headerRow || autoFilter !== undefined);
2299
+ try {
2300
+ for (_e = (e_17 = void 0, __values(hiddenFilterButtonColumns(autoFilter))), _f = _e.next(); !_f.done; _f = _e.next()) {
2301
+ colId = _f.value;
2302
+ if (columns[colId])
2303
+ columns[colId].filterButton = false;
2304
+ }
2305
+ }
2306
+ catch (e_17_1) { e_17 = { error: e_17_1 }; }
2307
+ finally {
2308
+ try {
2309
+ if (_f && !_f.done && (_h = _e.return)) _h.call(_e);
2310
+ }
2311
+ finally { if (e_17) throw e_17.error; }
2312
+ }
2261
2313
  range = getRangeFromAddressRef(attrs.ref);
2262
2314
  if (range) {
2263
- autoFilter = (_b = tableDefinition.autoFilter) !== null && _b !== void 0 ? _b : tableDefinition["x:autoFilter"];
2264
2315
  filterSpecs = createFilterSpecsFromAutoFilter(autoFilter, function (dxfId, cellColor) { return _this.resolveDxfColor(dxfId, cellColor); });
2265
- tableView = {
2266
- id: attrs.id,
2267
- title: attrs.name,
2268
- sheetId: sheetId,
2269
- headerRow: headerRow,
2270
- totalRow: totalRow,
2271
- showRowStripes: showRowStripes,
2272
- showColumnStripes: showColumnStripes,
2273
- showFirstColumn: showFirstColumn,
2274
- showLastColumn: showLastColumn,
2275
- filterButton: filterButton,
2276
- columns: columns,
2277
- range: range,
2278
- filterSpecs: filterSpecs,
2279
- };
2316
+ sortSpecs = createSortSpecsFromSortState((_c = tableDefinition.sortState) !== null && _c !== void 0 ? _c : tableDefinition["x:sortState"], range, function (dxfId, cellColor) { return _this.resolveDxfColor(dxfId, cellColor); });
2317
+ tableView = __assign({ id: attrs.id, title: attrs.name, sheetId: sheetId, headerRow: headerRow, totalRow: totalRow, showRowStripes: showRowStripes, showColumnStripes: showColumnStripes, showFirstColumn: showFirstColumn, showLastColumn: showLastColumn, filterButton: filterButton, columns: columns, range: range, filterSpecs: filterSpecs }, (sortSpecs.length ? { sortSpecs: sortSpecs } : {}));
2280
2318
  // Add table theme if available
2281
2319
  if (tableStyleAttrs.name) {
2282
2320
  fullStyleName = tableStyleAttrs.name;
@@ -2290,16 +2328,22 @@ var XlsxPlugin = /** @class */ (function (_super) {
2290
2328
  if (bandedRange) {
2291
2329
  // Only include row/column properties based on stripe settings
2292
2330
  if (!showRowStripes && bandedRange.rowProperties) {
2293
- _d = bandedRange.rowProperties, headerColor = _d.headerColor, headerBorder = _d.headerBorder, totalRowColor = _d.totalRowColor, totalRowBorder = _d.totalRowBorder;
2331
+ _g = bandedRange.rowProperties, headerColor = _g.headerColor, headerBorder = _g.headerBorder, totalRowColor = _g.totalRowColor, totalRowBorder = _g.totalRowBorder, firstColumnColor = _g.firstColumnColor, lastColumnColor = _g.lastColumnColor, totalRowBold = _g.totalRowBold;
2294
2332
  if (headerColor ||
2295
2333
  headerBorder ||
2296
2334
  totalRowColor ||
2297
- totalRowBorder) {
2335
+ totalRowBorder ||
2336
+ firstColumnColor ||
2337
+ lastColumnColor ||
2338
+ totalRowBold) {
2298
2339
  bandedRange.rowProperties = {
2299
2340
  headerColor: headerColor,
2300
2341
  headerBorder: headerBorder,
2301
2342
  totalRowColor: totalRowColor,
2302
2343
  totalRowBorder: totalRowBorder,
2344
+ firstColumnColor: firstColumnColor,
2345
+ lastColumnColor: lastColumnColor,
2346
+ totalRowBold: totalRowBold,
2303
2347
  };
2304
2348
  }
2305
2349
  else {
@@ -2320,24 +2364,24 @@ var XlsxPlugin = /** @class */ (function (_super) {
2320
2364
  });
2321
2365
  };
2322
2366
  this_1 = this;
2323
- _c.label = 3;
2367
+ _d.label = 3;
2324
2368
  case 3:
2325
- _c.trys.push([3, 8, 9, 10]);
2369
+ _d.trys.push([3, 8, 9, 10]);
2326
2370
  tablePartIds_1 = __values(tablePartIds), tablePartIds_1_1 = tablePartIds_1.next();
2327
- _c.label = 4;
2371
+ _d.label = 4;
2328
2372
  case 4:
2329
2373
  if (!!tablePartIds_1_1.done) return [3 /*break*/, 7];
2330
2374
  tableRId = tablePartIds_1_1.value;
2331
2375
  return [5 /*yield**/, _loop_3(tableRId)];
2332
2376
  case 5:
2333
- _c.sent();
2334
- _c.label = 6;
2377
+ _d.sent();
2378
+ _d.label = 6;
2335
2379
  case 6:
2336
2380
  tablePartIds_1_1 = tablePartIds_1.next();
2337
2381
  return [3 /*break*/, 4];
2338
2382
  case 7: return [3 /*break*/, 10];
2339
2383
  case 8:
2340
- e_16_1 = _c.sent();
2384
+ e_16_1 = _d.sent();
2341
2385
  e_16 = { error: e_16_1 };
2342
2386
  return [3 /*break*/, 10];
2343
2387
  case 9:
@@ -2348,7 +2392,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
2348
2392
  return [7 /*endfinally*/];
2349
2393
  case 10: return [3 /*break*/, 12];
2350
2394
  case 11:
2351
- err_3 = _c.sent();
2395
+ err_3 = _d.sent();
2352
2396
  // Skip if relation file doesn't exist or has issues
2353
2397
  console.log("Error parsing table", err_3);
2354
2398
  return [3 /*break*/, 12];
@@ -2386,6 +2430,29 @@ var XlsxPlugin = /** @class */ (function (_super) {
2386
2430
  }
2387
2431
  return this.resolveSheetPath(relation.target);
2388
2432
  };
2433
+ /**
2434
+ * A chartsheet (`xl/chartsheets/sheetN.xml`) is listed in `<sheets>` like a
2435
+ * worksheet; only its workbook relationship type tells it apart.
2436
+ */
2437
+ XlsxPlugin.prototype.isChartsheet = function (rid) {
2438
+ var _a;
2439
+ var relation = this.relations[rid];
2440
+ if (!relation)
2441
+ return false;
2442
+ return (((_a = relation.type) !== null && _a !== void 0 ? _a : "").endsWith("/chartsheet") ||
2443
+ this.resolveSheetPath(relation.target).includes("chartsheets/"));
2444
+ };
2445
+ XlsxPlugin.prototype.getChartsheetCharts = function (rid, sheetId) {
2446
+ var _this = this;
2447
+ var cached = this.chartsheetChartsCache.get(rid);
2448
+ if (!cached) {
2449
+ cached = this.getSheetData(rid).then(function (sheetData) {
2450
+ return _this._getCharts(rid, sheetId, sheetData);
2451
+ });
2452
+ this.chartsheetChartsCache.set(rid, cached);
2453
+ }
2454
+ return cached;
2455
+ };
2389
2456
  XlsxPlugin.prototype.streamSheetRows = function (rid) {
2390
2457
  return __asyncGenerator(this, arguments, function streamSheetRows_1() {
2391
2458
  var path, inSheetData, currentRow, currentCell, currentValueText, currentFormulaText, currentInlineText, currentFormulaAttrs, currentTag, inInlineStr, inInlineRun, inInlineRunProps, inlineRunStart, inlineRunText, inlineRunFormat, inlineRuns, normalizeTag, normalizeAttrs, truthyAttr, commitInlineRun, applyInlineRunProperty, HIGH_WATER_ROWS, queue, queueHead, done, pendingResolve, drainResolve, queuedRows, releaseDrain, notifyDrained, pushRow, closeQueue, self, parser, aborted, producerError, producerDone, row_1, row;
@@ -2798,7 +2865,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
2798
2865
  XlsxPlugin.prototype.getCommentsForSheet = function (rId) {
2799
2866
  return __awaiter(this, void 0, void 0, function () {
2800
2867
  var comments, relation, sheetPath, sheetRelPath, sheetRelContent, _a, sheetRels, relationships, relationshipsArray, commentRel, commentsPath, commentsContent, parsedComments, commentList, commentArray, commentArray_1, commentArray_1_1, comment, ref, text, _b;
2801
- var e_17, _c;
2868
+ var e_18, _c;
2802
2869
  var _d;
2803
2870
  return __generator(this, function (_e) {
2804
2871
  switch (_e.label) {
@@ -2813,7 +2880,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
2813
2880
  return [2 /*return*/, comments];
2814
2881
  }
2815
2882
  sheetPath = this.resolveSheetPath(relation.target);
2816
- sheetRelPath = sheetPath.replace("worksheets", "worksheets/_rels") + ".rels";
2883
+ sheetRelPath = getSheetRelsPath(sheetPath);
2817
2884
  _e.label = 1;
2818
2885
  case 1:
2819
2886
  _e.trys.push([1, 3, , 4]);
@@ -2865,12 +2932,12 @@ var XlsxPlugin = /** @class */ (function (_super) {
2865
2932
  }
2866
2933
  }
2867
2934
  }
2868
- catch (e_17_1) { e_17 = { error: e_17_1 }; }
2935
+ catch (e_18_1) { e_18 = { error: e_18_1 }; }
2869
2936
  finally {
2870
2937
  try {
2871
2938
  if (commentArray_1_1 && !commentArray_1_1.done && (_c = commentArray_1.return)) _c.call(commentArray_1);
2872
2939
  }
2873
- finally { if (e_17) throw e_17.error; }
2940
+ finally { if (e_18) throw e_18.error; }
2874
2941
  }
2875
2942
  return [3 /*break*/, 8];
2876
2943
  case 7:
@@ -2942,7 +3009,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
2942
3009
  return [2 /*return*/, result];
2943
3010
  }
2944
3011
  sheetPath = this.resolveSheetPath(relation.target);
2945
- sheetRelPath = sheetPath.replace("worksheets", "worksheets/_rels") + ".rels";
3012
+ sheetRelPath = getSheetRelsPath(sheetPath);
2946
3013
  _d.label = 1;
2947
3014
  case 1:
2948
3015
  _d.trys.push([1, 6, , 7]);
@@ -2986,8 +3053,8 @@ var XlsxPlugin = /** @class */ (function (_super) {
2986
3053
  */
2987
3054
  XlsxPlugin.prototype.getCommentThreads = function (sheetId) {
2988
3055
  return __awaiter(this, void 0, void 0, function () {
2989
- var elements, threads, elements_1, elements_1_1, element, rid, sheetThreads, e_18_1;
2990
- var e_18, _a;
3056
+ var elements, threads, elements_1, elements_1_1, element, rid, sheetThreads, e_19_1;
3057
+ var e_19, _a;
2991
3058
  var _b;
2992
3059
  return __generator(this, function (_c) {
2993
3060
  switch (_c.label) {
@@ -3017,14 +3084,14 @@ var XlsxPlugin = /** @class */ (function (_super) {
3017
3084
  return [3 /*break*/, 2];
3018
3085
  case 5: return [3 /*break*/, 8];
3019
3086
  case 6:
3020
- e_18_1 = _c.sent();
3021
- e_18 = { error: e_18_1 };
3087
+ e_19_1 = _c.sent();
3088
+ e_19 = { error: e_19_1 };
3022
3089
  return [3 /*break*/, 8];
3023
3090
  case 7:
3024
3091
  try {
3025
3092
  if (elements_1_1 && !elements_1_1.done && (_a = elements_1.return)) _a.call(elements_1);
3026
3093
  }
3027
- finally { if (e_18) throw e_18.error; }
3094
+ finally { if (e_19) throw e_19.error; }
3028
3095
  return [7 /*endfinally*/];
3029
3096
  case 8: return [2 /*return*/, threads];
3030
3097
  }
@@ -3032,7 +3099,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
3032
3099
  });
3033
3100
  };
3034
3101
  XlsxPlugin.prototype.getFonts = function () {
3035
- var e_19, _a, e_20, _b, e_21, _c;
3102
+ var e_20, _a, e_21, _b, e_22, _c;
3036
3103
  var _d, _e, _f;
3037
3104
  var fontSet = new Set();
3038
3105
  // The Fonts array contains all font definitions used in the workbook.
@@ -3069,12 +3136,12 @@ var XlsxPlugin = /** @class */ (function (_super) {
3069
3136
  }
3070
3137
  }
3071
3138
  }
3072
- catch (e_19_1) { e_19 = { error: e_19_1 }; }
3139
+ catch (e_20_1) { e_20 = { error: e_20_1 }; }
3073
3140
  finally {
3074
3141
  try {
3075
3142
  if (fontArray_1_1 && !fontArray_1_1.done && (_a = fontArray_1.return)) _a.call(fontArray_1);
3076
3143
  }
3077
- finally { if (e_19) throw e_19.error; }
3144
+ finally { if (e_20) throw e_20.error; }
3078
3145
  }
3079
3146
  }
3080
3147
  // Rich-text shared-string runs carry per-run `<rPr><rFont val>` fonts
@@ -3084,7 +3151,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
3084
3151
  for (var _g = __values(this.richSharedStringRuns.values()), _h = _g.next(); !_h.done; _h = _g.next()) {
3085
3152
  var runs = _h.value;
3086
3153
  try {
3087
- for (var runs_2 = (e_21 = void 0, __values(runs)), runs_2_1 = runs_2.next(); !runs_2_1.done; runs_2_1 = runs_2.next()) {
3154
+ for (var runs_2 = (e_22 = void 0, __values(runs)), runs_2_1 = runs_2.next(); !runs_2_1.done; runs_2_1 = runs_2.next()) {
3088
3155
  var run = runs_2_1.value;
3089
3156
  var family = run.nodeType === "text" ? (_f = run.format) === null || _f === void 0 ? void 0 : _f.fontFamily : undefined;
3090
3157
  if (family) {
@@ -3092,21 +3159,21 @@ var XlsxPlugin = /** @class */ (function (_super) {
3092
3159
  }
3093
3160
  }
3094
3161
  }
3095
- catch (e_21_1) { e_21 = { error: e_21_1 }; }
3162
+ catch (e_22_1) { e_22 = { error: e_22_1 }; }
3096
3163
  finally {
3097
3164
  try {
3098
3165
  if (runs_2_1 && !runs_2_1.done && (_c = runs_2.return)) _c.call(runs_2);
3099
3166
  }
3100
- finally { if (e_21) throw e_21.error; }
3167
+ finally { if (e_22) throw e_22.error; }
3101
3168
  }
3102
3169
  }
3103
3170
  }
3104
- catch (e_20_1) { e_20 = { error: e_20_1 }; }
3171
+ catch (e_21_1) { e_21 = { error: e_21_1 }; }
3105
3172
  finally {
3106
3173
  try {
3107
3174
  if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
3108
3175
  }
3109
- finally { if (e_20) throw e_20.error; }
3176
+ finally { if (e_21) throw e_21.error; }
3110
3177
  }
3111
3178
  }
3112
3179
  return __spreadArray([], __read(fontSet), false);
@@ -3118,7 +3185,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
3118
3185
  * Extract column widths and row heights from sheet XML for chart positioning
3119
3186
  */
3120
3187
  XlsxPlugin.prototype._extractSheetDimensions = function (sheetData) {
3121
- var e_22, _a, e_23, _b, e_24, _c;
3188
+ var e_23, _a, e_24, _b, e_25, _c;
3122
3189
  var _d, _e, _f, _g, _h, _j, _k;
3123
3190
  var columnWidths = new Map();
3124
3191
  var rowHeights = new Map();
@@ -3146,12 +3213,12 @@ var XlsxPlugin = /** @class */ (function (_super) {
3146
3213
  }
3147
3214
  }
3148
3215
  }
3149
- catch (e_22_1) { e_22 = { error: e_22_1 }; }
3216
+ catch (e_23_1) { e_23 = { error: e_23_1 }; }
3150
3217
  finally {
3151
3218
  try {
3152
3219
  if (colsArray_1_1 && !colsArray_1_1.done && (_a = colsArray_1.return)) _a.call(colsArray_1);
3153
3220
  }
3154
- finally { if (e_22) throw e_22.error; }
3221
+ finally { if (e_23) throw e_23.error; }
3155
3222
  }
3156
3223
  // Extract row heights from sheetData/row elements
3157
3224
  var rows = get(sheetData, "worksheet.sheetData.row") ||
@@ -3185,12 +3252,12 @@ var XlsxPlugin = /** @class */ (function (_super) {
3185
3252
  }
3186
3253
  }
3187
3254
  }
3188
- catch (e_23_1) { e_23 = { error: e_23_1 }; }
3255
+ catch (e_24_1) { e_24 = { error: e_24_1 }; }
3189
3256
  finally {
3190
3257
  try {
3191
3258
  if (rowsArray_1_1 && !rowsArray_1_1.done && (_b = rowsArray_1.return)) _b.call(rowsArray_1);
3192
3259
  }
3193
- finally { if (e_23) throw e_23.error; }
3260
+ finally { if (e_24) throw e_24.error; }
3194
3261
  }
3195
3262
  try {
3196
3263
  // Also check for hidden columns
@@ -3211,12 +3278,12 @@ var XlsxPlugin = /** @class */ (function (_super) {
3211
3278
  }
3212
3279
  }
3213
3280
  }
3214
- catch (e_24_1) { e_24 = { error: e_24_1 }; }
3281
+ catch (e_25_1) { e_25 = { error: e_25_1 }; }
3215
3282
  finally {
3216
3283
  try {
3217
3284
  if (colsArray_2_1 && !colsArray_2_1.done && (_c = colsArray_2.return)) _c.call(colsArray_2);
3218
3285
  }
3219
- finally { if (e_24) throw e_24.error; }
3286
+ finally { if (e_25) throw e_25.error; }
3220
3287
  }
3221
3288
  return {
3222
3289
  columnWidths: columnWidths.size > 0 ? columnWidths : undefined,
@@ -3227,8 +3294,8 @@ var XlsxPlugin = /** @class */ (function (_super) {
3227
3294
  };
3228
3295
  XlsxPlugin.prototype._getCharts = function (rid, sheetId, sheetData) {
3229
3296
  return __awaiter(this, void 0, void 0, function () {
3230
- var charts, sheetDimensions, target, path, sheetIdByName, _a, _b, sheet, name_5, sId, resolveSheetId, drawing, drawings, sheetRelPath, sheetRelContent, sheetRels, drawingRelations, drawingRelationsArray, _loop_4, this_2, drawings_1, drawings_1_1, drawingElement, e_25_1, err_5;
3231
- var e_26, _c, e_25, _d;
3297
+ var charts, sheetDimensions, target, path, sheetIdByName, _a, _b, sheet, name_5, sId, resolveSheetId, drawing, drawings, sheetRelPath, sheetRelContent, sheetRels, drawingRelations, drawingRelationsArray, _loop_4, this_2, drawings_1, drawings_1_1, drawingElement, e_26_1, err_5;
3298
+ var e_27, _c, e_26, _d;
3232
3299
  var _e, _f;
3233
3300
  return __generator(this, function (_g) {
3234
3301
  switch (_g.label) {
@@ -3250,19 +3317,21 @@ var XlsxPlugin = /** @class */ (function (_super) {
3250
3317
  }
3251
3318
  }
3252
3319
  }
3253
- catch (e_26_1) { e_26 = { error: e_26_1 }; }
3320
+ catch (e_27_1) { e_27 = { error: e_27_1 }; }
3254
3321
  finally {
3255
3322
  try {
3256
3323
  if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
3257
3324
  }
3258
- finally { if (e_26) throw e_26.error; }
3325
+ finally { if (e_27) throw e_27.error; }
3259
3326
  }
3260
3327
  resolveSheetId = function (sheetName) {
3261
3328
  return sheetName ? sheetIdByName[String(sheetName)] : undefined;
3262
3329
  };
3263
3330
  drawing = get(sheetData, "worksheet.drawing") ||
3264
3331
  get(sheetData, "drawing") ||
3265
- get(sheetData, "x:worksheet.x:drawing");
3332
+ get(sheetData, "x:worksheet.x:drawing") ||
3333
+ get(sheetData, "chartsheet.drawing") ||
3334
+ get(sheetData, "x:chartsheet.x:drawing");
3266
3335
  if (!drawing) {
3267
3336
  return [2 /*return*/, []];
3268
3337
  }
@@ -3270,7 +3339,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
3270
3339
  _g.label = 1;
3271
3340
  case 1:
3272
3341
  _g.trys.push([1, 11, , 12]);
3273
- sheetRelPath = path.replace("worksheets", "worksheets/_rels") + ".rels";
3342
+ sheetRelPath = getSheetRelsPath(path);
3274
3343
  return [4 /*yield*/, this.zipParser.getText(sheetRelPath)];
3275
3344
  case 2:
3276
3345
  sheetRelContent = _g.sent();
@@ -3280,10 +3349,10 @@ var XlsxPlugin = /** @class */ (function (_super) {
3280
3349
  ? drawingRelations
3281
3350
  : [drawingRelations];
3282
3351
  _loop_4 = function (drawingElement) {
3283
- var drawingId, drawingRel, drawingPath, drawingContent, drawingXml, drawingDir, drawingRelsPath, drawingRelsContent, drawingRelsXml, drawingRelsList, drawingRelsArray, oneCellAnchors, twoCellAnchors, anchors, _loop_5, anchors_1, anchors_1_1, anchor, e_27_1;
3284
- var e_27, _h;
3285
- return __generator(this, function (_j) {
3286
- switch (_j.label) {
3352
+ var drawingId, drawingRel, drawingPath, drawingContent, drawingXml, drawingDir, drawingRelsPath, drawingRelsContent, drawingRelsXml, drawingRelsList, drawingRelsArray, orderedAnchors, _loop_5, _h, _j, _k, zOrder, anchor, e_28_1;
3353
+ var e_28, _l;
3354
+ return __generator(this, function (_m) {
3355
+ switch (_m.label) {
3287
3356
  case 0:
3288
3357
  drawingId = get(drawingElement, "a$.r:id") || get(drawingElement, "a$.id");
3289
3358
  drawingRel = drawingRelationsArray.find(function (rel) {
@@ -3307,7 +3376,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
3307
3376
  }
3308
3377
  return [4 /*yield*/, this_2.zipParser.getText(drawingPath)];
3309
3378
  case 1:
3310
- drawingContent = _j.sent();
3379
+ drawingContent = _m.sent();
3311
3380
  if (!drawingContent)
3312
3381
  return [2 /*return*/, "continue"];
3313
3382
  drawingXml = this_2.xmlParser.parse(drawingContent);
@@ -3317,7 +3386,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
3317
3386
  .pop(), ".rels");
3318
3387
  return [4 /*yield*/, this_2.zipParser.getText(drawingRelsPath)];
3319
3388
  case 2:
3320
- drawingRelsContent = _j.sent();
3389
+ drawingRelsContent = _m.sent();
3321
3390
  if (!drawingRelsContent) {
3322
3391
  console.log("Drawing relationships file not found:", drawingRelsPath);
3323
3392
  return [2 /*return*/, "continue"];
@@ -3327,21 +3396,11 @@ var XlsxPlugin = /** @class */ (function (_super) {
3327
3396
  drawingRelsArray = Array.isArray(drawingRelsList)
3328
3397
  ? drawingRelsList
3329
3398
  : [drawingRelsList];
3330
- oneCellAnchors = get(drawingXml, "xdr:wsDr.xdr:oneCellAnchor") ||
3331
- get(drawingXml, "wsDr.oneCellAnchor") ||
3332
- [];
3333
- twoCellAnchors = get(drawingXml, "xdr:wsDr.xdr:twoCellAnchor") ||
3334
- get(drawingXml, "wsDr.twoCellAnchor") ||
3335
- [];
3336
- anchors = __spreadArray(__spreadArray([], __read((Array.isArray(oneCellAnchors)
3337
- ? oneCellAnchors
3338
- : [oneCellAnchors])), false), __read((Array.isArray(twoCellAnchors)
3339
- ? twoCellAnchors
3340
- : [twoCellAnchors])), false).filter(Boolean);
3341
- _loop_5 = function (anchor) {
3399
+ orderedAnchors = anchorsInDocumentOrder(drawingXml, drawingContent);
3400
+ _loop_5 = function (zOrder, anchor) {
3342
3401
  var chartRef, chartExRef, chartExRId_1, chartExRel, chartEx, chartRId, chartRel, chart;
3343
- return __generator(this, function (_k) {
3344
- switch (_k.label) {
3402
+ return __generator(this, function (_o) {
3403
+ switch (_o.label) {
3345
3404
  case 0:
3346
3405
  chartRef = getChartReferenceFromAnchor(anchor);
3347
3406
  if (!!chartRef) return [3 /*break*/, 3];
@@ -3356,10 +3415,12 @@ var XlsxPlugin = /** @class */ (function (_super) {
3356
3415
  if (!chartExRel) return [3 /*break*/, 2];
3357
3416
  return [4 /*yield*/, processChartEx(chartExRel.a$.Target, drawingPath, anchor, sheetId, this_2.zipParser, this_2.xmlParser, sheetDimensions, resolveSheetId)];
3358
3417
  case 1:
3359
- chartEx = _k.sent();
3360
- if (chartEx)
3418
+ chartEx = _o.sent();
3419
+ if (chartEx) {
3420
+ chartEx.position = __assign(__assign({}, chartEx.position), { zOrder: zOrder });
3361
3421
  charts.push(chartEx);
3362
- _k.label = 2;
3422
+ }
3423
+ _o.label = 2;
3363
3424
  case 2: return [2 /*return*/, "continue"];
3364
3425
  case 3:
3365
3426
  chartRId = get(chartRef, "a$.r:id") ||
@@ -3375,40 +3436,41 @@ var XlsxPlugin = /** @class */ (function (_super) {
3375
3436
  if (!chartRel) return [3 /*break*/, 5];
3376
3437
  return [4 /*yield*/, processChart(chartRel.a$.Target, drawingPath, anchor, sheetId, this_2.zipParser, this_2.xmlParser, sheetDimensions, resolveSheetId)];
3377
3438
  case 4:
3378
- chart = _k.sent();
3439
+ chart = _o.sent();
3379
3440
  if (chart) {
3441
+ chart.position = __assign(__assign({}, chart.position), { zOrder: zOrder });
3380
3442
  charts.push(chart);
3381
3443
  }
3382
- _k.label = 5;
3444
+ _o.label = 5;
3383
3445
  case 5: return [2 /*return*/];
3384
3446
  }
3385
3447
  });
3386
3448
  };
3387
- _j.label = 3;
3449
+ _m.label = 3;
3388
3450
  case 3:
3389
- _j.trys.push([3, 8, 9, 10]);
3390
- anchors_1 = (e_27 = void 0, __values(anchors)), anchors_1_1 = anchors_1.next();
3391
- _j.label = 4;
3451
+ _m.trys.push([3, 8, 9, 10]);
3452
+ _h = (e_28 = void 0, __values(orderedAnchors.entries())), _j = _h.next();
3453
+ _m.label = 4;
3392
3454
  case 4:
3393
- if (!!anchors_1_1.done) return [3 /*break*/, 7];
3394
- anchor = anchors_1_1.value;
3395
- return [5 /*yield**/, _loop_5(anchor)];
3455
+ if (!!_j.done) return [3 /*break*/, 7];
3456
+ _k = __read(_j.value, 2), zOrder = _k[0], anchor = _k[1].node;
3457
+ return [5 /*yield**/, _loop_5(zOrder, anchor)];
3396
3458
  case 5:
3397
- _j.sent();
3398
- _j.label = 6;
3459
+ _m.sent();
3460
+ _m.label = 6;
3399
3461
  case 6:
3400
- anchors_1_1 = anchors_1.next();
3462
+ _j = _h.next();
3401
3463
  return [3 /*break*/, 4];
3402
3464
  case 7: return [3 /*break*/, 10];
3403
3465
  case 8:
3404
- e_27_1 = _j.sent();
3405
- e_27 = { error: e_27_1 };
3466
+ e_28_1 = _m.sent();
3467
+ e_28 = { error: e_28_1 };
3406
3468
  return [3 /*break*/, 10];
3407
3469
  case 9:
3408
3470
  try {
3409
- if (anchors_1_1 && !anchors_1_1.done && (_h = anchors_1.return)) _h.call(anchors_1);
3471
+ if (_j && !_j.done && (_l = _h.return)) _l.call(_h);
3410
3472
  }
3411
- finally { if (e_27) throw e_27.error; }
3473
+ finally { if (e_28) throw e_28.error; }
3412
3474
  return [7 /*endfinally*/];
3413
3475
  case 10: return [2 /*return*/];
3414
3476
  }
@@ -3432,14 +3494,14 @@ var XlsxPlugin = /** @class */ (function (_super) {
3432
3494
  return [3 /*break*/, 4];
3433
3495
  case 7: return [3 /*break*/, 10];
3434
3496
  case 8:
3435
- e_25_1 = _g.sent();
3436
- e_25 = { error: e_25_1 };
3497
+ e_26_1 = _g.sent();
3498
+ e_26 = { error: e_26_1 };
3437
3499
  return [3 /*break*/, 10];
3438
3500
  case 9:
3439
3501
  try {
3440
3502
  if (drawings_1_1 && !drawings_1_1.done && (_d = drawings_1.return)) _d.call(drawings_1);
3441
3503
  }
3442
- finally { if (e_25) throw e_25.error; }
3504
+ finally { if (e_26) throw e_26.error; }
3443
3505
  return [7 /*endfinally*/];
3444
3506
  case 10: return [2 /*return*/, charts];
3445
3507
  case 11:
@@ -3458,8 +3520,8 @@ var XlsxPlugin = /** @class */ (function (_super) {
3458
3520
  */
3459
3521
  XlsxPlugin.prototype._getDrawings = function (rid, sheetId, sheetData) {
3460
3522
  return __awaiter(this, void 0, void 0, function () {
3461
- var images, target, path, drawing, drawings, sheetRelPath, sheetRelContent, sheetRels, drawingRelations, drawingRelationsArray, _loop_6, this_3, drawings_2, drawings_2_1, drawingElement, e_28_1;
3462
- var e_28, _a;
3523
+ var images, target, path, drawing, drawings, sheetRelPath, sheetRelContent, sheetRels, drawingRelations, drawingRelationsArray, _loop_6, this_3, drawings_2, drawings_2_1, drawingElement, e_29_1;
3524
+ var e_29, _a;
3463
3525
  var _b;
3464
3526
  return __generator(this, function (_c) {
3465
3527
  switch (_c.label) {
@@ -3471,12 +3533,14 @@ var XlsxPlugin = /** @class */ (function (_super) {
3471
3533
  : "xl/".concat(this.relations[rid].target);
3472
3534
  drawing = get(sheetData, "worksheet.drawing") ||
3473
3535
  get(sheetData, "drawing") ||
3474
- get(sheetData, "x:worksheet.x:drawing");
3536
+ get(sheetData, "x:worksheet.x:drawing") ||
3537
+ get(sheetData, "chartsheet.drawing") ||
3538
+ get(sheetData, "x:chartsheet.x:drawing");
3475
3539
  if (!drawing) {
3476
3540
  return [2 /*return*/, []];
3477
3541
  }
3478
3542
  drawings = Array.isArray(drawing) ? drawing : [drawing];
3479
- sheetRelPath = path.replace("worksheets", "worksheets/_rels") + ".rels";
3543
+ sheetRelPath = getSheetRelsPath(path);
3480
3544
  return [4 /*yield*/, this.zipParser.getText(sheetRelPath)];
3481
3545
  case 1:
3482
3546
  sheetRelContent = _c.sent();
@@ -3486,10 +3550,10 @@ var XlsxPlugin = /** @class */ (function (_super) {
3486
3550
  ? drawingRelations
3487
3551
  : [drawingRelations];
3488
3552
  _loop_6 = function (drawingElement) {
3489
- var drawingId, drawingRels, drawingRels_2, drawingRels_2_1, drawingRel, drawingPath, drawingContent, drawing_1, _d, _e, anchor, _f, _g, image, e_29_1, e_30_1, e_31_1;
3490
- var e_31, _h, e_30, _j, e_29, _k;
3491
- return __generator(this, function (_l) {
3492
- switch (_l.label) {
3553
+ var drawingId, drawingRels, drawingRels_2, drawingRels_2_1, drawingRel, drawingPath, drawingContent, drawing_1, orderedAnchors, _d, _e, _f, zOrder, anchor, _g, _h, image, e_30_1, e_31_1, e_32_1;
3554
+ var e_32, _j, e_31, _k, e_30, _l;
3555
+ return __generator(this, function (_m) {
3556
+ switch (_m.label) {
3493
3557
  case 0:
3494
3558
  drawingId = get(drawingElement, "a$.r:id") || get(drawingElement, "a$.id");
3495
3559
  drawingRels = drawingRelationsArray.filter(function (rel) {
@@ -3498,11 +3562,11 @@ var XlsxPlugin = /** @class */ (function (_super) {
3498
3562
  rel.a$.ID === drawingId ||
3499
3563
  (rel.a$.Target && rel.a$.Target.includes("drawing"));
3500
3564
  });
3501
- _l.label = 1;
3565
+ _m.label = 1;
3502
3566
  case 1:
3503
- _l.trys.push([1, 19, 20, 21]);
3504
- drawingRels_2 = (e_31 = void 0, __values(drawingRels)), drawingRels_2_1 = drawingRels_2.next();
3505
- _l.label = 2;
3567
+ _m.trys.push([1, 19, 20, 21]);
3568
+ drawingRels_2 = (e_32 = void 0, __values(drawingRels)), drawingRels_2_1 = drawingRels_2.next();
3569
+ _m.label = 2;
3506
3570
  case 2:
3507
3571
  if (!!drawingRels_2_1.done) return [3 /*break*/, 18];
3508
3572
  drawingRel = drawingRels_2_1.value;
@@ -3523,70 +3587,72 @@ var XlsxPlugin = /** @class */ (function (_super) {
3523
3587
  }
3524
3588
  return [4 /*yield*/, this_3.zipParser.getText(drawingPath)];
3525
3589
  case 3:
3526
- drawingContent = (_b = (_l.sent())) !== null && _b !== void 0 ? _b : "";
3590
+ drawingContent = (_b = (_m.sent())) !== null && _b !== void 0 ? _b : "";
3527
3591
  drawing_1 = this_3.xmlParser.parse(drawingContent);
3528
- _l.label = 4;
3592
+ orderedAnchors = anchorsInDocumentOrder(drawing_1, drawingContent);
3593
+ _m.label = 4;
3529
3594
  case 4:
3530
- _l.trys.push([4, 15, 16, 17]);
3531
- _d = (e_30 = void 0, __values(anchorsInDocumentOrder(drawing_1, drawingContent))), _e = _d.next();
3532
- _l.label = 5;
3595
+ _m.trys.push([4, 15, 16, 17]);
3596
+ _d = (e_31 = void 0, __values(orderedAnchors.entries())), _e = _d.next();
3597
+ _m.label = 5;
3533
3598
  case 5:
3534
3599
  if (!!_e.done) return [3 /*break*/, 14];
3535
- anchor = _e.value;
3536
- _l.label = 6;
3600
+ _f = __read(_e.value, 2), zOrder = _f[0], anchor = _f[1];
3601
+ _m.label = 6;
3537
3602
  case 6:
3538
- _l.trys.push([6, 11, 12, 13]);
3539
- e_29 = void 0;
3603
+ _m.trys.push([6, 11, 12, 13]);
3604
+ e_30 = void 0;
3540
3605
  return [4 /*yield*/, processAnchors(anchor.node, anchor.kind, drawingPath, sheetId, this_3.zipParser, this_3.xmlParser)];
3541
3606
  case 7:
3542
- _f = (__values.apply(void 0, [_l.sent()])), _g = _f.next();
3543
- _l.label = 8;
3607
+ _g = (__values.apply(void 0, [_m.sent()])), _h = _g.next();
3608
+ _m.label = 8;
3544
3609
  case 8:
3545
- if (!!_g.done) return [3 /*break*/, 10];
3546
- image = _g.value;
3610
+ if (!!_h.done) return [3 /*break*/, 10];
3611
+ image = _h.value;
3612
+ image.position = __assign(__assign({}, image.position), { zOrder: zOrder });
3547
3613
  images.push(image);
3548
- _l.label = 9;
3614
+ _m.label = 9;
3549
3615
  case 9:
3550
- _g = _f.next();
3616
+ _h = _g.next();
3551
3617
  return [3 /*break*/, 8];
3552
3618
  case 10: return [3 /*break*/, 13];
3553
3619
  case 11:
3554
- e_29_1 = _l.sent();
3555
- e_29 = { error: e_29_1 };
3620
+ e_30_1 = _m.sent();
3621
+ e_30 = { error: e_30_1 };
3556
3622
  return [3 /*break*/, 13];
3557
3623
  case 12:
3558
3624
  try {
3559
- if (_g && !_g.done && (_k = _f.return)) _k.call(_f);
3625
+ if (_h && !_h.done && (_l = _g.return)) _l.call(_g);
3560
3626
  }
3561
- finally { if (e_29) throw e_29.error; }
3627
+ finally { if (e_30) throw e_30.error; }
3562
3628
  return [7 /*endfinally*/];
3563
3629
  case 13:
3564
3630
  _e = _d.next();
3565
3631
  return [3 /*break*/, 5];
3566
3632
  case 14: return [3 /*break*/, 17];
3567
3633
  case 15:
3568
- e_30_1 = _l.sent();
3569
- e_30 = { error: e_30_1 };
3634
+ e_31_1 = _m.sent();
3635
+ e_31 = { error: e_31_1 };
3570
3636
  return [3 /*break*/, 17];
3571
3637
  case 16:
3572
3638
  try {
3573
- if (_e && !_e.done && (_j = _d.return)) _j.call(_d);
3639
+ if (_e && !_e.done && (_k = _d.return)) _k.call(_d);
3574
3640
  }
3575
- finally { if (e_30) throw e_30.error; }
3641
+ finally { if (e_31) throw e_31.error; }
3576
3642
  return [7 /*endfinally*/];
3577
3643
  case 17:
3578
3644
  drawingRels_2_1 = drawingRels_2.next();
3579
3645
  return [3 /*break*/, 2];
3580
3646
  case 18: return [3 /*break*/, 21];
3581
3647
  case 19:
3582
- e_31_1 = _l.sent();
3583
- e_31 = { error: e_31_1 };
3648
+ e_32_1 = _m.sent();
3649
+ e_32 = { error: e_32_1 };
3584
3650
  return [3 /*break*/, 21];
3585
3651
  case 20:
3586
3652
  try {
3587
- if (drawingRels_2_1 && !drawingRels_2_1.done && (_h = drawingRels_2.return)) _h.call(drawingRels_2);
3653
+ if (drawingRels_2_1 && !drawingRels_2_1.done && (_j = drawingRels_2.return)) _j.call(drawingRels_2);
3588
3654
  }
3589
- finally { if (e_31) throw e_31.error; }
3655
+ finally { if (e_32) throw e_32.error; }
3590
3656
  return [7 /*endfinally*/];
3591
3657
  case 21: return [2 /*return*/];
3592
3658
  }
@@ -3610,14 +3676,14 @@ var XlsxPlugin = /** @class */ (function (_super) {
3610
3676
  return [3 /*break*/, 3];
3611
3677
  case 6: return [3 /*break*/, 9];
3612
3678
  case 7:
3613
- e_28_1 = _c.sent();
3614
- e_28 = { error: e_28_1 };
3679
+ e_29_1 = _c.sent();
3680
+ e_29 = { error: e_29_1 };
3615
3681
  return [3 /*break*/, 9];
3616
3682
  case 8:
3617
3683
  try {
3618
3684
  if (drawings_2_1 && !drawings_2_1.done && (_a = drawings_2.return)) _a.call(drawings_2);
3619
3685
  }
3620
- finally { if (e_28) throw e_28.error; }
3686
+ finally { if (e_29) throw e_29.error; }
3621
3687
  return [7 /*endfinally*/];
3622
3688
  case 9: return [2 /*return*/, images];
3623
3689
  }
@@ -3660,6 +3726,34 @@ var XlsxPlugin = /** @class */ (function (_super) {
3660
3726
  XlsxPlugin.prototype.getNamedCellStyles = function () {
3661
3727
  return resolveNamedCellStyles(this.workbookStyles);
3662
3728
  };
3729
+ /**
3730
+ * The workbook's custom `<tableStyle>`s with their per-element dxf fills resolved into banding —
3731
+ * the `customTableStyles` document facet (table style gallery + re-export), #668 T-103.
3732
+ */
3733
+ XlsxPlugin.prototype.getCustomTableStyles = function () {
3734
+ var e_33, _a;
3735
+ var _b, _c;
3736
+ var styles = (_b = this.workbookStyles) === null || _b === void 0 ? void 0 : _b.tableStyles;
3737
+ if (!styles)
3738
+ return [];
3739
+ var out = [];
3740
+ try {
3741
+ for (var _d = __values(styles.keys()), _e = _d.next(); !_e.done; _e = _d.next()) {
3742
+ var name_6 = _e.value;
3743
+ var bandedRange = (_c = this.workbookStyles) === null || _c === void 0 ? void 0 : _c.getCustomTableStyleBanding(name_6);
3744
+ if (bandedRange)
3745
+ out.push({ name: name_6, bandedRange: bandedRange });
3746
+ }
3747
+ }
3748
+ catch (e_33_1) { e_33 = { error: e_33_1 }; }
3749
+ finally {
3750
+ try {
3751
+ if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
3752
+ }
3753
+ finally { if (e_33) throw e_33.error; }
3754
+ }
3755
+ return out;
3756
+ };
3663
3757
  /**
3664
3758
  * The workbook default font — styles.xml fonts[0], the font every cell
3665
3759
  * without an explicit font inherits. Exporters pass this through so the
@@ -3733,16 +3827,16 @@ var XlsxPlugin = /** @class */ (function (_super) {
3733
3827
  this.printNamesBySheetId.set(sheetId, entry);
3734
3828
  };
3735
3829
  XlsxPlugin.prototype._getNamedRanges = function () {
3736
- var e_32, _a, e_33, _b;
3830
+ var e_34, _a, e_35, _b;
3737
3831
  var _c, _d;
3738
3832
  this.printNamesBySheetId.clear();
3739
3833
  var xml = this.workbookXml;
3740
3834
  var sheetIdBySheetName = this._getSheets().reduce(function (acc, element) {
3741
3835
  var _a;
3742
3836
  if (element) {
3743
- var name_6 = (_a = element.a$) === null || _a === void 0 ? void 0 : _a.name;
3837
+ var name_7 = (_a = element.a$) === null || _a === void 0 ? void 0 : _a.name;
3744
3838
  var sheetId = Number(element.a$.sheetId);
3745
- acc[name_6] = sheetId;
3839
+ acc[name_7] = sheetId;
3746
3840
  }
3747
3841
  return acc;
3748
3842
  }, {});
@@ -3757,15 +3851,15 @@ var XlsxPlugin = /** @class */ (function (_super) {
3757
3851
  try {
3758
3852
  for (var defined_names_1 = __values(defined_names), defined_names_1_1 = defined_names_1.next(); !defined_names_1_1.done; defined_names_1_1 = defined_names_1.next()) {
3759
3853
  var defined_name = defined_names_1_1.value;
3760
- var name_7 = (_c = defined_name.a$) === null || _c === void 0 ? void 0 : _c.name;
3854
+ var name_8 = (_c = defined_name.a$) === null || _c === void 0 ? void 0 : _c.name;
3761
3855
  var expression = defined_name.t$ || "";
3762
3856
  var hidden = defined_name.a$.hidden === "1";
3763
3857
  // `_xlnm.Print_Area` / `_xlnm.Print_Titles` are sheet-scoped print
3764
3858
  // facets, not user names: they land on `sheet.printSettings` (see
3765
3859
  // `getSheets()`), never in `namedRanges` — a global copy would make
3766
3860
  // Excel repair the file on the next export.
3767
- if (isBuiltinPrintName(name_7)) {
3768
- this.stashBuiltinPrintName(name_7, typeof expression === "string" ? expression : "", (_d = defined_name.a$) === null || _d === void 0 ? void 0 : _d.localSheetId, sheetIdBySheetName);
3861
+ if (isBuiltinPrintName(name_8)) {
3862
+ this.stashBuiltinPrintName(name_8, typeof expression === "string" ? expression : "", (_d = defined_name.a$) === null || _d === void 0 ? void 0 : _d.localSheetId, sheetIdBySheetName);
3769
3863
  continue;
3770
3864
  }
3771
3865
  // Empty defined names are noise; nothing useful to round-trip.
@@ -3783,23 +3877,23 @@ var XlsxPlugin = /** @class */ (function (_super) {
3783
3877
  var pushedRange = false;
3784
3878
  if (selections.length) {
3785
3879
  try {
3786
- for (var selections_1 = (e_33 = void 0, __values(selections)), selections_1_1 = selections_1.next(); !selections_1_1.done; selections_1_1 = selections_1.next()) {
3880
+ for (var selections_1 = (e_35 = void 0, __values(selections)), selections_1_1 = selections_1.next(); !selections_1_1.done; selections_1_1 = selections_1.next()) {
3787
3881
  var selection = selections_1_1.value;
3788
3882
  var sheetId = selection.sheetName
3789
3883
  ? sheetIdBySheetName[selection.sheetName]
3790
3884
  : undefined;
3791
3885
  if (!isNil(sheetId)) {
3792
- namedRanges.push(__assign({ namedRangeId: uuid(), name: name_7, range: __assign(__assign({}, selection.range), { sheetId: sheetId }) }, (hidden ? { hidden: true } : {})));
3886
+ namedRanges.push(__assign({ namedRangeId: uuid(), name: name_8, range: __assign(__assign({}, selection.range), { sheetId: sheetId }) }, (hidden ? { hidden: true } : {})));
3793
3887
  pushedRange = true;
3794
3888
  }
3795
3889
  }
3796
3890
  }
3797
- catch (e_33_1) { e_33 = { error: e_33_1 }; }
3891
+ catch (e_35_1) { e_35 = { error: e_35_1 }; }
3798
3892
  finally {
3799
3893
  try {
3800
3894
  if (selections_1_1 && !selections_1_1.done && (_b = selections_1.return)) _b.call(selections_1);
3801
3895
  }
3802
- finally { if (e_33) throw e_33.error; }
3896
+ finally { if (e_35) throw e_35.error; }
3803
3897
  }
3804
3898
  }
3805
3899
  // Reference parsed but no selection bound to a known sheet — most
@@ -3808,7 +3902,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
3808
3902
  // Preserve the original expression as value-only so the name
3809
3903
  // survives the round-trip.
3810
3904
  if (!pushedRange) {
3811
- namedRanges.push(__assign({ name: name_7, namedRangeId: uuid(), value: isAFormula(expression) ? "=".concat(expression) : expression }, (hidden ? { hidden: true } : {})));
3905
+ namedRanges.push(__assign({ name: name_8, namedRangeId: uuid(), value: isAFormula(expression) ? "=".concat(expression) : expression }, (hidden ? { hidden: true } : {})));
3812
3906
  }
3813
3907
  }
3814
3908
  else {
@@ -3817,18 +3911,18 @@ var XlsxPlugin = /** @class */ (function (_super) {
3817
3911
  // formula-shaped expressions (e.g. `OFFSET(...)`) get the
3818
3912
  // "=" prefix the calculator expects; static literals and
3819
3913
  // broken refs are preserved verbatim.
3820
- namedRanges.push(__assign({ name: name_7, namedRangeId: uuid(), value: isAFormula(expression) || isBareFormulaExpression(expression)
3914
+ namedRanges.push(__assign({ name: name_8, namedRangeId: uuid(), value: isAFormula(expression) || isBareFormulaExpression(expression)
3821
3915
  ? "=".concat(expression)
3822
3916
  : expression }, (hidden ? { hidden: true } : {})));
3823
3917
  }
3824
3918
  }
3825
3919
  }
3826
- catch (e_32_1) { e_32 = { error: e_32_1 }; }
3920
+ catch (e_34_1) { e_34 = { error: e_34_1 }; }
3827
3921
  finally {
3828
3922
  try {
3829
3923
  if (defined_names_1_1 && !defined_names_1_1.done && (_a = defined_names_1.return)) _a.call(defined_names_1);
3830
3924
  }
3831
- finally { if (e_32) throw e_32.error; }
3925
+ finally { if (e_34) throw e_34.error; }
3832
3926
  }
3833
3927
  }
3834
3928
  return namedRanges;
@@ -3887,8 +3981,8 @@ var XlsxPlugin = /** @class */ (function (_super) {
3887
3981
  // INTERFACE IMPLEMENTATION METHODS
3888
3982
  XlsxPlugin.prototype.getSheets = function () {
3889
3983
  return __awaiter(this, arguments, void 0, function (minRowCount, minColumnCount) {
3890
- var workSheets, sheets, tables, workSheets_1, workSheets_1_1, element, built, e_34_1;
3891
- var e_34, _a;
3984
+ var workSheets, sheets, tables, workSheets_1, workSheets_1_1, element, built, e_36_1;
3985
+ var e_36, _a;
3892
3986
  var _b;
3893
3987
  if (minRowCount === void 0) { minRowCount = 0; }
3894
3988
  if (minColumnCount === void 0) { minColumnCount = 0; }
@@ -3923,14 +4017,14 @@ var XlsxPlugin = /** @class */ (function (_super) {
3923
4017
  return [3 /*break*/, 2];
3924
4018
  case 5: return [3 /*break*/, 8];
3925
4019
  case 6:
3926
- e_34_1 = _c.sent();
3927
- e_34 = { error: e_34_1 };
4020
+ e_36_1 = _c.sent();
4021
+ e_36 = { error: e_36_1 };
3928
4022
  return [3 /*break*/, 8];
3929
4023
  case 7:
3930
4024
  try {
3931
4025
  if (workSheets_1_1 && !workSheets_1_1.done && (_a = workSheets_1.return)) _a.call(workSheets_1);
3932
4026
  }
3933
- finally { if (e_34) throw e_34.error; }
4027
+ finally { if (e_36) throw e_36.error; }
3934
4028
  return [7 /*endfinally*/];
3935
4029
  case 8: return [2 /*return*/, [sheets, tables]];
3936
4030
  }
@@ -3938,6 +4032,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
3938
4032
  });
3939
4033
  };
3940
4034
  XlsxPlugin.prototype.getSheetCatalog = function () {
4035
+ var _this = this;
3941
4036
  var catalog = [];
3942
4037
  this._getSheets().forEach(function (element, index) {
3943
4038
  var _a;
@@ -3951,12 +4046,14 @@ var XlsxPlugin = /** @class */ (function (_super) {
3951
4046
  : state === "hidden"
3952
4047
  ? "hidden"
3953
4048
  : "visible";
4049
+ var rid = element.a$["r:id"];
3954
4050
  catalog.push({
3955
4051
  sheetId: Number(element.a$.sheetId),
3956
4052
  title: name,
3957
4053
  visibility: visibility,
3958
4054
  hidden: visibility !== "visible",
3959
4055
  index: index,
4056
+ type: rid && _this.isChartsheet(rid) ? "chartsheet" : "worksheet",
3960
4057
  });
3961
4058
  });
3962
4059
  return catalog;
@@ -3988,16 +4085,16 @@ var XlsxPlugin = /** @class */ (function (_super) {
3988
4085
  };
3989
4086
  XlsxPlugin.prototype.buildSheetFromElement = function (element_1) {
3990
4087
  return __awaiter(this, arguments, void 0, function (element, minRowCount, minColumnCount) {
3991
- var name, state, sheetId, rid, visibility, hidden, sheet_1, metadata, merges, rowEntries, columnMetadata, maxRowIndex, maxColumnIndex, autoFilterRange_1, filterSpecs, sheetViewData, tabColor, sheetHasFilterMode_1, zeroHeight_1, defaultRowHeightPx, defaultColumnWidthPx, tablePartIds, outlineSummaryBelow, outlineSummaryRight, sheetProtection, protectedRangeEntries, printSettings, printNames, merged, rowCount, sheetTables, rowInTableMap_1, columnCount, _a, frozenRowCount, frozenColumnCount, paneTopLeftCell, showGridLines, showRowColHeaders, showZeros, zoomScale, rightToLeft, merges_2, merges_2_1, range, drawingBounds, finalRowCount, finalColumnCount;
3992
- var e_35, _b;
3993
- var _c;
4088
+ var name, state, sheetId, rid, visibility, hidden, sheet_1, _a, chart, metadata, merges, rowEntries, columnMetadata, maxRowIndex, maxColumnIndex, autoFilterRange_1, filterSpecs, sheetViewData, tabColor, sheetHasFilterMode_1, zeroHeight_1, defaultRowHeightPx, defaultColumnWidthPx, tablePartIds, outlineSummaryBelow, outlineSummaryRight, sheetProtection, protectedRangeEntries, printSettings, printNames, merged, rowCount, sheetTables, rowInTableMap_1, columnCount, _b, frozenRowCount, frozenColumnCount, paneTopLeftCell, showGridLines, showRowColHeaders, showZeros, zoomScale, rightToLeft, merges_2, merges_2_1, range, drawingBounds, finalRowCount, finalColumnCount;
4089
+ var e_37, _c;
4090
+ var _d;
3994
4091
  if (minRowCount === void 0) { minRowCount = 0; }
3995
4092
  if (minColumnCount === void 0) { minColumnCount = 0; }
3996
- return __generator(this, function (_d) {
3997
- switch (_d.label) {
4093
+ return __generator(this, function (_e) {
4094
+ switch (_e.label) {
3998
4095
  case 0:
3999
- name = (_c = element.a$) === null || _c === void 0 ? void 0 : _c.name;
4000
- if (!name) return [3 /*break*/, 4];
4096
+ name = (_d = element.a$) === null || _d === void 0 ? void 0 : _d.name;
4097
+ if (!name) return [3 /*break*/, 6];
4001
4098
  state = element.a$.state;
4002
4099
  sheetId = Number(element.a$.sheetId);
4003
4100
  rid = element.a$["r:id"];
@@ -4018,9 +4115,18 @@ var XlsxPlugin = /** @class */ (function (_super) {
4018
4115
  if (visibility !== "visible") {
4019
4116
  sheet_1.visibility = visibility;
4020
4117
  }
4021
- return [4 /*yield*/, this.getSheetMetadata(rid)];
4118
+ if (!this.isChartsheet(rid)) return [3 /*break*/, 2];
4119
+ sheet_1.type = "chartsheet";
4120
+ return [4 /*yield*/, this.getChartsheetCharts(rid, sheetId)];
4022
4121
  case 1:
4023
- metadata = _d.sent();
4122
+ _a = __read.apply(void 0, [_e.sent(), 1]), chart = _a[0];
4123
+ if (chart) {
4124
+ sheet_1.chartId = chart.chartId;
4125
+ }
4126
+ _e.label = 2;
4127
+ case 2: return [4 /*yield*/, this.getSheetMetadata(rid)];
4128
+ case 3:
4129
+ metadata = _e.sent();
4024
4130
  merges = metadata.merges, rowEntries = metadata.rowEntries, columnMetadata = metadata.columnMetadata, maxRowIndex = metadata.maxRowIndex, maxColumnIndex = metadata.maxColumnIndex, autoFilterRange_1 = metadata.autoFilterRange, filterSpecs = metadata.filterSpecs, sheetViewData = metadata.sheetViewData, tabColor = metadata.tabColor, sheetHasFilterMode_1 = metadata.sheetHasFilterMode, zeroHeight_1 = metadata.zeroHeight, defaultRowHeightPx = metadata.defaultRowHeightPx, defaultColumnWidthPx = metadata.defaultColumnWidthPx, tablePartIds = metadata.tablePartIds, outlineSummaryBelow = metadata.outlineSummaryBelow, outlineSummaryRight = metadata.outlineSummaryRight, sheetProtection = metadata.sheetProtection, protectedRangeEntries = metadata.protectedRangeEntries, printSettings = metadata.printSettings;
4025
4131
  if (sheetProtection) {
4026
4132
  sheet_1.sheetProtection = sheetProtection;
@@ -4050,8 +4156,8 @@ var XlsxPlugin = /** @class */ (function (_super) {
4050
4156
  }
4051
4157
  rowCount = findMax([minRowCount, maxRowIndex || 0]);
4052
4158
  return [4 /*yield*/, this.getTablesFromSheet(sheetId, rid, tablePartIds)];
4053
- case 2:
4054
- sheetTables = _d.sent();
4159
+ case 4:
4160
+ sheetTables = _e.sent();
4055
4161
  rowInTableMap_1 = {};
4056
4162
  // Populate the lookup map
4057
4163
  sheetTables.forEach(function (table) {
@@ -4063,7 +4169,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
4063
4169
  }
4064
4170
  });
4065
4171
  columnCount = 0;
4066
- _a = extractSheetViewProperties(sheetViewData), frozenRowCount = _a.frozenRowCount, frozenColumnCount = _a.frozenColumnCount, paneTopLeftCell = _a.paneTopLeftCell, showGridLines = _a.showGridLines, showRowColHeaders = _a.showRowColHeaders, showZeros = _a.showZeros, zoomScale = _a.zoomScale, rightToLeft = _a.rightToLeft;
4172
+ _b = extractSheetViewProperties(sheetViewData), frozenRowCount = _b.frozenRowCount, frozenColumnCount = _b.frozenColumnCount, paneTopLeftCell = _b.paneTopLeftCell, showGridLines = _b.showGridLines, showRowColHeaders = _b.showRowColHeaders, showZeros = _b.showZeros, zoomScale = _b.zoomScale, rightToLeft = _b.rightToLeft;
4067
4173
  sheet_1.frozenRowCount = frozenRowCount;
4068
4174
  sheet_1.frozenColumnCount = frozenColumnCount;
4069
4175
  if (paneTopLeftCell) {
@@ -4100,12 +4206,12 @@ var XlsxPlugin = /** @class */ (function (_super) {
4100
4206
  sheet_1.merges.push(range);
4101
4207
  }
4102
4208
  }
4103
- catch (e_35_1) { e_35 = { error: e_35_1 }; }
4209
+ catch (e_37_1) { e_37 = { error: e_37_1 }; }
4104
4210
  finally {
4105
4211
  try {
4106
- if (merges_2_1 && !merges_2_1.done && (_b = merges_2.return)) _b.call(merges_2);
4212
+ if (merges_2_1 && !merges_2_1.done && (_c = merges_2.return)) _c.call(merges_2);
4107
4213
  }
4108
- finally { if (e_35) throw e_35.error; }
4214
+ finally { if (e_37) throw e_37.error; }
4109
4215
  }
4110
4216
  columnCount = findMax([maxColumnIndex, minColumnCount]);
4111
4217
  rowEntries.forEach(function (entry, rowIndex) {
@@ -4174,8 +4280,8 @@ var XlsxPlugin = /** @class */ (function (_super) {
4174
4280
  sheet_1.columnMetadata[Number(key)] = value;
4175
4281
  });
4176
4282
  return [4 /*yield*/, this.getDrawingBounds(rid)];
4177
- case 3:
4178
- drawingBounds = _d.sent();
4283
+ case 5:
4284
+ drawingBounds = _e.sent();
4179
4285
  finalRowCount = findMax([rowCount, drawingBounds.maxRowIndex]);
4180
4286
  finalColumnCount = findMax([
4181
4287
  columnCount,
@@ -4186,15 +4292,15 @@ var XlsxPlugin = /** @class */ (function (_super) {
4186
4292
  if (finalColumnCount)
4187
4293
  sheet_1.columnCount = finalColumnCount;
4188
4294
  return [2 /*return*/, { sheet: sheet_1, tables: sheetTables }];
4189
- case 4: return [2 /*return*/, undefined];
4295
+ case 6: return [2 /*return*/, undefined];
4190
4296
  }
4191
4297
  });
4192
4298
  });
4193
4299
  };
4194
4300
  XlsxPlugin.prototype.processSheetData = function () {
4195
4301
  return __asyncGenerator(this, arguments, function processSheetData_1(chunkSize, enableCellXfsRegistry, _enableSharedStrings, onPhase) {
4196
- var workSheets, totalSheets, currentSheetIndex, workSheets_2, workSheets_2_1, element, e_36_1;
4197
- var e_36, _a;
4302
+ var workSheets, totalSheets, currentSheetIndex, workSheets_2, workSheets_2_1, element, e_38_1;
4303
+ var e_38, _a;
4198
4304
  var _b;
4199
4305
  if (chunkSize === void 0) { chunkSize = 100; }
4200
4306
  if (enableCellXfsRegistry === void 0) { enableCellXfsRegistry = false; }
@@ -4233,14 +4339,14 @@ var XlsxPlugin = /** @class */ (function (_super) {
4233
4339
  return [3 /*break*/, 2];
4234
4340
  case 6: return [3 /*break*/, 9];
4235
4341
  case 7:
4236
- e_36_1 = _c.sent();
4237
- e_36 = { error: e_36_1 };
4342
+ e_38_1 = _c.sent();
4343
+ e_38 = { error: e_38_1 };
4238
4344
  return [3 /*break*/, 9];
4239
4345
  case 8:
4240
4346
  try {
4241
4347
  if (workSheets_2_1 && !workSheets_2_1.done && (_a = workSheets_2.return)) _a.call(workSheets_2);
4242
4348
  }
4243
- finally { if (e_36) throw e_36.error; }
4349
+ finally { if (e_38) throw e_38.error; }
4244
4350
  return [7 /*endfinally*/];
4245
4351
  case 9: return [2 /*return*/];
4246
4352
  }
@@ -4290,10 +4396,10 @@ var XlsxPlugin = /** @class */ (function (_super) {
4290
4396
  };
4291
4397
  XlsxPlugin.prototype.processOneSheet = function (element_1, _a) {
4292
4398
  return __asyncGenerator(this, arguments, function processOneSheet_1(element, _b) {
4293
- var name_8, sheetId_1, rid, metadata, materializeMaxColumn, colStyleByColumn_1, _c, _d, _e, min, max, styleIndex, clampedMax, col, styleCellTemplates_1, getTemplateForStyleIndex, styleMaterializeBudget, mergeRangesByRow_1, getMergeRangeForCell, sheetComments, sheetThreadedComments_1, commentsByRow_1, threadsByRow_1, hyperlinksByRow, sparklinesByRow, dvFeatures, dvStamper, _f, _g, CHUNK_SIZE, chunkIndex_1, totalRowsProcessed_1, totalRowsKnown_1, lastRowIndex, currentChunk_1, currentChunkRowIndices_1, startRowIndex_1, endRowIndex_1, flushChunk, _loop_7, this_4, _h, _j, _k, e_37_1, _l, _m, trailing, payload, e_38_1, finalPayload;
4294
- var e_39, _o, e_38, _p;
4399
+ var name_9, sheetId_1, rid, metadata, materializeMaxColumn, colStyleByColumn_1, _c, _d, _e, min, max, styleIndex, clampedMax, col, styleCellTemplates_1, getTemplateForStyleIndex, styleMaterializeBudget, mergeRangesByRow_1, getMergeRangeForCell, sheetComments, sheetThreadedComments_1, commentsByRow_1, threadsByRow_1, hyperlinksByRow, sparklinesByRow, dvFeatures, dvStamper, _f, _g, CHUNK_SIZE, chunkIndex_1, totalRowsProcessed_1, totalRowsKnown_1, lastRowIndex, currentChunk_1, currentChunkRowIndices_1, startRowIndex_1, endRowIndex_1, flushChunk, _loop_7, this_4, _h, _j, _k, e_39_1, _l, _m, trailing, payload, e_40_1, finalPayload;
4400
+ var e_41, _o, e_40, _p;
4295
4401
  var _this = this;
4296
- var _q, e_37, _r, _s;
4402
+ var _q, e_39, _r, _s;
4297
4403
  var _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4;
4298
4404
  var chunkSize = _b.chunkSize, enableCellXfsRegistry = _b.enableCellXfsRegistry, _enableSharedStrings = _b.enableSharedStrings, onPhase = _b.onPhase, currentSheetIndex = _b.currentSheetIndex, totalSheets = _b.totalSheets;
4299
4405
  return __generator(this, function (_5) {
@@ -4302,13 +4408,13 @@ var XlsxPlugin = /** @class */ (function (_super) {
4302
4408
  // Shared formulas (`si` ids) are sheet-local in OOXML; reset per sheet
4303
4409
  // so one sheet's leaders never leak into another sheet's followers.
4304
4410
  this.clearSharedFormula();
4305
- name_8 = (_t = element.a$) === null || _t === void 0 ? void 0 : _t.name;
4411
+ name_9 = (_t = element.a$) === null || _t === void 0 ? void 0 : _t.name;
4306
4412
  sheetId_1 = Number(element.a$.sheetId);
4307
4413
  rid = element.a$["r:id"];
4308
4414
  this.currentSheetTotalRows = undefined;
4309
4415
  // The per-sheet scans below can be long and silent on large sheets;
4310
4416
  // report phases so the host's inactivity watchdog sees liveness.
4311
- onPhase === null || onPhase === void 0 ? void 0 : onPhase("sheet-metadata", name_8);
4417
+ onPhase === null || onPhase === void 0 ? void 0 : onPhase("sheet-metadata", name_9);
4312
4418
  return [4 /*yield*/, __await(this.getSheetMetadata(rid))];
4313
4419
  case 1:
4314
4420
  metadata = _5.sent();
@@ -4323,12 +4429,12 @@ var XlsxPlugin = /** @class */ (function (_super) {
4323
4429
  }
4324
4430
  }
4325
4431
  }
4326
- catch (e_39_1) { e_39 = { error: e_39_1 }; }
4432
+ catch (e_41_1) { e_41 = { error: e_41_1 }; }
4327
4433
  finally {
4328
4434
  try {
4329
4435
  if (_d && !_d.done && (_o = _c.return)) _o.call(_c);
4330
4436
  }
4331
- finally { if (e_39) throw e_39.error; }
4437
+ finally { if (e_41) throw e_41.error; }
4332
4438
  }
4333
4439
  styleCellTemplates_1 = new Map();
4334
4440
  getTemplateForStyleIndex = function (styleIndex) {
@@ -4342,7 +4448,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
4342
4448
  styleMaterializeBudget = STYLE_MATERIALIZE_CELL_BUDGET;
4343
4449
  mergeRangesByRow_1 = this.buildMergeRangesByRow(metadata.merges);
4344
4450
  getMergeRangeForCell = function (rowIndex, columnIndex) {
4345
- var e_40, _a;
4451
+ var e_42, _a;
4346
4452
  var ranges = mergeRangesByRow_1.get(rowIndex);
4347
4453
  if (!ranges)
4348
4454
  return undefined;
@@ -4355,12 +4461,12 @@ var XlsxPlugin = /** @class */ (function (_super) {
4355
4461
  }
4356
4462
  }
4357
4463
  }
4358
- catch (e_40_1) { e_40 = { error: e_40_1 }; }
4464
+ catch (e_42_1) { e_42 = { error: e_42_1 }; }
4359
4465
  finally {
4360
4466
  try {
4361
4467
  if (ranges_1_1 && !ranges_1_1.done && (_a = ranges_1.return)) _a.call(ranges_1);
4362
4468
  }
4363
- finally { if (e_40) throw e_40.error; }
4469
+ finally { if (e_42) throw e_42.error; }
4364
4470
  }
4365
4471
  return undefined;
4366
4472
  };
@@ -4372,12 +4478,12 @@ var XlsxPlugin = /** @class */ (function (_super) {
4372
4478
  sheetThreadedComments_1 = _5.sent();
4373
4479
  commentsByRow_1 = new Map();
4374
4480
  threadsByRow_1 = new Map();
4375
- onPhase === null || onPhase === void 0 ? void 0 : onPhase("sheet-hyperlinks", name_8);
4481
+ onPhase === null || onPhase === void 0 ? void 0 : onPhase("sheet-hyperlinks", name_9);
4376
4482
  return [4 /*yield*/, __await(this.getHyperlinksForSheet(rid))];
4377
4483
  case 4:
4378
4484
  hyperlinksByRow = _5.sent();
4379
- onPhase === null || onPhase === void 0 ? void 0 : onPhase("sheet-sparklines", name_8);
4380
- return [4 /*yield*/, __await(this.getSparklinesForSheet(rid, name_8))];
4485
+ onPhase === null || onPhase === void 0 ? void 0 : onPhase("sheet-sparklines", name_9);
4486
+ return [4 /*yield*/, __await(this.getSparklinesForSheet(rid, name_9))];
4381
4487
  case 5:
4382
4488
  sparklinesByRow = _5.sent();
4383
4489
  dvFeatures = this.sheetFeatures.get(rid);
@@ -4392,7 +4498,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
4392
4498
  _5.label = 8;
4393
4499
  case 8:
4394
4500
  dvStamper = _f;
4395
- onPhase === null || onPhase === void 0 ? void 0 : onPhase("sheet-rows", name_8);
4501
+ onPhase === null || onPhase === void 0 ? void 0 : onPhase("sheet-rows", name_9);
4396
4502
  // Create comments by row. A cell whose comment is the legacy `tc=`
4397
4503
  // shadow of an imported thread must NOT also get a plain note —
4398
4504
  // the thread (stamped below via `commentThreadId`) supersedes it.
@@ -4436,7 +4542,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
4436
4542
  }
4437
4543
  var result = {
4438
4544
  sheetId: sheetId_1,
4439
- title: name_8,
4545
+ title: name_9,
4440
4546
  currentSheetIndex: currentSheetIndex,
4441
4547
  totalSheets: totalSheets,
4442
4548
  chunkIndex: chunkIndex_1,
@@ -4460,7 +4566,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
4460
4566
  _5.trys.push([9, 15, 16, 21]);
4461
4567
  _loop_7 = function () {
4462
4568
  var row, parsedRowIndex, rowIndex, rowData, rowAttrs, hasRowCustomFormat, parsedRowStyle, rowStyleIndex, getInheritedStyleIndex, cells, rowComments, rowThreads, rowHyperlinks, rowCellsByColumnIndex, cellArray, seqColIndex, cellArray_1, cellArray_1_1, cell, cellRef, columnIndex, colStr, inherited, k, cell, cellRef, columnIndex, colStr, mergeRange, cellValue, hyperlink, comment, threadId, columnIndex, inherited, template, _6, _7, _8, columnIndex, hyperlink, _9, _10, _11, columnIndex, text, _12, _13, _14, columnIndex, threadId, rowSparklines, _15, _16, _17, columnIndex, sparkline, existingCell, preserveGaps, sparklineData, selection, _18, startRowIndex_2, endRowIndex_2, startColumnIndex, endColumnIndex, col, cell, value, sparklineOptions, cellData, payload;
4463
- var e_41, _19, e_42, _20, e_43, _21, e_44, _22, e_45, _23;
4569
+ var e_43, _19, e_44, _20, e_45, _21, e_46, _22, e_47, _23;
4464
4570
  return __generator(this, function (_24) {
4465
4571
  switch (_24.label) {
4466
4572
  case 0:
@@ -4502,7 +4608,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
4502
4608
  cellArray = Array.isArray(cells) ? cells : [cells];
4503
4609
  seqColIndex = 1;
4504
4610
  try {
4505
- for (cellArray_1 = (e_41 = void 0, __values(cellArray)), cellArray_1_1 = cellArray_1.next(); !cellArray_1_1.done; cellArray_1_1 = cellArray_1.next()) {
4611
+ for (cellArray_1 = (e_43 = void 0, __values(cellArray)), cellArray_1_1 = cellArray_1.next(); !cellArray_1_1.done; cellArray_1_1 = cellArray_1.next()) {
4506
4612
  cell = cellArray_1_1.value;
4507
4613
  if (!cell || !cell.a$) {
4508
4614
  seqColIndex++;
@@ -4529,12 +4635,12 @@ var XlsxPlugin = /** @class */ (function (_super) {
4529
4635
  rowCellsByColumnIndex.set(columnIndex, cell);
4530
4636
  }
4531
4637
  }
4532
- catch (e_41_1) { e_41 = { error: e_41_1 }; }
4638
+ catch (e_43_1) { e_43 = { error: e_43_1 }; }
4533
4639
  finally {
4534
4640
  try {
4535
4641
  if (cellArray_1_1 && !cellArray_1_1.done && (_19 = cellArray_1.return)) _19.call(cellArray_1);
4536
4642
  }
4537
- finally { if (e_41) throw e_41.error; }
4643
+ finally { if (e_43) throw e_43.error; }
4538
4644
  }
4539
4645
  // Second pass: process each cell
4540
4646
  seqColIndex = 1;
@@ -4556,7 +4662,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
4556
4662
  seqColIndex++;
4557
4663
  }
4558
4664
  mergeRange = getMergeRangeForCell(rowIndex, columnIndex);
4559
- cellValue = getCellValueAndFormat(cell, this_4, enableCellXfsRegistry, _enableSharedStrings, name_8, mergeRange
4665
+ cellValue = getCellValueAndFormat(cell, this_4, enableCellXfsRegistry, _enableSharedStrings, name_9, mergeRange
4560
4666
  ? { range: mergeRange, rowCellsByColumnIndex: rowCellsByColumnIndex }
4561
4667
  : undefined);
4562
4668
  hyperlink = rowHyperlinks === null || rowHyperlinks === void 0 ? void 0 : rowHyperlinks.get(columnIndex);
@@ -4608,7 +4714,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
4608
4714
  }
4609
4715
  if (rowHyperlinks) {
4610
4716
  try {
4611
- for (_6 = (e_42 = void 0, __values(rowHyperlinks.entries())), _7 = _6.next(); !_7.done; _7 = _6.next()) {
4717
+ for (_6 = (e_44 = void 0, __values(rowHyperlinks.entries())), _7 = _6.next(); !_7.done; _7 = _6.next()) {
4612
4718
  _8 = __read(_7.value, 2), columnIndex = _8[0], hyperlink = _8[1];
4613
4719
  if (rowData.values[columnIndex]) {
4614
4720
  if (!((_y = rowData.values[columnIndex]) === null || _y === void 0 ? void 0 : _y.hyperlink)) {
@@ -4620,18 +4726,18 @@ var XlsxPlugin = /** @class */ (function (_super) {
4620
4726
  }
4621
4727
  }
4622
4728
  }
4623
- catch (e_42_1) { e_42 = { error: e_42_1 }; }
4729
+ catch (e_44_1) { e_44 = { error: e_44_1 }; }
4624
4730
  finally {
4625
4731
  try {
4626
4732
  if (_7 && !_7.done && (_20 = _6.return)) _20.call(_6);
4627
4733
  }
4628
- finally { if (e_42) throw e_42.error; }
4734
+ finally { if (e_44) throw e_44.error; }
4629
4735
  }
4630
4736
  hyperlinksByRow.delete(rowIndex);
4631
4737
  }
4632
4738
  if (rowComments) {
4633
4739
  try {
4634
- for (_9 = (e_43 = void 0, __values(rowComments.entries())), _10 = _9.next(); !_10.done; _10 = _9.next()) {
4740
+ for (_9 = (e_45 = void 0, __values(rowComments.entries())), _10 = _9.next(); !_10.done; _10 = _9.next()) {
4635
4741
  _11 = __read(_10.value, 2), columnIndex = _11[0], text = _11[1];
4636
4742
  if (rowData.values[columnIndex]) {
4637
4743
  if (!((_z = rowData.values[columnIndex]) === null || _z === void 0 ? void 0 : _z.note)) {
@@ -4643,18 +4749,18 @@ var XlsxPlugin = /** @class */ (function (_super) {
4643
4749
  }
4644
4750
  }
4645
4751
  }
4646
- catch (e_43_1) { e_43 = { error: e_43_1 }; }
4752
+ catch (e_45_1) { e_45 = { error: e_45_1 }; }
4647
4753
  finally {
4648
4754
  try {
4649
4755
  if (_10 && !_10.done && (_21 = _9.return)) _21.call(_9);
4650
4756
  }
4651
- finally { if (e_43) throw e_43.error; }
4757
+ finally { if (e_45) throw e_45.error; }
4652
4758
  }
4653
4759
  commentsByRow_1.delete(rowIndex);
4654
4760
  }
4655
4761
  if (rowThreads) {
4656
4762
  try {
4657
- for (_12 = (e_44 = void 0, __values(rowThreads.entries())), _13 = _12.next(); !_13.done; _13 = _12.next()) {
4763
+ for (_12 = (e_46 = void 0, __values(rowThreads.entries())), _13 = _12.next(); !_13.done; _13 = _12.next()) {
4658
4764
  _14 = __read(_13.value, 2), columnIndex = _14[0], threadId = _14[1];
4659
4765
  if (rowData.values[columnIndex]) {
4660
4766
  if (!((_0 = rowData.values[columnIndex]) === null || _0 === void 0 ? void 0 : _0.commentThreadId)) {
@@ -4668,19 +4774,19 @@ var XlsxPlugin = /** @class */ (function (_super) {
4668
4774
  }
4669
4775
  }
4670
4776
  }
4671
- catch (e_44_1) { e_44 = { error: e_44_1 }; }
4777
+ catch (e_46_1) { e_46 = { error: e_46_1 }; }
4672
4778
  finally {
4673
4779
  try {
4674
4780
  if (_13 && !_13.done && (_22 = _12.return)) _22.call(_12);
4675
4781
  }
4676
- finally { if (e_44) throw e_44.error; }
4782
+ finally { if (e_46) throw e_46.error; }
4677
4783
  }
4678
4784
  threadsByRow_1.delete(rowIndex);
4679
4785
  }
4680
4786
  rowSparklines = sparklinesByRow.get(rowIndex);
4681
4787
  if (rowSparklines) {
4682
4788
  try {
4683
- for (_15 = (e_45 = void 0, __values(rowSparklines.entries())), _16 = _15.next(); !_16.done; _16 = _15.next()) {
4789
+ for (_15 = (e_47 = void 0, __values(rowSparklines.entries())), _16 = _15.next(); !_16.done; _16 = _15.next()) {
4684
4790
  _17 = __read(_16.value, 2), columnIndex = _17[0], sparkline = _17[1];
4685
4791
  existingCell = rowData.values[columnIndex];
4686
4792
  // Only set formula if cell doesn't already have one
@@ -4775,12 +4881,12 @@ var XlsxPlugin = /** @class */ (function (_super) {
4775
4881
  rowData.values[columnIndex] = cellData;
4776
4882
  }
4777
4883
  }
4778
- catch (e_45_1) { e_45 = { error: e_45_1 }; }
4884
+ catch (e_47_1) { e_47 = { error: e_47_1 }; }
4779
4885
  finally {
4780
4886
  try {
4781
4887
  if (_16 && !_16.done && (_23 = _15.return)) _23.call(_15);
4782
4888
  }
4783
- finally { if (e_45) throw e_45.error; }
4889
+ finally { if (e_47) throw e_47.error; }
4784
4890
  }
4785
4891
  sparklinesByRow.delete(rowIndex);
4786
4892
  }
@@ -4815,8 +4921,8 @@ var XlsxPlugin = /** @class */ (function (_super) {
4815
4921
  return [3 /*break*/, 10];
4816
4922
  case 14: return [3 /*break*/, 21];
4817
4923
  case 15:
4818
- e_37_1 = _5.sent();
4819
- e_37 = { error: e_37_1 };
4924
+ e_39_1 = _5.sent();
4925
+ e_39 = { error: e_39_1 };
4820
4926
  return [3 /*break*/, 21];
4821
4927
  case 16:
4822
4928
  _5.trys.push([16, , 19, 20]);
@@ -4827,7 +4933,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
4827
4933
  _5.label = 18;
4828
4934
  case 18: return [3 /*break*/, 20];
4829
4935
  case 19:
4830
- if (e_37) throw e_37.error;
4936
+ if (e_39) throw e_39.error;
4831
4937
  return [7 /*endfinally*/];
4832
4938
  case 20: return [7 /*endfinally*/];
4833
4939
  case 21:
@@ -4860,14 +4966,14 @@ var XlsxPlugin = /** @class */ (function (_super) {
4860
4966
  return [3 /*break*/, 23];
4861
4967
  case 27: return [3 /*break*/, 30];
4862
4968
  case 28:
4863
- e_38_1 = _5.sent();
4864
- e_38 = { error: e_38_1 };
4969
+ e_40_1 = _5.sent();
4970
+ e_40 = { error: e_40_1 };
4865
4971
  return [3 /*break*/, 30];
4866
4972
  case 29:
4867
4973
  try {
4868
4974
  if (_m && !_m.done && (_p = _l.return)) _p.call(_l);
4869
4975
  }
4870
- finally { if (e_38) throw e_38.error; }
4976
+ finally { if (e_40) throw e_40.error; }
4871
4977
  return [7 /*endfinally*/];
4872
4978
  case 30:
4873
4979
  finalPayload = flushChunk(true);
@@ -4884,8 +4990,8 @@ var XlsxPlugin = /** @class */ (function (_super) {
4884
4990
  };
4885
4991
  XlsxPlugin.prototype.getDrawings = function () {
4886
4992
  return __awaiter(this, void 0, void 0, function () {
4887
- var workSheets, allDrawings, workSheets_3, workSheets_3_1, element, sheetId, rid, features, sheet_data, drawings, _a, _b, _c, _d, e_46_1;
4888
- var e_46, _e;
4993
+ var workSheets, allDrawings, workSheets_3, workSheets_3_1, element, sheetId, rid, features, sheet_data, drawings, _a, _b, _c, _d, e_48_1;
4994
+ var e_48, _e;
4889
4995
  return __generator(this, function (_f) {
4890
4996
  switch (_f.label) {
4891
4997
  case 0:
@@ -4928,14 +5034,14 @@ var XlsxPlugin = /** @class */ (function (_super) {
4928
5034
  return [3 /*break*/, 2];
4929
5035
  case 8: return [3 /*break*/, 11];
4930
5036
  case 9:
4931
- e_46_1 = _f.sent();
4932
- e_46 = { error: e_46_1 };
5037
+ e_48_1 = _f.sent();
5038
+ e_48 = { error: e_48_1 };
4933
5039
  return [3 /*break*/, 11];
4934
5040
  case 10:
4935
5041
  try {
4936
5042
  if (workSheets_3_1 && !workSheets_3_1.done && (_e = workSheets_3.return)) _e.call(workSheets_3);
4937
5043
  }
4938
- finally { if (e_46) throw e_46.error; }
5044
+ finally { if (e_48) throw e_48.error; }
4939
5045
  return [7 /*endfinally*/];
4940
5046
  case 11: return [2 /*return*/, allDrawings];
4941
5047
  }
@@ -4949,8 +5055,8 @@ var XlsxPlugin = /** @class */ (function (_super) {
4949
5055
  */
4950
5056
  XlsxPlugin.prototype._getFormControls = function (rid, sheetId, sheetData) {
4951
5057
  return __awaiter(this, void 0, void 0, function () {
4952
- var controls, target, sheetPath, sheetRelPath, relTargets, sheetRels, _a, _b, list, _c, _d, rel, id, relTarget, _e, ctrlProps, controls_1, controls_1_1, control, relTarget, xml, _f, e_47_1, captions, legacyRelId, vmlTarget, _g, _h;
4953
- var e_48, _j, e_47, _k;
5058
+ var controls, target, sheetPath, sheetRelPath, relTargets, sheetRels, _a, _b, list, _c, _d, rel, id, relTarget, _e, ctrlProps, controls_1, controls_1_1, control, relTarget, xml, _f, e_49_1, captions, legacyRelId, vmlTarget, _g, _h;
5059
+ var e_50, _j, e_49, _k;
4954
5060
  var _l, _m;
4955
5061
  return __generator(this, function (_o) {
4956
5062
  switch (_o.label) {
@@ -4962,7 +5068,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
4962
5068
  sheetPath = target.startsWith("/xl")
4963
5069
  ? target.replace(/^\//gi, "")
4964
5070
  : "xl/".concat(target);
4965
- sheetRelPath = sheetPath.replace("worksheets", "worksheets/_rels") + ".rels";
5071
+ sheetRelPath = getSheetRelsPath(sheetPath);
4966
5072
  relTargets = new Map();
4967
5073
  _o.label = 1;
4968
5074
  case 1:
@@ -4982,12 +5088,12 @@ var XlsxPlugin = /** @class */ (function (_super) {
4982
5088
  }
4983
5089
  }
4984
5090
  }
4985
- catch (e_48_1) { e_48 = { error: e_48_1 }; }
5091
+ catch (e_50_1) { e_50 = { error: e_50_1 }; }
4986
5092
  finally {
4987
5093
  try {
4988
5094
  if (_d && !_d.done && (_j = _c.return)) _j.call(_c);
4989
5095
  }
4990
- finally { if (e_48) throw e_48.error; }
5096
+ finally { if (e_50) throw e_50.error; }
4991
5097
  }
4992
5098
  return [3 /*break*/, 4];
4993
5099
  case 3:
@@ -5024,14 +5130,14 @@ var XlsxPlugin = /** @class */ (function (_super) {
5024
5130
  return [3 /*break*/, 6];
5025
5131
  case 11: return [3 /*break*/, 14];
5026
5132
  case 12:
5027
- e_47_1 = _o.sent();
5028
- e_47 = { error: e_47_1 };
5133
+ e_49_1 = _o.sent();
5134
+ e_49 = { error: e_49_1 };
5029
5135
  return [3 /*break*/, 14];
5030
5136
  case 13:
5031
5137
  try {
5032
5138
  if (controls_1_1 && !controls_1_1.done && (_k = controls_1.return)) _k.call(controls_1);
5033
5139
  }
5034
- finally { if (e_47) throw e_47.error; }
5140
+ finally { if (e_49) throw e_49.error; }
5035
5141
  return [7 /*endfinally*/];
5036
5142
  case 14:
5037
5143
  captions = new Map();
@@ -5056,50 +5162,95 @@ var XlsxPlugin = /** @class */ (function (_super) {
5056
5162
  };
5057
5163
  XlsxPlugin.prototype.getCharts = function () {
5058
5164
  return __awaiter(this, void 0, void 0, function () {
5059
- var allCharts, workSheets, workSheets_4, workSheets_4_1, element, sheetId, rid, features, sheet_data, charts, e_49_1;
5060
- var e_49, _a;
5061
- return __generator(this, function (_b) {
5062
- switch (_b.label) {
5165
+ var allCharts, workSheets, workSheets_4, workSheets_4_1, element, sheetId, rid, _a, _b, _c, _d, features, sheet_data, charts, e_51_1, sheetTitleById, workSheets_5, workSheets_5_1, ws, id, pivotTables, _e;
5166
+ var e_51, _f, e_52, _g;
5167
+ var _h, _j;
5168
+ return __generator(this, function (_k) {
5169
+ switch (_k.label) {
5063
5170
  case 0:
5064
5171
  allCharts = [];
5065
5172
  workSheets = this._getSheets();
5066
- _b.label = 1;
5173
+ _k.label = 1;
5067
5174
  case 1:
5068
- _b.trys.push([1, 7, 8, 9]);
5175
+ _k.trys.push([1, 9, 10, 11]);
5069
5176
  workSheets_4 = __values(workSheets), workSheets_4_1 = workSheets_4.next();
5070
- _b.label = 2;
5177
+ _k.label = 2;
5071
5178
  case 2:
5072
- if (!!workSheets_4_1.done) return [3 /*break*/, 6];
5179
+ if (!!workSheets_4_1.done) return [3 /*break*/, 8];
5073
5180
  element = workSheets_4_1.value;
5074
5181
  sheetId = Number(element.a$.sheetId);
5075
5182
  rid = element.a$["r:id"];
5183
+ if (!this.isChartsheet(rid)) return [3 /*break*/, 4];
5184
+ _b = (_a = allCharts.push).apply;
5185
+ _c = [allCharts];
5186
+ _d = [[]];
5187
+ return [4 /*yield*/, this.getChartsheetCharts(rid, sheetId)];
5188
+ case 3:
5189
+ _b.apply(_a, _c.concat([__spreadArray.apply(void 0, _d.concat([__read.apply(void 0, [(_k.sent())]), false]))]));
5190
+ return [3 /*break*/, 7];
5191
+ case 4:
5076
5192
  features = this.sheetFeatures.get(rid);
5077
5193
  if (features && !features.drawing) {
5078
- return [3 /*break*/, 5];
5194
+ return [3 /*break*/, 7];
5079
5195
  }
5080
5196
  return [4 /*yield*/, this.getSheetData(rid)];
5081
- case 3:
5082
- sheet_data = _b.sent();
5197
+ case 5:
5198
+ sheet_data = _k.sent();
5083
5199
  return [4 /*yield*/, this._getCharts(rid, sheetId, sheet_data)];
5084
- case 4:
5085
- charts = _b.sent();
5200
+ case 6:
5201
+ charts = _k.sent();
5086
5202
  allCharts.push.apply(allCharts, __spreadArray([], __read(charts), false));
5087
- _b.label = 5;
5088
- case 5:
5203
+ _k.label = 7;
5204
+ case 7:
5089
5205
  workSheets_4_1 = workSheets_4.next();
5090
5206
  return [3 /*break*/, 2];
5091
- case 6: return [3 /*break*/, 9];
5092
- case 7:
5093
- e_49_1 = _b.sent();
5094
- e_49 = { error: e_49_1 };
5095
- return [3 /*break*/, 9];
5096
- case 8:
5207
+ case 8: return [3 /*break*/, 11];
5208
+ case 9:
5209
+ e_51_1 = _k.sent();
5210
+ e_51 = { error: e_51_1 };
5211
+ return [3 /*break*/, 11];
5212
+ case 10:
5097
5213
  try {
5098
- if (workSheets_4_1 && !workSheets_4_1.done && (_a = workSheets_4.return)) _a.call(workSheets_4);
5214
+ if (workSheets_4_1 && !workSheets_4_1.done && (_f = workSheets_4.return)) _f.call(workSheets_4);
5099
5215
  }
5100
- finally { if (e_49) throw e_49.error; }
5216
+ finally { if (e_51) throw e_51.error; }
5101
5217
  return [7 /*endfinally*/];
5102
- case 9: return [2 /*return*/, allCharts];
5218
+ case 11:
5219
+ if (!allCharts.some(function (chart) {
5220
+ return chart.spec[PIVOT_SOURCE_NAME_KEY] !==
5221
+ undefined;
5222
+ })) return [3 /*break*/, 16];
5223
+ sheetTitleById = new Map();
5224
+ try {
5225
+ for (workSheets_5 = __values(workSheets), workSheets_5_1 = workSheets_5.next(); !workSheets_5_1.done; workSheets_5_1 = workSheets_5.next()) {
5226
+ ws = workSheets_5_1.value;
5227
+ id = Number((_h = ws.a$) === null || _h === void 0 ? void 0 : _h.sheetId);
5228
+ if (((_j = ws.a$) === null || _j === void 0 ? void 0 : _j.name) && Number.isFinite(id))
5229
+ sheetTitleById.set(id, ws.a$.name);
5230
+ }
5231
+ }
5232
+ catch (e_52_1) { e_52 = { error: e_52_1 }; }
5233
+ finally {
5234
+ try {
5235
+ if (workSheets_5_1 && !workSheets_5_1.done && (_g = workSheets_5.return)) _g.call(workSheets_5);
5236
+ }
5237
+ finally { if (e_52) throw e_52.error; }
5238
+ }
5239
+ pivotTables = [];
5240
+ _k.label = 12;
5241
+ case 12:
5242
+ _k.trys.push([12, 14, , 15]);
5243
+ return [4 /*yield*/, this.getPivotTables()];
5244
+ case 13:
5245
+ pivotTables = _k.sent();
5246
+ return [3 /*break*/, 15];
5247
+ case 14:
5248
+ _e = _k.sent();
5249
+ return [3 /*break*/, 15];
5250
+ case 15:
5251
+ bindPivotChartsToPivotTables(allCharts, pivotTables, sheetTitleById);
5252
+ _k.label = 16;
5253
+ case 16: return [2 /*return*/, allCharts];
5103
5254
  }
5104
5255
  });
5105
5256
  });
@@ -5112,8 +5263,17 @@ var XlsxPlugin = /** @class */ (function (_super) {
5112
5263
  */
5113
5264
  XlsxPlugin.prototype.getPivotTables = function () {
5114
5265
  return __awaiter(this, void 0, void 0, function () {
5115
- var parsePivotTablesForSheet, all, workSheets, sheetNameToId, workSheets_5, workSheets_5_1, ws, name_9, id, pivotIdCounter, nextPivotId, workSheets_6, workSheets_6_1, element, sheetId, rid, target, path, sheetRelPath, sheetRelContent, _a, sheetRels, relList, relArray, pivotRels, pivots, e_50_1;
5116
- var e_51, _b, e_50, _c;
5266
+ var _a;
5267
+ return __generator(this, function (_b) {
5268
+ (_a = this.pivotTablesPromise) !== null && _a !== void 0 ? _a : (this.pivotTablesPromise = this.parsePivotTables());
5269
+ return [2 /*return*/, this.pivotTablesPromise];
5270
+ });
5271
+ });
5272
+ };
5273
+ XlsxPlugin.prototype.parsePivotTables = function () {
5274
+ return __awaiter(this, void 0, void 0, function () {
5275
+ var parsePivotTablesForSheet, all, workSheets, sheetNameToId, workSheets_6, workSheets_6_1, ws, name_10, id, pivotIdCounter, nextPivotId, workSheets_7, workSheets_7_1, element, sheetId, rid, target, path, sheetRelPath, sheetRelContent, _a, sheetRels, relList, relArray, pivotRels, pivots, e_53_1;
5276
+ var e_54, _b, e_53, _c;
5117
5277
  var _d, _e, _f;
5118
5278
  return __generator(this, function (_g) {
5119
5279
  switch (_g.label) {
@@ -5124,31 +5284,31 @@ var XlsxPlugin = /** @class */ (function (_super) {
5124
5284
  workSheets = this._getSheets();
5125
5285
  sheetNameToId = new Map();
5126
5286
  try {
5127
- for (workSheets_5 = __values(workSheets), workSheets_5_1 = workSheets_5.next(); !workSheets_5_1.done; workSheets_5_1 = workSheets_5.next()) {
5128
- ws = workSheets_5_1.value;
5129
- name_9 = (_d = ws.a$) === null || _d === void 0 ? void 0 : _d.name;
5287
+ for (workSheets_6 = __values(workSheets), workSheets_6_1 = workSheets_6.next(); !workSheets_6_1.done; workSheets_6_1 = workSheets_6.next()) {
5288
+ ws = workSheets_6_1.value;
5289
+ name_10 = (_d = ws.a$) === null || _d === void 0 ? void 0 : _d.name;
5130
5290
  id = Number((_e = ws.a$) === null || _e === void 0 ? void 0 : _e.sheetId);
5131
- if (name_9 && Number.isFinite(id))
5132
- sheetNameToId.set(name_9, id);
5291
+ if (name_10 && Number.isFinite(id))
5292
+ sheetNameToId.set(name_10, id);
5133
5293
  }
5134
5294
  }
5135
- catch (e_51_1) { e_51 = { error: e_51_1 }; }
5295
+ catch (e_54_1) { e_54 = { error: e_54_1 }; }
5136
5296
  finally {
5137
5297
  try {
5138
- if (workSheets_5_1 && !workSheets_5_1.done && (_b = workSheets_5.return)) _b.call(workSheets_5);
5298
+ if (workSheets_6_1 && !workSheets_6_1.done && (_b = workSheets_6.return)) _b.call(workSheets_6);
5139
5299
  }
5140
- finally { if (e_51) throw e_51.error; }
5300
+ finally { if (e_54) throw e_54.error; }
5141
5301
  }
5142
5302
  pivotIdCounter = 1;
5143
5303
  nextPivotId = function () { return "imported-pivot-".concat(pivotIdCounter++); };
5144
5304
  _g.label = 2;
5145
5305
  case 2:
5146
5306
  _g.trys.push([2, 11, 12, 13]);
5147
- workSheets_6 = __values(workSheets), workSheets_6_1 = workSheets_6.next();
5307
+ workSheets_7 = __values(workSheets), workSheets_7_1 = workSheets_7.next();
5148
5308
  _g.label = 3;
5149
5309
  case 3:
5150
- if (!!workSheets_6_1.done) return [3 /*break*/, 10];
5151
- element = workSheets_6_1.value;
5310
+ if (!!workSheets_7_1.done) return [3 /*break*/, 10];
5311
+ element = workSheets_7_1.value;
5152
5312
  sheetId = Number(element.a$.sheetId);
5153
5313
  rid = element.a$["r:id"];
5154
5314
  target = (_f = this.relations[rid]) === null || _f === void 0 ? void 0 : _f.target;
@@ -5157,7 +5317,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
5157
5317
  path = target.startsWith("/xl")
5158
5318
  ? target.replace(/^\//gi, "")
5159
5319
  : "xl/".concat(target);
5160
- sheetRelPath = path.replace("worksheets", "worksheets/_rels") + ".rels";
5320
+ sheetRelPath = getSheetRelsPath(path);
5161
5321
  sheetRelContent = void 0;
5162
5322
  _g.label = 4;
5163
5323
  case 4:
@@ -5202,18 +5362,18 @@ var XlsxPlugin = /** @class */ (function (_super) {
5202
5362
  all.push.apply(all, __spreadArray([], __read(pivots), false));
5203
5363
  _g.label = 9;
5204
5364
  case 9:
5205
- workSheets_6_1 = workSheets_6.next();
5365
+ workSheets_7_1 = workSheets_7.next();
5206
5366
  return [3 /*break*/, 3];
5207
5367
  case 10: return [3 /*break*/, 13];
5208
5368
  case 11:
5209
- e_50_1 = _g.sent();
5210
- e_50 = { error: e_50_1 };
5369
+ e_53_1 = _g.sent();
5370
+ e_53 = { error: e_53_1 };
5211
5371
  return [3 /*break*/, 13];
5212
5372
  case 12:
5213
5373
  try {
5214
- if (workSheets_6_1 && !workSheets_6_1.done && (_c = workSheets_6.return)) _c.call(workSheets_6);
5374
+ if (workSheets_7_1 && !workSheets_7_1.done && (_c = workSheets_7.return)) _c.call(workSheets_7);
5215
5375
  }
5216
- finally { if (e_50) throw e_50.error; }
5376
+ finally { if (e_53) throw e_53.error; }
5217
5377
  return [7 /*endfinally*/];
5218
5378
  case 13: return [2 /*return*/, all];
5219
5379
  }
@@ -5230,8 +5390,8 @@ var XlsxPlugin = /** @class */ (function (_super) {
5230
5390
  */
5231
5391
  XlsxPlugin.prototype.getPowerQuery = function () {
5232
5392
  return __awaiter(this, void 0, void 0, function () {
5233
- var customXmlParts, connectionsXml, _a, _b, rel, type, itemPath, itemXml, propsXml, itemRelsPath, itemRels, _c, _d, relList, relArray, propsRel, propsPath, path, e_52_1, queryTables, _e, _f, element, rid, target, sheetPath, sheetRelsPath, sheetRels, _g, _h, relList, relArray, relArray_1, relArray_1_1, r, relType, tablePath, tableRelsPath, tableRels, _j, _k, tableRelList, tableRelArray, qtRel, qtPath, partXml, tableData, _l, _m, tableDefinition, attrs, tableTitle, colDefs, colArray, columns, e_53_1, e_54_1, parts;
5234
- var e_52, _o, e_54, _p, e_53, _q;
5393
+ var customXmlParts, connectionsXml, _a, _b, rel, type, itemPath, itemXml, propsXml, itemRelsPath, itemRels, _c, _d, relList, relArray, propsRel, propsPath, path, e_55_1, queryTables, _e, _f, element, rid, target, sheetPath, sheetRelsPath, sheetRels, _g, _h, relList, relArray, relArray_1, relArray_1_1, r, relType, tablePath, tableRelsPath, tableRels, _j, _k, tableRelList, tableRelArray, qtRel, qtPath, partXml, tableData, _l, _m, tableDefinition, attrs, tableTitle, colDefs, colArray, columns, e_56_1, e_57_1, parts;
5394
+ var e_55, _o, e_57, _p, e_56, _q;
5235
5395
  var _r, _s, _t, _u, _v, _w;
5236
5396
  return __generator(this, function (_x) {
5237
5397
  switch (_x.label) {
@@ -5293,14 +5453,14 @@ var XlsxPlugin = /** @class */ (function (_super) {
5293
5453
  return [3 /*break*/, 2];
5294
5454
  case 10: return [3 /*break*/, 13];
5295
5455
  case 11:
5296
- e_52_1 = _x.sent();
5297
- e_52 = { error: e_52_1 };
5456
+ e_55_1 = _x.sent();
5457
+ e_55 = { error: e_55_1 };
5298
5458
  return [3 /*break*/, 13];
5299
5459
  case 12:
5300
5460
  try {
5301
5461
  if (_b && !_b.done && (_o = _a.return)) _o.call(_a);
5302
5462
  }
5303
- finally { if (e_52) throw e_52.error; }
5463
+ finally { if (e_55) throw e_55.error; }
5304
5464
  return [7 /*endfinally*/];
5305
5465
  case 13:
5306
5466
  queryTables = [];
@@ -5329,7 +5489,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
5329
5489
  _x.label = 17;
5330
5490
  case 17:
5331
5491
  _x.trys.push([17, 24, 25, 26]);
5332
- relArray_1 = (e_53 = void 0, __values(relArray)), relArray_1_1 = relArray_1.next();
5492
+ relArray_1 = (e_56 = void 0, __values(relArray)), relArray_1_1 = relArray_1.next();
5333
5493
  _x.label = 18;
5334
5494
  case 18:
5335
5495
  if (!!relArray_1_1.done) return [3 /*break*/, 23];
@@ -5391,28 +5551,28 @@ var XlsxPlugin = /** @class */ (function (_super) {
5391
5551
  return [3 /*break*/, 18];
5392
5552
  case 23: return [3 /*break*/, 26];
5393
5553
  case 24:
5394
- e_53_1 = _x.sent();
5395
- e_53 = { error: e_53_1 };
5554
+ e_56_1 = _x.sent();
5555
+ e_56 = { error: e_56_1 };
5396
5556
  return [3 /*break*/, 26];
5397
5557
  case 25:
5398
5558
  try {
5399
5559
  if (relArray_1_1 && !relArray_1_1.done && (_q = relArray_1.return)) _q.call(relArray_1);
5400
5560
  }
5401
- finally { if (e_53) throw e_53.error; }
5561
+ finally { if (e_56) throw e_56.error; }
5402
5562
  return [7 /*endfinally*/];
5403
5563
  case 26:
5404
5564
  _f = _e.next();
5405
5565
  return [3 /*break*/, 15];
5406
5566
  case 27: return [3 /*break*/, 30];
5407
5567
  case 28:
5408
- e_54_1 = _x.sent();
5409
- e_54 = { error: e_54_1 };
5568
+ e_57_1 = _x.sent();
5569
+ e_57 = { error: e_57_1 };
5410
5570
  return [3 /*break*/, 30];
5411
5571
  case 29:
5412
5572
  try {
5413
5573
  if (_f && !_f.done && (_p = _e.return)) _p.call(_e);
5414
5574
  }
5415
- finally { if (e_54) throw e_54.error; }
5575
+ finally { if (e_57) throw e_57.error; }
5416
5576
  return [7 /*endfinally*/];
5417
5577
  case 30:
5418
5578
  parts = {};
@@ -5429,8 +5589,8 @@ var XlsxPlugin = /** @class */ (function (_super) {
5429
5589
  };
5430
5590
  XlsxPlugin.prototype.getConditionalFormatting = function () {
5431
5591
  return __awaiter(this, void 0, void 0, function () {
5432
- var conditionalFormatting, _a, _b, element, _c, _d, _e, _f, e_55_1;
5433
- var e_55, _g;
5592
+ var conditionalFormatting, _a, _b, element, _c, _d, _e, _f, e_58_1;
5593
+ var e_58, _g;
5434
5594
  return __generator(this, function (_h) {
5435
5595
  switch (_h.label) {
5436
5596
  case 0:
@@ -5455,14 +5615,14 @@ var XlsxPlugin = /** @class */ (function (_super) {
5455
5615
  return [3 /*break*/, 2];
5456
5616
  case 5: return [3 /*break*/, 8];
5457
5617
  case 6:
5458
- e_55_1 = _h.sent();
5459
- e_55 = { error: e_55_1 };
5618
+ e_58_1 = _h.sent();
5619
+ e_58 = { error: e_58_1 };
5460
5620
  return [3 /*break*/, 8];
5461
5621
  case 7:
5462
5622
  try {
5463
5623
  if (_b && !_b.done && (_g = _a.return)) _g.call(_a);
5464
5624
  }
5465
- finally { if (e_55) throw e_55.error; }
5625
+ finally { if (e_58) throw e_58.error; }
5466
5626
  return [7 /*endfinally*/];
5467
5627
  case 8: return [2 /*return*/, conditionalFormatting];
5468
5628
  }
@@ -5502,8 +5662,8 @@ var XlsxPlugin = /** @class */ (function (_super) {
5502
5662
  };
5503
5663
  XlsxPlugin.prototype.getDataValidations = function () {
5504
5664
  return __awaiter(this, void 0, void 0, function () {
5505
- var dataValidations, _a, _b, element, _c, _d, _e, _f, e_56_1;
5506
- var e_56, _g;
5665
+ var dataValidations, _a, _b, element, _c, _d, _e, _f, e_59_1;
5666
+ var e_59, _g;
5507
5667
  return __generator(this, function (_h) {
5508
5668
  switch (_h.label) {
5509
5669
  case 0:
@@ -5528,14 +5688,14 @@ var XlsxPlugin = /** @class */ (function (_super) {
5528
5688
  return [3 /*break*/, 2];
5529
5689
  case 5: return [3 /*break*/, 8];
5530
5690
  case 6:
5531
- e_56_1 = _h.sent();
5532
- e_56 = { error: e_56_1 };
5691
+ e_59_1 = _h.sent();
5692
+ e_59 = { error: e_59_1 };
5533
5693
  return [3 /*break*/, 8];
5534
5694
  case 7:
5535
5695
  try {
5536
5696
  if (_b && !_b.done && (_g = _a.return)) _g.call(_a);
5537
5697
  }
5538
- finally { if (e_56) throw e_56.error; }
5698
+ finally { if (e_59) throw e_59.error; }
5539
5699
  return [7 /*endfinally*/];
5540
5700
  case 8: return [2 /*return*/, dataValidations];
5541
5701
  }
@@ -5600,7 +5760,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
5600
5760
  XlsxPlugin.prototype.getProperties = function () {
5601
5761
  return __awaiter(this, void 0, void 0, function () {
5602
5762
  var props, tryRead, coreXml, parsed, root, textOf_1, appXml, parsed, root, textOf, _a, _b, key;
5603
- var e_57, _c;
5763
+ var e_60, _c;
5604
5764
  var _this = this;
5605
5765
  var _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
5606
5766
  return __generator(this, function (_r) {
@@ -5684,12 +5844,12 @@ var XlsxPlugin = /** @class */ (function (_super) {
5684
5844
  }
5685
5845
  }
5686
5846
  }
5687
- catch (e_57_1) { e_57 = { error: e_57_1 }; }
5847
+ catch (e_60_1) { e_60 = { error: e_60_1 }; }
5688
5848
  finally {
5689
5849
  try {
5690
5850
  if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
5691
5851
  }
5692
- finally { if (e_57) throw e_57.error; }
5852
+ finally { if (e_60) throw e_60.error; }
5693
5853
  }
5694
5854
  return [2 /*return*/, Object.keys(props).length ? props : undefined];
5695
5855
  }
@@ -5705,8 +5865,8 @@ var XlsxPlugin = /** @class */ (function (_super) {
5705
5865
  };
5706
5866
  XlsxPlugin.prototype.getSlicersForWorkbook = function () {
5707
5867
  return __awaiter(this, void 0, void 0, function () {
5708
- var slicers, workbookRelsPath, workbookRelsContent, workbookRels, relationships, relationshipsArray, slicerRels, slicerCacheRels, toArray_1, slicerPathToSheetIds_2, addSlicerPath, slicerRels_1, slicerRels_1_1, slicerRel, target, workSheets, sheetRelContext, workSheets_7, workSheets_7_1, sheet, rid, currentSheetId, relation, sheetPath, sheetRelPath, sheetRelContent, sheetRels, sheetRelations, sheetRelationsArray, drawingRel, drawingPath, sheetSlicerRels, sheetSlicerRels_1, sheetSlicerRels_1_1, rel, target, _a, e_58_1, slicerCacheMap, slicerCacheRels_1, slicerCacheRels_1_1, cacheRel, cachePath, cacheContent, cacheXml, cacheDefinition, cacheName, title, extList, extArray, extArray_2, extArray_2_1, ext, tableSlicerCache, tableIdRaw, tableId, columnIndex, err_6, e_59_1, slicerPathToSheetIds_1, slicerPathToSheetIds_1_1, _b, slicerPath, linkedSheetIds, slicerContent, slicerXml, slicerDefinitionNode, slicerDefinition, slicerAttrs, cacheName, caption, cacheInfo, position, sheetId, workSheets_8, workSheets_8_1, sheet, currentSheetId, context, drawingContent, drawingXml, wsDr, anchors, firstSlicerAnchor, anchors_2, anchors_2_1, anchor, alternateContent, choices, graphicFrames, graphicFrames_1, graphicFrames_1_1, graphicFrame, graphicData, uri, isSlicerGraphic, nvGraphicFramePr, cNvPr, shapeName, e_60_1, slicer, err_7, e_61_1, err_8;
5709
- var e_62, _c, e_58, _d, e_63, _e, e_59, _f, e_64, _g, e_61, _h, e_60, _j, e_65, _k, e_66, _l;
5868
+ var slicers, workbookRelsPath, workbookRelsContent, workbookRels, relationships, relationshipsArray, slicerRels, slicerCacheRels, toArray_1, slicerPathToSheetIds_2, addSlicerPath, slicerRels_1, slicerRels_1_1, slicerRel, target, workSheets, sheetRelContext, workSheets_8, workSheets_8_1, sheet, rid, currentSheetId, relation, sheetPath, sheetRelPath, sheetRelContent, sheetRels, sheetRelations, sheetRelationsArray, drawingRel, drawingPath, sheetSlicerRels, sheetSlicerRels_1, sheetSlicerRels_1_1, rel, target, _a, e_61_1, slicerCacheMap, slicerCacheRels_1, slicerCacheRels_1_1, cacheRel, cachePath, cacheContent, cacheXml, cacheDefinition, cacheName, title, extList, extArray, extArray_2, extArray_2_1, ext, tableSlicerCache, tableIdRaw, tableId, columnIndex, err_6, e_62_1, slicerPathToSheetIds_1, slicerPathToSheetIds_1_1, _b, slicerPath, linkedSheetIds, slicerContent, slicerXml, slicerDefinitionNode, slicerDefinition, slicerAttrs, cacheName, caption, cacheInfo, position, sheetId, workSheets_9, workSheets_9_1, sheet, currentSheetId, context, drawingContent, drawingXml, wsDr, anchors, firstSlicerAnchor, anchors_1, anchors_1_1, anchor, alternateContent, choices, graphicFrames, graphicFrames_1, graphicFrames_1_1, graphicFrame, graphicData, uri, isSlicerGraphic, nvGraphicFramePr, cNvPr, shapeName, e_63_1, slicer, err_7, e_64_1, err_8;
5869
+ var e_65, _c, e_61, _d, e_66, _e, e_62, _f, e_67, _g, e_64, _h, e_63, _j, e_68, _k, e_69, _l;
5710
5870
  var _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z;
5711
5871
  return __generator(this, function (_0) {
5712
5872
  switch (_0.label) {
@@ -5755,23 +5915,23 @@ var XlsxPlugin = /** @class */ (function (_super) {
5755
5915
  addSlicerPath(this.resolveSheetPath(target));
5756
5916
  }
5757
5917
  }
5758
- catch (e_62_1) { e_62 = { error: e_62_1 }; }
5918
+ catch (e_65_1) { e_65 = { error: e_65_1 }; }
5759
5919
  finally {
5760
5920
  try {
5761
5921
  if (slicerRels_1_1 && !slicerRels_1_1.done && (_c = slicerRels_1.return)) _c.call(slicerRels_1);
5762
5922
  }
5763
- finally { if (e_62) throw e_62.error; }
5923
+ finally { if (e_65) throw e_65.error; }
5764
5924
  }
5765
5925
  workSheets = this._getSheets();
5766
5926
  sheetRelContext = new Map();
5767
5927
  _0.label = 3;
5768
5928
  case 3:
5769
5929
  _0.trys.push([3, 10, 11, 12]);
5770
- workSheets_7 = __values(workSheets), workSheets_7_1 = workSheets_7.next();
5930
+ workSheets_8 = __values(workSheets), workSheets_8_1 = workSheets_8.next();
5771
5931
  _0.label = 4;
5772
5932
  case 4:
5773
- if (!!workSheets_7_1.done) return [3 /*break*/, 9];
5774
- sheet = workSheets_7_1.value;
5933
+ if (!!workSheets_8_1.done) return [3 /*break*/, 9];
5934
+ sheet = workSheets_8_1.value;
5775
5935
  rid = (_o = sheet === null || sheet === void 0 ? void 0 : sheet.a$) === null || _o === void 0 ? void 0 : _o["r:id"];
5776
5936
  currentSheetId = Number((_p = sheet === null || sheet === void 0 ? void 0 : sheet.a$) === null || _p === void 0 ? void 0 : _p.sheetId);
5777
5937
  if (!rid || Number.isNaN(currentSheetId))
@@ -5780,7 +5940,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
5780
5940
  if (!(relation === null || relation === void 0 ? void 0 : relation.target))
5781
5941
  return [3 /*break*/, 8];
5782
5942
  sheetPath = this.resolveSheetPath(relation.target);
5783
- sheetRelPath = sheetPath.replace("worksheets", "worksheets/_rels") + ".rels";
5943
+ sheetRelPath = getSheetRelsPath(sheetPath);
5784
5944
  _0.label = 5;
5785
5945
  case 5:
5786
5946
  _0.trys.push([5, 7, , 8]);
@@ -5807,7 +5967,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
5807
5967
  "http://schemas.microsoft.com/office/2007/relationships/slicer";
5808
5968
  });
5809
5969
  try {
5810
- for (sheetSlicerRels_1 = (e_63 = void 0, __values(sheetSlicerRels)), sheetSlicerRels_1_1 = sheetSlicerRels_1.next(); !sheetSlicerRels_1_1.done; sheetSlicerRels_1_1 = sheetSlicerRels_1.next()) {
5970
+ for (sheetSlicerRels_1 = (e_66 = void 0, __values(sheetSlicerRels)), sheetSlicerRels_1_1 = sheetSlicerRels_1.next(); !sheetSlicerRels_1_1.done; sheetSlicerRels_1_1 = sheetSlicerRels_1.next()) {
5811
5971
  rel = sheetSlicerRels_1_1.value;
5812
5972
  target = (_r = rel === null || rel === void 0 ? void 0 : rel.a$) === null || _r === void 0 ? void 0 : _r.Target;
5813
5973
  if (!target)
@@ -5815,12 +5975,12 @@ var XlsxPlugin = /** @class */ (function (_super) {
5815
5975
  addSlicerPath(this.resolveRelationshipTarget(sheetRelPath, target), currentSheetId);
5816
5976
  }
5817
5977
  }
5818
- catch (e_63_1) { e_63 = { error: e_63_1 }; }
5978
+ catch (e_66_1) { e_66 = { error: e_66_1 }; }
5819
5979
  finally {
5820
5980
  try {
5821
5981
  if (sheetSlicerRels_1_1 && !sheetSlicerRels_1_1.done && (_e = sheetSlicerRels_1.return)) _e.call(sheetSlicerRels_1);
5822
5982
  }
5823
- finally { if (e_63) throw e_63.error; }
5983
+ finally { if (e_66) throw e_66.error; }
5824
5984
  }
5825
5985
  return [3 /*break*/, 8];
5826
5986
  case 7:
@@ -5828,18 +5988,18 @@ var XlsxPlugin = /** @class */ (function (_super) {
5828
5988
  // Sheet may not have a relationship part.
5829
5989
  return [3 /*break*/, 8];
5830
5990
  case 8:
5831
- workSheets_7_1 = workSheets_7.next();
5991
+ workSheets_8_1 = workSheets_8.next();
5832
5992
  return [3 /*break*/, 4];
5833
5993
  case 9: return [3 /*break*/, 12];
5834
5994
  case 10:
5835
- e_58_1 = _0.sent();
5836
- e_58 = { error: e_58_1 };
5995
+ e_61_1 = _0.sent();
5996
+ e_61 = { error: e_61_1 };
5837
5997
  return [3 /*break*/, 12];
5838
5998
  case 11:
5839
5999
  try {
5840
- if (workSheets_7_1 && !workSheets_7_1.done && (_d = workSheets_7.return)) _d.call(workSheets_7);
6000
+ if (workSheets_8_1 && !workSheets_8_1.done && (_d = workSheets_8.return)) _d.call(workSheets_8);
5841
6001
  }
5842
- finally { if (e_58) throw e_58.error; }
6002
+ finally { if (e_61) throw e_61.error; }
5843
6003
  return [7 /*endfinally*/];
5844
6004
  case 12:
5845
6005
  if (slicerPathToSheetIds_2.size === 0) {
@@ -5885,7 +6045,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
5885
6045
  ]);
5886
6046
  extArray = toArray_1(extList);
5887
6047
  try {
5888
- for (extArray_2 = (e_64 = void 0, __values(extArray)), extArray_2_1 = extArray_2.next(); !extArray_2_1.done; extArray_2_1 = extArray_2.next()) {
6048
+ for (extArray_2 = (e_67 = void 0, __values(extArray)), extArray_2_1 = extArray_2.next(); !extArray_2_1.done; extArray_2_1 = extArray_2.next()) {
5889
6049
  ext = extArray_2_1.value;
5890
6050
  tableSlicerCache = getWithFallback(ext, [
5891
6051
  "x15:tableSlicerCache",
@@ -5903,12 +6063,12 @@ var XlsxPlugin = /** @class */ (function (_super) {
5903
6063
  }
5904
6064
  }
5905
6065
  }
5906
- catch (e_64_1) { e_64 = { error: e_64_1 }; }
6066
+ catch (e_67_1) { e_67 = { error: e_67_1 }; }
5907
6067
  finally {
5908
6068
  try {
5909
6069
  if (extArray_2_1 && !extArray_2_1.done && (_g = extArray_2.return)) _g.call(extArray_2);
5910
6070
  }
5911
- finally { if (e_64) throw e_64.error; }
6071
+ finally { if (e_67) throw e_67.error; }
5912
6072
  }
5913
6073
  return [3 /*break*/, 18];
5914
6074
  case 17:
@@ -5920,14 +6080,14 @@ var XlsxPlugin = /** @class */ (function (_super) {
5920
6080
  return [3 /*break*/, 14];
5921
6081
  case 19: return [3 /*break*/, 22];
5922
6082
  case 20:
5923
- e_59_1 = _0.sent();
5924
- e_59 = { error: e_59_1 };
6083
+ e_62_1 = _0.sent();
6084
+ e_62 = { error: e_62_1 };
5925
6085
  return [3 /*break*/, 22];
5926
6086
  case 21:
5927
6087
  try {
5928
6088
  if (slicerCacheRels_1_1 && !slicerCacheRels_1_1.done && (_f = slicerCacheRels_1.return)) _f.call(slicerCacheRels_1);
5929
6089
  }
5930
- finally { if (e_59) throw e_59.error; }
6090
+ finally { if (e_62) throw e_62.error; }
5931
6091
  return [7 /*endfinally*/];
5932
6092
  case 22:
5933
6093
  _0.trys.push([22, 38, 39, 40]);
@@ -5970,11 +6130,11 @@ var XlsxPlugin = /** @class */ (function (_super) {
5970
6130
  _0.label = 26;
5971
6131
  case 26:
5972
6132
  _0.trys.push([26, 32, 33, 34]);
5973
- workSheets_8 = (e_60 = void 0, __values(workSheets)), workSheets_8_1 = workSheets_8.next();
6133
+ workSheets_9 = (e_63 = void 0, __values(workSheets)), workSheets_9_1 = workSheets_9.next();
5974
6134
  _0.label = 27;
5975
6135
  case 27:
5976
- if (!!workSheets_8_1.done) return [3 /*break*/, 31];
5977
- sheet = workSheets_8_1.value;
6136
+ if (!!workSheets_9_1.done) return [3 /*break*/, 31];
6137
+ sheet = workSheets_9_1.value;
5978
6138
  currentSheetId = Number((_w = sheet === null || sheet === void 0 ? void 0 : sheet.a$) === null || _w === void 0 ? void 0 : _w.sheetId);
5979
6139
  if (Number.isNaN(currentSheetId))
5980
6140
  return [3 /*break*/, 30];
@@ -5996,8 +6156,8 @@ var XlsxPlugin = /** @class */ (function (_super) {
5996
6156
  anchors = __spreadArray(__spreadArray([], __read(toArray_1(wsDr["xdr:oneCellAnchor"] || wsDr["oneCellAnchor"])), false), __read(toArray_1(wsDr["xdr:twoCellAnchor"] || wsDr["twoCellAnchor"])), false);
5997
6157
  firstSlicerAnchor = null;
5998
6158
  try {
5999
- for (anchors_2 = (e_65 = void 0, __values(anchors)), anchors_2_1 = anchors_2.next(); !anchors_2_1.done; anchors_2_1 = anchors_2.next()) {
6000
- anchor = anchors_2_1.value;
6159
+ for (anchors_1 = (e_68 = void 0, __values(anchors)), anchors_1_1 = anchors_1.next(); !anchors_1_1.done; anchors_1_1 = anchors_1.next()) {
6160
+ anchor = anchors_1_1.value;
6001
6161
  alternateContent = getWithFallback(anchor, [
6002
6162
  "mc:AlternateContent",
6003
6163
  "AlternateContent",
@@ -6013,7 +6173,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
6013
6173
  ]));
6014
6174
  })), false);
6015
6175
  try {
6016
- for (graphicFrames_1 = (e_66 = void 0, __values(graphicFrames)), graphicFrames_1_1 = graphicFrames_1.next(); !graphicFrames_1_1.done; graphicFrames_1_1 = graphicFrames_1.next()) {
6176
+ for (graphicFrames_1 = (e_69 = void 0, __values(graphicFrames)), graphicFrames_1_1 = graphicFrames_1.next(); !graphicFrames_1_1.done; graphicFrames_1_1 = graphicFrames_1.next()) {
6017
6177
  graphicFrame = graphicFrames_1_1.value;
6018
6178
  graphicData = getWithFallback(graphicFrame, [
6019
6179
  "a:graphic.a:graphicData",
@@ -6046,23 +6206,23 @@ var XlsxPlugin = /** @class */ (function (_super) {
6046
6206
  }
6047
6207
  }
6048
6208
  }
6049
- catch (e_66_1) { e_66 = { error: e_66_1 }; }
6209
+ catch (e_69_1) { e_69 = { error: e_69_1 }; }
6050
6210
  finally {
6051
6211
  try {
6052
6212
  if (graphicFrames_1_1 && !graphicFrames_1_1.done && (_l = graphicFrames_1.return)) _l.call(graphicFrames_1);
6053
6213
  }
6054
- finally { if (e_66) throw e_66.error; }
6214
+ finally { if (e_69) throw e_69.error; }
6055
6215
  }
6056
6216
  if (position)
6057
6217
  break;
6058
6218
  }
6059
6219
  }
6060
- catch (e_65_1) { e_65 = { error: e_65_1 }; }
6220
+ catch (e_68_1) { e_68 = { error: e_68_1 }; }
6061
6221
  finally {
6062
6222
  try {
6063
- if (anchors_2_1 && !anchors_2_1.done && (_k = anchors_2.return)) _k.call(anchors_2);
6223
+ if (anchors_1_1 && !anchors_1_1.done && (_k = anchors_1.return)) _k.call(anchors_1);
6064
6224
  }
6065
- finally { if (e_65) throw e_65.error; }
6225
+ finally { if (e_68) throw e_68.error; }
6066
6226
  }
6067
6227
  if (!position && firstSlicerAnchor) {
6068
6228
  position = this.extractSlicerPosition(firstSlicerAnchor, currentSheetId);
@@ -6072,18 +6232,18 @@ var XlsxPlugin = /** @class */ (function (_super) {
6072
6232
  _0.label = 29;
6073
6233
  case 29: return [3 /*break*/, 31];
6074
6234
  case 30:
6075
- workSheets_8_1 = workSheets_8.next();
6235
+ workSheets_9_1 = workSheets_9.next();
6076
6236
  return [3 /*break*/, 27];
6077
6237
  case 31: return [3 /*break*/, 34];
6078
6238
  case 32:
6079
- e_60_1 = _0.sent();
6080
- e_60 = { error: e_60_1 };
6239
+ e_63_1 = _0.sent();
6240
+ e_63 = { error: e_63_1 };
6081
6241
  return [3 /*break*/, 34];
6082
6242
  case 33:
6083
6243
  try {
6084
- if (workSheets_8_1 && !workSheets_8_1.done && (_j = workSheets_8.return)) _j.call(workSheets_8);
6244
+ if (workSheets_9_1 && !workSheets_9_1.done && (_j = workSheets_9.return)) _j.call(workSheets_9);
6085
6245
  }
6086
- finally { if (e_60) throw e_60.error; }
6246
+ finally { if (e_63) throw e_63.error; }
6087
6247
  return [7 /*endfinally*/];
6088
6248
  case 34:
6089
6249
  // Create default position if we couldn't find one
@@ -6125,14 +6285,14 @@ var XlsxPlugin = /** @class */ (function (_super) {
6125
6285
  return [3 /*break*/, 23];
6126
6286
  case 37: return [3 /*break*/, 40];
6127
6287
  case 38:
6128
- e_61_1 = _0.sent();
6129
- e_61 = { error: e_61_1 };
6288
+ e_64_1 = _0.sent();
6289
+ e_64 = { error: e_64_1 };
6130
6290
  return [3 /*break*/, 40];
6131
6291
  case 39:
6132
6292
  try {
6133
6293
  if (slicerPathToSheetIds_1_1 && !slicerPathToSheetIds_1_1.done && (_h = slicerPathToSheetIds_1.return)) _h.call(slicerPathToSheetIds_1);
6134
6294
  }
6135
- finally { if (e_61) throw e_61.error; }
6295
+ finally { if (e_64) throw e_64.error; }
6136
6296
  return [7 /*endfinally*/];
6137
6297
  case 40: return [3 /*break*/, 42];
6138
6298
  case 41:
@@ -6164,6 +6324,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
6164
6324
  var height = extAttributes.cy
6165
6325
  ? Math.round(parseInt(String(extAttributes.cy), 10) / 9525)
6166
6326
  : 300;
6327
+ // A `oneCellAnchor` is "Move but don't size with cells" (#668 C-46)
6167
6328
  return {
6168
6329
  sheetId: sheetId,
6169
6330
  overlayPosition: {
@@ -6175,6 +6336,7 @@ var XlsxPlugin = /** @class */ (function (_super) {
6175
6336
  offsetYPixels: Math.round(rowOff / 9525),
6176
6337
  widthPixels: width,
6177
6338
  heightPixels: height,
6339
+ placement: "moveOnly",
6178
6340
  },
6179
6341
  };
6180
6342
  }
@@ -6188,21 +6350,26 @@ var XlsxPlugin = /** @class */ (function (_super) {
6188
6350
  var rowOff = this.parseIntSafe(get(fromCell, "xdr:rowOff") || get(fromCell, "rowOff"));
6189
6351
  var toCol = this.parseIntSafe(get(toCell, "xdr:col") || get(toCell, "col"));
6190
6352
  var toRow = this.parseIntSafe(get(toCell, "xdr:row") || get(toCell, "row"));
6353
+ var toColOff = this.parseIntSafe(get(toCell, "xdr:colOff") || get(toCell, "colOff"));
6354
+ var toRowOff = this.parseIntSafe(get(toCell, "xdr:rowOff") || get(toCell, "rowOff"));
6191
6355
  // Estimate size based on cell span
6192
6356
  var width = Math.max((toCol - col) * 64, 100);
6193
6357
  var height = Math.max((toRow - row) * 20, 100);
6358
+ // `editAs` is the slicer's placement mode; a plain twoCellAnchor
6359
+ // keeps `to` as the second anchor like a chart (#668 C-46)
6360
+ var placement = anchorPlacementFromEditAs(get(anchor, "a$.editAs"));
6194
6361
  return {
6195
6362
  sheetId: sheetId,
6196
- overlayPosition: {
6197
- anchorCell: {
6363
+ overlayPosition: __assign({ anchorCell: {
6198
6364
  rowIndex: row + 1,
6199
6365
  columnIndex: col + 1,
6200
- },
6201
- offsetXPixels: Math.round(colOff / 9525),
6202
- offsetYPixels: Math.round(rowOff / 9525),
6203
- widthPixels: width,
6204
- heightPixels: height,
6205
- },
6366
+ }, offsetXPixels: Math.round(colOff / 9525), offsetYPixels: Math.round(rowOff / 9525), widthPixels: width, heightPixels: height }, (placement === "moveAndSize"
6367
+ ? {
6368
+ toCell: { rowIndex: toRow + 1, columnIndex: toCol + 1 },
6369
+ toOffsetXPixels: Math.round(toColOff / 9525),
6370
+ toOffsetYPixels: Math.round(toRowOff / 9525),
6371
+ }
6372
+ : { placement: placement })),
6206
6373
  };
6207
6374
  }
6208
6375
  return null;
@@ -6364,7 +6531,7 @@ var SHEET_PROTECTION_FLAGS = [
6364
6531
  * Mirrors `rnc-import`'s `read_sheet_protection`.
6365
6532
  */
6366
6533
  var readSheetProtectionAttrs = function (attrs) {
6367
- var e_67, _a;
6534
+ var e_70, _a;
6368
6535
  var protection = {};
6369
6536
  try {
6370
6537
  for (var SHEET_PROTECTION_FLAGS_1 = __values(SHEET_PROTECTION_FLAGS), SHEET_PROTECTION_FLAGS_1_1 = SHEET_PROTECTION_FLAGS_1.next(); !SHEET_PROTECTION_FLAGS_1_1.done; SHEET_PROTECTION_FLAGS_1_1 = SHEET_PROTECTION_FLAGS_1.next()) {
@@ -6375,12 +6542,12 @@ var readSheetProtectionAttrs = function (attrs) {
6375
6542
  }
6376
6543
  }
6377
6544
  }
6378
- catch (e_67_1) { e_67 = { error: e_67_1 }; }
6545
+ catch (e_70_1) { e_70 = { error: e_70_1 }; }
6379
6546
  finally {
6380
6547
  try {
6381
6548
  if (SHEET_PROTECTION_FLAGS_1_1 && !SHEET_PROTECTION_FLAGS_1_1.done && (_a = SHEET_PROTECTION_FLAGS_1.return)) _a.call(SHEET_PROTECTION_FLAGS_1);
6382
6549
  }
6383
- finally { if (e_67) throw e_67.error; }
6550
+ finally { if (e_70) throw e_70.error; }
6384
6551
  }
6385
6552
  if (attrs.password)
6386
6553
  protection.password = attrs.password;
@@ -6404,7 +6571,7 @@ var readSheetProtectionAttrs = function (attrs) {
6404
6571
  * (Excel writes one per element in practice).
6405
6572
  */
6406
6573
  var protectedRangesFromEntries = function (sheetId, entries) {
6407
- var e_68, _a;
6574
+ var e_71, _a;
6408
6575
  var ranges = [];
6409
6576
  try {
6410
6577
  for (var entries_1 = __values(entries), entries_1_1 = entries_1.next(); !entries_1_1.done; entries_1_1 = entries_1.next()) {
@@ -6424,12 +6591,12 @@ var protectedRangesFromEntries = function (sheetId, entries) {
6424
6591
  ranges.push(protectedRange);
6425
6592
  }
6426
6593
  }
6427
- catch (e_68_1) { e_68 = { error: e_68_1 }; }
6594
+ catch (e_71_1) { e_71 = { error: e_71_1 }; }
6428
6595
  finally {
6429
6596
  try {
6430
6597
  if (entries_1_1 && !entries_1_1.done && (_a = entries_1.return)) _a.call(entries_1);
6431
6598
  }
6432
- finally { if (e_68) throw e_68.error; }
6599
+ finally { if (e_71) throw e_71.error; }
6433
6600
  }
6434
6601
  return ranges;
6435
6602
  };
@@ -6453,7 +6620,7 @@ var xmlFloatOpt = function (value) {
6453
6620
  return Number.isFinite(n) ? n : undefined;
6454
6621
  };
6455
6622
  var stripUndefined = function (value) {
6456
- var e_69, _a;
6623
+ var e_72, _a;
6457
6624
  try {
6458
6625
  for (var _b = __values(Object.keys(value)), _c = _b.next(); !_c.done; _c = _b.next()) {
6459
6626
  var key = _c.value;
@@ -6461,12 +6628,12 @@ var stripUndefined = function (value) {
6461
6628
  delete value[key];
6462
6629
  }
6463
6630
  }
6464
- catch (e_69_1) { e_69 = { error: e_69_1 }; }
6631
+ catch (e_72_1) { e_72 = { error: e_72_1 }; }
6465
6632
  finally {
6466
6633
  try {
6467
6634
  if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
6468
6635
  }
6469
- finally { if (e_69) throw e_69.error; }
6636
+ finally { if (e_72) throw e_72.error; }
6470
6637
  }
6471
6638
  return value;
6472
6639
  };