pptx-react-viewer 3.19.1 → 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 +18 -0
  2. package/dist/{AiChatPanel-DLADHD56.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-MSALNPYW.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-53ZVPYKG.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-BQQHOYRS.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-IN67ZH3P.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-PNQOIOIH.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-4SQUUAOW.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-CFSTMTFH.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-TA55BJY7.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-DXNAYZ6P.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-NCBKTWAO.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-TQOCHJOY.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-VA6IRLFG.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-7CSF2GPT.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-Z3KMGLXL.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-DNQ3PGGU.mjs → chunk-5PDGHTRJ.mjs} +32 -28
  48. package/dist/chunk-5PDGHTRJ.mjs.br +0 -0
  49. package/dist/chunk-5PDGHTRJ.mjs.gz +0 -0
  50. package/dist/{chunk-ZHPBQVBK.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-LBKKSCVS.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-4WUGOCYU.js → chunk-DW66NEST.js} +191 -186
  60. package/dist/chunk-DW66NEST.js.br +0 -0
  61. package/dist/chunk-DW66NEST.js.gz +0 -0
  62. package/dist/{chunk-RCUPQJVY.mjs → chunk-FE4L26FT.mjs} +12 -7
  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-3KVLOKA6.mjs → chunk-N4FLKADC.mjs} +721 -279
  69. package/dist/chunk-N4FLKADC.mjs.br +0 -0
  70. package/dist/chunk-N4FLKADC.mjs.gz +0 -0
  71. package/dist/{chunk-EJSRXEXA.js → chunk-NGWA6L3N.js} +726 -278
  72. package/dist/chunk-NGWA6L3N.js.br +0 -0
  73. package/dist/chunk-NGWA6L3N.js.gz +0 -0
  74. package/dist/{chunk-AZEDCITO.js → chunk-W3RBIIZW.js} +816 -812
  75. package/dist/chunk-W3RBIIZW.js.br +0 -0
  76. package/dist/chunk-W3RBIIZW.js.gz +0 -0
  77. package/dist/{chunk-YVZKXCML.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 +75 -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 +75 -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 +75 -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-DLADHD56.js.br +0 -0
  136. package/dist/AiChatPanel-DLADHD56.js.gz +0 -0
  137. package/dist/AiChatPanel-MSALNPYW.mjs.br +0 -0
  138. package/dist/AiChatPanel-MSALNPYW.mjs.gz +0 -0
  139. package/dist/Area3DChartScene-53ZVPYKG.mjs.br +0 -0
  140. package/dist/Area3DChartScene-53ZVPYKG.mjs.gz +0 -0
  141. package/dist/Area3DChartScene-BQQHOYRS.js.br +0 -0
  142. package/dist/Area3DChartScene-BQQHOYRS.js.gz +0 -0
  143. package/dist/Bar3DChartScene-IN67ZH3P.mjs.br +0 -0
  144. package/dist/Bar3DChartScene-IN67ZH3P.mjs.gz +0 -0
  145. package/dist/Bar3DChartScene-PNQOIOIH.js.br +0 -0
  146. package/dist/Bar3DChartScene-PNQOIOIH.js.gz +0 -0
  147. package/dist/Line3DChartScene-4SQUUAOW.mjs.br +0 -0
  148. package/dist/Line3DChartScene-4SQUUAOW.mjs.gz +0 -0
  149. package/dist/Line3DChartScene-CFSTMTFH.js.br +0 -0
  150. package/dist/Line3DChartScene-CFSTMTFH.js.gz +0 -0
  151. package/dist/Model3DScene-DXNAYZ6P.js.br +0 -0
  152. package/dist/Model3DScene-DXNAYZ6P.js.gz +0 -0
  153. package/dist/Model3DScene-TA55BJY7.mjs.br +0 -0
  154. package/dist/Model3DScene-TA55BJY7.mjs.gz +0 -0
  155. package/dist/PieChart3DScene-NCBKTWAO.js.br +0 -0
  156. package/dist/PieChart3DScene-NCBKTWAO.js.gz +0 -0
  157. package/dist/PieChart3DScene-TQOCHJOY.mjs.br +0 -0
  158. package/dist/PieChart3DScene-TQOCHJOY.mjs.gz +0 -0
  159. package/dist/SurfaceChart3DScene-7CSF2GPT.mjs.br +0 -0
  160. package/dist/SurfaceChart3DScene-7CSF2GPT.mjs.gz +0 -0
  161. package/dist/SurfaceChart3DScene-VA6IRLFG.js.br +0 -0
  162. package/dist/SurfaceChart3DScene-VA6IRLFG.js.gz +0 -0
  163. package/dist/chunk-3KVLOKA6.mjs.br +0 -0
  164. package/dist/chunk-3KVLOKA6.mjs.gz +0 -0
  165. package/dist/chunk-4WUGOCYU.js.br +0 -0
  166. package/dist/chunk-4WUGOCYU.js.gz +0 -0
  167. package/dist/chunk-AZEDCITO.js.br +0 -0
  168. package/dist/chunk-AZEDCITO.js.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-DNQ3PGGU.mjs.br +0 -0
  172. package/dist/chunk-DNQ3PGGU.mjs.gz +0 -0
  173. package/dist/chunk-EJSRXEXA.js.br +0 -0
  174. package/dist/chunk-EJSRXEXA.js.gz +0 -0
  175. package/dist/chunk-LBKKSCVS.mjs.br +0 -0
  176. package/dist/chunk-LBKKSCVS.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-RCUPQJVY.mjs.br +0 -0
  180. package/dist/chunk-RCUPQJVY.mjs.gz +0 -0
  181. package/dist/chunk-YVZKXCML.js.br +0 -0
  182. package/dist/chunk-YVZKXCML.js.gz +0 -0
  183. package/dist/chunk-Z3KMGLXL.mjs.br +0 -0
  184. package/dist/chunk-Z3KMGLXL.mjs.gz +0 -0
  185. package/dist/chunk-ZHPBQVBK.js.br +0 -0
  186. package/dist/chunk-ZHPBQVBK.js.gz +0 -0
@@ -24285,7 +24285,9 @@ function getElementTextContent(element) {
24285
24285
  return element.textSegments.map((segment) => String(segment.text || "")).join("");
24286
24286
  }
24287
24287
  function createEditorId(prefix) {
24288
- return `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
24288
+ const random = Math.random().toString(36).slice(2, 8).padEnd(6, "0");
24289
+ const sequence = (nextEditorIdSequence++).toString(36);
24290
+ return `${prefix}-${Date.now()}-${random}${sequence}`;
24289
24291
  }
24290
24292
  function ensureArrayValue(value) {
24291
24293
  if (!value) {
@@ -24293,10 +24295,12 @@ function ensureArrayValue(value) {
24293
24295
  }
24294
24296
  return Array.isArray(value) ? value : [value];
24295
24297
  }
24298
+ var nextEditorIdSequence;
24296
24299
  var init_element_utils = __esm({
24297
24300
  "src/core/utils/element-utils.ts"() {
24298
24301
  init_types();
24299
24302
  init_clone_utils();
24303
+ nextEditorIdSequence = 0;
24300
24304
  }
24301
24305
  });
24302
24306
  function isTemplateElementId(elementId) {
@@ -46489,6 +46493,10 @@ function parseChartDataPointPicture(dPtNode, xmlLookup) {
46489
46493
  if (Number.isFinite(stackUnit)) {
46490
46494
  result.pictureStackUnit = stackUnit;
46491
46495
  }
46496
+ const opacity2 = parseBlipOpacity(dPtNode, xmlLookup);
46497
+ if (opacity2 !== void 0) {
46498
+ result.opacity = opacity2;
46499
+ }
46492
46500
  return Object.keys(result).length > 0 ? result : void 0;
46493
46501
  }
46494
46502
  function parseChartDataPointPictureBlipRel(dPtNode, xmlLookup) {
@@ -46498,6 +46506,26 @@ function parseChartDataPointPictureBlipRel(dPtNode, xmlLookup) {
46498
46506
  const relId = String(blip?.["@_r:embed"] ?? blip?.["@_r:link"] ?? "").trim();
46499
46507
  return relId.length > 0 ? relId : void 0;
46500
46508
  }
46509
+ function parseBlipOpacity(dPtOrSerNode, xmlLookup) {
46510
+ const spPr = xmlLookup.getChildByLocalName(dPtOrSerNode, "spPr");
46511
+ const blipFill = xmlLookup.getChildByLocalName(spPr, "blipFill");
46512
+ const blip = xmlLookup.getChildByLocalName(blipFill, "blip");
46513
+ const alphaModFix = xmlLookup.getChildByLocalName(blip, "alphaModFix");
46514
+ const amt = Number.parseFloat(String(alphaModFix?.["@_amt"] ?? ""));
46515
+ return Number.isFinite(amt) ? Math.min(Math.max(amt / 1e5, 0), 1) : void 0;
46516
+ }
46517
+ function parseImplicitBlipPictureFill(dPtOrSerNode, xmlLookup) {
46518
+ const pictureOptions = xmlLookup.getChildByLocalName(dPtOrSerNode, "pictureOptions");
46519
+ if (pictureOptions) {
46520
+ return void 0;
46521
+ }
46522
+ const relId = parseChartDataPointPictureBlipRel(dPtOrSerNode, xmlLookup);
46523
+ if (!relId) {
46524
+ return void 0;
46525
+ }
46526
+ const opacity2 = parseBlipOpacity(dPtOrSerNode, xmlLookup);
46527
+ return { pictureFormat: "stretch", ...opacity2 !== void 0 ? { opacity: opacity2 } : {} };
46528
+ }
46501
46529
  function buildDptPictureOptions(existing, picture) {
46502
46530
  if (picture === void 0) {
46503
46531
  return existing;
@@ -46663,7 +46691,9 @@ function buildChartMarkerXml(existing, marker, getLocalName2, resolveColor2) {
46663
46691
  throw new RangeError("marker size must be an integer from 2 through 72");
46664
46692
  }
46665
46693
  const node = {};
46666
- node["c:symbol"] = { "@_val": marker.symbol };
46694
+ if (marker.symbol !== "auto") {
46695
+ node["c:symbol"] = { "@_val": marker.symbol };
46696
+ }
46667
46697
  if (marker.size !== void 0) {
46668
46698
  node["c:size"] = { "@_val": String(marker.size) };
46669
46699
  }
@@ -47028,10 +47058,7 @@ function parseMarker(markerNode, xmlLookup, colorParser) {
47028
47058
  }
47029
47059
  const symbolNode = xmlLookup.getChildByLocalName(markerNode, "symbol");
47030
47060
  const rawSymbol = String(symbolNode?.["@_val"] || "").trim();
47031
- const symbol = MARKER_SYMBOL_MAP[rawSymbol];
47032
- if (!symbol) {
47033
- return void 0;
47034
- }
47061
+ const symbol = MARKER_SYMBOL_MAP[rawSymbol] ?? "auto";
47035
47062
  const result = { symbol };
47036
47063
  const sizeNode = xmlLookup.getChildByLocalName(markerNode, "size");
47037
47064
  const size = Number(sizeNode?.["@_val"]);
@@ -47071,6 +47098,11 @@ function parseSeriesDataPoints(seriesNode, xmlLookup, colorParser) {
47071
47098
  const picture = parseChartDataPointPicture(node, xmlLookup);
47072
47099
  if (picture) {
47073
47100
  result.picture = picture;
47101
+ } else {
47102
+ const impliedPicture = parseImplicitBlipPictureFill(node, xmlLookup);
47103
+ if (impliedPicture) {
47104
+ result.impliedPicture = impliedPicture;
47105
+ }
47074
47106
  }
47075
47107
  const explosionNode = xmlLookup.getChildByLocalName(node, "explosion");
47076
47108
  const explosion = safeUnsignedInt(explosionNode?.["@_val"]);
@@ -48301,6 +48333,13 @@ function safeInt3(val2) {
48301
48333
  const n = parseInt(String(val2), 10);
48302
48334
  return Number.isFinite(n) ? n : void 0;
48303
48335
  }
48336
+ function hasLocalName(node, name) {
48337
+ if (Object.hasOwn(node, name)) {
48338
+ return true;
48339
+ }
48340
+ const suffix = `:${name}`;
48341
+ return Object.keys(node).some((key2) => key2.endsWith(suffix));
48342
+ }
48304
48343
  function parseChartAxes(plotArea, xmlLookup, colorParser, getLocalName2, resolveTypeface) {
48305
48344
  const result = [];
48306
48345
  for (const key2 of Object.keys(plotArea)) {
@@ -48396,20 +48435,24 @@ function parseSingleAxis(axisNode, axisType, xmlLookup, colorParser, getLocalNam
48396
48435
  result,
48397
48436
  (parent, name) => xmlLookup.getChildByLocalName(parent, name)
48398
48437
  );
48399
- const majorGrid = xmlLookup.getChildByLocalName(axisNode, "majorGridlines");
48400
- if (majorGrid) {
48438
+ if (hasLocalName(axisNode, "majorGridlines")) {
48401
48439
  result.majorGridlines = true;
48402
48440
  result.majorGridlinesSpPr = parseShapeProps(
48403
- xmlLookup.getChildByLocalName(majorGrid, "spPr"),
48441
+ xmlLookup.getChildByLocalName(
48442
+ xmlLookup.getChildByLocalName(axisNode, "majorGridlines"),
48443
+ "spPr"
48444
+ ),
48404
48445
  xmlLookup,
48405
48446
  colorParser
48406
48447
  );
48407
48448
  }
48408
- const minorGrid = xmlLookup.getChildByLocalName(axisNode, "minorGridlines");
48409
- if (minorGrid) {
48449
+ if (hasLocalName(axisNode, "minorGridlines")) {
48410
48450
  result.minorGridlines = true;
48411
48451
  result.minorGridlinesSpPr = parseShapeProps(
48412
- xmlLookup.getChildByLocalName(minorGrid, "spPr"),
48452
+ xmlLookup.getChildByLocalName(
48453
+ xmlLookup.getChildByLocalName(axisNode, "minorGridlines"),
48454
+ "spPr"
48455
+ ),
48413
48456
  xmlLookup,
48414
48457
  colorParser
48415
48458
  );
@@ -48612,20 +48655,24 @@ function parseSingleCxAxis(axisNode, xmlLookup, colorParser, resolveTypeface) {
48612
48655
  if (formatCode) {
48613
48656
  result.numFmt = { formatCode, sourceLinked: numFmtNode?.["@_sourceLinked"] === "1" };
48614
48657
  }
48615
- const majorGrid = xmlLookup.getChildByLocalName(axisNode, "majorGridlines");
48616
- if (majorGrid) {
48658
+ if (hasLocalName(axisNode, "majorGridlines")) {
48617
48659
  result.majorGridlines = true;
48618
48660
  result.majorGridlinesSpPr = parseShapeProps(
48619
- xmlLookup.getChildByLocalName(majorGrid, "spPr"),
48661
+ xmlLookup.getChildByLocalName(
48662
+ xmlLookup.getChildByLocalName(axisNode, "majorGridlines"),
48663
+ "spPr"
48664
+ ),
48620
48665
  xmlLookup,
48621
48666
  colorParser
48622
48667
  );
48623
48668
  }
48624
- const minorGrid = xmlLookup.getChildByLocalName(axisNode, "minorGridlines");
48625
- if (minorGrid) {
48669
+ if (hasLocalName(axisNode, "minorGridlines")) {
48626
48670
  result.minorGridlines = true;
48627
48671
  result.minorGridlinesSpPr = parseShapeProps(
48628
- xmlLookup.getChildByLocalName(minorGrid, "spPr"),
48672
+ xmlLookup.getChildByLocalName(
48673
+ xmlLookup.getChildByLocalName(axisNode, "minorGridlines"),
48674
+ "spPr"
48675
+ ),
48629
48676
  xmlLookup,
48630
48677
  colorParser
48631
48678
  );
@@ -48664,6 +48711,7 @@ function parseCxAxes(plotArea, xmlLookup, colorParser, resolveTypeface) {
48664
48711
  var NO_COLOR;
48665
48712
  var init_chart_cx_axis_parser = __esm({
48666
48713
  "src/core/utils/chart-cx-axis-parser.ts"() {
48714
+ init_chart_axis_parser();
48667
48715
  init_chart_series_detail_parser();
48668
48716
  init_chart_title_xml_ops();
48669
48717
  NO_COLOR = { parseColor: () => void 0 };
@@ -67423,6 +67471,12 @@ var init_PptxShapeStyleExtractor = __esm({
67423
67471
  style.fillMode = "image";
67424
67472
  style.fillColor = "transparent";
67425
67473
  style.fillOpacity = 0;
67474
+ const blipRotToken = String(blipFill["@_rotWithShape"] ?? "").trim().toLowerCase();
67475
+ if (blipRotToken === "1" || blipRotToken === "true") {
67476
+ style.fillImageRotWithShape = true;
67477
+ } else if (blipRotToken === "0" || blipRotToken === "false") {
67478
+ style.fillImageRotWithShape = false;
67479
+ }
67426
67480
  } else if (shapeProps["a:grpFill"] !== void 0) {
67427
67481
  style.fillMode = "group";
67428
67482
  } else if (styleNode?.["a:fillRef"]) {
@@ -80935,7 +80989,7 @@ async function resolveDataPointPictureImages(xmlLookup, readChartRels, resolveIm
80935
80989
  if (!seriesNode) {
80936
80990
  continue;
80937
80991
  }
80938
- const seriesPicture = series[si].picture;
80992
+ const seriesPicture = series[si].picture ?? series[si].impliedPicture;
80939
80993
  if (seriesPicture) {
80940
80994
  const seriesRelId = parseChartDataPointPictureBlipRel(seriesNode, xmlLookup);
80941
80995
  if (seriesRelId) {
@@ -80961,7 +81015,8 @@ async function resolveDataPointPictureImages(xmlLookup, readChartRels, resolveIm
80961
81015
  10
80962
81016
  );
80963
81017
  const dataPoint = dataPoints.find((dp) => dp.idx === idx);
80964
- if (!dataPoint?.picture) {
81018
+ const dataPointPicture = dataPoint?.picture ?? dataPoint?.impliedPicture;
81019
+ if (!dataPointPicture) {
80965
81020
  continue;
80966
81021
  }
80967
81022
  const relId = parseChartDataPointPictureBlipRel(dPtNode, xmlLookup);
@@ -80976,7 +81031,7 @@ async function resolveDataPointPictureImages(xmlLookup, readChartRels, resolveIm
80976
81031
  const imagePath = resolveImagePath(chartPartPath, rel.target);
80977
81032
  const imageUrl = await getImageData(imagePath);
80978
81033
  if (imageUrl) {
80979
- dataPoint.picture.imageUrl = imageUrl;
81034
+ dataPointPicture.imageUrl = imageUrl;
80980
81035
  }
80981
81036
  }
80982
81037
  }
@@ -96967,6 +97022,7 @@ var PptxHandlerRuntime10;
96967
97022
  var init_PptxHandlerRuntimePresentationProps = __esm({
96968
97023
  "src/core/core/runtime/PptxHandlerRuntimePresentationProps.ts"() {
96969
97024
  init_chart_data_label_parser();
97025
+ init_chart_def_rpr_style();
96970
97026
  init_chart_legend_serializer();
96971
97027
  init_chart_title_style_parser();
96972
97028
  init_pptx_presentation_props_helpers();
@@ -97121,6 +97177,18 @@ var init_PptxHandlerRuntimePresentationProps = __esm({
97121
97177
  if (entries.length > 0) {
97122
97178
  style.legendEntries = entries;
97123
97179
  }
97180
+ const legendTxPr = this.xmlLookupService.getChildByLocalName(legend, "txPr");
97181
+ const chartSpaceTxPr = this.xmlLookupService.getChildByLocalName(chartSpace, "txPr");
97182
+ const legendDefRPr = resolveTxPrDefRPr(legendTxPr ?? chartSpaceTxPr, this.xmlLookupService);
97183
+ const legendTextStyle = parseDefRPrTextStyle(
97184
+ legendDefRPr,
97185
+ this.xmlLookupService,
97186
+ { parseColor: (node) => this.parseColor(node) },
97187
+ (raw) => this.resolveThemeTypeface(raw) ?? raw
97188
+ );
97189
+ if (legendTextStyle) {
97190
+ style.legendTextStyle = legendTextStyle;
97191
+ }
97124
97192
  }
97125
97193
  const title = this.xmlLookupService.getChildByLocalName(chartRoot, "title");
97126
97194
  if (title) {
@@ -122015,7 +122083,9 @@ var init_PptxHandlerRuntimeChartParsing = __esm({
122015
122083
  });
122016
122084
  }
122017
122085
  }
122018
- if (finalSeries.some((s) => s.picture || s.dataPoints?.some((dp) => dp.picture))) {
122086
+ if (finalSeries.some(
122087
+ (s) => s.picture || s.impliedPicture || s.dataPoints?.some((dp) => dp.picture || dp.impliedPicture)
122088
+ )) {
122019
122089
  await resolveDataPointPictureImages(
122020
122090
  this.xmlLookupService,
122021
122091
  this.readChartRels.bind(this),
@@ -122272,6 +122342,9 @@ var init_PptxHandlerRuntimeChartParsing = __esm({
122272
122342
  buildChartSeries(seriesList, categories, seriesChartType, axisId, containerChartType) {
122273
122343
  return seriesList.map((seriesNode, seriesIndex) => {
122274
122344
  const seriesName = this.extractChartSeriesName(seriesNode);
122345
+ const rawIdx = this.xmlLookupService.getChildByLocalName(seriesNode, "idx")?.["@_val"];
122346
+ const parsedIdx = rawIdx !== void 0 ? Number.parseInt(String(rawIdx), 10) : Number.NaN;
122347
+ const idx = Number.isFinite(parsedIdx) ? parsedIdx : void 0;
122275
122348
  const valNode2 = this.xmlLookupService.getChildByLocalName(seriesNode, "val") || this.xmlLookupService.getChildByLocalName(seriesNode, "yVal");
122276
122349
  const expanded = extractSeriesNumbersWithBlanks(valNode2, this.xmlLookupService);
122277
122350
  const hasBlanks = expanded.some((value) => value === null);
@@ -122330,6 +122403,7 @@ var init_PptxHandlerRuntimeChartParsing = __esm({
122330
122403
  (key2) => this.compatibilityService.getXmlLocalName(key2)
122331
122404
  );
122332
122405
  const seriesPicture = parseChartDataPointPicture(seriesNode, this.xmlLookupService);
122406
+ const impliedSeriesPicture = seriesPicture ? void 0 : parseImplicitBlipPictureFill(seriesNode, this.xmlLookupService);
122333
122407
  const xValues = extractSeriesNumbersWithBlanks(
122334
122408
  this.xmlLookupService.getChildByLocalName(seriesNode, "xVal"),
122335
122409
  this.xmlLookupService
@@ -122360,6 +122434,7 @@ var init_PptxHandlerRuntimeChartParsing = __esm({
122360
122434
  ) : void 0;
122361
122435
  return {
122362
122436
  name: seriesName.trim().length > 0 ? seriesName : `Series ${seriesIndex + 1}`,
122437
+ ...idx !== void 0 ? { idx } : {},
122363
122438
  values: fallbackValues,
122364
122439
  ...blanks ? { blanks } : {},
122365
122440
  ...xValues.length > 0 ? { xValues } : {},
@@ -122375,6 +122450,7 @@ var init_PptxHandlerRuntimeChartParsing = __esm({
122375
122450
  ...dataLabels.length > 0 ? { dataLabels } : {},
122376
122451
  ...explosion !== void 0 ? { explosion } : {},
122377
122452
  ...seriesPicture ? { picture: seriesPicture } : {},
122453
+ ...impliedSeriesPicture ? { impliedPicture: impliedSeriesPicture } : {},
122378
122454
  ...invertIfNegative !== void 0 ? { invertIfNegative } : {},
122379
122455
  ...smooth !== void 0 ? { smooth } : {},
122380
122456
  ...axisId !== void 0 ? { axisId } : {},
@@ -144122,6 +144198,28 @@ function resolveGroupChildFill(child27, parentGroupFill) {
144122
144198
  }
144123
144199
  return getComputedFillStyle(child27, parentGroupFill);
144124
144200
  }
144201
+ function getFrameInverseTransform(element) {
144202
+ const transforms = [];
144203
+ if (element.flipVertical) {
144204
+ transforms.push("scaleY(-1)");
144205
+ }
144206
+ if (element.flipHorizontal) {
144207
+ transforms.push("scaleX(-1)");
144208
+ }
144209
+ if (element.rotation) {
144210
+ transforms.push(`rotate(${-element.rotation}deg)`);
144211
+ }
144212
+ return transforms.length > 0 ? transforms.join(" ") : void 0;
144213
+ }
144214
+ function getImageFillCounterTransform(element, hasCompetingTransform = false) {
144215
+ if (hasCompetingTransform || !hasShapeProperties(element)) {
144216
+ return void 0;
144217
+ }
144218
+ if (element.shapeStyle?.fillImageRotWithShape !== false) {
144219
+ return void 0;
144220
+ }
144221
+ return getFrameInverseTransform(element);
144222
+ }
144125
144223
  var DEFAULT_SCHEME_COLOR_MAP2 = {
144126
144224
  dk1: "#000000",
144127
144225
  lt1: "#FFFFFF",
@@ -150499,7 +150597,20 @@ function compileEquationTemplateMathMl() {
150499
150597
  }
150500
150598
  var NICE_STEPS = [1, 2, 2.5, 5, 10];
150501
150599
  var HEADROOM = 0.05;
150600
+ var POINTS_PER_GRIDLINE = 20;
150601
+ var MIN_TARGET_INTERVALS = 1;
150602
+ var MAX_TARGET_INTERVALS = 10;
150603
+ var PX_PER_POINT = 4 / 3;
150604
+ var DEFAULT_TARGET_INTERVALS = 4;
150502
150605
  var ZERO_ANCHOR_RATIO = 5 / 6;
150606
+ function axisTargetIntervals(plotHeightPx) {
150607
+ if (!Number.isFinite(plotHeightPx) || plotHeightPx <= 0) {
150608
+ return DEFAULT_TARGET_INTERVALS;
150609
+ }
150610
+ const plotHeightPt = plotHeightPx / PX_PER_POINT;
150611
+ const raw = Math.round(plotHeightPt / POINTS_PER_GRIDLINE);
150612
+ return Math.min(MAX_TARGET_INTERVALS, Math.max(MIN_TARGET_INTERVALS, raw));
150613
+ }
150503
150614
  function niceAxisStep(value) {
150504
150615
  if (!Number.isFinite(value) || value <= 0) {
150505
150616
  return 1;
@@ -150515,7 +150626,7 @@ function snap(value, unit, direction) {
150515
150626
  const rounded = direction === "up" ? Math.ceil(scaled - 1e-9) : Math.floor(scaled + 1e-9);
150516
150627
  return rounded * unit;
150517
150628
  }
150518
- function niceValueAxisBounds(dataMin, dataMax, targetIntervals = 4) {
150629
+ function niceValueAxisBounds(dataMin, dataMax, targetIntervals = DEFAULT_TARGET_INTERVALS) {
150519
150630
  if (!Number.isFinite(dataMin) || !Number.isFinite(dataMax)) {
150520
150631
  return { min: 0, max: 1, majorUnit: 0.5 };
150521
150632
  }
@@ -150919,14 +151030,15 @@ function getChartStylePalette(styleId) {
150919
151030
  }
150920
151031
  return palette;
150921
151032
  }
150922
- function computeValueRange(series) {
151033
+ function computeValueRange(series, plotHeightPx) {
150923
151034
  const allValues = series.flatMap((s) => s.values);
150924
151035
  if (allValues.length === 0) {
150925
151036
  return { min: 0, max: 1, span: 1 };
150926
151037
  }
150927
151038
  const { min, max, majorUnit } = niceValueAxisBounds(
150928
151039
  Math.min(...allValues),
150929
- Math.max(...allValues)
151040
+ Math.max(...allValues),
151041
+ plotHeightPx !== void 0 ? axisTargetIntervals(plotHeightPx) : void 0
150930
151042
  );
150931
151043
  return { min, max, span: Math.max(max - min, Number.EPSILON), majorUnit };
150932
151044
  }
@@ -150954,7 +151066,7 @@ function resolve(fill, fallback) {
150954
151066
  return fill ?? fallback;
150955
151067
  }
150956
151068
  function chartAreaFill(chartData) {
150957
- return resolve(chartData?.style?.chartAreaFill, DEFAULT_CHART_AREA_FILL);
151069
+ return resolve(chartData?.style?.chartAreaFill, void 0);
150958
151070
  }
150959
151071
  function plotAreaFill(chartData) {
150960
151072
  return resolve(chartData?.style?.plotAreaFill, void 0);
@@ -151027,10 +151139,10 @@ function computeLogValueRange(series, logBase) {
151027
151139
  logBase
151028
151140
  };
151029
151141
  }
151030
- function computeValueRangeForAxis(series, axis) {
151142
+ function computeValueRangeForAxis(series, axis, plotHeightPx) {
151031
151143
  const requestedLogBase = axis?.logBase ?? 10;
151032
151144
  const logBase = axis?.logScale && Number.isFinite(requestedLogBase) && requestedLogBase > 1 ? requestedLogBase : axis?.logScale ? 10 : void 0;
151033
- const automatic = logBase ? computeLogValueRange(series, logBase) : computeValueRange(series);
151145
+ const automatic = logBase ? computeLogValueRange(series, logBase) : computeValueRange(series, plotHeightPx);
151034
151146
  const validMin = typeof axis?.min === "number" && Number.isFinite(axis.min) && (!logBase || axis.min > 0) ? axis.min : void 0;
151035
151147
  const validMax = typeof axis?.max === "number" && Number.isFinite(axis.max) && (!logBase || axis.max > 0) ? axis.max : void 0;
151036
151148
  const min = validMin ?? automatic.min;
@@ -151107,9 +151219,9 @@ function generateMinorAxisTicks(range, axis) {
151107
151219
  (value) => Math.abs(value / majorUnit - Math.round(value / majorUnit)) > tolerance
151108
151220
  );
151109
151221
  }
151110
- function computeValueRangeForChart(series, axes) {
151222
+ function computeValueRangeForChart(series, axes, plotHeightPx) {
151111
151223
  const primaryAxis = axes?.find((axis) => axis.axisType === "valAx" && axis.axPos === "l") ?? axes?.find((axis) => axis.axisType === "valAx" && axis.axPos !== "r");
151112
- return computeValueRangeForAxis(series, primaryAxis);
151224
+ return computeValueRangeForAxis(series, primaryAxis, plotHeightPx);
151113
151225
  }
151114
151226
  var DISPLAY_UNIT_DIVISORS = {
151115
151227
  hundreds: 100,
@@ -151171,11 +151283,20 @@ function hasSecondaryValueAxis(axes) {
151171
151283
  }
151172
151284
  return axes.some((a) => a.axisType === "valAx" && a.axPos === "r");
151173
151285
  }
151286
+ function categoryAxes(axes) {
151287
+ return axes?.filter((a) => a.axisType === "catAx" || a.axisType === "dateAx") ?? [];
151288
+ }
151174
151289
  function hasSecondaryCategoryAxis(axes) {
151175
- if (!axes) {
151290
+ const cats = categoryAxes(axes);
151291
+ return cats.length > 1 && cats.some((a) => a.axPos === "t");
151292
+ }
151293
+ function isPrimaryCategoryAxisAtTop(axes) {
151294
+ const cats = categoryAxes(axes);
151295
+ if (cats.length === 0) {
151176
151296
  return false;
151177
151297
  }
151178
- return axes.some((a) => (a.axisType === "catAx" || a.axisType === "dateAx") && a.axPos === "t");
151298
+ const primary = cats.find((a) => a.axPos !== "t") ?? cats[0];
151299
+ return primary.axPos === "t";
151179
151300
  }
151180
151301
  function getSecondaryValueAxis(axes) {
151181
151302
  if (!axes) {
@@ -151187,6 +151308,7 @@ function computeLayoutOptions(axes, dataTable, seriesCount) {
151187
151308
  return {
151188
151309
  hasSecondaryValueAxis: hasSecondaryValueAxis(axes),
151189
151310
  hasSecondaryCategoryAxis: hasSecondaryCategoryAxis(axes),
151311
+ categoryAxisAtTop: isPrimaryCategoryAxisAtTop(axes),
151190
151312
  hasDataTable: Boolean(dataTable),
151191
151313
  dataTableRowCount: dataTable ? seriesCount : void 0
151192
151314
  };
@@ -151247,6 +151369,113 @@ function shade2(hex4, amount) {
151247
151369
  const [r, g2, b] = hexToRgb3(hex4);
151248
151370
  return rgbToHex2(r * (1 - amount), g2 * (1 - amount), b * (1 - amount));
151249
151371
  }
151372
+ var AUTOMATIC_MARKER_CYCLE = [
151373
+ "diamond",
151374
+ "square",
151375
+ "triangle",
151376
+ "x",
151377
+ "star",
151378
+ "circle",
151379
+ "plus",
151380
+ "dot",
151381
+ "dash"
151382
+ ];
151383
+ function automaticMarkerSymbol(seriesIdx) {
151384
+ const length = AUTOMATIC_MARKER_CYCLE.length;
151385
+ const normalized = (seriesIdx % length + length) % length;
151386
+ return AUTOMATIC_MARKER_CYCLE[normalized];
151387
+ }
151388
+ function markerRadius(size, defaultRadius2) {
151389
+ if (size === void 0 || !Number.isFinite(size) || size <= 0) {
151390
+ return defaultRadius2;
151391
+ }
151392
+ return size / 2;
151393
+ }
151394
+ function polygonPoints(vertices) {
151395
+ return vertices.map(([x, y]) => `${x.toFixed(2)},${y.toFixed(2)}`).join(" ");
151396
+ }
151397
+ function starVertices(cx, cy, r) {
151398
+ const inner = r * 0.5;
151399
+ const out = [];
151400
+ for (let i2 = 0; i2 < 10; i2++) {
151401
+ const radius = i2 % 2 === 0 ? r : inner;
151402
+ const angle = -Math.PI / 2 + Math.PI * i2 / 5;
151403
+ out.push([cx + radius * Math.cos(angle), cy + radius * Math.sin(angle)]);
151404
+ }
151405
+ return out;
151406
+ }
151407
+ function buildMarkerPrimitive(input) {
151408
+ const { symbol, cx, cy, fill, part } = input;
151409
+ if (symbol === "none") {
151410
+ return null;
151411
+ }
151412
+ const r = markerRadius(input.size, input.defaultRadius);
151413
+ const stroke = fill;
151414
+ switch (symbol) {
151415
+ case "square":
151416
+ return { kind: "rect", x: cx - r, y: cy - r, w: r * 2, h: r * 2, fill, part };
151417
+ case "dash":
151418
+ return { kind: "rect", x: cx - r, y: cy - r * 0.32, w: r * 2, h: r * 0.64, fill, part };
151419
+ case "diamond":
151420
+ return {
151421
+ kind: "polygon",
151422
+ points: polygonPoints([
151423
+ [cx, cy - r],
151424
+ [cx + r, cy],
151425
+ [cx, cy + r],
151426
+ [cx - r, cy]
151427
+ ]),
151428
+ fill,
151429
+ stroke,
151430
+ strokeWidth: 0,
151431
+ part
151432
+ };
151433
+ case "triangle":
151434
+ return {
151435
+ kind: "polygon",
151436
+ points: polygonPoints([
151437
+ [cx, cy - r],
151438
+ [cx + r * 0.9, cy + r * 0.75],
151439
+ [cx - r * 0.9, cy + r * 0.75]
151440
+ ]),
151441
+ fill,
151442
+ stroke,
151443
+ strokeWidth: 0,
151444
+ part
151445
+ };
151446
+ case "star":
151447
+ return {
151448
+ kind: "polygon",
151449
+ points: polygonPoints(starVertices(cx, cy, r)),
151450
+ fill,
151451
+ stroke,
151452
+ strokeWidth: 0,
151453
+ part
151454
+ };
151455
+ case "plus":
151456
+ return {
151457
+ kind: "path",
151458
+ 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)}`,
151459
+ fill: "none",
151460
+ stroke,
151461
+ strokeWidth: Math.max(1, r * 0.4),
151462
+ part
151463
+ };
151464
+ case "x":
151465
+ return {
151466
+ kind: "path",
151467
+ 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)}`,
151468
+ fill: "none",
151469
+ stroke,
151470
+ strokeWidth: Math.max(1, r * 0.4),
151471
+ part
151472
+ };
151473
+ case "dot":
151474
+ return { kind: "circle", cx, cy, r: Math.max(r * 0.6, 1), fill, part };
151475
+ default:
151476
+ return { kind: "circle", cx, cy, r, fill, part };
151477
+ }
151478
+ }
151250
151479
  function findDataPoint(series, pointIndex) {
151251
151480
  return series.dataPoints?.find((p) => p.idx === pointIndex);
151252
151481
  }
@@ -151261,21 +151490,28 @@ function resolveDataPointExplosion(series, pointIndex) {
151261
151490
  const point = findDataPoint(series, pointIndex);
151262
151491
  return point?.explosion ?? series.explosion ?? 0;
151263
151492
  }
151264
- function resolveDataPointMarker(series, pointIndex) {
151493
+ function resolveDataPointMarker(series, pointIndex, seriesPosition = 0) {
151265
151494
  const point = findDataPoint(series, pointIndex)?.marker;
151495
+ const hasMarker = point !== void 0 || series.marker !== void 0;
151496
+ const rawSymbol = point?.symbol ?? series.marker?.symbol;
151497
+ const symbol = hasMarker && (rawSymbol === void 0 || rawSymbol === "auto") ? automaticMarkerSymbol(series.idx ?? seriesPosition) : rawSymbol;
151266
151498
  return {
151267
- symbol: point?.symbol ?? series.marker?.symbol,
151499
+ symbol,
151268
151500
  size: point?.size ?? series.marker?.size,
151269
151501
  fill: point?.spPr?.fillColor ?? series.marker?.spPr?.fillColor
151270
151502
  };
151271
151503
  }
151272
151504
  var DEFAULT_PICTURE_FORMAT = "stretch";
151273
151505
  function resolveActiveDataPointPicture(series, pointIndex) {
151274
- const pointPicture = findDataPoint(series, pointIndex)?.picture;
151275
- if (pointPicture?.imageUrl) {
151506
+ const point = findDataPoint(series, pointIndex);
151507
+ const pointPicture = point?.picture?.imageUrl ? point.picture : point?.impliedPicture?.imageUrl ? point.impliedPicture : void 0;
151508
+ if (pointPicture) {
151276
151509
  return pointPicture;
151277
151510
  }
151278
- return series.picture?.imageUrl ? series.picture : void 0;
151511
+ if (series.picture?.imageUrl) {
151512
+ return series.picture;
151513
+ }
151514
+ return series.impliedPicture?.imageUrl ? series.impliedPicture : void 0;
151279
151515
  }
151280
151516
  function resolveBarFaceTargets(picture) {
151281
151517
  if (!picture) {
@@ -151304,7 +151540,8 @@ function resolveDataPointPictureFill(series, pointIndex, seriesIndex, face) {
151304
151540
  patternId: `chart-dpt-pic-${seriesIndex}-${pointIndex}${face && face !== "front" ? `-${face}` : ""}`,
151305
151541
  imageUrl: picture.imageUrl,
151306
151542
  format,
151307
- ...format !== "stretch" && picture.pictureStackUnit !== void 0 ? { tileHeightPx: chartFontPx(picture.pictureStackUnit) } : {}
151543
+ ...format !== "stretch" && picture.pictureStackUnit !== void 0 ? { tileHeightPx: chartFontPx(picture.pictureStackUnit) } : {},
151544
+ ...picture.opacity !== void 0 ? { opacity: picture.opacity } : {}
151308
151545
  };
151309
151546
  }
151310
151547
  function polygonBoundingBox2(points4) {
@@ -151361,7 +151598,11 @@ function applyDataPointPictureFills(chartData, elementId, primitives) {
151361
151598
  resolved.tileHeightPx
151362
151599
  )
151363
151600
  );
151364
- return { ...primitive, fill: `url(#${patternId})` };
151601
+ return {
151602
+ ...primitive,
151603
+ fill: `url(#${patternId})`,
151604
+ ...resolved.opacity !== void 0 ? { opacity: resolved.opacity } : {}
151605
+ };
151365
151606
  });
