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.
- package/dist/{PptxHandler-MK665E6Z.cjs → PptxHandler-4AHDZDA5.cjs} +3 -3
- package/dist/PptxHandler-5X4VOWAO.mjs +4 -0
- package/dist/{PptxHandler-ZF4G56V3.mjs → PptxHandler-X6AO6LKJ.mjs} +2 -2
- package/dist/{PresentationBuilder-J7HAJGMB.mjs → PresentationBuilder-LRX55PXA.mjs} +2 -2
- package/dist/{PresentationBuilder-JGYSF25G.cjs → PresentationBuilder-MJB4LIFS.cjs} +5 -5
- package/dist/{PresentationBuilder-HPHJTMIB.mjs → PresentationBuilder-UY3S4YE2.mjs} +2 -2
- package/dist/automation/index.cjs +4723 -3023
- package/dist/automation/index.mjs +4723 -3023
- package/dist/chart/data-label-text.d.ts +70 -0
- package/dist/chart/data-label-text.d.ts.map +1 -0
- package/dist/chart/formatting-nodes.d.ts +6 -0
- package/dist/chart/formatting-nodes.d.ts.map +1 -1
- package/dist/chart/index.cjs +691 -376
- package/dist/chart/index.d.ts +1 -0
- package/dist/chart/index.d.ts.map +1 -1
- package/dist/chart/index.mjs +688 -377
- package/dist/chart/read-formatting.d.ts.map +1 -1
- package/dist/chart/render/chart-svg-bars.d.ts.map +1 -1
- package/dist/chart/render/chart-svg-cartesian.d.ts.map +1 -1
- package/dist/chart/render/chart-svg-labels.d.ts +42 -0
- package/dist/chart/render/chart-svg-labels.d.ts.map +1 -0
- package/dist/chart/render/chart-svg-radial.d.ts.map +1 -1
- package/dist/chart/render/chart-svg-xy.d.ts.map +1 -1
- package/dist/chart/render/chart-view-labels.d.ts +16 -0
- package/dist/chart/render/chart-view-labels.d.ts.map +1 -0
- package/dist/chart/render/chart-view.d.ts +3 -0
- package/dist/chart/render/chart-view.d.ts.map +1 -1
- package/dist/chart/render/summary-from-space.d.ts +2 -2
- package/dist/chart/render/summary-from-space.d.ts.map +1 -1
- package/dist/chart/render/summary-labels.d.ts +9 -0
- package/dist/chart/render/summary-labels.d.ts.map +1 -0
- package/dist/chart/render/summary.d.ts +23 -0
- package/dist/chart/render/summary.d.ts.map +1 -1
- package/dist/{chunk-IBFHMYJD.mjs → chunk-7NWQUCGX.mjs} +1 -1
- package/dist/{chunk-YQ7HJOEZ.mjs → chunk-C363NN2C.mjs} +1 -1
- package/dist/{chunk-HMZFUT65.mjs → chunk-I5ZE3VLI.mjs} +1 -1
- package/dist/{chunk-MVS2PT2Q.mjs → chunk-LT7RCEHY.mjs} +1 -1
- package/dist/{chunk-K7Z2EDI5.cjs → chunk-NYTR4UZ5.cjs} +1 -1
- package/dist/{chunk-THEWZNWS.cjs → chunk-R4BCOQHB.cjs} +1007 -1007
- package/dist/{chunk-5ROLXCIY.mjs → chunk-U7IDT6VT.mjs} +2 -2
- package/dist/{chunk-TWXBU7RE.mjs → chunk-XTSHZGSM.mjs} +1 -1
- package/dist/{chunk-ZBCNC5RI.mjs → chunk-Z5Y53IZD.mjs} +4 -4
- package/dist/crypto/index.cjs +1 -1
- package/dist/crypto/index.mjs +1 -1
- package/dist/diagram/index.cjs +1 -1
- package/dist/diagram/index.mjs +1 -1
- package/dist/docx/embedded.cjs +16 -1
- package/dist/docx/embedded.mjs +16 -1
- package/dist/docx/index.cjs +1262 -657
- package/dist/docx/index.mjs +1262 -657
- package/dist/docx/layout/index.cjs +1130 -540
- package/dist/docx/layout/index.mjs +1130 -540
- package/dist/docx/load/index.cjs +16 -1
- package/dist/docx/load/index.mjs +16 -1
- package/dist/docx/ui/index.cjs +1120 -530
- package/dist/docx/ui/index.mjs +1120 -530
- package/dist/drawingml/index.cjs +1 -1
- package/dist/drawingml/index.mjs +1 -1
- package/dist/index.cjs +758 -443
- package/dist/index.mjs +758 -443
- package/dist/math/index.cjs +1 -1
- package/dist/math/index.mjs +1 -1
- package/dist/opc/index.cjs +1 -1
- package/dist/opc/index.mjs +1 -1
- package/dist/pptx/automation/index.cjs +8 -1
- package/dist/pptx/automation/index.mjs +5 -5
- package/dist/pptx/cli/index.cjs +8 -1
- package/dist/pptx/cli/index.mjs +4 -4
- package/dist/pptx/converter/index.mjs +2 -2
- package/dist/pptx/editor/render/find-replace.cjs +14 -14
- package/dist/pptx/editor/render/find-replace.mjs +1 -1
- package/dist/pptx/editor/render/slide-operations.cjs +8 -8
- package/dist/pptx/editor/render/slide-operations.mjs +2 -2
- package/dist/pptx/index.cjs +8 -1
- package/dist/pptx/index.mjs +5 -5
- package/dist/teams/index.cjs +155 -53
- package/dist/teams/index.mjs +155 -53
- package/dist/visio/edit-chart-object-commands.d.ts +36 -0
- package/dist/visio/edit-chart-object-commands.d.ts.map +1 -0
- package/dist/visio/edit-chart-object.d.ts +7 -0
- package/dist/visio/edit-chart-object.d.ts.map +1 -0
- package/dist/visio/edit-commands.d.ts +2 -1
- package/dist/visio/edit-commands.d.ts.map +1 -1
- package/dist/visio/edit-foreign-frame.d.ts +8 -0
- package/dist/visio/edit-foreign-frame.d.ts.map +1 -0
- package/dist/visio/edit-metadata-commands.d.ts +7 -0
- package/dist/visio/edit-metadata-commands.d.ts.map +1 -1
- package/dist/visio/edit-picture.d.ts +8 -0
- package/dist/visio/edit-picture.d.ts.map +1 -1
- package/dist/visio/edit.d.ts.map +1 -1
- package/dist/visio/emf-bitmap.d.ts +8 -0
- package/dist/visio/emf-bitmap.d.ts.map +1 -0
- package/dist/visio/index.cjs +17094 -6137
- package/dist/visio/index.d.ts +2 -0
- package/dist/visio/index.d.ts.map +1 -1
- package/dist/visio/index.mjs +17092 -6138
- package/dist/visio/model.d.ts +18 -0
- package/dist/visio/model.d.ts.map +1 -1
- package/dist/visio/prepare-embedded.d.ts +10 -0
- package/dist/visio/prepare-embedded.d.ts.map +1 -0
- package/dist/visio/prepare-images.d.ts.map +1 -1
- package/dist/visio/shapes.d.ts.map +1 -1
- package/dist/visio/sheet.d.ts +2 -1
- package/dist/visio/sheet.d.ts.map +1 -1
- package/dist/visio/ui/document-history.d.ts +6 -1
- package/dist/visio/ui/document-history.d.ts.map +1 -1
- package/dist/visio/ui/edit-commands.d.ts.map +1 -1
- package/dist/visio/ui/index.cjs +33327 -22867
- package/dist/visio/ui/index.mjs +33324 -22867
- package/dist/visio/ui/insert.d.ts +11 -0
- package/dist/visio/ui/insert.d.ts.map +1 -1
- package/dist/xlsx/edit/context.d.ts.map +1 -1
- package/dist/xlsx/index.cjs +1188 -571
- package/dist/xlsx/index.mjs +1188 -571
- package/dist/xlsx/load/index.cjs +146 -54
- package/dist/xlsx/load/index.mjs +146 -54
- package/dist/xlsx/model.d.ts +5 -0
- package/dist/xlsx/model.d.ts.map +1 -1
- package/dist/xlsx/read/load.d.ts.map +1 -1
- package/dist/xlsx/read/workbook-part.d.ts +2 -0
- package/dist/xlsx/read/workbook-part.d.ts.map +1 -1
- package/dist/xlsx/ui/dialogs/grid-chart.d.ts +46 -0
- package/dist/xlsx/ui/dialogs/grid-chart.d.ts.map +1 -0
- package/dist/xlsx/ui/index.cjs +28335 -12121
- package/dist/xlsx/ui/index.d.ts +1 -0
- package/dist/xlsx/ui/index.d.ts.map +1 -1
- package/dist/xlsx/ui/index.mjs +28317 -12118
- package/dist/xlsx/write/workbook-part.d.ts.map +1 -1
- package/dist/xml/index.cjs +1 -1
- package/dist/xml/index.mjs +1 -1
- package/dist/xml/xml.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/PptxHandler-7RNEJ2IO.mjs +0 -4
- package/dist/visio/edit-foreign-bitmap.d.ts +0 -7
- package/dist/visio/edit-foreign-bitmap.d.ts.map +0 -1
package/dist/xlsx/load/index.cjs
CHANGED
|
@@ -2680,14 +2680,14 @@ function buildDirectoryTree(entryCount) {
|
|
|
2680
2680
|
let redLevel = 0;
|
|
2681
2681
|
for (let remaining = entryCount - 2; remaining >= 0; remaining = Math.floor(remaining / 2) - 1)
|
|
2682
2682
|
redLevel++;
|
|
2683
|
-
const build = (low, high,
|
|
2683
|
+
const build = (low, high, level2) => {
|
|
2684
2684
|
if (low > high)
|
|
2685
2685
|
return 4294967295;
|
|
2686
2686
|
const id = Math.floor((low + high) / 2);
|
|
2687
2687
|
links.set(id, {
|
|
2688
|
-
left: build(low, id - 1,
|
|
2689
|
-
right: build(id + 1, high,
|
|
2690
|
-
color:
|
|
2688
|
+
left: build(low, id - 1, level2 + 1),
|
|
2689
|
+
right: build(id + 1, high, level2 + 1),
|
|
2690
|
+
color: level2 === redLevel ? 0 : 1
|
|
2691
2691
|
});
|
|
2692
2692
|
return id;
|
|
2693
2693
|
};
|
|
@@ -3254,7 +3254,7 @@ var DEFAULT_XML_LIMITS = {
|
|
|
3254
3254
|
maxDepth: 512,
|
|
3255
3255
|
maxNodes: 5e6
|
|
3256
3256
|
};
|
|
3257
|
-
var TAG_RE = /<(\/?)([^\s
|
|
3257
|
+
var TAG_RE = /<(\/?)([^\s\/><]+)(?:\s+[^\s=\/><]+\s*=\s*(?:"[^"<]*"|'[^'<]*'))*\s*(\/?)>/y;
|
|
3258
3258
|
var MARKUP_SKIPS = [
|
|
3259
3259
|
["<!--", "-->"],
|
|
3260
3260
|
["<![CDATA[", "]]>"],
|
|
@@ -3301,8 +3301,8 @@ function parseXml(xml, options = {}) {
|
|
|
3301
3301
|
let parsed;
|
|
3302
3302
|
try {
|
|
3303
3303
|
parsed = new xmldom.DOMParser({
|
|
3304
|
-
onError: (
|
|
3305
|
-
if (
|
|
3304
|
+
onError: (level2, message) => {
|
|
3305
|
+
if (level2 !== "warning") parseError = message;
|
|
3306
3306
|
}
|
|
3307
3307
|
}).parseFromString(xml, "application/xml");
|
|
3308
3308
|
} catch (error) {
|
|
@@ -7531,18 +7531,18 @@ function pivotColumnEntries(pivot) {
|
|
|
7531
7531
|
const root = { children: /* @__PURE__ */ new Map() };
|
|
7532
7532
|
for (const record of pivot.records) {
|
|
7533
7533
|
let current = root;
|
|
7534
|
-
indices.forEach((field,
|
|
7534
|
+
indices.forEach((field, level2) => {
|
|
7535
7535
|
const value2 = record[field] ?? null;
|
|
7536
7536
|
const key = pivotValueKey(value2);
|
|
7537
7537
|
let child4 = current.children.get(key);
|
|
7538
7538
|
if (!child4) {
|
|
7539
|
-
child4 = { index: order[
|
|
7539
|
+
child4 = { index: order[level2].get(key), value: value2, children: /* @__PURE__ */ new Map() };
|
|
7540
7540
|
current.children.set(key, child4);
|
|
7541
7541
|
}
|
|
7542
7542
|
current = child4;
|
|
7543
7543
|
});
|
|
7544
7544
|
}
|
|
7545
|
-
const visit = (node2,
|
|
7545
|
+
const visit = (node2, level2, path2, values2, keys) => {
|
|
7546
7546
|
for (const child4 of [...node2.children.entries()].sort((a2, b) => a2[1].index - b[1].index)) {
|
|
7547
7547
|
const here = {
|
|
7548
7548
|
path: [...path2, child4[1].index],
|
|
@@ -7554,10 +7554,10 @@ function pivotColumnEntries(pivot) {
|
|
|
7554
7554
|
key: columnKey(here.keys, here.keys.length),
|
|
7555
7555
|
values: here.values
|
|
7556
7556
|
};
|
|
7557
|
-
if (
|
|
7557
|
+
if (level2 === names.length - 1) entries.push({ kind: "leaf", ...entry3 });
|
|
7558
7558
|
else {
|
|
7559
|
-
visit(child4[1],
|
|
7560
|
-
const own = functions[
|
|
7559
|
+
visit(child4[1], level2 + 1, here.path, here.values, here.keys);
|
|
7560
|
+
const own = functions[level2];
|
|
7561
7561
|
if (own === "auto") entries.push({ kind: "subtotal", ...entry3 });
|
|
7562
7562
|
else for (const fn of own) entries.push({ kind: "subtotal", ...entry3, fn });
|
|
7563
7563
|
}
|
|
@@ -7603,9 +7603,9 @@ function pivotColumnHeaders(pivot, columns, rowLabels, valuesOnRows = false) {
|
|
|
7603
7603
|
columns.entries.forEach((entry3, j) => {
|
|
7604
7604
|
const at = labelColumns + j * count2;
|
|
7605
7605
|
if (entry3.kind === "leaf") {
|
|
7606
|
-
entry3.path.forEach((_index,
|
|
7607
|
-
const continued = entry3.path.slice(0,
|
|
7608
|
-
if (!continued) grid[1 +
|
|
7606
|
+
entry3.path.forEach((_index, level2) => {
|
|
7607
|
+
const continued = entry3.path.slice(0, level2 + 1).every((p, i2) => p === previous[i2]);
|
|
7608
|
+
if (!continued) grid[1 + level2][at] = labelOf(columns.names[level2], entry3.values[level2]);
|
|
7609
7609
|
});
|
|
7610
7610
|
previous = entry3.path;
|
|
7611
7611
|
if (count2 > 1) measures.forEach((measure, m) => grid[rows - 1][at + m] = measure.caption);
|
|
@@ -7635,7 +7635,7 @@ function pivotColumnItemsXml(entries, measures, remap) {
|
|
|
7635
7635
|
previous = [];
|
|
7636
7636
|
continue;
|
|
7637
7637
|
}
|
|
7638
|
-
const group = entry3.path.map((index3,
|
|
7638
|
+
const group = entry3.path.map((index3, level2) => remap(level2, index3));
|
|
7639
7639
|
const path2 = entry3.kind === "leaf" && measures > 1 ? [...group, m] : group;
|
|
7640
7640
|
const prefix = sharedPrefix(path2, previous);
|
|
7641
7641
|
const xs = path2.slice(prefix).map((index3) => `<x${attrs({ v: index3 || void 0 })}/>`);
|
|
@@ -7662,7 +7662,7 @@ function nestedPivotGrid(pivot) {
|
|
|
7662
7662
|
const valuesAt = pivotValuesIndex(pivot);
|
|
7663
7663
|
const onRows = valuesAt >= 0;
|
|
7664
7664
|
const levels = depth + (onRows ? 1 : 0);
|
|
7665
|
-
const fieldOf = (
|
|
7665
|
+
const fieldOf = (level2) => !onRows || level2 < valuesAt ? level2 : level2 === valuesAt ? -1 : level2 - 1;
|
|
7666
7666
|
const axisItems = names.map((name) => pivotItems(pivot, name));
|
|
7667
7667
|
const itemIndices = axisItems.map(
|
|
7668
7668
|
(items) => new Map(items.map((item, index3) => [pivotValueKey(item), index3]))
|
|
@@ -7722,13 +7722,13 @@ function nestedPivotGrid(pivot) {
|
|
|
7722
7722
|
(one2) => fn ? aggregateValues(records, pivot.fields.indexOf(one2.field), fn) : pivotMeasureNumber(pivot, records, one2)
|
|
7723
7723
|
);
|
|
7724
7724
|
});
|
|
7725
|
-
const labelCells = (path2, shown,
|
|
7725
|
+
const labelCells = (path2, shown, level2, text2) => {
|
|
7726
7726
|
if (compact) return [text2];
|
|
7727
7727
|
const row2 = Array(levels).fill(null);
|
|
7728
7728
|
path2.labels.forEach((value2, at) => {
|
|
7729
7729
|
if (shown[at]) row2[at] = value2;
|
|
7730
7730
|
});
|
|
7731
|
-
row2[
|
|
7731
|
+
row2[level2] = text2;
|
|
7732
7732
|
return row2;
|
|
7733
7733
|
};
|
|
7734
7734
|
const push = (indent, build2) => {
|
|
@@ -7747,11 +7747,11 @@ function nestedPivotGrid(pivot) {
|
|
|
7747
7747
|
...measure !== void 0 ? { measure } : {},
|
|
7748
7748
|
...type ? { type } : {}
|
|
7749
7749
|
});
|
|
7750
|
-
const walk = (
|
|
7751
|
-
const field = fieldOf(
|
|
7752
|
-
const last =
|
|
7750
|
+
const walk = (level2, group, measure, path2) => {
|
|
7751
|
+
const field = fieldOf(level2);
|
|
7752
|
+
const last = level2 === levels - 1;
|
|
7753
7753
|
const repeated = Array.from(
|
|
7754
|
-
{ length:
|
|
7754
|
+
{ length: level2 },
|
|
7755
7755
|
(_v, k) => !!pivot.repeatLabels && fieldOf(k) >= 0
|
|
7756
7756
|
);
|
|
7757
7757
|
const leafShown = (firsts) => repeated.map((repeat, k) => repeat || tabular && firsts.slice(k + 1).every(Boolean));
|
|
@@ -7763,23 +7763,23 @@ function nestedPivotGrid(pivot) {
|
|
|
7763
7763
|
firsts: [...path2.firsts, m === 0]
|
|
7764
7764
|
};
|
|
7765
7765
|
if (last)
|
|
7766
|
-
return push(
|
|
7767
|
-
labelCells(path2, leafShown(here.firsts),
|
|
7766
|
+
return push(level2, () => [
|
|
7767
|
+
labelCells(path2, leafShown(here.firsts), level2, one2.caption),
|
|
7768
7768
|
cells(group, void 0, m),
|
|
7769
7769
|
entryOf(here.indices, m)
|
|
7770
7770
|
]);
|
|
7771
7771
|
if (!tabular)
|
|
7772
|
-
push(
|
|
7773
|
-
labelCells(path2, repeated,
|
|
7772
|
+
push(level2, () => [
|
|
7773
|
+
labelCells(path2, repeated, level2, one2.caption),
|
|
7774
7774
|
blanks(),
|
|
7775
7775
|
entryOf(here.indices, m)
|
|
7776
7776
|
]);
|
|
7777
|
-
walk(
|
|
7777
|
+
walk(level2 + 1, group, m, here);
|
|
7778
7778
|
});
|
|
7779
7779
|
return;
|
|
7780
7780
|
}
|
|
7781
7781
|
const own = functions[field];
|
|
7782
|
-
const valuesAbove = !onRows || valuesAt <
|
|
7782
|
+
const valuesAbove = !onRows || valuesAt < level2;
|
|
7783
7783
|
const showsValue = above && own === "auto" && valuesAbove;
|
|
7784
7784
|
const children2 = [...group.children.values()].sort((a2, b) => a2.index - b.index);
|
|
7785
7785
|
children2.forEach((child4, position) => {
|
|
@@ -7790,22 +7790,22 @@ function nestedPivotGrid(pivot) {
|
|
|
7790
7790
|
};
|
|
7791
7791
|
const text2 = labelOf(names[field], child4.value);
|
|
7792
7792
|
if (last)
|
|
7793
|
-
return push(
|
|
7794
|
-
labelCells(path2, leafShown(here.firsts),
|
|
7793
|
+
return push(level2, () => [
|
|
7794
|
+
labelCells(path2, leafShown(here.firsts), level2, text2),
|
|
7795
7795
|
cells(child4, void 0, measure),
|
|
7796
7796
|
entryOf(here.indices, measure)
|
|
7797
7797
|
]);
|
|
7798
7798
|
if (!tabular)
|
|
7799
|
-
push(
|
|
7800
|
-
labelCells(path2, repeated,
|
|
7799
|
+
push(level2, () => [
|
|
7800
|
+
labelCells(path2, repeated, level2, text2),
|
|
7801
7801
|
showsValue ? cells(child4, void 0, measure) : blanks(),
|
|
7802
7802
|
entryOf(here.indices, measure)
|
|
7803
7803
|
]);
|
|
7804
|
-
walk(
|
|
7804
|
+
walk(level2 + 1, child4, measure, here);
|
|
7805
7805
|
if (field === depth - 1) return;
|
|
7806
7806
|
const caption = String(text2);
|
|
7807
|
-
const subtotal = (title, fn, one2) => push(
|
|
7808
|
-
labelCells(path2, repeated,
|
|
7807
|
+
const subtotal = (title, fn, one2) => push(level2, () => [
|
|
7808
|
+
labelCells(path2, repeated, level2, title),
|
|
7809
7809
|
cells(child4, fn, one2),
|
|
7810
7810
|
entryOf(here.indices, one2, fn ?? "default")
|
|
7811
7811
|
]);
|
|
@@ -8131,8 +8131,8 @@ function parseSlicer(node2, sheet, partName) {
|
|
|
8131
8131
|
if (start !== void 0) slicer.startItem = start;
|
|
8132
8132
|
const locked = boolAttr(node2, "lockedPosition");
|
|
8133
8133
|
if (locked !== void 0) slicer.lockedPosition = locked;
|
|
8134
|
-
const
|
|
8135
|
-
if (
|
|
8134
|
+
const level2 = numAttr(node2, "level");
|
|
8135
|
+
if (level2 !== void 0) slicer.level = level2;
|
|
8136
8136
|
if (extLst) slicer.extLstXml = selfContainedXml(extLst);
|
|
8137
8137
|
return slicer;
|
|
8138
8138
|
}
|
|
@@ -10303,7 +10303,9 @@ function parseWorkbookPart(xml) {
|
|
|
10303
10303
|
count: numAttr(calcPr, "iterateCount") ?? 100,
|
|
10304
10304
|
delta: numAttr(calcPr, "iterateDelta") ?? 1e-3
|
|
10305
10305
|
} : void 0;
|
|
10306
|
+
const oleSize = att(xFirst(root, "oleSize"), "ref");
|
|
10306
10307
|
return {
|
|
10308
|
+
...oleSize ? { oleSize } : {},
|
|
10307
10309
|
...iterate ? { iterate } : {},
|
|
10308
10310
|
...password ? { workbookPasswordHash: password } : {},
|
|
10309
10311
|
...modernHash ? { workbookModernHash: modernHash } : {},
|
|
@@ -11877,6 +11879,19 @@ function readChartAppearance(text2, properties2) {
|
|
|
11877
11879
|
}
|
|
11878
11880
|
|
|
11879
11881
|
// chart/formatting-nodes.ts
|
|
11882
|
+
function chartDataLabelNode(root) {
|
|
11883
|
+
const plot2 = first(first(root, "chart", NS.c), "plotArea", NS.c);
|
|
11884
|
+
const groups = plot2 ? elements(plot2).filter((node2) => node2.localName.endsWith("Chart")) : [];
|
|
11885
|
+
const candidates = groups.flatMap((group) => [
|
|
11886
|
+
...children(group, "ser", NS.c).map((ser) => first(ser, "dLbls", NS.c)),
|
|
11887
|
+
first(group, "dLbls", NS.c)
|
|
11888
|
+
]);
|
|
11889
|
+
return candidates.find(
|
|
11890
|
+
(node2) => node2 !== void 0 && (first(node2, "txPr", NS.c) !== void 0 || elements(node2).some(
|
|
11891
|
+
(child4) => child4.localName.startsWith("show") && child4.getAttribute("val") === "1"
|
|
11892
|
+
))
|
|
11893
|
+
);
|
|
11894
|
+
}
|
|
11880
11895
|
function chartFormattingNodes(root) {
|
|
11881
11896
|
const chart = first(root, "chart", NS.c);
|
|
11882
11897
|
const plot2 = first(chart, "plotArea", NS.c);
|
|
@@ -11989,6 +12004,8 @@ function readChartFormatting(root) {
|
|
|
11989
12004
|
const entries = Object.fromEntries(
|
|
11990
12005
|
Object.entries(nodes).flatMap(([name, node2]) => node2 ? [[name, entry(node2)]] : [])
|
|
11991
12006
|
);
|
|
12007
|
+
const labels = chartDataLabelNode(root);
|
|
12008
|
+
if (labels) entries["dataLabel"] = entry(labels);
|
|
11992
12009
|
const builtInStyle = readBuiltInChartStyle(root);
|
|
11993
12010
|
const textBody = c(root, "txPr");
|
|
11994
12011
|
const textDefaults = textBody ? {
|
|
@@ -12977,6 +12994,66 @@ function summaryAnalysis(series) {
|
|
|
12977
12994
|
};
|
|
12978
12995
|
}
|
|
12979
12996
|
|
|
12997
|
+
// chart/data-label-text.ts
|
|
12998
|
+
var DATA_LABEL_SEPARATOR = ", ";
|
|
12999
|
+
var DATA_LABEL_CATEGORY_PERCENT_SEPARATOR = "\n";
|
|
13000
|
+
var FLAG_KEYS = [
|
|
13001
|
+
"showValue",
|
|
13002
|
+
"showCategory",
|
|
13003
|
+
"showSeriesName",
|
|
13004
|
+
"showPercent",
|
|
13005
|
+
"showBubbleSize"
|
|
13006
|
+
];
|
|
13007
|
+
function resolveDataLabelFlags(levels) {
|
|
13008
|
+
const { point, series, chart } = levels;
|
|
13009
|
+
const picked = {};
|
|
13010
|
+
for (const key of FLAG_KEYS) picked[key] = point?.[key] ?? series?.[key] ?? chart?.[key];
|
|
13011
|
+
const anyDeclared = FLAG_KEYS.some((key) => picked[key] !== void 0);
|
|
13012
|
+
return {
|
|
13013
|
+
showValue: anyDeclared ? picked.showValue === true : levels.siblingOwnsLabels !== true,
|
|
13014
|
+
showCategory: picked.showCategory === true,
|
|
13015
|
+
showSeriesName: picked.showSeriesName === true,
|
|
13016
|
+
showPercent: picked.showPercent === true,
|
|
13017
|
+
showBubbleSize: picked.showBubbleSize === true,
|
|
13018
|
+
separator: point?.separator ?? series?.separator ?? chart?.separator ?? (picked.showCategory === true && picked.showPercent === true ? DATA_LABEL_CATEGORY_PERCENT_SEPARATOR : DATA_LABEL_SEPARATOR)
|
|
13019
|
+
};
|
|
13020
|
+
}
|
|
13021
|
+
|
|
13022
|
+
// chart/render/summary-labels.ts
|
|
13023
|
+
function level(options, custom) {
|
|
13024
|
+
const out = {};
|
|
13025
|
+
if (options.deleted !== void 0) out.deleted = options.deleted;
|
|
13026
|
+
if (options.showValue !== void 0) out.showValue = options.showValue;
|
|
13027
|
+
if (options.showCategoryName !== void 0) out.showCategory = options.showCategoryName;
|
|
13028
|
+
if (options.showSeriesName !== void 0) out.showSeriesName = options.showSeriesName;
|
|
13029
|
+
if (options.showPercent !== void 0) out.showPercent = options.showPercent;
|
|
13030
|
+
if (options.showBubbleSize !== void 0) out.showBubbleSize = options.showBubbleSize;
|
|
13031
|
+
if (options.separator !== void 0) out.separator = options.separator;
|
|
13032
|
+
if (options.position) out.position = options.position;
|
|
13033
|
+
if (options.numberFormat?.formatCode) out.numberFormat = options.numberFormat.formatCode;
|
|
13034
|
+
if (custom?.text !== void 0) out.text = custom.text;
|
|
13035
|
+
return out;
|
|
13036
|
+
}
|
|
13037
|
+
function shows(levels, point) {
|
|
13038
|
+
const flags = resolveDataLabelFlags({ ...levels, ...point ? { point } : {} });
|
|
13039
|
+
return point?.text !== void 0 || Object.values(flags).some((value2) => value2 === true);
|
|
13040
|
+
}
|
|
13041
|
+
function summaryDataLabels(series, group) {
|
|
13042
|
+
const own = series.dataLabels;
|
|
13043
|
+
if (!own && !group) return void 0;
|
|
13044
|
+
const out = {};
|
|
13045
|
+
if (group) out.chart = level(group);
|
|
13046
|
+
if (own) out.series = level(own);
|
|
13047
|
+
const points = {};
|
|
13048
|
+
for (const labels of [group, own])
|
|
13049
|
+
for (const label2 of labels?.labels ?? [])
|
|
13050
|
+
if (label2.index !== void 0)
|
|
13051
|
+
points[label2.index] = { ...points[label2.index], ...level(label2, label2.tx) };
|
|
13052
|
+
if (Object.keys(points).length) out.points = points;
|
|
13053
|
+
if (!shows(out) && !Object.values(points).some((point) => shows(out, point))) return void 0;
|
|
13054
|
+
return out;
|
|
13055
|
+
}
|
|
13056
|
+
|
|
12980
13057
|
// chart/render/summary-from-space.ts
|
|
12981
13058
|
var solidColor = (fill) => fill?.kind === "solid" ? fill.color : void 0;
|
|
12982
13059
|
var isSolidFill = (fill) => fill?.kind === "solid" || fill?.kind === "unsupported" && fill.element === "solidFill";
|
|
@@ -12994,7 +13071,7 @@ var GROUP_TYPES = {
|
|
|
12994
13071
|
surface: "surface"
|
|
12995
13072
|
};
|
|
12996
13073
|
var GROUPINGS = /* @__PURE__ */ new Set(["clustered", "stacked", "percentStacked", "standard"]);
|
|
12997
|
-
function chartSummarySeries(source2, chartType) {
|
|
13074
|
+
function chartSummarySeries(source2, chartType, groupLabels) {
|
|
12998
13075
|
const categories = source2.categories ?? source2.xValues;
|
|
12999
13076
|
const values2 = source2.values ?? source2.yValues;
|
|
13000
13077
|
const numeric2 = (v) => typeof v === "number" ? v : v === "" ? null : Number.isFinite(Number(v)) ? Number(v) : null;
|
|
@@ -13002,6 +13079,7 @@ function chartSummarySeries(source2, chartType) {
|
|
|
13002
13079
|
categories: chartSourceValues(categories),
|
|
13003
13080
|
values: chartSourceValues(values2).map(numeric2)
|
|
13004
13081
|
};
|
|
13082
|
+
if (values2?.cache?.formatCode !== void 0) out.numberFormat = values2.cache.formatCode;
|
|
13005
13083
|
if (source2.bubbleSizes) {
|
|
13006
13084
|
out.bubbleSizes = chartSourceValues(source2.bubbleSizes).map(numeric2);
|
|
13007
13085
|
if (source2.bubbleSizes.formula) out.bubbleSizesRef = source2.bubbleSizes.formula;
|
|
@@ -13030,6 +13108,8 @@ function chartSummarySeries(source2, chartType) {
|
|
|
13030
13108
|
}
|
|
13031
13109
|
if (Object.keys(points).length) out.pointColors = points;
|
|
13032
13110
|
if (Object.keys(pointFills).length) out.pointFills = pointFills;
|
|
13111
|
+
const dataLabels = summaryDataLabels(source2, groupLabels);
|
|
13112
|
+
if (dataLabels) out.dataLabels = dataLabels;
|
|
13033
13113
|
Object.assign(out, summaryAnalysis(source2));
|
|
13034
13114
|
return out;
|
|
13035
13115
|
}
|
|
@@ -13057,7 +13137,7 @@ function extraGroups(chartSpace, firstType) {
|
|
|
13057
13137
|
const type = group.kind === "bar" ? "column" : group.kind;
|
|
13058
13138
|
const entry3 = {
|
|
13059
13139
|
chartType: type,
|
|
13060
|
-
series: group.series.map((source2) => chartSummarySeries(source2, type)),
|
|
13140
|
+
series: group.series.map((source2) => chartSummarySeries(source2, type, group.dataLabels)),
|
|
13061
13141
|
secondary: valueAxisId(chartSpace, group.axisIds) !== primary
|
|
13062
13142
|
};
|
|
13063
13143
|
if (group.grouping && GROUPINGS.has(group.grouping))
|
|
@@ -13075,7 +13155,9 @@ function chartSummaryFromSpace(chartSpace, extras = {}) {
|
|
|
13075
13155
|
const group = chartSpace.plotArea.groups[0];
|
|
13076
13156
|
let chartType = group ? GROUP_TYPES[group.kind] : "column";
|
|
13077
13157
|
if (chartType === "bar" && group?.barDirection !== "bar") chartType = "column";
|
|
13078
|
-
const series = (group?.series ?? []).map(
|
|
13158
|
+
const series = (group?.series ?? []).map(
|
|
13159
|
+
(source2) => chartSummarySeries(source2, chartType, group?.dataLabels)
|
|
13160
|
+
);
|
|
13079
13161
|
const summary = {
|
|
13080
13162
|
chartType,
|
|
13081
13163
|
series,
|
|
@@ -13198,9 +13280,9 @@ function dimension(data, kind, type) {
|
|
|
13198
13280
|
const out = { points: [] };
|
|
13199
13281
|
const formula = text(cx(element2, "f"));
|
|
13200
13282
|
if (formula) out.formula = formula;
|
|
13201
|
-
const
|
|
13202
|
-
const count2 = Number(
|
|
13203
|
-
for (const point of
|
|
13283
|
+
const level2 = cx(element2, "lvl");
|
|
13284
|
+
const count2 = Number(level2?.getAttribute("ptCount") ?? 0);
|
|
13285
|
+
for (const point of level2 ? children(level2, "pt", NS.cx) : []) {
|
|
13204
13286
|
const index3 = Number(point.getAttribute("idx") ?? out.points.length);
|
|
13205
13287
|
if (Number.isInteger(index3) && index3 >= 0) out.points[index3] = text(point);
|
|
13206
13288
|
}
|
|
@@ -13209,10 +13291,10 @@ function dimension(data, kind, type) {
|
|
|
13209
13291
|
}
|
|
13210
13292
|
function categoryLevels(data) {
|
|
13211
13293
|
const element2 = data ? children(data, "strDim", NS.cx).find((d) => (d.getAttribute("type") ?? "") === "cat") : void 0;
|
|
13212
|
-
return (element2 ? children(element2, "lvl", NS.cx) : []).map((
|
|
13294
|
+
return (element2 ? children(element2, "lvl", NS.cx) : []).map((level2) => {
|
|
13213
13295
|
const points = [];
|
|
13214
|
-
const count2 = Number(
|
|
13215
|
-
for (const point of children(
|
|
13296
|
+
const count2 = Number(level2.getAttribute("ptCount") ?? 0);
|
|
13297
|
+
for (const point of children(level2, "pt", NS.cx)) {
|
|
13216
13298
|
const index3 = Number(point.getAttribute("idx") ?? points.length);
|
|
13217
13299
|
if (Number.isInteger(index3) && index3 >= 0) points[index3] = text(point);
|
|
13218
13300
|
}
|
|
@@ -14244,6 +14326,7 @@ async function loadXlsx(input) {
|
|
|
14244
14326
|
if (book.structureLocked) workbook.structureLocked = true;
|
|
14245
14327
|
if (book.workbookPasswordHash) workbook.workbookPasswordHash = book.workbookPasswordHash;
|
|
14246
14328
|
if (book.workbookModernHash) workbook.workbookModernHash = book.workbookModernHash;
|
|
14329
|
+
if (book.oleSize) workbook.oleSize = book.oleSize;
|
|
14247
14330
|
if (book.calcMode) workbook.calcMode = book.calcMode;
|
|
14248
14331
|
if (book.iterate) workbook.iterate = book.iterate;
|
|
14249
14332
|
if (signatures.hasSignatures)
|
|
@@ -14796,7 +14879,7 @@ function dataSourceInner(source2) {
|
|
|
14796
14879
|
case "multiLvlStrRef": {
|
|
14797
14880
|
const levels = source2.levels ? elementXml(
|
|
14798
14881
|
"multiLvlStrCache",
|
|
14799
|
-
valXml("ptCount", source2.levelPointCount) + source2.levels.map((
|
|
14882
|
+
valXml("ptCount", source2.levelPointCount) + source2.levels.map((level2) => elementXml("lvl", cachePoints(level2))).join("")
|
|
14800
14883
|
) : "";
|
|
14801
14884
|
return `<c:multiLvlStrRef>${formula}${levels}</c:multiLvlStrRef>`;
|
|
14802
14885
|
}
|
|
@@ -25967,7 +26050,10 @@ function workbookXml(workbook, sheets, activeTab, sourceXml, pivotCachesXml) {
|
|
|
25967
26050
|
const iterate = workbook.iterate ? ` iterate="1" iterateCount="${workbook.iterate.count}" iterateDelta="${workbook.iterate.delta}"` : "";
|
|
25968
26051
|
const owned = ["fullCalcOnLoad", "calcId", "calcMode", "iterate", "iterateCount", "iterateDelta"];
|
|
25969
26052
|
out += `<calcPr${copyAttrs(calc, owned)} calcId="191029"${mode}${iterate} fullCalcOnLoad="1"/>`;
|
|
25970
|
-
|
|
26053
|
+
const tailOf = (names2) => names2.map(
|
|
26054
|
+
(name) => name === "oleSize" && workbook.oleSize ? `<oleSize ref="${escapeAttr3(workbook.oleSize)}"/>` : raw2([name])
|
|
26055
|
+
).join("");
|
|
26056
|
+
out += pivotCachesXml === void 0 ? tailOf(KEPT_TAIL) : tailOf(KEPT_TAIL.slice(0, 2)) + pivotCachesXml + tailOf(KEPT_TAIL.slice(3));
|
|
25971
26057
|
return `${out}</workbook>`;
|
|
25972
26058
|
}
|
|
25973
26059
|
|
|
@@ -27454,7 +27540,7 @@ function pivotTableXml(source2, cacheId, cache2) {
|
|
|
27454
27540
|
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((index3) => `<field x="${index3}"/>`).join("")}</rowFields><rowItems count="${grid.rowEntries?.length ?? grid.rowItems.length + 1}">${rowItems}</rowItems>`;
|
|
27455
27541
|
if (col >= 0 && grid.columnEntries) {
|
|
27456
27542
|
const fieldsOnColumns = [...columnIdx, ...multiple && !rowsAxis ? [-2] : []];
|
|
27457
|
-
body += `<colFields count="${fieldsOnColumns.length}">${fieldsOnColumns.map((index3) => `<field x="${index3}"/>`).join("")}</colFields>${pivotColumnItemsXml(grid.columnEntries, rowsAxis ? 1 : measures.length, (
|
|
27543
|
+
body += `<colFields count="${fieldsOnColumns.length}">${fieldsOnColumns.map((index3) => `<field x="${index3}"/>`).join("")}</colFields>${pivotColumnItemsXml(grid.columnEntries, rowsAxis ? 1 : measures.length, (level2, index3) => columnIndicesFull[level2][index3])}`;
|
|
27458
27544
|
} else if (multiple && !rowsAxis)
|
|
27459
27545
|
body += `<colFields count="1"><field x="-2"/></colFields>${pivotValueAxisItems(measures.length)}`;
|
|
27460
27546
|
else body += '<colItems count="1"><i/></colItems>';
|
|
@@ -27541,11 +27627,17 @@ function pivotTableXml(source2, cacheId, cache2) {
|
|
|
27541
27627
|
}
|
|
27542
27628
|
return XML_HEADER + buildXml(root);
|
|
27543
27629
|
}
|
|
27630
|
+
function firstFilterTag(xml) {
|
|
27631
|
+
for (let at = xml.indexOf("<filter"); at !== -1; at = xml.indexOf("<filter", at + 1)) {
|
|
27632
|
+
if (!/\s/.test(xml.charAt(at + 7))) continue;
|
|
27633
|
+
const end = xml.indexOf(">", at);
|
|
27634
|
+
return end === -1 ? "" : xml.slice(at, end + 1);
|
|
27635
|
+
}
|
|
27636
|
+
return "";
|
|
27637
|
+
}
|
|
27544
27638
|
function dateFilterXml(pivot, filter2) {
|
|
27545
27639
|
const x15 = "http://schemas.microsoft.com/office/spreadsheetml/2010/11/main";
|
|
27546
|
-
const id = Number(
|
|
27547
|
-
/\bid="(\d+)"/.exec(/<filter\s[^>]*>/.exec(pivot.sourceXml ?? "")?.[0] ?? "")?.[1] ?? 1
|
|
27548
|
-
);
|
|
27640
|
+
const id = Number(/\bid="(\d+)"/.exec(firstFilterTag(pivot.sourceXml ?? ""))?.[1] ?? 1);
|
|
27549
27641
|
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>`;
|
|
27550
27642
|
}
|
|
27551
27643
|
|