ooxml-core 1.16.1 → 1.18.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 (135) hide show
  1. package/dist/{PptxHandler-MK665E6Z.cjs → PptxHandler-4AHDZDA5.cjs} +3 -3
  2. package/dist/PptxHandler-5X4VOWAO.mjs +4 -0
  3. package/dist/{PptxHandler-ZF4G56V3.mjs → PptxHandler-X6AO6LKJ.mjs} +2 -2
  4. package/dist/{PresentationBuilder-J7HAJGMB.mjs → PresentationBuilder-LRX55PXA.mjs} +2 -2
  5. package/dist/{PresentationBuilder-JGYSF25G.cjs → PresentationBuilder-MJB4LIFS.cjs} +5 -5
  6. package/dist/{PresentationBuilder-HPHJTMIB.mjs → PresentationBuilder-UY3S4YE2.mjs} +2 -2
  7. package/dist/automation/index.cjs +4723 -3023
  8. package/dist/automation/index.mjs +4723 -3023
  9. package/dist/chart/data-label-text.d.ts +70 -0
  10. package/dist/chart/data-label-text.d.ts.map +1 -0
  11. package/dist/chart/formatting-nodes.d.ts +6 -0
  12. package/dist/chart/formatting-nodes.d.ts.map +1 -1
  13. package/dist/chart/index.cjs +691 -376
  14. package/dist/chart/index.d.ts +1 -0
  15. package/dist/chart/index.d.ts.map +1 -1
  16. package/dist/chart/index.mjs +688 -377
  17. package/dist/chart/read-formatting.d.ts.map +1 -1
  18. package/dist/chart/render/chart-svg-bars.d.ts.map +1 -1
  19. package/dist/chart/render/chart-svg-cartesian.d.ts.map +1 -1
  20. package/dist/chart/render/chart-svg-labels.d.ts +42 -0
  21. package/dist/chart/render/chart-svg-labels.d.ts.map +1 -0
  22. package/dist/chart/render/chart-svg-radial.d.ts.map +1 -1
  23. package/dist/chart/render/chart-svg-xy.d.ts.map +1 -1
  24. package/dist/chart/render/chart-view-labels.d.ts +16 -0
  25. package/dist/chart/render/chart-view-labels.d.ts.map +1 -0
  26. package/dist/chart/render/chart-view.d.ts +3 -0
  27. package/dist/chart/render/chart-view.d.ts.map +1 -1
  28. package/dist/chart/render/summary-from-space.d.ts +2 -2
  29. package/dist/chart/render/summary-from-space.d.ts.map +1 -1
  30. package/dist/chart/render/summary-labels.d.ts +9 -0
  31. package/dist/chart/render/summary-labels.d.ts.map +1 -0
  32. package/dist/chart/render/summary.d.ts +23 -0
  33. package/dist/chart/render/summary.d.ts.map +1 -1
  34. package/dist/{chunk-IBFHMYJD.mjs → chunk-7NWQUCGX.mjs} +1 -1
  35. package/dist/{chunk-YQ7HJOEZ.mjs → chunk-C363NN2C.mjs} +1 -1
  36. package/dist/{chunk-HMZFUT65.mjs → chunk-I5ZE3VLI.mjs} +1 -1
  37. package/dist/{chunk-MVS2PT2Q.mjs → chunk-LT7RCEHY.mjs} +1 -1
  38. package/dist/{chunk-K7Z2EDI5.cjs → chunk-NYTR4UZ5.cjs} +1 -1
  39. package/dist/{chunk-THEWZNWS.cjs → chunk-R4BCOQHB.cjs} +1007 -1007
  40. package/dist/{chunk-5ROLXCIY.mjs → chunk-U7IDT6VT.mjs} +2 -2
  41. package/dist/{chunk-TWXBU7RE.mjs → chunk-XTSHZGSM.mjs} +1 -1
  42. package/dist/{chunk-ZBCNC5RI.mjs → chunk-Z5Y53IZD.mjs} +4 -4
  43. package/dist/crypto/index.cjs +1 -1
  44. package/dist/crypto/index.mjs +1 -1
  45. package/dist/diagram/index.cjs +1 -1
  46. package/dist/diagram/index.mjs +1 -1
  47. package/dist/docx/embedded.cjs +16 -1
  48. package/dist/docx/embedded.mjs +16 -1
  49. package/dist/docx/index.cjs +1262 -657
  50. package/dist/docx/index.mjs +1262 -657
  51. package/dist/docx/layout/index.cjs +1130 -540
  52. package/dist/docx/layout/index.mjs +1130 -540
  53. package/dist/docx/load/index.cjs +16 -1
  54. package/dist/docx/load/index.mjs +16 -1
  55. package/dist/docx/ui/index.cjs +1120 -530
  56. package/dist/docx/ui/index.mjs +1120 -530
  57. package/dist/drawingml/index.cjs +1 -1
  58. package/dist/drawingml/index.mjs +1 -1
  59. package/dist/index.cjs +758 -443
  60. package/dist/index.mjs +758 -443
  61. package/dist/math/index.cjs +1 -1
  62. package/dist/math/index.mjs +1 -1
  63. package/dist/opc/index.cjs +1 -1
  64. package/dist/opc/index.mjs +1 -1
  65. package/dist/pptx/automation/index.cjs +8 -1
  66. package/dist/pptx/automation/index.mjs +5 -5
  67. package/dist/pptx/cli/index.cjs +8 -1
  68. package/dist/pptx/cli/index.mjs +4 -4
  69. package/dist/pptx/converter/index.mjs +2 -2
  70. package/dist/pptx/editor/render/find-replace.cjs +14 -14
  71. package/dist/pptx/editor/render/find-replace.mjs +1 -1
  72. package/dist/pptx/editor/render/slide-operations.cjs +8 -8
  73. package/dist/pptx/editor/render/slide-operations.mjs +2 -2
  74. package/dist/pptx/index.cjs +8 -1
  75. package/dist/pptx/index.mjs +5 -5
  76. package/dist/teams/index.cjs +155 -53
  77. package/dist/teams/index.mjs +155 -53
  78. package/dist/visio/edit-chart-object-commands.d.ts +36 -0
  79. package/dist/visio/edit-chart-object-commands.d.ts.map +1 -0
  80. package/dist/visio/edit-chart-object.d.ts +7 -0
  81. package/dist/visio/edit-chart-object.d.ts.map +1 -0
  82. package/dist/visio/edit-commands.d.ts +2 -1
  83. package/dist/visio/edit-commands.d.ts.map +1 -1
  84. package/dist/visio/edit-foreign-frame.d.ts +8 -0
  85. package/dist/visio/edit-foreign-frame.d.ts.map +1 -0
  86. package/dist/visio/edit-metadata-commands.d.ts +7 -0
  87. package/dist/visio/edit-metadata-commands.d.ts.map +1 -1
  88. package/dist/visio/edit-picture.d.ts +8 -0
  89. package/dist/visio/edit-picture.d.ts.map +1 -1
  90. package/dist/visio/edit.d.ts.map +1 -1
  91. package/dist/visio/emf-bitmap.d.ts +8 -0
  92. package/dist/visio/emf-bitmap.d.ts.map +1 -0
  93. package/dist/visio/index.cjs +17094 -6137
  94. package/dist/visio/index.d.ts +2 -0
  95. package/dist/visio/index.d.ts.map +1 -1
  96. package/dist/visio/index.mjs +17092 -6138
  97. package/dist/visio/model.d.ts +18 -0
  98. package/dist/visio/model.d.ts.map +1 -1
  99. package/dist/visio/prepare-embedded.d.ts +10 -0
  100. package/dist/visio/prepare-embedded.d.ts.map +1 -0
  101. package/dist/visio/prepare-images.d.ts.map +1 -1
  102. package/dist/visio/shapes.d.ts.map +1 -1
  103. package/dist/visio/sheet.d.ts +2 -1
  104. package/dist/visio/sheet.d.ts.map +1 -1
  105. package/dist/visio/ui/document-history.d.ts +6 -1
  106. package/dist/visio/ui/document-history.d.ts.map +1 -1
  107. package/dist/visio/ui/edit-commands.d.ts.map +1 -1
  108. package/dist/visio/ui/index.cjs +33327 -22867
  109. package/dist/visio/ui/index.mjs +33324 -22867
  110. package/dist/visio/ui/insert.d.ts +11 -0
  111. package/dist/visio/ui/insert.d.ts.map +1 -1
  112. package/dist/xlsx/edit/context.d.ts.map +1 -1
  113. package/dist/xlsx/index.cjs +1188 -571
  114. package/dist/xlsx/index.mjs +1188 -571
  115. package/dist/xlsx/load/index.cjs +146 -54
  116. package/dist/xlsx/load/index.mjs +146 -54
  117. package/dist/xlsx/model.d.ts +5 -0
  118. package/dist/xlsx/model.d.ts.map +1 -1
  119. package/dist/xlsx/read/load.d.ts.map +1 -1
  120. package/dist/xlsx/read/workbook-part.d.ts +2 -0
  121. package/dist/xlsx/read/workbook-part.d.ts.map +1 -1
  122. package/dist/xlsx/ui/dialogs/grid-chart.d.ts +46 -0
  123. package/dist/xlsx/ui/dialogs/grid-chart.d.ts.map +1 -0
  124. package/dist/xlsx/ui/index.cjs +28335 -12121
  125. package/dist/xlsx/ui/index.d.ts +1 -0
  126. package/dist/xlsx/ui/index.d.ts.map +1 -1
  127. package/dist/xlsx/ui/index.mjs +28317 -12118
  128. package/dist/xlsx/write/workbook-part.d.ts.map +1 -1
  129. package/dist/xml/index.cjs +1 -1
  130. package/dist/xml/index.mjs +1 -1
  131. package/dist/xml/xml.d.ts.map +1 -1
  132. package/package.json +1 -1
  133. package/dist/PptxHandler-7RNEJ2IO.mjs +0 -4
  134. package/dist/visio/edit-foreign-bitmap.d.ts +0 -7
  135. package/dist/visio/edit-foreign-bitmap.d.ts.map +0 -1