151366
151607
  return { primitives: next, defs };
151367
151608
  }
@@ -151516,10 +151757,45 @@ function computeChartLegendLayout(vm) {
151516
151757
  fill: textStyle?.color ?? DEFAULT_LEGEND_TEXT_COLOR,
151517
151758
  fontWeight: textStyle?.bold ? "bold" : "normal",
151518
151759
  fontStyle: textStyle?.italic ? "italic" : "normal",
151519
- fontFamily: textStyle?.fontFamily
151760
+ fontFamily: textStyle?.fontFamily,
151761
+ ...entry2.lineSwatch ? { lineSwatch: entry2.lineSwatch } : {}
151520
151762
  };
151521
151763
  });
151522
151764
  }
151765
+ var LEGEND_LINE_SWATCH_WIDTH = 2;
151766
+ var LEGEND_MARKER_RADIUS = 3;
151767
+ var SWATCH_CENTER_Y = -2;
151768
+ var SWATCH_WIDTH = 10;
151769
+ function resolveLegendSwatchKind(kind) {
151770
+ return kind === "line" || kind === "scatter" ? "line" : "rect";
151771
+ }
151772
+ function buildLineLegendSwatch(series, color2, seriesPosition = 0) {
151773
+ const resolved = resolveDataPointMarker(series, -1, seriesPosition), primitives = [];
151774
+ if (!series.lineNoFill) {
151775
+ primitives.push({
151776
+ kind: "line",
151777
+ x1: 0,
151778
+ y1: SWATCH_CENTER_Y,
151779
+ x2: SWATCH_WIDTH,
151780
+ y2: SWATCH_CENTER_Y,
151781
+ stroke: color2,
151782
+ strokeWidth: LEGEND_LINE_SWATCH_WIDTH
151783
+ });
151784
+ }
151785
+ const marker = buildMarkerPrimitive({
151786
+ symbol: resolved.symbol,
151787
+ // Deliberately ignore the series' authored size (see doc comment above).
151788
+ size: void 0,
151789
+ cx: SWATCH_WIDTH / 2,
151790
+ cy: SWATCH_CENTER_Y,
151791
+ fill: resolved.fill ?? color2,
151792
+ defaultRadius: LEGEND_MARKER_RADIUS
151793
+ });
151794
+ if (marker) {
151795
+ primitives.push(marker);
151796
+ }
151797
+ return { primitives };
151798
+ }
151523
151799
  var DEFAULT_COLOR2 = "#64748b";
