pptx-react-viewer 2.12.1 → 2.13.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 (102) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/{AiChatPanel-CGGUPVQX.mjs → AiChatPanel-4YS6DEIT.mjs} +3 -3
  3. package/dist/AiChatPanel-4YS6DEIT.mjs.br +0 -0
  4. package/dist/AiChatPanel-4YS6DEIT.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-UEFYTUJN.js → AiChatPanel-DEI3EQFM.js} +22 -22
  6. package/dist/AiChatPanel-DEI3EQFM.js.br +0 -0
  7. package/dist/AiChatPanel-DEI3EQFM.js.gz +0 -0
  8. package/dist/{Model3DScene-TU4NTHRM.mjs → Model3DScene-JSNQCKCJ.mjs} +1 -1
  9. package/dist/Model3DScene-JSNQCKCJ.mjs.br +0 -0
  10. package/dist/Model3DScene-JSNQCKCJ.mjs.gz +0 -0
  11. package/dist/{Model3DScene-QYXJNALP.js → Model3DScene-X4W7GZVY.js} +2 -2
  12. package/dist/Model3DScene-X4W7GZVY.js.br +0 -0
  13. package/dist/Model3DScene-X4W7GZVY.js.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-VTJBKUQY.mjs → SurfaceChart3DScene-3MSU74YH.mjs} +1 -1
  15. package/dist/{SurfaceChart3DScene-VTJBKUQY.mjs.br → SurfaceChart3DScene-3MSU74YH.mjs.br} +0 -0
  16. package/dist/SurfaceChart3DScene-3MSU74YH.mjs.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-4VCO3DRP.js → SurfaceChart3DScene-IZLUWT27.js} +2 -2
  18. package/dist/SurfaceChart3DScene-IZLUWT27.js.br +0 -0
  19. package/dist/SurfaceChart3DScene-IZLUWT27.js.gz +0 -0
  20. package/dist/{chunk-CABQXGPI.mjs → chunk-4TD7EINA.mjs} +770 -358
  21. package/dist/chunk-4TD7EINA.mjs.br +0 -0
  22. package/dist/chunk-4TD7EINA.mjs.gz +0 -0
  23. package/dist/{chunk-4GYNTY2G.mjs → chunk-6KRNQ2KF.mjs} +2 -2
  24. package/dist/chunk-6KRNQ2KF.mjs.br +0 -0
  25. package/dist/chunk-6KRNQ2KF.mjs.gz +0 -0
  26. package/dist/{chunk-TDUDH7S4.js → chunk-EFSQW6S5.js} +771 -357
  27. package/dist/chunk-EFSQW6S5.js.br +0 -0
  28. package/dist/chunk-EFSQW6S5.js.gz +0 -0
  29. package/dist/{chunk-UIWY4XJT.js → chunk-G2LZT5SV.js} +3 -3
  30. package/dist/chunk-G2LZT5SV.js.br +0 -0
  31. package/dist/chunk-G2LZT5SV.js.gz +0 -0
  32. package/dist/{chunk-YIPR3GKG.mjs → chunk-HRLF4REI.mjs} +34 -15
  33. package/dist/chunk-HRLF4REI.mjs.br +0 -0
  34. package/dist/chunk-HRLF4REI.mjs.gz +0 -0
  35. package/dist/{chunk-LE6YA5WB.js → chunk-IDW5UPXW.js} +264 -245
  36. package/dist/chunk-IDW5UPXW.js.br +0 -0
  37. package/dist/chunk-IDW5UPXW.js.gz +0 -0
  38. package/dist/{chunk-NUDH7TI2.js → chunk-RWIQHVZQ.js} +326 -326
  39. package/dist/chunk-RWIQHVZQ.js.br +0 -0
  40. package/dist/chunk-RWIQHVZQ.js.gz +0 -0
  41. package/dist/{chunk-GBKIWNW6.js → chunk-SHZ3GWOD.js} +1045 -1042
  42. package/dist/chunk-SHZ3GWOD.js.br +0 -0
  43. package/dist/chunk-SHZ3GWOD.js.gz +0 -0
  44. package/dist/{chunk-N3NKU7SC.mjs → chunk-WEU5EMKK.mjs} +1 -1
  45. package/dist/chunk-WEU5EMKK.mjs.br +0 -0
  46. package/dist/chunk-WEU5EMKK.mjs.gz +0 -0
  47. package/dist/{chunk-4SGXEGVL.mjs → chunk-YA7VFYTW.mjs} +17 -14
  48. package/dist/chunk-YA7VFYTW.mjs.br +0 -0
  49. package/dist/chunk-YA7VFYTW.mjs.gz +0 -0
  50. package/dist/index.d.ts +18 -0
  51. package/dist/index.js +34 -34
  52. package/dist/index.js.br +0 -0
  53. package/dist/index.js.gz +0 -0
  54. package/dist/index.mjs +5 -5
  55. package/dist/index.mjs.br +0 -0
  56. package/dist/index.mjs.gz +0 -0
  57. package/dist/internals.d.ts +18 -0
  58. package/dist/internals.js +78 -78
  59. package/dist/internals.js.br +0 -0
  60. package/dist/internals.js.gz +0 -0
  61. package/dist/internals.mjs +3 -3
  62. package/dist/internals.mjs.br +0 -0
  63. package/dist/internals.mjs.gz +0 -0
  64. package/dist/viewer/index.d.ts +18 -0
  65. package/dist/viewer/index.js +21 -21
  66. package/dist/viewer/index.js.br +0 -0
  67. package/dist/viewer/index.js.gz +0 -0
  68. package/dist/viewer/index.mjs +5 -5
  69. package/dist/viewer/index.mjs.br +0 -0
  70. package/dist/viewer/index.mjs.gz +0 -0
  71. package/package.json +1 -1
  72. package/dist/AiChatPanel-CGGUPVQX.mjs.br +0 -0
  73. package/dist/AiChatPanel-CGGUPVQX.mjs.gz +0 -0
  74. package/dist/AiChatPanel-UEFYTUJN.js.br +0 -0
  75. package/dist/AiChatPanel-UEFYTUJN.js.gz +0 -0
  76. package/dist/Model3DScene-QYXJNALP.js.br +0 -0
  77. package/dist/Model3DScene-QYXJNALP.js.gz +0 -0
  78. package/dist/Model3DScene-TU4NTHRM.mjs.br +0 -0
  79. package/dist/Model3DScene-TU4NTHRM.mjs.gz +0 -0
  80. package/dist/SurfaceChart3DScene-4VCO3DRP.js.br +0 -0
  81. package/dist/SurfaceChart3DScene-4VCO3DRP.js.gz +0 -0
  82. package/dist/SurfaceChart3DScene-VTJBKUQY.mjs.gz +0 -0
  83. package/dist/chunk-4GYNTY2G.mjs.br +0 -0
  84. package/dist/chunk-4GYNTY2G.mjs.gz +0 -0
  85. package/dist/chunk-4SGXEGVL.mjs.br +0 -0
  86. package/dist/chunk-4SGXEGVL.mjs.gz +0 -0
  87. package/dist/chunk-CABQXGPI.mjs.br +0 -0
  88. package/dist/chunk-CABQXGPI.mjs.gz +0 -0
  89. package/dist/chunk-GBKIWNW6.js.br +0 -0
  90. package/dist/chunk-GBKIWNW6.js.gz +0 -0
  91. package/dist/chunk-LE6YA5WB.js.br +0 -0
  92. package/dist/chunk-LE6YA5WB.js.gz +0 -0
  93. package/dist/chunk-N3NKU7SC.mjs.br +0 -0
  94. package/dist/chunk-N3NKU7SC.mjs.gz +0 -0
  95. package/dist/chunk-NUDH7TI2.js.br +0 -0
  96. package/dist/chunk-NUDH7TI2.js.gz +0 -0
  97. package/dist/chunk-TDUDH7S4.js.br +0 -0
  98. package/dist/chunk-TDUDH7S4.js.gz +0 -0
  99. package/dist/chunk-UIWY4XJT.js.br +0 -0
  100. package/dist/chunk-UIWY4XJT.js.gz +0 -0
  101. package/dist/chunk-YIPR3GKG.mjs.br +0 -0
  102. package/dist/chunk-YIPR3GKG.mjs.gz +0 -0
@@ -2152,9 +2152,9 @@ function getStockObject(index) {
2152
2152
  }
2153
2153
  }
