pptx-react-viewer 3.19.2 → 3.20.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/CHANGELOG.md +10 -0
- package/dist/{AiChatPanel-KILEXOPT.js → AiChatPanel-NBKG2CWE.js} +25 -25
- package/dist/AiChatPanel-NBKG2CWE.js.br +0 -0
- package/dist/AiChatPanel-NBKG2CWE.js.gz +0 -0
- package/dist/{AiChatPanel-ZH52BQBE.mjs → AiChatPanel-OXCJVBUS.mjs} +4 -4
- package/dist/AiChatPanel-OXCJVBUS.mjs.br +0 -0
- package/dist/AiChatPanel-OXCJVBUS.mjs.gz +0 -0
- package/dist/{Area3DChartScene-UHN7ZOZT.mjs → Area3DChartScene-5M3LEY6M.mjs} +1 -1
- package/dist/Area3DChartScene-5M3LEY6M.mjs.br +0 -0
- package/dist/Area3DChartScene-5M3LEY6M.mjs.gz +0 -0
- package/dist/{Area3DChartScene-HS7EBQLQ.js → Area3DChartScene-7QPDPVR6.js} +2 -2
- package/dist/Area3DChartScene-7QPDPVR6.js.br +0 -0
- package/dist/Area3DChartScene-7QPDPVR6.js.gz +0 -0
- package/dist/{Bar3DChartScene-TFGSYASD.mjs → Bar3DChartScene-NNSTLO4V.mjs} +1 -1
- package/dist/Bar3DChartScene-NNSTLO4V.mjs.br +0 -0
- package/dist/Bar3DChartScene-NNSTLO4V.mjs.gz +0 -0
- package/dist/{Bar3DChartScene-E57TRVUU.js → Bar3DChartScene-TAMPS6ZS.js} +2 -2
- package/dist/Bar3DChartScene-TAMPS6ZS.js.br +0 -0
- package/dist/Bar3DChartScene-TAMPS6ZS.js.gz +0 -0
- package/dist/{Line3DChartScene-RES5D7W7.mjs → Line3DChartScene-7S2DD45T.mjs} +1 -1
- package/dist/Line3DChartScene-7S2DD45T.mjs.br +0 -0
- package/dist/Line3DChartScene-7S2DD45T.mjs.gz +0 -0
- package/dist/{Line3DChartScene-NM7YYLZD.js → Line3DChartScene-T4SH37NU.js} +2 -2
- package/dist/Line3DChartScene-T4SH37NU.js.br +0 -0
- package/dist/Line3DChartScene-T4SH37NU.js.gz +0 -0
- package/dist/{Model3DScene-6CWFGE7M.mjs → Model3DScene-CXRM7D3J.mjs} +1 -1
- package/dist/Model3DScene-CXRM7D3J.mjs.br +0 -0
- package/dist/Model3DScene-CXRM7D3J.mjs.gz +0 -0
- package/dist/{Model3DScene-SL3QF63O.js → Model3DScene-IDRM7EZD.js} +2 -2
- package/dist/Model3DScene-IDRM7EZD.js.br +0 -0
- package/dist/Model3DScene-IDRM7EZD.js.gz +0 -0
- package/dist/{PieChart3DScene-WIVYOQUQ.js → PieChart3DScene-66Y5UP64.js} +2 -2
- package/dist/PieChart3DScene-66Y5UP64.js.br +0 -0
- package/dist/PieChart3DScene-66Y5UP64.js.gz +0 -0
- package/dist/{PieChart3DScene-QYJUOYMB.mjs → PieChart3DScene-VSCSEY2G.mjs} +1 -1
- package/dist/PieChart3DScene-VSCSEY2G.mjs.br +0 -0
- package/dist/PieChart3DScene-VSCSEY2G.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-QCUYYQBZ.js → SurfaceChart3DScene-6J4A6XUH.js} +2 -2
- package/dist/SurfaceChart3DScene-6J4A6XUH.js.br +0 -0
- package/dist/SurfaceChart3DScene-6J4A6XUH.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-Y2LF73QQ.mjs → SurfaceChart3DScene-NSHDK657.mjs} +1 -1
- package/dist/SurfaceChart3DScene-NSHDK657.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-NSHDK657.mjs.gz +0 -0
- package/dist/{chunk-ATKAU2J4.mjs → chunk-2IBDKMY2.mjs} +506 -325
- package/dist/chunk-2IBDKMY2.mjs.br +0 -0
- package/dist/chunk-2IBDKMY2.mjs.gz +0 -0
- package/dist/{chunk-M5BAPEQL.mjs → chunk-5PDGHTRJ.mjs} +9 -9
- package/dist/chunk-5PDGHTRJ.mjs.br +0 -0
- package/dist/chunk-5PDGHTRJ.mjs.gz +0 -0
- package/dist/{chunk-RPPLJQ6R.js → chunk-7SFA4A2E.js} +1515 -1334
- package/dist/chunk-7SFA4A2E.js.br +0 -0
- package/dist/chunk-7SFA4A2E.js.gz +0 -0
- package/dist/{chunk-MQUTXOET.mjs → chunk-AVTH627G.mjs} +11 -0
- package/dist/chunk-AVTH627G.mjs.br +0 -0
- package/dist/chunk-AVTH627G.mjs.gz +0 -0
- package/dist/{chunk-NEMPFYZ5.mjs → chunk-AYH6XSE7.mjs} +1 -1
- package/dist/chunk-AYH6XSE7.mjs.br +0 -0
- package/dist/chunk-AYH6XSE7.mjs.gz +0 -0
- package/dist/{chunk-YH4ODPSH.js → chunk-DW66NEST.js} +182 -182
- package/dist/chunk-DW66NEST.js.br +0 -0
- package/dist/chunk-DW66NEST.js.gz +0 -0
- package/dist/{chunk-7XJ7I6TJ.mjs → chunk-FE4L26FT.mjs} +2 -2
- package/dist/chunk-FE4L26FT.mjs.br +0 -0
- package/dist/chunk-FE4L26FT.mjs.gz +0 -0
- package/dist/{chunk-BRJN3ZMG.js → chunk-I5LPYESF.js} +11 -0
- package/dist/chunk-I5LPYESF.js.br +0 -0
- package/dist/chunk-I5LPYESF.js.gz +0 -0
- package/dist/{chunk-GULL4H2I.mjs → chunk-N4FLKADC.mjs} +476 -168
- package/dist/chunk-N4FLKADC.mjs.br +0 -0
- package/dist/chunk-N4FLKADC.mjs.gz +0 -0
- package/dist/{chunk-ZUIM5737.js → chunk-NGWA6L3N.js} +479 -167
- package/dist/chunk-NGWA6L3N.js.br +0 -0
- package/dist/chunk-NGWA6L3N.js.gz +0 -0
- package/dist/{chunk-2LK3OHAN.js → chunk-W3RBIIZW.js} +796 -796
- package/dist/chunk-W3RBIIZW.js.br +0 -0
- package/dist/chunk-W3RBIIZW.js.gz +0 -0
- package/dist/{chunk-F7VYECOL.js → chunk-WRXXPCZ7.js} +5 -5
- package/dist/chunk-WRXXPCZ7.js.br +0 -0
- package/dist/chunk-WRXXPCZ7.js.gz +0 -0
- package/dist/i18n/de.cjs +11 -0
- package/dist/i18n/de.cjs.br +0 -0
- package/dist/i18n/de.cjs.gz +0 -0
- package/dist/i18n/de.mjs +11 -0
- package/dist/i18n/de.mjs.br +0 -0
- package/dist/i18n/de.mjs.gz +0 -0
- package/dist/i18n/es.cjs +11 -0
- package/dist/i18n/es.cjs.br +0 -0
- package/dist/i18n/es.cjs.gz +0 -0
- package/dist/i18n/es.mjs +11 -0
- package/dist/i18n/es.mjs.br +0 -0
- package/dist/i18n/es.mjs.gz +0 -0
- package/dist/i18n/fr.cjs +11 -0
- package/dist/i18n/fr.cjs.br +0 -0
- package/dist/i18n/fr.cjs.gz +0 -0
- package/dist/i18n/fr.mjs +11 -0
- package/dist/i18n/fr.mjs.br +0 -0
- package/dist/i18n/fr.mjs.gz +0 -0
- package/dist/i18n/zh-CN.cjs +11 -0
- package/dist/i18n/zh-CN.cjs.br +0 -0
- package/dist/i18n/zh-CN.cjs.gz +0 -0
- package/dist/i18n/zh-CN.mjs +11 -0
- package/dist/i18n/zh-CN.mjs.br +0 -0
- package/dist/i18n/zh-CN.mjs.gz +0 -0
- package/dist/i18n.js +4 -4
- package/dist/i18n.js.br +0 -0
- package/dist/i18n.js.gz +0 -0
- package/dist/i18n.mjs +1 -1
- package/dist/i18n.mjs.br +0 -0
- package/dist/i18n.mjs.gz +0 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.js +48 -48
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.d.ts +37 -0
- package/dist/internals.js +105 -105
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +4 -4
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/pptx-viewer.css +1 -1
- package/dist/pptx-viewer.css.br +0 -0
- package/dist/pptx-viewer.css.gz +0 -0
- package/dist/viewer/index.d.ts +37 -0
- package/dist/viewer/index.js +27 -27
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +6 -6
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +1 -1
- package/dist/AiChatPanel-KILEXOPT.js.br +0 -0
- package/dist/AiChatPanel-KILEXOPT.js.gz +0 -0
- package/dist/AiChatPanel-ZH52BQBE.mjs.br +0 -0
- package/dist/AiChatPanel-ZH52BQBE.mjs.gz +0 -0
- package/dist/Area3DChartScene-HS7EBQLQ.js.br +0 -0
- package/dist/Area3DChartScene-HS7EBQLQ.js.gz +0 -0
- package/dist/Area3DChartScene-UHN7ZOZT.mjs.br +0 -0
- package/dist/Area3DChartScene-UHN7ZOZT.mjs.gz +0 -0
- package/dist/Bar3DChartScene-E57TRVUU.js.br +0 -0
- package/dist/Bar3DChartScene-E57TRVUU.js.gz +0 -0
- package/dist/Bar3DChartScene-TFGSYASD.mjs.br +0 -0
- package/dist/Bar3DChartScene-TFGSYASD.mjs.gz +0 -0
- package/dist/Line3DChartScene-NM7YYLZD.js.br +0 -0
- package/dist/Line3DChartScene-NM7YYLZD.js.gz +0 -0
- package/dist/Line3DChartScene-RES5D7W7.mjs.br +0 -0
- package/dist/Line3DChartScene-RES5D7W7.mjs.gz +0 -0
- package/dist/Model3DScene-6CWFGE7M.mjs.br +0 -0
- package/dist/Model3DScene-6CWFGE7M.mjs.gz +0 -0
- package/dist/Model3DScene-SL3QF63O.js.br +0 -0
- package/dist/Model3DScene-SL3QF63O.js.gz +0 -0
- package/dist/PieChart3DScene-QYJUOYMB.mjs.br +0 -0
- package/dist/PieChart3DScene-QYJUOYMB.mjs.gz +0 -0
- package/dist/PieChart3DScene-WIVYOQUQ.js.br +0 -0
- package/dist/PieChart3DScene-WIVYOQUQ.js.gz +0 -0
- package/dist/SurfaceChart3DScene-QCUYYQBZ.js.br +0 -0
- package/dist/SurfaceChart3DScene-QCUYYQBZ.js.gz +0 -0
- package/dist/SurfaceChart3DScene-Y2LF73QQ.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-Y2LF73QQ.mjs.gz +0 -0
- package/dist/chunk-2LK3OHAN.js.br +0 -0
- package/dist/chunk-2LK3OHAN.js.gz +0 -0
- package/dist/chunk-7XJ7I6TJ.mjs.br +0 -0
- package/dist/chunk-7XJ7I6TJ.mjs.gz +0 -0
- package/dist/chunk-ATKAU2J4.mjs.br +0 -0
- package/dist/chunk-ATKAU2J4.mjs.gz +0 -0
- package/dist/chunk-BRJN3ZMG.js.br +0 -0
- package/dist/chunk-BRJN3ZMG.js.gz +0 -0
- package/dist/chunk-F7VYECOL.js.br +0 -0
- package/dist/chunk-F7VYECOL.js.gz +0 -0
- package/dist/chunk-GULL4H2I.mjs.br +0 -0
- package/dist/chunk-GULL4H2I.mjs.gz +0 -0
- package/dist/chunk-M5BAPEQL.mjs.br +0 -0
- package/dist/chunk-M5BAPEQL.mjs.gz +0 -0
- package/dist/chunk-MQUTXOET.mjs.br +0 -0
- package/dist/chunk-MQUTXOET.mjs.gz +0 -0
- package/dist/chunk-NEMPFYZ5.mjs.br +0 -0
- package/dist/chunk-NEMPFYZ5.mjs.gz +0 -0
- package/dist/chunk-RPPLJQ6R.js.br +0 -0
- package/dist/chunk-RPPLJQ6R.js.gz +0 -0
- package/dist/chunk-YH4ODPSH.js.br +0 -0
- package/dist/chunk-YH4ODPSH.js.gz +0 -0
- package/dist/chunk-ZUIM5737.js.br +0 -0
- package/dist/chunk-ZUIM5737.js.gz +0 -0
|
@@ -24292,7 +24292,9 @@ function getElementTextContent(element) {
|
|
|
24292
24292
|
return element.textSegments.map((segment) => String(segment.text || "")).join("");
|
|
24293
24293
|
}
|
|
24294
24294
|
function createEditorId(prefix) {
|
|
24295
|
-
|
|
24295
|
+
const random = Math.random().toString(36).slice(2, 8).padEnd(6, "0");
|
|
24296
|
+
const sequence = (nextEditorIdSequence++).toString(36);
|
|
24297
|
+
return `${prefix}-${Date.now()}-${random}${sequence}`;
|
|
24296
24298
|
}
|
|
24297
24299
|
function ensureArrayValue(value) {
|
|
24298
24300
|
if (!value) {
|
|
@@ -24300,10 +24302,12 @@ function ensureArrayValue(value) {
|
|
|
24300
24302
|
}
|
|
24301
24303
|
return Array.isArray(value) ? value : [value];
|
|
24302
24304
|
}
|
|
24305
|
+
var nextEditorIdSequence;
|
|
24303
24306
|
var init_element_utils = __esm({
|
|
24304
24307
|
"src/core/utils/element-utils.ts"() {
|
|
24305
24308
|
init_types();
|
|
24306
24309
|
init_clone_utils();
|
|
24310
|
+
nextEditorIdSequence = 0;
|
|
24307
24311
|
}
|
|
24308
24312
|
});
|
|
24309
24313
|
function isTemplateElementId(elementId) {
|
|
@@ -46694,7 +46698,9 @@ function buildChartMarkerXml(existing, marker, getLocalName2, resolveColor2) {
|
|
|
46694
46698
|
throw new RangeError("marker size must be an integer from 2 through 72");
|
|
46695
46699
|
}
|
|
46696
46700
|
const node = {};
|
|
46697
|
-
|
|
46701
|
+
if (marker.symbol !== "auto") {
|
|
46702
|
+
node["c:symbol"] = { "@_val": marker.symbol };
|
|
46703
|
+
}
|
|
46698
46704
|
if (marker.size !== void 0) {
|
|
46699
46705
|
node["c:size"] = { "@_val": String(marker.size) };
|
|
46700
46706
|
}
|
|
@@ -47059,10 +47065,7 @@ function parseMarker(markerNode, xmlLookup, colorParser) {
|
|
|
47059
47065
|
}
|
|
47060
47066
|
const symbolNode = xmlLookup.getChildByLocalName(markerNode, "symbol");
|
|
47061
47067
|
const rawSymbol = String(symbolNode?.["@_val"] || "").trim();
|
|
47062
|
-
const symbol = MARKER_SYMBOL_MAP[rawSymbol];
|
|
47063
|
-
if (!symbol) {
|
|
47064
|
-
return void 0;
|
|
47065
|
-
}
|
|
47068
|
+
const symbol = MARKER_SYMBOL_MAP[rawSymbol] ?? "auto";
|
|
47066
47069
|
const result = { symbol };
|
|
47067
47070
|
const sizeNode = xmlLookup.getChildByLocalName(markerNode, "size");
|
|
47068
47071
|
const size = Number(sizeNode?.["@_val"]);
|
|
@@ -48337,6 +48340,13 @@ function safeInt3(val2) {
|
|
|
48337
48340
|
const n = parseInt(String(val2), 10);
|
|
48338
48341
|
return Number.isFinite(n) ? n : void 0;
|
|
48339
48342
|
}
|
|
48343
|
+
function hasLocalName(node, name) {
|
|
48344
|
+
if (Object.hasOwn(node, name)) {
|
|
48345
|
+
return true;
|
|
48346
|
+
}
|
|
48347
|
+
const suffix = `:${name}`;
|
|
48348
|
+
return Object.keys(node).some((key2) => key2.endsWith(suffix));
|
|
48349
|
+
}
|
|
48340
48350
|
function parseChartAxes(plotArea, xmlLookup, colorParser, getLocalName2, resolveTypeface) {
|
|
48341
48351
|
const result = [];
|
|
48342
48352
|
for (const key2 of Object.keys(plotArea)) {
|
|
@@ -48432,20 +48442,24 @@ function parseSingleAxis(axisNode, axisType, xmlLookup, colorParser, getLocalNam
|
|
|
48432
48442
|
result,
|
|
48433
48443
|
(parent, name) => xmlLookup.getChildByLocalName(parent, name)
|
|
48434
48444
|
);
|
|
48435
|
-
|
|
48436
|
-
if (majorGrid) {
|
|
48445
|
+
if (hasLocalName(axisNode, "majorGridlines")) {
|
|
48437
48446
|
result.majorGridlines = true;
|
|
48438
48447
|
result.majorGridlinesSpPr = parseShapeProps(
|
|
48439
|
-
xmlLookup.getChildByLocalName(
|
|
48448
|
+
xmlLookup.getChildByLocalName(
|
|
48449
|
+
xmlLookup.getChildByLocalName(axisNode, "majorGridlines"),
|
|
48450
|
+
"spPr"
|
|
48451
|
+
),
|
|
48440
48452
|
xmlLookup,
|
|
48441
48453
|
colorParser
|
|
48442
48454
|
);
|
|
48443
48455
|
}
|
|
48444
|
-
|
|
48445
|
-
if (minorGrid) {
|
|
48456
|
+
if (hasLocalName(axisNode, "minorGridlines")) {
|
|
48446
48457
|
result.minorGridlines = true;
|
|
48447
48458
|
result.minorGridlinesSpPr = parseShapeProps(
|
|
48448
|
-
xmlLookup.getChildByLocalName(
|
|
48459
|
+
xmlLookup.getChildByLocalName(
|
|
48460
|
+
xmlLookup.getChildByLocalName(axisNode, "minorGridlines"),
|
|
48461
|
+
"spPr"
|
|
48462
|
+
),
|
|
48449
48463
|
xmlLookup,
|
|
48450
48464
|
colorParser
|
|
48451
48465
|
);
|
|
@@ -48648,20 +48662,24 @@ function parseSingleCxAxis(axisNode, xmlLookup, colorParser, resolveTypeface) {
|
|
|
48648
48662
|
if (formatCode) {
|
|
48649
48663
|
result.numFmt = { formatCode, sourceLinked: numFmtNode?.["@_sourceLinked"] === "1" };
|
|
48650
48664
|
}
|
|
48651
|
-
|
|
48652
|
-
if (majorGrid) {
|
|
48665
|
+
if (hasLocalName(axisNode, "majorGridlines")) {
|
|
48653
48666
|
result.majorGridlines = true;
|
|
48654
48667
|
result.majorGridlinesSpPr = parseShapeProps(
|
|
48655
|
-
xmlLookup.getChildByLocalName(
|
|
48668
|
+
xmlLookup.getChildByLocalName(
|
|
48669
|
+
xmlLookup.getChildByLocalName(axisNode, "majorGridlines"),
|
|
48670
|
+
"spPr"
|
|
48671
|
+
),
|
|
48656
48672
|
xmlLookup,
|
|
48657
48673
|
colorParser
|
|
48658
48674
|
);
|
|
48659
48675
|
}
|
|
48660
|
-
|
|
48661
|
-
if (minorGrid) {
|
|
48676
|
+
if (hasLocalName(axisNode, "minorGridlines")) {
|
|
48662
48677
|
result.minorGridlines = true;
|
|
48663
48678
|
result.minorGridlinesSpPr = parseShapeProps(
|
|
48664
|
-
xmlLookup.getChildByLocalName(
|
|
48679
|
+
xmlLookup.getChildByLocalName(
|
|
48680
|
+
xmlLookup.getChildByLocalName(axisNode, "minorGridlines"),
|
|
48681
|
+
"spPr"
|
|
48682
|
+
),
|
|
48665
48683
|
xmlLookup,
|
|
48666
48684
|
colorParser
|
|
48667
48685
|
);
|
|
@@ -48700,6 +48718,7 @@ function parseCxAxes(plotArea, xmlLookup, colorParser, resolveTypeface) {
|
|
|
48700
48718
|
var NO_COLOR;
|
|
48701
48719
|
var init_chart_cx_axis_parser = __esm({
|
|
48702
48720
|
"src/core/utils/chart-cx-axis-parser.ts"() {
|
|
48721
|
+
init_chart_axis_parser();
|
|
48703
48722
|
init_chart_series_detail_parser();
|
|
48704
48723
|
init_chart_title_xml_ops();
|
|
48705
48724
|
NO_COLOR = { parseColor: () => void 0 };
|
|
@@ -97010,6 +97029,7 @@ var PptxHandlerRuntime10;
|
|
|
97010
97029
|
var init_PptxHandlerRuntimePresentationProps = __esm({
|
|
97011
97030
|
"src/core/core/runtime/PptxHandlerRuntimePresentationProps.ts"() {
|
|
97012
97031
|
init_chart_data_label_parser();
|
|
97032
|
+
init_chart_def_rpr_style();
|
|
97013
97033
|
init_chart_legend_serializer();
|
|
97014
97034
|
init_chart_title_style_parser();
|
|
97015
97035
|
init_pptx_presentation_props_helpers();
|
|
@@ -97164,6 +97184,18 @@ var init_PptxHandlerRuntimePresentationProps = __esm({
|
|
|
97164
97184
|
if (entries.length > 0) {
|
|
97165
97185
|
style.legendEntries = entries;
|
|
97166
97186
|
}
|
|
97187
|
+
const legendTxPr = this.xmlLookupService.getChildByLocalName(legend, "txPr");
|
|
97188
|
+
const chartSpaceTxPr = this.xmlLookupService.getChildByLocalName(chartSpace, "txPr");
|
|
97189
|
+
const legendDefRPr = resolveTxPrDefRPr(legendTxPr ?? chartSpaceTxPr, this.xmlLookupService);
|
|
97190
|
+
const legendTextStyle = parseDefRPrTextStyle(
|
|
97191
|
+
legendDefRPr,
|
|
97192
|
+
this.xmlLookupService,
|
|
97193
|
+
{ parseColor: (node) => this.parseColor(node) },
|
|
97194
|
+
(raw) => this.resolveThemeTypeface(raw) ?? raw
|
|
97195
|
+
);
|
|
97196
|
+
if (legendTextStyle) {
|
|
97197
|
+
style.legendTextStyle = legendTextStyle;
|
|
97198
|
+
}
|
|
97167
97199
|
}
|
|
97168
97200
|
const title = this.xmlLookupService.getChildByLocalName(chartRoot, "title");
|
|
97169
97201
|
if (title) {
|
|
@@ -122317,6 +122349,9 @@ var init_PptxHandlerRuntimeChartParsing = __esm({
|
|
|
122317
122349
|
buildChartSeries(seriesList, categories, seriesChartType, axisId, containerChartType) {
|
|
122318
122350
|
return seriesList.map((seriesNode, seriesIndex) => {
|
|
122319
122351
|
const seriesName = this.extractChartSeriesName(seriesNode);
|
|
122352
|
+
const rawIdx = this.xmlLookupService.getChildByLocalName(seriesNode, "idx")?.["@_val"];
|
|
122353
|
+
const parsedIdx = rawIdx !== void 0 ? Number.parseInt(String(rawIdx), 10) : Number.NaN;
|
|
122354
|
+
const idx = Number.isFinite(parsedIdx) ? parsedIdx : void 0;
|
|
122320
122355
|
const valNode2 = this.xmlLookupService.getChildByLocalName(seriesNode, "val") || this.xmlLookupService.getChildByLocalName(seriesNode, "yVal");
|
|
122321
122356
|
const expanded = extractSeriesNumbersWithBlanks(valNode2, this.xmlLookupService);
|
|
122322
122357
|
const hasBlanks = expanded.some((value) => value === null);
|
|
@@ -122406,6 +122441,7 @@ var init_PptxHandlerRuntimeChartParsing = __esm({
|
|
|
122406
122441
|
) : void 0;
|
|
122407
122442
|
return {
|
|
122408
122443
|
name: seriesName.trim().length > 0 ? seriesName : `Series ${seriesIndex + 1}`,
|
|
122444
|
+
...idx !== void 0 ? { idx } : {},
|
|
122409
122445
|
values: fallbackValues,
|
|
122410
122446
|
...blanks ? { blanks } : {},
|
|
122411
122447
|
...xValues.length > 0 ? { xValues } : {},
|
|
@@ -150568,7 +150604,20 @@ function compileEquationTemplateMathMl() {
|
|
|
150568
150604
|
}
|
|
150569
150605
|
var NICE_STEPS = [1, 2, 2.5, 5, 10];
|
|
150570
150606
|
var HEADROOM = 0.05;
|
|
150607
|
+
var POINTS_PER_GRIDLINE = 20;
|
|
150608
|
+
var MIN_TARGET_INTERVALS = 1;
|
|
150609
|
+
var MAX_TARGET_INTERVALS = 10;
|
|
150610
|
+
var PX_PER_POINT = 4 / 3;
|
|
150611
|
+
var DEFAULT_TARGET_INTERVALS = 4;
|
|
150571
150612
|
var ZERO_ANCHOR_RATIO = 5 / 6;
|
|
150613
|
+
function axisTargetIntervals(plotHeightPx) {
|
|
150614
|
+
if (!Number.isFinite(plotHeightPx) || plotHeightPx <= 0) {
|
|
150615
|
+
return DEFAULT_TARGET_INTERVALS;
|
|
150616
|
+
}
|
|
150617
|
+
const plotHeightPt = plotHeightPx / PX_PER_POINT;
|
|
150618
|
+
const raw = Math.round(plotHeightPt / POINTS_PER_GRIDLINE);
|
|
150619
|
+
return Math.min(MAX_TARGET_INTERVALS, Math.max(MIN_TARGET_INTERVALS, raw));
|
|
150620
|
+
}
|
|
150572
150621
|
function niceAxisStep(value) {
|
|
150573
150622
|
if (!Number.isFinite(value) || value <= 0) {
|
|
150574
150623
|
return 1;
|
|
@@ -150584,7 +150633,7 @@ function snap(value, unit, direction) {
|
|
|
150584
150633
|
const rounded = direction === "up" ? Math.ceil(scaled - 1e-9) : Math.floor(scaled + 1e-9);
|
|
150585
150634
|
return rounded * unit;
|
|
150586
150635
|
}
|
|
150587
|
-
function niceValueAxisBounds(dataMin, dataMax, targetIntervals =
|
|
150636
|
+
function niceValueAxisBounds(dataMin, dataMax, targetIntervals = DEFAULT_TARGET_INTERVALS) {
|
|
150588
150637
|
if (!Number.isFinite(dataMin) || !Number.isFinite(dataMax)) {
|
|
150589
150638
|
return { min: 0, max: 1, majorUnit: 0.5 };
|
|
150590
150639
|
}
|
|
@@ -150988,14 +151037,15 @@ function getChartStylePalette(styleId) {
|
|
|
150988
151037
|
}
|
|
150989
151038
|
return palette;
|
|
150990
151039
|
}
|
|
150991
|
-
function computeValueRange(series) {
|
|
151040
|
+
function computeValueRange(series, plotHeightPx) {
|
|
150992
151041
|
const allValues = series.flatMap((s) => s.values);
|
|
150993
151042
|
if (allValues.length === 0) {
|
|
150994
151043
|
return { min: 0, max: 1, span: 1 };
|
|
150995
151044
|
}
|
|
150996
151045
|
const { min, max, majorUnit } = niceValueAxisBounds(
|
|
150997
151046
|
Math.min(...allValues),
|
|
150998
|
-
Math.max(...allValues)
|
|
151047
|
+
Math.max(...allValues),
|
|
151048
|
+
plotHeightPx !== void 0 ? axisTargetIntervals(plotHeightPx) : void 0
|
|
150999
151049
|
);
|
|
151000
151050
|
return { min, max, span: Math.max(max - min, Number.EPSILON), majorUnit };
|
|
151001
151051
|
}
|
|
@@ -151096,10 +151146,10 @@ function computeLogValueRange(series, logBase) {
|
|
|
151096
151146
|
logBase
|
|
151097
151147
|
};
|
|
151098
151148
|
}
|
|
151099
|
-
function computeValueRangeForAxis(series, axis) {
|
|
151149
|
+
function computeValueRangeForAxis(series, axis, plotHeightPx) {
|
|
151100
151150
|
const requestedLogBase = axis?.logBase ?? 10;
|
|
151101
151151
|
const logBase = axis?.logScale && Number.isFinite(requestedLogBase) && requestedLogBase > 1 ? requestedLogBase : axis?.logScale ? 10 : void 0;
|
|
151102
|
-
const automatic = logBase ? computeLogValueRange(series, logBase) : computeValueRange(series);
|
|
151152
|
+
const automatic = logBase ? computeLogValueRange(series, logBase) : computeValueRange(series, plotHeightPx);
|
|
151103
151153
|
const validMin = typeof axis?.min === "number" && Number.isFinite(axis.min) && (!logBase || axis.min > 0) ? axis.min : void 0;
|
|
151104
151154
|
const validMax = typeof axis?.max === "number" && Number.isFinite(axis.max) && (!logBase || axis.max > 0) ? axis.max : void 0;
|
|
151105
151155
|
const min = validMin ?? automatic.min;
|
|
@@ -151176,9 +151226,9 @@ function generateMinorAxisTicks(range, axis) {
|
|
|
151176
151226
|
(value) => Math.abs(value / majorUnit - Math.round(value / majorUnit)) > tolerance
|
|
151177
151227
|
);
|
|
151178
151228
|
}
|
|
151179
|
-
function computeValueRangeForChart(series, axes) {
|
|
151229
|
+
function computeValueRangeForChart(series, axes, plotHeightPx) {
|
|
151180
151230
|
const primaryAxis = axes?.find((axis) => axis.axisType === "valAx" && axis.axPos === "l") ?? axes?.find((axis) => axis.axisType === "valAx" && axis.axPos !== "r");
|
|
151181
|
-
return computeValueRangeForAxis(series, primaryAxis);
|
|
151231
|
+
return computeValueRangeForAxis(series, primaryAxis, plotHeightPx);
|
|
151182
151232
|
}
|
|
151183
151233
|
var DISPLAY_UNIT_DIVISORS = {
|
|
151184
151234
|
hundreds: 100,
|
|
@@ -151326,6 +151376,113 @@ function shade2(hex4, amount) {
|
|
|
151326
151376
|
const [r, g2, b] = hexToRgb3(hex4);
|
|
151327
151377
|
return rgbToHex2(r * (1 - amount), g2 * (1 - amount), b * (1 - amount));
|
|
151328
151378
|
}
|
|
151379
|
+
var AUTOMATIC_MARKER_CYCLE = [
|
|
151380
|
+
"diamond",
|
|
151381
|
+
"square",
|
|
151382
|
+
"triangle",
|
|
151383
|
+
"x",
|
|
151384
|
+
"star",
|
|
151385
|
+
"circle",
|
|
151386
|
+
"plus",
|
|
151387
|
+
"dot",
|
|
151388
|
+
"dash"
|
|
151389
|
+
];
|
|
151390
|
+
function automaticMarkerSymbol(seriesIdx) {
|
|
151391
|
+
const length = AUTOMATIC_MARKER_CYCLE.length;
|
|
151392
|
+
const normalized = (seriesIdx % length + length) % length;
|
|
151393
|
+
return AUTOMATIC_MARKER_CYCLE[normalized];
|
|
151394
|
+
}
|
|
151395
|
+
function markerRadius(size, defaultRadius2) {
|
|
151396
|
+
if (size === void 0 || !Number.isFinite(size) || size <= 0) {
|
|
151397
|
+
return defaultRadius2;
|
|
151398
|
+
}
|
|
151399
|
+
return size / 2;
|
|
151400
|
+
}
|
|
151401
|
+
function polygonPoints(vertices) {
|
|
151402
|
+
return vertices.map(([x, y]) => `${x.toFixed(2)},${y.toFixed(2)}`).join(" ");
|
|
151403
|
+
}
|
|
151404
|
+
function starVertices(cx, cy, r) {
|
|
151405
|
+
const inner = r * 0.5;
|
|
151406
|
+
const out = [];
|
|
151407
|
+
for (let i2 = 0; i2 < 10; i2++) {
|
|
151408
|
+
const radius = i2 % 2 === 0 ? r : inner;
|
|
151409
|
+
const angle = -Math.PI / 2 + Math.PI * i2 / 5;
|
|
151410
|
+
out.push([cx + radius * Math.cos(angle), cy + radius * Math.sin(angle)]);
|
|
151411
|
+
}
|
|
151412
|
+
return out;
|
|
151413
|
+
}
|
|
151414
|
+
function buildMarkerPrimitive(input) {
|
|
151415
|
+
const { symbol, cx, cy, fill, part } = input;
|
|
151416
|
+
if (symbol === "none") {
|
|
151417
|
+
return null;
|
|
151418
|
+
}
|
|
151419
|
+
const r = markerRadius(input.size, input.defaultRadius);
|
|
151420
|
+
const stroke = fill;
|
|
151421
|
+
switch (symbol) {
|
|
151422
|
+
case "square":
|
|
151423
|
+
return { kind: "rect", x: cx - r, y: cy - r, w: r * 2, h: r * 2, fill, part };
|
|
151424
|
+
case "dash":
|
|
151425
|
+
return { kind: "rect", x: cx - r, y: cy - r * 0.32, w: r * 2, h: r * 0.64, fill, part };
|
|
151426
|
+
case "diamond":
|
|
151427
|
+
return {
|
|
151428
|
+
kind: "polygon",
|
|
151429
|
+
points: polygonPoints([
|
|
151430
|
+
[cx, cy - r],
|
|
151431
|
+
[cx + r, cy],
|
|
151432
|
+
[cx, cy + r],
|
|
151433
|
+
[cx - r, cy]
|
|
151434
|
+
]),
|
|
151435
|
+
fill,
|
|
151436
|
+
stroke,
|
|
151437
|
+
strokeWidth: 0,
|
|
151438
|
+
part
|
|
151439
|
+
};
|
|
151440
|
+
case "triangle":
|
|
151441
|
+
return {
|
|
151442
|
+
kind: "polygon",
|
|
151443
|
+
points: polygonPoints([
|
|
151444
|
+
[cx, cy - r],
|
|
151445
|
+
[cx + r * 0.9, cy + r * 0.75],
|
|
151446
|
+
[cx - r * 0.9, cy + r * 0.75]
|
|
151447
|
+
]),
|
|
151448
|
+
fill,
|
|
151449
|
+
stroke,
|
|
151450
|
+
strokeWidth: 0,
|
|
151451
|
+
part
|
|
151452
|
+
};
|
|
151453
|
+
case "star":
|
|
151454
|
+
return {
|
|
151455
|
+
kind: "polygon",
|
|
151456
|
+
points: polygonPoints(starVertices(cx, cy, r)),
|
|
151457
|
+
fill,
|
|
151458
|
+
stroke,
|
|
151459
|
+
strokeWidth: 0,
|
|
151460
|
+
part
|
|
151461
|
+
};
|
|
151462
|
+
case "plus":
|
|
151463
|
+
return {
|
|
151464
|
+
kind: "path",
|
|
151465
|
+
d: `M${(cx - r).toFixed(2)},${cy.toFixed(2)} L${(cx + r).toFixed(2)},${cy.toFixed(2)} M${cx.toFixed(2)},${(cy - r).toFixed(2)} L${cx.toFixed(2)},${(cy + r).toFixed(2)}`,
|
|
151466
|
+
fill: "none",
|
|
151467
|
+
stroke,
|
|
151468
|
+
strokeWidth: Math.max(1, r * 0.4),
|
|
151469
|
+
part
|
|
151470
|
+
};
|
|
151471
|
+
case "x":
|
|
151472
|
+
return {
|
|
151473
|
+
kind: "path",
|
|
151474
|
+
d: `M${(cx - r).toFixed(2)},${(cy - r).toFixed(2)} L${(cx + r).toFixed(2)},${(cy + r).toFixed(2)} M${(cx + r).toFixed(2)},${(cy - r).toFixed(2)} L${(cx - r).toFixed(2)},${(cy + r).toFixed(2)}`,
|
|
151475
|
+
fill: "none",
|
|
151476
|
+
stroke,
|
|
151477
|
+
strokeWidth: Math.max(1, r * 0.4),
|
|
151478
|
+
part
|
|
151479
|
+
};
|
|
151480
|
+
case "dot":
|
|
151481
|
+
return { kind: "circle", cx, cy, r: Math.max(r * 0.6, 1), fill, part };
|
|
151482
|
+
default:
|
|
151483
|
+
return { kind: "circle", cx, cy, r, fill, part };
|
|
151484
|
+
}
|
|
151485
|
+
}
|
|
151329
151486
|
function findDataPoint(series, pointIndex) {
|
|
151330
151487
|
return series.dataPoints?.find((p) => p.idx === pointIndex);
|
|
151331
151488
|
}
|
|
@@ -151340,10 +151497,13 @@ function resolveDataPointExplosion(series, pointIndex) {
|
|
|
151340
151497
|
const point = findDataPoint(series, pointIndex);
|
|
151341
151498
|
return point?.explosion ?? series.explosion ?? 0;
|
|
151342
151499
|
}
|
|
151343
|
-
function resolveDataPointMarker(series, pointIndex) {
|
|
151500
|
+
function resolveDataPointMarker(series, pointIndex, seriesPosition = 0) {
|
|
151344
151501
|
const point = findDataPoint(series, pointIndex)?.marker;
|
|
151502
|
+
const hasMarker = point !== void 0 || series.marker !== void 0;
|
|
151503
|
+
const rawSymbol = point?.symbol ?? series.marker?.symbol;
|
|
151504
|
+
const symbol = hasMarker && (rawSymbol === void 0 || rawSymbol === "auto") ? automaticMarkerSymbol(series.idx ?? seriesPosition) : rawSymbol;
|
|
151345
151505
|
return {
|
|
151346
|
-
symbol
|
|
151506
|
+
symbol,
|
|
151347
151507
|
size: point?.size ?? series.marker?.size,
|
|
151348
151508
|
fill: point?.spPr?.fillColor ?? series.marker?.spPr?.fillColor
|
|
151349
151509
|
};
|
|
@@ -151609,97 +151769,6 @@ function computeChartLegendLayout(vm) {
|
|
|
151609
151769
|
};
|
|
151610
151770
|
});
|
|
151611
151771
|
}
|
|
151612
|
-
function markerRadius(size, defaultRadius2) {
|
|
151613
|
-
if (size === void 0 || !Number.isFinite(size) || size <= 0) {
|
|
151614
|
-
return defaultRadius2;
|
|
151615
|
-
}
|
|
151616
|
-
return size / 2;
|
|
151617
|
-
}
|
|
151618
|
-
function polygonPoints(vertices) {
|
|
151619
|
-
return vertices.map(([x, y]) => `${x.toFixed(2)},${y.toFixed(2)}`).join(" ");
|
|
151620
|
-
}
|
|
151621
|
-
function starVertices(cx, cy, r) {
|
|
151622
|
-
const inner = r * 0.5;
|
|
151623
|
-
const out = [];
|
|
151624
|
-
for (let i2 = 0; i2 < 10; i2++) {
|
|
151625
|
-
const radius = i2 % 2 === 0 ? r : inner;
|
|
151626
|
-
const angle = -Math.PI / 2 + Math.PI * i2 / 5;
|
|
151627
|
-
out.push([cx + radius * Math.cos(angle), cy + radius * Math.sin(angle)]);
|
|
151628
|
-
}
|
|
151629
|
-
return out;
|
|
151630
|
-
}
|
|
151631
|
-
function buildMarkerPrimitive(input) {
|
|
151632
|
-
const { symbol, cx, cy, fill, part } = input;
|
|
151633
|
-
if (symbol === "none") {
|
|
151634
|
-
return null;
|
|
151635
|
-
}
|
|
151636
|
-
const r = markerRadius(input.size, input.defaultRadius);
|
|
151637
|
-
const stroke = fill;
|
|
151638
|
-
switch (symbol) {
|
|
151639
|
-
case "square":
|
|
151640
|
-
return { kind: "rect", x: cx - r, y: cy - r, w: r * 2, h: r * 2, fill, part };
|
|
151641
|
-
case "dash":
|
|
151642
|
-
return { kind: "rect", x: cx - r, y: cy - r * 0.32, w: r * 2, h: r * 0.64, fill, part };
|
|
151643
|
-
case "diamond":
|
|
151644
|
-
return {
|
|
151645
|
-
kind: "polygon",
|
|
151646
|
-
points: polygonPoints([
|
|
151647
|
-
[cx, cy - r],
|
|
151648
|
-
[cx + r, cy],
|
|
151649
|
-
[cx, cy + r],
|
|
151650
|
-
[cx - r, cy]
|
|
151651
|
-
]),
|
|
151652
|
-
fill,
|
|
151653
|
-
stroke,
|
|
151654
|
-
strokeWidth: 0,
|
|
151655
|
-
part
|
|
151656
|
-
};
|
|
151657
|
-
case "triangle":
|
|
151658
|
-
return {
|
|
151659
|
-
kind: "polygon",
|
|
151660
|
-
points: polygonPoints([
|
|
151661
|
-
[cx, cy - r],
|
|
151662
|
-
[cx + r * 0.9, cy + r * 0.75],
|
|
151663
|
-
[cx - r * 0.9, cy + r * 0.75]
|
|
151664
|
-
]),
|
|
151665
|
-
fill,
|
|
151666
|
-
stroke,
|
|
151667
|
-
strokeWidth: 0,
|
|
151668
|
-
part
|
|
151669
|
-
};
|
|
151670
|
-
case "star":
|
|
151671
|
-
return {
|
|
151672
|
-
kind: "polygon",
|
|
151673
|
-
points: polygonPoints(starVertices(cx, cy, r)),
|
|
151674
|
-
fill,
|
|
151675
|
-
stroke,
|
|
151676
|
-
strokeWidth: 0,
|
|
151677
|
-
part
|
|
151678
|
-
};
|
|
151679
|
-
case "plus":
|
|
151680
|
-
return {
|
|
151681
|
-
kind: "path",
|
|
151682
|
-
d: `M${(cx - r).toFixed(2)},${cy.toFixed(2)} L${(cx + r).toFixed(2)},${cy.toFixed(2)} M${cx.toFixed(2)},${(cy - r).toFixed(2)} L${cx.toFixed(2)},${(cy + r).toFixed(2)}`,
|
|
151683
|
-
fill: "none",
|
|
151684
|
-
stroke,
|
|
151685
|
-
strokeWidth: Math.max(1, r * 0.4),
|
|
151686
|
-
part
|
|
151687
|
-
};
|
|
151688
|
-
case "x":
|
|
151689
|
-
return {
|
|
151690
|
-
kind: "path",
|
|
151691
|
-
d: `M${(cx - r).toFixed(2)},${(cy - r).toFixed(2)} L${(cx + r).toFixed(2)},${(cy + r).toFixed(2)} M${(cx + r).toFixed(2)},${(cy - r).toFixed(2)} L${(cx - r).toFixed(2)},${(cy + r).toFixed(2)}`,
|
|
151692
|
-
fill: "none",
|
|
151693
|
-
stroke,
|
|
151694
|
-
strokeWidth: Math.max(1, r * 0.4),
|
|
151695
|
-
part
|
|
151696
|
-
};
|
|
151697
|
-
case "dot":
|
|
151698
|
-
return { kind: "circle", cx, cy, r: Math.max(r * 0.6, 1), fill, part };
|
|
151699
|
-
default:
|
|
151700
|
-
return { kind: "circle", cx, cy, r, fill, part };
|
|
151701
|
-
}
|
|
151702
|
-
}
|
|
151703
151772
|
var LEGEND_LINE_SWATCH_WIDTH = 2;
|
|
151704
151773
|
var LEGEND_MARKER_RADIUS = 3;
|
|
151705
151774
|
var SWATCH_CENTER_Y = -2;
|
|
@@ -151707,8 +151776,8 @@ var SWATCH_WIDTH = 10;
|
|
|
151707
151776
|
function resolveLegendSwatchKind(kind) {
|
|
151708
151777
|
return kind === "line" || kind === "scatter" ? "line" : "rect";
|
|
151709
151778
|
}
|
|
151710
|
-
function buildLineLegendSwatch(series, color2) {
|
|
151711
|
-
const resolved = resolveDataPointMarker(series, -1), primitives = [];
|
|
151779
|
+
function buildLineLegendSwatch(series, color2, seriesPosition = 0) {
|
|
151780
|
+
const resolved = resolveDataPointMarker(series, -1, seriesPosition), primitives = [];
|
|
151712
151781
|
if (!series.lineNoFill) {
|
|
151713
151782
|
primitives.push({
|
|
151714
151783
|
kind: "line",
|
|
@@ -151825,7 +151894,7 @@ function paletteColor2(index, colorPalette) {
|
|
|
151825
151894
|
function seriesColor2(series, index, colorPalette) {
|
|
151826
151895
|
return series.color ?? series.marker?.spPr?.fillColor ?? paletteColor2(index, colorPalette);
|
|
151827
151896
|
}
|
|
151828
|
-
function computeValueRange2(series) {
|
|
151897
|
+
function computeValueRange2(series, plotHeightPx) {
|
|
151829
151898
|
let dataMin = Number.POSITIVE_INFINITY, dataMax = Number.NEGATIVE_INFINITY;
|
|
151830
151899
|
for (const item of series) {
|
|
151831
151900
|
for (const value of item.values) {
|
|
@@ -151840,10 +151909,14 @@ function computeValueRange2(series) {
|
|
|
151840
151909
|
if (dataMin === Number.POSITIVE_INFINITY) {
|
|
151841
151910
|
return { min: 0, max: 1, span: 1 };
|
|
151842
151911
|
}
|
|
151843
|
-
const { min, max, majorUnit } = niceValueAxisBounds(
|
|
151912
|
+
const { min, max, majorUnit } = niceValueAxisBounds(
|
|
151913
|
+
dataMin,
|
|
151914
|
+
dataMax,
|
|
151915
|
+
plotHeightPx !== void 0 ? axisTargetIntervals(plotHeightPx) : void 0
|
|
151916
|
+
);
|
|
151844
151917
|
return { min, max, span: Math.max(max - min, Number.EPSILON), majorUnit };
|
|
151845
151918
|
}
|
|
151846
|
-
function computeStackedValueRange(series, catCount) {
|
|
151919
|
+
function computeStackedValueRange(series, catCount, plotHeightPx) {
|
|
151847
151920
|
let maxSum = 0, minSum = 0;
|
|
151848
151921
|
for (let ci = 0; ci < catCount; ci++) {
|
|
151849
151922
|
let pos2 = 0, neg = 0;
|
|
@@ -151858,7 +151931,11 @@ function computeStackedValueRange(series, catCount) {
|
|
|
151858
151931
|
maxSum = Math.max(maxSum, pos2);
|
|
151859
151932
|
minSum = Math.min(minSum, neg);
|
|
151860
151933
|
}
|
|
151861
|
-
const { min, max, majorUnit } = niceValueAxisBounds(
|
|
151934
|
+
const { min, max, majorUnit } = niceValueAxisBounds(
|
|
151935
|
+
Math.min(minSum, 0),
|
|
151936
|
+
Math.max(maxSum, 0),
|
|
151937
|
+
plotHeightPx !== void 0 ? axisTargetIntervals(plotHeightPx) : void 0
|
|
151938
|
+
);
|
|
151862
151939
|
return { min, max, span: Math.max(max - min, Number.EPSILON), majorUnit };
|
|
151863
151940
|
}
|
|
151864
151941
|
function valueToY2(val2, range, topY, bottomY) {
|
|
@@ -151898,7 +151975,7 @@ function buildLegend(series, colorPalette, svgWidth, legendPos, svgHeight, plotT
|
|
|
151898
151975
|
return {
|
|
151899
151976
|
color: color2,
|
|
151900
151977
|
label: s.name,
|
|
151901
|
-
...kind === "line" ? { lineSwatch: buildLineLegendSwatch(s, color2) } : {}
|
|
151978
|
+
...kind === "line" ? { lineSwatch: buildLineLegendSwatch(s, color2, i2) } : {}
|
|
151902
151979
|
};
|
|
151903
151980
|
});
|
|
151904
151981
|
let legendX = svgWidth / 2, legendY = svgHeight - 8, legendAnchor = "middle";
|
|
@@ -152595,8 +152672,8 @@ function xyMarkTooltip(seriesName, xVal, yVal, numberFormat) {
|
|
|
152595
152672
|
const y = formatAxisValue2(yVal, numberFormat), coords = xVal !== void 0 ? `(${formatAxisValue2(xVal)}, ${y})` : y;
|
|
152596
152673
|
return seriesName.length > 0 ? `${seriesName}: ${coords}` : coords;
|
|
152597
152674
|
}
|
|
152598
|
-
function pushMarker(out, series, pointIndex, cx, cy, fill, defaultRadius2, part, opacity2, title) {
|
|
152599
|
-
const marker = resolveDataPointMarker(series, pointIndex), m = buildMarkerPrimitive({
|
|
152675
|
+
function pushMarker(out, series, pointIndex, cx, cy, fill, defaultRadius2, part, opacity2, title, seriesPosition = part.seriesIndex ?? 0) {
|
|
152676
|
+
const marker = resolveDataPointMarker(series, pointIndex, seriesPosition), m = buildMarkerPrimitive({
|
|
152600
152677
|
symbol: marker.symbol,
|
|
152601
152678
|
size: marker.size,
|
|
152602
152679
|
cx,
|
|
@@ -154361,7 +154438,7 @@ function barFill(chartData, series, seriesIndex, pointIndex) {
|
|
|
154361
154438
|
return resolveDataPointFill(series, pointIndex, paletteColor2(seriesIndex, palette)) ?? seriesColor2(series, seriesIndex, palette);
|
|
154362
154439
|
}
|
|
154363
154440
|
function buildHorizontalBarViewModel(element, chartData, categoryLabels) {
|
|
154364
|
-
const layout = computePlotLayout(element.width, element.height, chartData, true), catCount = Math.max(categoryLabels.length, 1), series = chartData.series, grouping = chartData.grouping ?? "clustered", isStacked = grouping === "stacked" || grouping === "percentStacked", isPercent = grouping === "percentStacked", range = isPercent ? { min: 0, max: 100, span: 100 } : isStacked ? computeStackedValueRange(series, catCount) : computeValueRangeForChart(series, chartData.axes), { gridlines, axisLabels } = buildTransposedValueAxis(range, layout), zeroX = valueToX(0, range, layout.plotLeft, layout.plotRight), zeroLine = range.min < 0 && range.max > 0 ? {
|
|
154441
|
+
const layout = computePlotLayout(element.width, element.height, chartData, true), catCount = Math.max(categoryLabels.length, 1), series = chartData.series, grouping = chartData.grouping ?? "clustered", isStacked = grouping === "stacked" || grouping === "percentStacked", isPercent = grouping === "percentStacked", range = isPercent ? { min: 0, max: 100, span: 100 } : isStacked ? computeStackedValueRange(series, catCount, layout.plotWidth) : computeValueRangeForChart(series, chartData.axes, layout.plotWidth), { gridlines, axisLabels } = buildTransposedValueAxis(range, layout), zeroX = valueToX(0, range, layout.plotLeft, layout.plotRight), zeroLine = range.min < 0 && range.max > 0 ? {
|
|
154365
154442
|
kind: "line",
|
|
154366
154443
|
x1: zeroX,
|
|
154367
154444
|
y1: layout.plotTop,
|
|
@@ -154947,11 +155024,11 @@ function computeTrendlinePrimitives(chartData, catCount, layout, range, mode = "
|
|
|
154947
155024
|
});
|
|
154948
155025
|
return out;
|
|
154949
155026
|
}
|
|
154950
|
-
function stackedRange(chartData, catCount, isPercent) {
|
|
155027
|
+
function stackedRange(chartData, catCount, isPercent, plotHeightPx) {
|
|
154951
155028
|
if (isPercent) {
|
|
154952
155029
|
return { min: 0, max: 100, span: 100 };
|
|
154953
155030
|
}
|
|
154954
|
-
return computeStackedValueRange(chartData.series, catCount);
|
|
155031
|
+
return computeStackedValueRange(chartData.series, catCount, plotHeightPx);
|
|
154955
155032
|
}
|
|
154956
155033
|
function buildCartesianViewModel(element, chartData, categoryLabels, kind) {
|
|
154957
155034
|
if (kind === "bar" && chartData.barDirection === "bar") {
|
|
@@ -154972,15 +155049,17 @@ function buildCartesianViewModel(element, chartData, categoryLabels, kind) {
|
|
|
154972
155049
|
(axis) => axis.axisType === "valAx" && axis.axPos !== "r"
|
|
154973
155050
|
);
|
|
154974
155051
|
const primaryRange = isStacked ? {
|
|
154975
|
-
...stackedRange(chartData, catCount, isPercent),
|
|
155052
|
+
...stackedRange(chartData, catCount, isPercent, layout.plotHeight),
|
|
154976
155053
|
...primaryAxis?.orientation === "maxMin" ? { reverseOrder: true } : {}
|
|
154977
155054
|
} : computeValueRangeForChart(
|
|
154978
155055
|
primaryPlotSeries.length > 0 ? primaryPlotSeries : chartData.series,
|
|
154979
|
-
chartData.axes
|
|
155056
|
+
chartData.axes,
|
|
155057
|
+
layout.plotHeight
|
|
154980
155058
|
);
|
|
154981
155059
|
const secondaryRange = useSecondary && secondaryPlotSeries.length > 0 ? computeValueRangeForAxis(
|
|
154982
155060
|
secondaryPlotSeries,
|
|
154983
|
-
chartData.axes?.find((axis) => axis.axisType === "valAx" && axis.axPos === "r")
|
|
155061
|
+
chartData.axes?.find((axis) => axis.axisType === "valAx" && axis.axPos === "r"),
|
|
155062
|
+
layout.plotHeight
|
|
154984
155063
|
) : void 0;
|
|
154985
155064
|
const axisRes = buildCartesianAxes(chartData, layout, primaryRange, secondaryRange, catCount);
|
|
154986
155065
|
const zeroLine = primaryRange.logScale ? void 0 : buildZeroLine(primaryRange, layout);
|
|
@@ -155246,10 +155325,11 @@ function buildComboViewModel(element, chartData, categoryLabels) {
|
|
|
155246
155325
|
const primaryAxisId = getPrimaryValueAxisId(chartData.axes);
|
|
155247
155326
|
const primaryAxis = chartData.axes?.find((axis) => axis.axisId === primaryAxisId);
|
|
155248
155327
|
const secondaryAxisFormatting = getSecondaryValueAxis(chartData.axes);
|
|
155249
|
-
const primaryRange = computeValueRangeForAxis(primarySeries, primaryAxis);
|
|
155328
|
+
const primaryRange = computeValueRangeForAxis(primarySeries, primaryAxis, layout.plotHeight);
|
|
155250
155329
|
const secondaryRange = secondary.length > 0 ? computeValueRangeForAxis(
|
|
155251
155330
|
secondary.map((entry2) => entry2.series),
|
|
155252
|
-
secondaryAxisFormatting
|
|
155331
|
+
secondaryAxisFormatting,
|
|
155332
|
+
layout.plotHeight
|
|
155253
155333
|
) : void 0;
|
|
155254
155334
|
const primaryCategoryAxis2 = chartData.axes?.find(
|
|
155255
155335
|
(axis) => (axis.axisType === "catAx" || axis.axisType === "dateAx") && axis.axisId === primaryAxis?.crossAxisId
|
|
@@ -155420,7 +155500,11 @@ function buildStockViewModel(element, chartData, categoryLabels) {
|
|
|
155420
155500
|
computeLayoutOptions(chartData.axes, chartData.dataTable, chartData.series.length)
|
|
155421
155501
|
);
|
|
155422
155502
|
const catCount = Math.max(categoryLabels.length, 1);
|
|
155423
|
-
const range = computeValueRangeForChart(
|
|
155503
|
+
const range = computeValueRangeForChart(
|
|
155504
|
+
chartData.series,
|
|
155505
|
+
chartData.axes,
|
|
155506
|
+
layout.plotHeight
|
|
155507
|
+
);
|
|
155424
155508
|
const valueAxis = chartData.axes?.find((axis) => axis.axisType === "valAx" && axis.axPos !== "r");
|
|
155425
155509
|
const categoryAxis = chartData.axes?.find(
|
|
155426
155510
|
(axis) => (axis.axisType === "catAx" || axis.axisType === "dateAx") && axis.axisId === valueAxis?.crossAxisId
|
|
@@ -156241,18 +156325,19 @@ function buildSunburstViewModel(element, chartData, categoryLabels) {
|
|
|
156241
156325
|
legendAnchor: "middle"
|
|
156242
156326
|
};
|
|
156243
156327
|
}
|
|
156244
|
-
function applyLegendEntryOverrides(legend, entries) {
|
|
156245
|
-
if (!entries || entries.length === 0) {
|
|
156328
|
+
function applyLegendEntryOverrides(legend, entries, defaultTextStyle) {
|
|
156329
|
+
if ((!entries || entries.length === 0) && !defaultTextStyle) {
|
|
156246
156330
|
return legend;
|
|
156247
156331
|
}
|
|
156248
|
-
const byIndex = new Map(entries.map((entry2) => [entry2.index, entry2]));
|
|
156332
|
+
const byIndex = new Map((entries ?? []).map((entry2) => [entry2.index, entry2]));
|
|
156249
156333
|
const result = [];
|
|
156250
156334
|
legend.forEach((item, index) => {
|
|
156251
156335
|
const override = byIndex.get(index);
|
|
156252
156336
|
if (override?.deleted) {
|
|
156253
156337
|
return;
|
|
156254
156338
|
}
|
|
156255
|
-
|
|
156339
|
+
const textStyle = override?.textStyle ?? defaultTextStyle;
|
|
156340
|
+
result.push(textStyle ? { ...item, textStyle } : item);
|
|
156256
156341
|
});
|
|
156257
156342
|
return result;
|
|
156258
156343
|
}
|
|
@@ -156572,7 +156657,7 @@ function buildSurfaceWallPanels(cols, rows, cellSize, zScale, offsetX, offsetY,
|
|
|
156572
156657
|
}
|
|
156573
156658
|
function buildIsometricSurfaceViewModel(element, chartData, categoryLabels) {
|
|
156574
156659
|
const layout = computePlotLayout(element.width, element.height, chartData, false);
|
|
156575
|
-
const range = computeValueRange2(chartData.series);
|
|
156660
|
+
const range = computeValueRange2(chartData.series, layout.plotHeight);
|
|
156576
156661
|
const catCount = Math.max(categoryLabels.length, 1);
|
|
156577
156662
|
const seriesCount = chartData.series.length;
|
|
156578
156663
|
const cols = Math.max(catCount - 1, 1);
|
|
@@ -156691,7 +156776,7 @@ function buildIsometricSurfaceViewModel(element, chartData, categoryLabels) {
|
|
|
156691
156776
|
}
|
|
156692
156777
|
function buildFlatSurfaceViewModel(element, chartData, categoryLabels) {
|
|
156693
156778
|
const layout = computePlotLayout(element.width, element.height, chartData, false);
|
|
156694
|
-
const range = computeValueRange2(chartData.series);
|
|
156779
|
+
const range = computeValueRange2(chartData.series, layout.plotHeight);
|
|
156695
156780
|
const catCount = Math.max(categoryLabels.length, 1);
|
|
156696
156781
|
const seriesCount = chartData.series.length;
|
|
156697
156782
|
const cellW = layout.plotWidth / Math.max(catCount - 1, 1);
|
|
@@ -158449,13 +158534,16 @@ function buildWaterfallSteps(values, options) {
|
|
|
158449
158534
|
}
|
|
158450
158535
|
return steps;
|
|
158451
158536
|
}
|
|
158452
|
-
function computeWaterfallRange(steps) {
|
|
158453
|
-
return computeValueRange2(
|
|
158454
|
-
|
|
158455
|
-
|
|
158456
|
-
|
|
158457
|
-
|
|
158458
|
-
|
|
158537
|
+
function computeWaterfallRange(steps, plotHeightPx) {
|
|
158538
|
+
return computeValueRange2(
|
|
158539
|
+
[
|
|
158540
|
+
{
|
|
158541
|
+
name: "Waterfall range",
|
|
158542
|
+
values: steps.flatMap((step) => [step.startValue, step.endValue])
|
|
158543
|
+
}
|
|
158544
|
+
],
|
|
158545
|
+
plotHeightPx
|
|
158546
|
+
);
|
|
158459
158547
|
}
|
|
158460
158548
|
var WF_COLOR_POSITIVE = "#22c55e";
|
|
158461
158549
|
var WF_COLOR_NEGATIVE = "#ef4444";
|
|
@@ -158466,7 +158554,7 @@ function buildWaterfallViewModel(element, chartData, categoryLabels) {
|
|
|
158466
158554
|
const series = chartData.series[0];
|
|
158467
158555
|
const values = series?.values ?? [];
|
|
158468
158556
|
const steps = buildWaterfallSteps(values, series?.waterfallOptions);
|
|
158469
|
-
const range = computeWaterfallRange(steps);
|
|
158557
|
+
const range = computeWaterfallRange(steps, layout.plotHeight);
|
|
158470
158558
|
const catCount = Math.max(categoryLabels.length, values.length, 1);
|
|
158471
158559
|
const barWidth = layout.plotWidth / catCount * 0.6;
|
|
158472
158560
|
const gap = layout.plotWidth / catCount * 0.2;
|
|
@@ -158622,7 +158710,11 @@ function withDataPointPictureFills(vm, chartData, elementId) {
|
|
|
158622
158710
|
return { ...vm, primitives, defs: [...vm.defs ?? [], ...defs] };
|
|
158623
158711
|
}
|
|
158624
158712
|
function withLegendEntries(vm, chartData) {
|
|
158625
|
-
const legend = applyLegendEntryOverrides(
|
|
158713
|
+
const legend = applyLegendEntryOverrides(
|
|
158714
|
+
vm.legend,
|
|
158715
|
+
chartData.style?.legendEntries,
|
|
158716
|
+
chartData.style?.legendTextStyle
|
|
158717
|
+
);
|
|
158626
158718
|
return legend === vm.legend ? vm : { ...vm, legend };
|
|
158627
158719
|
}
|
|
158628
158720
|
function withChartAreaFill(vm, chartData) {
|
|
@@ -159413,13 +159505,16 @@ function hideChartSeries(data, seriesIndex) {
|
|
|
159413
159505
|
return null;
|
|
159414
159506
|
}
|
|
159415
159507
|
const series = data.series[seriesIndex];
|
|
159416
|
-
|
|
159417
|
-
|
|
159418
|
-
|
|
159419
|
-
|
|
159420
|
-
|
|
159421
|
-
|
|
159422
|
-
idx
|
|
159508
|
+
let idx = series.idx;
|
|
159509
|
+
if (idx === void 0) {
|
|
159510
|
+
const taken = /* @__PURE__ */ new Set([
|
|
159511
|
+
...data.series.map((_, i2) => i2).filter((i2) => i2 !== seriesIndex),
|
|
159512
|
+
...(data.filteredSeries ?? []).map((f6) => f6.idx)
|
|
159513
|
+
]);
|
|
159514
|
+
idx = 0;
|
|
159515
|
+
while (taken.has(idx)) {
|
|
159516
|
+
idx++;
|
|
159517
|
+
}
|
|
159423
159518
|
}
|
|
159424
159519
|
const filteredEntry = {
|
|
159425
159520
|
idx,
|
|
@@ -159427,7 +159522,12 @@ function hideChartSeries(data, seriesIndex) {
|
|
|
159427
159522
|
name: series.name,
|
|
159428
159523
|
categories: data.categories,
|
|
159429
159524
|
values: series.values,
|
|
159430
|
-
...series.uniqueId ? { uniqueId: series.uniqueId } : {}
|
|
159525
|
+
...series.uniqueId ? { uniqueId: series.uniqueId } : {},
|
|
159526
|
+
// Full snapshot so restoreFilteredSeries can bring back everything
|
|
159527
|
+
// (fill/line formatting, marker, data labels, ...), not just name and
|
|
159528
|
+
// values: this used to silently reset a series with a picture fill
|
|
159529
|
+
// or any other non-default formatting to plain defaults on restore.
|
|
159530
|
+
originalSeries: series
|
|
159431
159531
|
};
|
|
159432
159532
|
return {
|
|
159433
159533
|
...data,
|
|
@@ -159443,15 +159543,19 @@ function restoreFilteredSeries(data, filteredIndex) {
|
|
|
159443
159543
|
const name = filtered.name ?? data.filteredSeriesTitle ?? `Series ${data.series.length + 1}`;
|
|
159444
159544
|
const categories = data.categories;
|
|
159445
159545
|
const values = filtered.values ?? (filtered.categories ?? data.filteredCategoryTitle)?.map(() => 0) ?? categories.map(() => 0);
|
|
159446
|
-
const restored = {
|
|
159546
|
+
const restored = filtered.originalSeries ? { ...filtered.originalSeries, idx: filtered.idx } : {
|
|
159447
159547
|
name,
|
|
159448
159548
|
values,
|
|
159549
|
+
idx: filtered.idx,
|
|
159449
159550
|
...filtered.uniqueId ? { uniqueId: filtered.uniqueId } : {}
|
|
159450
159551
|
};
|
|
159552
|
+
const insertAt3 = data.series.findIndex((s, i2) => (s.idx ?? i2) > filtered.idx);
|
|
159553
|
+
const nextSeries = [...data.series];
|
|
159554
|
+
nextSeries.splice(insertAt3 === -1 ? nextSeries.length : insertAt3, 0, restored);
|
|
159451
159555
|
const remainingFiltered = (data.filteredSeries ?? []).filter((_, i2) => i2 !== filteredIndex);
|
|
159452
159556
|
return {
|
|
159453
159557
|
...data,
|
|
159454
|
-
series:
|
|
159558
|
+
series: nextSeries,
|
|
159455
159559
|
...remainingFiltered.length > 0 ? { filteredSeries: remainingFiltered } : { filteredSeries: void 0 }
|
|
159456
159560
|
};
|
|
159457
159561
|
}
|
|
@@ -159470,6 +159574,199 @@ function setDataLabelsRangeCache(series, pointIndex, text22) {
|
|
|
159470
159574
|
dataLabelOptions: { ...series.dataLabelOptions, dataLabelsRange: { ...range, cache } }
|
|
159471
159575
|
};
|
|
159472
159576
|
}
|
|
159577
|
+
var CHART_STYLE_PRESETS = [
|
|
159578
|
+
{ id: "colorful", labelKey: "pptx.chart.styleColorful", styleId: 2 },
|
|
159579
|
+
{ id: "monochrome", labelKey: "pptx.chart.styleMonochrome", styleId: 10 },
|
|
159580
|
+
{ id: "colorfulLight", labelKey: "pptx.chart.styleColorfulLight", styleId: 18 },
|
|
159581
|
+
{ id: "colorfulDark", labelKey: "pptx.chart.styleColorfulDark", styleId: 26 },
|
|
159582
|
+
{ id: "mutedDark", labelKey: "pptx.chart.styleMutedDark", styleId: 34 },
|
|
159583
|
+
{ id: "pastel", labelKey: "pptx.chart.stylePastel", styleId: 42 }
|
|
159584
|
+
];
|
|
159585
|
+
function paletteEquals(a, b) {
|
|
159586
|
+
if (!b || a.length !== b.length) {
|
|
159587
|
+
return false;
|
|
159588
|
+
}
|
|
159589
|
+
return a.every((c, i2) => c.toLowerCase() === b[i2]?.toLowerCase());
|
|
159590
|
+
}
|
|
159591
|
+
function findPreset(id) {
|
|
159592
|
+
return CHART_STYLE_PRESETS.find((p) => p.id === id);
|
|
159593
|
+
}
|
|
159594
|
+
function buildChartStylePresets(chartData) {
|
|
159595
|
+
return CHART_STYLE_PRESETS.map(({ id, labelKey, styleId }) => {
|
|
159596
|
+
const colors = getChartStylePalette(styleId);
|
|
159597
|
+
return {
|
|
159598
|
+
id,
|
|
159599
|
+
labelKey,
|
|
159600
|
+
colors,
|
|
159601
|
+
applied: paletteEquals(colors, chartData.colorPalette)
|
|
159602
|
+
};
|
|
159603
|
+
});
|
|
159604
|
+
}
|
|
159605
|
+
function clearDataPointFill(point) {
|
|
159606
|
+
const { spPr, marker, ...rest } = point;
|
|
159607
|
+
const nextSpPr = spPr && { ...spPr, fillColor: void 0 };
|
|
159608
|
+
const nextMarker = marker?.spPr && {
|
|
159609
|
+
...marker,
|
|
159610
|
+
spPr: { ...marker.spPr, fillColor: void 0 }
|
|
159611
|
+
};
|
|
159612
|
+
return { ...rest, ...spPr && { spPr: nextSpPr }, ...nextMarker && { marker: nextMarker } };
|
|
159613
|
+
}
|
|
159614
|
+
function clearSeriesColor(series) {
|
|
159615
|
+
const { color: _color, marker, dataPoints, ...rest } = series;
|
|
159616
|
+
const nextMarker = marker?.spPr && { ...marker, spPr: { ...marker.spPr, fillColor: void 0 } };
|
|
159617
|
+
return {
|
|
159618
|
+
...rest,
|
|
159619
|
+
...marker && { marker: nextMarker ?? marker },
|
|
159620
|
+
...dataPoints && { dataPoints: dataPoints.map(clearDataPointFill) }
|
|
159621
|
+
};
|
|
159622
|
+
}
|
|
159623
|
+
function applyChartStylePreset(chartData, presetId) {
|
|
159624
|
+
const preset = findPreset(presetId);
|
|
159625
|
+
if (!preset) {
|
|
159626
|
+
return null;
|
|
159627
|
+
}
|
|
159628
|
+
const colors = [...getChartStylePalette(preset.styleId)];
|
|
159629
|
+
return {
|
|
159630
|
+
...chartData,
|
|
159631
|
+
colorPalette: colors,
|
|
159632
|
+
style: { ...chartData.style, styleId: preset.styleId },
|
|
159633
|
+
series: chartData.series.map(clearSeriesColor)
|
|
159634
|
+
};
|
|
159635
|
+
}
|
|
159636
|
+
var AXIS_TYPES_WITH_TITLES = [
|
|
159637
|
+
"catAx",
|
|
159638
|
+
"valAx",
|
|
159639
|
+
"dateAx"
|
|
159640
|
+
];
|
|
159641
|
+
var DEFAULT_AXIS_TITLE_TEXT = "Axis Title";
|
|
159642
|
+
function chartAxesVisibilityPatch(chartData, show) {
|
|
159643
|
+
const axes = (chartData.axes ?? []).map(
|
|
159644
|
+
(axis) => AXIS_TYPES_WITH_TITLES.includes(axis.axisType) ? { ...axis, deleted: !show } : axis
|
|
159645
|
+
);
|
|
159646
|
+
return { axes };
|
|
159647
|
+
}
|
|
159648
|
+
function chartAxesVisibilityState(chartData) {
|
|
159649
|
+
const relevant = (chartData.axes ?? []).filter(
|
|
159650
|
+
(axis) => AXIS_TYPES_WITH_TITLES.includes(axis.axisType)
|
|
159651
|
+
);
|
|
159652
|
+
return relevant.length === 0 || relevant.some((axis) => !axis.deleted);
|
|
159653
|
+
}
|
|
159654
|
+
function chartAxisTitlesPatch(chartData, show) {
|
|
159655
|
+
const axes = (chartData.axes ?? []).map((axis) => {
|
|
159656
|
+
if (!AXIS_TYPES_WITH_TITLES.includes(axis.axisType)) {
|
|
159657
|
+
return axis;
|
|
159658
|
+
}
|
|
159659
|
+
if (!show) {
|
|
159660
|
+
return { ...axis, titleText: void 0 };
|
|
159661
|
+
}
|
|
159662
|
+
return { ...axis, titleText: axis.titleText || DEFAULT_AXIS_TITLE_TEXT };
|
|
159663
|
+
});
|
|
159664
|
+
return { axes };
|
|
159665
|
+
}
|
|
159666
|
+
function chartAxisTitlesState(chartData) {
|
|
159667
|
+
return (chartData.axes ?? []).some(
|
|
159668
|
+
(axis) => AXIS_TYPES_WITH_TITLES.includes(axis.axisType) && Boolean(axis.titleText)
|
|
159669
|
+
);
|
|
159670
|
+
}
|
|
159671
|
+
function applyChartElementToggle(chartData, key2, checked) {
|
|
159672
|
+
switch (key2) {
|
|
159673
|
+
case "title":
|
|
159674
|
+
return patchChartData(chartData, { style: { ...chartData.style, hasTitle: checked } });
|
|
159675
|
+
case "legend":
|
|
159676
|
+
return patchChartData(chartData, { style: { ...chartData.style, hasLegend: checked } });
|
|
159677
|
+
case "dataLabels":
|
|
159678
|
+
return patchChartData(chartData, { style: { ...chartData.style, hasDataLabels: checked } });
|
|
159679
|
+
case "gridlines":
|
|
159680
|
+
return patchChartData(chartData, chartGridlinesPatch(chartData, checked));
|
|
159681
|
+
case "axes":
|
|
159682
|
+
return patchChartData(chartData, chartAxesVisibilityPatch(chartData, checked));
|
|
159683
|
+
case "axisTitles":
|
|
159684
|
+
return patchChartData(chartData, chartAxisTitlesPatch(chartData, checked));
|
|
159685
|
+
default:
|
|
159686
|
+
return chartData;
|
|
159687
|
+
}
|
|
159688
|
+
}
|
|
159689
|
+
var CHART_QUICK_ACTION_BUTTON_SIZE = 24;
|
|
159690
|
+
var BUTTON_GAP = 6;
|
|
159691
|
+
var OUTSIDE_GAP = 8;
|
|
159692
|
+
var BUTTON_ORDER = [
|
|
159693
|
+
{ id: "elements", labelKey: "pptx.chart.quickElements" },
|
|
159694
|
+
{ id: "styles", labelKey: "pptx.chart.quickStyles" },
|
|
159695
|
+
{ id: "filters", labelKey: "pptx.chart.quickFilters" }
|
|
159696
|
+
];
|
|
159697
|
+
function buildButtons(selectionBox, showFilters) {
|
|
159698
|
+
const x = selectionBox.x + selectionBox.width + OUTSIDE_GAP;
|
|
159699
|
+
return BUTTON_ORDER.filter((entry2) => entry2.id !== "filters" || showFilters).map((entry2, i2) => ({
|
|
159700
|
+
...entry2,
|
|
159701
|
+
x,
|
|
159702
|
+
y: selectionBox.y + i2 * (CHART_QUICK_ACTION_BUTTON_SIZE + BUTTON_GAP),
|
|
159703
|
+
size: CHART_QUICK_ACTION_BUTTON_SIZE
|
|
159704
|
+
}));
|
|
159705
|
+
}
|
|
159706
|
+
function buildElements(chartData) {
|
|
159707
|
+
const items = [
|
|
159708
|
+
{ key: "title", labelKey: "pptx.chart.showTitle", checked: chartData.style?.hasTitle ?? false },
|
|
159709
|
+
{
|
|
159710
|
+
key: "legend",
|
|
159711
|
+
labelKey: "pptx.chart.showLegend",
|
|
159712
|
+
checked: chartData.style?.hasLegend ?? false
|
|
159713
|
+
},
|
|
159714
|
+
{
|
|
159715
|
+
key: "gridlines",
|
|
159716
|
+
labelKey: "pptx.chart.showGridlines",
|
|
159717
|
+
checked: chartGridlinesState(chartData)
|
|
159718
|
+
},
|
|
159719
|
+
{
|
|
159720
|
+
key: "dataLabels",
|
|
159721
|
+
labelKey: "pptx.chart.showDataLabels",
|
|
159722
|
+
checked: chartData.style?.hasDataLabels ?? false
|
|
159723
|
+
}
|
|
159724
|
+
];
|
|
159725
|
+
if (chartData.axes && chartData.axes.length > 0) {
|
|
159726
|
+
items.push({
|
|
159727
|
+
key: "axes",
|
|
159728
|
+
labelKey: "pptx.chart.quickAxes",
|
|
159729
|
+
checked: chartAxesVisibilityState(chartData)
|
|
159730
|
+
});
|
|
159731
|
+
items.push({
|
|
159732
|
+
key: "axisTitles",
|
|
159733
|
+
labelKey: "pptx.chart.quickAxisTitles",
|
|
159734
|
+
checked: chartAxisTitlesState(chartData)
|
|
159735
|
+
});
|
|
159736
|
+
}
|
|
159737
|
+
return items;
|
|
159738
|
+
}
|
|
159739
|
+
function buildFilters(chartData) {
|
|
159740
|
+
const visibleSeries = chartData.series.map((series2, index) => ({
|
|
159741
|
+
key: `visible-${index}`,
|
|
159742
|
+
name: series2.name,
|
|
159743
|
+
visible: true,
|
|
159744
|
+
seriesIndex: index,
|
|
159745
|
+
sortKey: series2.idx ?? index
|
|
159746
|
+
}));
|
|
159747
|
+
const filtered = (chartData.filteredSeries ?? []).map((entry2, index) => ({
|
|
159748
|
+
key: `filtered-${index}`,
|
|
159749
|
+
name: entry2.name ?? chartData.filteredSeriesTitle ?? `Series ${index + 1}`,
|
|
159750
|
+
visible: false,
|
|
159751
|
+
filteredIndex: index,
|
|
159752
|
+
sortKey: entry2.idx
|
|
159753
|
+
}));
|
|
159754
|
+
const series = [...visibleSeries, ...filtered].sort((a, b) => a.sortKey - b.sortKey).map(({ sortKey: _sortKey, ...rest }) => rest);
|
|
159755
|
+
return { visible: series.length > 1, series };
|
|
159756
|
+
}
|
|
159757
|
+
function buildChartQuickActionsDescriptor(input) {
|
|
159758
|
+
if (!input.isChartSelected || !input.chartData) {
|
|
159759
|
+
return null;
|
|
159760
|
+
}
|
|
159761
|
+
const { chartData, selectionBox } = input;
|
|
159762
|
+
const filters = buildFilters(chartData);
|
|
159763
|
+
return {
|
|
159764
|
+
buttons: buildButtons(selectionBox, filters.visible),
|
|
159765
|
+
elements: buildElements(chartData),
|
|
159766
|
+
filters,
|
|
159767
|
+
styles: { presets: buildChartStylePresets(chartData) }
|
|
159768
|
+
};
|
|
159769
|
+
}
|
|
159473
159770
|
var TWO_PI = Math.PI * 2;
|
|
159474
159771
|
var ANGLE_EPSILON = TWO_PI * 1e-3;
|
|
159475
159772
|
function buildPieDragGeometry(element, chartData, pointIndex) {
|
|
@@ -159526,7 +159823,7 @@ function buildStackedDragGeometry(element, chartData, seriesIndex, pointIndex) {
|
|
|
159526
159823
|
), plots = computeStackedSeriesPlots(seriesValues, catCount, percent3), baseValue = plots[seriesIndex]?.base[pointIndex] ?? 0, otherAbsSum = seriesValues.reduce(
|
|
159527
159824
|
(sum, values, si) => si === seriesIndex ? sum : sum + Math.abs(values[pointIndex] ?? 0),
|
|
159528
159825
|
0
|
|
159529
|
-
),
|
|
159826
|
+
), layoutOpts = computeLayoutOptions(chartData.axes, chartData.dataTable, chartData.series.length), layout = computePlotLayout(element.width, element.height, chartData, true, layoutOpts), range = percent3 ? { min: 0, max: 100, span: 100 } : computeStackedValueRange(chartData.series, catCount, layout.plotHeight);
|
|
159530
159827
|
return {
|
|
159531
159828
|
range,
|
|
159532
159829
|
plotTop: layout.plotTop,
|
|
@@ -173027,6 +173324,17 @@ var translationsEn = {
|
|
|
173027
173324
|
"pptx.chart.chartFilters": "Chart filters",
|
|
173028
173325
|
"pptx.chart.hideSeries": "Hide {{name}}",
|
|
173029
173326
|
"pptx.chart.showSeries": "Show {{name}}",
|
|
173327
|
+
"pptx.chart.quickElements": "Chart Elements",
|
|
173328
|
+
"pptx.chart.quickStyles": "Chart Styles",
|
|
173329
|
+
"pptx.chart.quickFilters": "Chart Filters",
|
|
173330
|
+
"pptx.chart.quickAxes": "Axes",
|
|
173331
|
+
"pptx.chart.quickAxisTitles": "Axis Titles",
|
|
173332
|
+
"pptx.chart.styleColorful": "Colorful",
|
|
173333
|
+
"pptx.chart.styleMonochrome": "Monochrome",
|
|
173334
|
+
"pptx.chart.styleColorfulLight": "Colorful Light",
|
|
173335
|
+
"pptx.chart.styleColorfulDark": "Colorful Dark",
|
|
173336
|
+
"pptx.chart.styleMutedDark": "Muted Dark",
|
|
173337
|
+
"pptx.chart.stylePastel": "Pastel",
|
|
173030
173338
|
"pptx.chart.valueFromCells": "Value from cells: {{name}}",
|
|
173031
173339
|
"pptx.chart.removeCategory": "Remove category",
|
|
173032
173340
|
"pptx.chart.axes": "Axes",
|
|
@@ -177623,10 +177931,10 @@ function resolveTrackedTextWidth(text22, font, naturalWidth) {
|
|
|
177623
177931
|
const tracking = resolveMetricTrackingPx(text22, font);
|
|
177624
177932
|
return tracking === 0 ? naturalWidth : naturalWidth + tracking * [...text22].length;
|
|
177625
177933
|
}
|
|
177626
|
-
var
|
|
177934
|
+
var PX_PER_POINT2 = 96 / 72;
|
|
177627
177935
|
function authoredLetterSpacingPx(style) {
|
|
177628
177936
|
const spc = style?.characterSpacing;
|
|
177629
|
-
return typeof spc === "number" && spc !== 0 ? spc / 100 *
|
|
177937
|
+
return typeof spc === "number" && spc !== 0 ? spc / 100 * PX_PER_POINT2 : 0;
|
|
177630
177938
|
}
|
|
177631
177939
|
function pieceLetterSpacing(authoredPx, tracking) {
|
|
177632
177940
|
const spacing = authoredPx + tracking;
|
|
@@ -191599,7 +191907,7 @@ function buildSurfaceChart3DData(chartData, categoryLabels, options) {
|
|
|
191599
191907
|
if (seriesCount === 0 || catCount === 0) {
|
|
191600
191908
|
return null;
|
|
191601
191909
|
}
|
|
191602
|
-
const range = computeValueRange2(chartData.series);
|
|
191910
|
+
const range = computeValueRange2(chartData.series, options.height);
|
|
191603
191911
|
const heightMap = new Float32Array(seriesCount * catCount);
|
|
191604
191912
|
const colorMap = new Float32Array(seriesCount * catCount * 3);
|
|
191605
191913
|
const values = new Float32Array(seriesCount * catCount);
|
|
@@ -192432,7 +192740,7 @@ function buildBarChart3DData(chartData, categoryLabels, options) {
|
|
|
192432
192740
|
const isPercent = grouping === "percentStacked";
|
|
192433
192741
|
const horizontal = chartData.barDirection === "bar";
|
|
192434
192742
|
const points4 = buildPoints(chartData, cols, isPercent);
|
|
192435
|
-
const range = isPercent ? { min: 0, max: 100, span: 100 } : grouping === "stacked" ? computeStackedValueRange(chartData.series, cols) : computeValueRange2(chartData.series);
|
|
192743
|
+
const range = isPercent ? { min: 0, max: 100, span: 100 } : grouping === "stacked" ? computeStackedValueRange(chartData.series, cols, options.height) : computeValueRange2(chartData.series, options.height);
|
|
192436
192744
|
const depthPercent = chartData.view3D?.depthPercent;
|
|
192437
192745
|
const boxes = layoutBarChart3D(points4, cols, rows, range, grouping, depthPercent, horizontal);
|
|
192438
192746
|
return {
|
|
@@ -192548,7 +192856,7 @@ function buildCartesianLine3DSceneData(chartData, categoryLabels, options) {
|
|
|
192548
192856
|
return null;
|
|
192549
192857
|
}
|
|
192550
192858
|
const points4 = buildPoints2(chartData, cols);
|
|
192551
|
-
const range = computeValueRange2(chartData.series);
|
|
192859
|
+
const range = computeValueRange2(chartData.series, options.height);
|
|
192552
192860
|
const depthPercent = chartData.view3D?.depthPercent;
|
|
192553
192861
|
const series = layoutCartesianLine3DSeries(points4, cols, rows, range, depthPercent);
|
|
192554
192862
|
return {
|
|
@@ -207424,6 +207732,7 @@ exports.BEVEL_PRESETS = BEVEL_PRESETS;
|
|
|
207424
207732
|
exports.BROADCAST_THROTTLE_MS = BROADCAST_THROTTLE_MS;
|
|
207425
207733
|
exports.CATEGORIES = CATEGORIES;
|
|
207426
207734
|
exports.CHARACTER_SPACING_OPTIONS = CHARACTER_SPACING_OPTIONS;
|
|
207735
|
+
exports.CHART_QUICK_ACTION_BUTTON_SIZE = CHART_QUICK_ACTION_BUTTON_SIZE;
|
|
207427
207736
|
exports.CHART_TYPE_OPTIONS = CHART_TYPE_OPTIONS;
|
|
207428
207737
|
exports.CINEMATIC_TRANSITION_KEYFRAMES = CINEMATIC_TRANSITION_KEYFRAMES;
|
|
207429
207738
|
exports.COMMENT_MARKER_SIZE = COMMENT_MARKER_SIZE;
|
|
@@ -207617,7 +207926,9 @@ exports.applyActiveInlineListFormatting = applyActiveInlineListFormatting;
|
|
|
207617
207926
|
exports.applyAnimationTimelineOrder = applyAnimationTimelineOrder;
|
|
207618
207927
|
exports.applyAutoCorrect = applyAutoCorrect;
|
|
207619
207928
|
exports.applyCaseTransformToSegments = applyCaseTransformToSegments;
|
|
207929
|
+
exports.applyChartElementToggle = applyChartElementToggle;
|
|
207620
207930
|
exports.applyChartPartHighlight = applyChartPartHighlight;
|
|
207931
|
+
exports.applyChartStylePreset = applyChartStylePreset;
|
|
207621
207932
|
exports.applyColorChange = applyColorChange;
|
|
207622
207933
|
exports.applyDuotone = applyDuotone;
|
|
207623
207934
|
exports.applyFindReplacements = applyFindReplacements;
|
|
@@ -207674,6 +207985,7 @@ exports.buildBroadcastViewerUrl = buildBroadcastViewerUrl;
|
|
|
207674
207985
|
exports.buildCacheKey = buildCacheKey;
|
|
207675
207986
|
exports.buildCalloutLeaderLineSvgPath = buildCalloutLeaderLineSvgPath;
|
|
207676
207987
|
exports.buildChartMarkDragGeometry = buildChartMarkDragGeometry;
|
|
207988
|
+
exports.buildChartQuickActionsDescriptor = buildChartQuickActionsDescriptor;
|
|
207677
207989
|
exports.buildChartViewModel = buildChartViewModel;
|
|
207678
207990
|
exports.buildChromeStyle = buildChromeStyle;
|
|
207679
207991
|
exports.buildCollaborationShareUrl = buildCollaborationShareUrl;
|