@@ -330,8 +330,8 @@ function parseXml(xml, options = {}) {
330
330
  let parsed;
331
331
  try {
332
332
  parsed = new xmldom.DOMParser({
333
- onError: (level, message) => {
334
- if (level !== "warning") parseError = message;
333
+ onError: (level2, message) => {
334
+ if (level2 !== "warning") parseError = message;
335
335
  }
336
336
  }).parseFromString(xml, "application/xml");
337
337
  } catch (error) {
@@ -359,7 +359,7 @@ var init_xml = __esm({
359
359
  maxDepth: 512,
360
360
  maxNodes: 5e6
361
361
  };
362
- TAG_RE = /<(\/?)([^\s\/>]+)(?:\s+[^\s=\/>]+\s*=\s*(?:"[^"]*"|'[^']*'))*\s*(\/?)>/y;
362
+ TAG_RE = /<(\/?)([^\s\/><]+)(?:\s+[^\s=\/><]+\s*=\s*(?:"[^"<]*"|'[^'<]*'))*\s*(\/?)>/y;
363
363
  MARKUP_SKIPS = [
364
364
  ["<!--", "-->"],
365
365
  ["<![CDATA[", "]]>"],
@@ -1455,6 +1455,19 @@ var init_bar_cluster_geometry = __esm({
1455
1455
  });
1456
1456
 
1457
1457
  // chart/formatting-nodes.ts
1458
+ function chartDataLabelNode(root) {
1459
+ const plot2 = first(first(root, "chart", NS.c), "plotArea", NS.c);
1460
+ const groups = plot2 ? elements(plot2).filter((node2) => node2.localName.endsWith("Chart")) : [];
1461
+ const candidates = groups.flatMap((group) => [
1462
+ ...children(group, "ser", NS.c).map((ser) => first(ser, "dLbls", NS.c)),
1463
+ first(group, "dLbls", NS.c)
1464
+ ]);
1465
+ return candidates.find(
1466
+ (node2) => node2 !== void 0 && (first(node2, "txPr", NS.c) !== void 0 || elements(node2).some(
1467
+ (child3) => child3.localName.startsWith("show") && child3.getAttribute("val") === "1"
1468
+ ))
1469
+ );
1470
+ }
1458
1471
  function chartFormattingNodes(root) {
1459
1472
  const chart = first(root, "chart", NS.c);
1460
1473
  const plot2 = first(chart, "plotArea", NS.c);
@@ -1871,6 +1884,8 @@ function readChartFormatting(root) {
1871
1884
  const entries = Object.fromEntries(
1872
1885
  Object.entries(nodes).flatMap(([name2, node2]) => node2 ? [[name2, entry(node2)]] : [])
1873
1886
  );
1887
+ const labels = chartDataLabelNode(root);
1888
+ if (labels) entries["dataLabel"] = entry(labels);
1874
1889
  const builtInStyle = readBuiltInChartStyle(root);
1875
1890
  const textBody = c(root, "txPr");
1876
1891
  const textDefaults = textBody ? {
@@ -2642,7 +2657,7 @@ function dataSourceInner(source2) {
2642
2657
  case "multiLvlStrRef": {
2643
2658
  const levels = source2.levels ? elementXml(
2644
2659
  "multiLvlStrCache",
2645
- valXml("ptCount", source2.levelPointCount) + source2.levels.map((level) => elementXml("lvl", cachePoints(level))).join("")
2660
+ valXml("ptCount", source2.levelPointCount) + source2.levels.map((level2) => elementXml("lvl", cachePoints(level2))).join("")
2646
2661
  ) : "";
2647
2662
  return `<c:multiLvlStrRef>${formula}${levels}</c:multiLvlStrRef>`;
2648
2663
  }
@@ -4705,8 +4720,78 @@ var init_summary_analysis = __esm({
4705
4720
  }
4706
4721
  });
4707
4722
 
4723
+ // chart/data-label-text.ts
4724
+ function resolveDataLabelFlags(levels) {
4725
+ const { point, series, chart } = levels;
4726
+ const picked = {};
4727
+ for (const key of FLAG_KEYS) picked[key] = point?.[key] ?? series?.[key] ?? chart?.[key];
4728
+ const anyDeclared = FLAG_KEYS.some((key) => picked[key] !== void 0);
4729
+ return {
4730
+ showValue: anyDeclared ? picked.showValue === true : levels.siblingOwnsLabels !== true,
4731
+ showCategory: picked.showCategory === true,
4732
+ showSeriesName: picked.showSeriesName === true,
4733
+ showPercent: picked.showPercent === true,
4734
+ showBubbleSize: picked.showBubbleSize === true,
4735
+ separator: point?.separator ?? series?.separator ?? chart?.separator ?? (picked.showCategory === true && picked.showPercent === true ? DATA_LABEL_CATEGORY_PERCENT_SEPARATOR : DATA_LABEL_SEPARATOR)
4736
+ };
4737
+ }
4738
+ var DATA_LABEL_SEPARATOR, DATA_LABEL_CATEGORY_PERCENT_SEPARATOR, FLAG_KEYS;
4739
+ var init_data_label_text = __esm({
4740
+ "chart/data-label-text.ts"() {
4741
+ DATA_LABEL_SEPARATOR = ", ";
4742
+ DATA_LABEL_CATEGORY_PERCENT_SEPARATOR = "\n";
4743
+ FLAG_KEYS = [
4744
+ "showValue",
4745
+ "showCategory",
4746
+ "showSeriesName",
4747
+ "showPercent",
4748
+ "showBubbleSize"
4749
+ ];
4750
+ }
4751
+ });
4752
+
4753
+ // chart/render/summary-labels.ts
4754
+ function level(options, custom) {
4755
+ const out = {};
4756
+ if (options.deleted !== void 0) out.deleted = options.deleted;
4757
+ if (options.showValue !== void 0) out.showValue = options.showValue;
4758
+ if (options.showCategoryName !== void 0) out.showCategory = options.showCategoryName;
4759
+ if (options.showSeriesName !== void 0) out.showSeriesName = options.showSeriesName;
4760
+ if (options.showPercent !== void 0) out.showPercent = options.showPercent;
4761
+ if (options.showBubbleSize !== void 0) out.showBubbleSize = options.showBubbleSize;
4762
+ if (options.separator !== void 0) out.separator = options.separator;
4763
+ if (options.position) out.position = options.position;
4764
+ if (options.numberFormat?.formatCode) out.numberFormat = options.numberFormat.formatCode;
4765
+ if (custom?.text !== void 0) out.text = custom.text;
4766
+ return out;
4767
+ }
4768
+ function shows(levels, point) {
4769
+ const flags = resolveDataLabelFlags({ ...levels, ...point ? { point } : {} });
4770
+ return point?.text !== void 0 || Object.values(flags).some((value) => value === true);
4771
+ }
4772
+ function summaryDataLabels(series, group) {
4773
+ const own = series.dataLabels;
4774
+ if (!own && !group) return void 0;
4775
+ const out = {};
4776
+ if (group) out.chart = level(group);
4777
+ if (own) out.series = level(own);
4778
+ const points = {};
4779
+ for (const labels of [group, own])
4780
+ for (const label2 of labels?.labels ?? [])
4781
+ if (label2.index !== void 0)
4782
+ points[label2.index] = { ...points[label2.index], ...level(label2, label2.tx) };
4783
+ if (Object.keys(points).length) out.points = points;
4784
+ if (!shows(out) && !Object.values(points).some((point) => shows(out, point))) return void 0;
4785
+ return out;
4786
+ }
4787
+ var init_summary_labels = __esm({
4788
+ "chart/render/summary-labels.ts"() {
4789
+ init_data_label_text();
4790
+ }
4791
+ });
4792
+
4708
4793
  // chart/render/summary-from-space.ts
4709
- function chartSummarySeries(source2, chartType) {
4794
+ function chartSummarySeries(source2, chartType, groupLabels) {
4710
4795
  const categories = source2.categories ?? source2.xValues;
4711
4796
  const values2 = source2.values ?? source2.yValues;
4712
4797
  const numeric2 = (v) => typeof v === "number" ? v : v === "" ? null : Number.isFinite(Number(v)) ? Number(v) : null;
@@ -4714,6 +4799,7 @@ function chartSummarySeries(source2, chartType) {
4714
4799
  categories: chartSourceValues(categories),
4715
4800
  values: chartSourceValues(values2).map(numeric2)
4716
4801
  };
4802
+ if (values2?.cache?.formatCode !== void 0) out.numberFormat = values2.cache.formatCode;
4717
4803
  if (source2.bubbleSizes) {
4718
4804
  out.bubbleSizes = chartSourceValues(source2.bubbleSizes).map(numeric2);
4719
4805
  if (source2.bubbleSizes.formula) out.bubbleSizesRef = source2.bubbleSizes.formula;
@@ -4742,6 +4828,8 @@ function chartSummarySeries(source2, chartType) {
4742
4828
  }
4743
4829
  if (Object.keys(points).length) out.pointColors = points;
4744
4830
  if (Object.keys(pointFills).length) out.pointFills = pointFills;
4831
+ const dataLabels = summaryDataLabels(source2, groupLabels);
4832
+ if (dataLabels) out.dataLabels = dataLabels;
4745
4833
  Object.assign(out, summaryAnalysis(source2));
4746
4834
  return out;
4747
4835
  }
@@ -4769,7 +4857,7 @@ function extraGroups(chartSpace, firstType) {
4769
4857
  const type = group.kind === "bar" ? "column" : group.kind;
4770
4858
  const entry3 = {
4771
4859
  chartType: type,
4772
- series: group.series.map((source2) => chartSummarySeries(source2, type)),
4860
+ series: group.series.map((source2) => chartSummarySeries(source2, type, group.dataLabels)),
4773
4861
  secondary: valueAxisId(chartSpace, group.axisIds) !== primary
4774
4862
  };
4775
4863
  if (group.grouping && GROUPINGS.has(group.grouping))
@@ -4787,7 +4875,9 @@ function chartSummaryFromSpace(chartSpace, extras = {}) {
4787
4875
  const group = chartSpace.plotArea.groups[0];
4788
4876
  let chartType = group ? GROUP_TYPES[group.kind] : "column";
4789
4877
  if (chartType === "bar" && group?.barDirection !== "bar") chartType = "column";
4790
- const series = (group?.series ?? []).map((source2) => chartSummarySeries(source2, chartType));
4878
+ const series = (group?.series ?? []).map(
4879
+ (source2) => chartSummarySeries(source2, chartType, group?.dataLabels)
4880
+ );
4791
4881
  const summary = {
4792
4882
  chartType,
4793
4883
  series,
@@ -4835,6 +4925,7 @@ var init_summary_from_space = __esm({
4835
4925
  "chart/render/summary-from-space.ts"() {
4836
4926
  init_data_cache();
4837
4927
  init_summary_analysis();
4928
+ init_summary_labels();
4838
4929
  solidColor = (fill) => fill?.kind === "solid" ? fill.color : void 0;
4839
4930
  isSolidFill = (fill) => fill?.kind === "solid" || fill?.kind === "unsupported" && fill.element === "solidFill";
4840
4931
  GROUP_TYPES = {
@@ -6148,7 +6239,9 @@ function parseWorkbookPart(xml) {
6148
6239
  count: numAttr(calcPr, "iterateCount") ?? 100,
6149
6240
  delta: numAttr(calcPr, "iterateDelta") ?? 1e-3
6150
6241
  } : void 0;
6242
+ const oleSize = att(xFirst(root, "oleSize"), "ref");
6151
6243
  return {
6244
+ ...oleSize ? { oleSize } : {},
6152
6245
  ...iterate ? { iterate } : {},
6153
6246
  ...password ? { workbookPasswordHash: password } : {},
6154
6247
  ...modernHash ? { workbookModernHash: modernHash } : {},
@@ -17330,18 +17423,18 @@ function pivotColumnEntries(pivot) {
17330
17423
  const root = { children: /* @__PURE__ */ new Map() };
17331
17424
  for (const record of pivot.records) {
17332
17425
  let current = root;
17333
- indices.forEach((field, level) => {
17426
+ indices.forEach((field, level2) => {
17334
17427
  const value = record[field] ?? null;
17335
17428
  const key = pivotValueKey(value);
17336
17429
  let child3 = current.children.get(key);
17337
17430
  if (!child3) {
17338
- child3 = { index: order[level].get(key), value, children: /* @__PURE__ */ new Map() };
17431
+ child3 = { index: order[level2].get(key), value, children: /* @__PURE__ */ new Map() };
17339
17432
  current.children.set(key, child3);
17340
17433
  }
17341
17434
  current = child3;
17342
17435
  });
17343
17436
  }
17344
- const visit = (node2, level, path2, values2, keys) => {
17437
+ const visit = (node2, level2, path2, values2, keys) => {
17345
17438
  for (const child3 of [...node2.children.entries()].sort((a2, b) => a2[1].index - b[1].index)) {
17346
17439
  const here = {
17347
17440
  path: [...path2, child3[1].index],
@@ -17353,10 +17446,10 @@ function pivotColumnEntries(pivot) {
17353
17446
  key: columnKey(here.keys, here.keys.length),
17354
17447
  values: here.values
17355
17448
  };
17356
- if (level === names2.length - 1) entries.push({ kind: "leaf", ...entry3 });
17449
+ if (level2 === names2.length - 1) entries.push({ kind: "leaf", ...entry3 });
17357
17450
  else {
17358
- visit(child3[1], level + 1, here.path, here.values, here.keys);
17359
- const own = functions[level];
17451
+ visit(child3[1], level2 + 1, here.path, here.values, here.keys);
17452
+ const own = functions[level2];
17360
17453
  if (own === "auto") entries.push({ kind: "subtotal", ...entry3 });
17361
17454
  else for (const fn of own) entries.push({ kind: "subtotal", ...entry3, fn });
17362
17455
  }
@@ -17402,9 +17495,9 @@ function pivotColumnHeaders(pivot, columns, rowLabels, valuesOnRows = false) {
17402
17495
  columns.entries.forEach((entry3, j) => {
17403
17496
  const at = labelColumns + j * count2;
17404
17497
  if (entry3.kind === "leaf") {
17405
- entry3.path.forEach((_index, level) => {
17406
- const continued = entry3.path.slice(0, level + 1).every((p, i) => p === previous[i]);
17407
- if (!continued) grid[1 + level][at] = labelOf(columns.names[level], entry3.values[level]);
17498
+ entry3.path.forEach((_index, level2) => {
17499
+ const continued = entry3.path.slice(0, level2 + 1).every((p, i) => p === previous[i]);
17500
+ if (!continued) grid[1 + level2][at] = labelOf(columns.names[level2], entry3.values[level2]);
17408
17501
  });
17409
17502
  previous = entry3.path;
17410
17503
  if (count2 > 1) measures.forEach((measure, m) => grid[rows - 1][at + m] = measure.caption);
@@ -17434,7 +17527,7 @@ function pivotColumnItemsXml(entries, measures, remap) {
17434
17527
  previous = [];
17435
17528
  continue;
17436
17529
  }
17437
- const group = entry3.path.map((index2, level) => remap(level, index2));
17530
+ const group = entry3.path.map((index2, level2) => remap(level2, index2));
17438
17531
  const path2 = entry3.kind === "leaf" && measures > 1 ? [...group, m] : group;
17439
17532
  const prefix = sharedPrefix(path2, previous);
17440
17533
  const xs = path2.slice(prefix).map((index2) => `<x${attrs({ v: index2 || void 0 })}/>`);
@@ -17467,7 +17560,7 @@ function nestedPivotGrid(pivot) {
17467
17560
  const valuesAt = pivotValuesIndex(pivot);
17468
17561
  const onRows = valuesAt >= 0;
17469
17562
  const levels = depth + (onRows ? 1 : 0);
17470
- const fieldOf = (level) => !onRows || level < valuesAt ? level : level === valuesAt ? -1 : level - 1;
17563
+ const fieldOf = (level2) => !onRows || level2 < valuesAt ? level2 : level2 === valuesAt ? -1 : level2 - 1;
17471
17564
  const axisItems = names2.map((name2) => pivotItems(pivot, name2));
17472
17565
  const itemIndices = axisItems.map(
17473
17566
  (items) => new Map(items.map((item, index2) => [pivotValueKey(item), index2]))
@@ -17527,13 +17620,13 @@ function nestedPivotGrid(pivot) {
17527
17620
  (one2) => fn ? aggregateValues(records, pivot.fields.indexOf(one2.field), fn) : pivotMeasureNumber(pivot, records, one2)
17528
17621
  );
17529
17622
  });
17530
- const labelCells = (path2, shown, level, text2) => {
17623
+ const labelCells = (path2, shown, level2, text2) => {
17531
17624
  if (compact) return [text2];
17532
17625
  const row2 = Array(levels).fill(null);
17533
17626
  path2.labels.forEach((value, at) => {
17534
17627
  if (shown[at]) row2[at] = value;
17535
17628
  });
17536
- row2[level] = text2;
17629
+ row2[level2] = text2;
17537
17630
  return row2;
17538
17631
  };
17539
17632
  const push = (indent, build2) => {
@@ -17552,11 +17645,11 @@ function nestedPivotGrid(pivot) {
17552
17645
  ...measure !== void 0 ? { measure } : {},
17553
17646
  ...type ? { type } : {}
17554
17647
  });
17555
- const walk = (level, group, measure, path2) => {
17556
- const field = fieldOf(level);
17557
- const last = level === levels - 1;
17648
+ const walk = (level2, group, measure, path2) => {
17649
+ const field = fieldOf(level2);
17650
+ const last = level2 === levels - 1;
17558
17651
  const repeated = Array.from(
17559
- { length: level },
17652
+ { length: level2 },
17560
17653
  (_v, k) => !!pivot.repeatLabels && fieldOf(k) >= 0
17561
17654
  );
17562
17655
  const leafShown = (firsts) => repeated.map((repeat, k) => repeat || tabular && firsts.slice(k + 1).every(Boolean));
@@ -17568,23 +17661,23 @@ function nestedPivotGrid(pivot) {
17568
17661
  firsts: [...path2.firsts, m === 0]
17569
17662
  };
17570
17663
  if (last)
17571
- return push(level, () => [
17572
- labelCells(path2, leafShown(here.firsts), level, one2.caption),
17664
+ return push(level2, () => [
17665
+ labelCells(path2, leafShown(here.firsts), level2, one2.caption),
17573
17666
  cells2(group, void 0, m),
17574
17667
  entryOf(here.indices, m)
17575
17668
  ]);
17576
17669
  if (!tabular)
17577
- push(level, () => [
17578
- labelCells(path2, repeated, level, one2.caption),
17670
+ push(level2, () => [
17671
+ labelCells(path2, repeated, level2, one2.caption),
17579
17672
  blanks(),
17580
17673
  entryOf(here.indices, m)
17581
17674
  ]);
17582
- walk(level + 1, group, m, here);
17675
+ walk(level2 + 1, group, m, here);
17583
17676
  });
17584
17677
  return;
17585
17678
  }
17586
17679
  const own = functions[field];
17587
- const valuesAbove = !onRows || valuesAt < level;
17680
+ const valuesAbove = !onRows || valuesAt < level2;
17588
17681
  const showsValue = above && own === "auto" && valuesAbove;
17589
17682
  const children2 = [...group.children.values()].sort((a2, b) => a2.index - b.index);
17590
17683
  children2.forEach((child3, position) => {
@@ -17595,22 +17688,22 @@ function nestedPivotGrid(pivot) {
17595
17688
  };
17596
17689
  const text2 = labelOf(names2[field], child3.value);
17597
17690
  if (last)
17598
- return push(level, () => [
17599
- labelCells(path2, leafShown(here.firsts), level, text2),
17691
+ return push(level2, () => [
17692
+ labelCells(path2, leafShown(here.firsts), level2, text2),
17600
17693
  cells2(child3, void 0, measure),
17601
17694
  entryOf(here.indices, measure)
17602
17695
  ]);
17603
17696
  if (!tabular)
17604
- push(level, () => [
17605
- labelCells(path2, repeated, level, text2),
17697
+ push(level2, () => [
17698
+ labelCells(path2, repeated, level2, text2),
17606
17699
  showsValue ? cells2(child3, void 0, measure) : blanks(),
17607
17700
  entryOf(here.indices, measure)
17608
17701
  ]);
17609
- walk(level + 1, child3, measure, here);
17702
+ walk(level2 + 1, child3, measure, here);
17610
17703
  if (field === depth - 1) return;
17611
17704
  const caption = String(text2);
17612
- const subtotal = (title, fn, one2) => push(level, () => [
17613
- labelCells(path2, repeated, level, title),
17705
+ const subtotal = (title, fn, one2) => push(level2, () => [
17706
+ labelCells(path2, repeated, level2, title),
17614
17707
  cells2(child3, fn, one2),
17615
17708
  entryOf(here.indices, one2, fn ?? "default")
17616
17709
  ]);
@@ -19974,7 +20067,10 @@ function workbookXml(workbook, sheets, activeTab, sourceXml, pivotCachesXml) {
19974
20067
  const iterate = workbook.iterate ? ` iterate="1" iterateCount="${workbook.iterate.count}" iterateDelta="${workbook.iterate.delta}"` : "";
19975
20068
  const owned = ["fullCalcOnLoad", "calcId", "calcMode", "iterate", "iterateCount", "iterateDelta"];
19976
20069
  out += `<calcPr${copyAttrs(calc, owned)} calcId="191029"${mode}${iterate} fullCalcOnLoad="1"/>`;
19977
- out += pivotCachesXml === void 0 ? raw2(KEPT_TAIL) : raw2(KEPT_TAIL.slice(0, 2)) + pivotCachesXml + raw2(KEPT_TAIL.slice(3));
20070
+ const tailOf = (names3) => names3.map(
20071
+ (name2) => name2 === "oleSize" && workbook.oleSize ? `<oleSize ref="${escapeAttr3(workbook.oleSize)}"/>` : raw2([name2])
20072
+ ).join("");
20073
+ out += pivotCachesXml === void 0 ? tailOf(KEPT_TAIL) : tailOf(KEPT_TAIL.slice(0, 2)) + pivotCachesXml + tailOf(KEPT_TAIL.slice(3));
19978
20074
  return `${out}</workbook>`;
19979
20075
  }
19980
20076
  var KEPT_BEFORE_SHEETS, KEPT_AFTER_SHEETS, KEPT_TAIL, copyAttrs;
@@ -20529,9 +20625,9 @@ function dimension2(data, kind, type) {
20529
20625
  const out = { points: [] };
20530
20626
  const formula = text(cx(element2, "f"));
20531
20627
  if (formula) out.formula = formula;
20532
- const level = cx(element2, "lvl");
20533
- const count2 = Number(level?.getAttribute("ptCount") ?? 0);
20534
- for (const point of level ? children(level, "pt", NS.cx) : []) {
20628
+ const level2 = cx(element2, "lvl");
20629
+ const count2 = Number(level2?.getAttribute("ptCount") ?? 0);
20630
+ for (const point of level2 ? children(level2, "pt", NS.cx) : []) {
20535
20631
  const index2 = Number(point.getAttribute("idx") ?? out.points.length);
20536
20632
  if (Number.isInteger(index2) && index2 >= 0) out.points[index2] = text(point);
20537
20633
  }
@@ -20540,10 +20636,10 @@ function dimension2(data, kind, type) {
20540
20636
  }
20541
20637
  function categoryLevels(data) {
20542
20638
  const element2 = data ? children(data, "strDim", NS.cx).find((d) => (d.getAttribute("type") ?? "") === "cat") : void 0;
20543
- return (element2 ? children(element2, "lvl", NS.cx) : []).map((level) => {
20639
+ return (element2 ? children(element2, "lvl", NS.cx) : []).map((level2) => {
20544
20640
  const points = [];
20545
- const count2 = Number(level.getAttribute("ptCount") ?? 0);
20546
- for (const point of children(level, "pt", NS.cx)) {
20641
+ const count2 = Number(level2.getAttribute("ptCount") ?? 0);
20642
+ for (const point of children(level2, "pt", NS.cx)) {
20547
20643
  const index2 = Number(point.getAttribute("idx") ?? points.length);
20548
20644
  if (Number.isInteger(index2) && index2 >= 0) points[index2] = text(point);
20549
20645
  }
@@ -22932,7 +23028,7 @@ function pivotTableXml(source2, cacheId, cache3) {
22932
23028
  let body = `<location${attrs({ ref: formatRange({ ...pivot.location, start: { ...pivot.location.start, row: pivot.location.start.row + pageOffset } }), firstHeaderRow: header, firstDataRow: grid.firstDataRow - pageOffset, rowPageCount: page >= 0 ? 1 : void 0, colPageCount: page >= 0 ? 1 : void 0, firstDataCol: grid.rowLabelColumns ?? 1 })}/><pivotFields count="${pivot.fields.length}">${fields}</pivotFields><rowFields count="${rowIndices.length}">${rowIndices.map((index2) => `<field x="${index2}"/>`).join("")}</rowFields><rowItems count="${grid.rowEntries?.length ?? grid.rowItems.length + 1}">${rowItems}</rowItems>`;
22933
23029
  if (col >= 0 && grid.columnEntries) {
22934
23030
  const fieldsOnColumns = [...columnIdx, ...multiple && !rowsAxis ? [-2] : []];
22935
- body += `<colFields count="${fieldsOnColumns.length}">${fieldsOnColumns.map((index2) => `<field x="${index2}"/>`).join("")}</colFields>${pivotColumnItemsXml(grid.columnEntries, rowsAxis ? 1 : measures.length, (level, index2) => columnIndicesFull[level][index2])}`;
23031
+ body += `<colFields count="${fieldsOnColumns.length}">${fieldsOnColumns.map((index2) => `<field x="${index2}"/>`).join("")}</colFields>${pivotColumnItemsXml(grid.columnEntries, rowsAxis ? 1 : measures.length, (level2, index2) => columnIndicesFull[level2][index2])}`;
22936
23032
  } else if (multiple && !rowsAxis)
22937
23033
  body += `<colFields count="1"><field x="-2"/></colFields>${pivotValueAxisItems(measures.length)}`;
22938
23034
  else body += '<colItems count="1"><i/></colItems>';
@@ -23019,11 +23115,17 @@ function pivotTableXml(source2, cacheId, cache3) {
23019
23115
  }
23020
23116
  return XML_HEADER + buildXml(root);
23021
23117
  }
23118
+ function firstFilterTag(xml) {
23119
+ for (let at = xml.indexOf("<filter"); at !== -1; at = xml.indexOf("<filter", at + 1)) {
23120
+ if (!/\s/.test(xml.charAt(at + 7))) continue;
23121
+ const end = xml.indexOf(">", at);
23122
+ return end === -1 ? "" : xml.slice(at, end + 1);
23123
+ }
23124
+ return "";
23125
+ }
23022
23126
  function dateFilterXml(pivot, filter2) {
23023
23127
  const x15 = "http://schemas.microsoft.com/office/spreadsheetml/2010/11/main";
23024
- const id = Number(
23025
- /\bid="(\d+)"/.exec(/<filter\s[^>]*>/.exec(pivot.sourceXml ?? "")?.[0] ?? "")?.[1] ?? 1
23026
- );
23128
+ const id = Number(/\bid="(\d+)"/.exec(firstFilterTag(pivot.sourceXml ?? ""))?.[1] ?? 1);
23027
23129
  return `<filters count="1"><filter${attrs({ fld: pivot.fields.indexOf(filter2.field), type: "dateBetween", evalOrder: -1, id, name: filter2.field })}><autoFilter ref="A1"><filterColumn colId="0"><customFilters and="1"><customFilter operator="greaterThanOrEqual" val="${Math.floor(filter2.start)}"/><customFilter operator="lessThanOrEqual" val="${Math.floor(filter2.end)}"/></customFilters></filterColumn></autoFilter><extLst><ext uri="{0605FD5F-26C8-4aeb-8148-2DB25E43C511}" xmlns:x15="${x15}"><x15:pivotFilter useWholeDay="1"/></ext></extLst></filter></filters>`;
23028
23130
  }
23029
23131
  var X14;
@@ -26866,9 +26968,9 @@ function createNotificationSettings(storage, key) {
26866
26968
  const raw2 = storage?.getItem(key);
26867
26969
  const stored = raw2 && raw2.length <= 1024 ? JSON.parse(raw2) : null;
26868
26970
  if (stored && typeof stored === "object") {
26869
- const { level, sound } = stored;
26971
+ const { level: level2, sound } = stored;
26870
26972
  settings = {
26871
- level: isNotificationLevel(level) ? level : settings.level,
26973
+ level: isNotificationLevel(level2) ? level2 : settings.level,
26872
26974
  sound: typeof sound === "boolean" ? sound : settings.sound
26873
26975
  };
26874
26976
  }
@@ -26877,10 +26979,10 @@ function createNotificationSettings(storage, key) {
26877
26979
  return {
26878
26980
  get: () => ({ ...settings }),
26879
26981
  set(next) {
26880
- const level = isNotificationLevel(next.level) ? next.level : settings.level;
26982
+ const level2 = isNotificationLevel(next.level) ? next.level : settings.level;
26881
26983
  const sound = typeof next.sound === "boolean" ? next.sound : settings.sound;
26882
- if (level === settings.level && sound === settings.sound) return false;
26883
- settings = { level, sound };
26984
+ if (level2 === settings.level && sound === settings.sound) return false;
26985
+ settings = { level: level2, sound };
26884
26986
  try {
26885
26987
  storage?.setItem(key, JSON.stringify(settings));
26886
26988
  } catch {