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/teams/index.cjs
CHANGED
|
@@ -330,8 +330,8 @@ function parseXml(xml, options = {}) {
|
|
|
330
330
|
let parsed;
|
|
331
331
|
try {
|
|
332
332
|
parsed = new xmldom.DOMParser({
|
|
333
|
-
onError: (
|
|
334
|
-
if (
|
|
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
|
|
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((
|
|
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(
|
|
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,
|
|
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[
|
|
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,
|
|
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 (
|
|
17449
|
+
if (level2 === names2.length - 1) entries.push({ kind: "leaf", ...entry3 });
|
|
17357
17450
|
else {
|
|
17358
|
-
visit(child3[1],
|
|
17359
|
-
const own = functions[
|
|
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,
|
|
17406
|
-
const continued = entry3.path.slice(0,
|
|
17407
|
-
if (!continued) grid[1 +
|
|
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,
|
|
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 = (
|
|
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,
|
|
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[
|
|
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 = (
|
|
17556
|
-
const field = fieldOf(
|
|
17557
|
-
const last =
|
|
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:
|
|
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(
|
|
17572
|
-
labelCells(path2, leafShown(here.firsts),
|
|
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(
|
|
17578
|
-
labelCells(path2, repeated,
|
|
17670
|
+
push(level2, () => [
|
|
17671
|
+
labelCells(path2, repeated, level2, one2.caption),
|
|
17579
17672
|
blanks(),
|
|
17580
17673
|
entryOf(here.indices, m)
|
|
17581
17674
|
]);
|
|
17582
|
-
walk(
|
|
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 <
|
|
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(
|
|
17599
|
-
labelCells(path2, leafShown(here.firsts),
|
|
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(
|
|
17605
|
-
labelCells(path2, repeated,
|
|
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(
|
|
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(
|
|
17613
|
-
labelCells(path2, repeated,
|
|
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
|
-
|
|
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
|
|
20533
|
-
const count2 = Number(
|
|
20534
|
-
for (const point of
|
|
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((
|
|
20639
|
+
return (element2 ? children(element2, "lvl", NS.cx) : []).map((level2) => {
|
|
20544
20640
|
const points = [];
|
|
20545
|
-
const count2 = Number(
|
|
20546
|
-
for (const point of children(
|
|
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, (
|
|
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(
|
|
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
|
|
26982
|
+
const level2 = isNotificationLevel(next.level) ? next.level : settings.level;
|
|
26881
26983
|
const sound = typeof next.sound === "boolean" ? next.sound : settings.sound;
|
|
26882
|
-
if (
|
|
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 {
|