151524
151800
  function dashArray(style, width) {
151525
151801
  if (!style || style === "solid") {
@@ -151611,7 +151887,7 @@ function paletteColor2(index, colorPalette) {
151611
151887
  function seriesColor2(series, index, colorPalette) {
151612
151888
  return series.color ?? series.marker?.spPr?.fillColor ?? paletteColor2(index, colorPalette);
151613
151889
  }
151614
- function computeValueRange2(series) {
151890
+ function computeValueRange2(series, plotHeightPx) {
151615
151891
  let dataMin = Number.POSITIVE_INFINITY, dataMax = Number.NEGATIVE_INFINITY;
151616
151892
  for (const item of series) {
151617
151893
  for (const value of item.values) {
@@ -151626,10 +151902,14 @@ function computeValueRange2(series) {
151626
151902
  if (dataMin === Number.POSITIVE_INFINITY) {
151627
151903
  return { min: 0, max: 1, span: 1 };
151628
151904
  }
151629
- const { min, max, majorUnit } = niceValueAxisBounds(dataMin, dataMax);
151905
+ const { min, max, majorUnit } = niceValueAxisBounds(
151906
+ dataMin,
151907
+ dataMax,
151908
+ plotHeightPx !== void 0 ? axisTargetIntervals(plotHeightPx) : void 0
151909
+ );
151630
151910
  return { min, max, span: Math.max(max - min, Number.EPSILON), majorUnit };
151631
151911
  }
151632
- function computeStackedValueRange(series, catCount) {
151912
+ function computeStackedValueRange(series, catCount, plotHeightPx) {
151633
151913
  let maxSum = 0, minSum = 0;
151634
151914
  for (let ci = 0; ci < catCount; ci++) {
151635
151915
  let pos2 = 0, neg = 0;
@@ -151644,7 +151924,11 @@ function computeStackedValueRange(series, catCount) {
151644
151924
  maxSum = Math.max(maxSum, pos2);
151645
151925
  minSum = Math.min(minSum, neg);
151646
151926
  }
151647
- const { min, max, majorUnit } = niceValueAxisBounds(Math.min(minSum, 0), Math.max(maxSum, 0));
151927
+ const { min, max, majorUnit } = niceValueAxisBounds(
151928
+ Math.min(minSum, 0),
151929
+ Math.max(maxSum, 0),
151930
+ plotHeightPx !== void 0 ? axisTargetIntervals(plotHeightPx) : void 0
151931
+ );
151648
151932
  return { min, max, span: Math.max(max - min, Number.EPSILON), majorUnit };
151649
151933
  }
151650
151934
  function valueToY2(val2, range, topY, bottomY) {
@@ -151678,6 +151962,30 @@ function buildMarkTooltip(seriesName, categoryLabel, value, numberFormat) {
151678
151962
  const label = [seriesName, categoryLabel].filter((part) => Boolean(part && part.length > 0)).join(", "), formatted = formatAxisValue2(value, numberFormat);
151679
151963
  return label.length > 0 ? `${label}: ${formatted}` : formatted;
151680
151964
  }
151965
+ function buildLegend(series, colorPalette, svgWidth, legendPos, svgHeight, plotTop, swatchKind = "rect") {
151966
+ const legend = series.map((s, i2) => {
151967
+ const color2 = seriesColor2(s, i2, colorPalette), kind = Array.isArray(swatchKind) ? swatchKind[i2] ?? "rect" : swatchKind;
151968
+ return {
151969
+ color: color2,
151970
+ label: s.name,
151971
+ ...kind === "line" ? { lineSwatch: buildLineLegendSwatch(s, color2, i2) } : {}
151972
+ };
151973
+ });
151974
+ let legendX = svgWidth / 2, legendY = svgHeight - 8, legendAnchor = "middle";
151975
+ const side = resolveLegendPlacement(legendPos).side;
151976
+ if (side === "r") {
151977
+ legendX = svgWidth - 75;
151978
+ legendY = plotTop;
151979
+ legendAnchor = "start";
151980
+ } else if (side === "l") {
151981
+ legendX = 4;
151982
+ legendY = plotTop;
151983
+ legendAnchor = "start";
151984
+ } else if (side === "t") {
151985
+ legendY = 28;
151986
+ }
151987
+ return { legend, legendX, legendY, legendAnchor };
151988
+ }
151681
151989
  function computeBarRects(series, catCount, layout, range, colorPalette) {
151682
151990
  const rects = [], seriesCount = Math.max(series.length, 1), barGroupWidth = layout.plotWidth / Math.max(catCount, 1), singleBarWidth = barGroupWidth * 0.7 / seriesCount, groupOffset = (barGroupWidth - singleBarWidth * seriesCount) / 2;
151683
151991
  for (let ci = 0; ci < catCount; ci++) {
@@ -152350,97 +152658,6 @@ function smoothLinePath(points4) {
152350
152658
  }
152351
152659
  return d;
152352
152660
  }
152353
- function markerRadius(size, defaultRadius2) {
152354
- if (size === void 0 || !Number.isFinite(size) || size <= 0) {
152355
- return defaultRadius2;
152356
- }
152357
- return size / 2;
152358
- }
152359
- function polygonPoints(vertices) {
152360
- return vertices.map(([x, y]) => `${x.toFixed(2)},${y.toFixed(2)}`).join(" ");
152361
- }
152362
- function starVertices(cx, cy, r) {
152363
- const inner = r * 0.5;
152364
- const out = [];
152365
- for (let i2 = 0; i2 < 10; i2++) {
152366
- const radius = i2 % 2 === 0 ? r : inner;
152367
- const angle = -Math.PI / 2 + Math.PI * i2 / 5;
152368
- out.push([cx + radius * Math.cos(angle), cy + radius * Math.sin(angle)]);
152369
- }
152370
- return out;
152371
- }
152372
- function buildMarkerPrimitive(input) {
152373
- const { symbol, cx, cy, fill, part } = input;
152374
- if (symbol === "none") {
152375
- return null;
152376
- }
152377
- const r = markerRadius(input.size, input.defaultRadius);
152378
- const stroke = fill;
152379
- switch (symbol) {
152380
- case "square":
152381
- return { kind: "rect", x: cx - r, y: cy - r, w: r * 2, h: r * 2, fill, part };
152382
- case "dash":
152383
- return { kind: "rect", x: cx - r, y: cy - r * 0.32, w: r * 2, h: r * 0.64, fill, part };
152384
- case "diamond":
152385
- return {
152386
- kind: "polygon",
152387
- points: polygonPoints([
152388
- [cx, cy - r],
152389
- [cx + r, cy],
152390
- [cx, cy + r],
152391
- [cx - r, cy]
152392
- ]),
152393
- fill,
152394
- stroke,
152395
- strokeWidth: 0,
152396
- part
152397
- };
152398
- case "triangle":
152399
- return {
152400
- kind: "polygon",
152401
- points: polygonPoints([
152402
- [cx, cy - r],
152403
- [cx + r * 0.9, cy + r * 0.75],
152404
- [cx - r * 0.9, cy + r * 0.75]
152405
- ]),
152406
- fill,
152407
- stroke,
152408
- strokeWidth: 0,
152409
- part
152410
- };
152411
- case "star":
152412
- return {
152413
- kind: "polygon",
152414
- points: polygonPoints(starVertices(cx, cy, r)),
152415
- fill,
152416
- stroke,
152417
- strokeWidth: 0,
152418
- part
152419
- };
152420
- case "plus":
152421
- return {
152422
- kind: "path",
152423
- 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)}`,
152424
- fill: "none",
152425
- stroke,
152426
- strokeWidth: Math.max(1, r * 0.4),
152427
- part
152428
- };
152429
- case "x":
152430
- return {
152431
- kind: "path",
152432
- 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)}`,
152433
- fill: "none",
152434
- stroke,
152435
- strokeWidth: Math.max(1, r * 0.4),
152436
- part
152437
- };
152438
- case "dot":
152439
- return { kind: "circle", cx, cy, r: Math.max(r * 0.6, 1), fill, part };
152440
- default:
152441
- return { kind: "circle", cx, cy, r, fill, part };
152442
- }
152443
- }
152444
152661
  function elementFrame(layout) {
152445
152662
  return { width: layout.svgWidth, height: layout.svgHeight };
152446
152663
  }
@@ -152448,8 +152665,8 @@ function xyMarkTooltip(seriesName, xVal, yVal, numberFormat) {
152448
152665
  const y = formatAxisValue2(yVal, numberFormat), coords = xVal !== void 0 ? `(${formatAxisValue2(xVal)}, ${y})` : y;
152449
152666
  return seriesName.length > 0 ? `${seriesName}: ${coords}` : coords;
152450
152667
  }
152451
- function pushMarker(out, series, pointIndex, cx, cy, fill, defaultRadius2, part, opacity2, title) {
152452
- const marker = resolveDataPointMarker(series, pointIndex), m = buildMarkerPrimitive({
152668
+ function pushMarker(out, series, pointIndex, cx, cy, fill, defaultRadius2, part, opacity2, title, seriesPosition = part.seriesIndex ?? 0) {
152669
+ const marker = resolveDataPointMarker(series, pointIndex, seriesPosition), m = buildMarkerPrimitive({
152453
152670
  symbol: marker.symbol,
152454
152671
  size: marker.size,
152455
152672
  cx,
@@ -152952,7 +153169,7 @@ function invertNegativeFill(series, pointIndex, value, baseFill) {
152952
153169
  function buildBars(chartData, catCount, layout, primaryRange, secondaryRange, secondaryIdx, grouping, sourceIndices2) {
152953
153170
  const primitives = [], dataLabels = [], series = chartData.series, palette = chartData.colorPalette, showLabels = chartData.style?.hasDataLabels, varyColorsSingle = chartData.varyColors === true && series.length === 1;
152954
153171
  if (grouping === "clustered") {
152955
- const seriesCount = Math.max(series.length, 1), barGroupWidth = layout.plotWidth / Math.max(catCount, 1), singleBarWidth = chartData.barGapWidth !== void 0 ? barGroupWidth / (seriesCount + Math.max(chartData.barGapWidth, 0) / 100) : barGroupWidth * 0.7 / seriesCount, overlap = chartData.barOverlap ?? 0, step = singleBarWidth * (1 - overlap / 100), clusterWidth = singleBarWidth + step * (seriesCount - 1), groupOffset = (barGroupWidth - clusterWidth) / 2;
153172
+ const seriesCount = Math.max(series.length, 1), barGroupWidth = layout.plotWidth / Math.max(catCount, 1), overlap = chartData.barOverlap ?? 0, overlapSpan = 1 + (seriesCount - 1) * (1 - overlap / 100), singleBarWidth = chartData.barGapWidth !== void 0 ? barGroupWidth / ((1 + Math.max(chartData.barGapWidth, 0) / 100) * overlapSpan) : barGroupWidth * 0.7 / seriesCount, step = singleBarWidth * (1 - overlap / 100), clusterWidth = singleBarWidth + step * (seriesCount - 1), groupOffset = (barGroupWidth - clusterWidth) / 2;
152956
153173
  for (let displayIndex = 0; displayIndex < catCount; displayIndex++) {
152957
153174
  const sourceIndex = sourceIndices2[displayIndex] ?? displayIndex;
152958
153175
  for (let si = 0; si < series.length; si++) {
@@ -153669,10 +153886,10 @@ function buildMultiLevelCategoryLabels(categoryLabels, categoryLevels, sourceInd
153669
153886
  });
153670
153887
  }
153671
153888
  function primaryCategoryAxis(axes) {
153672
- const categoryAxes = axes?.filter(
153889
+ const categoryAxes2 = axes?.filter(
153673
153890
  (axis) => axis.axisType === "catAx" || axis.axisType === "dateAx"
153674
153891
  );
153675
- return categoryAxes?.find((axis) => axis.axPos !== "t") ?? categoryAxes?.[0];
153892
+ return categoryAxes2?.find((axis) => axis.axPos !== "t") ?? categoryAxes2?.[0];
153676
153893
  }
153677
153894
  function tickLine(x, y, placement, topAxis, length, axis) {
153678
153895
  if (!placement || placement === "none") {
@@ -154214,7 +154431,7 @@ function barFill(chartData, series, seriesIndex, pointIndex) {
154214
154431
  return resolveDataPointFill(series, pointIndex, paletteColor2(seriesIndex, palette)) ?? seriesColor2(series, seriesIndex, palette);
154215
154432
  }
154216
154433
  function buildHorizontalBarViewModel(element, chartData, categoryLabels) {
154217
- 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 ? {
154434
+ 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 ? {
154218
154435
  kind: "line",
154219
154436
  x1: zeroX,
154220
154437
  y1: layout.plotTop,
@@ -154224,7 +154441,7 @@ function buildHorizontalBarViewModel(element, chartData, categoryLabels) {
154224
154441
  strokeWidth: 1
154225
154442
  } : void 0, primitives = [], dataLabels = [], showLabels = chartData.style?.hasDataLabels, band = layout.plotHeight / catCount;
154226
154443
  if (!isStacked) {
154227
- const seriesCount = Math.max(series.length, 1), singleBarHeight = chartData.barGapWidth !== void 0 ? band / (seriesCount + Math.max(chartData.barGapWidth, 0) / 100) : band * 0.7 / seriesCount, overlap = chartData.barOverlap ?? 0, step = singleBarHeight * (1 - overlap / 100), clusterHeight = singleBarHeight + step * (seriesCount - 1), groupOffset = (band - clusterHeight) / 2;
154444
+ const seriesCount = Math.max(series.length, 1), overlap = chartData.barOverlap ?? 0, overlapSpan = 1 + (seriesCount - 1) * (1 - overlap / 100), singleBarHeight = chartData.barGapWidth !== void 0 ? band / ((1 + Math.max(chartData.barGapWidth, 0) / 100) * overlapSpan) : band * 0.7 / seriesCount, step = singleBarHeight * (1 - overlap / 100), clusterHeight = singleBarHeight + step * (seriesCount - 1), groupOffset = (band - clusterHeight) / 2;
154228
154445
  for (let ci = 0; ci < catCount; ci++) {
154229
154446
  for (let si = 0; si < series.length; si++) {
154230
154447
  const val2 = series[si].values[ci] ?? 0, y = layout.plotTop + band * ci + groupOffset + step * si, valX = valueToX(val2, range, layout.plotLeft, layout.plotRight), x = Math.min(zeroX, valX), w = Math.max(Math.abs(valX - zeroX), 1);
@@ -154800,11 +155017,11 @@ function computeTrendlinePrimitives(chartData, catCount, layout, range, mode = "
154800
155017
  });
154801
155018
  return out;
154802
155019
  }
154803
- function stackedRange(chartData, catCount, isPercent) {
155020
+ function stackedRange(chartData, catCount, isPercent, plotHeightPx) {
154804
155021
  if (isPercent) {
154805
155022
  return { min: 0, max: 100, span: 100 };
154806
155023
  }
154807
- return computeStackedValueRange(chartData.series, catCount);
155024
+ return computeStackedValueRange(chartData.series, catCount, plotHeightPx);
154808
155025
  }
154809
155026
  function buildCartesianViewModel(element, chartData, categoryLabels, kind) {
154810
155027
  if (kind === "bar" && chartData.barDirection === "bar") {
@@ -154825,15 +155042,17 @@ function buildCartesianViewModel(element, chartData, categoryLabels, kind) {
154825
155042
  (axis) => axis.axisType === "valAx" && axis.axPos !== "r"
154826
155043
  );
154827
155044
  const primaryRange = isStacked ? {
154828
- ...stackedRange(chartData, catCount, isPercent),
155045
+ ...stackedRange(chartData, catCount, isPercent, layout.plotHeight),
154829
155046
  ...primaryAxis?.orientation === "maxMin" ? { reverseOrder: true } : {}
154830
155047
  } : computeValueRangeForChart(
154831
155048
  primaryPlotSeries.length > 0 ? primaryPlotSeries : chartData.series,
154832
- chartData.axes
155049
+ chartData.axes,
155050
+ layout.plotHeight
154833
155051
  );
154834
155052
  const secondaryRange = useSecondary && secondaryPlotSeries.length > 0 ? computeValueRangeForAxis(
154835
155053
  secondaryPlotSeries,
154836
- chartData.axes?.find((axis) => axis.axisType === "valAx" && axis.axPos === "r")
155054
+ chartData.axes?.find((axis) => axis.axisType === "valAx" && axis.axPos === "r"),
155055
+ layout.plotHeight
154837
155056
  ) : void 0;
154838
155057
  const axisRes = buildCartesianAxes(chartData, layout, primaryRange, secondaryRange, catCount);
154839
155058
  const zeroLine = primaryRange.logScale ? void 0 : buildZeroLine(primaryRange, layout);
@@ -154853,7 +155072,8 @@ function buildCartesianViewModel(element, chartData, categoryLabels, kind) {
154853
155072
  layout.svgWidth,
154854
155073
  legendPos,
154855
155074
  layout.svgHeight,
154856
- layout.plotTop
155075
+ layout.plotTop,
155076
+ resolveLegendSwatchKind(kind)
154857
155077
  );
154858
155078
  let plot;
154859
155079
  if (kind === "bar") {
@@ -155098,10 +155318,11 @@ function buildComboViewModel(element, chartData, categoryLabels) {
155098
155318
  const primaryAxisId = getPrimaryValueAxisId(chartData.axes);
155099
155319
  const primaryAxis = chartData.axes?.find((axis) => axis.axisId === primaryAxisId);
155100
155320
  const secondaryAxisFormatting = getSecondaryValueAxis(chartData.axes);
155101
- const primaryRange = computeValueRangeForAxis(primarySeries, primaryAxis);
155321
+ const primaryRange = computeValueRangeForAxis(primarySeries, primaryAxis, layout.plotHeight);
155102
155322
  const secondaryRange = secondary.length > 0 ? computeValueRangeForAxis(
155103
155323
  secondary.map((entry2) => entry2.series),
155104
- secondaryAxisFormatting
155324
+ secondaryAxisFormatting,
155325
+ layout.plotHeight
155105
155326
  ) : void 0;
155106
155327
  const primaryCategoryAxis2 = chartData.axes?.find(
155107
155328
  (axis) => (axis.axisType === "catAx" || axis.axisType === "dateAx") && axis.axisId === primaryAxis?.crossAxisId
@@ -155142,13 +155363,17 @@ function buildComboViewModel(element, chartData, categoryLabels) {
155142
155363
  );
155143
155364
  const sourceIndices2 = horizontalAxis.sourceIndices;
155144
155365
  const legendPos = chartData.style?.legendPosition ?? "b";
155366
+ const comboSwatchKinds = chartData.series.map(
155367
+ (_s, i2) => i2 === 0 ? "rect" : "line"
155368
+ );
155145
155369
  const { legend, legendX, legendY, legendAnchor } = buildLegend(
155146
155370
  chartData.series,
155147
155371
  chartData.colorPalette,
155148
155372
  layout.svgWidth,
155149
155373
  legendPos,
155150
155374
  layout.svgHeight,
155151
- layout.plotTop
155375
+ layout.plotTop,
155376
+ comboSwatchKinds
155152
155377
  );
155153
155378
  const primitives = [];
155154
155379
  const dataLabels = [];
@@ -155268,7 +155493,11 @@ function buildStockViewModel(element, chartData, categoryLabels) {
155268
155493
  computeLayoutOptions(chartData.axes, chartData.dataTable, chartData.series.length)
155269
155494
  );
155270
155495
  const catCount = Math.max(categoryLabels.length, 1);
155271
- const range = computeValueRangeForChart(chartData.series, chartData.axes);
155496
+ const range = computeValueRangeForChart(
155497
+ chartData.series,
155498
+ chartData.axes,
155499
+ layout.plotHeight
155500
+ );
155272
155501
  const valueAxis = chartData.axes?.find((axis) => axis.axisType === "valAx" && axis.axPos !== "r");
155273
155502
  const categoryAxis = chartData.axes?.find(
155274
155503
  (axis) => (axis.axisType === "catAx" || axis.axisType === "dateAx") && axis.axisId === valueAxis?.crossAxisId
@@ -156089,18 +156318,19 @@ function buildSunburstViewModel(element, chartData, categoryLabels) {
156089
156318
  legendAnchor: "middle"
156090
156319
  };
156091
156320
  }
156092
- function applyLegendEntryOverrides(legend, entries) {
156093
- if (!entries || entries.length === 0) {
156321
+ function applyLegendEntryOverrides(legend, entries, defaultTextStyle) {
156322
+ if ((!entries || entries.length === 0) && !defaultTextStyle) {
156094
156323
  return legend;
156095
156324
  }
156096
- const byIndex = new Map(entries.map((entry2) => [entry2.index, entry2]));
156325
+ const byIndex = new Map((entries ?? []).map((entry2) => [entry2.index, entry2]));
156097
156326
  const result = [];
156098
156327
  legend.forEach((item, index) => {
156099
156328
  const override = byIndex.get(index);
156100
156329
  if (override?.deleted) {
156101
156330
  return;
156102
156331
  }
156103
- result.push(override?.textStyle ? { ...item, textStyle: override.textStyle } : item);
156332
+ const textStyle = override?.textStyle ?? defaultTextStyle;
156333
+ result.push(textStyle ? { ...item, textStyle } : item);
156104
156334
  });
156105
156335
  return result;
156106
156336
  }
@@ -156420,7 +156650,7 @@ function buildSurfaceWallPanels(cols, rows, cellSize, zScale, offsetX, offsetY,
156420
156650
  }
156421
156651
  function buildIsometricSurfaceViewModel(element, chartData, categoryLabels) {
156422
156652
  const layout = computePlotLayout(element.width, element.height, chartData, false);
156423
- const range = computeValueRange2(chartData.series);
156653
+ const range = computeValueRange2(chartData.series, layout.plotHeight);
156424
156654
  const catCount = Math.max(categoryLabels.length, 1);
156425
156655
  const seriesCount = chartData.series.length;
156426
156656
  const cols = Math.max(catCount - 1, 1);
@@ -156539,7 +156769,7 @@ function buildIsometricSurfaceViewModel(element, chartData, categoryLabels) {
156539
156769
  }
156540
156770
  function buildFlatSurfaceViewModel(element, chartData, categoryLabels) {
156541
156771
  const layout = computePlotLayout(element.width, element.height, chartData, false);
156542
- const range = computeValueRange2(chartData.series);
156772
+ const range = computeValueRange2(chartData.series, layout.plotHeight);
156543
156773
  const catCount = Math.max(categoryLabels.length, 1);
156544
156774
  const seriesCount = chartData.series.length;
156545
156775
  const cellW = layout.plotWidth / Math.max(catCount - 1, 1);
@@ -157401,6 +157631,10 @@ function categoryAxisBand(chartData) {
157401
157631
  function computePlotLayout(elementWidth, elementHeight, chartData, hasAxes, options) {
157402
157632
  const svgWidth = Math.max(1, elementWidth), svgHeight = Math.max(1, elementHeight);
157403
157633
  let plotLeft = hasAxes ? 48 : 8, plotTop = 8, plotRight = svgWidth - 8, plotBottom = svgHeight - (hasAxes ? categoryAxisBand(chartData) : 8);
157634
+ if (hasAxes && options?.categoryAxisAtTop) {
157635
+ plotBottom = svgHeight - 8;
157636
+ plotTop += categoryAxisBand(chartData);
157637
+ }
157404
157638
  const style = chartData.style, legendPos = style?.legendPosition ?? "b";
157405
157639
  if (style?.hasTitle) {
157406
157640
  plotTop += 20;
@@ -157450,101 +157684,6 @@ function computePlotLayout(elementWidth, elementHeight, chartData, hasAxes, opti
157450
157684
  plotHeight
157451
157685
  };
157452
157686
  }
157453
- var GRIDLINE_COLOR = "#e2e8f0";
157454
- var AXIS_LABEL_COLOR = "#64748b";
157455
- var ZERO_LINE_COLOR = "#94a3b8";
157456
- var TICK_COUNT = 5;
157457
- function axisTickValues(range) {
157458
- const unit = range.majorUnit;
157459
- if (unit !== void 0 && Number.isFinite(unit) && unit > 0 && !range.logScale) {
157460
- const steps = Math.round((range.max - range.min) / unit);
157461
- if (steps >= 1 && steps <= 100) {
157462
- return Array.from({ length: steps + 1 }, (_unused, index) => range.min + unit * index);
157463
- }
157464
- }
157465
- return Array.from(
157466
- { length: TICK_COUNT + 1 },
157467
- (_unused, index) => range.min + range.span / TICK_COUNT * index
157468
- );
157469
- }
157470
- function buildGridlinesAndLabels(range, layout, showMajorGridlines = true) {
157471
- const gridlines = [], axisLabels = [];
157472
- for (const val2 of axisTickValues(range)) {
157473
- const y = valueToY2(val2, range, layout.plotTop, layout.plotBottom);
157474
- if (showMajorGridlines) {
157475
- gridlines.push({
157476
- kind: "line",
157477
- x1: layout.plotLeft,
157478
- y1: y,
157479
- x2: layout.plotRight,
157480
- y2: y,
157481
- stroke: GRIDLINE_COLOR,
157482
- strokeWidth: 1
157483
- });
157484
- }
157485
- axisLabels.push({
157486
- kind: "text",
157487
- x: layout.plotLeft - 4,
157488
- y,
157489
- text: formatAxisValue2(val2),
157490
- fontSize: DEFAULT_CHART_TEXT_PX,
157491
- fill: AXIS_LABEL_COLOR,
157492
- textAnchor: "end",
157493
- dominantBaseline: "central"
157494
- });
157495
- }
157496
- return { gridlines, axisLabels };
157497
- }
157498
- function buildZeroLine(range, layout) {
157499
- if (range.min >= 0 || range.max <= 0) {
157500
- return void 0;
157501
- }
157502
- const y = valueToY2(0, range, layout.plotTop, layout.plotBottom);
157503
- return {
157504
- kind: "line",
157505
- x1: layout.plotLeft,
157506
- y1: y,
157507
- x2: layout.plotRight,
157508
- y2: y,
157509
- stroke: ZERO_LINE_COLOR,
157510
- strokeWidth: 1
157511
- };
157512
- }
157513
- function buildCategoryLabels(categoryLabels, layout, catSpacing) {
157514
- const catCount = Math.max(categoryLabels.length, 1);
157515
- return categoryLabels.map((label, i2) => {
157516
- const x = catSpacing === "bar" ? layout.plotLeft + layout.plotWidth / catCount * (i2 + 0.5) : catCount > 1 ? layout.plotLeft + layout.plotWidth / (catCount - 1) * i2 : layout.plotLeft + layout.plotWidth / 2;
157517
- return {
157518
- kind: "text",
157519
- x,
157520
- y: layout.plotBottom + 12,
157521
- text: label,
157522
- fontSize: DEFAULT_CHART_TEXT_PX,
157523
- fill: AXIS_LABEL_COLOR,
157524
- textAnchor: "middle"
157525
- };
157526
- });
157527
- }
157528
- function buildLegend(series, colorPalette, svgWidth, legendPos, svgHeight, plotTop) {
157529
- const legend = series.map((s, i2) => ({
157530
- color: seriesColor2(s, i2, colorPalette),
157531
- label: s.name
157532
- }));
157533
- let legendX = svgWidth / 2, legendY = svgHeight - 8, legendAnchor = "middle";
157534
- const side = resolveLegendPlacement(legendPos).side;
157535
- if (side === "r") {
157536
- legendX = svgWidth - 75;
157537
- legendY = plotTop;
157538
- legendAnchor = "start";
157539
- } else if (side === "l") {
157540
- legendX = 4;
157541
- legendY = plotTop;
157542
- legendAnchor = "start";
157543
- } else if (side === "t") {
157544
- legendY = 28;
157545
- }
157546
- return { legend, legendX, legendY, legendAnchor };
157547
- }
157548
157687
  var RADAR_RINGS = 4;
157549
157688
  var RADAR_RING_COLOR = "#cbd5e1";
157550
157689
  var RADAR_SPOKE_COLOR = "#94a3b8";
@@ -158388,13 +158527,16 @@ function buildWaterfallSteps(values, options) {
158388
158527
  }
158389
158528
  return steps;
158390
158529
  }
158391
- function computeWaterfallRange(steps) {
158392
- return computeValueRange2([
158393
- {
158394
- name: "Waterfall range",
158395
- values: steps.flatMap((step) => [step.startValue, step.endValue])
158396
- }
158397
- ]);
158530
+ function computeWaterfallRange(steps, plotHeightPx) {
158531
+ return computeValueRange2(
158532
+ [
158533
+ {
158534
+ name: "Waterfall range",
158535
+ values: steps.flatMap((step) => [step.startValue, step.endValue])
158536
+ }
158537
+ ],
158538
+ plotHeightPx
158539
+ );
158398
158540
  }
158399
158541
  var WF_COLOR_POSITIVE = "#22c55e";
158400
158542
  var WF_COLOR_NEGATIVE = "#ef4444";
@@ -158405,7 +158547,7 @@ function buildWaterfallViewModel(element, chartData, categoryLabels) {
158405
158547
  const series = chartData.series[0];
158406
158548
  const values = series?.values ?? [];
158407
158549
  const steps = buildWaterfallSteps(values, series?.waterfallOptions);
158408
- const range = computeWaterfallRange(steps);
158550
+ const range = computeWaterfallRange(steps, layout.plotHeight);
158409
158551
  const catCount = Math.max(categoryLabels.length, values.length, 1);
158410
158552
  const barWidth = layout.plotWidth / catCount * 0.6;
158411
158553
  const gap = layout.plotWidth / catCount * 0.2;
@@ -158561,7 +158703,11 @@ function withDataPointPictureFills(vm, chartData, elementId) {
158561
158703
  return { ...vm, primitives, defs: [...vm.defs ?? [], ...defs] };
158562
158704
  }
158563
158705
  function withLegendEntries(vm, chartData) {
158564
- const legend = applyLegendEntryOverrides(vm.legend, chartData.style?.legendEntries);
158706
+ const legend = applyLegendEntryOverrides(
158707
+ vm.legend,
158708
+ chartData.style?.legendEntries,
158709
+ chartData.style?.legendTextStyle
158710
+ );
158565
158711
  return legend === vm.legend ? vm : { ...vm, legend };
158566
158712
  }
158567
158713
  function withChartAreaFill(vm, chartData) {
@@ -158628,6 +158774,81 @@ function buildFlatViewModel(element, chartData, categoryLabels, kind) {
158628
158774
  }
158629
158775
  return buildCartesianViewModel(element, chartData, categoryLabels, kind);
158630
158776
  }
158777
+ var GRIDLINE_COLOR = "#e2e8f0";
158778
+ var AXIS_LABEL_COLOR = "#64748b";
158779
+ var ZERO_LINE_COLOR = "#94a3b8";
158780
+ var TICK_COUNT = 5;
158781
+ function axisTickValues(range) {
158782
+ const unit = range.majorUnit;
158783
+ if (unit !== void 0 && Number.isFinite(unit) && unit > 0 && !range.logScale) {
158784
+ const steps = Math.round((range.max - range.min) / unit);
158785
+ if (steps >= 1 && steps <= 100) {
158786
+ return Array.from({ length: steps + 1 }, (_unused, index) => range.min + unit * index);
158787
+ }
158788
+ }
158789
+ return Array.from(
158790
+ { length: TICK_COUNT + 1 },
158791
+ (_unused, index) => range.min + range.span / TICK_COUNT * index
158792
+ );
158793
+ }
158794
+ function buildGridlinesAndLabels(range, layout, showMajorGridlines = true) {
158795
+ const gridlines = [], axisLabels = [];
158796
+ for (const val2 of axisTickValues(range)) {
158797
+ const y = valueToY2(val2, range, layout.plotTop, layout.plotBottom);
158798
+ if (showMajorGridlines) {
158799
+ gridlines.push({
158800
+ kind: "line",
158801
+ x1: layout.plotLeft,
158802
+ y1: y,
158803
+ x2: layout.plotRight,
158804
+ y2: y,
158805
+ stroke: GRIDLINE_COLOR,
158806
+ strokeWidth: 1
158807
+ });
158808
+ }
158809
+ axisLabels.push({
158810
+ kind: "text",
158811
+ x: layout.plotLeft - 4,
158812
+ y,
158813
+ text: formatAxisValue2(val2),
158814
+ fontSize: DEFAULT_CHART_TEXT_PX,
158815
+ fill: AXIS_LABEL_COLOR,
158816
+ textAnchor: "end",
158817
+ dominantBaseline: "central"
158818
+ });
158819
+ }
158820
+ return { gridlines, axisLabels };
158821
+ }
158822
+ function buildZeroLine(range, layout) {
158823
+ if (range.min >= 0 || range.max <= 0) {
158824
+ return void 0;
158825
+ }
158826
+ const y = valueToY2(0, range, layout.plotTop, layout.plotBottom);
158827
+ return {
158828
+ kind: "line",
158829
+ x1: layout.plotLeft,
158830
+ y1: y,
158831
+ x2: layout.plotRight,
158832
+ y2: y,
158833
+ stroke: ZERO_LINE_COLOR,
158834
+ strokeWidth: 1
158835
+ };
158836
+ }
158837
+ function buildCategoryLabels(categoryLabels, layout, catSpacing) {
158838
+ const catCount = Math.max(categoryLabels.length, 1);
158839
+ return categoryLabels.map((label, i2) => {
158840
+ const x = catSpacing === "bar" ? layout.plotLeft + layout.plotWidth / catCount * (i2 + 0.5) : catCount > 1 ? layout.plotLeft + layout.plotWidth / (catCount - 1) * i2 : layout.plotLeft + layout.plotWidth / 2;
158841
+ return {
158842
+ kind: "text",
158843
+ x,
158844
+ y: layout.plotBottom + 12,
158845
+ text: label,
158846
+ fontSize: DEFAULT_CHART_TEXT_PX,
158847
+ fill: AXIS_LABEL_COLOR,
158848
+ textAnchor: "middle"
158849
+ };
158850
+ });
158851
+ }
158631
158852
  var GRIDLINE_COLOR2 = "#e2e8f0";
158632
158853
  var SECONDARY_GRID_COLOR = "#e2e8f0";
158633
158854
  var TICK_COUNT2 = 5;
@@ -159277,13 +159498,16 @@ function hideChartSeries(data, seriesIndex) {
159277
159498
  return null;
159278
159499
  }
159279
159500
  const series = data.series[seriesIndex];
159280
- const takenIndices = /* @__PURE__ */ new Set([
159281
- ...data.series.map((_, i2) => i2).filter((i2) => i2 !== seriesIndex),
159282
- ...(data.filteredSeries ?? []).map((f6) => f6.idx)
159283
- ]);
159284
- let idx = 0;
159285
- while (takenIndices.has(idx)) {
159286
- idx++;
159501
+ let idx = series.idx;
159502
+ if (idx === void 0) {
159503
+ const taken = /* @__PURE__ */ new Set([
159504
+ ...data.series.map((_, i2) => i2).filter((i2) => i2 !== seriesIndex),
159505
+ ...(data.filteredSeries ?? []).map((f6) => f6.idx)
159506
+ ]);
159507
+ idx = 0;
159508
+ while (taken.has(idx)) {
159509
+ idx++;
159510
+ }
159287
159511
  }
159288
159512
  const filteredEntry = {
159289
159513
  idx,
@@ -159291,7 +159515,12 @@ function hideChartSeries(data, seriesIndex) {
159291
159515
  name: series.name,
159292
159516
  categories: data.categories,
159293
159517
  values: series.values,
159294
- ...series.uniqueId ? { uniqueId: series.uniqueId } : {}
159518
+ ...series.uniqueId ? { uniqueId: series.uniqueId } : {},
159519
+ // Full snapshot so restoreFilteredSeries can bring back everything
159520
+ // (fill/line formatting, marker, data labels, ...), not just name and
159521
+ // values: this used to silently reset a series with a picture fill
159522
+ // or any other non-default formatting to plain defaults on restore.
159523
+ originalSeries: series
159295
159524
  };
159296
159525
  return {
159297
159526
  ...data,
@@ -159307,15 +159536,19 @@ function restoreFilteredSeries(data, filteredIndex) {
159307
159536
  const name = filtered.name ?? data.filteredSeriesTitle ?? `Series ${data.series.length + 1}`;
159308
159537
  const categories = data.categories;
159309
159538
  const values = filtered.values ?? (filtered.categories ?? data.filteredCategoryTitle)?.map(() => 0) ?? categories.map(() => 0);
159310
- const restored = {
159539
+ const restored = filtered.originalSeries ? { ...filtered.originalSeries, idx: filtered.idx } : {
159311
159540
  name,
159312
159541
  values,
159542
+ idx: filtered.idx,
159313
159543
  ...filtered.uniqueId ? { uniqueId: filtered.uniqueId } : {}
159314
159544
  };
159545
+ const insertAt3 = data.series.findIndex((s, i2) => (s.idx ?? i2) > filtered.idx);
159546
+ const nextSeries = [...data.series];
159547
+ nextSeries.splice(insertAt3 === -1 ? nextSeries.length : insertAt3, 0, restored);
159315
159548
  const remainingFiltered = (data.filteredSeries ?? []).filter((_, i2) => i2 !== filteredIndex);
159316
159549
  return {
159317
159550
  ...data,
159318
- series: [...data.series, restored],
159551
+ series: nextSeries,
159319
159552
  ...remainingFiltered.length > 0 ? { filteredSeries: remainingFiltered } : { filteredSeries: void 0 }
159320
159553
  };
159321
159554
  }
@@ -159334,6 +159567,199 @@ function setDataLabelsRangeCache(series, pointIndex, text22) {
159334
159567
  dataLabelOptions: { ...series.dataLabelOptions, dataLabelsRange: { ...range, cache } }
159335
159568
  };
159336
159569
  }
159570
+ var CHART_STYLE_PRESETS = [
159571
+ { id: "colorful", labelKey: "pptx.chart.styleColorful", styleId: 2 },
159572
+ { id: "monochrome", labelKey: "pptx.chart.styleMonochrome", styleId: 10 },
159573
+ { id: "colorfulLight", labelKey: "pptx.chart.styleColorfulLight", styleId: 18 },
159574
+ { id: "colorfulDark", labelKey: "pptx.chart.styleColorfulDark", styleId: 26 },
159575
+ { id: "mutedDark", labelKey: "pptx.chart.styleMutedDark", styleId: 34 },
159576
+ { id: "pastel", labelKey: "pptx.chart.stylePastel", styleId: 42 }
159577
+ ];
159578
+ function paletteEquals(a, b) {
159579
+ if (!b || a.length !== b.length) {
159580
+ return false;
159581
+ }
159582
+ return a.every((c, i2) => c.toLowerCase() === b[i2]?.toLowerCase());
159583
+ }
159584
+ function findPreset(id) {
159585
+ return CHART_STYLE_PRESETS.find((p) => p.id === id);
159586
+ }
159587
+ function buildChartStylePresets(chartData) {
159588
+ return CHART_STYLE_PRESETS.map(({ id, labelKey, styleId }) => {
159589
+ const colors = getChartStylePalette(styleId);
159590
+ return {
159591
+ id,
159592
+ labelKey,
159593
+ colors,
159594
+ applied: paletteEquals(colors, chartData.colorPalette)
159595
+ };
159596
+ });
159597
+ }
159598
+ function clearDataPointFill(point) {
159599
+ const { spPr, marker, ...rest } = point;
159600
+ const nextSpPr = spPr && { ...spPr, fillColor: void 0 };
159601
+ const nextMarker = marker?.spPr && {
159602
+ ...marker,
159603
+ spPr: { ...marker.spPr, fillColor: void 0 }
159604
+ };
159605
+ return { ...rest, ...spPr && { spPr: nextSpPr }, ...nextMarker && { marker: nextMarker } };
159606
+ }
159607
+ function clearSeriesColor(series) {
159608
+ const { color: _color, marker, dataPoints, ...rest } = series;
159609
+ const nextMarker = marker?.spPr && { ...marker, spPr: { ...marker.spPr, fillColor: void 0 } };
159610
+ return {
159611
+ ...rest,
159612
+ ...marker && { marker: nextMarker ?? marker },
159613
+ ...dataPoints && { dataPoints: dataPoints.map(clearDataPointFill) }
159614
+ };
159615
+ }
159616
+ function applyChartStylePreset(chartData, presetId) {
159617
+ const preset = findPreset(presetId);
159618
+ if (!preset) {
159619
+ return null;
159620
+ }
159621
+ const colors = [...getChartStylePalette(preset.styleId)];
159622
+ return {
159623
+ ...chartData,
159624
+ colorPalette: colors,
159625
+ style: { ...chartData.style, styleId: preset.styleId },
159626
+ series: chartData.series.map(clearSeriesColor)
159627
+ };
159628
+ }
159629
+ var AXIS_TYPES_WITH_TITLES = [
159630
+ "catAx",
159631
+ "valAx",
159632
+ "dateAx"
159633
+ ];
159634
+ var DEFAULT_AXIS_TITLE_TEXT = "Axis Title";
159635
+ function chartAxesVisibilityPatch(chartData, show) {
159636
+ const axes = (chartData.axes ?? []).map(
159637
+ (axis) => AXIS_TYPES_WITH_TITLES.includes(axis.axisType) ? { ...axis, deleted: !show } : axis
159638
+ );
159639
+ return { axes };
159640
+ }
159641
+ function chartAxesVisibilityState(chartData) {
159642
+ const relevant = (chartData.axes ?? []).filter(
159643
+ (axis) => AXIS_TYPES_WITH_TITLES.includes(axis.axisType)
159644
+ );
159645
+ return relevant.length === 0 || relevant.some((axis) => !axis.deleted);
159646
+ }
159647
+ function chartAxisTitlesPatch(chartData, show) {
159648
+ const axes = (chartData.axes ?? []).map((axis) => {
159649
+ if (!AXIS_TYPES_WITH_TITLES.includes(axis.axisType)) {
159650
+ return axis;
159651
+ }
159652
+ if (!show) {
159653
+ return { ...axis, titleText: void 0 };
159654
+ }
159655
+ return { ...axis, titleText: axis.titleText || DEFAULT_AXIS_TITLE_TEXT };
159656
+ });
159657
+ return { axes };
159658
+ }
159659
+ function chartAxisTitlesState(chartData) {
159660
+ return (chartData.axes ?? []).some(
159661
+ (axis) => AXIS_TYPES_WITH_TITLES.includes(axis.axisType) && Boolean(axis.titleText)
159662
+ );
159663
+ }
159664
+ function applyChartElementToggle(chartData, key2, checked) {
159665
+ switch (key2) {
159666
+ case "title":
159667
+ return patchChartData(chartData, { style: { ...chartData.style, hasTitle: checked } });
159668
+ case "legend":
159669
+ return patchChartData(chartData, { style: { ...chartData.style, hasLegend: checked } });
159670
+ case "dataLabels":
159671
+ return patchChartData(chartData, { style: { ...chartData.style, hasDataLabels: checked } });
159672
+ case "gridlines":
159673
+ return patchChartData(chartData, chartGridlinesPatch(chartData, checked));
159674
+ case "axes":
159675
+ return patchChartData(chartData, chartAxesVisibilityPatch(chartData, checked));
159676
+ case "axisTitles":
159677
+ return patchChartData(chartData, chartAxisTitlesPatch(chartData, checked));
159678
+ default:
159679
+ return chartData;
159680
+ }
159681
+ }
159682
+ var CHART_QUICK_ACTION_BUTTON_SIZE = 24;
159683
+ var BUTTON_GAP = 6;
159684
+ var OUTSIDE_GAP = 8;
159685
+ var BUTTON_ORDER = [
159686
+ { id: "elements", labelKey: "pptx.chart.quickElements" },
159687
+ { id: "styles", labelKey: "pptx.chart.quickStyles" },
159688
+ { id: "filters", labelKey: "pptx.chart.quickFilters" }
159689
+ ];
159690
+ function buildButtons(selectionBox, showFilters) {
159691
+ const x = selectionBox.x + selectionBox.width + OUTSIDE_GAP;
159692
+ return BUTTON_ORDER.filter((entry2) => entry2.id !== "filters" || showFilters).map((entry2, i2) => ({
159693
+ ...entry2,
159694
+ x,
159695
+ y: selectionBox.y + i2 * (CHART_QUICK_ACTION_BUTTON_SIZE + BUTTON_GAP),
159696
+ size: CHART_QUICK_ACTION_BUTTON_SIZE
159697
+ }));
159698
+ }
159699
+ function buildElements(chartData) {
159700
+ const items = [
159701
+ { key: "title", labelKey: "pptx.chart.showTitle", checked: chartData.style?.hasTitle ?? false },
159702
+ {
159703
+ key: "legend",
159704
+ labelKey: "pptx.chart.showLegend",
159705
+ checked: chartData.style?.hasLegend ?? false
159706
+ },
159707
+ {
159708
+ key: "gridlines",
159709
+ labelKey: "pptx.chart.showGridlines",
159710
+ checked: chartGridlinesState(chartData)
159711
+ },
159712
+ {
159713
+ key: "dataLabels",
159714
+ labelKey: "pptx.chart.showDataLabels",
159715
+ checked: chartData.style?.hasDataLabels ?? false
159716
+ }
159717
+ ];
159718
+ if (chartData.axes && chartData.axes.length > 0) {
159719
+ items.push({
159720
+ key: "axes",
159721
+ labelKey: "pptx.chart.quickAxes",
159722
+ checked: chartAxesVisibilityState(chartData)
159723
+ });
159724
+ items.push({
159725
+ key: "axisTitles",
159726
+ labelKey: "pptx.chart.quickAxisTitles",
159727
+ checked: chartAxisTitlesState(chartData)
159728
+ });
159729
+ }
159730
+ return items;
159731
+ }
159732
+ function buildFilters(chartData) {
159733
+ const visibleSeries = chartData.series.map((series2, index) => ({
159734
+ key: `visible-${index}`,
159735
+ name: series2.name,
159736
+ visible: true,
159737
+ seriesIndex: index,
159738
+ sortKey: series2.idx ?? index
159739
+ }));
159740
+ const filtered = (chartData.filteredSeries ?? []).map((entry2, index) => ({
159741
+ key: `filtered-${index}`,
159742
+ name: entry2.name ?? chartData.filteredSeriesTitle ?? `Series ${index + 1}`,
159743
+ visible: false,
159744
+ filteredIndex: index,
159745
+ sortKey: entry2.idx
159746
+ }));
159747
+ const series = [...visibleSeries, ...filtered].sort((a, b) => a.sortKey - b.sortKey).map(({ sortKey: _sortKey, ...rest }) => rest);
159748
+ return { visible: series.length > 1, series };
159749
+ }
159750
+ function buildChartQuickActionsDescriptor(input) {
159751
+ if (!input.isChartSelected || !input.chartData) {
159752
+ return null;
159753
+ }
159754
+ const { chartData, selectionBox } = input;
159755
+ const filters = buildFilters(chartData);
159756
+ return {
159757
+ buttons: buildButtons(selectionBox, filters.visible),
159758
+ elements: buildElements(chartData),
159759
+ filters,
159760
+ styles: { presets: buildChartStylePresets(chartData) }
159761
+ };
159762
+ }
159337
159763
  var TWO_PI = Math.PI * 2;
159338
159764
  var ANGLE_EPSILON = TWO_PI * 1e-3;
159339
159765
  function buildPieDragGeometry(element, chartData, pointIndex) {
@@ -159390,7 +159816,7 @@ function buildStackedDragGeometry(element, chartData, seriesIndex, pointIndex) {
159390
159816
  ), plots = computeStackedSeriesPlots(seriesValues, catCount, percent3), baseValue = plots[seriesIndex]?.base[pointIndex] ?? 0, otherAbsSum = seriesValues.reduce(
159391
159817
  (sum, values, si) => si === seriesIndex ? sum : sum + Math.abs(values[pointIndex] ?? 0),
159392
159818
  0
159393
- ), 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);
159819
+ ), 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);
159394
159820
  return {
159395
159821
  range,
159396
159822
  plotTop: layout.plotTop,
@@ -172891,6 +173317,17 @@ var translationsEn = {
172891
173317
  "pptx.chart.chartFilters": "Chart filters",
172892
173318
  "pptx.chart.hideSeries": "Hide {{name}}",
172893
173319
  "pptx.chart.showSeries": "Show {{name}}",
173320
+ "pptx.chart.quickElements": "Chart Elements",
173321
+ "pptx.chart.quickStyles": "Chart Styles",
173322
+ "pptx.chart.quickFilters": "Chart Filters",
173323
+ "pptx.chart.quickAxes": "Axes",
173324
+ "pptx.chart.quickAxisTitles": "Axis Titles",
173325
+ "pptx.chart.styleColorful": "Colorful",
173326
+ "pptx.chart.styleMonochrome": "Monochrome",
173327
+ "pptx.chart.styleColorfulLight": "Colorful Light",
173328
+ "pptx.chart.styleColorfulDark": "Colorful Dark",
173329
+ "pptx.chart.styleMutedDark": "Muted Dark",
173330
+ "pptx.chart.stylePastel": "Pastel",
172894
173331
  "pptx.chart.valueFromCells": "Value from cells: {{name}}",
172895
173332
  "pptx.chart.removeCategory": "Remove category",
172896
173333
  "pptx.chart.axes": "Axes",
@@ -177487,10 +177924,10 @@ function resolveTrackedTextWidth(text22, font, naturalWidth) {
177487
177924
  const tracking = resolveMetricTrackingPx(text22, font);
177488
177925
  return tracking === 0 ? naturalWidth : naturalWidth + tracking * [...text22].length;
177489
177926
  }
177490
- var PX_PER_POINT = 96 / 72;
177927
+ var PX_PER_POINT2 = 96 / 72;
177491
177928
  function authoredLetterSpacingPx(style) {
177492
177929
  const spc = style?.characterSpacing;
177493
- return typeof spc === "number" && spc !== 0 ? spc / 100 * PX_PER_POINT : 0;
177930
+ return typeof spc === "number" && spc !== 0 ? spc / 100 * PX_PER_POINT2 : 0;
177494
177931
  }
177495
177932
  function pieceLetterSpacing(authoredPx, tracking) {
177496
177933
  const spacing = authoredPx + tracking;
@@ -191463,7 +191900,7 @@ function buildSurfaceChart3DData(chartData, categoryLabels, options) {
191463
191900
  if (seriesCount === 0 || catCount === 0) {
191464
191901
  return null;
191465
191902
  }
191466
- const range = computeValueRange2(chartData.series);
191903
+ const range = computeValueRange2(chartData.series, options.height);
191467
191904
  const heightMap = new Float32Array(seriesCount * catCount);
191468
191905
  const colorMap = new Float32Array(seriesCount * catCount * 3);
191469
191906
  const values = new Float32Array(seriesCount * catCount);
@@ -192296,7 +192733,7 @@ function buildBarChart3DData(chartData, categoryLabels, options) {
192296
192733
  const isPercent = grouping === "percentStacked";
192297
192734
  const horizontal = chartData.barDirection === "bar";
192298
192735
  const points4 = buildPoints(chartData, cols, isPercent);
192299
- const range = isPercent ? { min: 0, max: 100, span: 100 } : grouping === "stacked" ? computeStackedValueRange(chartData.series, cols) : computeValueRange2(chartData.series);
192736
+ const range = isPercent ? { min: 0, max: 100, span: 100 } : grouping === "stacked" ? computeStackedValueRange(chartData.series, cols, options.height) : computeValueRange2(chartData.series, options.height);
192300
192737
  const depthPercent = chartData.view3D?.depthPercent;
192301
192738
  const boxes = layoutBarChart3D(points4, cols, rows, range, grouping, depthPercent, horizontal);
192302
192739
  return {
@@ -192412,7 +192849,7 @@ function buildCartesianLine3DSceneData(chartData, categoryLabels, options) {
192412
192849
  return null;
192413
192850
  }
192414
192851
  const points4 = buildPoints2(chartData, cols);
192415
- const range = computeValueRange2(chartData.series);
192852
+ const range = computeValueRange2(chartData.series, options.height);
192416
192853
  const depthPercent = chartData.view3D?.depthPercent;
192417
192854
  const series = layoutCartesianLine3DSeries(points4, cols, rows, range, depthPercent);
192418
192855
  return {
@@ -206693,6 +207130,11 @@ function segmentFrameCount(durationMs, fps) {
206693
207130
  }
206694
207131
  return Math.max(1, Math.ceil(durationMs / (1e3 / fps)));
206695
207132
  }
207133
+ function stopCaptureStream(stream) {
207134
+ for (const track of stream.getTracks()) {
207135
+ track.stop();
207136
+ }
207137
+ }
206696
207138
  var table;
206697
207139
  function getTable() {
206698
207140
  if (table) {
@@ -207271,4 +207713,4 @@ async function rasterResultToPngBlob(result) {
207271
207713
  * `<p:extLst>` (optional)
207272
207714
  */
207273
207715
 
207274
- export { ACTION_BUTTON_PRESETS, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, ARTISTIC_EFFECTS, AVATAR_COLOR_SWATCHES, BACKSTAGE_NAV, BACKSTAGE_TEMPLATES, BAR3D_SHAPE_OPTIONS, BEVEL_PRESETS, BROADCAST_THROTTLE_MS, CATEGORIES, CHARACTER_SPACING_OPTIONS, CHART_TYPE_OPTIONS, CINEMATIC_TRANSITION_KEYFRAMES, COLOR_MAP_ALIAS_KEYS, COMMENT_MARKER_SIZE, COMMENT_MENTION_ATTRIBUTE, COMMENT_MENTION_CLASS, COMMON_FONTS, COMMON_FONT_SIZES, COMPOUND_LINE_OPTIONS, CONNECTION_TIMEOUT_MS, CONNECTOR_SITE_SNAP_PX, CUSTOM_FONT_ACCEPT, DEBOUNCE_MS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_COLOR_CHANGE_TOLERANCE, DEFAULT_COLOR_MAP, DEFAULT_FONT_FAMILY2 as DEFAULT_FONT_FAMILY, DEFAULT_INSERT_CHART_KIND, DEFAULT_MORPH_DURATION_MS, DEFAULT_MOTION_PATH_PRESET_ID, DEFAULT_PALETTE2, DEFAULT_QUICK_ACCESS_COMMAND_IDS, DEFAULT_ROW_HEIGHT, DEFAULT_TRANSITION_DURATION_MS, DEFAULT_VIEWER_OPTIONS, DEFAULT_VIEWER_PREFERENCES, DEFAULT_VIEWER_PROFILE, DEFAULT_VIRTUAL_OVERSCAN, DIRECTIONAL_PRESETS, DUOTONE_PRESETS, EASE, EFFECT_SOUND_CATALOGUE, ELEMENT_ACTION_TYPE_OPTIONS, EMPHASIS_PRESET_VALUES, ENTRANCE_PRESET_VALUES, EQUATION_TEMPLATES, EXIT_PRESET_VALUES, EXPANDED_MAX_HEIGHT, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, EncryptedFileError, FILL_MODE_OPTIONS, FILL_PATTERN_LABEL_KEYS, GIF_POST_CAPTURE_MAX_SIDE, GRADIENT_TYPE_OPTIONS, GlyphOutlineFontCache, HANDOUT_OPTIONS, HIDDEN_SLIDE_LABEL_KEY, HIDDEN_SLIDE_SLASH_GRADIENT, HIGHLIGHTER_COLORS, INDENT_PX, INK_REPLAY_KEYFRAMES, INSERT_CHART_TYPES, INSTANT, LBL, LINE_CAP_OPTIONS, LINE_JOIN_OPTIONS, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_HINT_CLASS, LINK_TOOLTIP_HOST_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_PANEL_CLASS, LOCAL_SYNC_ORIGIN, MATERIAL_PRESETS, MAX_INDENT_LEVEL, MAX_ZOOM_SCALE, MEDIA_CHROME_ATTRIBUTE, MIN_TOUCH_TARGET_PX, MIN_ZOOM_SCALE, MOBILE_BREAKPOINT, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, MOTION_PATH_FAMILIES, NOTES_FONT_SIZE_DEFAULT, NOTES_FONT_SIZE_MAX, NOTES_FONT_SIZE_MIN, NOTES_FONT_SIZE_STEP, NUM, OFFICE_COLOR_SWATCHES, OUTLINE_LEVEL_ATTR, OUTLINE_ROW_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_VIEW_ATTR, P14_TRANSITION_KEYFRAMES, P14_TRANSITION_KEYFRAMES_2, P14_TRANSITION_KEYFRAMES_ALL, PATTERN_OPTIONS, PATTERN_PRESET_OPTIONS, PDF_SLIDES_PAGE_HEIGHT_PT, PDF_SLIDES_PAGE_WIDTH_PT, PEN_COLORS, PPTX_OPEN_ACCEPT, PRESENTATION_CHANNEL_NAME, PRESENTATION_HASH, PRESENTATION_HIT_TEST_CSS, PRESENTATION_MESSAGE_ORIGIN, PRESENTATION_NONCE_KEY, PRESENTATION_OPEN_EXTENSIONS, PRESENTATION_STAGE_ATTRIBUTE, PRESENTER_CONSOLE_CLASSES, PRESENTER_CONSOLE_CONTROLS, PRESENTER_NAVIGATOR_LABEL_KEYS, PRESENT_TOOLBAR_CLASSES, PRESETS, PRESET_THEMES, PptxHandler, PptxMarkdownConverter, PresentationAnimationController, QUICK_ACCESS_COMMAND_CATALOG, RADAR_STYLE_OPTIONS, RANDOM_ELIGIBLE_TYPES, READING_VIEW_ATTR, READING_VIEW_COUNTER_ATTR, READING_VIEW_STAGE_ATTR, RIBBON_SHAPE_SWATCHES, RIBBON_TRANSITION_PRESETS, RULER_FONT_SIZE, RULER_THICKNESS, SECTION_HEADING, SEL, SHAPE_PRESET_DEFS, SHAPE_QUICK_STYLES, SHORTCUT_REFERENCE_ITEMS, SLIDE_SHOW_OPTIONS, SLIDE_SIZE_PRESETS, SLIDE_TEMPLATES, SLIDE_TRANSITION_KEYFRAMES, SLIDE_TRANSITION_KEYFRAMES_CSS, SLIDE_TRANSITION_OPTIONS, SLIDE_VIRTUALIZATION_THRESHOLD, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, SMARTART_STYLE_LABEL_KEYS, SORTER_MAX_ZOOM, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, STATUS_BAR_CLASSES, STROKE_DASH_OPTIONS2 as STROKE_DASH_OPTIONS, SURFACE_WIREFRAME_OPTIONS, SWITCHABLE_LAYOUT_TYPES, SvgExporter, TABLET_BREAKPOINT, TABLE_STYLE_BORDER_SIDES, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, TABLE_STYLE_EDITOR_PARTS, TABLE_STYLE_PRESETS, TAB_ROW_ACTION_CLASSES, TEXT_BUILD_ID_SEP, TEXT_DECORATION_FLAGS, TEXT_WARP_PRESETS, THEME_CATALOG, THEME_COLOR_SCHEME_KEYS, THEME_COLOR_SLOT_LABEL_KEYS, THEME_PRESETS, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, TOOLBAR_TABS, TRANSITION_DIR_ARROWS, TRANSITION_MORPH_OPTIONS, TRANSITION_ORIENTATION_TYPES, TRANSITION_SOUND_NONE_VALUE, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SPEED_DURATION_MS, TRANSITION_SPEED_OPTIONS, TRANSITION_VALID_DIRECTIONS, ThemePresets, VIEWER_OPTIONS_TABS, VIEWER_PREFS_STORAGE_KEY, VIEWER_SHORTCUT_REFERENCE, WEBM_MIME_CANDIDATES, WHEEL_SPOKE_COUNTS, acceptAutosaveRecovery, acceptsPresentationInput, actionAffordanceLabels, activateModalFocus, addChartCategory, addChartSeries, addCommentToList, addQuickAccessCommand, addSection, addSiblingAfter, addSmartArtNodeAsChild, addTableStyleToMap, addTagToCollections, advanceChartMarkDrag, advanceChartValueDrag, advanceMainSequence, alignElements, animationEffectLabel, annotationOverlayZIndex, appendPresentationInkPoint, appendTableElementColumn, appendTableElementRow, apply3dEffects, applyAcceptAllSlides, applyAcceptSlide, applyActiveInlineListFormatting, applyAnimationTimelineOrder, applyAutoCorrect, applyCaseTransformToSegments, applyChartPartHighlight, applyColorChange, applyDuotone, applyFindReplacements, applyFormatToElement, applyHighlightClickStyle, applyImagePathPatches, applyListStyleUpdate, applyMasterViewCrudAction, applyMotionPathPreset, applyOleDocumentParagraphEdit, applyOleNestedDeckElementTextEdit, applyOleSheetCellEdit, applyOutlineEdit, applyPreferenceToOptions, applyReadingViewCommand, applyRehearsalTimings, applyReroutedConnectors, applyResize, applyTableStyleDelete, applyTableStyleFieldEdit, applyTableStyleMapChange, applyTableStylePreset, applyTextStyleUpdate, applyThemeOverrideToSlide, applyThemeToData, applyTransitionSoundFile, applyTransitionStockSound, applyUnderlineVariant, assertElementUpdateTarget, attachEditorImagePaste, attachInlineListController, attachPresentationVisibilityPause, attachRotateHandlePlacement, authorConnectorBetweenSites, autosaveSnapshotMark, availableQuickAccessCommands, backstageCardsFor, bar3DShapePatch, beginChartMarkDrag, beginChartValueDrag, beginShapeAdjustment, bindInlineListParagraph, bindInlineListRun, bringForward, bringToFront, build3DExtrusionData, buildActiveSessionUsers, buildAnimationTimelineBars, buildAnimationTimelineRows, buildAreaChart3DDataForElement, buildBarActions, buildBarChart3DDataForElement, buildBroadcastViewerUrl, buildCacheKey, buildCalloutLeaderLineSvgPath, buildChartMarkDragGeometry, buildChartViewModel, buildChromeStyle, buildCollaborationShareUrl, buildCommentMarkers, buildContentPartStrokes, buildContextMenuEntries, buildCreateCollaborationConfig, buildCssGradientFromShapeStyle, buildDeckSaveOptions, buildDirectionGrid, buildDuotoneCacheKey, buildElementClipboardPayload, buildFieldSubstitutionContext, buildFontCatalog, buildFreeformShapeElement, buildGlyphEnvelope, buildHandoutsHtml, buildHollowHitOutline, buildInitialGuides, buildInkGroupStrokes, buildInlineListStylePatch, buildInlineTextCommitPatch, buildJoinCollaborationConfig, buildLayoutPreviewGeometry, buildLineChart3DDataForElement, buildLiveInkStrokeView, buildMorphAnimationRules, buildMorphTransitionPlan, buildMotionPathPreview, buildNotesHtml, buildNotesPdfBytes, buildNotesPrintHtml, buildOleContentUpdatePatch, buildOleEditDialogDescriptor, buildOleObjectNamePatch, buildOutline, buildOutlineHtml, buildParagraphs, buildPieChart3DDataForElement, buildPresentationAudienceUrl, buildPreviewAnimation, buildPreviewElements, buildPrintDocument, buildPrintHtmlDocument, buildRectPathGradient, buildRunProgramNotice, buildRunTabLines, buildSaveSlides, buildSlideTemplateContent, buildSlideTemplateSlide, buildSlidesHtml, buildSmartArt3DModel, buildSmartArtA11y, buildSmartArtPresetData, buildSmartArtPreviewElement, buildStrokeOutline, buildStrokePathD, buildSubpathFillOverlay, buildSubpathPaints, buildSummaryZoomView, buildSurfaceChart3DDataForElement, buildSvgGradientDef, buildTabContext, buildTableDataGrid, buildTextBlockStyle, buildTextBody3DSceneStyle, buildTextBodyLayoutStyle, buildTextBuildSpec, buildTextStyleOverrideCss, buildThemeColorGrid, buildThemeColorMap, buildThemeColorSwatchGrid, buildTiledSlidesPdfBytes, buildUserFontFaceStyles, calculateViewportFit, canAddTopLevelNode, canCommitActionType, canDrillDown, canGoNext, canGoPrevious, canGroupSelection, canInteractWithElement, canRemoveTopLevelNode, canSetStrokeWidth, canUngroupSelection, canUseClipboard, cancelBuildReveal, canvasToJpegData, cellRunStyle, cellStyleToCss, centeredSvgTextLines, chartGridlinesPatch, chartGridlinesState, chartPartToAttrs, chartPreserveAspectRatio, checkModifyPassword, clampCropValue, clampGifDimensions, clampNotesFontSize, clampOptionNumber, clampPercent2, clampSorterZoom, clampTransitionNumber, clampZoomScale, classifyExtraConnections, classifyMediaType, clearAllLocalViewerData, clearAudienceContent, clearLocalAwareness, clearMotionPath, clearPlaybackTimers, clearStoredViewerPrefs, clearTransitionSound, cloneElementForPaste, cloneElementUpdates, cloneHistorySnapshot, cloneSlide, cloneTemplateElementsBySlideId, collapseChartTitleRunsForEdit, collectCoherent3DOffNodeIds, collectConnectorSiteCandidates, collectImagePaths, collectMediaElements, collectReferencedFontFamilies, collectUsedFonts, colorWithOpacity, commentMentionQuery, commentTextSegments, comparePresentation, compatToastStackStyle, compatibilityWarningToasts, compileEquationTemplateMathMl, compileLatexEquation, computeAllNotesPages, computeAnchoredPopupPosition, computeChartLegendLayout, computeColorFilter, computeColumnBoundaries, computeDrawingViewBox, computeEntranceAnimationDelay, computeGridSpacingPx, computeHandoutLayout, computeInlineEditorRect, computeKeyboardInset, computeMarqueeHitIds, computeMergeCellDown, computeMergeCellRight, computeResizedColumnWidths, computeResizedRowHeight, computeScrollDelta, computeSelectionRect, computeSlideIndices, computeSmartArtElementLayout, computeSnapToShape, computeSplitCell, computeVirtualRange, connectorWrapperTransform, convertLatexToOmml, convertOmmlToLatex, convertOmmlToMathMl, copyFormatFromElement, createActiveAnimationGroup, createBackstagePresentation, createBlankSlide, createCollaborationLivePatcher, createDefaultChartElement, createDefaultChartUserShape, createDefaultChartUserShapeGroupChild, createDepartureChannel, createGlyphOutlineLookup, createImageElementFromFile, createInitialPresentationSnapshot, createInlineListModelObserver, createInlineListSeed, createPlainNotesSegments, createPresenceProjector, createPresentationKeyBuffer, createPresentationLoadResources, createPresentationSessionId, createPresenterShowGuard, createPresenterTimer, createRotationDrag, createSyncGate, createTableStyleEntry, createTouchGestureRecognizer, createViewerOptionsStore, createViewerZoomStore, createWheelStepBuffer, cursorForTool, customGeometryPathsToSvgSubpaths, defaultCssVars, defaultRadius, defaultThemeColors, deleteAutosaveSnapshot, deleteSection, deleteTableStyleFromMap, deleteTagFromCollections, demote, deriveSlideFieldContext, deriveViewportBreakpoints, describeFontEmbedding, describeSmartArtBounds, describeTableStyleEditor, detectOrientation, detectTouchDevice, discardAutosaveRecovery, distributeElements, downloadBlob, downloadDataUrl, editCommentInList, elementActionToPptxAction, elementBulletKind, elementHitTargetStyle, elementIdSelector, elementLockTogglePatch, encodeGif, endAudienceDisplay, ensureActionAffordanceStyles, ensureChartInteractionStyles, erasePresentationInkAt, evenColumnWidths, evenRowHeights, exportDeckJson, extraQuickAccessCommands, fetchGoogleWebfontOutlineBytes, filterCommands, filterHiddenSlideIndices, filterInteractableIds, filterRenderedElements, findChartPartTarget, findConnectorSiteNear, findEraserHitElementId, findInSlides, findSelectedThemeSwatch, findSmartArtNodeText, finishPrintWindow, firstShowSlideIndex, flattenNodes, flattenTagCollections, forgetSessionDeck, formatAxisValue, formatBackstageDate, formatBackstageSize, formatBytes, formatCommentTimestamp, formatElapsed, formatMobileElapsed, formatRelativeTime, formatSlideCounter, formatTime, formatVersionTimestamp, fpsToFrameIntervalMs, generateBroadcastRoomId, generateElementId, generateNoteLineCount, generateTicks, getActiveXControlOverlayView, getAnimationColorBaseStyle, getAnimationInitialStyle, getAriaLabel, getAriaRole, getAriaRoleDescription, getBarFacePicturePixelSampleVersion, getBevelLightingSvgFilter, getCachedResult, getCalloutLeaderLineGeometry, getCalloutViewBoxBounds, getCellDiagonalBorders, getChartStylePalette, getChartUserShapeGroupTransform, getChartUserShapeRowChartBox, getCinematicTransitionAnimations, getCompoundLineOffsets, getCompoundLineWidths, getComputedEffectStyle, getComputedFillStyle, getComputedStrokeStyle, getConnectorEndpointHandles, getConnectorPathGeometry, getContentPartReplayStyles, getCropShapeClipPath, getCurrentParagraphIndex, getDenseGridLayoutPlan, getDensePanelTouchTargetPx, getDraggedShapeAdjustments, getDuotoneCachedResult, getEffectSoundAsset, getEffectSoundState, getEffectStyleSource, getElementLabel, getElementTransform, getElementTransformWithoutRotation, getFragmentedTransitionDescriptor, getGroupChildParentFill, getImageColorWashStyle, getImageEffectsFilter, getImageEffectsOpacity, getImageFitStyle, getImageSvgFilters, getImageTilingStyle, getInkReplayStyles, getInlineEditorSelectionResult, getLocalStorageUsageSummary, getNonVisualDescriptionFields, getNotesPrintableArea, getOleAriaLabel, getOleBadgeLabel, getOleDisplayName, getOleDocumentParagraphs, getOleNestedDeckDetail, getOleObjectTypeLabel, getOleSheetGrid, getOleTypeColor, getOleTypeLabel, getOverflowSegments, getP14TransitionAnimations, getPatternSvg, getPendingSelectionRestore, getPresetShapeClipPath, getPresetShapeVectorGeometry, getPrintableArea, getResizeHandleHitAreaStyle, getSelectionControlArtworkStyle, getSelectionOutlineColor, getSelectionTextStyleFlags, getSessionTabId, getShapeAdjustmentHandleDescriptors, getShapeConnectionSites, getSlideBackgroundStyle, getSlideTransitionAnimations, getSoftEdgeSvgFilter, getSubstituteFontFamily, getSvgStrokeDasharray, getTableCellBandStyle, getTextBodyRotationTransform, getTextCompensationTransform, getWarpPath, groupElements, groupIntoParagraphs, groupSlidesBySection, guidePxToEmu, handleReadingViewKey, hasCopyableFormat, hasDistinctScriptFonts, hasGlyphEnvelope, hasMultipleSelectedTableCells, hasShapeProperties, hasShowSlideAfter, hasTextProperties, hasTiltData, hexToRgbUnit, hiddenSlideCue, hideChartSeries, hollowTextFillStyle, inlineElementPointerEvents, inlineListBodyText, insertCommentMention, insertTableElementColumn, insertTableElementRow, isActionHidden, isBlackboardActive, isBrowserOpenableMime, isBulletMarkerSegment, isCalloutShape, isCellInRect, isCurrentLayout, isEditableMotionPath, isEditableTextElement, isEditorTextInputTarget, isElementActionable, isElementLocked, isElementRendered, isExportAbortError, isHeaderFooterDateTextVisible, isHeaderFooterFooterTextVisible, isHeaderFooterHeaderTextVisible, isHollowShapeElement, isImageLikeElement, isImageTiled, isInkElement, isKeyboardOpen, isLegacyBinaryPresentation, isLinkedTextBox, isMixedContentBlocked, isMobileViewport, isPpactionUrl, isPresentationAdvanceClick, isPresentationSessionMessage, isSeriesUsingSecondaryAxis, isStrokeOnlyPresetElement, isSupportedPresentationFile, isTemplateElementId3 as isTemplateElementId, isUrlSafe, isWedgeCalloutPresetShape, lastShowSlideIndex, listAutosaveSnapshots, listBackstageRecentFiles, listChartUserShapeRows, loadAudienceContent, loadSessionDeck, lockResizeAspect, makeCloneId, makeSlideId, mapEditingWheel, mapEditorKey, mapOutlineKey, mapPresentationKey, mapPresentationWheel, mapSlideShowStartKey, mapSlideSorterKey, masterViewBackgroundColor, masterViewCrudActions, masterViewCrudFailureKey, masterViewElements, masterViewPseudoSlide, matchCommentMentionAuthors, mayLeaveSlideShow, measureSvgViewportRect, mediaFallbackIcon, mediaFallbackLabelKey, mediaFallbackVisual, mediaPlaybackAttributes, mediaTransportVisible, mediaTrimEndAbsoluteMs, mediaTrimEndMsFromAbsoluteMs, mediaTrimEndMsFromSeconds, mediaTrimEndSeconds, mergeAdditiveSelection, mergeCells, mergePresentationSnapshot, mergeShapes, mergeSlideTransition, mobileElapsedSince, mobileSlideCounter, modelDataToBlobUrl, morphOptionToMode, motionPathEndPixel, motionPathFamilyLabelKey, motionPathFor, motionPathPresetIdForPath, motionPathPresetLabelKey, motionPathPresetsByFamily, motionPathToSvgD, mountAreaChart3D, mountBarChart3D, mountLineChart3D, mountModel3D, mountPieChart3D, mountSurfaceChart3D, movePresenterPointer, moveQuickAccessCommand, moveSectionDown, moveSectionUp, moveSlidesToSection, mruColorsPatch, nestedTextDecorationStyle, newTableElement, nextPresentedSlide, nextShowSlideIndex, nextToggleValue, normalizeColorsForCapture, normalizeHexColor2 as normalizeHexColor, normalizeStrokeDashType, normalizeTableStyleGuid, notesSegmentsToSpans, observeYDocSlides, ooxmlGradientAngleToCssDegrees, openNativeEyeDropper, openPendingPrintWindow, openPptxFile, openReadingView, openUrlInNewTab, overlayInlineTextSnapshot, overlayMasterViewInlineSnapshot, paintedElementSize, paintedStrokeWidth, paragraphsToSegments, parseDrawingColor, parseDrawingColorOpacity, parsePanoseString, parsePpactionUrl, parseSegmentsFromRichEditor, partitionTemplateElements, patchChartData, pickSupportedMimeType, pieceLetterSpacing, placeAudienceWindow, placeCaretAtEnd, placeTileOnPage, placeholderPromptDescriptor, playFeedbackSound, playGroup, playSlideTransitionPreview, polygonsToSvgPath, pptxActionToElementAction, prepareElementForInsertion, prepareElementUpdateBatch, prepareExportClone, preprocessCssForCapture, presentationBaseName, presentationEntrySlideIndex, presentationInkPath, presenterElapsed, presenterNextDisabled, presenterPaneAdvancesOnClick, presenterPrevDisabled, presenterTimerProgress, previousShowSlideIndex, printPropertiesFrameSlides, printPropertiesSlidesPerPage, probeAutosaveRecovery, projectDrawingShapes, promote, publishLiveGeometry, publishLiveInlineText, pushRecentColor, quickStyleSwatchCss, radarStylePatch, rasterResultToPngBlob, rasterizeElement, rasterizeElementTiledToCanvas, rasterizeElementTiles, reResolveElementColors, reResolveSlideColors, readBackstageRecentFile, readEditableText, readListActivationSelection, readOnlyRecommendation, readRibbonTransitionDraft, readSlideShowOption, readSlidesFromYDoc, readSoundFileAsDataUrl, readStoredViewerPrefs, readViewportMetrics, readingViewFitScale, rebuildDrawingShapesIfCleared, reconcileSlidesInYDoc, recordProgressPercent, rectToCells, redistributeColumnWidth, registerCollaborationTeardown, registerCrossSlideAudio, registerCustomFont, remapTextToSegments, rememberSessionDeck, removeChartCategory, removeChartSeries, removeCommentFromList, removeEmptyNode, removeLastTableElementColumn, removeLastTableElementRow, removeQuickAccessCommand, removeSmartArtNode, removeTableElementColumn, removeTableElementRow, renameSection, reorder2 as reorder, reorderAnimationTimelineRows, replaceMasterViewElements, replaceOleFile, replyToCommentInList, rerouteConnectorsForMovedElements, resetPresenterTimer, resetSlideLayoutPath, resolve3DRenderingFlags, resolveActionType, resolveAudienceScreenPlacement, resolveAuthoredCustomShowId, resolveAuthoredSlideRange, resolveAutoAdvanceDelayMs, resolveAutoFitFontScale, resolveAutosaveActivation, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, resolveChartKind, resolveConnectorEndpointUpdate, resolveDefaultFontFamily, resolveDefaultPrintSettings, resolveDirection, resolveDirection8, resolveDisplayedChartType, resolveElementActionAffordance, resolveElementAriaAttributes, resolveElementHighlightClick, resolveElementInteractivity, resolveExpiredAutosaveSnapshots, resolveExportCaptureDecision, resolveFontKerning, resolveGoogleWebfontHref, resolveGroupChildFill, resolveHistoryDepth, resolveImageResolutionScale, resolveInlineEditAutoFitHeight, resolveInlineEditNormAutofitShrink, resolveMediaElementSource, resolveMediaTimeNodeElementIds, resolveMetricTrackingPx, resolveNotesSchematicBodyFontSizePx, resolveNotesSegments, resolveOleType, resolveOleVerbTarget, resolveOptionRootClasses, resolveOrientation, resolvePalette, resolvePresentationAction, resolveProfileInitial, resolveRevealedChartData, resolveRevealedDrawingShapeNodeIds, resolveRevealedDrawingShapes, resolveRevealedSmartArtNodes, resolveScreenTip, resolveScriptFontSet, resolveSelectionPaneRename, resolveShapeGeometry, resolveShowSlideIndexes, resolveSlideSizeSelection, resolveSlideTransition, resolveTableCellImageUrls, resolveTableStyleImageUrls, resolveTemplateBackgroundRows, resolveThemeCatalogEntry, resolveTitleBarStatusKey, resolveTransitionDurationMs, resolveTransitionSoundAction, resolveTransportForServerUrl, resolveViewerAddinRows, resolveViewportFitOptions, resolveWheelSpokeCount, restoreFilteredSeries, restoreInlineListBodySelection, restoreSegmentSelection, restoreSessionDeck, ribbonTransitionUpdates, rulerDragToGuidePosition, runPresentationAction, runProgramNoticeStackStyle, safeOpenUrl, sanitizeColor, sanitizeGradientStops, sanitizeMathMl, saveAutosaveSnapshot, saveDeckWithPassword, saveViewerProfile, savedPresentationFileName, scaleSlidesForSizeChange, scanAvailableFontFamilies, scheduleAutoAdvanceChain, scheduleMediaTrimAndFade, schemaLabel, scopeLayoutOptionsToSlide, seedRecentColors, segmentFrameCount, segmentStyleToCss, segmentsToEditorHtml, segmentsToParagraphs, segmentsToPlainText, selectGoogleWebfontFamilies, selectedParagraphBulletKind, selectionBulletKind, sendBackward, sendToBack, seriesSecondaryAxisPatch, setAfterAnimation, setAfterAnimationColor, setCachedResult, setCellText, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartCategoryLabel, setChartCellValue, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartDataPointMarker, setChartSeriesChartType, setChartSeriesMarker, setDataLabelsRangeCache, setDuotoneCachedResult, setEffectSound, setEffectStockSound, setMasterViewBackgroundColor, setMotionPath, setMotionPathEnd, setPendingSelectionRestore, setSmartArtNodeStyle, setTableElementCellText, shapeFillChange, shapeOutlineChange, shouldAutoFollowBroadcaster, shouldClearAutosaveCacheOnClose, shouldCommitSmartArtNodeText, shouldConfirmExternalHyperlink, shouldDiscardAutosaveOnSuccessfulSave, shouldLoopContinuously, shouldProbeAutosaveRecovery, shouldRenderHitTarget, shouldRoomSlidesReplaceLoad, shouldShowAccessibilitySection, shouldShowAutosaveRecoveryPrompt, shouldShowElementHandles, shouldStickyActionRow, shouldUseSvgWarp, shouldWriteAutosaveSnapshot, siblingCount, siblingIndex, slideProgressPercent, slideShowOptionChange, slideSizeFromPreset, slideSizeToCanvasPx, slideStatusLabel, snapBoxToGrid, splitCell, splitRunByScriptFont, splitRunForMetrics, splitWordsForUnderline, stepPresenterZoom, stopAllPersistentAudio, storeAudienceContent, stripUnderlineDecoration, strokeOutlineViewBox, strokeWidthOf, styleShadowFilter, subscribeBarFacePicturePixelSamples, substituteFieldText, surfaceWireframePatch, svgGradientFillRef, svgLineCap, svgPathToPolygons, swapPresentationWindows, switchSmartArtLayout, syncGoogleWebfontStylesheet, tableCellCss, tableContainerCss, tableStyleAssignmentUpdate, templateSchemeFromTheme, text3dEmuToPt, text3dPtToEmu, textBuildSpanStyle, textFontSizePtToPx, textFontSizePxToPt, themeColorLabel, themeColorSchemesEqual, themeColorSwatchRows, themeSwatchCommit, themeToCssVars, toCssTextOrientation, toCssVerticalDirection, toCssWritingMode, toSlideIndex, toggleBlackboard, toggleCommentResolvedInList, togglePresenterTimer, toggleSelectionBullets, toggleSheet, toggleStageElementMedia, toggleText3dExtrusion, transformInlineListCase, transformTextCase, transitionSoundOptions, transitionSoundSelectedValue, transitionStockSoundId, trimmedMediaDurationMs, ungroupElements, updateCellTextInRawXml, updateCellTextStyleInRawXml, updateElement, updateMasterViewElement, updateMergeAttrsInRawXml, updateSmartArtNodeText, updateTagInCollections, validateMediaTrimRange, validateRoomId, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, viewPropertiesPatchFromPreferences, viewerOptionsToPreferences, viewerPreferencesFromViewProperties, visibleTemplateElements, warpPreviewPath, withChartPointValue, withChartTitle, withChartUserShapeAdded, withChartUserShapeGroupChildAdded, withChartUserShapeRowChartBoxUpdated, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRemoved, withChartUserShapeRowRotationUpdated, withChartUserShapeRowTextUpdated, withChartUserShapeRowUpdated, withConnectorEndpointUpdate, withFrameSlides, withInlineListDecorationDefaults, withSlideSizeOrientation, withSlidesPerPage, writeStoredViewerPrefs, xmlText };
207716
+ export { ACTION_BUTTON_PRESETS, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, ARTISTIC_EFFECTS, AVATAR_COLOR_SWATCHES, BACKSTAGE_NAV, BACKSTAGE_TEMPLATES, BAR3D_SHAPE_OPTIONS, BEVEL_PRESETS, BROADCAST_THROTTLE_MS, CATEGORIES, CHARACTER_SPACING_OPTIONS, CHART_QUICK_ACTION_BUTTON_SIZE, CHART_TYPE_OPTIONS, CINEMATIC_TRANSITION_KEYFRAMES, COLOR_MAP_ALIAS_KEYS, COMMENT_MARKER_SIZE, COMMENT_MENTION_ATTRIBUTE, COMMENT_MENTION_CLASS, COMMON_FONTS, COMMON_FONT_SIZES, COMPOUND_LINE_OPTIONS, CONNECTION_TIMEOUT_MS, CONNECTOR_SITE_SNAP_PX, CUSTOM_FONT_ACCEPT, DEBOUNCE_MS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_COLOR_CHANGE_TOLERANCE, DEFAULT_COLOR_MAP, DEFAULT_FONT_FAMILY2 as DEFAULT_FONT_FAMILY, DEFAULT_INSERT_CHART_KIND, DEFAULT_MORPH_DURATION_MS, DEFAULT_MOTION_PATH_PRESET_ID, DEFAULT_PALETTE2, DEFAULT_QUICK_ACCESS_COMMAND_IDS, DEFAULT_ROW_HEIGHT, DEFAULT_TRANSITION_DURATION_MS, DEFAULT_VIEWER_OPTIONS, DEFAULT_VIEWER_PREFERENCES, DEFAULT_VIEWER_PROFILE, DEFAULT_VIRTUAL_OVERSCAN, DIRECTIONAL_PRESETS, DUOTONE_PRESETS, EASE, EFFECT_SOUND_CATALOGUE, ELEMENT_ACTION_TYPE_OPTIONS, EMPHASIS_PRESET_VALUES, ENTRANCE_PRESET_VALUES, EQUATION_TEMPLATES, EXIT_PRESET_VALUES, EXPANDED_MAX_HEIGHT, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, EncryptedFileError, FILL_MODE_OPTIONS, FILL_PATTERN_LABEL_KEYS, GIF_POST_CAPTURE_MAX_SIDE, GRADIENT_TYPE_OPTIONS, GlyphOutlineFontCache, HANDOUT_OPTIONS, HIDDEN_SLIDE_LABEL_KEY, HIDDEN_SLIDE_SLASH_GRADIENT, HIGHLIGHTER_COLORS, INDENT_PX, INK_REPLAY_KEYFRAMES, INSERT_CHART_TYPES, INSTANT, LBL, LINE_CAP_OPTIONS, LINE_JOIN_OPTIONS, LINK_TOOLTIP_CLASS, LINK_TOOLTIP_HINT_CLASS, LINK_TOOLTIP_HOST_CLASS, LINK_TOOLTIP_LABEL_CLASS, LINK_TOOLTIP_PANEL_CLASS, LOCAL_SYNC_ORIGIN, MATERIAL_PRESETS, MAX_INDENT_LEVEL, MAX_ZOOM_SCALE, MEDIA_CHROME_ATTRIBUTE, MIN_TOUCH_TARGET_PX, MIN_ZOOM_SCALE, MOBILE_BREAKPOINT, MORPH_CROSSFADE_GROUP_STYLE, MORPH_CROSSFADE_HALF_STYLE, MOTION_PATH_FAMILIES, NOTES_FONT_SIZE_DEFAULT, NOTES_FONT_SIZE_MAX, NOTES_FONT_SIZE_MIN, NOTES_FONT_SIZE_STEP, NUM, OFFICE_COLOR_SWATCHES, OUTLINE_LEVEL_ATTR, OUTLINE_ROW_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_VIEW_ATTR, P14_TRANSITION_KEYFRAMES, P14_TRANSITION_KEYFRAMES_2, P14_TRANSITION_KEYFRAMES_ALL, PATTERN_OPTIONS, PATTERN_PRESET_OPTIONS, PDF_SLIDES_PAGE_HEIGHT_PT, PDF_SLIDES_PAGE_WIDTH_PT, PEN_COLORS, PPTX_OPEN_ACCEPT, PRESENTATION_CHANNEL_NAME, PRESENTATION_HASH, PRESENTATION_HIT_TEST_CSS, PRESENTATION_MESSAGE_ORIGIN, PRESENTATION_NONCE_KEY, PRESENTATION_OPEN_EXTENSIONS, PRESENTATION_STAGE_ATTRIBUTE, PRESENTER_CONSOLE_CLASSES, PRESENTER_CONSOLE_CONTROLS, PRESENTER_NAVIGATOR_LABEL_KEYS, PRESENT_TOOLBAR_CLASSES, PRESETS, PRESET_THEMES, PptxHandler, PptxMarkdownConverter, PresentationAnimationController, QUICK_ACCESS_COMMAND_CATALOG, RADAR_STYLE_OPTIONS, RANDOM_ELIGIBLE_TYPES, READING_VIEW_ATTR, READING_VIEW_COUNTER_ATTR, READING_VIEW_STAGE_ATTR, RIBBON_SHAPE_SWATCHES, RIBBON_TRANSITION_PRESETS, RULER_FONT_SIZE, RULER_THICKNESS, SECTION_HEADING, SEL, SHAPE_PRESET_DEFS, SHAPE_QUICK_STYLES, SHORTCUT_REFERENCE_ITEMS, SLIDE_SHOW_OPTIONS, SLIDE_SIZE_PRESETS, SLIDE_TEMPLATES, SLIDE_TRANSITION_KEYFRAMES, SLIDE_TRANSITION_KEYFRAMES_CSS, SLIDE_TRANSITION_OPTIONS, SLIDE_VIRTUALIZATION_THRESHOLD, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_PREVIEW_ELEMENT_HEIGHT, SMARTART_PREVIEW_ELEMENT_WIDTH, SMARTART_STYLE_LABEL_KEYS, SORTER_MAX_ZOOM, SORTER_MIN_ZOOM, SORTER_ZOOM_STEP, STATUS_BAR_CLASSES, STROKE_DASH_OPTIONS2 as STROKE_DASH_OPTIONS, SURFACE_WIREFRAME_OPTIONS, SWITCHABLE_LAYOUT_TYPES, SvgExporter, TABLET_BREAKPOINT, TABLE_STYLE_BORDER_SIDES, TABLE_STYLE_BORDER_SIDE_LABEL_KEYS, TABLE_STYLE_DASH_PRESETS, TABLE_STYLE_EDITOR_PARTS, TABLE_STYLE_PRESETS, TAB_ROW_ACTION_CLASSES, TEXT_BUILD_ID_SEP, TEXT_DECORATION_FLAGS, TEXT_WARP_PRESETS, THEME_CATALOG, THEME_COLOR_SCHEME_KEYS, THEME_COLOR_SLOT_LABEL_KEYS, THEME_PRESETS, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, TOOLBAR_TABS, TRANSITION_DIR_ARROWS, TRANSITION_MORPH_OPTIONS, TRANSITION_ORIENTATION_TYPES, TRANSITION_SOUND_NONE_VALUE, TRANSITION_SOUND_OTHER_VALUE, TRANSITION_SPEED_DURATION_MS, TRANSITION_SPEED_OPTIONS, TRANSITION_VALID_DIRECTIONS, ThemePresets, VIEWER_OPTIONS_TABS, VIEWER_PREFS_STORAGE_KEY, VIEWER_SHORTCUT_REFERENCE, WEBM_MIME_CANDIDATES, WHEEL_SPOKE_COUNTS, acceptAutosaveRecovery, acceptsPresentationInput, actionAffordanceLabels, activateModalFocus, addChartCategory, addChartSeries, addCommentToList, addQuickAccessCommand, addSection, addSiblingAfter, addSmartArtNodeAsChild, addTableStyleToMap, addTagToCollections, advanceChartMarkDrag, advanceChartValueDrag, advanceMainSequence, alignElements, animationEffectLabel, annotationOverlayZIndex, appendPresentationInkPoint, appendTableElementColumn, appendTableElementRow, apply3dEffects, applyAcceptAllSlides, applyAcceptSlide, applyActiveInlineListFormatting, applyAnimationTimelineOrder, applyAutoCorrect, applyCaseTransformToSegments, applyChartElementToggle, applyChartPartHighlight, applyChartStylePreset, applyColorChange, applyDuotone, applyFindReplacements, applyFormatToElement, applyHighlightClickStyle, applyImagePathPatches, applyListStyleUpdate, applyMasterViewCrudAction, applyMotionPathPreset, applyOleDocumentParagraphEdit, applyOleNestedDeckElementTextEdit, applyOleSheetCellEdit, applyOutlineEdit, applyPreferenceToOptions, applyReadingViewCommand, applyRehearsalTimings, applyReroutedConnectors, applyResize, applyTableStyleDelete, applyTableStyleFieldEdit, applyTableStyleMapChange, applyTableStylePreset, applyTextStyleUpdate, applyThemeOverrideToSlide, applyThemeToData, applyTransitionSoundFile, applyTransitionStockSound, applyUnderlineVariant, assertElementUpdateTarget, attachEditorImagePaste, attachInlineListController, attachPresentationVisibilityPause, attachRotateHandlePlacement, authorConnectorBetweenSites, autosaveSnapshotMark, availableQuickAccessCommands, backstageCardsFor, bar3DShapePatch, beginChartMarkDrag, beginChartValueDrag, beginShapeAdjustment, bindInlineListParagraph, bindInlineListRun, bringForward, bringToFront, build3DExtrusionData, buildActiveSessionUsers, buildAnimationTimelineBars, buildAnimationTimelineRows, buildAreaChart3DDataForElement, buildBarActions, buildBarChart3DDataForElement, buildBroadcastViewerUrl, buildCacheKey, buildCalloutLeaderLineSvgPath, buildChartMarkDragGeometry, buildChartQuickActionsDescriptor, buildChartViewModel, buildChromeStyle, buildCollaborationShareUrl, buildCommentMarkers, buildContentPartStrokes, buildContextMenuEntries, buildCreateCollaborationConfig, buildCssGradientFromShapeStyle, buildDeckSaveOptions, buildDirectionGrid, buildDuotoneCacheKey, buildElementClipboardPayload, buildFieldSubstitutionContext, buildFontCatalog, buildFreeformShapeElement, buildGlyphEnvelope, buildHandoutsHtml, buildHollowHitOutline, buildInitialGuides, buildInkGroupStrokes, buildInlineListStylePatch, buildInlineTextCommitPatch, buildJoinCollaborationConfig, buildLayoutPreviewGeometry, buildLineChart3DDataForElement, buildLiveInkStrokeView, buildMorphAnimationRules, buildMorphTransitionPlan, buildMotionPathPreview, buildNotesHtml, buildNotesPdfBytes, buildNotesPrintHtml, buildOleContentUpdatePatch, buildOleEditDialogDescriptor, buildOleObjectNamePatch, buildOutline, buildOutlineHtml, buildParagraphs, buildPieChart3DDataForElement, buildPresentationAudienceUrl, buildPreviewAnimation, buildPreviewElements, buildPrintDocument, buildPrintHtmlDocument, buildRectPathGradient, buildRunProgramNotice, buildRunTabLines, buildSaveSlides, buildSlideTemplateContent, buildSlideTemplateSlide, buildSlidesHtml, buildSmartArt3DModel, buildSmartArtA11y, buildSmartArtPresetData, buildSmartArtPreviewElement, buildStrokeOutline, buildStrokePathD, buildSubpathFillOverlay, buildSubpathPaints, buildSummaryZoomView, buildSurfaceChart3DDataForElement, buildSvgGradientDef, buildTabContext, buildTableDataGrid, buildTextBlockStyle, buildTextBody3DSceneStyle, buildTextBodyLayoutStyle, buildTextBuildSpec, buildTextStyleOverrideCss, buildThemeColorGrid, buildThemeColorMap, buildThemeColorSwatchGrid, buildTiledSlidesPdfBytes, buildUserFontFaceStyles, calculateViewportFit, canAddTopLevelNode, canCommitActionType, canDrillDown, canGoNext, canGoPrevious, canGroupSelection, canInteractWithElement, canRemoveTopLevelNode, canSetStrokeWidth, canUngroupSelection, canUseClipboard, cancelBuildReveal, canvasToJpegData, cellRunStyle, cellStyleToCss, centeredSvgTextLines, chartGridlinesPatch, chartGridlinesState, chartPartToAttrs, chartPreserveAspectRatio, checkModifyPassword, clampCropValue, clampGifDimensions, clampNotesFontSize, clampOptionNumber, clampPercent2, clampSorterZoom, clampTransitionNumber, clampZoomScale, classifyExtraConnections, classifyMediaType, clearAllLocalViewerData, clearAudienceContent, clearLocalAwareness, clearMotionPath, clearPlaybackTimers, clearStoredViewerPrefs, clearTransitionSound, cloneElementForPaste, cloneElementUpdates, cloneHistorySnapshot, cloneSlide, cloneTemplateElementsBySlideId, collapseChartTitleRunsForEdit, collectCoherent3DOffNodeIds, collectConnectorSiteCandidates, collectImagePaths, collectMediaElements, collectReferencedFontFamilies, collectUsedFonts, colorWithOpacity, commentMentionQuery, commentTextSegments, comparePresentation, compatToastStackStyle, compatibilityWarningToasts, compileEquationTemplateMathMl, compileLatexEquation, computeAllNotesPages, computeAnchoredPopupPosition, computeChartLegendLayout, computeColorFilter, computeColumnBoundaries, computeDrawingViewBox, computeEntranceAnimationDelay, computeGridSpacingPx, computeHandoutLayout, computeInlineEditorRect, computeKeyboardInset, computeMarqueeHitIds, computeMergeCellDown, computeMergeCellRight, computeResizedColumnWidths, computeResizedRowHeight, computeScrollDelta, computeSelectionRect, computeSlideIndices, computeSmartArtElementLayout, computeSnapToShape, computeSplitCell, computeVirtualRange, connectorWrapperTransform, convertLatexToOmml, convertOmmlToLatex, convertOmmlToMathMl, copyFormatFromElement, createActiveAnimationGroup, createBackstagePresentation, createBlankSlide, createCollaborationLivePatcher, createDefaultChartElement, createDefaultChartUserShape, createDefaultChartUserShapeGroupChild, createDepartureChannel, createGlyphOutlineLookup, createImageElementFromFile, createInitialPresentationSnapshot, createInlineListModelObserver, createInlineListSeed, createPlainNotesSegments, createPresenceProjector, createPresentationKeyBuffer, createPresentationLoadResources, createPresentationSessionId, createPresenterShowGuard, createPresenterTimer, createRotationDrag, createSyncGate, createTableStyleEntry, createTouchGestureRecognizer, createViewerOptionsStore, createViewerZoomStore, createWheelStepBuffer, cursorForTool, customGeometryPathsToSvgSubpaths, defaultCssVars, defaultRadius, defaultThemeColors, deleteAutosaveSnapshot, deleteSection, deleteTableStyleFromMap, deleteTagFromCollections, demote, deriveSlideFieldContext, deriveViewportBreakpoints, describeFontEmbedding, describeSmartArtBounds, describeTableStyleEditor, detectOrientation, detectTouchDevice, discardAutosaveRecovery, distributeElements, downloadBlob, downloadDataUrl, editCommentInList, elementActionToPptxAction, elementBulletKind, elementHitTargetStyle, elementIdSelector, elementLockTogglePatch, encodeGif, endAudienceDisplay, ensureActionAffordanceStyles, ensureChartInteractionStyles, erasePresentationInkAt, evenColumnWidths, evenRowHeights, exportDeckJson, extraQuickAccessCommands, fetchGoogleWebfontOutlineBytes, filterCommands, filterHiddenSlideIndices, filterInteractableIds, filterRenderedElements, findChartPartTarget, findConnectorSiteNear, findEraserHitElementId, findInSlides, findSelectedThemeSwatch, findSmartArtNodeText, finishPrintWindow, firstShowSlideIndex, flattenNodes, flattenTagCollections, forgetSessionDeck, formatAxisValue, formatBackstageDate, formatBackstageSize, formatBytes, formatCommentTimestamp, formatElapsed, formatMobileElapsed, formatRelativeTime, formatSlideCounter, formatTime, formatVersionTimestamp, fpsToFrameIntervalMs, generateBroadcastRoomId, generateElementId, generateNoteLineCount, generateTicks, getActiveXControlOverlayView, getAnimationColorBaseStyle, getAnimationInitialStyle, getAriaLabel, getAriaRole, getAriaRoleDescription, getBarFacePicturePixelSampleVersion, getBevelLightingSvgFilter, getCachedResult, getCalloutLeaderLineGeometry, getCalloutViewBoxBounds, getCellDiagonalBorders, getChartStylePalette, getChartUserShapeGroupTransform, getChartUserShapeRowChartBox, getCinematicTransitionAnimations, getCompoundLineOffsets, getCompoundLineWidths, getComputedEffectStyle, getComputedFillStyle, getComputedStrokeStyle, getConnectorEndpointHandles, getConnectorPathGeometry, getContentPartReplayStyles, getCropShapeClipPath, getCurrentParagraphIndex, getDenseGridLayoutPlan, getDensePanelTouchTargetPx, getDraggedShapeAdjustments, getDuotoneCachedResult, getEffectSoundAsset, getEffectSoundState, getEffectStyleSource, getElementLabel, getElementTransform, getElementTransformWithoutRotation, getFragmentedTransitionDescriptor, getGroupChildParentFill, getImageColorWashStyle, getImageEffectsFilter, getImageEffectsOpacity, getImageFillCounterTransform, getImageFitStyle, getImageSvgFilters, getImageTilingStyle, getInkReplayStyles, getInlineEditorSelectionResult, getLocalStorageUsageSummary, getNonVisualDescriptionFields, getNotesPrintableArea, getOleAriaLabel, getOleBadgeLabel, getOleDisplayName, getOleDocumentParagraphs, getOleNestedDeckDetail, getOleObjectTypeLabel, getOleSheetGrid, getOleTypeColor, getOleTypeLabel, getOverflowSegments, getP14TransitionAnimations, getPatternSvg, getPendingSelectionRestore, getPresetShapeClipPath, getPresetShapeVectorGeometry, getPrintableArea, getResizeHandleHitAreaStyle, getSelectionControlArtworkStyle, getSelectionOutlineColor, getSelectionTextStyleFlags, getSessionTabId, getShapeAdjustmentHandleDescriptors, getShapeConnectionSites, getSlideBackgroundStyle, getSlideTransitionAnimations, getSoftEdgeSvgFilter, getSubstituteFontFamily, getSvgStrokeDasharray, getTableCellBandStyle, getTextBodyRotationTransform, getTextCompensationTransform, getWarpPath, groupElements, groupIntoParagraphs, groupSlidesBySection, guidePxToEmu, handleReadingViewKey, hasCopyableFormat, hasDistinctScriptFonts, hasGlyphEnvelope, hasMultipleSelectedTableCells, hasShapeProperties, hasShowSlideAfter, hasTextProperties, hasTiltData, hexToRgbUnit, hiddenSlideCue, hideChartSeries, hollowTextFillStyle, inlineElementPointerEvents, inlineListBodyText, insertCommentMention, insertTableElementColumn, insertTableElementRow, isActionHidden, isBlackboardActive, isBrowserOpenableMime, isBulletMarkerSegment, isCalloutShape, isCellInRect, isCurrentLayout, isEditableMotionPath, isEditableTextElement, isEditorTextInputTarget, isElementActionable, isElementLocked, isElementRendered, isExportAbortError, isHeaderFooterDateTextVisible, isHeaderFooterFooterTextVisible, isHeaderFooterHeaderTextVisible, isHollowShapeElement, isImageLikeElement, isImageTiled, isInkElement, isKeyboardOpen, isLegacyBinaryPresentation, isLinkedTextBox, isMixedContentBlocked, isMobileViewport, isPpactionUrl, isPresentationAdvanceClick, isPresentationSessionMessage, isSeriesUsingSecondaryAxis, isStrokeOnlyPresetElement, isSupportedPresentationFile, isTemplateElementId3 as isTemplateElementId, isUrlSafe, isWedgeCalloutPresetShape, lastShowSlideIndex, listAutosaveSnapshots, listBackstageRecentFiles, listChartUserShapeRows, loadAudienceContent, loadSessionDeck, lockResizeAspect, makeCloneId, makeSlideId, mapEditingWheel, mapEditorKey, mapOutlineKey, mapPresentationKey, mapPresentationWheel, mapSlideShowStartKey, mapSlideSorterKey, masterViewBackgroundColor, masterViewCrudActions, masterViewCrudFailureKey, masterViewElements, masterViewPseudoSlide, matchCommentMentionAuthors, mayLeaveSlideShow, measureSvgViewportRect, mediaFallbackIcon, mediaFallbackLabelKey, mediaFallbackVisual, mediaPlaybackAttributes, mediaTransportVisible, mediaTrimEndAbsoluteMs, mediaTrimEndMsFromAbsoluteMs, mediaTrimEndMsFromSeconds, mediaTrimEndSeconds, mergeAdditiveSelection, mergeCells, mergePresentationSnapshot, mergeShapes, mergeSlideTransition, mobileElapsedSince, mobileSlideCounter, modelDataToBlobUrl, morphOptionToMode, motionPathEndPixel, motionPathFamilyLabelKey, motionPathFor, motionPathPresetIdForPath, motionPathPresetLabelKey, motionPathPresetsByFamily, motionPathToSvgD, mountAreaChart3D, mountBarChart3D, mountLineChart3D, mountModel3D, mountPieChart3D, mountSurfaceChart3D, movePresenterPointer, moveQuickAccessCommand, moveSectionDown, moveSectionUp, moveSlidesToSection, mruColorsPatch, nestedTextDecorationStyle, newTableElement, nextPresentedSlide, nextShowSlideIndex, nextToggleValue, normalizeColorsForCapture, normalizeHexColor2 as normalizeHexColor, normalizeStrokeDashType, normalizeTableStyleGuid, notesSegmentsToSpans, observeYDocSlides, ooxmlGradientAngleToCssDegrees, openNativeEyeDropper, openPendingPrintWindow, openPptxFile, openReadingView, openUrlInNewTab, overlayInlineTextSnapshot, overlayMasterViewInlineSnapshot, paintedElementSize, paintedStrokeWidth, paragraphsToSegments, parseDrawingColor, parseDrawingColorOpacity, parsePanoseString, parsePpactionUrl, parseSegmentsFromRichEditor, partitionTemplateElements, patchChartData, pickSupportedMimeType, pieceLetterSpacing, placeAudienceWindow, placeCaretAtEnd, placeTileOnPage, placeholderPromptDescriptor, playFeedbackSound, playGroup, playSlideTransitionPreview, polygonsToSvgPath, pptxActionToElementAction, prepareElementForInsertion, prepareElementUpdateBatch, prepareExportClone, preprocessCssForCapture, presentationBaseName, presentationEntrySlideIndex, presentationInkPath, presenterElapsed, presenterNextDisabled, presenterPaneAdvancesOnClick, presenterPrevDisabled, presenterTimerProgress, previousShowSlideIndex, printPropertiesFrameSlides, printPropertiesSlidesPerPage, probeAutosaveRecovery, projectDrawingShapes, promote, publishLiveGeometry, publishLiveInlineText, pushRecentColor, quickStyleSwatchCss, radarStylePatch, rasterResultToPngBlob, rasterizeElement, rasterizeElementTiledToCanvas, rasterizeElementTiles, reResolveElementColors, reResolveSlideColors, readBackstageRecentFile, readEditableText, readListActivationSelection, readOnlyRecommendation, readRibbonTransitionDraft, readSlideShowOption, readSlidesFromYDoc, readSoundFileAsDataUrl, readStoredViewerPrefs, readViewportMetrics, readingViewFitScale, rebuildDrawingShapesIfCleared, reconcileSlidesInYDoc, recordProgressPercent, rectToCells, redistributeColumnWidth, registerCollaborationTeardown, registerCrossSlideAudio, registerCustomFont, remapTextToSegments, rememberSessionDeck, removeChartCategory, removeChartSeries, removeCommentFromList, removeEmptyNode, removeLastTableElementColumn, removeLastTableElementRow, removeQuickAccessCommand, removeSmartArtNode, removeTableElementColumn, removeTableElementRow, renameSection, reorder2 as reorder, reorderAnimationTimelineRows, replaceMasterViewElements, replaceOleFile, replyToCommentInList, rerouteConnectorsForMovedElements, resetPresenterTimer, resetSlideLayoutPath, resolve3DRenderingFlags, resolveActionType, resolveAudienceScreenPlacement, resolveAuthoredCustomShowId, resolveAuthoredSlideRange, resolveAutoAdvanceDelayMs, resolveAutoFitFontScale, resolveAutosaveActivation, resolveAutosaveIntervalMs, resolveAutosaveIntervalSeconds, resolveChartKind, resolveConnectorEndpointUpdate, resolveDefaultFontFamily, resolveDefaultPrintSettings, resolveDirection, resolveDirection8, resolveDisplayedChartType, resolveElementActionAffordance, resolveElementAriaAttributes, resolveElementHighlightClick, resolveElementInteractivity, resolveExpiredAutosaveSnapshots, resolveExportCaptureDecision, resolveFontKerning, resolveGoogleWebfontHref, resolveGroupChildFill, resolveHistoryDepth, resolveImageResolutionScale, resolveInlineEditAutoFitHeight, resolveInlineEditNormAutofitShrink, resolveMediaElementSource, resolveMediaTimeNodeElementIds, resolveMetricTrackingPx, resolveNotesSchematicBodyFontSizePx, resolveNotesSegments, resolveOleType, resolveOleVerbTarget, resolveOptionRootClasses, resolveOrientation, resolvePalette, resolvePresentationAction, resolveProfileInitial, resolveRevealedChartData, resolveRevealedDrawingShapeNodeIds, resolveRevealedDrawingShapes, resolveRevealedSmartArtNodes, resolveScreenTip, resolveScriptFontSet, resolveSelectionPaneRename, resolveShapeGeometry, resolveShowSlideIndexes, resolveSlideSizeSelection, resolveSlideTransition, resolveTableCellImageUrls, resolveTableStyleImageUrls, resolveTemplateBackgroundRows, resolveThemeCatalogEntry, resolveTitleBarStatusKey, resolveTransitionDurationMs, resolveTransitionSoundAction, resolveTransportForServerUrl, resolveViewerAddinRows, resolveViewportFitOptions, resolveWheelSpokeCount, restoreFilteredSeries, restoreInlineListBodySelection, restoreSegmentSelection, restoreSessionDeck, ribbonTransitionUpdates, rulerDragToGuidePosition, runPresentationAction, runProgramNoticeStackStyle, safeOpenUrl, sanitizeColor, sanitizeGradientStops, sanitizeMathMl, saveAutosaveSnapshot, saveDeckWithPassword, saveViewerProfile, savedPresentationFileName, scaleSlidesForSizeChange, scanAvailableFontFamilies, scheduleAutoAdvanceChain, scheduleMediaTrimAndFade, schemaLabel, scopeLayoutOptionsToSlide, seedRecentColors, segmentFrameCount, segmentStyleToCss, segmentsToEditorHtml, segmentsToParagraphs, segmentsToPlainText, selectGoogleWebfontFamilies, selectedParagraphBulletKind, selectionBulletKind, sendBackward, sendToBack, seriesSecondaryAxisPatch, setAfterAnimation, setAfterAnimationColor, setCachedResult, setCellText, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartCategoryLabel, setChartCellValue, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartDataPointMarker, setChartSeriesChartType, setChartSeriesMarker, setDataLabelsRangeCache, setDuotoneCachedResult, setEffectSound, setEffectStockSound, setMasterViewBackgroundColor, setMotionPath, setMotionPathEnd, setPendingSelectionRestore, setSmartArtNodeStyle, setTableElementCellText, shapeFillChange, shapeOutlineChange, shouldAutoFollowBroadcaster, shouldClearAutosaveCacheOnClose, shouldCommitSmartArtNodeText, shouldConfirmExternalHyperlink, shouldDiscardAutosaveOnSuccessfulSave, shouldLoopContinuously, shouldProbeAutosaveRecovery, shouldRenderHitTarget, shouldRoomSlidesReplaceLoad, shouldShowAccessibilitySection, shouldShowAutosaveRecoveryPrompt, shouldShowElementHandles, shouldStickyActionRow, shouldUseSvgWarp, shouldWriteAutosaveSnapshot, siblingCount, siblingIndex, slideProgressPercent, slideShowOptionChange, slideSizeFromPreset, slideSizeToCanvasPx, slideStatusLabel, snapBoxToGrid, splitCell, splitRunByScriptFont, splitRunForMetrics, splitWordsForUnderline, stepPresenterZoom, stopAllPersistentAudio, stopCaptureStream, storeAudienceContent, stripUnderlineDecoration, strokeOutlineViewBox, strokeWidthOf, styleShadowFilter, subscribeBarFacePicturePixelSamples, substituteFieldText, surfaceWireframePatch, svgGradientFillRef, svgLineCap, svgPathToPolygons, swapPresentationWindows, switchSmartArtLayout, syncGoogleWebfontStylesheet, tableCellCss, tableContainerCss, tableStyleAssignmentUpdate, templateSchemeFromTheme, text3dEmuToPt, text3dPtToEmu, textBuildSpanStyle, textFontSizePtToPx, textFontSizePxToPt, themeColorLabel, themeColorSchemesEqual, themeColorSwatchRows, themeSwatchCommit, themeToCssVars, toCssTextOrientation, toCssVerticalDirection, toCssWritingMode, toSlideIndex, toggleBlackboard, toggleCommentResolvedInList, togglePresenterTimer, toggleSelectionBullets, toggleSheet, toggleStageElementMedia, toggleText3dExtrusion, transformInlineListCase, transformTextCase, transitionSoundOptions, transitionSoundSelectedValue, transitionStockSoundId, trimmedMediaDurationMs, ungroupElements, updateCellTextInRawXml, updateCellTextStyleInRawXml, updateElement, updateMasterViewElement, updateMergeAttrsInRawXml, updateSmartArtNodeText, updateTagInCollections, validateMediaTrimRange, validateRoomId, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, viewPropertiesPatchFromPreferences, viewerOptionsToPreferences, viewerPreferencesFromViewProperties, visibleTemplateElements, warpPreviewPath, withChartPointValue, withChartTitle, withChartUserShapeAdded, withChartUserShapeGroupChildAdded, withChartUserShapeRowChartBoxUpdated, withChartUserShapeRowFlipUpdated, withChartUserShapeRowRemoved, withChartUserShapeRowRotationUpdated, withChartUserShapeRowTextUpdated, withChartUserShapeRowUpdated, withConnectorEndpointUpdate, withFrameSlides, withInlineListDecorationDefaults, withSlideSizeOrientation, withSlidesPerPage, writeStoredViewerPrefs, xmlText };