@rowsncolumns/toolkit 24.4.3 → 24.4.5

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 (86) hide show
  1. package/dist/cjs/excel-parser/interface.d.ts +5 -1
  2. package/dist/cjs/excel-parser/interface.d.ts.map +1 -1
  3. package/dist/cjs/excel-parser/plugins/base/index.d.ts +2 -0
  4. package/dist/cjs/excel-parser/plugins/base/index.d.ts.map +1 -1
  5. package/dist/cjs/excel-parser/plugins/base/index.js +3 -0
  6. package/dist/cjs/excel-parser/plugins/xls/index.d.ts +55 -9
  7. package/dist/cjs/excel-parser/plugins/xls/index.d.ts.map +1 -1
  8. package/dist/cjs/excel-parser/plugins/xls/index.js +487 -24
  9. package/dist/cjs/excel-parser/plugins/xlsb/index.d.ts.map +1 -1
  10. package/dist/cjs/excel-parser/plugins/xlsb/index.js +12 -5
  11. package/dist/cjs/excel-parser/plugins/xlsx/chartex.d.ts +37 -0
  12. package/dist/cjs/excel-parser/plugins/xlsx/chartex.d.ts.map +1 -0
  13. package/dist/cjs/excel-parser/plugins/xlsx/chartex.js +244 -0
  14. package/dist/cjs/excel-parser/plugins/xlsx/form-controls.d.ts +70 -0
  15. package/dist/cjs/excel-parser/plugins/xlsx/form-controls.d.ts.map +1 -0
  16. package/dist/cjs/excel-parser/plugins/xlsx/form-controls.js +295 -0
  17. package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts +9 -1
  18. package/dist/cjs/excel-parser/plugins/xlsx/index.d.ts.map +1 -1
  19. package/dist/cjs/excel-parser/plugins/xlsx/index.js +251 -104
  20. package/dist/cjs/excel-parser/plugins/xlsx/styles.d.ts +15 -1
  21. package/dist/cjs/excel-parser/plugins/xlsx/styles.d.ts.map +1 -1
  22. package/dist/cjs/excel-parser/plugins/xlsx/styles.js +90 -4
  23. package/dist/cjs/excel-parser/registry.d.ts +7 -0
  24. package/dist/cjs/excel-parser/registry.d.ts.map +1 -1
  25. package/dist/cjs/excel-parser/registry.js +28 -1
  26. package/dist/cjs/excel-parser/types.d.ts +10 -1
  27. package/dist/cjs/excel-parser/types.d.ts.map +1 -1
  28. package/dist/cjs/excel-parser/workbook.d.ts +2 -0
  29. package/dist/cjs/excel-parser/workbook.d.ts.map +1 -1
  30. package/dist/cjs/excel-parser/workbook.js +20 -14
  31. package/dist/cjs/excel-parser/worker.js +128 -130
  32. package/dist/cjs/exporter/xlsx/chart-builder.d.ts.map +1 -1
  33. package/dist/cjs/exporter/xlsx/chart-builder.js +5 -33
  34. package/dist/cjs/exporter/xlsx/chartex-builder.d.ts +36 -0
  35. package/dist/cjs/exporter/xlsx/chartex-builder.d.ts.map +1 -0
  36. package/dist/cjs/exporter/xlsx/chartex-builder.js +109 -0
  37. package/dist/cjs/exporter/xlsx/form-controls-builder.d.ts +61 -0
  38. package/dist/cjs/exporter/xlsx/form-controls-builder.d.ts.map +1 -0
  39. package/dist/cjs/exporter/xlsx/form-controls-builder.js +197 -0
  40. package/dist/cjs/exporter/xlsx/xlsx-export.d.ts.map +1 -1
  41. package/dist/cjs/exporter/xlsx/xlsx-export.js +431 -193
  42. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  43. package/dist/esm/excel-parser/interface.d.ts +5 -1
  44. package/dist/esm/excel-parser/interface.d.ts.map +1 -1
  45. package/dist/esm/excel-parser/plugins/base/index.d.ts +2 -0
  46. package/dist/esm/excel-parser/plugins/base/index.d.ts.map +1 -1
  47. package/dist/esm/excel-parser/plugins/base/index.js +3 -0
  48. package/dist/esm/excel-parser/plugins/xls/index.d.ts +55 -9
  49. package/dist/esm/excel-parser/plugins/xls/index.d.ts.map +1 -1
  50. package/dist/esm/excel-parser/plugins/xls/index.js +429 -23
  51. package/dist/esm/excel-parser/plugins/xlsb/index.d.ts.map +1 -1
  52. package/dist/esm/excel-parser/plugins/xlsb/index.js +10 -3
  53. package/dist/esm/excel-parser/plugins/xlsx/chartex.d.ts +37 -0
  54. package/dist/esm/excel-parser/plugins/xlsx/chartex.d.ts.map +1 -0
  55. package/dist/esm/excel-parser/plugins/xlsx/chartex.js +199 -0
  56. package/dist/esm/excel-parser/plugins/xlsx/form-controls.d.ts +70 -0
  57. package/dist/esm/excel-parser/plugins/xlsx/form-controls.d.ts.map +1 -0
  58. package/dist/esm/excel-parser/plugins/xlsx/form-controls.js +246 -0
  59. package/dist/esm/excel-parser/plugins/xlsx/index.d.ts +9 -1
  60. package/dist/esm/excel-parser/plugins/xlsx/index.d.ts.map +1 -1
  61. package/dist/esm/excel-parser/plugins/xlsx/index.js +92 -6
  62. package/dist/esm/excel-parser/plugins/xlsx/styles.d.ts +15 -1
  63. package/dist/esm/excel-parser/plugins/xlsx/styles.d.ts.map +1 -1
  64. package/dist/esm/excel-parser/plugins/xlsx/styles.js +80 -0
  65. package/dist/esm/excel-parser/registry.d.ts +7 -0
  66. package/dist/esm/excel-parser/registry.d.ts.map +1 -1
  67. package/dist/esm/excel-parser/registry.js +18 -1
  68. package/dist/esm/excel-parser/types.d.ts +10 -1
  69. package/dist/esm/excel-parser/types.d.ts.map +1 -1
  70. package/dist/esm/excel-parser/workbook.d.ts +2 -0
  71. package/dist/esm/excel-parser/workbook.d.ts.map +1 -1
  72. package/dist/esm/excel-parser/workbook.js +16 -10
  73. package/dist/esm/excel-parser/worker.js +10 -18
  74. package/dist/esm/exporter/xlsx/chart-builder.d.ts.map +1 -1
  75. package/dist/esm/exporter/xlsx/chart-builder.js +0 -28
  76. package/dist/esm/exporter/xlsx/chartex-builder.d.ts +36 -0
  77. package/dist/esm/exporter/xlsx/chartex-builder.d.ts.map +1 -0
  78. package/dist/esm/exporter/xlsx/chartex-builder.js +97 -0
  79. package/dist/esm/exporter/xlsx/form-controls-builder.d.ts +61 -0
  80. package/dist/esm/exporter/xlsx/form-controls-builder.d.ts.map +1 -0
  81. package/dist/esm/exporter/xlsx/form-controls-builder.js +173 -0
  82. package/dist/esm/exporter/xlsx/xlsx-export.d.ts.map +1 -1
  83. package/dist/esm/exporter/xlsx/xlsx-export.js +228 -19
  84. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  85. package/package.json +5 -3
  86. package/xlsx.d.ts +14 -0
