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.
Files changed (186) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/{AiChatPanel-KILEXOPT.js → AiChatPanel-NBKG2CWE.js} +25 -25
  3. package/dist/AiChatPanel-NBKG2CWE.js.br +0 -0
  4. package/dist/AiChatPanel-NBKG2CWE.js.gz +0 -0
  5. package/dist/{AiChatPanel-ZH52BQBE.mjs → AiChatPanel-OXCJVBUS.mjs} +4 -4
  6. package/dist/AiChatPanel-OXCJVBUS.mjs.br +0 -0
  7. package/dist/AiChatPanel-OXCJVBUS.mjs.gz +0 -0
  8. package/dist/{Area3DChartScene-UHN7ZOZT.mjs → Area3DChartScene-5M3LEY6M.mjs} +1 -1
  9. package/dist/Area3DChartScene-5M3LEY6M.mjs.br +0 -0
  10. package/dist/Area3DChartScene-5M3LEY6M.mjs.gz +0 -0
  11. package/dist/{Area3DChartScene-HS7EBQLQ.js → Area3DChartScene-7QPDPVR6.js} +2 -2
  12. package/dist/Area3DChartScene-7QPDPVR6.js.br +0 -0
  13. package/dist/Area3DChartScene-7QPDPVR6.js.gz +0 -0
  14. package/dist/{Bar3DChartScene-TFGSYASD.mjs → Bar3DChartScene-NNSTLO4V.mjs} +1 -1
  15. package/dist/Bar3DChartScene-NNSTLO4V.mjs.br +0 -0
  16. package/dist/Bar3DChartScene-NNSTLO4V.mjs.gz +0 -0
  17. package/dist/{Bar3DChartScene-E57TRVUU.js → Bar3DChartScene-TAMPS6ZS.js} +2 -2
  18. package/dist/Bar3DChartScene-TAMPS6ZS.js.br +0 -0
  19. package/dist/Bar3DChartScene-TAMPS6ZS.js.gz +0 -0
  20. package/dist/{Line3DChartScene-RES5D7W7.mjs → Line3DChartScene-7S2DD45T.mjs} +1 -1
  21. package/dist/Line3DChartScene-7S2DD45T.mjs.br +0 -0
  22. package/dist/Line3DChartScene-7S2DD45T.mjs.gz +0 -0
  23. package/dist/{Line3DChartScene-NM7YYLZD.js → Line3DChartScene-T4SH37NU.js} +2 -2
  24. package/dist/Line3DChartScene-T4SH37NU.js.br +0 -0
  25. package/dist/Line3DChartScene-T4SH37NU.js.gz +0 -0
  26. package/dist/{Model3DScene-6CWFGE7M.mjs → Model3DScene-CXRM7D3J.mjs} +1 -1
  27. package/dist/Model3DScene-CXRM7D3J.mjs.br +0 -0
  28. package/dist/Model3DScene-CXRM7D3J.mjs.gz +0 -0
  29. package/dist/{Model3DScene-SL3QF63O.js → Model3DScene-IDRM7EZD.js} +2 -2
  30. package/dist/Model3DScene-IDRM7EZD.js.br +0 -0
  31. package/dist/Model3DScene-IDRM7EZD.js.gz +0 -0
  32. package/dist/{PieChart3DScene-WIVYOQUQ.js → PieChart3DScene-66Y5UP64.js} +2 -2
  33. package/dist/PieChart3DScene-66Y5UP64.js.br +0 -0
  34. package/dist/PieChart3DScene-66Y5UP64.js.gz +0 -0
  35. package/dist/{PieChart3DScene-QYJUOYMB.mjs → PieChart3DScene-VSCSEY2G.mjs} +1 -1
  36. package/dist/PieChart3DScene-VSCSEY2G.mjs.br +0 -0
  37. package/dist/PieChart3DScene-VSCSEY2G.mjs.gz +0 -0
  38. package/dist/{SurfaceChart3DScene-QCUYYQBZ.js → SurfaceChart3DScene-6J4A6XUH.js} +2 -2
  39. package/dist/SurfaceChart3DScene-6J4A6XUH.js.br +0 -0
  40. package/dist/SurfaceChart3DScene-6J4A6XUH.js.gz +0 -0
  41. package/dist/{SurfaceChart3DScene-Y2LF73QQ.mjs → SurfaceChart3DScene-NSHDK657.mjs} +1 -1
  42. package/dist/SurfaceChart3DScene-NSHDK657.mjs.br +0 -0
  43. package/dist/SurfaceChart3DScene-NSHDK657.mjs.gz +0 -0
  44. package/dist/{chunk-ATKAU2J4.mjs → chunk-2IBDKMY2.mjs} +506 -325
  45. package/dist/chunk-2IBDKMY2.mjs.br +0 -0
  46. package/dist/chunk-2IBDKMY2.mjs.gz +0 -0
  47. package/dist/{chunk-M5BAPEQL.mjs → chunk-5PDGHTRJ.mjs} +9 -9
  48. package/dist/chunk-5PDGHTRJ.mjs.br +0 -0
  49. package/dist/chunk-5PDGHTRJ.mjs.gz +0 -0
  50. package/dist/{chunk-RPPLJQ6R.js → chunk-7SFA4A2E.js} +1515 -1334
  51. package/dist/chunk-7SFA4A2E.js.br +0 -0
  52. package/dist/chunk-7SFA4A2E.js.gz +0 -0
  53. package/dist/{chunk-MQUTXOET.mjs → chunk-AVTH627G.mjs} +11 -0
  54. package/dist/chunk-AVTH627G.mjs.br +0 -0
  55. package/dist/chunk-AVTH627G.mjs.gz +0 -0
  56. package/dist/{chunk-NEMPFYZ5.mjs → chunk-AYH6XSE7.mjs} +1 -1
  57. package/dist/chunk-AYH6XSE7.mjs.br +0 -0
  58. package/dist/chunk-AYH6XSE7.mjs.gz +0 -0
  59. package/dist/{chunk-YH4ODPSH.js → chunk-DW66NEST.js} +182 -182
  60. package/dist/chunk-DW66NEST.js.br +0 -0
  61. package/dist/chunk-DW66NEST.js.gz +0 -0
  62. package/dist/{chunk-7XJ7I6TJ.mjs → chunk-FE4L26FT.mjs} +2 -2
  63. package/dist/chunk-FE4L26FT.mjs.br +0 -0
  64. package/dist/chunk-FE4L26FT.mjs.gz +0 -0
  65. package/dist/{chunk-BRJN3ZMG.js → chunk-I5LPYESF.js} +11 -0
  66. package/dist/chunk-I5LPYESF.js.br +0 -0
  67. package/dist/chunk-I5LPYESF.js.gz +0 -0
  68. package/dist/{chunk-GULL4H2I.mjs → chunk-N4FLKADC.mjs} +476 -168
  69. package/dist/chunk-N4FLKADC.mjs.br +0 -0
  70. package/dist/chunk-N4FLKADC.mjs.gz +0 -0
  71. package/dist/{chunk-ZUIM5737.js → chunk-NGWA6L3N.js} +479 -167
  72. package/dist/chunk-NGWA6L3N.js.br +0 -0
  73. package/dist/chunk-NGWA6L3N.js.gz +0 -0
  74. package/dist/{chunk-2LK3OHAN.js → chunk-W3RBIIZW.js} +796 -796
  75. package/dist/chunk-W3RBIIZW.js.br +0 -0
  76. package/dist/chunk-W3RBIIZW.js.gz +0 -0
  77. package/dist/{chunk-F7VYECOL.js → chunk-WRXXPCZ7.js} +5 -5
  78. package/dist/chunk-WRXXPCZ7.js.br +0 -0
  79. package/dist/chunk-WRXXPCZ7.js.gz +0 -0
  80. package/dist/i18n/de.cjs +11 -0
  81. package/dist/i18n/de.cjs.br +0 -0
  82. package/dist/i18n/de.cjs.gz +0 -0
  83. package/dist/i18n/de.mjs +11 -0
  84. package/dist/i18n/de.mjs.br +0 -0
  85. package/dist/i18n/de.mjs.gz +0 -0
  86. package/dist/i18n/es.cjs +11 -0
  87. package/dist/i18n/es.cjs.br +0 -0
  88. package/dist/i18n/es.cjs.gz +0 -0
  89. package/dist/i18n/es.mjs +11 -0
  90. package/dist/i18n/es.mjs.br +0 -0
  91. package/dist/i18n/es.mjs.gz +0 -0
  92. package/dist/i18n/fr.cjs +11 -0
  93. package/dist/i18n/fr.cjs.br +0 -0
  94. package/dist/i18n/fr.cjs.gz +0 -0
  95. package/dist/i18n/fr.mjs +11 -0
  96. package/dist/i18n/fr.mjs.br +0 -0
  97. package/dist/i18n/fr.mjs.gz +0 -0
  98. package/dist/i18n/zh-CN.cjs +11 -0
  99. package/dist/i18n/zh-CN.cjs.br +0 -0
  100. package/dist/i18n/zh-CN.cjs.gz +0 -0
  101. package/dist/i18n/zh-CN.mjs +11 -0
  102. package/dist/i18n/zh-CN.mjs.br +0 -0
  103. package/dist/i18n/zh-CN.mjs.gz +0 -0
  104. package/dist/i18n.js +4 -4
  105. package/dist/i18n.js.br +0 -0
  106. package/dist/i18n.js.gz +0 -0
  107. package/dist/i18n.mjs +1 -1
  108. package/dist/i18n.mjs.br +0 -0
  109. package/dist/i18n.mjs.gz +0 -0
  110. package/dist/index.d.ts +37 -0
  111. package/dist/index.js +48 -48
  112. package/dist/index.js.br +0 -0
  113. package/dist/index.js.gz +0 -0
  114. package/dist/index.mjs +6 -6
  115. package/dist/index.mjs.br +0 -0
  116. package/dist/index.mjs.gz +0 -0
  117. package/dist/internals.d.ts +37 -0
  118. package/dist/internals.js +105 -105
  119. package/dist/internals.js.br +0 -0
  120. package/dist/internals.js.gz +0 -0
  121. package/dist/internals.mjs +4 -4
  122. package/dist/internals.mjs.br +0 -0
  123. package/dist/internals.mjs.gz +0 -0
  124. package/dist/pptx-viewer.css +1 -1
  125. package/dist/pptx-viewer.css.br +0 -0
  126. package/dist/pptx-viewer.css.gz +0 -0
  127. package/dist/viewer/index.d.ts +37 -0
  128. package/dist/viewer/index.js +27 -27
  129. package/dist/viewer/index.js.br +0 -0
  130. package/dist/viewer/index.js.gz +0 -0
  131. package/dist/viewer/index.mjs +6 -6
  132. package/dist/viewer/index.mjs.br +0 -0
  133. package/dist/viewer/index.mjs.gz +0 -0
  134. package/package.json +1 -1
  135. package/dist/AiChatPanel-KILEXOPT.js.br +0 -0
  136. package/dist/AiChatPanel-KILEXOPT.js.gz +0 -0
  137. package/dist/AiChatPanel-ZH52BQBE.mjs.br +0 -0
  138. package/dist/AiChatPanel-ZH52BQBE.mjs.gz +0 -0
  139. package/dist/Area3DChartScene-HS7EBQLQ.js.br +0 -0
  140. package/dist/Area3DChartScene-HS7EBQLQ.js.gz +0 -0
  141. package/dist/Area3DChartScene-UHN7ZOZT.mjs.br +0 -0
  142. package/dist/Area3DChartScene-UHN7ZOZT.mjs.gz +0 -0
  143. package/dist/Bar3DChartScene-E57TRVUU.js.br +0 -0
  144. package/dist/Bar3DChartScene-E57TRVUU.js.gz +0 -0
  145. package/dist/Bar3DChartScene-TFGSYASD.mjs.br +0 -0
  146. package/dist/Bar3DChartScene-TFGSYASD.mjs.gz +0 -0
  147. package/dist/Line3DChartScene-NM7YYLZD.js.br +0 -0
  148. package/dist/Line3DChartScene-NM7YYLZD.js.gz +0 -0
  149. package/dist/Line3DChartScene-RES5D7W7.mjs.br +0 -0
  150. package/dist/Line3DChartScene-RES5D7W7.mjs.gz +0 -0
  151. package/dist/Model3DScene-6CWFGE7M.mjs.br +0 -0
  152. package/dist/Model3DScene-6CWFGE7M.mjs.gz +0 -0
  153. package/dist/Model3DScene-SL3QF63O.js.br +0 -0
  154. package/dist/Model3DScene-SL3QF63O.js.gz +0 -0
  155. package/dist/PieChart3DScene-QYJUOYMB.mjs.br +0 -0
  156. package/dist/PieChart3DScene-QYJUOYMB.mjs.gz +0 -0
  157. package/dist/PieChart3DScene-WIVYOQUQ.js.br +0 -0
  158. package/dist/PieChart3DScene-WIVYOQUQ.js.gz +0 -0
  159. package/dist/SurfaceChart3DScene-QCUYYQBZ.js.br +0 -0
  160. package/dist/SurfaceChart3DScene-QCUYYQBZ.js.gz +0 -0
  161. package/dist/SurfaceChart3DScene-Y2LF73QQ.mjs.br +0 -0
  162. package/dist/SurfaceChart3DScene-Y2LF73QQ.mjs.gz +0 -0
  163. package/dist/chunk-2LK3OHAN.js.br +0 -0
  164. package/dist/chunk-2LK3OHAN.js.gz +0 -0
  165. package/dist/chunk-7XJ7I6TJ.mjs.br +0 -0
  166. package/dist/chunk-7XJ7I6TJ.mjs.gz +0 -0
  167. package/dist/chunk-ATKAU2J4.mjs.br +0 -0
  168. package/dist/chunk-ATKAU2J4.mjs.gz +0 -0
  169. package/dist/chunk-BRJN3ZMG.js.br +0 -0
  170. package/dist/chunk-BRJN3ZMG.js.gz +0 -0
  171. package/dist/chunk-F7VYECOL.js.br +0 -0
  172. package/dist/chunk-F7VYECOL.js.gz +0 -0
  173. package/dist/chunk-GULL4H2I.mjs.br +0 -0
  174. package/dist/chunk-GULL4H2I.mjs.gz +0 -0
  175. package/dist/chunk-M5BAPEQL.mjs.br +0 -0
  176. package/dist/chunk-M5BAPEQL.mjs.gz +0 -0
  177. package/dist/chunk-MQUTXOET.mjs.br +0 -0
  178. package/dist/chunk-MQUTXOET.mjs.gz +0 -0
  179. package/dist/chunk-NEMPFYZ5.mjs.br +0 -0
  180. package/dist/chunk-NEMPFYZ5.mjs.gz +0 -0
  181. package/dist/chunk-RPPLJQ6R.js.br +0 -0
  182. package/dist/chunk-RPPLJQ6R.js.gz +0 -0
  183. package/dist/chunk-YH4ODPSH.js.br +0 -0
  184. package/dist/chunk-YH4ODPSH.js.gz +0 -0
  185. package/dist/chunk-ZUIM5737.js.br +0 -0
  186. 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