2154
2154
  async function blobToDataUrl(blob) {
2155
- return new Promise((resolve, reject) => {
2155
+ return new Promise((resolve2, reject) => {
2156
2156
  const reader = new FileReader();
2157
- reader.onload = () => resolve(reader.result);
2157
+ reader.onload = () => resolve2(reader.result);
2158
2158
  reader.onerror = () => reject(reader.error);
2159
2159
  reader.readAsDataURL(blob);
2160
2160
  });
@@ -9757,12 +9757,12 @@ function updateSection(section) {
9757
9757
  }
9758
9758
  return node;
9759
9759
  }
9760
- function applySections(presentation, sections, lookup, remap) {
9761
- if (sections === void 0) {
9760
+ function applySections(presentation, sections2, lookup, remap) {
9761
+ if (sections2 === void 0) {
9762
9762
  return;
9763
9763
  }
9764
9764
  let location = findSectionList(presentation, lookup);
9765
- if (sections.length === 0) {
9765
+ if (sections2.length === 0) {
9766
9766
  if (location) {
9767
9767
  delete location.parent[location.key];
9768
9768
  }
@@ -9779,14 +9779,14 @@ function applySections(presentation, sections, lookup, remap) {
9779
9779
  location = { parent: ext, key: "p14:sectionLst", list: ext["p14:sectionLst"] };
9780
9780
  }
9781
9781
  const list = cloneXmlObject(location.list) ?? {};
9782
- const effectiveSections = remap && remap.changed ? sections.map((section) => ({
9782
+ const effectiveSections = remap && remap.changed ? sections2.map((section) => ({
9783
9783
  ...section,
9784
9784
  slideIds: remapReferenceList(
9785
9785
  section.slideIds,
9786
9786
  remap.sldIdByOldSldId,
9787
9787
  remap.removedSldIds
9788
9788
  )
9789
- })) : sections;
9789
+ })) : sections2;
9790
9790
  replaceChildren(list, "section", effectiveSections.map(updateSection), "p14:section");
9791
9791
  location.parent[location.key] = list;
9792
9792
  }
@@ -13830,10 +13830,11 @@ var PptxShapeStyleExtractor = class {
13830
13830
  this.context.resolveThemeFillRef(styleNode["a:fillRef"], style);
13831
13831
  }
13832
13832
  const lineNode = shapeProps["a:ln"];
13833
+ if (styleNode?.["a:lnRef"]) {
13834
+ this.context.resolveThemeLineRef(styleNode["a:lnRef"], style);
13835
+ }
13833
13836
  if (lineNode) {
13834
13837
  applyLineProperties(lineNode, style, this.context);
13835
- } else if (styleNode?.["a:lnRef"]) {
13836
- this.context.resolveThemeLineRef(styleNode["a:lnRef"], style);
13837
13838
  }
13838
13839
  Object.assign(style, this.context.extractShadowStyle(shapeProps));
13839
13840
  Object.assign(style, this.context.extractInnerShadowStyle(shapeProps));
@@ -15159,7 +15160,10 @@ var PptxConnectorParser = class {
15159
15160
  const skewY = transform["@_skewY"] ? parseInt(String(transform["@_skewY"]), 10) / 6e4 : void 0;
15160
15161
  const { flipHorizontal, flipVertical } = this.context.readFlipState(transform);
15161
15162
  const cNvConnectionShapeProperties = connector2?.["p:nvCxnSpPr"]?.["p:cNvCxnSpPr"];
15162
- const shapeStyle = this.context.extractShapeStyle(shapeProperties);
15163
+ const shapeStyle = this.context.extractShapeStyle(
15164
+ shapeProperties,
15165
+ connector2["p:style"]
15166
+ );
15163
15167
  const startConnectionNode = cNvConnectionShapeProperties?.["a:stCxn"];
15164
15168
  if (startConnectionNode) {
15165
15169
  const startConnection = {};
@@ -15309,8 +15313,8 @@ var PptxLoadDataBuilder = class {
15309
15313
  this.customShows = customShows;
15310
15314
  return this;
15311
15315
  }
15312
- withSections(sections) {
15313
- this.sections = sections;
15316
+ withSections(sections2) {
15317
+ this.sections = sections2;
15314
15318
  return this;
15315
15319
  }
15316
15320
  withWarnings(warnings) {
@@ -18972,7 +18976,7 @@ function remapEditorAnimationsToShapeIds(elements2, animations, reservedMaxId =
18972
18976
  byId.set(el.id, el);
18973
18977
  }
18974
18978
  let nextId2 = Math.max(maxShapeId(flat), reservedMaxId) + 1;
18975
- const resolve = (elementId) => {
18979
+ const resolve2 = (elementId) => {
18976
18980
  const el = byId.get(elementId);
18977
18981
  if (!el) {
18978
18982
  return void 0;
@@ -18984,8 +18988,8 @@ function remapEditorAnimationsToShapeIds(elements2, animations, reservedMaxId =
18984
18988
  return el.shapeId;
18985
18989
  };
18986
18990
  return animations.map((anim) => {
18987
- const resolvedElement = resolve(anim.elementId);
18988
- const resolvedTrigger = anim.triggerShapeId !== void 0 ? resolve(anim.triggerShapeId) : void 0;
18991
+ const resolvedElement = resolve2(anim.elementId);
18992
+ const resolvedTrigger = anim.triggerShapeId !== void 0 ? resolve2(anim.triggerShapeId) : void 0;
18989
18993
  if (resolvedElement === void 0 && resolvedTrigger === void 0) {
18990
18994
  return anim;
18991
18995
  }
@@ -19987,7 +19991,7 @@ var PptxNativeAnimationService = class {
19987
19991
  * parent node. See `animation-group-context` for why the flat list
19988
19992
  * needs it.
19989
19993
  */
19990
- walkTimingTree(node, animations, currentTrigger, group = createGroupContext()) {
19994
+ walkTimingTree(node, animations, currentTrigger, group2 = createGroupContext()) {
19991
19995
  if (!node) {
19992
19996
  return;
19993
19997
  }
@@ -20086,8 +20090,8 @@ var PptxNativeAnimationService = class {
20086
20090
  textTarget: textTarget ?? void 0,
20087
20091
  cTnAttributes: roundTripAttrs,
20088
20092
  afterEffect: afterEffectFlag,
20089
- groupAutoStart: group.groupAutoStart,
20090
- parGroupIndex: group.parGroupIndex
20093
+ groupAutoStart: group2.groupAutoStart,
20094
+ parGroupIndex: group2.parGroupIndex
20091
20095
  });
20092
20096
  }
20093
20097
  const childTnList = cTn["p:childTnLst"];
@@ -20101,7 +20105,7 @@ var PptxNativeAnimationService = class {
20101
20105
  parallel,
20102
20106
  animations,
20103
20107
  trigger,
20104
- childGroupContext(group, parallel["p:cTn"], {
20108
+ childGroupContext(group2, parallel["p:cTn"], {
20105
20109
  isClickLevelGroup: isClickLevel
20106
20110
  })
20107
20111
  );
@@ -20110,11 +20114,11 @@ var PptxNativeAnimationService = class {
20110
20114
  if (isInteractiveSequence(sequence)) {
20111
20115
  continue;
20112
20116
  }
20113
- this.walkTimingTree(sequence, animations, trigger, group);
20117
+ this.walkTimingTree(sequence, animations, trigger, group2);
20114
20118
  }
20115
20119
  for (const excl of exclusives) {
20116
20120
  const exclAnims = [];
20117
- this.walkTimingTree(excl, exclAnims, trigger, group);
20121
+ this.walkTimingTree(excl, exclAnims, trigger, group2);
20118
20122
  for (const a of exclAnims) {
20119
20123
  a.exclusive = true;
20120
20124
  animations.push(a);
@@ -20129,7 +20133,7 @@ var PptxNativeAnimationService = class {
20129
20133
  parallel,
20130
20134
  animations,
20131
20135
  currentTrigger,
20132
- childGroupContext(group, parallel["p:cTn"], {
20136
+ childGroupContext(group2, parallel["p:cTn"], {
20133
20137
  isClickLevelGroup: false
20134
20138
  })
20135
20139
  );
@@ -20138,7 +20142,7 @@ var PptxNativeAnimationService = class {
20138
20142
  if (isInteractiveSequence(sequence)) {
20139
20143
  continue;
20140
20144
  }
20141
- this.walkTimingTree(sequence, animations, currentTrigger, group);
20145
+ this.walkTimingTree(sequence, animations, currentTrigger, group2);
20142
20146
  }
20143
20147
  }
20144
20148
  /**
@@ -22041,7 +22045,7 @@ var PptxAnimationWriteService = class {
22041
22045
  if (currentGroup.length > 0) {
22042
22046
  clickGroups.push(currentGroup);
22043
22047
  }
22044
- const nodes = clickGroups.map((group) => {
22048
+ const nodes = clickGroups.map((group2) => {
22045
22049
  const groupId = this.allocateId();
22046
22050
  return {
22047
22051
  "p:cTn": {
@@ -22053,7 +22057,7 @@ var PptxAnimationWriteService = class {
22053
22057
  }
22054
22058
  },
22055
22059
  "p:childTnLst": {
22056
- "p:par": group.length === 1 ? group[0] : group
22060
+ "p:par": group2.length === 1 ? group2[0] : group2
22057
22061
  }
22058
22062
  }
22059
22063
  };
@@ -23844,17 +23848,20 @@ var stripedRightArrow = {
23844
23848
  name: "stripedRightArrow",
23845
23849
  avLst: { adj1: 5e4, adj2: 5e4 },
23846
23850
  gdLst: [
23851
+ // Head length runs off `ss`, the short side, not `w`. See the note on
23852
+ // `rightArrow` in `preset-shape-definitions-table.ts`.
23853
+ gd3("maxAdj2", "*/ 84375 w ss"),
23847
23854
  gd3("a1", "pin 0 adj1 100000"),
23848
- gd3("a2", "pin 0 adj2 100000"),
23855
+ gd3("a2", "pin 0 adj2 maxAdj2"),
23849
23856
  gd3("y1", "*/ hd2 a1 100000"),
23850
23857
  gd3("y2", "+- vc 0 y1"),
23851
23858
  gd3("y3", "+- vc y1 0"),
23852
23859
  gd3("x2", "*/ ss 1 32"),
23853
23860
  gd3("x3", "*/ ss 2 32"),
23854
23861
  gd3("x4", "*/ ss 5 32"),
23855
- gd3("x5", "*/ w a2 100000"),
23862
+ gd3("x5", "*/ ss a2 100000"),
23856
23863
  gd3("x6", "+- r 0 x5"),
23857
- gd3("dx", "*/ hd2 x5 wd2"),
23864
+ gd3("dx", "*/ y1 x5 hd2"),
23858
23865
  gd3("x7", "+- x6 dx 0")
23859
23866
  ],
23860
23867
  rect: { l: "x4", t: "y2", r: "x7", b: "y3" },
@@ -23889,14 +23896,17 @@ var notchedRightArrow = {
23889
23896
  name: "notchedRightArrow",
23890
23897
  avLst: { adj1: 5e4, adj2: 5e4 },
23891
23898
  gdLst: [
23899
+ // Head length runs off `ss`, the short side, not `w`. See the note on
23900
+ // `rightArrow` in `preset-shape-definitions-table.ts`.
23901
+ gd3("maxAdj2", "*/ 100000 w ss"),
23892
23902
  gd3("a1", "pin 0 adj1 100000"),
23893
- gd3("a2", "pin 0 adj2 100000"),
23903
+ gd3("a2", "pin 0 adj2 maxAdj2"),
23894
23904
  gd3("y1", "*/ hd2 a1 100000"),
23895
23905
  gd3("y2", "+- vc 0 y1"),
23896
23906
  gd3("y3", "+- vc y1 0"),
23897
- gd3("x2", "*/ w a2 100000"),
23907
+ gd3("x2", "*/ ss a2 100000"),
23898
23908
  gd3("x1", "+- r 0 x2"),
23899
- gd3("dx2", "*/ hd2 x2 wd2"),
23909
+ gd3("dx2", "*/ y1 x2 hd2"),
23900
23910
  gd3("x3", "+- x1 dx2 0"),
23901
23911
  gd3("nx", "*/ y1 1 1")
23902
23912
  ],
@@ -23920,7 +23930,12 @@ var notchedRightArrow = {
23920
23930
  var homePlate = {
23921
23931
  name: "homePlate",
23922
23932
  avLst: { adj: 5e4 },
23923
- gdLst: [gd3("a", "pin 0 adj 100000"), gd3("x1", "*/ w a 100000")],
23933
+ gdLst: [
23934
+ gd3("maxAdj", "*/ 100000 w ss"),
23935
+ gd3("a", "pin 0 adj maxAdj"),
23936
+ gd3("dx1", "*/ ss a 100000"),
23937
+ gd3("x1", "+- r 0 dx1")
23938
+ ],
23924
23939
  rect: { l: "l", t: "t", r: "x1", b: "b" },
23925
23940
  pathLst: [
23926
23941
  {
@@ -23938,8 +23953,13 @@ var homePlate = {
23938
23953
  var chevron = {
23939
23954
  name: "chevron",
23940
23955
  avLst: { adj: 5e4 },
23941
- gdLst: [gd3("a", "pin 0 adj 100000"), gd3("x1", "*/ w a 100000"), gd3("x2", "+- r 0 x1")],
23942
- rect: { l: "l", t: "t", r: "x2", b: "b" },
23956
+ gdLst: [
23957
+ gd3("maxAdj", "*/ 100000 w ss"),
23958
+ gd3("a", "pin 0 adj maxAdj"),
23959
+ gd3("x1", "*/ ss a 100000"),
23960
+ gd3("x2", "+- r 0 x1")
23961
+ ],
23962
+ rect: { l: "x1", t: "t", r: "x2", b: "b" },
23943
23963
  pathLst: [
23944
23964
  {
23945
23965
  commands: [
@@ -29025,27 +29045,28 @@ var rightArrow = {
29025
29045
  name: "rightArrow",
29026
29046
  avLst: { adj1: 5e4, adj2: 5e4 },
29027
29047
  gdLst: [
29048
+ gd13("maxAdj2", "*/ 100000 w ss"),
29028
29049
  gd13("a1", "pin 0 adj1 100000"),
29029
- gd13("a2", "pin 0 adj2 100000"),
29030
- gd13("y1", "*/ hd2 a1 100000"),
29031
- gd13("y2", "+- vc 0 y1"),
29032
- gd13("y3", "+- vc y1 0"),
29033
- gd13("x2", "*/ w a2 100000"),
29034
- gd13("x1", "+- r 0 x2"),
29035
- gd13("dx2", "*/ hd2 x2 wd2"),
29036
- gd13("x3", "+- x1 dx2 0")
29050
+ gd13("a2", "pin 0 adj2 maxAdj2"),
29051
+ gd13("dx1", "*/ ss a2 100000"),
29052
+ gd13("x1", "+- r 0 dx1"),
29053
+ gd13("dy1", "*/ h a1 200000"),
29054
+ gd13("y1", "+- vc 0 dy1"),
29055
+ gd13("y2", "+- vc dy1 0"),
29056
+ gd13("dx2", "*/ y1 dx1 hd2"),
29057
+ gd13("x2", "+- x1 dx2 0")
29037
29058
  ],
29038
- rect: { l: "l", t: "y2", r: "x3", b: "y3" },
29059
+ rect: { l: "l", t: "y1", r: "x2", b: "y2" },
29039
29060
  pathLst: [
29040
29061
  {
29041
29062
  commands: [
29042
- { kind: "moveTo", x: "l", y: "y2" },
29043
- { kind: "lnTo", x: "x1", y: "y2" },
29063
+ { kind: "moveTo", x: "l", y: "y1" },
29064
+ { kind: "lnTo", x: "x1", y: "y1" },
29044
29065
  { kind: "lnTo", x: "x1", y: "t" },
29045
29066
  { kind: "lnTo", x: "r", y: "vc" },
29046
29067
  { kind: "lnTo", x: "x1", y: "b" },
29047
- { kind: "lnTo", x: "x1", y: "y3" },
29048
- { kind: "lnTo", x: "l", y: "y3" },
29068
+ { kind: "lnTo", x: "x1", y: "y2" },
29069
+ { kind: "lnTo", x: "l", y: "y2" },
29049
29070
  { kind: "close" }
29050
29071
  ]
29051
29072
  }
@@ -29055,26 +29076,28 @@ var leftArrow = {
29055
29076
  name: "leftArrow",
29056
29077
  avLst: { adj1: 5e4, adj2: 5e4 },
29057
29078
  gdLst: [
29079
+ gd13("maxAdj2", "*/ 100000 w ss"),
29058
29080
  gd13("a1", "pin 0 adj1 100000"),
29059
- gd13("a2", "pin 0 adj2 100000"),
29060
- gd13("y1", "*/ hd2 a1 100000"),
29061
- gd13("y2", "+- vc 0 y1"),
29062
- gd13("y3", "+- vc y1 0"),
29063
- gd13("x1", "*/ w a2 100000"),
29064
- gd13("dx2", "*/ hd2 x1 wd2"),
29065
- gd13("x2", "+- l dx2 0")
29081
+ gd13("a2", "pin 0 adj2 maxAdj2"),
29082
+ gd13("dx2", "*/ ss a2 100000"),
29083
+ gd13("x2", "+- l dx2 0"),
29084
+ gd13("dy1", "*/ h a1 200000"),
29085
+ gd13("y1", "+- vc 0 dy1"),
29086
+ gd13("y2", "+- vc dy1 0"),
29087
+ gd13("dx1", "*/ y1 dx2 hd2"),
29088
+ gd13("x1", "+- dx2 0 dx1")
29066
29089
  ],
29067
- rect: { l: "x2", t: "y2", r: "r", b: "y3" },
29090
+ rect: { l: "x1", t: "y1", r: "r", b: "y2" },
29068
29091
  pathLst: [
29069
29092
  {
29070
29093
  commands: [
29071
29094
  { kind: "moveTo", x: "l", y: "vc" },
29072
- { kind: "lnTo", x: "x1", y: "t" },
29073
- { kind: "lnTo", x: "x1", y: "y2" },
29095
+ { kind: "lnTo", x: "x2", y: "t" },
29096
+ { kind: "lnTo", x: "x2", y: "y1" },
29097
+ { kind: "lnTo", x: "r", y: "y1" },
29074
29098
  { kind: "lnTo", x: "r", y: "y2" },
29075
- { kind: "lnTo", x: "r", y: "y3" },
29076
- { kind: "lnTo", x: "x1", y: "y3" },
29077
- { kind: "lnTo", x: "x1", y: "b" },
29099
+ { kind: "lnTo", x: "x2", y: "y2" },
29100
+ { kind: "lnTo", x: "x2", y: "b" },
29078
29101
  { kind: "close" }
29079
29102
  ]
29080
29103
  }
@@ -29084,26 +29107,28 @@ var upArrow = {
29084
29107
  name: "upArrow",
29085
29108
  avLst: { adj1: 5e4, adj2: 5e4 },
29086
29109
  gdLst: [
29110
+ gd13("maxAdj2", "*/ 100000 h ss"),
29087
29111
  gd13("a1", "pin 0 adj1 100000"),
29088
- gd13("a2", "pin 0 adj2 100000"),
29089
- gd13("x1", "*/ wd2 a1 100000"),
29090
- gd13("x2", "+- hc 0 x1"),
29091
- gd13("x3", "+- hc x1 0"),
29092
- gd13("y2", "*/ h a2 100000"),
29093
- gd13("dy2", "*/ wd2 y2 hd2"),
29094
- gd13("y1", "+- t dy2 0")
29112
+ gd13("a2", "pin 0 adj2 maxAdj2"),
29113
+ gd13("dy2", "*/ ss a2 100000"),
29114
+ gd13("y2", "+- t dy2 0"),
29115
+ gd13("dx1", "*/ w a1 200000"),
29116
+ gd13("x1", "+- hc 0 dx1"),
29117
+ gd13("x2", "+- hc dx1 0"),
29118
+ gd13("dy1", "*/ x1 dy2 wd2"),
29119
+ gd13("y1", "+- y2 0 dy1")
29095
29120
  ],
29096
- rect: { l: "x2", t: "y1", r: "x3", b: "b" },
29121
+ rect: { l: "x1", t: "y1", r: "x2", b: "b" },
29097
29122
  pathLst: [
29098
29123
  {
29099
29124
  commands: [
29100
- { kind: "moveTo", x: "hc", y: "t" },
29125
+ { kind: "moveTo", x: "l", y: "y2" },
29126
+ { kind: "lnTo", x: "hc", y: "t" },
29101
29127
  { kind: "lnTo", x: "r", y: "y2" },
29102
- { kind: "lnTo", x: "x3", y: "y2" },
29103
- { kind: "lnTo", x: "x3", y: "b" },
29104
- { kind: "lnTo", x: "x2", y: "b" },
29105
29128
  { kind: "lnTo", x: "x2", y: "y2" },
29106
- { kind: "lnTo", x: "l", y: "y2" },
29129
+ { kind: "lnTo", x: "x2", y: "b" },
29130
+ { kind: "lnTo", x: "x1", y: "b" },
29131
+ { kind: "lnTo", x: "x1", y: "y2" },
29107
29132
  { kind: "close" }
29108
29133
  ]
29109
29134
  }
@@ -29113,26 +29138,27 @@ var downArrow = {
29113
29138
  name: "downArrow",
29114
29139
  avLst: { adj1: 5e4, adj2: 5e4 },
29115
29140
  gdLst: [
29141
+ gd13("maxAdj2", "*/ 100000 h ss"),
29116
29142
  gd13("a1", "pin 0 adj1 100000"),
29117
- gd13("a2", "pin 0 adj2 100000"),
29118
- gd13("x1", "*/ wd2 a1 100000"),
29119
- gd13("x2", "+- hc 0 x1"),
29120
- gd13("x3", "+- hc x1 0"),
29121
- gd13("y1", "*/ h a2 100000"),
29122
- gd13("y2", "+- b 0 y1"),
29123
- gd13("dy2", "*/ wd2 y1 hd2"),
29124
- gd13("y3", "+- b 0 dy2")
29143
+ gd13("a2", "pin 0 adj2 maxAdj2"),
29144
+ gd13("dy1", "*/ ss a2 100000"),
29145
+ gd13("y1", "+- b 0 dy1"),
29146
+ gd13("dx1", "*/ w a1 200000"),
29147
+ gd13("x1", "+- hc 0 dx1"),
29148
+ gd13("x2", "+- hc dx1 0"),
29149
+ gd13("dy2", "*/ x1 dy1 wd2"),
29150
+ gd13("y2", "+- b 0 dy2")
29125
29151
  ],
29126
- rect: { l: "x2", t: "t", r: "x3", b: "y3" },
29152
+ rect: { l: "x1", t: "t", r: "x2", b: "y2" },
29127
29153
  pathLst: [
29128
29154
  {
29129
29155
  commands: [
29130
- { kind: "moveTo", x: "l", y: "y2" },
29131
- { kind: "lnTo", x: "x2", y: "y2" },
29156
+ { kind: "moveTo", x: "l", y: "y1" },
29157
+ { kind: "lnTo", x: "x1", y: "y1" },
29158
+ { kind: "lnTo", x: "x1", y: "t" },
29132
29159
  { kind: "lnTo", x: "x2", y: "t" },
29133
- { kind: "lnTo", x: "x3", y: "t" },
29134
- { kind: "lnTo", x: "x3", y: "y2" },
29135
- { kind: "lnTo", x: "r", y: "y2" },
29160
+ { kind: "lnTo", x: "x2", y: "y1" },
29161
+ { kind: "lnTo", x: "r", y: "y1" },
29136
29162
  { kind: "lnTo", x: "hc", y: "b" },
29137
29163
  { kind: "close" }
29138
29164
  ]
@@ -32312,8 +32338,8 @@ function extractSectionMap(presentationData, lookup) {
32312
32338
  const orderedSections = [];
32313
32339
  const presentation = presentationData ? lookup.getChildByLocalName(presentationData, "presentation") : void 0;
32314
32340
  const sectionList = findSectionList2(presentation, lookup);
32315
- const sections = lookup.getChildrenArrayByLocalName(sectionList, "section");
32316
- sections.forEach((section, index) => {
32341
+ const sections2 = lookup.getChildrenArrayByLocalName(sectionList, "section");
32342
+ sections2.forEach((section, index) => {
32317
32343
  const sectionId = String(section["@_id"] || `section-${index + 1}`);
32318
32344
  const rawName = String(section["@_name"] || "").trim();
32319
32345
  const sectionName = rawName || `Section ${index + 1}`;
@@ -32788,8 +32814,8 @@ function scalar(parent, name, xmlLookup) {
32788
32814
  return node?.["#text"] === void 0 ? void 0 : String(node["#text"]);
32789
32815
  }
32790
32816
  function parseSeriesDataLabels(seriesNode, xmlLookup) {
32791
- const group = xmlLookup.getChildByLocalName(seriesNode, "dLbls");
32792
- const nodes = group ? xmlLookup.getChildrenArrayByLocalName(group, "dLbl") : xmlLookup.getChildrenArrayByLocalName(seriesNode, "dLbl");
32817
+ const group2 = xmlLookup.getChildByLocalName(seriesNode, "dLbls");
32818
+ const nodes = group2 ? xmlLookup.getChildrenArrayByLocalName(group2, "dLbl") : xmlLookup.getChildrenArrayByLocalName(seriesNode, "dLbl");
32793
32819
  return nodes.flatMap((node) => {
32794
32820
  const idx = uint32(xmlLookup.getChildByLocalName(node, "idx")?.["@_val"]);
32795
32821
  if (idx === void 0) {
@@ -32834,7 +32860,7 @@ function parseSeriesDataLabels(seriesNode, xmlLookup) {
32834
32860
  return [result];
32835
32861
  });
32836
32862
  }
32837
- function parseChartDataLabelOptions(group, xmlLookup) {
32863
+ function parseChartDataLabelOptions(group2, xmlLookup) {
32838
32864
  const result = {};
32839
32865
  const fields = [
32840
32866
  ["showVal", "showValue"],
@@ -32846,16 +32872,16 @@ function parseChartDataLabelOptions(group, xmlLookup) {
32846
32872
  ["showLeaderLines", "showLeaderLines"]
32847
32873
  ];
32848
32874
  for (const [xmlName, property] of fields) {
32849
- const value = bool(xmlLookup.getChildByLocalName(group, xmlName));
32875
+ const value = bool(xmlLookup.getChildByLocalName(group2, xmlName));
32850
32876
  if (value !== void 0) {
32851
32877
  result[property] = value;
32852
32878
  }
32853
32879
  }
32854
- const pos2 = position(xmlLookup.getChildByLocalName(group, "dLblPos"));
32880
+ const pos2 = position(xmlLookup.getChildByLocalName(group2, "dLblPos"));
32855
32881
  if (pos2) {
32856
32882
  result.position = pos2;
32857
32883
  }
32858
- const separator = scalar(group, "separator", xmlLookup);
32884
+ const separator = scalar(group2, "separator", xmlLookup);
32859
32885
  if (separator !== void 0) {
32860
32886
  result.separator = separator;
32861
32887
  }
@@ -38175,12 +38201,12 @@ function layoutGroupedList(nodes, bounds, themeColorMap) {
38175
38201
  const usableW = bounds.width - padding * 2;
38176
38202
  const groupW = (usableW - gap * (groups.length - 1)) / groups.length;
38177
38203
  const usableH = bounds.height - padding * 2;
38178
- groups.forEach((group, gi) => {
38204
+ groups.forEach((group2, gi) => {
38179
38205
  const fill = accentColor(gi, themeColorMap);
38180
38206
  const gx = bounds.x + padding + gi * (groupW + gap);
38181
38207
  const headerH = usableH * 0.2;
38182
38208
  const subItemGap = 3;
38183
- const subItemH = (usableH - headerH - 4 - subItemGap * (group.length - 1)) / group.length;
38209
+ const subItemH = (usableH - headerH - 4 - subItemGap * (group2.length - 1)) / group2.length;
38184
38210
  elements2.push(
38185
38211
  makeShapeElement(
38186
38212
  nextId("sa-grp-header"),
@@ -38198,7 +38224,7 @@ function layoutGroupedList(nodes, bounds, themeColorMap) {
38198
38224
  }
38199
38225
  )
38200
38226
  );
38201
- group.forEach((node, si) => {
38227
+ group2.forEach((node, si) => {
38202
38228
  const sy = bounds.y + padding + headerH + 4 + si * (subItemH + subItemGap);
38203
38229
  elements2.push(
38204
38230
  makeShapeElement(
@@ -41479,6 +41505,23 @@ var GENERIC_FAMILY_CONCRETE_FONTS = {
41479
41505
  cursive: ["Comic Sans MS", "cursive"],
41480
41506
  fantasy: ["Impact", "fantasy"]
41481
41507
  };
41508
+ function parsePanoseString(panoseStr) {
41509
+ if (!panoseStr) {
41510
+ return void 0;
41511
+ }
41512
+ const cleaned = panoseStr.trim();
41513
+ if (cleaned.length !== 20) {
41514
+ return void 0;
41515
+ }
41516
+ if (!/^[0-9a-fA-F]{20}$/.test(cleaned)) {
41517
+ return void 0;
41518
+ }
41519
+ const bytes = [];
41520
+ for (let i = 0; i < 20; i += 2) {
41521
+ bytes.push(parseInt(cleaned.substring(i, i + 2), 16));
41522
+ }
41523
+ return bytes;
41524
+ }
41482
41525
  function classifyPanose(panose) {
41483
41526
  if (!panose || panose.length < 4) {
41484
41527
  return "sans-serif";
@@ -49646,6 +49689,29 @@ var PptxHandlerRuntime10 = class extends PptxHandlerRuntime9 {
49646
49689
  return void 0;
49647
49690
  }
49648
49691
  }
49692
+ /**
49693
+ * Resolve the `c:spPr` fill of a chart container (`c:chartSpace` or
49694
+ * `c:plotArea`) to a colour string, or the literal `'none'` for
49695
+ * `<a:noFill/>`. Returns `undefined` when the container declares no fill at
49696
+ * all, which leaves the choice to the renderer.
49697
+ *
49698
+ * `<a:noFill/>` parses to the empty STRING, so presence - not truthiness -
49699
+ * has to decide.
49700
+ */
49701
+ parseChartContainerFill(container) {
49702
+ const shapeProperties = this.xmlLookupService.getChildByLocalName(container, "spPr");
49703
+ if (!shapeProperties) {
49704
+ return void 0;
49705
+ }
49706
+ const hasNoFill = Object.keys(shapeProperties).some(
49707
+ (key) => this.compatibilityService.getXmlLocalName(key) === "noFill"
49708
+ );
49709
+ if (hasNoFill) {
49710
+ return "none";
49711
+ }
49712
+ const solidFill2 = this.xmlLookupService.getChildByLocalName(shapeProperties, "solidFill");
49713
+ return solidFill2 ? this.parseColor(solidFill2) : void 0;
49714
+ }
49649
49715
  /**
49650
49716
  * Extract chart style metadata from chart XML.
49651
49717
  */
@@ -49660,6 +49726,11 @@ var PptxHandlerRuntime10 = class extends PptxHandlerRuntime9 {
49660
49726
  style.styleId = parseInt(String(styleNode["@_val"]));
49661
49727
  hasStyle = true;
49662
49728
  }
49729
+ const chartAreaFill2 = this.parseChartContainerFill(chartSpace);
49730
+ if (chartAreaFill2) {
49731
+ style.chartAreaFill = chartAreaFill2;
49732
+ hasStyle = true;
49733
+ }
49663
49734
  if (chartRoot) {
49664
49735
  const legend = this.xmlLookupService.getChildByLocalName(chartRoot, "legend");
49665
49736
  if (legend) {
@@ -49685,6 +49756,11 @@ var PptxHandlerRuntime10 = class extends PptxHandlerRuntime9 {
49685
49756
  }
49686
49757
  const plotArea = this.xmlLookupService.getChildByLocalName(chartRoot, "plotArea");
49687
49758
  if (plotArea) {
49759
+ const plotAreaFill2 = this.parseChartContainerFill(plotArea);
49760
+ if (plotAreaFill2) {
49761
+ style.plotAreaFill = plotAreaFill2;
49762
+ hasStyle = true;
49763
+ }
49688
49764
  const valAx = this.xmlLookupService.getChildByLocalName(plotArea, "valAx");
49689
49765
  if (valAx) {
49690
49766
  const majorGridlines = this.xmlLookupService.getChildByLocalName(valAx, "majorGridlines");
@@ -51018,32 +51094,32 @@ var PptxHandlerRuntime15 = class _PptxHandlerRuntime3 extends PptxHandlerRuntime
51018
51094
  * Build a p:grpSp XML object from a GroupPptxElement.
51019
51095
  * Children are stored with coordinates relative to the group origin.
51020
51096
  */
51021
- buildGroupShapeXml(group) {
51022
- if (group.rawXml && group.children.length === 0) {
51023
- return group.rawXml;
51097
+ buildGroupShapeXml(group2) {
51098
+ if (group2.rawXml && group2.children.length === 0) {
51099
+ return group2.rawXml;
51024
51100
  }
51025
51101
  const EMU = _PptxHandlerRuntime3.EMU_PER_PX;
51026
- const offX = Math.round(group.x * EMU);
51027
- const offY = Math.round(group.y * EMU);
51028
- const extCx = Math.round(group.width * EMU);
51029
- const extCy = Math.round(group.height * EMU);
51102
+ const offX = Math.round(group2.x * EMU);
51103
+ const offY = Math.round(group2.y * EMU);
51104
+ const extCx = Math.round(group2.width * EMU);
51105
+ const extCy = Math.round(group2.height * EMU);
51030
51106
  const chOffX = 0;
51031
51107
  const chOffY = 0;
51032
51108
  const chExtCx = extCx;
51033
51109
  const chExtCy = extCy;
51034
51110
  const xfrmAttrs = {};
51035
- if (typeof group.rotation === "number" && group.rotation !== 0) {
51036
- xfrmAttrs["@_rot"] = String(Math.round(group.rotation * 6e4));
51111
+ if (typeof group2.rotation === "number" && group2.rotation !== 0) {
51112
+ xfrmAttrs["@_rot"] = String(Math.round(group2.rotation * 6e4));
51037
51113
  }
51038
- if (group.flipHorizontal) {
51114
+ if (group2.flipHorizontal) {
51039
51115
  xfrmAttrs["@_flipH"] = "1";
51040
51116
  }
51041
- if (group.flipVertical) {
51117
+ if (group2.flipVertical) {
51042
51118
  xfrmAttrs["@_flipV"] = "1";
51043
51119
  }
51044
51120
  const grpXml = {
51045
51121
  "p:nvGrpSpPr": {
51046
- "p:cNvPr": { "@_id": "0", "@_name": group.id },
51122
+ "p:cNvPr": { "@_id": "0", "@_name": group2.id },
51047
51123
  "p:cNvGrpSpPr": {},
51048
51124
  "p:nvPr": {}
51049
51125
  },
@@ -51072,7 +51148,7 @@ var PptxHandlerRuntime15 = class _PptxHandlerRuntime3 extends PptxHandlerRuntime
51072
51148
  const childShapes = [];
51073
51149
  const childPics = [];
51074
51150
  const childConnectors = [];
51075
- for (const child202 of group.children) {
51151
+ for (const child202 of group2.children) {
51076
51152
  let xml = child202.rawXml;
51077
51153
  if (!xml && (child202.type === "text" || child202.type === "shape")) {
51078
51154
  xml = this.createElementXml(child202);
@@ -58594,12 +58670,12 @@ var PptxHandlerRuntime37 = class _PptxHandlerRuntime13 extends PptxHandlerRuntim
58594
58670
  updateSummaryFallback(shape, el, targets, relationships) {
58595
58671
  const block = this.alternateContentBlockByRawXml.get(shape);
58596
58672
  const fallback = block?.rawAc["mc:Fallback"];
58597
- const group = fallback?.["p:grpSp"];
58598
- if (!group) {
58673
+ const group2 = fallback?.["p:grpSp"];
58674
+ if (!group2) {
58599
58675
  return;
58600
58676
  }
58601
- const existing = this.ensureArray(group["p:pic"]);
58602
- group["p:pic"] = targets.map((target, index) => {
58677
+ const existing = this.ensureArray(group2["p:pic"]);
58678
+ group2["p:pic"] = targets.map((target, index) => {
58603
58679
  const tile = this.summaryTileElement(el, target, index);
58604
58680
  const picture = existing[index] ?? this.buildZoomFallbackPicture(tile, relationships[index]);
58605
58681
  this.applyZoomTransform(picture["p:spPr"] ??= {}, tile);
@@ -59985,7 +60061,7 @@ var PptxHandlerRuntime42 = class extends PptxHandlerRuntime41 {
59985
60061
  */
59986
60062
  buildFontSchemeObject(schemeName, fontMap, majorScripts, minorScripts) {
59987
60063
  const buildFontGroup = (latinKey, eaKey, csKey, scripts) => {
59988
- const group = {
60064
+ const group2 = {
59989
60065
  "a:latin": { "@_typeface": fontMap[latinKey] || "Calibri" },
59990
60066
  "a:ea": { "@_typeface": fontMap[eaKey] || "" },
59991
60067
  "a:cs": { "@_typeface": fontMap[csKey] || "" }
@@ -59996,9 +60072,9 @@ var PptxHandlerRuntime42 = class extends PptxHandlerRuntime41 {
59996
60072
  "@_script": script,
59997
60073
  "@_typeface": scripts[script]
59998
60074
  }));
59999
- group["a:font"] = fontEntries.length === 1 ? fontEntries[0] : fontEntries;
60075
+ group2["a:font"] = fontEntries.length === 1 ? fontEntries[0] : fontEntries;
60000
60076
  }
60001
- return group;
60077
+ return group2;
60002
60078
  };
60003
60079
  return {
60004
60080
  "@_name": schemeName,
@@ -64631,7 +64707,7 @@ function parseEmuInt2(value) {
64631
64707
  return parsed;
64632
64708
  }
64633
64709
  var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntime66 {
64634
- async parseGroupShape(group, baseId, slidePath, rawXmlStr, depth = 0) {
64710
+ async parseGroupShape(group2, baseId, slidePath, rawXmlStr, depth = 0) {
64635
64711
  if (depth > MAX_GROUP_DEPTH) {
64636
64712
  this.compatibilityService.reportWarning({
64637
64713
  code: "group-depth-exceeded",
@@ -64643,7 +64719,7 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
64643
64719
  });
64644
64720
  return [];
64645
64721
  }
64646
- const grpSpPr = group["p:grpSpPr"];
64722
+ const grpSpPr = group2["p:grpSpPr"];
64647
64723
  const xfrm = grpSpPr?.["a:xfrm"];
64648
64724
  const EMU_PX = _PptxHandlerRuntime30.EMU_PER_PX;
64649
64725
  let parentX = 0, parentY = 0, parentW = 0, parentH = 0;
@@ -64708,16 +64784,16 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
64708
64784
  }
64709
64785
  return el;
64710
64786
  };
64711
- this.unwrapAlternateContent(group);
64787
+ this.unwrapAlternateContent(group2);
64712
64788
  const childOrder3 = this.extractSpTreeChildOrder(
64713
64789
  void 0,
64714
- group,
64790
+ group2,
64715
64791
  "p:grpSp"
64716
64792
  );
64717
64793
  const elements2 = [];
64718
64794
  for (const entry2 of childOrder3) {
64719
64795
  if (entry2.tag === "p:grpSp") {
64720
- const subArr = this.ensureArray(group["p:grpSp"]);
64796
+ const subArr = this.ensureArray(group2["p:grpSp"]);
64721
64797
  const subGroup = subArr[entry2.indexInType];
64722
64798
  if (!subGroup) {
64723
64799
  continue;
@@ -64735,12 +64811,12 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
64735
64811
  const element = await this.parseSpTreeChild(
64736
64812
  entry2.tag,
64737
64813
  entry2.indexInType,
64738
- group,
64814
+ group2,
64739
64815
  slidePath,
64740
64816
  `${baseId}-`
64741
64817
  );
64742
64818
  if (element) {
64743
- const childNode2 = this.ensureArray(group[entry2.tag])[entry2.indexInType];
64819
+ const childNode2 = this.ensureArray(group2[entry2.tag])[entry2.indexInType];
64744
64820
  applyRawChildGeometry(element, childNode2);
64745
64821
  transformElement(element);
64746
64822
  elements2.push(element);
@@ -64753,8 +64829,8 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
64753
64829
  * Parse a p:grpSp element into a GroupPptxElement with children.
64754
64830
  * Children have coordinates relative to the group's position.
64755
64831
  */
64756
- async parseGroupShapeAsGroup(group, baseId, slidePath, rawXmlStr) {
64757
- const grpSpPr = group["p:grpSpPr"];
64832
+ async parseGroupShapeAsGroup(group2, baseId, slidePath, rawXmlStr) {
64833
+ const grpSpPr = group2["p:grpSpPr"];
64758
64834
  const xfrm = grpSpPr?.["a:xfrm"];
64759
64835
  let parentX = 0, parentY = 0, parentW = 0, parentH = 0;
64760
64836
  let groupRotation;
@@ -64780,7 +64856,7 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
64780
64856
  }
64781
64857
  const grpFillStyle = grpSpPr ? this.extractShapeStyle(grpSpPr) : void 0;
64782
64858
  const hasGroupFill = grpFillStyle && grpFillStyle.fillMode && grpFillStyle.fillMode !== "none";
64783
- const children10 = await this.parseGroupShape(group, baseId, slidePath, rawXmlStr);
64859
+ const children10 = await this.parseGroupShape(group2, baseId, slidePath, rawXmlStr);
64784
64860
  if (children10.length === 0) {
64785
64861
  return null;
64786
64862
  }
@@ -64806,7 +64882,7 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
64806
64882
  child202.x -= parentX;
64807
64883
  child202.y -= parentY;
64808
64884
  }
64809
- const grpCNvPr = group?.["p:nvGrpSpPr"]?.["p:cNvPr"];
64885
+ const grpCNvPr = group2?.["p:nvGrpSpPr"]?.["p:cNvPr"];
64810
64886
  const grpSlideRels = this.slideRelsMap.get(slidePath);
64811
64887
  const { actionClick: grpActionClick, actionHover: grpActionHover } = this.parseElementActions(
64812
64888
  grpCNvPr,
@@ -64826,7 +64902,7 @@ var PptxHandlerRuntime67 = class _PptxHandlerRuntime30 extends PptxHandlerRuntim
64826
64902
  flipHorizontal: flipHorizontal || void 0,
64827
64903
  flipVertical: flipVertical || void 0,
64828
64904
  children: children10,
64829
- rawXml: group,
64905
+ rawXml: group2,
64830
64906
  actionClick: grpActionClick,
64831
64907
  actionHover: grpActionHover,
64832
64908
  groupFill: hasGroupFill ? grpFillStyle : void 0
@@ -66293,12 +66369,12 @@ var PptxHandlerRuntime74 = class extends PptxHandlerRuntime73 {
66293
66369
  }
66294
66370
  } else if (entry2.tag === "p:grpSp") {
66295
66371
  const groups = this.ensureArray(spTree["p:grpSp"]);
66296
- const group = groups[entry2.indexInType];
66297
- if (!group) {
66372
+ const group2 = groups[entry2.indexInType];
66373
+ if (!group2) {
66298
66374
  continue;
66299
66375
  }
66300
66376
  const element = await this.parseGroupShapeAsGroup(
66301
- group,
66377
+ group2,
66302
66378
  `master-group-${masterToken}-${entry2.indexInType}`,
66303
66379
  masterPath
66304
66380
  );
@@ -66515,12 +66591,12 @@ var PptxHandlerRuntime76 = class extends PptxHandlerRuntime75 {
66515
66591
  }
66516
66592
  } else if (entry2.tag === "p:grpSp") {
66517
66593
  const groups = this.ensureArray(spTree["p:grpSp"]);
66518
- const group = groups[entry2.indexInType];
66519
- if (!group) {
66594
+ const group2 = groups[entry2.indexInType];
66595
+ if (!group2) {
66520
66596
  continue;
66521
66597
  }
66522
66598
  const element = await this.parseGroupShapeAsGroup(
66523
- group,
66599
+ group2,
66524
66600
  `layout-group-${layoutToken}-${entry2.indexInType}`,
66525
66601
  layoutPath
66526
66602
  );
@@ -68397,16 +68473,16 @@ function extractDrawingShapeTextStyle(txBody, deps) {
68397
68473
  }
68398
68474
  return { fontSize, fontColor };
68399
68475
  }
68400
- function resolveSmartArtTextStyles(paragraphs, resolve) {
68476
+ function resolveSmartArtTextStyles(paragraphs, resolve2) {
68401
68477
  for (const paragraph of paragraphs ?? []) {
68402
68478
  if (paragraph.endParaRPr) {
68403
- paragraph.endParaStyle = resolve(paragraph.endParaRPr);
68479
+ paragraph.endParaStyle = resolve2(paragraph.endParaRPr);
68404
68480
  }
68405
68481
  for (const item of paragraph.items) {
68406
68482
  if (item.kind === "run" && item.run.rPr) {
68407
- item.run.style = resolve(item.run.rPr);
68483
+ item.run.style = resolve2(item.run.rPr);
68408
68484
  } else if ((item.kind === "field" || item.kind === "break") && item.rPr) {
68409
- item.style = resolve(item.rPr);
68485
+ item.style = resolve2(item.rPr);
68410
68486
  }
68411
68487
  }
68412
68488
  }
@@ -69915,6 +69991,20 @@ var PptxHandlerRuntime90 = class extends PptxHandlerRuntime89 {
69915
69991
  const hasBlanks = expanded.some((value) => value === null);
69916
69992
  const values = hasBlanks ? expanded.map((value) => value ?? 0) : this.extractChartPointValues(valNode, true).map((value) => Number.parseFloat(value)).filter((value) => Number.isFinite(value));
69917
69993
  const blanks = hasBlanks ? expanded.map((value) => value === null) : void 0;
69994
+ const seriesNumberFormat = String(
69995
+ this.xmlLookupService.getChildByLocalName(
69996
+ this.xmlLookupService.getChildByLocalName(seriesNode, "dLbls"),
69997
+ "numFmt"
69998
+ )?.["@_formatCode"] ?? ""
69999
+ ).trim() || String(
70000
+ this.xmlLookupService.getScalarChildByLocalName(
70001
+ this.xmlLookupService.getChildByLocalName(
70002
+ this.xmlLookupService.getChildByLocalName(valNode, "numRef") ?? valNode,
70003
+ "numCache"
70004
+ ),
70005
+ "formatCode"
70006
+ ) ?? ""
70007
+ ).trim();
69918
70008
  const seriesShapeProperties = this.xmlLookupService.getChildByLocalName(seriesNode, "spPr");
69919
70009
  const seriesColor23 = this.parseColor(
69920
70010
  this.xmlLookupService.getChildByLocalName(seriesShapeProperties, "solidFill")
@@ -69946,6 +70036,7 @@ var PptxHandlerRuntime90 = class extends PptxHandlerRuntime89 {
69946
70036
  name: seriesName.trim().length > 0 ? seriesName : `Series ${seriesIndex + 1}`,
69947
70037
  values: fallbackValues,
69948
70038
  ...blanks ? { blanks } : {},
70039
+ ...seriesNumberFormat ? { numberFormat: seriesNumberFormat } : {},
69949
70040
  color: seriesColor23,
69950
70041
  ...trendlines.length > 0 ? { trendlines } : {},
69951
70042
  ...errBars.length > 0 ? { errBars } : {},
@@ -79972,9 +80063,9 @@ var SlideMetadataRenderer = class {
79972
80063
  const clickGroups = this.groupByClickSequence(items);
79973
80064
  const lines = ["### Animations"];
79974
80065
  for (let gi = 0; gi < clickGroups.length; gi += 1) {
79975
- const group = clickGroups[gi];
80066
+ const group2 = clickGroups[gi];
79976
80067
  lines.push(`- **Click ${gi + 1}:**`);
79977
- for (const anim of group) {
80068
+ for (const anim of group2) {
79978
80069
  lines.push(` - ${this.summariseAnimation(anim)}`);
79979
80070
  }
79980
80071
  }
@@ -80870,7 +80961,7 @@ var TextSegmentRenderer = class {
80870
80961
  return "";
80871
80962
  }
80872
80963
  const paragraphs = this.groupParagraphs(segments);
80873
- const renderedParagraphs = paragraphs.map((group) => this.renderParagraph(group, options)).filter((paragraph) => paragraph.text.length > 0);
80964
+ const renderedParagraphs = paragraphs.map((group2) => this.renderParagraph(group2, options)).filter((paragraph) => paragraph.text.length > 0);
80874
80965
  if (renderedParagraphs.length === 0) {
80875
80966
  return "";
80876
80967
  }
@@ -80902,7 +80993,7 @@ var TextSegmentRenderer = class {
80902
80993
  plainText(segments, options = {}) {
80903
80994
  const paragraphs = this.groupParagraphs(segments);
80904
80995
  const rendered = paragraphs.map(
80905
- (group) => group.segments.map((segment) => {
80996
+ (group2) => group2.segments.map((segment) => {
80906
80997
  const base = this.resolvePlainSegmentText(segment, options);
80907
80998
  if (segment.rubyText) {
80908
80999
  return `${base}(${segment.rubyText})`;
@@ -80932,8 +81023,8 @@ var TextSegmentRenderer = class {
80932
81023
  }
80933
81024
  return groups;
80934
81025
  }
80935
- renderParagraph(group, options) {
80936
- let rawText = group.segments.map((segment) => this.renderSegment(segment, options)).join("");
81026
+ renderParagraph(group2, options) {
81027
+ let rawText = group2.segments.map((segment) => this.renderSegment(segment, options)).join("");
80937
81028
  if (options.htmlFormatting) {
80938
81029
  rawText = rawText.replace(/<\/strong><strong>/g, "").replace(/<\/em><em>/g, "").replace(/<\/s><s>/g, "");
80939
81030
  } else {
@@ -80947,10 +81038,10 @@ var TextSegmentRenderer = class {
80947
81038
  return { text: "", isListItem: false };
80948
81039
  }
80949
81040
  if (!options.disableLists && !options.inlineMode) {
80950
- const bullet = group.segments.find((segment) => Boolean(segment.bulletInfo))?.bulletInfo;
81041
+ const bullet = group2.segments.find((segment) => Boolean(segment.bulletInfo))?.bulletInfo;
80951
81042
  if (bullet && !bullet.none) {
80952
- const level = resolveListLevel(bullet, group.index, options.paragraphIndents);
80953
- const marker = resolveListMarker(bullet, group.index);
81043
+ const level = resolveListLevel(bullet, group2.index, options.paragraphIndents);
81044
+ const marker = resolveListMarker(bullet, group2.index);
80954
81045
  const alreadyNumbered = bullet.autoNumType && /^\d+[.)]\s/.test(rawText);
80955
81046
  const prefix = alreadyNumbered ? "" : `${marker} `;
80956
81047
  if (options.htmlFormatting) {
@@ -80966,7 +81057,7 @@ var TextSegmentRenderer = class {
80966
81057
  };
80967
81058
  }
80968
81059
  }
80969
- const align = group.segments[0]?.style.align;
81060
+ const align = group2.segments[0]?.style.align;
80970
81061
  if (!options.disableAlignment && !options.inlineMode && align && align !== "left") {
80971
81062
  return {
80972
81063
  text: `<p align="${align}">${rawText}</p>`,
@@ -83815,8 +83906,8 @@ function buildStrokeOutline(element) {
83815
83906
  function suppressesCssBorder(element) {
83816
83907
  return buildStrokeOutline(element) !== void 0;
83817
83908
  }
83818
- function getGroupChildParentFill(group) {
83819
- return group.type === "group" ? group.groupFill : void 0;
83909
+ function getGroupChildParentFill(group2) {
83910
+ return group2.type === "group" ? group2.groupFill : void 0;
83820
83911
  }
83821
83912
  function resolveGroupChildFill(child22, parentGroupFill) {
83822
83913
  if (!parentGroupFill || !hasShapeProperties(child22) || child22.shapeStyle?.fillMode !== "group") {
@@ -86288,11 +86379,11 @@ var LatexParser = class {
86288
86379
  return tryParseScripts(this, base);
86289
86380
  }
86290
86381
  if (tok.type === "group_start") {
86291
- const group = this.parseGroup();
86292
- if (group.length === 0) {
86382
+ const group2 = this.parseGroup();
86383
+ if (group2.length === 0) {
86293
86384
  return null;
86294
86385
  }
86295
- const base = group.length === 1 ? group[0] : this.wrapE(group);
86386
+ const base = group2.length === 1 ? group2[0] : this.wrapE(group2);
86296
86387
  return tryParseScripts(this, base);
86297
86388
  }
86298
86389
  if (tok.type === "command") {
@@ -86700,6 +86791,273 @@ function latexToMathMl(source) {
86700
86791
  function compileEquationTemplateMathMl() {
86701
86792
  return EQUATION_TEMPLATES.map((tmpl) => latexToMathMl(tmpl.latex));
86702
86793
  }
86794
+ var NICE_STEPS = [1, 2, 2.5, 5, 10];
86795
+ var HEADROOM = 0.05;
86796
+ var ZERO_ANCHOR_RATIO = 5 / 6;
86797
+ function niceAxisStep(value) {
86798
+ if (!Number.isFinite(value) || value <= 0) {
86799
+ return 1;
86800
+ }
86801
+ const exponent = Math.floor(Math.log10(value));
86802
+ const power = 10 ** exponent;
86803
+ const mantissa = value / power;
86804
+ const step = NICE_STEPS.find((candidate) => mantissa <= candidate + 1e-12) ?? 10;
86805
+ return step * power;
86806
+ }
86807
+ function snap(value, unit, direction) {
86808
+ const scaled = value / unit;
86809
+ const rounded = direction === "up" ? Math.ceil(scaled - 1e-9) : Math.floor(scaled + 1e-9);
86810
+ return rounded * unit;
86811
+ }
86812
+ function niceValueAxisBounds(dataMin, dataMax, targetIntervals = 4) {
86813
+ if (!Number.isFinite(dataMin) || !Number.isFinite(dataMax)) {
86814
+ return { min: 0, max: 1, majorUnit: 0.5 };
86815
+ }
86816
+ const low = Math.min(dataMin, dataMax);
86817
+ const high = Math.max(dataMin, dataMax);
86818
+ const intervals = Math.max(1, Math.round(targetIntervals));
86819
+ if (low === high) {
86820
+ if (low === 0) {
86821
+ return { min: 0, max: 1, majorUnit: 1 / intervals };
86822
+ }
86823
+ const unit2 = niceAxisStep(Math.abs(low) / intervals);
86824
+ return low > 0 ? { min: 0, max: snap(low, unit2, "up") || unit2, majorUnit: unit2 } : { min: snap(low, unit2, "down"), max: 0, majorUnit: unit2 };
86825
+ }
86826
+ const dataSpan = high - low;
86827
+ const padding = dataSpan * HEADROOM;
86828
+ let paddedMin;
86829
+ let paddedMax;
86830
+ if (low >= 0) {
86831
+ paddedMin = low < high * ZERO_ANCHOR_RATIO ? 0 : low - padding;
86832
+ paddedMax = high + padding;
86833
+ } else if (high <= 0) {
86834
+ paddedMax = high > low * ZERO_ANCHOR_RATIO ? 0 : high + padding;
86835
+ paddedMin = low - padding;
86836
+ } else {
86837
+ paddedMin = low - padding;
86838
+ paddedMax = high + padding;
86839
+ }
86840
+ const unit = niceAxisStep((paddedMax - paddedMin) / intervals);
86841
+ const min = paddedMin === 0 ? 0 : snap(paddedMin, unit, "down");
86842
+ let max = paddedMax === 0 ? 0 : snap(paddedMax, unit, "up");
86843
+ if (max <= min) {
86844
+ max = min + unit;
86845
+ }
86846
+ return { min, max, majorUnit: unit };
86847
+ }
86848
+ var GENERAL = /* @__PURE__ */ new Set(["", "general", "@"]);
86849
+ function sections(code) {
86850
+ const out = [];
86851
+ let current = "";
86852
+ let inQuotes = false;
86853
+ for (let i = 0; i < code.length; i += 1) {
86854
+ const ch = code[i];
86855
+ if (ch === '"') {
86856
+ inQuotes = !inQuotes;
86857
+ current += ch;
86858
+ continue;
86859
+ }
86860
+ if (ch === "\\") {
86861
+ current += ch + (code[i + 1] ?? "");
86862
+ i += 1;
86863
+ continue;
86864
+ }
86865
+ if (ch === ";" && !inQuotes) {
86866
+ out.push(current);
86867
+ current = "";
86868
+ continue;
86869
+ }
86870
+ current += ch;
86871
+ }
86872
+ out.push(current);
86873
+ return out;
86874
+ }
86875
+ function sectionFor(value, parts) {
86876
+ if (parts.length === 1) {
86877
+ return { code: parts[0], forcePositive: false };
86878
+ }
86879
+ if (value < 0 && parts[1] !== void 0) {
86880
+ return { code: parts[1], forcePositive: true };
86881
+ }
86882
+ if (value === 0 && parts[2] !== void 0) {
86883
+ return { code: parts[2], forcePositive: false };
86884
+ }
86885
+ return { code: parts[0], forcePositive: false };
86886
+ }
86887
+ var PLACEHOLDER = /[0#?]/u;
86888
+ function parsePattern(code) {
86889
+ let scale = 1;
86890
+ let scientific = false;
86891
+ const chars = [];
86892
+ let inQuotes = false;
86893
+ for (let i = 0; i < code.length; i += 1) {
86894
+ const ch = code[i];
86895
+ if (ch === '"') {
86896
+ inQuotes = !inQuotes;
86897
+ continue;
86898
+ }
86899
+ if (inQuotes) {
86900
+ chars.push({ ch, literal: true });
86901
+ continue;
86902
+ }
86903
+ if (ch === "\\" || ch === "*" || ch === "_") {
86904
+ const next = code[i + 1];
86905
+ i += 1;
86906
+ if (ch === "\\" && next !== void 0) {
86907
+ chars.push({ ch: next, literal: true });
86908
+ }
86909
+ continue;
86910
+ }
86911
+ if (ch === "%") {
86912
+ scale *= 100;
86913
+ chars.push({ ch, literal: true });
86914
+ continue;
86915
+ }
86916
+ if (ch === "E" && (code[i + 1] === "+" || code[i + 1] === "-")) {
86917
+ scientific = true;
86918
+ chars.push({ ch: "E", literal: false });
86919
+ i += 1;
86920
+ continue;
86921
+ }
86922
+ if (ch === "[") {
86923
+ const close = code.indexOf("]", i);
86924
+ i = close === -1 ? code.length : close;
86925
+ continue;
86926
+ }
86927
+ chars.push({ ch, literal: false });
86928
+ }
86929
+ const firstDigit = chars.findIndex((c) => !c.literal && PLACEHOLDER.test(c.ch));
86930
+ if (firstDigit === -1) {
86931
+ return void 0;
86932
+ }
86933
+ let lastDigit = firstDigit;
86934
+ for (let i = chars.length - 1; i >= firstDigit; i -= 1) {
86935
+ const c = chars[i];
86936
+ if (!c.literal && (PLACEHOLDER.test(c.ch) || c.ch === "." || c.ch === "," || c.ch === "E")) {
86937
+ lastDigit = i;
86938
+ break;
86939
+ }
86940
+ }
86941
+ const numeric = chars.slice(firstDigit, lastDigit + 1);
86942
+ const prefix = chars.slice(0, firstDigit).map((c) => c.ch).join("");
86943
+ const suffix = chars.slice(lastDigit + 1).map((c) => c.ch).join("");
86944
+ let grouped = false;
86945
+ let intDigits = 0;
86946
+ let required = 0;
86947
+ let optional = 0;
86948
+ let afterPoint = false;
86949
+ let inExponent = false;
86950
+ for (let i = 0; i < numeric.length; i += 1) {
86951
+ const { ch, literal } = numeric[i];
86952
+ if (literal) {
86953
+ continue;
86954
+ }
86955
+ if (ch === "E") {
86956
+ inExponent = true;
86957
+ continue;
86958
+ }
86959
+ if (inExponent) {
86960
+ continue;
86961
+ }
86962
+ if (ch === ".") {
86963
+ afterPoint = true;
86964
+ continue;
86965
+ }
86966
+ if (ch === ",") {
86967
+ const next = numeric.slice(i + 1).find((c) => !c.literal);
86968
+ if (!next || next.ch === "." || !PLACEHOLDER.test(next.ch)) {
86969
+ scale /= 1e3;
86970
+ } else {
86971
+ grouped = true;
86972
+ }
86973
+ continue;
86974
+ }
86975
+ if (!PLACEHOLDER.test(ch)) {
86976
+ continue;
86977
+ }
86978
+ if (afterPoint) {
86979
+ if (ch === "0") {
86980
+ required += 1;
86981
+ } else {
86982
+ optional += 1;
86983
+ }
86984
+ } else if (ch === "0") {
86985
+ intDigits += 1;
86986
+ }
86987
+ }
86988
+ return {
86989
+ prefix,
86990
+ suffix,
86991
+ intDigits,
86992
+ decimals: { required, optional },
86993
+ grouped,
86994
+ scale,
86995
+ scientific
86996
+ };
86997
+ }
86998
+ function group(intPart) {
86999
+ return intPart.replace(/\B(?=(\d{3})+(?!\d))/gu, ",");
87000
+ }
87001
+ function applyPattern(value, pattern, forcePositive) {
87002
+ const scaled = value * pattern.scale;
87003
+ const magnitude = forcePositive ? Math.abs(scaled) : scaled;
87004
+ if (pattern.scientific) {
87005
+ const digits = pattern.decimals.required + pattern.decimals.optional;
87006
+ const exponential = magnitude.toExponential(digits);
87007
+ const [mantissa, exponent] = exponential.split("e");
87008
+ const sign = exponent.startsWith("-") ? "-" : "+";
87009
+ const power = Math.abs(Number(exponent)).toString().padStart(2, "0");
87010
+ return `${pattern.prefix}${mantissa}E${sign}${power}${pattern.suffix}`;
87011
+ }
87012
+ const maxDecimals = pattern.decimals.required + pattern.decimals.optional;
87013
+ let body = magnitude.toFixed(maxDecimals);
87014
+ if (pattern.decimals.optional > 0) {
87015
+ body = body.replace(/(\.\d*?)0+$/u, "$1").replace(/\.$/u, "");
87016
+ const [, frac = ""] = body.split(".");
87017
+ if (frac.length < pattern.decimals.required) {
87018
+ body = Number(body).toFixed(pattern.decimals.required);
87019
+ }
87020
+ }
87021
+ const [rawIntPart, fracPart] = body.split(".");
87022
+ let intPart = rawIntPart;
87023
+ const negative = intPart.startsWith("-");
87024
+ if (negative) {
87025
+ intPart = intPart.slice(1);
87026
+ }
87027
+ if (intPart.length < pattern.intDigits) {
87028
+ intPart = intPart.padStart(pattern.intDigits, "0");
87029
+ }
87030
+ if (pattern.intDigits === 0 && intPart === "0" && fracPart !== void 0) {
87031
+ intPart = "";
87032
+ }
87033
+ if (pattern.grouped) {
87034
+ intPart = group(intPart);
87035
+ }
87036
+ const number = fracPart === void 0 ? intPart : `${intPart}.${fracPart}`;
87037
+ return `${negative ? "-" : ""}${pattern.prefix}${number}${pattern.suffix}`;
87038
+ }
87039
+ function formatChartNumber(value, formatCode) {
87040
+ if (!Number.isFinite(value)) {
87041
+ return void 0;
87042
+ }
87043
+ const code = (formatCode ?? "").trim();
87044
+ if (GENERAL.has(code.toLowerCase())) {
87045
+ return void 0;
87046
+ }
87047
+ if (/(?:^|[^\\"])(?:yy|mm?m|dd?|hh|ss)/iu.test(code) && !/[0#?]/u.test(code)) {
87048
+ return void 0;
87049
+ }
87050
+ const { code: section, forcePositive } = sectionFor(value, sections(code));
87051
+ const pattern = parsePattern(section);
87052
+ if (!pattern) {
87053
+ return void 0;
87054
+ }
87055
+ try {
87056
+ return applyPattern(value, pattern, forcePositive);
87057
+ } catch {
87058
+ return void 0;
87059
+ }
87060
+ }
86703
87061
  var ACCENT1 = "#4472C4";
86704
87062
  var ACCENT2 = "#ED7D31";
86705
87063
  var ACCENT3 = "#A5A5A5";
@@ -86830,12 +87188,11 @@ function computeValueRange(series) {
86830
87188
  if (allValues.length === 0) {
86831
87189
  return { min: 0, max: 1, span: 1 };
86832
87190
  }
86833
- const dataMin = Math.min(...allValues);
86834
- const dataMax = Math.max(...allValues);
86835
- const min = Math.min(dataMin, 0);
86836
- const max = Math.max(dataMax, 0);
86837
- const span = Math.max(max - min, 1);
86838
- return { min, max, span };
87191
+ const { min, max, majorUnit } = niceValueAxisBounds(
87192
+ Math.min(...allValues),
87193
+ Math.max(...allValues)
87194
+ );
87195
+ return { min, max, span: Math.max(max - min, Number.EPSILON), majorUnit };
86839
87196
  }
86840
87197
  function valueToY(val2, range, topY, bottomY) {
86841
87198
  const usable = bottomY - topY;
@@ -86851,7 +87208,11 @@ function valueToY(val2, range, topY, bottomY) {
86851
87208
  }
86852
87209
  return range.reverseOrder ? topY + ratio * usable : bottomY - ratio * usable;
86853
87210
  }
86854
- function formatAxisValue(val2) {
87211
+ function formatAxisValue(val2, formatCode) {
87212
+ const formatted = formatChartNumber(val2, formatCode);
87213
+ if (formatted !== void 0) {
87214
+ return formatted;
87215
+ }
86855
87216
  if (Math.abs(val2) >= 1e6) {
86856
87217
  return `${(val2 / 1e6).toFixed(1)}M`;
86857
87218
  }
@@ -86907,6 +87268,19 @@ function computeLayout(elementWidth, elementHeight, style, hasAxes, legendPos, o
86907
87268
  svgHeight
86908
87269
  };
86909
87270
  }
87271
+ var DEFAULT_CHART_AREA_FILL = "#0f172a11";
87272
+ function resolve(fill, fallback) {
87273
+ if (fill === "none") {
87274
+ return void 0;
87275
+ }
87276
+ return fill ?? fallback;
87277
+ }
87278
+ function chartAreaFill(chartData) {
87279
+ return resolve(chartData?.style?.chartAreaFill, DEFAULT_CHART_AREA_FILL);
87280
+ }
87281
+ function plotAreaFill(chartData) {
87282
+ return resolve(chartData?.style?.plotAreaFill, void 0);
87283
+ }
86910
87284
  var LOG_EXPONENT_TOLERANCE = 1e-12;
86911
87285
  function computeLogValueRange(series, logBase) {
86912
87286
  const allValues = series.flatMap((item) => item.values).filter((value) => value > 0);
@@ -86935,6 +87309,7 @@ function computeValueRangeForAxis(series, axis) {
86935
87309
  const validMax = typeof axis?.max === "number" && Number.isFinite(axis.max) && (!logBase || axis.max > 0) ? axis.max : void 0;
86936
87310
  const min = validMin ?? automatic.min;
86937
87311
  let max = validMax ?? automatic.max;
87312
+ const majorUnit = validMin === void 0 && validMax === void 0 ? automatic.majorUnit : void 0;
86938
87313
  if (max <= min) {
86939
87314
  max = logBase ? min * logBase : min + 1;
86940
87315
  }
@@ -86943,6 +87318,7 @@ function computeValueRangeForAxis(series, axis) {
86943
87318
  min,
86944
87319
  max,
86945
87320
  span: Math.max(span, Number.EPSILON),
87321
+ ...majorUnit !== void 0 ? { majorUnit } : {},
86946
87322
  ...logBase ? { logScale: true, logBase } : {},
86947
87323
  ...axis?.orientation === "maxMin" ? { reverseOrder: true } : {}
86948
87324
  };
@@ -86982,6 +87358,10 @@ function generateAxisTicks(range, axis, defaultIntervals) {
86982
87358
  if (explicit.length > 0) {
86983
87359
  return explicit;
86984
87360
  }
87361
+ const automatic = generateIntervalTicks(range, range.majorUnit ?? 0);
87362
+ if (automatic.length > 0) {
87363
+ return automatic;
87364
+ }
86985
87365
  return Array.from(
86986
87366
  { length: defaultIntervals + 1 },
86987
87367
  (_, index) => range.min + range.span / defaultIntervals * index
@@ -87550,7 +87930,7 @@ function formatTick(val2, axis) {
87550
87930
  if (axis?.displayUnits) {
87551
87931
  return formatAxisValueWithUnits(val2, axis);
87552
87932
  }
87553
- return formatAxisValue2(val2);
87933
+ return formatAxisValue2(val2, axis?.numFmt?.formatCode);
87554
87934
  }
87555
87935
  function buildPrimaryAxis(range, layout, axis, axisX = layout.plotLeft) {
87556
87936
  const gridlines = [];
@@ -87747,7 +88127,11 @@ function hasRicherAxisFeatures(chartData) {
87747
88127
  return Boolean(
87748
88128
  chartData.dataTable || chartData.axes?.some(
87749
88129
  (axis) => axis.crosses !== void 0 || axis.crossesAt !== void 0 || axis.crossBetween !== void 0 || axis.axisType === "valAx" && Boolean(
87750
- axis.logScale || axis.displayUnits || axis.axPos === "r" || axis.orientation === "maxMin" || axis.majorUnit !== void 0 || axis.minorUnit !== void 0 || axis.minorGridlines || axis.majorTickMark !== void 0 || axis.minorTickMark !== void 0 || axis.tickLblPos !== void 0
88130
+ axis.logScale || axis.displayUnits || // A `c:numFmt` is only honoured on the `buildPrimaryAxis`
88131
+ // path; the fast path has no axis to read it from. The two
88132
+ // agree tick-for-tick when no log scale or display unit is
88133
+ // in play, so routing a formatted axis here costs nothing.
88134
+ axis.numFmt?.formatCode || axis.axPos === "r" || axis.orientation === "maxMin" || axis.majorUnit !== void 0 || axis.minorUnit !== void 0 || axis.minorGridlines || axis.majorTickMark !== void 0 || axis.minorTickMark !== void 0 || axis.tickLblPos !== void 0
87751
88135
  )
87752
88136
  )
87753
88137
  );
@@ -87857,7 +88241,7 @@ function buildBars(chartData, catCount, layout, primaryRange, secondaryRange, se
87857
88241
  kind: "text",
87858
88242
  x: x + singleBarWidth / 2,
87859
88243
  y: val2 >= 0 ? y - 4 : y + h + 10,
87860
- text: formatAxisValue2(val2),
88244
+ text: formatAxisValue2(val2, series[si].numberFormat),
87861
88245
  fontSize: 7,
87862
88246
  fill: "#334155",
87863
88247
  textAnchor: "middle"
@@ -87962,7 +88346,7 @@ function pushClusteredStackedLabels(series, sourceIndices2, catCount, layout, ra
87962
88346
  kind: "text",
87963
88347
  x,
87964
88348
  y: labelY,
87965
- text: formatAxisValue2(val2),
88349
+ text: formatAxisValue2(val2, series[si].numberFormat),
87966
88350
  fontSize: 7,
87967
88351
  fill: "#334155",
87968
88352
  textAnchor: "middle"
@@ -88248,7 +88632,7 @@ function buildLines(chartData, catCount, layout, primaryRange, secondaryRange, s
88248
88632
  kind: "text",
88249
88633
  x: pt.x,
88250
88634
  y: pt.y - 7,
88251
- text: formatAxisValue2(val2),
88635
+ text: formatAxisValue2(val2, series.numberFormat),
88252
88636
  fontSize: 7,
88253
88637
  fill: "#334155",
88254
88638
  textAnchor: "middle"
@@ -88320,7 +88704,7 @@ function buildAreas(chartData, catCount, layout, range, sourceIndices2, xPositio
88320
88704
  kind: "text",
88321
88705
  x: pt.x,
88322
88706
  y: pt.y - 6,
88323
- text: formatAxisValue2(val2),
88707
+ text: formatAxisValue2(val2, series.numberFormat),
88324
88708
  fontSize: 7,
88325
88709
  fill: "#334155",
88326
88710
  textAnchor: "middle"
@@ -88365,7 +88749,7 @@ function buildScatter(chartData, layout, range) {
88365
88749
  kind: "text",
88366
88750
  x: dot.cx,
88367
88751
  y: dot.cy - 6,
88368
- text: formatAxisValue2(val2),
88752
+ text: formatAxisValue2(val2, series.numberFormat),
88369
88753
  fontSize: 7,
88370
88754
  fill: "#334155",
88371
88755
  textAnchor: "middle"
@@ -88412,7 +88796,7 @@ function buildBubbles(chartData, layout, range) {
88412
88796
  kind: "text",
88413
88797
  x: dot.cx,
88414
88798
  y: dot.cy - 10,
88415
- text: formatAxisValue2(val2),
88799
+ text: formatAxisValue2(val2, series.numberFormat),
88416
88800
  fontSize: 7,
88417
88801
  fill: "#334155",
88418
88802
  textAnchor: "middle"
@@ -88566,18 +88950,18 @@ function buildMultiLevelCategoryLabels(categoryLabels, categoryLevels, sourceInd
88566
88950
  const bandHeight = Math.max(axis?.fontSize ?? 8, 8) + 4;
88567
88951
  return levels.flatMap((level, levelIndex) => {
88568
88952
  const values = sourceIndices2.map((sourceIndex) => level[sourceIndex] ?? "");
88569
- return groupedLabels(values).flatMap((group) => {
88570
- if (!group.text || group.start % skip !== 0) {
88953
+ return groupedLabels(values).flatMap((group2) => {
88954
+ if (!group2.text || group2.start % skip !== 0) {
88571
88955
  return [];
88572
88956
  }
88573
- const startX = categoryX2(group.start, sourceIndices2.length, layout, spacing);
88574
- const endX = categoryX2(group.end, sourceIndices2.length, layout, spacing);
88957
+ const startX = categoryX2(group2.start, sourceIndices2.length, layout, spacing);
88958
+ const endX = categoryX2(group2.end, sourceIndices2.length, layout, spacing);
88575
88959
  return [
88576
88960
  {
88577
88961
  kind: "text",
88578
88962
  x: (startX + endX) / 2,
88579
88963
  y: labelY + direction * (offset + levelIndex * bandHeight),
88580
- text: group.text,
88964
+ text: group2.text,
88581
88965
  textAnchor,
88582
88966
  ...chartAxisTextStyle(axis)
88583
88967
  }
@@ -89822,7 +90206,7 @@ function buildComboViewModel(element, chartData, categoryLabels) {
89822
90206
  kind: "text",
89823
90207
  x: point.x,
89824
90208
  y: point.y - 7,
89825
- text: formatAxisValue2(point.value),
90209
+ text: formatAxisValue2(point.value, series.numberFormat),
89826
90210
  fontSize: 7,
89827
90211
  fill: "#334155",
89828
90212
  textAnchor: "middle"
@@ -89877,7 +90261,7 @@ function appendBarLabels(series, chartData, layout, catCount, range, sourceIndic
89877
90261
  kind: "text",
89878
90262
  x: xPositions?.[displayIndex] ?? layout.plotLeft + groupWidth * displayIndex + offset + barWidth / 2,
89879
90263
  y: value >= 0 ? Math.min(zeroY, valueY) - 4 : Math.max(zeroY, valueY) + 10,
89880
- text: formatAxisValue2(value),
90264
+ text: formatAxisValue2(value, series.numberFormat),
89881
90265
  fontSize: 7,
89882
90266
  fill: "#334155",
89883
90267
  textAnchor: "middle"
@@ -90914,7 +91298,7 @@ function isOutsidePosition(position2) {
90914
91298
  return position2 === "outEnd" || position2 === "bestFit";
90915
91299
  }
90916
91300
  function buildPieDataLabels(params) {
90917
- const { slices, values, cx, cy, outerR, position: position2, showLeaderLines } = params;
91301
+ const { slices, values, cx, cy, outerR, position: position2, showLeaderLines, numberFormat } = params;
90918
91302
  const outside = isOutsidePosition(position2);
90919
91303
  const labels = [];
90920
91304
  const leaderLines = [];
@@ -90928,7 +91312,7 @@ function buildPieDataLabels(params) {
90928
91312
  kind: "text",
90929
91313
  x: slice.labelX,
90930
91314
  y: slice.labelY,
90931
- text: formatAxisValue2(val2),
91315
+ text: formatAxisValue2(val2, numberFormat),
90932
91316
  fontSize: 8,
90933
91317
  fill: "#ffffff",
90934
91318
  textAnchor: "middle",
@@ -90948,7 +91332,7 @@ function buildPieDataLabels(params) {
90948
91332
  kind: "text",
90949
91333
  x: labelX + (cos >= 0 ? 2 : -2),
90950
91334
  y: labelY,
90951
- text: formatAxisValue2(val2),
91335
+ text: formatAxisValue2(val2, numberFormat),
90952
91336
  fontSize: 8,
90953
91337
  fill: "#334155",
90954
91338
  textAnchor: anchor,
@@ -92217,10 +92601,8 @@ function computeValueRange2(series) {
92217
92601
  if (dataMin === Number.POSITIVE_INFINITY) {
92218
92602
  return { min: 0, max: 1, span: 1 };
92219
92603
  }
92220
- const min = Math.min(dataMin, 0);
92221
- const max = Math.max(dataMax, 0);
92222
- const span = Math.max(max - min, 1);
92223
- return { min, max, span };
92604
+ const { min, max, majorUnit } = niceValueAxisBounds(dataMin, dataMax);
92605
+ return { min, max, span: Math.max(max - min, Number.EPSILON), majorUnit };
92224
92606
  }
92225
92607
  function computeStackedValueRange(series, catCount) {
92226
92608
  let maxSum = 0;
@@ -92239,10 +92621,8 @@ function computeStackedValueRange(series, catCount) {
92239
92621
  maxSum = Math.max(maxSum, pos2);
92240
92622
  minSum = Math.min(minSum, neg);
92241
92623
  }
92242
- const min = Math.min(minSum, 0);
92243
- const max = Math.max(maxSum, 0);
92244
- const span = Math.max(max - min, 1);
92245
- return { min, max, span };
92624
+ const { min, max, majorUnit } = niceValueAxisBounds(Math.min(minSum, 0), Math.max(maxSum, 0));
92625
+ return { min, max, span: Math.max(max - min, Number.EPSILON), majorUnit };
92246
92626
  }
92247
92627
  function valueToY2(val2, range, topY, bottomY) {
92248
92628
  const usable = bottomY - topY;
@@ -92258,7 +92638,11 @@ function valueToY2(val2, range, topY, bottomY) {
92258
92638
  }
92259
92639
  return range.reverseOrder ? topY + ratio * usable : bottomY - ratio * usable;
92260
92640
  }
92261
- function formatAxisValue2(val2) {
92641
+ function formatAxisValue2(val2, formatCode) {
92642
+ const formatted = formatChartNumber(val2, formatCode);
92643
+ if (formatted !== void 0) {
92644
+ return formatted;
92645
+ }
92262
92646
  if (Math.abs(val2) >= 1e6) {
92263
92647
  return `${(val2 / 1e6).toFixed(1)}M`;
92264
92648
  }
@@ -92320,11 +92704,23 @@ var GRIDLINE_COLOR2 = "#e2e8f0";
92320
92704
  var AXIS_LABEL_COLOR = "#64748b";
92321
92705
  var ZERO_LINE_COLOR = "#94a3b8";
92322
92706
  var TICK_COUNT2 = 5;
92707
+ function axisTickValues(range) {
92708
+ const unit = range.majorUnit;
92709
+ if (unit !== void 0 && Number.isFinite(unit) && unit > 0 && !range.logScale) {
92710
+ const steps = Math.round((range.max - range.min) / unit);
92711
+ if (steps >= 1 && steps <= 100) {
92712
+ return Array.from({ length: steps + 1 }, (_unused, index) => range.min + unit * index);
92713
+ }
92714
+ }
92715
+ return Array.from(
92716
+ { length: TICK_COUNT2 + 1 },
92717
+ (_unused, index) => range.min + range.span / TICK_COUNT2 * index
92718
+ );
92719
+ }
92323
92720
  function buildGridlinesAndLabels(range, layout) {
92324
92721
  const gridlines = [];
92325
92722
  const axisLabels = [];
92326
- for (let i = 0; i <= TICK_COUNT2; i++) {
92327
- const val2 = range.min + range.span / TICK_COUNT2 * i;
92723
+ for (const val2 of axisTickValues(range)) {
92328
92724
  const y = valueToY2(val2, range, layout.plotTop, layout.plotBottom);
92329
92725
  gridlines.push({
92330
92726
  kind: "line",
@@ -92642,13 +93038,26 @@ function buildChartViewModel(element) {
92642
93038
  const longestLen = chartData.series.reduce((m, s) => Math.max(m, s.values.length), 0);
92643
93039
  const categoryLabels = chartData.categories.length > 0 ? chartData.categories : Array.from({ length: longestLen }, (_, i) => String(i + 1));
92644
93040
  if (chartType === "ofPie") {
92645
- return withUserShapeOverlay(buildOfPieViewModel(element, chartData, categoryLabels), chartData);
93041
+ return withChartAreaFill(
93042
+ withUserShapeOverlay(buildOfPieViewModel(element, chartData, categoryLabels), chartData),
93043
+ chartData
93044
+ );
92646
93045
  }
92647
93046
  const flat = buildFlatViewModel(element, chartData, categoryLabels, kind);
92648
93047
  if (is3DChartType(chartType)) {
92649
- return withUserShapeOverlay(applyChart3DDepth(flat, chartType, chartData.view3D), chartData);
93048
+ return withChartAreaFill(
93049
+ withUserShapeOverlay(applyChart3DDepth(flat, chartType, chartData.view3D), chartData),
93050
+ chartData
93051
+ );
92650
93052
  }
92651
- return withUserShapeOverlay(flat, chartData);
93053
+ return withChartAreaFill(withUserShapeOverlay(flat, chartData), chartData);
93054
+ }
93055
+ function withChartAreaFill(vm, chartData) {
93056
+ return {
93057
+ ...vm,
93058
+ areaFill: chartAreaFill(chartData),
93059
+ plotFill: plotAreaFill(chartData)
93060
+ };
92652
93061
  }
92653
93062
  function withUserShapeOverlay(vm, chartData) {
92654
93063
  const overlay = buildChartUserShapeOverlay(chartData.userShapes, vm.svgWidth, vm.svgHeight);
@@ -92709,6 +93118,8 @@ function buildFallbackViewModel(width, height, label) {
92709
93118
  return {
92710
93119
  svgWidth,
92711
93120
  svgHeight,
93121
+ // No chart data to read a fill from, so the historical wash stands.
93122
+ areaFill: DEFAULT_CHART_AREA_FILL,
92712
93123
  title: void 0,
92713
93124
  titleX: svgWidth / 2,
92714
93125
  titleY: 14,
@@ -92780,7 +93191,8 @@ function buildPieViewModel(element, chartData, categoryLabels, isDoughnut) {
92780
93191
  cy,
92781
93192
  outerR,
92782
93193
  position: chartData.style.dataLabels?.position,
92783
- showLeaderLines: chartData.style.dataLabels?.showLeaderLines
93194
+ showLeaderLines: chartData.style.dataLabels?.showLeaderLines,
93195
+ numberFormat: chartData.series[0]?.numberFormat
92784
93196
  });
92785
93197
  dataLabels.push(...labelResult.labels);
92786
93198
  primitives.push(...labelResult.leaderLines);
@@ -92899,7 +93311,7 @@ function buildRadarViewModel(element, chartData, categoryLabels) {
92899
93311
  kind: "text",
92900
93312
  x: p.x,
92901
93313
  y: p.y - 8,
92902
- text: formatAxisValue2(val2),
93314
+ text: formatAxisValue2(val2, series.numberFormat),
92903
93315
  fontSize: 7,
92904
93316
  fill: "#334155",
92905
93317
  textAnchor: "middle"
@@ -93949,8 +94361,8 @@ function finalizeClickGroup(steps, options) {
93949
94361
  maxEnd = end;
93950
94362
  }
93951
94363
  }
93952
- const group = { steps, totalDurationMs: maxEnd };
93953
- return group;
94364
+ const group2 = { steps, totalDurationMs: maxEnd };
94365
+ return group2;
93954
94366
  }
93955
94367
  var CLICK_EVENTS = /* @__PURE__ */ new Set(["onClick", "onNext"]);
93956
94368
  var HOVER_EVENTS = /* @__PURE__ */ new Set(["onMouseOver"]);
@@ -94524,11 +94936,11 @@ function buildTimeline(nativeAnimations) {
94524
94936
  const isFirstAnimation = clickGroups.length === 0 && currentGroup.length === 0;
94525
94937
  if (isOnClick || isFirstAnimation) {
94526
94938
  if (currentGroup.length > 0) {
94527
- const group = finalizeClickGroup(currentGroup);
94939
+ const group2 = finalizeClickGroup(currentGroup);
94528
94940
  if (currentGroupAutoStart || !currentGroupIsClick && clickGroups.length > 0) {
94529
- group.autoAdvance = true;
94941
+ group2.autoAdvance = true;
94530
94942
  }
94531
- clickGroups.push(group);
94943
+ clickGroups.push(group2);
94532
94944
  }
94533
94945
  currentGroup = [];
94534
94946
  currentGroupIsClick = isOnClick || isFirstAnimation;
@@ -94572,15 +94984,15 @@ function buildTimeline(nativeAnimations) {
94572
94984
  }
94573
94985
  }
94574
94986
  if (currentGroup.length > 0) {
94575
- const group = finalizeClickGroup(currentGroup);
94987
+ const group2 = finalizeClickGroup(currentGroup);
94576
94988
  if (currentGroupAutoStart || !currentGroupIsClick && clickGroups.length > 0) {
94577
- group.autoAdvance = true;
94989
+ group2.autoAdvance = true;
94578
94990
  }
94579
- clickGroups.push(group);
94991
+ clickGroups.push(group2);
94580
94992
  }
94581
- for (const group of clickGroups) {
94582
- if (group.autoAdvance) {
94583
- group.autoAdvanceDelayMs = 0;
94993
+ for (const group2 of clickGroups) {
94994
+ if (group2.autoAdvance) {
94995
+ group2.autoAdvanceDelayMs = 0;
94584
94996
  }
94585
94997
  }
94586
94998
  const interactiveSequences = buildSequenceGroups(
@@ -94808,9 +95220,9 @@ var TimelineEngine = class _TimelineEngine {
94808
95220
  return null;
94809
95221
  }
94810
95222
  this.currentGroupIndex++;
94811
- const group = this.timeline.clickGroups[this.currentGroupIndex];
94812
- this.applyGroupSteps(group);
94813
- return group;
95223
+ const group2 = this.timeline.clickGroups[this.currentGroupIndex];
95224
+ this.applyGroupSteps(group2);
95225
+ return group2;
94814
95226
  }
94815
95227
  /**
94816
95228
  * Peek at the next click-group without advancing.
@@ -94922,9 +95334,9 @@ var TimelineEngine = class _TimelineEngine {
94922
95334
  return null;
94923
95335
  }
94924
95336
  this.interactiveGroupIndexes.set(triggerShapeId, nextIdx);
94925
- const group = groups[nextIdx];
94926
- this.applyGroupSteps(group);
94927
- return group;
95337
+ const group2 = groups[nextIdx];
95338
+ this.applyGroupSteps(group2);
95339
+ return group2;
94928
95340
  }
94929
95341
  /**
94930
95342
  * Advance the hover sequence for a given trigger shape.
@@ -94941,9 +95353,9 @@ var TimelineEngine = class _TimelineEngine {
94941
95353
  return null;
94942
95354
  }
94943
95355
  this.hoverGroupIndexes.set(triggerShapeId, nextIdx);
94944
- const group = groups[nextIdx];
94945
- this.applyGroupSteps(group);
94946
- return group;
95356
+ const group2 = groups[nextIdx];
95357
+ this.applyGroupSteps(group2);
95358
+ return group2;
94947
95359
  }
94948
95360
  /**
94949
95361
  * Reset the hover sequence for a given trigger shape so it can replay
@@ -94965,8 +95377,8 @@ var TimelineEngine = class _TimelineEngine {
94965
95377
  */
94966
95378
  completeAll() {
94967
95379
  this.reset();
94968
- for (const group of this.timeline.clickGroups) {
94969
- for (const step of group.steps) {
95380
+ for (const group2 of this.timeline.clickGroups) {
95381
+ for (const step of group2.steps) {
94970
95382
  if (step.build || step.colorTargets) {
94971
95383
  this.activeSteps.set(step.elementId, step);
94972
95384
  }
@@ -94995,8 +95407,8 @@ var TimelineEngine = class _TimelineEngine {
94995
95407
  /**
94996
95408
  * Apply a group's steps to the internal tracking state.
94997
95409
  */
94998
- applyGroupSteps(group) {
94999
- for (const step of group.steps) {
95410
+ applyGroupSteps(group2) {
95411
+ for (const step of group2.steps) {
95000
95412
  this.activeAnimations.set(step.elementId, step.cssAnimation);
95001
95413
  if (step.build || step.colorTargets) {
95002
95414
  this.activeSteps.set(step.elementId, step);
@@ -95569,9 +95981,9 @@ var PresentationAnimationController = class _PresentationAnimationController {
95569
95981
  * binding the group needs a requestAnimationFrame reveal loop; an empty result
95570
95982
  * means ordinary discrete click-advance is enough.
95571
95983
  */
95572
- static collectBuildStepIds(group) {
95984
+ static collectBuildStepIds(group2) {
95573
95985
  const ids = [];
95574
- for (const step of group.steps) {
95986
+ for (const step of group2.steps) {
95575
95987
  if (step.build) {
95576
95988
  ids.push(step.elementId);
95577
95989
  }
@@ -95638,8 +96050,8 @@ function findMediaElementByElementId(targetId, root) {
95638
96050
  }
95639
96051
  return void 0;
95640
96052
  }
95641
- function runMediaCommand(command, resolve) {
95642
- const el = resolve(command.targetId);
96053
+ function runMediaCommand(command, resolve2) {
96054
+ const el = resolve2(command.targetId);
95643
96055
  if (!el) {
95644
96056
  return false;
95645
96057
  }
@@ -96442,10 +96854,10 @@ function collectSections(entry2, tableData, pos2) {
96442
96854
  const isBottom = rowIndex === rowCount - 1;
96443
96855
  const isLeft = cellIndex === 0;
96444
96856
  const isRight = cellIndex === columnCount - 1;
96445
- const sections = [];
96857
+ const sections2 = [];
96446
96858
  const push2 = (borders, regionTop, regionBottom, regionLeft, regionRight) => {
96447
96859
  if (borders) {
96448
- sections.push({ borders, regionTop, regionBottom, regionLeft, regionRight });
96860
+ sections2.push({ borders, regionTop, regionBottom, regionLeft, regionRight });
96449
96861
  }
96450
96862
  };
96451
96863
  push2(entry2.wholeTblBorders, isTop, isBottom, isLeft, isRight);
@@ -96485,19 +96897,19 @@ function collectSections(entry2, tableData, pos2) {
96485
96897
  if (tableData.lastCol && isRight) {
96486
96898
  push2(entry2.lastColBorders, isTop, isBottom, true, true);
96487
96899
  }
96488
- return sections;
96900
+ return sections2;
96489
96901
  }
96490
- function resolveStyleDiagonalBorders(entry2, tableData, pos2, resolve) {
96902
+ function resolveStyleDiagonalBorders(entry2, tableData, pos2, resolve2) {
96491
96903
  if (!entry2) {
96492
96904
  return void 0;
96493
96905
  }
96494
- const sections = collectSections(entry2, tableData, pos2);
96495
- if (sections.length === 0) {
96906
+ const sections2 = collectSections(entry2, tableData, pos2);
96907
+ if (sections2.length === 0) {
96496
96908
  return void 0;
96497
96909
  }
96498
96910
  let tl2br;
96499
96911
  let bl2tr;
96500
- for (const section of sections) {
96912
+ for (const section of sections2) {
96501
96913
  if (section.borders.tl2br) {
96502
96914
  tl2br = section.borders.tl2br;
96503
96915
  }
@@ -96508,12 +96920,12 @@ function resolveStyleDiagonalBorders(entry2, tableData, pos2, resolve) {
96508
96920
  const info = {};
96509
96921
  let applied = false;
96510
96922
  if (tl2br && !tl2br.noFill) {
96511
- info.diagDownColor = tl2br.color ?? resolve(tl2br.fill) ?? "#000000";
96923
+ info.diagDownColor = tl2br.color ?? resolve2(tl2br.fill) ?? "#000000";
96512
96924
  info.diagDownWidth = tl2br.width ?? 1;
96513
96925
  applied = true;
96514
96926
  }
96515
96927
  if (bl2tr && !bl2tr.noFill) {
96516
- info.diagUpColor = bl2tr.color ?? resolve(bl2tr.fill) ?? "#000000";
96928
+ info.diagUpColor = bl2tr.color ?? resolve2(bl2tr.fill) ?? "#000000";
96517
96929
  info.diagUpWidth = bl2tr.width ?? 1;
96518
96930
  applied = true;
96519
96931
  }
@@ -97920,7 +98332,7 @@ function groupElements(elements, ids, groupId) {
97920
98332
  x: el.x - groupX,
97921
98333
  y: el.y - groupY
97922
98334
  }));
97923
- const group = {
98335
+ const group2 = {
97924
98336
  type: "group",
97925
98337
  id: groupId,
97926
98338
  name: "Group",
@@ -97939,7 +98351,7 @@ function groupElements(elements, ids, groupId) {
97939
98351
  }
97940
98352
  const result = [
97941
98353
  ...remaining.slice(0, adjustedIndex),
97942
- group,
98354
+ group2,
97943
98355
  ...remaining.slice(adjustedIndex)
97944
98356
  ];
97945
98357
  return { elements: result, groupId };
@@ -98171,38 +98583,38 @@ function resolveSlideId(slide, index) {
98171
98583
  const cSld = rawXml?.["p:sld"];
98172
98584
  return String(cSld?.["@_id"] || slide?.slideNumber || index + 1);
98173
98585
  }
98174
- function groupSlidesBySection(sections, slides) {
98586
+ function groupSlidesBySection(sections2, slides) {
98175
98587
  if (slides.length === 0) {
98176
98588
  return [];
98177
98589
  }
98178
- if (sections.length === 0) {
98590
+ if (sections2.length === 0) {
98179
98591
  return [
98180
98592
  { section: void 0, slides: [...slides], slideIndexes: slides.map((_slide, i) => i) }
98181
98593
  ];
98182
98594
  }
98183
- const sectionById = new Map(sections.map((section) => [section.id, section]));
98595
+ const sectionById = new Map(sections2.map((section) => [section.id, section]));
98184
98596
  const grouped = /* @__PURE__ */ new Map();
98185
98597
  const ungrouped = {
98186
98598
  section: void 0,
98187
98599
  slides: [],
98188
98600
  slideIndexes: []
98189
98601
  };
98190
- for (const section of sections) {
98602
+ for (const section of sections2) {
98191
98603
  grouped.set(section.id, { section, slides: [], slideIndexes: [] });
98192
98604
  }
98193
98605
  slides.forEach((slide, index) => {
98194
- const group = slide.sectionId ? grouped.get(slide.sectionId) : void 0;
98195
- const target = group && sectionById.has(slide.sectionId ?? "") ? group : ungrouped;
98606
+ const group2 = slide.sectionId ? grouped.get(slide.sectionId) : void 0;
98607
+ const target = group2 && sectionById.has(slide.sectionId ?? "") ? group2 : ungrouped;
98196
98608
  target.slides.push(slide);
98197
98609
  target.slideIndexes.push(index);
98198
98610
  });
98199
- const result = sections.map((section) => grouped.get(section.id)).filter((group) => group.slides.length > 0);
98611
+ const result = sections2.map((section) => grouped.get(section.id)).filter((group2) => group2.slides.length > 0);
98200
98612
  if (ungrouped.slides.length > 0) {
98201
98613
  result.push(ungrouped);
98202
98614
  }
98203
98615
  return result;
98204
98616
  }
98205
- function addSection(sections, slides, name, afterSlideIndex, idGenerator = generateSectionId) {
98617
+ function addSection(sections2, slides, name, afterSlideIndex, idGenerator = generateSectionId) {
98206
98618
  const newId = idGenerator();
98207
98619
  const slideAtIndex = slides[afterSlideIndex];
98208
98620
  const currentSectionId = slideAtIndex?.sectionId;
@@ -98217,9 +98629,9 @@ function addSection(sections, slides, name, afterSlideIndex, idGenerator = gener
98217
98629
  const nextSlides = slides.map(
98218
98630
  (s, i) => claimedSlideIndexes.includes(i) ? { ...s, sectionId: newId, sectionName: name } : s
98219
98631
  );
98220
- const insertIndex = currentSectionId !== void 0 ? sections.findIndex((sec) => sec.id === currentSectionId) + 1 : sections.length;
98632
+ const insertIndex = currentSectionId !== void 0 ? sections2.findIndex((sec) => sec.id === currentSectionId) + 1 : sections2.length;
98221
98633
  const newSectionSlideIds = claimedSlideIndexes.map((i) => resolveSlideId(slides[i], i));
98222
- const updated = sections.map(
98634
+ const updated = sections2.map(
98223
98635
  (sec) => sec.id === currentSectionId ? { ...sec, slideIds: sec.slideIds.filter((sid) => !newSectionSlideIds.includes(sid)) } : sec
98224
98636
  );
98225
98637
  const newSection = { id: newId, name, slideIds: newSectionSlideIds };
@@ -98227,20 +98639,20 @@ function addSection(sections, slides, name, afterSlideIndex, idGenerator = gener
98227
98639
  nextSections.splice(insertIndex, 0, newSection);
98228
98640
  return { sections: nextSections, slides: nextSlides };
98229
98641
  }
98230
- function renameSection(sections, slides, sectionId, newName) {
98642
+ function renameSection(sections2, slides, sectionId, newName) {
98231
98643
  return {
98232
- sections: sections.map((sec) => sec.id === sectionId ? { ...sec, name: newName } : sec),
98644
+ sections: sections2.map((sec) => sec.id === sectionId ? { ...sec, name: newName } : sec),
98233
98645
  slides: slides.map((s) => s.sectionId === sectionId ? { ...s, sectionName: newName } : s)
98234
98646
  };
98235
98647
  }
98236
- function deleteSection(sections, slides, sectionId) {
98237
- const idx = sections.findIndex((sec) => sec.id === sectionId);
98648
+ function deleteSection(sections2, slides, sectionId) {
98649
+ const idx = sections2.findIndex((sec) => sec.id === sectionId);
98238
98650
  if (idx === -1) {
98239
- return { sections, slides };
98651
+ return { sections: sections2, slides };
98240
98652
  }
98241
- const deletedSection = sections[idx];
98242
- const prevSection = idx > 0 ? sections[idx - 1] : void 0;
98243
- const filtered = sections.filter((sec) => sec.id !== sectionId);
98653
+ const deletedSection = sections2[idx];
98654
+ const prevSection = idx > 0 ? sections2[idx - 1] : void 0;
98655
+ const filtered = sections2.filter((sec) => sec.id !== sectionId);
98244
98656
  const nextSections = prevSection !== void 0 ? filtered.map(
98245
98657
  (sec) => sec.id === prevSection.id ? { ...sec, slideIds: [...sec.slideIds, ...deletedSection.slideIds] } : sec
98246
98658
  ) : filtered;
@@ -98255,34 +98667,34 @@ function deleteSection(sections, slides, sectionId) {
98255
98667
  });
98256
98668
  return { sections: nextSections, slides: nextSlides };
98257
98669
  }
98258
- function moveSectionUp(sections, sectionId) {
98259
- const idx = sections.findIndex((sec) => sec.id === sectionId);
98670
+ function moveSectionUp(sections2, sectionId) {
98671
+ const idx = sections2.findIndex((sec) => sec.id === sectionId);
98260
98672
  if (idx <= 0) {
98261
- return sections;
98673
+ return sections2;
98262
98674
  }
98263
- const next = [...sections];
98675
+ const next = [...sections2];
98264
98676
  [next[idx - 1], next[idx]] = [next[idx], next[idx - 1]];
98265
98677
  return next;
98266
98678
  }
98267
- function moveSectionDown(sections, sectionId) {
98268
- const idx = sections.findIndex((sec) => sec.id === sectionId);
98269
- if (idx === -1 || idx >= sections.length - 1) {
98270
- return sections;
98679
+ function moveSectionDown(sections2, sectionId) {
98680
+ const idx = sections2.findIndex((sec) => sec.id === sectionId);
98681
+ if (idx === -1 || idx >= sections2.length - 1) {
98682
+ return sections2;
98271
98683
  }
98272
- const next = [...sections];
98684
+ const next = [...sections2];
98273
98685
  [next[idx], next[idx + 1]] = [next[idx + 1], next[idx]];
98274
98686
  return next;
98275
98687
  }
98276
- function moveSlidesToSection(sections, slides, slideIndexes, targetSectionId) {
98277
- const targetSection = sections.find((sec) => sec.id === targetSectionId);
98688
+ function moveSlidesToSection(sections2, slides, slideIndexes, targetSectionId) {
98689
+ const targetSection = sections2.find((sec) => sec.id === targetSectionId);
98278
98690
  if (!targetSection) {
98279
- return { sections, slides };
98691
+ return { sections: sections2, slides };
98280
98692
  }
98281
98693
  const nextSlides = slides.map(
98282
98694
  (s, i) => slideIndexes.includes(i) ? { ...s, sectionId: targetSectionId, sectionName: targetSection.name } : s
98283
98695
  );
98284
98696
  const movedSlideIds = slideIndexes.map((i) => resolveSlideId(slides[i], i));
98285
- const nextSections = sections.map((sec) => {
98697
+ const nextSections = sections2.map((sec) => {
98286
98698
  if (sec.id === targetSectionId) {
98287
98699
  return {
98288
98700
  ...sec,
@@ -98857,7 +99269,7 @@ function buildTextBlockStyle(element, options = {}) {
98857
99269
  style.unicodeBidi = "plaintext";
98858
99270
  }
98859
99271
  style.fontSize = ts?.fontSize || DEFAULT_TEXT_FONT_SIZE;
98860
- style.fontFamily = ts?.fontFamily || DEFAULT_FONT_FAMILY;
99272
+ style.fontFamily = ts?.fontFamily ? getSubstituteFontFamily(ts.fontFamily, parsePanoseString(ts.latinFontPanose)) : DEFAULT_FONT_FAMILY;
98861
99273
  style.fontWeight = ts?.bold ? 700 : 400;
98862
99274
  style.fontStyle = ts?.italic ? "italic" : "normal";
98863
99275
  style.textDecorationLine = decorations.length > 0 ? decorations.join(" ") : "none";
@@ -99911,8 +100323,8 @@ function toAbsolute(child22, offsetX, offsetY) {
99911
100323
  function sameBox(a, b) {
99912
100324
  return Math.abs(a.x - b.x) <= 0.5 && Math.abs(a.y - b.y) <= 0.5 && Math.abs(a.width - b.width) <= 0.5 && Math.abs(a.height - b.height) <= 0.5;
99913
100325
  }
99914
- function correspondingGroup(group, candidates) {
99915
- const morphName = getElementMorphName(group);
100326
+ function correspondingGroup(group2, candidates) {
100327
+ const morphName = getElementMorphName(group2);
99916
100328
  return candidates.find((candidate) => {
99917
100329
  if (candidate.type !== "group") {
99918
100330
  return false;
@@ -99920,10 +100332,10 @@ function correspondingGroup(group, candidates) {
99920
100332
  if (morphName !== void 0 && getElementMorphName(candidate) === morphName) {
99921
100333
  return true;
99922
100334
  }
99923
- if (group.name && candidate.name === group.name) {
100335
+ if (group2.name && candidate.name === group2.name) {
99924
100336
  return true;
99925
100337
  }
99926
- return sameBox(group, candidate);
100338
+ return sameBox(group2, candidate);
99927
100339
  });
99928
100340
  }
99929
100341
  function flattenMorphElements(elements, counterpart, offsetX = 0, offsetY = 0) {
@@ -106315,8 +106727,8 @@ async function loadOrbitControlsCtor() {
106315
106727
  }
106316
106728
  }
106317
106729
  function loadGltf(loader, url) {
106318
- return new Promise((resolve, reject) => {
106319
- loader.load(url, resolve, void 0, reject);
106730
+ return new Promise((resolve2, reject) => {
106731
+ loader.load(url, resolve2, void 0, reject);
106320
106732
  });
106321
106733
  }
106322
106734
  function centerAndFit(three, root) {
@@ -106783,9 +107195,9 @@ function isExportAbortError(err) {
106783
107195
  }
106784
107196
  var PPTX_OPEN_ACCEPT = ".pptx,.ppsx,.pptm,.potx";
106785
107197
  function openFilePicker(options = {}) {
106786
- return new Promise((resolve) => {
107198
+ return new Promise((resolve2) => {
106787
107199
  if (typeof document === "undefined") {
106788
- resolve(null);
107200
+ resolve2(null);
106789
107201
  return;
106790
107202
  }
106791
107203
  const input = document.createElement("input");
@@ -106801,7 +107213,7 @@ function openFilePicker(options = {}) {
106801
107213
  }
106802
107214
  settled = true;
106803
107215
  input.remove();
106804
- resolve(file);
107216
+ resolve2(file);
106805
107217
  };
106806
107218
  input.addEventListener("change", () => finish(input.files?.[0] ?? null));
106807
107219
  input.addEventListener("cancel", () => finish(null));
@@ -107368,7 +107780,7 @@ async function swapPresentationWindows(presenter, audience) {
107368
107780
  }
107369
107781
  }
107370
107782
  function openDeckDb() {
107371
- return new Promise((resolve, reject) => {
107783
+ return new Promise((resolve2, reject) => {
107372
107784
  const request = indexedDB.open(DB_NAME, DB_VERSION);
107373
107785
  request.onupgradeneeded = () => {
107374
107786
  const db = request.result;
@@ -107376,13 +107788,13 @@ function openDeckDb() {
107376
107788
  db.createObjectStore(STORE_NAME);
107377
107789
  }
107378
107790
  };
107379
- request.onsuccess = () => resolve(request.result);
107791
+ request.onsuccess = () => resolve2(request.result);
107380
107792
  request.onerror = () => reject(request.error);
107381
107793
  });
107382
107794
  }
107383
107795
  async function storePresentationDeck(sessionId, content) {
107384
107796
  const db = await openDeckDb();
107385
- return new Promise((resolve, reject) => {
107797
+ return new Promise((resolve2, reject) => {
107386
107798
  const tx = db.transaction(STORE_NAME, "readwrite");
107387
107799
  const bytes = content instanceof Uint8Array ? content : new Uint8Array(content);
107388
107800
  tx.objectStore(STORE_NAME).put(
@@ -107391,7 +107803,7 @@ async function storePresentationDeck(sessionId, content) {
107391
107803
  );
107392
107804
  tx.oncomplete = () => {
107393
107805
  db.close();
107394
- resolve();
107806
+ resolve2();
107395
107807
  };
107396
107808
  tx.onerror = () => {
107397
107809
  db.close();
@@ -107402,17 +107814,17 @@ async function storePresentationDeck(sessionId, content) {
107402
107814
  async function loadPresentationDeck(sessionId) {
107403
107815
  try {
107404
107816
  const db = await openDeckDb();
107405
- return await new Promise((resolve, reject) => {
107817
+ return await new Promise((resolve2, reject) => {
107406
107818
  const request = db.transaction(STORE_NAME, "readonly").objectStore(STORE_NAME).get(sessionId);
107407
107819
  request.onsuccess = () => {
107408
107820
  db.close();
107409
107821
  const record = request.result;
107410
107822
  if (!record || Date.now() - record.createdAt > MAX_DECK_AGE_MS) {
107411
- resolve(null);
107823
+ resolve2(null);
107412
107824
  return;
107413
107825
  }
107414
107826
  const raw = record.bytes;
107415
- resolve(
107827
+ resolve2(
107416
107828
  raw instanceof Uint8Array ? raw : raw instanceof ArrayBuffer ? new Uint8Array(raw) : null
107417
107829
  );
107418
107830
  };
@@ -107428,16 +107840,16 @@ async function loadPresentationDeck(sessionId) {
107428
107840
  async function clearPresentationDeck(sessionId) {
107429
107841
  try {
107430
107842
  const db = await openDeckDb();
107431
- await new Promise((resolve) => {
107843
+ await new Promise((resolve2) => {
107432
107844
  const tx = db.transaction(STORE_NAME, "readwrite");
107433
107845
  tx.objectStore(STORE_NAME).delete(sessionId);
107434
107846
  tx.oncomplete = () => {
107435
107847
  db.close();
107436
- resolve();
107848
+ resolve2();
107437
107849
  };
107438
107850
  tx.onerror = () => {
107439
107851
  db.close();
107440
- resolve();
107852
+ resolve2();
107441
107853
  };
107442
107854
  });
107443
107855
  } catch {
@@ -107449,7 +107861,7 @@ var STORE_NAME2 = "content";
107449
107861
  var CONTENT_KEY = "pptx-bytes";
107450
107862
  var MAX_CONTENT_AGE_MS = 5 * 60 * 1e3;
107451
107863
  function openDb() {
107452
- return new Promise((resolve, reject) => {
107864
+ return new Promise((resolve2, reject) => {
107453
107865
  const request = indexedDB.open(DB_NAME2, DB_VERSION2);
107454
107866
  request.onupgradeneeded = () => {
107455
107867
  const db = request.result;
@@ -107457,7 +107869,7 @@ function openDb() {
107457
107869
  db.createObjectStore(STORE_NAME2);
107458
107870
  }
107459
107871
  };
107460
- request.onsuccess = () => resolve(request.result);
107872
+ request.onsuccess = () => resolve2(request.result);
107461
107873
  request.onerror = () => reject(request.error);
107462
107874
  });
107463
107875
  }
@@ -107466,7 +107878,7 @@ async function storeAudienceContent(content, sessionId) {
107466
107878
  return storePresentationDeck(sessionId, content);
107467
107879
  }
107468
107880
  const db = await openDb();
107469
- return new Promise((resolve, reject) => {
107881
+ return new Promise((resolve2, reject) => {
107470
107882
  const tx = db.transaction(STORE_NAME2, "readwrite");
107471
107883
  const store = tx.objectStore(STORE_NAME2);
107472
107884
  const bytes = content instanceof Uint8Array ? content : new Uint8Array(content);
@@ -107474,7 +107886,7 @@ async function storeAudienceContent(content, sessionId) {
107474
107886
  store.put(record, CONTENT_KEY);
107475
107887
  tx.oncomplete = () => {
107476
107888
  db.close();
107477
- resolve();
107889
+ resolve2();
107478
107890
  };
107479
107891
  tx.onerror = () => {
107480
107892
  db.close();
@@ -107488,7 +107900,7 @@ async function loadAudienceContent(sessionId) {
107488
107900
  }
107489
107901
  try {
107490
107902
  const db = await openDb();
107491
- return new Promise((resolve, reject) => {
107903
+ return new Promise((resolve2, reject) => {
107492
107904
  const tx = db.transaction(STORE_NAME2, "readonly");
107493
107905
  const store = tx.objectStore(STORE_NAME2);
107494
107906
  const request = store.get(CONTENT_KEY);
@@ -107499,20 +107911,20 @@ async function loadAudienceContent(sessionId) {
107499
107911
  const record = result;
107500
107912
  const age = Date.now() - record.createdAt;
107501
107913
  if (age > MAX_CONTENT_AGE_MS) {
107502
- resolve(null);
107914
+ resolve2(null);
107503
107915
  return;
107504
107916
  }
107505
107917
  const raw = record.bytes;
107506
107918
  if (raw instanceof Uint8Array) {
107507
- resolve(raw);
107919
+ resolve2(raw);
107508
107920
  } else if (raw instanceof ArrayBuffer) {
107509
- resolve(new Uint8Array(raw));
107921
+ resolve2(new Uint8Array(raw));
107510
107922
  } else {
107511
- resolve(null);
107923
+ resolve2(null);
107512
107924
  }
107513
107925
  return;
107514
107926
  }
107515
- resolve(null);
107927
+ resolve2(null);
107516
107928
  };
107517
107929
  request.onerror = () => {
107518
107930
  db.close();
@@ -107529,17 +107941,17 @@ async function clearAudienceContent(sessionId) {
107529
107941
  }
107530
107942
  try {
107531
107943
  const db = await openDb();
107532
- return new Promise((resolve) => {
107944
+ return new Promise((resolve2) => {
107533
107945
  const tx = db.transaction(STORE_NAME2, "readwrite");
107534
107946
  const store = tx.objectStore(STORE_NAME2);
107535
107947
  store.delete(CONTENT_KEY);
107536
107948
  tx.oncomplete = () => {
107537
107949
  db.close();
107538
- resolve();
107950
+ resolve2();
107539
107951
  };
107540
107952
  tx.onerror = () => {
107541
107953
  db.close();
107542
- resolve();
107954
+ resolve2();
107543
107955
  };
107544
107956
  });
107545
107957
  } catch {
@@ -108094,19 +108506,19 @@ function groupElementParagraphs(element) {
108094
108506
  }
108095
108507
  return groups;
108096
108508
  }
108097
- function paragraphGroupText(group) {
108098
- return group.content.map((segment) => segment.isLineBreak ? " " : segment.text).join("");
108509
+ function paragraphGroupText(group2) {
108510
+ return group2.content.map((segment) => segment.isLineBreak ? " " : segment.text).join("");
108099
108511
  }
108100
- function paragraphGroupLevel(group) {
108101
- const first = group.marker ?? group.content[0];
108512
+ function paragraphGroupLevel(group2) {
108513
+ const first = group2.marker ?? group2.content[0];
108102
108514
  const level = first?.paragraphLevel;
108103
108515
  return typeof level === "number" && level > 0 ? Math.min(level, MAX_PARAGRAPH_LEVEL) : 0;
108104
108516
  }
108105
108517
  function readElementParagraphs(element) {
108106
108518
  const groups = groupElementParagraphs(element);
108107
- const paragraphs = groups.map((group) => ({
108108
- text: paragraphGroupText(group),
108109
- level: paragraphGroupLevel(group)
108519
+ const paragraphs = groups.map((group2) => ({
108520
+ text: paragraphGroupText(group2),
108521
+ level: paragraphGroupLevel(group2)
108110
108522
  }));
108111
108523
  let last = paragraphs.length - 1;
108112
108524
  while (last >= 0 && paragraphs[last].text.length === 0) {
@@ -108221,11 +108633,11 @@ function withLevel(segments, level) {
108221
108633
  return next;
108222
108634
  });
108223
108635
  }
108224
- function rebuildParagraph(group, donor, text2, elementStyle) {
108225
- if (group && paragraphGroupText(group) === text2) {
108226
- return [...group.marker ? [group.marker] : [], ...group.content];
108636
+ function rebuildParagraph(group2, donor, text2, elementStyle) {
108637
+ if (group2 && paragraphGroupText(group2) === text2) {
108638
+ return [...group2.marker ? [group2.marker] : [], ...group2.content];
108227
108639
  }
108228
- const source = group ?? donor;
108640
+ const source = group2 ?? donor;
108229
108641
  const marker = source?.marker ? [source.marker] : [];
108230
108642
  const content = remapTextToSegments(text2, source?.content, elementStyle);
108231
108643
  return [...marker, ...content];
@@ -109008,7 +109420,7 @@ function replacePixels(data, fromColor, toColor, threshold, toTransparent) {
109008
109420
  }
109009
109421
  var DEFAULT_COLOR_CHANGE_TOLERANCE = 12;
109010
109422
  function applyColorChange(imageDataUrl, fromHex, toHex22, tolerancePct = DEFAULT_COLOR_CHANGE_TOLERANCE, toTransparent = false) {
109011
- return new Promise((resolve, reject) => {
109423
+ return new Promise((resolve2, reject) => {
109012
109424
  const fromColor = parseHexToRgb(fromHex);
109013
109425
  const toColor = parseHexToRgb(toHex22);
109014
109426
  if (!fromColor || !toColor) {
@@ -109036,7 +109448,7 @@ function applyColorChange(imageDataUrl, fromHex, toHex22, tolerancePct = DEFAULT
109036
109448
  const threshold = toleranceToThreshold(tolerancePct);
109037
109449
  replacePixels(imageData.data, fromColor, toColor, threshold, toTransparent);
109038
109450
  ctx.putImageData(imageData, 0, 0);
109039
- resolve({
109451
+ resolve2({
109040
109452
  dataUrl: canvas.toDataURL("image/png"),
109041
109453
  width: w,
109042
109454
  height: h
@@ -109087,7 +109499,7 @@ function mapDuotonePixels(data, shadow, highlight) {
109087
109499
  }
109088
109500
  }
109089
109501
  function applyDuotone(imageDataUrl, shadowHex, highlightHex) {
109090
- return new Promise((resolve, reject) => {
109502
+ return new Promise((resolve2, reject) => {
109091
109503
  const shadow = parseHexToRgb(shadowHex);
109092
109504
  const highlight = parseHexToRgb(highlightHex);
109093
109505
  if (!shadow || !highlight) {
@@ -109114,7 +109526,7 @@ function applyDuotone(imageDataUrl, shadowHex, highlightHex) {
109114
109526
  const imageData = ctx.getImageData(0, 0, w, h);
109115
109527
  mapDuotonePixels(imageData.data, shadow, highlight);
109116
109528
  ctx.putImageData(imageData, 0, 0);
109117
- resolve({
109529
+ resolve2({
109118
109530
  dataUrl: canvas.toDataURL("image/png"),
109119
109531
  width: w,
109120
109532
  height: h
@@ -111203,7 +111615,7 @@ var AUTOSAVE_DB_NAME = "pptx-viewer-autosave";
111203
111615
  var AUTOSAVE_DB_VERSION = 1;
111204
111616
  var AUTOSAVE_STORE_NAME = "recoveryVersions";
111205
111617
  function openAutosaveDb() {
111206
- return new Promise((resolve, reject) => {
111618
+ return new Promise((resolve2, reject) => {
111207
111619
  const req = indexedDB.open(AUTOSAVE_DB_NAME, AUTOSAVE_DB_VERSION);
111208
111620
  req.onupgradeneeded = () => {
111209
111621
  const db = req.result;
@@ -111211,13 +111623,13 @@ function openAutosaveDb() {
111211
111623
  db.createObjectStore(AUTOSAVE_STORE_NAME, { keyPath: "key" });
111212
111624
  }
111213
111625
  };
111214
- req.onsuccess = () => resolve(req.result);
111626
+ req.onsuccess = () => resolve2(req.result);
111215
111627
  req.onerror = () => reject(req.error);
111216
111628
  });
111217
111629
  }
111218
111630
  async function deleteOldestAutosaveEntry() {
111219
111631
  const db = await openAutosaveDb();
111220
- return new Promise((resolve) => {
111632
+ return new Promise((resolve2) => {
111221
111633
  try {
111222
111634
  const tx = db.transaction(AUTOSAVE_STORE_NAME, "readwrite");
111223
111635
  const store = tx.objectStore(AUTOSAVE_STORE_NAME);
@@ -111239,24 +111651,24 @@ async function deleteOldestAutosaveEntry() {
111239
111651
  };
111240
111652
  tx.oncomplete = () => {
111241
111653
  db.close();
111242
- resolve(oldestKey !== null);
111654
+ resolve2(oldestKey !== null);
111243
111655
  };
111244
111656
  tx.onerror = () => {
111245
111657
  db.close();
111246
- resolve(false);
111658
+ resolve2(false);
111247
111659
  };
111248
111660
  } catch {
111249
111661
  try {
111250
111662
  db.close();
111251
111663
  } catch {
111252
111664
  }
111253
- resolve(false);
111665
+ resolve2(false);
111254
111666
  }
111255
111667
  });
111256
111668
  }
111257
111669
  function putAutosaveRecord(filePath, data) {
111258
111670
  return openAutosaveDb().then(
111259
- (db) => new Promise((resolve, reject) => {
111671
+ (db) => new Promise((resolve2, reject) => {
111260
111672
  const tx = db.transaction(AUTOSAVE_STORE_NAME, "readwrite");
111261
111673
  const store = tx.objectStore(AUTOSAVE_STORE_NAME);
111262
111674
  store.put({
@@ -111267,7 +111679,7 @@ function putAutosaveRecord(filePath, data) {
111267
111679
  });
111268
111680
  tx.oncomplete = () => {
111269
111681
  db.close();
111270
- resolve(true);
111682
+ resolve2(true);
111271
111683
  };
111272
111684
  tx.onerror = () => {
111273
111685
  db.close();
@@ -111278,23 +111690,23 @@ function putAutosaveRecord(filePath, data) {
111278
111690
  }
111279
111691
  async function getAutosaveSnapshot(filePath) {
111280
111692
  const db = await openAutosaveDb();
111281
- return new Promise((resolve) => {
111693
+ return new Promise((resolve2) => {
111282
111694
  const tx = db.transaction(AUTOSAVE_STORE_NAME, "readonly");
111283
111695
  const store = tx.objectStore(AUTOSAVE_STORE_NAME);
111284
111696
  const req = store.get(filePath);
111285
111697
  req.onsuccess = () => {
111286
111698
  db.close();
111287
- resolve(req.result);
111699
+ resolve2(req.result);
111288
111700
  };
111289
111701
  req.onerror = () => {
111290
111702
  db.close();
111291
- resolve(void 0);
111703
+ resolve2(void 0);
111292
111704
  };
111293
111705
  });
111294
111706
  }
111295
111707
  async function listAutosaveSnapshots() {
111296
111708
  const db = await openAutosaveDb();
111297
- return new Promise((resolve) => {
111709
+ return new Promise((resolve2) => {
111298
111710
  const results = [];
111299
111711
  try {
111300
111712
  const tx = db.transaction(AUTOSAVE_STORE_NAME, "readonly");
@@ -111310,42 +111722,42 @@ async function listAutosaveSnapshots() {
111310
111722
  };
111311
111723
  tx.oncomplete = () => {
111312
111724
  db.close();
111313
- resolve(results);
111725
+ resolve2(results);
111314
111726
  };
111315
111727
  tx.onerror = () => {
111316
111728
  db.close();
111317
- resolve([]);
111729
+ resolve2([]);
111318
111730
  };
111319
111731
  } catch {
111320
111732
  try {
111321
111733
  db.close();
111322
111734
  } catch {
111323
111735
  }
111324
- resolve([]);
111736
+ resolve2([]);
111325
111737
  }
111326
111738
  });
111327
111739
  }
111328
111740
  async function deleteAutosaveSnapshot(filePath) {
111329
111741
  const db = await openAutosaveDb();
111330
- return new Promise((resolve) => {
111742
+ return new Promise((resolve2) => {
111331
111743
  try {
111332
111744
  const tx = db.transaction(AUTOSAVE_STORE_NAME, "readwrite");
111333
111745
  const store = tx.objectStore(AUTOSAVE_STORE_NAME);
111334
111746
  store.delete(filePath);
111335
111747
  tx.oncomplete = () => {
111336
111748
  db.close();
111337
- resolve(true);
111749
+ resolve2(true);
111338
111750
  };
111339
111751
  tx.onerror = () => {
111340
111752
  db.close();
111341
- resolve(false);
111753
+ resolve2(false);
111342
111754
  };
111343
111755
  } catch {
111344
111756
  try {
111345
111757
  db.close();
111346
111758
  } catch {
111347
111759
  }
111348
- resolve(false);
111760
+ resolve2(false);
111349
111761
  }
111350
111762
  });
111351
111763
  }
@@ -112178,17 +112590,17 @@ function shouldConfirmExternalHyperlink(options, href) {
112178
112590
  }
112179
112591
  return /^https?:/i.test(href);
112180
112592
  }
112181
- function toggle(group, key, labelKey, extra) {
112182
- return { kind: "toggle", group, key, labelKey, ...extra };
112593
+ function toggle(group2, key, labelKey, extra) {
112594
+ return { kind: "toggle", group: group2, key, labelKey, ...extra };
112183
112595
  }
112184
- function select(group, key, labelKey, choiceList) {
112185
- return { kind: "select", group, key, labelKey, choices: choiceList };
112596
+ function select(group2, key, labelKey, choiceList) {
112597
+ return { kind: "select", group: group2, key, labelKey, choices: choiceList };
112186
112598
  }
112187
- function numberControl(group, key, labelKey, min, max, unitKey) {
112188
- return { kind: "number", group, key, labelKey, min, max, unitKey };
112599
+ function numberControl(group2, key, labelKey, min, max, unitKey) {
112600
+ return { kind: "number", group: group2, key, labelKey, min, max, unitKey };
112189
112601
  }
112190
- function textControl(group, key, labelKey) {
112191
- return { kind: "text", group, key, labelKey, maxLength: 64 };
112602
+ function textControl(group2, key, labelKey) {
112603
+ return { kind: "text", group: group2, key, labelKey, maxLength: 64 };
112192
112604
  }
112193
112605
  function choices(prefix, values) {
112194
112606
  return values.map((value) => ({ value, labelKey: `${prefix}.${value}` }));
@@ -112670,17 +113082,17 @@ function createViewerOptionsStore(init) {
112670
113082
  return {
112671
113083
  getOptions: () => options,
112672
113084
  setOptions: (next) => commit(cloneOptions(next)),
112673
- setValue: (group, key, value) => {
112674
- const defaults = DEFAULT_VIEWER_OPTIONS[group];
113085
+ setValue: (group2, key, value) => {
113086
+ const defaults = DEFAULT_VIEWER_OPTIONS[group2];
112675
113087
  if (!(key in defaults) || typeof defaults[key] !== typeof value) {
112676
113088
  return;
112677
113089
  }
112678
113090
  const next = cloneOptions(options);
112679
- next[group][key] = value;
113091
+ next[group2][key] = value;
112680
113092
  commit(next);
112681
113093
  },
112682
- getValue: (group, key) => {
112683
- const record = options[group];
113094
+ getValue: (group2, key) => {
113095
+ const record = options[group2];
112684
113096
  const value = record[key];
112685
113097
  return typeof value === "boolean" || typeof value === "number" || typeof value === "string" ? value : void 0;
112686
113098
  },
@@ -112702,14 +113114,14 @@ function createViewerOptionsStore(init) {
112702
113114
  next.quickAccess.commandIds = [...commandIds];
112703
113115
  commit(next);
112704
113116
  },
112705
- reset: (group) => {
112706
- if (!group) {
113117
+ reset: (group2) => {
113118
+ if (!group2) {
112707
113119
  commit(cloneOptions(DEFAULT_VIEWER_OPTIONS));
112708
113120
  return;
112709
113121
  }
112710
113122
  const next = cloneOptions(options);
112711
113123
  const defaults = cloneOptions(DEFAULT_VIEWER_OPTIONS);
112712
- next[group] = defaults[group];
113124
+ next[group2] = defaults[group2];
112713
113125
  commit(next);
112714
113126
  },
112715
113127
  subscribe: (listener) => {
@@ -113659,7 +114071,7 @@ var VAR_DEPENDENT_PROPERTIES = [
113659
114071
  function resolveCustomProperties(root) {
113660
114072
  const elements = root.querySelectorAll("*");
113661
114073
  const view = root.ownerDocument?.defaultView ?? window;
113662
- const resolve = (el) => {
114074
+ const resolve2 = (el) => {
113663
114075
  const htmlEl = el;
113664
114076
  if (!htmlEl.style) {
113665
114077
  return;
@@ -113675,8 +114087,8 @@ function resolveCustomProperties(root) {
113675
114087
  }
113676
114088
  }
113677
114089
  };
113678
- resolve(root);
113679
- elements.forEach(resolve);
114090
+ resolve2(root);
114091
+ elements.forEach(resolve2);
113680
114092
  }
113681
114093
  function preprocessCssForCapture(root, options = {}) {
113682
114094
  const {
@@ -113714,9 +114126,9 @@ async function blobUrlToDataUrl(blobUrl) {
113714
114126
  try {
113715
114127
  const response = await fetch(blobUrl);
113716
114128
  const blob = await response.blob();
113717
- return await new Promise((resolve, reject) => {
114129
+ return await new Promise((resolve2, reject) => {
113718
114130
  const reader = new FileReader();
113719
- reader.onloadend = () => resolve(reader.result);
114131
+ reader.onloadend = () => resolve2(reader.result);
113720
114132
  reader.onerror = reject;
113721
114133
  reader.readAsDataURL(blob);
113722
114134
  });
@@ -113835,7 +114247,7 @@ var COMPLEX_COLOR_PROPERTIES = [
113835
114247
  ];
113836
114248
  function resolveUnsupportedColours(root) {
113837
114249
  const elements = root.querySelectorAll("*");
113838
- const resolve = (el) => {
114250
+ const resolve2 = (el) => {
113839
114251
  const htmlEl = el;
113840
114252
  if (!htmlEl.style) {
113841
114253
  return;
@@ -113865,8 +114277,8 @@ function resolveUnsupportedColours(root) {
113865
114277
  }
113866
114278
  }
113867
114279
  };
113868
- resolve(root);
113869
- elements.forEach(resolve);
114280
+ resolve2(root);
114281
+ elements.forEach(resolve2);
113870
114282
  }
113871
114283
  function resolveRootCustomProperties(doc) {
113872
114284
  const targets = [doc.documentElement, doc.body];
@@ -114382,4 +114794,4 @@ function segmentFrameCount(durationMs, fps) {
114382
114794
  * `<p:extLst>` (optional)
114383
114795
  */
114384
114796
 
114385
- export { ACTION_BUTTON_PRESETS, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, ARTISTIC_EFFECTS, AVATAR_COLOR_SWATCHES, BACKSTAGE_NAV, BACKSTAGE_TEMPLATES, BEVEL_PRESETS, BROADCAST_THROTTLE_MS, CATEGORIES, COLOR_MAP_ALIAS_KEYS, COMMON_FONTS, CONNECTION_TIMEOUT_MS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_COLOR_CHANGE_TOLERANCE, DEFAULT_COLOR_MAP, DEFAULT_INSERT_CHART_TYPE, DEFAULT_MOTION_PATH_PRESET_ID, DEFAULT_QUICK_ACCESS_COMMAND_IDS, DEFAULT_ROW_HEIGHT, DEFAULT_VIEWER_OPTIONS, DEFAULT_VIEWER_PROFILE, DEFAULT_VIRTUAL_OVERSCAN, DIRECTIONAL_PRESETS, DUOTONE_PRESETS, ELEMENT_ACTION_TYPE_OPTIONS, EMPHASIS_PRESET_VALUES, ENTRANCE_PRESET_VALUES, EQUATION_TEMPLATES, EXIT_PRESET_VALUES, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, EncryptedFileError, FILL_MODE_OPTIONS, FILL_PATTERN_LABEL_KEYS, GRADIENT_TYPE_OPTIONS, HANDOUT_OPTIONS, HIDDEN_SLIDE_LABEL_KEY, HIDDEN_SLIDE_SLASH_GRADIENT, HIGHLIGHTER_COLORS, INK_REPLAY_KEYFRAMES, INSERT_CHART_TYPES, LBL, 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_ZOOM_SCALE, MIN_ZOOM_SCALE, MOBILE_BREAKPOINT, MOTION_PATH_FAMILIES, NOTES_FONT_SIZE_DEFAULT, NOTES_FONT_SIZE_MAX, NOTES_FONT_SIZE_MIN, NOTES_FONT_SIZE_STEP, NUM, OUTLINE_LEVEL_ATTR, OUTLINE_ROW_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_VIEW_ATTR, PATTERN_OPTIONS, PEN_COLORS, PRESENTATION_CHANNEL_NAME, PRESENTATION_HASH, PRESENTATION_MESSAGE_ORIGIN, PRESENTATION_NONCE_KEY, PRESENTER_CONSOLE_CLASSES, PRESENTER_CONSOLE_CONTROLS, PRESENTER_NAVIGATOR_LABEL_KEYS, PRESENT_TOOLBAR_CLASSES, PRESETS, PRESET_THEMES, PptxHandler, PptxMarkdownConverter, PresentationAnimationController, QUICK_ACCESS_COMMAND_CATALOG, READING_VIEW_ATTR, READING_VIEW_COUNTER_ATTR, READING_VIEW_STAGE_ATTR, RULER_FONT_SIZE, RULER_THICKNESS, SECTION_HEADING, SEL, SHAPE_PRESET_DEFS, SHAPE_QUICK_STYLES, SHORTCUT_REFERENCE_ITEMS, SLIDE_TRANSITION_KEYFRAMES, SLIDE_TRANSITION_OPTIONS, SLIDE_VIRTUALIZATION_THRESHOLD, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, STATUS_BAR_CLASSES, SWITCHABLE_LAYOUT_TYPES, SvgExporter, TABLET_BREAKPOINT, TABLE_STYLE_PRESETS, TAB_ROW_ACTION_CLASSES, TEXT_BUILD_ID_SEP, TEXT_WARP_PRESETS, THEME_CATALOG, THEME_COLOR_LABELS, 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_ORIENTATION_TYPES, TRANSITION_VALID_DIRECTIONS, ThemePresets, VIEWER_OPTIONS_TABS, VIEWER_PREFS_STORAGE_KEY, VIEWER_SHORTCUT_REFERENCE, WEBM_MIME_CANDIDATES, acceptsPresentationInput, actionAffordanceLabels, activateModalFocus, addChartCategory, addChartSeries, addQuickAccessCommand, addSection, addSmartArtNode, addSmartArtNodeAsChild, addTagToCollections, alignElements, animationEffectLabel, appendPresentationInkPoint, appendTableElementColumn, appendTableElementRow, apply3dEffects, applyAcceptAllSlides, applyAcceptSlide, applyCaseTransformToSegments, applyChartBuildReveal, applyColorChange, applyDuotone, applyFormatToElement, applyMotionPathPreset, applyOutlineEdit, applyPreferenceToOptions, applyReadingViewCommand, applyRehearsalTimings, applyReroutedConnectors, applyResize, applyStyleToSelectedSegments, applyThemeOverrideToSlide, applyThemeToData, availableQuickAccessCommands, backstageCardsFor, bringForward, bringToFront, build3DExtrusionData, buildBroadcastViewerUrl, buildCacheKey, buildCalloutLeaderLineSvgPath, buildChartViewModel, buildCollaborationShareUrl, buildContextMenuEntries, buildCreateCollaborationConfig, buildCssGradientFromShapeStyle, buildDirectionGrid, buildDuotoneCacheKey, buildElementClipboardPayload, buildFieldSubstitutionContext, buildGlowBoxShadow, buildHandoutsHtml, buildInitialGuides, buildInnerShadowCssFromShapeStyle, buildJoinCollaborationConfig, buildMorphTransitionPlan, buildMotionPathPreview, buildMultiLayerShadowCss, buildNotesHtml, buildNotesPdfBytes, buildOutline, buildOutlineHtml, buildPatternFillCss, buildPresentationAudienceUrl, buildPreviewAnimation, buildPreviewElements, buildPrintDocument, buildPrintHtmlDocument, buildReflectionCss, buildShadowCssFromShapeStyle, buildSlidesHtml, buildSlidesPdfBytes, buildSmartArt3DModel, buildSmartArtA11y, buildSmartArtPresetData, buildStrokeOutline, buildSummaryZoomView, buildSvgGradientDef, buildTableDataGrid, buildTextBlockStyle, buildTextBody3DSceneStyle, buildTextBuildSpec, buildTextFillCss, buildTextReflectionCss, buildTextRunFilterChain, buildTextShadowCss, buildThemeColorGrid, buildThemeColorMap, buildUserFontFaceStyles, canCommitActionType, canGoNext, canGoPrevious, canvasToJpegData, cell3DBevelCss, chartDataChangeType, chartPartToAttrs, clampCropValue, clampNotesFontSize, clampPercent, clampTransitionNumber, clampUnitInterval2 as clampUnitInterval, clampZoomScale, clearAllLocalViewerData, clearAudienceContent, clearLocalAwareness, clearMotionPath, clearStoredViewerPrefs, cloneElementForPaste, cloneHistorySnapshot, cloneSlide, cloneTemplateElementsBySlideId, collectImagePaths, collectMediaElements, collectUsedFonts, colorWithOpacity, comparePresentation, compileEquationTemplateMathMl, compileLatexEquation, computeAllNotesPages, computeColumnBoundaries, computeEntranceAnimationDelay, computeHandoutLayout, computeInlineEditorRect, computeKeyboardInset, computeLayout, computeLayoutOptions, computeMarqueeHitIds, computeMergeCellDown, computeMergeCellRight, computeResizedColumnWidths, computeResizedRowHeight, computeScrollDelta, computeSelectionRect, computeSmartArtLayout2 as computeSmartArtLayout, computeSnapToShape, computeSplitCell, computeValueRange, computeValueRangeForChart, computeVirtualRange, convertLatexToOmml, convertOmmlToLatex, convertOmmlToMathMl, copyFormatFromElement, createBackstagePresentation, createBlankSlide, createCollaborationLivePatcher, createDefaultChartElement, createDepartureChannel, createInitialPresentationSnapshot, createPresentationKeyBuffer, createPresentationSessionId, createPresenterShowGuard, createPresenterTimer, createSyncGate, createTouchGestureRecognizer, createViewerOptionsStore, customGeometryPathsToSvgSubpaths, defaultCssVars, defaultRadius, defaultThemeColors, deleteAutosaveSnapshot, deleteSection, deleteTableColumn, deleteTableRow, deleteTagFromCollections, demoteSmartArtNode, derivePresenceList, deriveSlideFieldContext, detectOrientation, detectTouchDevice, distributeElements, downloadBlob, downloadDataUrl, dragAnchorViewY, dragValueForPart, elementActionToPptxAction, encodeGif, endAudienceDisplay, ensureActionAffordanceStyles, erasePresentationInkAt, evaluatePresetShape, extraQuickAccessCommands, extractPathPoints, filterCommands, filterRenderedElements, findChartPartTarget, findMediaElementByElementId, findSmartArtNodeText, firstShowSlideIndex, flattenTagCollections, formatAxisValue, formatAxisValueWithUnits, formatBackstageDate, formatBackstageSize, formatBytes, formatCommentTimestamp, formatElapsed, formatMobileElapsed, formatRelativeTime, formatSlideCounter, formatTime, formatVersionTimestamp, fpsToFrameIntervalMs, generateBroadcastRoomId, generateElementId, generateLogTicks, generateNoteLineCount, generatePackageReadme, generatePressureCircles, generateTicks, getAnimationInitialStyle, getAriaLabel, getAriaRole, getAriaRoleDescription, getCachedResult, getCalloutLeaderLineGeometry, getCalloutViewBoxBounds, getCellDiagonalBorders, getChartStylePalette, getCommentMarkerPosition, getCompoundLineBorderWidth, getCompoundLineBoxShadow, getCompoundLineOffsets, getCompoundLineWidths, getComputedEffectStyle, getConnectionSites, getContentPartReplayStyles, getCssBorderDashStyle, getDisplayUnitLabel, getDuotoneCachedResult, getEffectDagFilter, getElementLabel, getElementTransform, getElementTransformWithoutRotation, getGradientTileFlipCss, getGradientTileRectCss, getGroupChildParentFill, getImageColorWashStyle, getImageEffectsFilter, getImageEffectsOpacity, getImageFitStyle, getImageSvgFilters, getInkReplayStyles, getInlineEditorSelection, getKinsokuLineBreakStyles, getLocalStorageUsageSummary, getNotesPrintableArea, getOleBadgeLabel, getOleObjectTypeLabel, getOleTypeColor, getOleTypeLabel, getOverflowSegments, getPatternSvg, getPendingSelectionRestore, getPresetShapeClipPath, getPrintableArea, getResolvedShapeClipPath, getRoundRectRadiusPx, getSecondaryValueAxis, getShapeAdjustmentHandleDescriptor, getSlideBackgroundStyle, getSlideTransitionAnimations, getSoftEdgeFilterId, getSoftEdgeSvgFilter, getSubstituteFontFamily, getSvgStrokeDasharray, getTextAlphaOpacity, getTextCompensationTransform, getWarpPath, groupElements, groupIntoParagraphs, groupSlidesBySection, guidePxToEmu, handleReadingViewKey, hasCopyableFormat, hasDistinctScriptFonts, hasPressureVariation, hasShapeProperties, hasShowSlideAfter, hasTextProperties, hexToRgbChannels2 as hexToRgbChannels, hiddenSlideCue, insertTableColumn, insertTableRow, isActionHidden, isBrowserOpenableMime, isCalloutShape, isCellInRect, isEditableMotionPath, isEditableTextElement, isEditorTextInputTarget, isElementActionable, isElementRendered, isExportAbortError, isImageLikeElement, isInkElement, isKeyboardOpen, isLinkedTextBox, isMixedContentBlocked, isMobileViewport, isPpactionUrl, isPresentationAdvanceClick, isPresentationSessionMessage, isTemplateElement, isTemplateElementId2 as isTemplateElementId, isUrlSafe, lastShowSlideIndex, listAutosaveSnapshots, listBackstageRecentFiles, loadAudienceContent, makeCloneId, makeSlideId, mapEditorKey, mapOutlineKey, mapPresentationKey, mayLeaveSlideShow, mediaPlaybackAttributes, mediaTransportVisible, mergeAdditiveSelection, mergeCells, mergePresentationSnapshot, mergeShapes, mergeSlideTransition, mobileElapsedSince, mobileSlideCounter, morphOptionToMode, motionPathEndPixel, motionPathFamilyLabelKey, motionPathFor, motionPathPresetIdForPath, motionPathPresetLabelKey, motionPathPresetsByFamily, motionPathToSvgD, mountModel3D, mountSurfaceChart3D, movePresenterPointer, moveQuickAccessCommand, moveSectionDown, moveSectionUp, moveSlidesToSection, newTableElement, nextPresentedSlide, nextShowSlideIndex, normalizeColorsForCapture, normalizeHexColor, normalizeStrokeDashType, normalizeValue, notesSegmentsToSpans, observeYDocSlides, ooxmlDashToCssBorderStyle, ooxmlGradientAngleToCssDegrees, openNativeEyeDropper, openPptxFile, openReadingView, openUrlInNewTab, paletteColor, parseDrawingColor, parseDrawingColorOpacity, parsePpactionUrl, pickSupportedMimeType, placeAudienceWindow, polygonsToSvgPath, pptxActionToElementAction, preprocessCssForCapture, presentationInkPath, presenterElapsed, presenterNextDisabled, presenterPaneAdvancesOnClick, presenterPrevDisabled, presenterTimerProgress, pressuresToWidths, previousShowSlideIndex, printPropertiesFrameSlides, printPropertiesSlidesPerPage, promoteSmartArtNode, publishLiveGeometry, publishLiveInlineText, quickStyleSwatchCss, reResolveSlideColors, readBackstageRecentFile, readSlidesFromYDoc, readStoredViewerPrefs, readViewportMetrics, readingViewFitScale, rebuildDrawingShapesIfCleared, rebuildTableStructureInRawXml, reconcileSlidesInYDoc, recordProgressPercent, rectToCells, registerCollaborationTeardown, remapTextToSegments, removeChartCategory, removeChartSeries, removeLastTableElementColumn, removeLastTableElementRow, removeQuickAccessCommand, removeSmartArtNode, removeTableElementColumn, removeTableElementRow, renameSection, reorderSmartArtNode, rerouteConnectorsForMovedElements, resetPresenterTimer, resolveActionType, resolveAudienceScreenPlacement, resolveAutoAdvanceDelayMs, resolveAutoFitFontScale, resolveCssTextAlign, resolveDrawingShapeNodeId, resolveElementActionAffordance, resolveFontForScript, resolveFontRefIdx, resolveGroupChildFill, resolveInkColor, resolveInkOpacity, resolveInkWidth, resolveOleType, resolveParagraphAlign, resolveParagraphRtl, resolveParagraphStrutFontSize, resolvePictureBullet, resolveProfileInitial, resolveRegionCode, resolveShowSlideIndexes, resolveThemeCatalogEntry, resolveTitleBarStatusKey, resolveTransitionDurationMs, resolveTransportForServerUrl, resolveUnderlineDecorationStyle, resolveViewerAddinRows, restoreSegmentSelection, revealedSmartArtNodeCount, rulerDragToGuidePosition, runMediaCommand, runPresentationAction, safeOpenUrl, sanitizeColor, sanitizeDownloadFilename, sanitizeGradientStops, sanitizeMathMl, saveAutosaveSnapshot, saveViewerProfile, scanAvailableFontFamilies, schemaLabel, segmentByScript, segmentFrameCount, sendBackward, sendToBack, sequentialColorScale, seriesColor2 as seriesColor, setCachedResult, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartCategoryLabel, setChartCellValue, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartDataPointMarker, setChartSeriesChartType, setChartSeriesMarker, setDuotoneCachedResult, setMotionPath, setMotionPathEnd, setPendingSelectionRestore, setSmartArtNodeStyle, setTableElementCellText, shadeColor2, shouldAutoFollowBroadcaster, shouldCommitSmartArtNodeText, shouldConfirmExternalHyperlink, shouldLoopContinuously, shouldUseSvgWarp, slideProgressPercent, slideStatusLabel, snapBoxToGrid, splitCell, splitSeriesByAxis, stepPresenterZoom, storeAudienceContent, substituteFieldText, suppressesCssBorder, svgGradientFillRef, svgLineCap, svgPathToPolygons, swapPresentationWindows, switchSmartArtLayout, text3dEmuToPt, text3dPtToEmu, textBuildSpanStyle, themeColorSchemesEqual, themeToCssVars, tintColor2, toCssTextOrientation, toCssVerticalDirection, toCssWritingMode, toSlideIndex, togglePresenterTimer, toggleText3dExtrusion, transformTextCase, updateCellTextInRawXml, updateCellTextStyleInRawXml, updateMergeAttrsInRawXml, updateSmartArtNodeText, updateTagInCollections, validateRoomId, valueToY, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, viewerOptionsToPreferences, warpPreviewPath, withChartPointValue, withChartTitle, withFrameSlides, withSlidesPerPage, writeStoredViewerPrefs, zoomInScale, zoomOutScale };
114797
+ export { ACTION_BUTTON_PRESETS, ACTION_INDICATOR_CLASS, ACTION_INDICATOR_ICON_PATH, ARTISTIC_EFFECTS, AVATAR_COLOR_SWATCHES, BACKSTAGE_NAV, BACKSTAGE_TEMPLATES, BEVEL_PRESETS, BROADCAST_THROTTLE_MS, CATEGORIES, COLOR_MAP_ALIAS_KEYS, COMMON_FONTS, CONNECTION_TIMEOUT_MS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_COLOR_CHANGE_TOLERANCE, DEFAULT_COLOR_MAP, DEFAULT_INSERT_CHART_TYPE, DEFAULT_MOTION_PATH_PRESET_ID, DEFAULT_QUICK_ACCESS_COMMAND_IDS, DEFAULT_ROW_HEIGHT, DEFAULT_VIEWER_OPTIONS, DEFAULT_VIEWER_PROFILE, DEFAULT_VIRTUAL_OVERSCAN, DIRECTIONAL_PRESETS, DUOTONE_PRESETS, ELEMENT_ACTION_TYPE_OPTIONS, EMPHASIS_PRESET_VALUES, ENTRANCE_PRESET_VALUES, EQUATION_TEMPLATES, EXIT_PRESET_VALUES, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, EncryptedFileError, FILL_MODE_OPTIONS, FILL_PATTERN_LABEL_KEYS, GRADIENT_TYPE_OPTIONS, HANDOUT_OPTIONS, HIDDEN_SLIDE_LABEL_KEY, HIDDEN_SLIDE_SLASH_GRADIENT, HIGHLIGHTER_COLORS, INK_REPLAY_KEYFRAMES, INSERT_CHART_TYPES, LBL, 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_ZOOM_SCALE, MIN_ZOOM_SCALE, MOBILE_BREAKPOINT, MOTION_PATH_FAMILIES, NOTES_FONT_SIZE_DEFAULT, NOTES_FONT_SIZE_MAX, NOTES_FONT_SIZE_MIN, NOTES_FONT_SIZE_STEP, NUM, OUTLINE_LEVEL_ATTR, OUTLINE_ROW_ATTR, OUTLINE_SLIDE_ATTR, OUTLINE_VIEW_ATTR, PATTERN_OPTIONS, PEN_COLORS, PRESENTATION_CHANNEL_NAME, PRESENTATION_HASH, PRESENTATION_MESSAGE_ORIGIN, PRESENTATION_NONCE_KEY, PRESENTER_CONSOLE_CLASSES, PRESENTER_CONSOLE_CONTROLS, PRESENTER_NAVIGATOR_LABEL_KEYS, PRESENT_TOOLBAR_CLASSES, PRESETS, PRESET_THEMES, PptxHandler, PptxMarkdownConverter, PresentationAnimationController, QUICK_ACCESS_COMMAND_CATALOG, READING_VIEW_ATTR, READING_VIEW_COUNTER_ATTR, READING_VIEW_STAGE_ATTR, RULER_FONT_SIZE, RULER_THICKNESS, SECTION_HEADING, SEL, SHAPE_PRESET_DEFS, SHAPE_QUICK_STYLES, SHORTCUT_REFERENCE_ITEMS, SLIDE_TRANSITION_KEYFRAMES, SLIDE_TRANSITION_OPTIONS, SLIDE_VIRTUALIZATION_THRESHOLD, SMARTART_COLOR_SCHEME_LABEL_KEYS, SMARTART_STYLE_LABEL_KEYS, STATUS_BAR_CLASSES, SWITCHABLE_LAYOUT_TYPES, SvgExporter, TABLET_BREAKPOINT, TABLE_STYLE_PRESETS, TAB_ROW_ACTION_CLASSES, TEXT_BUILD_ID_SEP, TEXT_WARP_PRESETS, THEME_CATALOG, THEME_COLOR_LABELS, 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_ORIENTATION_TYPES, TRANSITION_VALID_DIRECTIONS, ThemePresets, VIEWER_OPTIONS_TABS, VIEWER_PREFS_STORAGE_KEY, VIEWER_SHORTCUT_REFERENCE, WEBM_MIME_CANDIDATES, acceptsPresentationInput, actionAffordanceLabels, activateModalFocus, addChartCategory, addChartSeries, addQuickAccessCommand, addSection, addSmartArtNode, addSmartArtNodeAsChild, addTagToCollections, alignElements, animationEffectLabel, appendPresentationInkPoint, appendTableElementColumn, appendTableElementRow, apply3dEffects, applyAcceptAllSlides, applyAcceptSlide, applyCaseTransformToSegments, applyChartBuildReveal, applyColorChange, applyDuotone, applyFormatToElement, applyMotionPathPreset, applyOutlineEdit, applyPreferenceToOptions, applyReadingViewCommand, applyRehearsalTimings, applyReroutedConnectors, applyResize, applyStyleToSelectedSegments, applyThemeOverrideToSlide, applyThemeToData, availableQuickAccessCommands, backstageCardsFor, bringForward, bringToFront, build3DExtrusionData, buildBroadcastViewerUrl, buildCacheKey, buildCalloutLeaderLineSvgPath, buildChartViewModel, buildCollaborationShareUrl, buildContextMenuEntries, buildCreateCollaborationConfig, buildCssGradientFromShapeStyle, buildDirectionGrid, buildDuotoneCacheKey, buildElementClipboardPayload, buildFieldSubstitutionContext, buildGlowBoxShadow, buildHandoutsHtml, buildInitialGuides, buildInnerShadowCssFromShapeStyle, buildJoinCollaborationConfig, buildMorphTransitionPlan, buildMotionPathPreview, buildMultiLayerShadowCss, buildNotesHtml, buildNotesPdfBytes, buildOutline, buildOutlineHtml, buildPatternFillCss, buildPresentationAudienceUrl, buildPreviewAnimation, buildPreviewElements, buildPrintDocument, buildPrintHtmlDocument, buildReflectionCss, buildShadowCssFromShapeStyle, buildSlidesHtml, buildSlidesPdfBytes, buildSmartArt3DModel, buildSmartArtA11y, buildSmartArtPresetData, buildStrokeOutline, buildSummaryZoomView, buildSvgGradientDef, buildTableDataGrid, buildTextBlockStyle, buildTextBody3DSceneStyle, buildTextBuildSpec, buildTextFillCss, buildTextReflectionCss, buildTextRunFilterChain, buildTextShadowCss, buildThemeColorGrid, buildThemeColorMap, buildUserFontFaceStyles, canCommitActionType, canGoNext, canGoPrevious, canvasToJpegData, cell3DBevelCss, chartAreaFill, chartDataChangeType, chartPartToAttrs, clampCropValue, clampNotesFontSize, clampPercent, clampTransitionNumber, clampUnitInterval2 as clampUnitInterval, clampZoomScale, clearAllLocalViewerData, clearAudienceContent, clearLocalAwareness, clearMotionPath, clearStoredViewerPrefs, cloneElementForPaste, cloneHistorySnapshot, cloneSlide, cloneTemplateElementsBySlideId, collectImagePaths, collectMediaElements, collectUsedFonts, colorWithOpacity, comparePresentation, compileEquationTemplateMathMl, compileLatexEquation, computeAllNotesPages, computeColumnBoundaries, computeEntranceAnimationDelay, computeHandoutLayout, computeInlineEditorRect, computeKeyboardInset, computeLayout, computeLayoutOptions, computeMarqueeHitIds, computeMergeCellDown, computeMergeCellRight, computeResizedColumnWidths, computeResizedRowHeight, computeScrollDelta, computeSelectionRect, computeSmartArtLayout2 as computeSmartArtLayout, computeSnapToShape, computeSplitCell, computeValueRange, computeValueRangeForChart, computeVirtualRange, convertLatexToOmml, convertOmmlToLatex, convertOmmlToMathMl, copyFormatFromElement, createBackstagePresentation, createBlankSlide, createCollaborationLivePatcher, createDefaultChartElement, createDepartureChannel, createInitialPresentationSnapshot, createPresentationKeyBuffer, createPresentationSessionId, createPresenterShowGuard, createPresenterTimer, createSyncGate, createTouchGestureRecognizer, createViewerOptionsStore, customGeometryPathsToSvgSubpaths, defaultCssVars, defaultRadius, defaultThemeColors, deleteAutosaveSnapshot, deleteSection, deleteTableColumn, deleteTableRow, deleteTagFromCollections, demoteSmartArtNode, derivePresenceList, deriveSlideFieldContext, detectOrientation, detectTouchDevice, distributeElements, downloadBlob, downloadDataUrl, dragAnchorViewY, dragValueForPart, elementActionToPptxAction, encodeGif, endAudienceDisplay, ensureActionAffordanceStyles, erasePresentationInkAt, evaluatePresetShape, extraQuickAccessCommands, extractPathPoints, filterCommands, filterRenderedElements, findChartPartTarget, findMediaElementByElementId, findSmartArtNodeText, firstShowSlideIndex, flattenTagCollections, formatAxisValue, formatAxisValueWithUnits, formatBackstageDate, formatBackstageSize, formatBytes, formatCommentTimestamp, formatElapsed, formatMobileElapsed, formatRelativeTime, formatSlideCounter, formatTime, formatVersionTimestamp, fpsToFrameIntervalMs, generateBroadcastRoomId, generateElementId, generateLogTicks, generateNoteLineCount, generatePackageReadme, generatePressureCircles, generateTicks, getAnimationInitialStyle, getAriaLabel, getAriaRole, getAriaRoleDescription, getCachedResult, getCalloutLeaderLineGeometry, getCalloutViewBoxBounds, getCellDiagonalBorders, getChartStylePalette, getCommentMarkerPosition, getCompoundLineBorderWidth, getCompoundLineBoxShadow, getCompoundLineOffsets, getCompoundLineWidths, getComputedEffectStyle, getConnectionSites, getContentPartReplayStyles, getCssBorderDashStyle, getDisplayUnitLabel, getDuotoneCachedResult, getEffectDagFilter, getElementLabel, getElementTransform, getElementTransformWithoutRotation, getGradientTileFlipCss, getGradientTileRectCss, getGroupChildParentFill, getImageColorWashStyle, getImageEffectsFilter, getImageEffectsOpacity, getImageFitStyle, getImageSvgFilters, getInkReplayStyles, getInlineEditorSelection, getKinsokuLineBreakStyles, getLocalStorageUsageSummary, getNotesPrintableArea, getOleBadgeLabel, getOleObjectTypeLabel, getOleTypeColor, getOleTypeLabel, getOverflowSegments, getPatternSvg, getPendingSelectionRestore, getPresetShapeClipPath, getPrintableArea, getResolvedShapeClipPath, getRoundRectRadiusPx, getSecondaryValueAxis, getShapeAdjustmentHandleDescriptor, getSlideBackgroundStyle, getSlideTransitionAnimations, getSoftEdgeFilterId, getSoftEdgeSvgFilter, getSubstituteFontFamily, getSvgStrokeDasharray, getTextAlphaOpacity, getTextCompensationTransform, getWarpPath, groupElements, groupIntoParagraphs, groupSlidesBySection, guidePxToEmu, handleReadingViewKey, hasCopyableFormat, hasDistinctScriptFonts, hasPressureVariation, hasShapeProperties, hasShowSlideAfter, hasTextProperties, hexToRgbChannels2 as hexToRgbChannels, hiddenSlideCue, insertTableColumn, insertTableRow, isActionHidden, isBrowserOpenableMime, isCalloutShape, isCellInRect, isEditableMotionPath, isEditableTextElement, isEditorTextInputTarget, isElementActionable, isElementRendered, isExportAbortError, isImageLikeElement, isInkElement, isKeyboardOpen, isLinkedTextBox, isMixedContentBlocked, isMobileViewport, isPpactionUrl, isPresentationAdvanceClick, isPresentationSessionMessage, isTemplateElement, isTemplateElementId2 as isTemplateElementId, isUrlSafe, lastShowSlideIndex, listAutosaveSnapshots, listBackstageRecentFiles, loadAudienceContent, makeCloneId, makeSlideId, mapEditorKey, mapOutlineKey, mapPresentationKey, mayLeaveSlideShow, mediaPlaybackAttributes, mediaTransportVisible, mergeAdditiveSelection, mergeCells, mergePresentationSnapshot, mergeShapes, mergeSlideTransition, mobileElapsedSince, mobileSlideCounter, morphOptionToMode, motionPathEndPixel, motionPathFamilyLabelKey, motionPathFor, motionPathPresetIdForPath, motionPathPresetLabelKey, motionPathPresetsByFamily, motionPathToSvgD, mountModel3D, mountSurfaceChart3D, movePresenterPointer, moveQuickAccessCommand, moveSectionDown, moveSectionUp, moveSlidesToSection, newTableElement, nextPresentedSlide, nextShowSlideIndex, normalizeColorsForCapture, normalizeHexColor, normalizeStrokeDashType, normalizeValue, notesSegmentsToSpans, observeYDocSlides, ooxmlDashToCssBorderStyle, ooxmlGradientAngleToCssDegrees, openNativeEyeDropper, openPptxFile, openReadingView, openUrlInNewTab, paletteColor, parseDrawingColor, parseDrawingColorOpacity, parsePanoseString, parsePpactionUrl, pickSupportedMimeType, placeAudienceWindow, polygonsToSvgPath, pptxActionToElementAction, preprocessCssForCapture, presentationInkPath, presenterElapsed, presenterNextDisabled, presenterPaneAdvancesOnClick, presenterPrevDisabled, presenterTimerProgress, pressuresToWidths, previousShowSlideIndex, printPropertiesFrameSlides, printPropertiesSlidesPerPage, promoteSmartArtNode, publishLiveGeometry, publishLiveInlineText, quickStyleSwatchCss, reResolveSlideColors, readBackstageRecentFile, readSlidesFromYDoc, readStoredViewerPrefs, readViewportMetrics, readingViewFitScale, rebuildDrawingShapesIfCleared, rebuildTableStructureInRawXml, reconcileSlidesInYDoc, recordProgressPercent, rectToCells, registerCollaborationTeardown, remapTextToSegments, removeChartCategory, removeChartSeries, removeLastTableElementColumn, removeLastTableElementRow, removeQuickAccessCommand, removeSmartArtNode, removeTableElementColumn, removeTableElementRow, renameSection, reorderSmartArtNode, rerouteConnectorsForMovedElements, resetPresenterTimer, resolveActionType, resolveAudienceScreenPlacement, resolveAutoAdvanceDelayMs, resolveAutoFitFontScale, resolveCssTextAlign, resolveDrawingShapeNodeId, resolveElementActionAffordance, resolveFontForScript, resolveFontRefIdx, resolveGroupChildFill, resolveInkColor, resolveInkOpacity, resolveInkWidth, resolveOleType, resolveParagraphAlign, resolveParagraphRtl, resolveParagraphStrutFontSize, resolvePictureBullet, resolveProfileInitial, resolveRegionCode, resolveShowSlideIndexes, resolveThemeCatalogEntry, resolveTitleBarStatusKey, resolveTransitionDurationMs, resolveTransportForServerUrl, resolveUnderlineDecorationStyle, resolveViewerAddinRows, restoreSegmentSelection, revealedSmartArtNodeCount, rulerDragToGuidePosition, runMediaCommand, runPresentationAction, safeOpenUrl, sanitizeColor, sanitizeDownloadFilename, sanitizeGradientStops, sanitizeMathMl, saveAutosaveSnapshot, saveViewerProfile, scanAvailableFontFamilies, schemaLabel, segmentByScript, segmentFrameCount, sendBackward, sendToBack, sequentialColorScale, seriesColor2 as seriesColor, setCachedResult, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartCategoryLabel, setChartCellValue, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartDataPointMarker, setChartSeriesChartType, setChartSeriesMarker, setDuotoneCachedResult, setMotionPath, setMotionPathEnd, setPendingSelectionRestore, setSmartArtNodeStyle, setTableElementCellText, shadeColor2, shouldAutoFollowBroadcaster, shouldCommitSmartArtNodeText, shouldConfirmExternalHyperlink, shouldLoopContinuously, shouldUseSvgWarp, slideProgressPercent, slideStatusLabel, snapBoxToGrid, splitCell, splitSeriesByAxis, stepPresenterZoom, storeAudienceContent, substituteFieldText, suppressesCssBorder, svgGradientFillRef, svgLineCap, svgPathToPolygons, swapPresentationWindows, switchSmartArtLayout, text3dEmuToPt, text3dPtToEmu, textBuildSpanStyle, themeColorSchemesEqual, themeToCssVars, tintColor2, toCssTextOrientation, toCssVerticalDirection, toCssWritingMode, toSlideIndex, togglePresenterTimer, toggleText3dExtrusion, transformTextCase, updateCellTextInRawXml, updateCellTextStyleInRawXml, updateMergeAttrsInRawXml, updateSmartArtNodeText, updateTagInCollections, validateRoomId, valueToY, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, viewerOptionsToPreferences, warpPreviewPath, withChartPointValue, withChartTitle, withFrameSlides, withSlidesPerPage, writeStoredViewerPrefs, zoomInScale, zoomOutScale };