@@ -1,6 +1,6 @@
1
1
  import { __assign, __asyncValues, __awaiter, __generator, __read, __values } from "tslib";
2
2
  import { canonicalizeRichSharedString, contentHash } from "@rowsncolumns/utils";
3
- import { CFBDecryptor, detectCfbContainerKind, LEGACY_XLS_UNSUPPORTED_MESSAGE, } from "./cfb-decryptor";
3
+ import { CFBDecryptor, detectCfbContainerKind, } from "./cfb-decryptor";
4
4
  import { readExcelFile } from "./helpers";
5
5
  import { RequestType, ResponseType } from "./types";
6
6
  import { delay } from "./utils";
@@ -456,32 +456,29 @@ var runLoadSheet = function (s, msg) { return __awaiter(void 0, void 0, void 0,
456
456
  });
457
457
  }); };
458
458
  var openSessionWorkbook = function (s, password) { return __awaiter(void 0, void 0, void 0, function () {
459
- var buffer, _a, decryptedBuffer, decryptError_1, loadError_1;
460
- return __generator(this, function (_b) {
461
- switch (_b.label) {
459
+ var buffer, _a, _b, decryptedBuffer, decryptError_1, loadError_1;
460
+ return __generator(this, function (_c) {
461
+ switch (_c.label) {
462
462
  case 0:
463
463
  if (!(s.file instanceof File)) return [3 /*break*/, 1];
464
464
  _a = s.file;
465
465
  return [3 /*break*/, 3];
466
466
  case 1: return [4 /*yield*/, readExcelFile(s.file)];
467
467
  case 2:
468
- _a = _b.sent();
469
- _b.label = 3;
468
+ _a = _c.sent();
469
+ _c.label = 3;
470
470
  case 3:
471
471
  buffer = _a;
472
472
  return [4 /*yield*/, isCFBFile(buffer)];
473
473
  case 4:
474
- if (!_b.sent()) return [3 /*break*/, 12];
474
+ _b = (_c.sent());
475
+ if (!_b) return [3 /*break*/, 6];
475
476
  return [4 /*yield*/, detectCfbContainerKind(buffer)];
476
477
  case 5:
477
- if ((_b.sent()) === "legacy-xls") {
478
- self.postMessage({
479
- responseType: ResponseType.ERROR,
480
- generation: s.generation,
481
- error: LEGACY_XLS_UNSUPPORTED_MESSAGE,
482
- });
483
- return [2 /*return*/];
484
- }
478
+ _b = (_c.sent()) !== "legacy-xls";
479
+ _c.label = 6;
480
+ case 6:
481
+ if (!_b) return [3 /*break*/, 13];
485
482
  if (!password) {
486
483
  s.pendingPassword = true;
487
484
  self.postMessage({
@@ -492,15 +489,15 @@ var openSessionWorkbook = function (s, password) { return __awaiter(void 0, void
492
489
  return [2 /*return*/];
493
490
  }
494
491
  decryptedBuffer = void 0;
495
- _b.label = 6;
496
- case 6:
497
- _b.trys.push([6, 8, , 9]);
498
- return [4 /*yield*/, CFBDecryptor.decrypt(buffer, password)];
492
+ _c.label = 7;
499
493
  case 7:
500
- decryptedBuffer = _b.sent();
501
- return [3 /*break*/, 9];
494
+ _c.trys.push([7, 9, , 10]);
495
+ return [4 /*yield*/, CFBDecryptor.decrypt(buffer, password)];
502
496
  case 8:
503
- decryptError_1 = _b.sent();
497
+ decryptedBuffer = _c.sent();
498
+ return [3 /*break*/, 10];
499
+ case 9:
500
+ decryptError_1 = _c.sent();
504
501
  if (decryptError_1 instanceof Error &&
505
502
  isIncorrectPasswordError(decryptError_1)) {
506
503
  s.pendingPassword = true;
@@ -512,29 +509,29 @@ var openSessionWorkbook = function (s, password) { return __awaiter(void 0, void
512
509
  return [2 /*return*/];
513
510
  }
514
511
  throw decryptError_1;
515
- case 9:
512
+ case 10:
516
513
  resetSharedStringHashState();
517
514
  s.sentSharedStringIds.clear();
518
515
  return [4 /*yield*/, s.workbook.load(decryptedBuffer, s.fileName)];
519
- case 10:
520
- _b.sent();
516
+ case 11:
517
+ _c.sent();
521
518
  s.pendingPassword = false;
522
519
  return [4 /*yield*/, postOpenWorkbookComplete(s)];
523
- case 11:
524
- _b.sent();
525
- return [2 /*return*/];
526
520
  case 12:
521
+ _c.sent();
522
+ return [2 /*return*/];
523
+ case 13:
527
524
  resetSharedStringHashState();
528
525
  s.sentSharedStringIds.clear();
529
- _b.label = 13;
530
- case 13:
531
- _b.trys.push([13, 15, , 16]);
532
- return [4 /*yield*/, s.workbook.load(buffer, s.fileName, password)];
526
+ _c.label = 14;
533
527
  case 14:
534
- _b.sent();
535
- return [3 /*break*/, 16];
528
+ _c.trys.push([14, 16, , 17]);
529
+ return [4 /*yield*/, s.workbook.load(buffer, s.fileName, password)];
536
530
  case 15:
537
- loadError_1 = _b.sent();
531
+ _c.sent();
532
+ return [3 /*break*/, 17];
533
+ case 16:
534
+ loadError_1 = _c.sent();
538
535
  if (loadError_1 instanceof Error) {
539
536
  if (loadError_1.message === "PASSWORD_REQUIRED" ||
540
537
  (password && isIncorrectPasswordError(loadError_1))) {
@@ -558,27 +555,27 @@ var openSessionWorkbook = function (s, password) { return __awaiter(void 0, void
558
555
  }
559
556
  }
560
557
  throw loadError_1;
561
- case 16:
558
+ case 17:
562
559
  s.pendingPassword = false;
563
560
  return [4 /*yield*/, postOpenWorkbookComplete(s)];
564
- case 17:
565
- _b.sent();
561
+ case 18:
562
+ _c.sent();
566
563
  return [2 /*return*/];
567
564
  }
568
565
  });
569
566
  }); };
570
567
  // Handle messages from the main thread
571
568
  self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, function () {
572
- var requestType, _a, generation, newSession, error_2, msg_1, s_1, s, s, buffer, _b, loadError_2, _c, sheets, tables, err_1, enableBackpressure, lastSharedStringsLength, postProgress, _d, _e, _f, result, sharedStringsChunk, currentSharedStrings, e_7_1, drawings, charts, slicers, pivotTables, e_8, externalLinks, commentThreads, conditionalFormatting, dataValidations, s, password_1, error_3, password, buffer, _g, isCFB, decryptedBuffer, decryptError_2, loadError_3, _h, sheets, tables, err_2, error_4;
573
- var _j, e_7, _k, _l;
574
- var _m, _o, _p, _q;
575
- return __generator(this, function (_r) {
576
- switch (_r.label) {
569
+ var requestType, _a, generation, newSession, error_2, msg_1, s_1, s, s, buffer, _b, _c, loadError_2, _d, sheets, tables, err_1, enableBackpressure, lastSharedStringsLength, postProgress, _e, _f, _g, result, sharedStringsChunk, currentSharedStrings, e_7_1, drawings, charts, slicers, pivotTables, e_8, externalLinks, commentThreads, conditionalFormatting, dataValidations, s, password_1, error_3, password, buffer, _h, isCFB, decryptedBuffer, decryptError_2, loadError_3, _j, sheets, tables, err_2, error_4;
570
+ var _k, e_7, _l, _m;
571
+ var _o, _p, _q, _r;
572
+ return __generator(this, function (_s) {
573
+ switch (_s.label) {
577
574
  case 0:
578
575
  requestType = e.data.requestType;
579
- _r.label = 1;
576
+ _s.label = 1;
580
577
  case 1:
581
- _r.trys.push([1, 79, , 80]);
578
+ _s.trys.push([1, 79, , 80]);
582
579
  // Guard against undefined requestType
583
580
  if (!requestType) {
584
581
  console.error("Received message with undefined requestType:", e.data);
@@ -622,15 +619,15 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
622
619
  queue: Promise.resolve(),
623
620
  };
624
621
  session = newSession;
625
- _r.label = 3;
622
+ _s.label = 3;
626
623
  case 3:
627
- _r.trys.push([3, 5, , 6]);
624
+ _s.trys.push([3, 5, , 6]);
628
625
  return [4 /*yield*/, openSessionWorkbook(newSession)];
629
626
  case 4:
630
- _r.sent();
627
+ _s.sent();
631
628
  return [3 /*break*/, 6];
632
629
  case 5:
633
- error_2 = _r.sent();
630
+ error_2 = _s.sent();
634
631
  console.trace(error_2);
635
632
  self.postMessage({
636
633
  responseType: ResponseType.ERROR,
@@ -652,7 +649,7 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
652
649
  s_1.queue = s_1.queue.then(function () { return runLoadSheet(s_1, msg_1); });
653
650
  return [3 /*break*/, 78];
654
651
  }
655
- _r.label = 8;
652
+ _s.label = 8;
656
653
  case 8:
657
654
  {
658
655
  s = session;
@@ -663,7 +660,7 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
663
660
  releaseRowAckForRequest(e.data.requestId);
664
661
  return [3 /*break*/, 78];
665
662
  }
666
- _r.label = 9;
663
+ _s.label = 9;
667
664
  case 9:
668
665
  {
669
666
  s = session;
@@ -673,7 +670,7 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
673
670
  disposeSession(s);
674
671
  return [3 /*break*/, 78];
675
672
  }
676
- _r.label = 10;
673
+ _s.label = 10;
677
674
  case 10:
678
675
  currentFile = e.data.file;
679
676
  currentMinRowCount = e.data.minRowCount;
@@ -683,41 +680,40 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
683
680
  return [3 /*break*/, 13];
684
681
  case 11: return [4 /*yield*/, readExcelFile(e.data.file)];
685
682
  case 12:
686
- _b = _r.sent();
687
- _r.label = 13;
683
+ _b = _s.sent();
684
+ _s.label = 13;
688
685
  case 13:
689
686
  buffer = _b;
690
687
  currentFileName =
691
688
  e.data.file instanceof File ? e.data.file.name : "unknown.xlsx";
692
689
  return [4 /*yield*/, isCFBFile(buffer)];
693
690
  case 14:
694
- if (!_r.sent()) return [3 /*break*/, 16];
691
+ _c = (_s.sent());
692
+ if (!_c) return [3 /*break*/, 16];
695
693
  return [4 /*yield*/, detectCfbContainerKind(buffer)];
696
694
  case 15:
697
- if ((_r.sent()) === "legacy-xls") {
695
+ _c = (_s.sent()) !== "legacy-xls";
696
+ _s.label = 16;
697
+ case 16:
698
+ // Check if file uses Office encryption (CFB format)
699
+ if (_c) {
698
700
  self.postMessage({
699
- responseType: ResponseType.ERROR,
700
- error: LEGACY_XLS_UNSUPPORTED_MESSAGE,
701
+ responseType: ResponseType.PASSWORD_REQUIRED,
702
+ message: "This file uses Office encryption and requires a password.",
701
703
  });
702
704
  return [2 /*return*/];
703
705
  }
704
- self.postMessage({
705
- responseType: ResponseType.PASSWORD_REQUIRED,
706
- message: "This file uses Office encryption and requires a password.",
707
- });
708
- return [2 /*return*/];
709
- case 16:
710
706
  // Load workbook (fresh state — clear stale hash mappings from prior import)
711
707
  resetSharedStringHashState();
712
- _r.label = 17;
708
+ _s.label = 17;
713
709
  case 17:
714
- _r.trys.push([17, 19, , 20]);
710
+ _s.trys.push([17, 19, , 20]);
715
711
  return [4 /*yield*/, workbook.load(buffer, currentFileName)];
716
712
  case 18:
717
- _r.sent();
713
+ _s.sent();
718
714
  return [3 /*break*/, 20];
719
715
  case 19:
720
- loadError_2 = _r.sent();
716
+ loadError_2 = _s.sent();
721
717
  if (loadError_2 instanceof Error &&
722
718
  loadError_2.message === "PASSWORD_REQUIRED") {
723
719
  self.postMessage({
@@ -747,17 +743,18 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
747
743
  self.postMessage({
748
744
  responseType: ResponseType.GET_THEME_SUCCESS,
749
745
  theme: workbook.getTheme(),
746
+ namedCellStyles: workbook.getNamedCellStyles(),
750
747
  });
751
- _r.label = 21;
748
+ _s.label = 21;
752
749
  case 21:
753
- _r.trys.push([21, 23, , 24]);
750
+ _s.trys.push([21, 23, , 24]);
754
751
  self.postMessage({
755
752
  responseType: ResponseType.BEGIN_GET_SHEETS,
756
753
  totalSheets: workbook.getSheetCount(),
757
754
  });
758
755
  return [4 /*yield*/, workbook.getSheets(e.data.minRowCount, e.data.minColumnCount)];
759
756
  case 22:
760
- _c = __read.apply(void 0, [_r.sent(), 2]), sheets = _c[0], tables = _c[1];
757
+ _d = __read.apply(void 0, [_s.sent(), 2]), sheets = _d[0], tables = _d[1];
761
758
  self.postMessage({
762
759
  responseType: ResponseType.GET_SHEETS_SUCCESS,
763
760
  sheets: sheets,
@@ -784,13 +781,13 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
784
781
  });
785
782
  return [3 /*break*/, 24];
786
783
  case 23:
787
- err_1 = _r.sent();
784
+ err_1 = _s.sent();
788
785
  console.error(err_1);
789
786
  return [3 /*break*/, 24];
790
787
  case 24: return [3 /*break*/, 78];
791
788
  case 25:
792
- enableBackpressure = (_m = e.data.enableBackpressure) !== null && _m !== void 0 ? _m : false;
793
- lastSharedStringsLength = (_p = (_o = workbook.sharedStrings) === null || _o === void 0 ? void 0 : _o.length) !== null && _p !== void 0 ? _p : 0;
789
+ enableBackpressure = (_o = e.data.enableBackpressure) !== null && _o !== void 0 ? _o : false;
790
+ lastSharedStringsLength = (_q = (_p = workbook.sharedStrings) === null || _p === void 0 ? void 0 : _p.length) !== null && _q !== void 0 ? _q : 0;
794
791
  // Make sure hash ids exist for any strings loaded before this request
795
792
  // (e.g. XLSX populates the full SST upfront).
796
793
  ensureSharedStringHashIds(workbook.sharedStrings, workbook.richSharedStringRuns);
@@ -801,20 +798,20 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
801
798
  sheetTitle: sheetTitle,
802
799
  });
803
800
  };
804
- _r.label = 26;
801
+ _s.label = 26;
805
802
  case 26:
806
- _r.trys.push([26, 34, 35, 40]);
807
- _d = true, _e = __asyncValues(workbook.processSheetData(e.data.pageSize, e.data.enableCellXfsRegistry, e.data.enableSharedStrings, postProgress));
808
- _r.label = 27;
809
- case 27: return [4 /*yield*/, _e.next()];
803
+ _s.trys.push([26, 34, 35, 40]);
804
+ _e = true, _f = __asyncValues(workbook.processSheetData(e.data.pageSize, e.data.enableCellXfsRegistry, e.data.enableSharedStrings, postProgress));
805
+ _s.label = 27;
806
+ case 27: return [4 /*yield*/, _f.next()];
810
807
  case 28:
811
- if (!(_f = _r.sent(), _j = _f.done, !_j)) return [3 /*break*/, 33];
812
- _l = _f.value;
813
- _d = false;
814
- result = _l;
808
+ if (!(_g = _s.sent(), _k = _g.done, !_k)) return [3 /*break*/, 33];
809
+ _m = _g.value;
810
+ _e = false;
811
+ result = _m;
815
812
  sharedStringsChunk = void 0;
816
813
  if (e.data.enableSharedStrings) {
817
- currentSharedStrings = (_q = workbook.sharedStrings) !== null && _q !== void 0 ? _q : [];
814
+ currentSharedStrings = (_r = workbook.sharedStrings) !== null && _r !== void 0 ? _r : [];
818
815
  if (currentSharedStrings.length > lastSharedStringsLength) {
819
816
  sharedStringsChunk = buildSstSlice(currentSharedStrings, lastSharedStringsLength, workbook.richSharedStringRuns);
820
817
  lastSharedStringsLength = currentSharedStrings.length;
@@ -834,27 +831,27 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
834
831
  chunkIndex: result.chunkIndex,
835
832
  })];
836
833
  case 29:
837
- _r.sent();
838
- _r.label = 30;
834
+ _s.sent();
835
+ _s.label = 30;
839
836
  case 30: return [4 /*yield*/, delay()];
840
837
  case 31:
841
- _r.sent();
842
- _r.label = 32;
838
+ _s.sent();
839
+ _s.label = 32;
843
840
  case 32:
844
- _d = true;
841
+ _e = true;
845
842
  return [3 /*break*/, 27];
846
843
  case 33: return [3 /*break*/, 40];
847
844
  case 34:
848
- e_7_1 = _r.sent();
845
+ e_7_1 = _s.sent();
849
846
  e_7 = { error: e_7_1 };
850
847
  return [3 /*break*/, 40];
851
848
  case 35:
852
- _r.trys.push([35, , 38, 39]);
853
- if (!(!_d && !_j && (_k = _e.return))) return [3 /*break*/, 37];
854
- return [4 /*yield*/, _k.call(_e)];
849
+ _s.trys.push([35, , 38, 39]);
850
+ if (!(!_e && !_k && (_l = _f.return))) return [3 /*break*/, 37];
851
+ return [4 /*yield*/, _l.call(_f)];
855
852
  case 36:
856
- _r.sent();
857
- _r.label = 37;
853
+ _s.sent();
854
+ _s.label = 37;
858
855
  case 37: return [3 /*break*/, 39];
859
856
  case 38:
860
857
  if (e_7) throw e_7.error;
@@ -878,7 +875,7 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
878
875
  postProgress("drawings");
879
876
  return [4 /*yield*/, workbook.getDrawings()];
880
877
  case 41:
881
- drawings = _r.sent();
878
+ drawings = _s.sent();
882
879
  self.postMessage({
883
880
  responseType: ResponseType.GET_DRAWINGS_SUCCESS,
884
881
  drawings: drawings,
@@ -887,33 +884,33 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
887
884
  postProgress("charts");
888
885
  return [4 /*yield*/, workbook.getCharts()];
889
886
  case 42:
890
- charts = _r.sent();
887
+ charts = _s.sent();
891
888
  self.postMessage({
892
889
  responseType: ResponseType.GET_CHARTS_SUCCESS,
893
890
  charts: charts,
894
891
  });
895
892
  return [4 /*yield*/, workbook.getSlicers()];
896
893
  case 43:
897
- slicers = _r.sent();
894
+ slicers = _s.sent();
898
895
  self.postMessage({
899
896
  responseType: ResponseType.GET_SLICERS_SUCCESS,
900
897
  slicers: slicers,
901
898
  });
902
899
  // Pivot tables (Phase D1 — import path)
903
900
  postProgress("pivot-tables");
904
- _r.label = 44;
901
+ _s.label = 44;
905
902
  case 44:
906
- _r.trys.push([44, 46, , 47]);
903
+ _s.trys.push([44, 46, , 47]);
907
904
  return [4 /*yield*/, workbook.getPivotTables()];
908
905
  case 45:
909
- pivotTables = _r.sent();
906
+ pivotTables = _s.sent();
910
907
  self.postMessage({
911
908
  responseType: ResponseType.GET_PIVOT_TABLES_SUCCESS,
912
909
  pivotTables: pivotTables,
913
910
  });
914
911
  return [3 /*break*/, 47];
915
912
  case 46:
916
- e_8 = _r.sent();
913
+ e_8 = _s.sent();
917
914
  // Pivot parsing is best-effort — never block the rest of
918
915
  // the import on a single malformed pivot. Worker emits an
919
916
  // empty list so the host can clear any stale pivots.
@@ -926,7 +923,7 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
926
923
  return [3 /*break*/, 47];
927
924
  case 47: return [4 /*yield*/, workbook.getExternalLinks()];
928
925
  case 48:
929
- externalLinks = _r.sent();
926
+ externalLinks = _s.sent();
930
927
  self.postMessage({
931
928
  responseType: ResponseType.GET_EXTERNAL_LINKS_SUCCESS,
932
929
  externalLinks: externalLinks,
@@ -936,7 +933,7 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
936
933
  postProgress("comment-threads");
937
934
  return [4 /*yield*/, workbook.getCommentThreads()];
938
935
  case 49:
939
- commentThreads = _r.sent();
936
+ commentThreads = _s.sent();
940
937
  self.postMessage({
941
938
  responseType: ResponseType.GET_COMMENT_THREADS_SUCCESS,
942
939
  commentThreads: commentThreads,
@@ -947,7 +944,7 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
947
944
  });
948
945
  return [4 /*yield*/, workbook.getConditionalFormatting()];
949
946
  case 50:
950
- conditionalFormatting = _r.sent();
947
+ conditionalFormatting = _s.sent();
951
948
  self.postMessage({
952
949
  responseType: ResponseType.GET_CONDITIONAL_FORMATTING_SUCCESS,
953
950
  conditionalFormatting: conditionalFormatting,
@@ -958,7 +955,7 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
958
955
  });
959
956
  return [4 /*yield*/, workbook.getDataValidations()];
960
957
  case 51:
961
- dataValidations = _r.sent();
958
+ dataValidations = _s.sent();
962
959
  // data validations ranges
963
960
  self.postMessage({
964
961
  responseType: ResponseType.GET_DATAVALIDATION_SUCCESS,
@@ -982,15 +979,15 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
982
979
  });
983
980
  return [2 /*return*/];
984
981
  }
985
- _r.label = 53;
982
+ _s.label = 53;
986
983
  case 53:
987
- _r.trys.push([53, 55, , 56]);
984
+ _s.trys.push([53, 55, , 56]);
988
985
  return [4 /*yield*/, openSessionWorkbook(s, password_1)];
989
986
  case 54:
990
- _r.sent();
987
+ _s.sent();
991
988
  return [3 /*break*/, 56];
992
989
  case 55:
993
- error_3 = _r.sent();
990
+ error_3 = _s.sent();
994
991
  console.trace(error_3);
995
992
  self.postMessage({
996
993
  responseType: ResponseType.ERROR,
@@ -1017,37 +1014,37 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
1017
1014
  return [2 /*return*/];
1018
1015
  }
1019
1016
  if (!(currentFile instanceof File)) return [3 /*break*/, 58];
1020
- _g = currentFile;
1017
+ _h = currentFile;
1021
1018
  return [3 /*break*/, 60];
1022
1019
  case 58: return [4 /*yield*/, readExcelFile(currentFile)];
1023
1020
  case 59:
1024
- _g = _r.sent();
1025
- _r.label = 60;
1021
+ _h = _s.sent();
1022
+ _s.label = 60;
1026
1023
  case 60:
1027
- buffer = _g;
1024
+ buffer = _h;
1028
1025
  return [4 /*yield*/, isCFBFile(buffer)];
1029
1026
  case 61:
1030
- isCFB = _r.sent();
1027
+ isCFB = _s.sent();
1031
1028
  // Fresh hash state for this load attempt.
1032
1029
  resetSharedStringHashState();
1033
- _r.label = 62;
1030
+ _s.label = 62;
1034
1031
  case 62:
1035
- _r.trys.push([62, 71, , 72]);
1032
+ _s.trys.push([62, 71, , 72]);
1036
1033
  if (!isCFB) return [3 /*break*/, 68];
1037
- _r.label = 63;
1034
+ _s.label = 63;
1038
1035
  case 63:
1039
- _r.trys.push([63, 66, , 67]);
1036
+ _s.trys.push([63, 66, , 67]);
1040
1037
  return [4 /*yield*/, CFBDecryptor.decrypt(buffer, password)];
1041
1038
  case 64:
1042
- decryptedBuffer = _r.sent();
1039
+ decryptedBuffer = _s.sent();
1043
1040
  // Load the decrypted file (no password needed now)
1044
1041
  return [4 /*yield*/, workbook.load(decryptedBuffer, currentFileName)];
1045
1042
  case 65:
1046
1043
  // Load the decrypted file (no password needed now)
1047
- _r.sent();
1044
+ _s.sent();
1048
1045
  return [3 /*break*/, 67];
1049
1046
  case 66:
1050
- decryptError_2 = _r.sent();
1047
+ decryptError_2 = _s.sent();
1051
1048
  console.error("CFB decryption error:", decryptError_2);
1052
1049
  if (decryptError_2 instanceof Error && isIncorrectPasswordError(decryptError_2)) {
1053
1050
  self.postMessage({
@@ -1067,11 +1064,11 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
1067
1064
  return [4 /*yield*/, workbook.load(buffer, currentFileName, password)];
1068
1065
  case 69:
1069
1066
  // ZIP-encrypted file - pass password to workbook
1070
- _r.sent();
1071
- _r.label = 70;
1067
+ _s.sent();
1068
+ _s.label = 70;
1072
1069
  case 70: return [3 /*break*/, 72];
1073
1070
  case 71:
1074
- loadError_3 = _r.sent();
1071
+ loadError_3 = _s.sent();
1075
1072
  if (loadError_3 instanceof Error && isIncorrectPasswordError(loadError_3)) {
1076
1073
  self.postMessage({
1077
1074
  responseType: ResponseType.PASSWORD_REQUIRED,
@@ -1097,17 +1094,18 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
1097
1094
  self.postMessage({
1098
1095
  responseType: ResponseType.GET_THEME_SUCCESS,
1099
1096
  theme: workbook.getTheme(),
1097
+ namedCellStyles: workbook.getNamedCellStyles(),
1100
1098
  });
1101
- _r.label = 73;
1099
+ _s.label = 73;
1102
1100
  case 73:
1103
- _r.trys.push([73, 75, , 76]);
1101
+ _s.trys.push([73, 75, , 76]);
1104
1102
  self.postMessage({
1105
1103
  responseType: ResponseType.BEGIN_GET_SHEETS,
1106
1104
  totalSheets: workbook.getSheetCount(),
1107
1105
  });
1108
1106
  return [4 /*yield*/, workbook.getSheets(currentMinRowCount, currentMinColumnCount)];
1109
1107
  case 74:
1110
- _h = __read.apply(void 0, [_r.sent(), 2]), sheets = _h[0], tables = _h[1];
1108
+ _j = __read.apply(void 0, [_s.sent(), 2]), sheets = _j[0], tables = _j[1];
1111
1109
  self.postMessage({
1112
1110
  responseType: ResponseType.GET_SHEETS_SUCCESS,
1113
1111
  sheets: sheets,
@@ -1130,14 +1128,14 @@ self.onmessage = function (e) { return __awaiter(void 0, void 0, void 0, functio
1130
1128
  });
1131
1129
  return [3 /*break*/, 76];
1132
1130
  case 75:
1133
- err_2 = _r.sent();
1131
+ err_2 = _s.sent();
1134
1132
  console.error(err_2);
1135
1133
  return [3 /*break*/, 76];
1136
1134
  case 76: return [3 /*break*/, 78];
1137
1135
  case 77: throw new Error("Unknown action: ".concat(requestType));
1138
1136
  case 78: return [3 /*break*/, 80];
1139
1137
  case 79:
1140
- error_4 = _r.sent();
1138
+ error_4 = _s.sent();
1141
1139
  console.trace(error_4);
1142
1140
  // Send back the error
1143
1141
  self.postMessage({
@@ -1 +1 @@
1
- {"version":3,"file":"chart-builder.d.ts","sourceRoot":"","sources":["../../../../exporter/xlsx/chart-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,aAAa,EAEd,MAAM,2BAA2B,CAAC;AAovCnC,eAAO,MAAM,aAAa,GACxB,OAAO,aAAa,EACpB,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KACjC,MAAM,GAAG,SAgoBX,CAAC"}
1
+ {"version":3,"file":"chart-builder.d.ts","sourceRoot":"","sources":["../../../../exporter/xlsx/chart-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,aAAa,EAEd,MAAM,2BAA2B,CAAC;AAovCnC,eAAO,MAAM,aAAa,GACxB,OAAO,aAAa,EACpB,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KACjC,MAAM,GAAG,SA+lBX,CAAC"}
@@ -1053,7 +1053,7 @@ var buildDoughnutChart = function (domainRef, valueRef, title, subtitle) {
1053
1053
  };
1054
1054
  export var buildChartXml = function (chart, sheetNameById) {
1055
1055
  var e_3, _a, e_4, _b, e_5, _c;
1056
- var _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10;
1056
+ var _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8;
1057
1057
  var series = (_e = (_d = chart.spec) === null || _d === void 0 ? void 0 : _d.series) !== null && _e !== void 0 ? _e : [];
1058
1058
  if (!series.length)
1059
1059
  return undefined;
@@ -1093,7 +1093,7 @@ export var buildChartXml = function (chart, sheetNameById) {
1093
1093
  try {
1094
1094
  // Add chart type containers for each group
1095
1095
  for (var groups_1 = __values(groups), groups_1_1 = groups_1.next(); !groups_1_1.done; groups_1_1 = groups_1.next()) {
1096
- var _11 = __read(groups_1_1.value, 2), groupType = _11[0], groupSeries = _11[1];
1096
+ var _9 = __read(groups_1_1.value, 2), groupType = _9[0], groupSeries = _9[1];
1097
1097
  if (groupType === "bar" || groupType === "column") {
1098
1098
  var barChartNode = {
1099
1099
  "c:barDir": { a$: { val: groupType === "bar" ? "bar" : "col" } },
@@ -1104,7 +1104,7 @@ export var buildChartXml = function (chart, sheetNameById) {
1104
1104
  "c:axId": axisIds,
1105
1105
  };
1106
1106
  for (var i = 0; i < groupSeries.length; i++) {
1107
- var _12 = groupSeries[i], index = _12.index, ref = _12.ref, data = _12.data;
1107
+ var _10 = groupSeries[i], index = _10.index, ref = _10.ref, data = _10.data;
1108
1108
  var seriesNode = buildBarSeriesNode(index, ref, data, (_o = seriesCatRefs[index]) !== null && _o !== void 0 ? _o : domainRef, sheetName, i === 0);
1109
1109
  barChartNode["c:ser"].push(seriesNode);
1110
1110
  }
@@ -1120,7 +1120,7 @@ export var buildChartXml = function (chart, sheetNameById) {
1120
1120
  };
1121
1121
  try {
1122
1122
  for (var groupSeries_1 = (e_4 = void 0, __values(groupSeries)), groupSeries_1_1 = groupSeries_1.next(); !groupSeries_1_1.done; groupSeries_1_1 = groupSeries_1.next()) {
1123
- var _13 = groupSeries_1_1.value, index = _13.index, ref = _13.ref, data = _13.data;
1123
+ var _11 = groupSeries_1_1.value, index = _11.index, ref = _11.ref, data = _11.data;
1124
1124
  var seriesNode = buildLineSeriesNode(index, ref, data, (_p = seriesCatRefs[index]) !== null && _p !== void 0 ? _p : domainRef, sheetName, smooth);
1125
1125
  lineChartNode["c:ser"].push(seriesNode);
1126
1126
  }
@@ -1144,7 +1144,7 @@ export var buildChartXml = function (chart, sheetNameById) {
1144
1144
  };
1145
1145
  try {
1146
1146
  for (var groupSeries_2 = (e_5 = void 0, __values(groupSeries)), groupSeries_2_1 = groupSeries_2.next(); !groupSeries_2_1.done; groupSeries_2_1 = groupSeries_2.next()) {
1147
- var _14 = groupSeries_2_1.value, index = _14.index, ref = _14.ref, data = _14.data;
1147
+ var _12 = groupSeries_2_1.value, index = _12.index, ref = _12.ref, data = _12.data;
1148
1148
  var seriesNode = buildAreaSeriesNode(index, ref, data, (_q = seriesCatRefs[index]) !== null && _q !== void 0 ? _q : domainRef, sheetName);
1149
1149
  areaChartNode["c:ser"].push(seriesNode);
1150
1150
  }
@@ -1529,34 +1529,6 @@ export var buildChartXml = function (chart, sheetNameById) {
1529
1529
  targetChart["c:ser"] = seriesContainer_5;
1530
1530
  chartSpace["c:chartSpace"]["c:chart"] = chartDoc;
1531
1531
  }
1532
- else if (chartType === "treemap" || chartType === "sunburst") {
1533
- var treeSpec = chart.spec;
1534
- var labelRef = formatRangeRef(getPrimarySource((_9 = treeSpec.labels) === null || _9 === void 0 ? void 0 : _9[0]), sheetNameById);
1535
- var sizeRef = formatRangeRef(getPrimarySource((_10 = treeSpec.sizeData) === null || _10 === void 0 ? void 0 : _10[0]), sheetNameById);
1536
- if (!labelRef || !sizeRef)
1537
- return undefined;
1538
- if (chartType === "sunburst") {
1539
- var pieChart = buildPieChart(labelRef, sizeRef, chartTitle, chartSubtitle);
1540
- chartSpace["c:chartSpace"]["c:chart"] = pieChart;
1541
- }
1542
- else {
1543
- var columnChart = cloneTemplate(column_json);
1544
- applyChartTitle(columnChart, chartTitle, chartTitleFmt, chartSubtitle);
1545
- var bar = columnChart["c:plotArea"]["c:barChart"];
1546
- var seriesContainer = bar["c:ser"];
1547
- var seriesNode = cloneTemplate(column_series);
1548
- seriesNode["c:idx"] = { a$: { val: "0" } };
1549
- seriesNode["c:order"] = { a$: { val: "0" } };
1550
- seriesNode["c:cat"] = {
1551
- "c:strRef": {
1552
- "c:f": labelRef,
1553
- },
1554
- };
1555
- seriesNode["c:val"]["c:numRef"]["c:f"] = sizeRef;
1556
- seriesContainer.push(seriesNode);
1557
- chartSpace["c:chartSpace"]["c:chart"] = columnChart;
1558
- }
1559
- }
1560
1532
  else {
1561
1533
  return undefined;
1562
1534
  }