- return `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
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
- node["c:symbol"] = { "@_val": marker.symbol };
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
- const majorGrid = xmlLookup.getChildByLocalName(axisNode, "majorGridlines");
48436
- if (majorGrid) {
48445
+ if (hasLocalName(axisNode, "majorGridlines")) {
48437
48446
  result.majorGridlines = true;
48438
48447
  result.majorGridlinesSpPr = parseShapeProps(
48439
- xmlLookup.getChildByLocalName(majorGrid, "spPr"),
48448
+ xmlLookup.getChildByLocalName(
48449
+ xmlLookup.getChildByLocalName(axisNode, "majorGridlines"),
48450
+ "spPr"
48451
+ ),
48440
48452
  xmlLookup,
48441
48453
  colorParser
48442
48454
  );
48443
48455
  }
48444
- const minorGrid = xmlLookup.getChildByLocalName(axisNode, "minorGridlines");
48445
- if (minorGrid) {
48456
+ if (hasLocalName(axisNode, "minorGridlines")) {
48446
48457
  result.minorGridlines = true;
48447
48458
  result.minorGridlinesSpPr = parseShapeProps(
48448
- xmlLookup.getChildByLocalName(minorGrid, "spPr"),
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
- const majorGrid = xmlLookup.getChildByLocalName(axisNode, "majorGridlines");
48652
- if (majorGrid) {
48665
+ if (hasLocalName(axisNode, "majorGridlines")) {
48653
48666
  result.majorGridlines = true;
48654
48667
  result.majorGridlinesSpPr = parseShapeProps(
48655
- xmlLookup.getChildByLocalName(majorGrid, "spPr"),
48668
+ xmlLookup.getChildByLocalName(
48669
+ xmlLookup.getChildByLocalName(axisNode, "majorGridlines"),
48670
+ "spPr"
48671
+ ),
48656
48672
  xmlLookup,
48657
48673
  colorParser
48658
48674
  );
48659
48675
  }
48660
- const minorGrid = xmlLookup.getChildByLocalName(axisNode, "minorGridlines");
48661
- if (minorGrid) {
48676
+ if (hasLocalName(axisNode, "minorGridlines")) {
48662
48677
  result.minorGridlines = true;
48663
48678
  result.minorGridlinesSpPr = parseShapeProps(
48664
- xmlLookup.getChildByLocalName(minorGrid, "spPr"),
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 = 4) {
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: point?.symbol ?? series.marker?.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(dataMin, dataMax);
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(Math.min(minSum, 0), Math.max(maxSum, 0));
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(chartData.series, chartData.axes);
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
- result.push(override?.textStyle ? { ...item, textStyle: override.textStyle } : item);
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
- name: "Waterfall range",
158456
- values: steps.flatMap((step) => [step.startValue, step.endValue])
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(vm.legend, chartData.style?.legendEntries);
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
- const takenIndices = /* @__PURE__ */ new Set([
159417
- ...data.series.map((_, i2) => i2).filter((i2) => i2 !== seriesIndex),
159418
- ...(data.filteredSeries ?? []).map((f6) => f6.idx)
159419
- ]);
159420
- let idx = 0;
159421
- while (takenIndices.has(idx)) {
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: [...data.series, restored],
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
- ), range = percent3 ? { min: 0, max: 100, span: 100 } : computeStackedValueRange(chartData.series, catCount), layoutOpts = computeLayoutOptions(chartData.axes, chartData.dataTable, chartData.series.length), layout = computePlotLayout(element.width, element.height, chartData, true, layoutOpts);
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 PX_PER_POINT = 96 / 72;
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 * PX_PER_POINT : 0;
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;