pptx-react-viewer 2.13.0 → 2.13.2

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 (103) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/{AiChatPanel-DEI3EQFM.js → AiChatPanel-F4E3A2DE.js} +35 -27
  3. package/dist/AiChatPanel-F4E3A2DE.js.br +0 -0
  4. package/dist/AiChatPanel-F4E3A2DE.js.gz +0 -0
  5. package/dist/{AiChatPanel-4YS6DEIT.mjs → AiChatPanel-VEULATXX.mjs} +15 -7
  6. package/dist/AiChatPanel-VEULATXX.mjs.br +0 -0
  7. package/dist/AiChatPanel-VEULATXX.mjs.gz +0 -0
  8. package/dist/{Model3DScene-JSNQCKCJ.mjs → Model3DScene-KIPEODEJ.mjs} +1 -1
  9. package/dist/Model3DScene-KIPEODEJ.mjs.br +0 -0
  10. package/dist/Model3DScene-KIPEODEJ.mjs.gz +0 -0
  11. package/dist/{Model3DScene-X4W7GZVY.js → Model3DScene-TD2LIHYP.js} +2 -2
  12. package/dist/Model3DScene-TD2LIHYP.js.br +0 -0
  13. package/dist/Model3DScene-TD2LIHYP.js.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-3MSU74YH.mjs → SurfaceChart3DScene-GRBWZ52S.mjs} +1 -1
  15. package/dist/{SurfaceChart3DScene-3MSU74YH.mjs.br → SurfaceChart3DScene-GRBWZ52S.mjs.br} +0 -0
  16. package/dist/SurfaceChart3DScene-GRBWZ52S.mjs.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-IZLUWT27.js → SurfaceChart3DScene-OTKXQH5O.js} +2 -2
  18. package/dist/SurfaceChart3DScene-OTKXQH5O.js.br +0 -0
  19. package/dist/SurfaceChart3DScene-OTKXQH5O.js.gz +0 -0
  20. package/dist/{chunk-YA7VFYTW.mjs → chunk-3HWE6QZG.mjs} +16 -7
  21. package/dist/chunk-3HWE6QZG.mjs.br +0 -0
  22. package/dist/chunk-3HWE6QZG.mjs.gz +0 -0
  23. package/dist/{chunk-RWIQHVZQ.js → chunk-BNSCH4WT.js} +340 -326
  24. package/dist/chunk-BNSCH4WT.js.br +0 -0
  25. package/dist/chunk-BNSCH4WT.js.gz +0 -0
  26. package/dist/{chunk-IDW5UPXW.js → chunk-DOS7NY7C.js} +259 -295
  27. package/dist/chunk-DOS7NY7C.js.br +0 -0
  28. package/dist/chunk-DOS7NY7C.js.gz +0 -0
  29. package/dist/{chunk-SHZ3GWOD.js → chunk-EUQ2IER3.js} +1046 -1037
  30. package/dist/chunk-EUQ2IER3.js.br +0 -0
  31. package/dist/chunk-EUQ2IER3.js.gz +0 -0
  32. package/dist/{chunk-EFSQW6S5.js → chunk-FDR5W67L.js} +713 -349
  33. package/dist/chunk-FDR5W67L.js.br +0 -0
  34. package/dist/chunk-FDR5W67L.js.gz +0 -0
  35. package/dist/{chunk-4TD7EINA.mjs → chunk-GKOKCOXR.mjs} +709 -350
  36. package/dist/chunk-GKOKCOXR.mjs.br +0 -0
  37. package/dist/chunk-GKOKCOXR.mjs.gz +0 -0
  38. package/dist/{chunk-HRLF4REI.mjs → chunk-GZ6TXBEO.mjs} +21 -56
  39. package/dist/chunk-GZ6TXBEO.mjs.br +0 -0
  40. package/dist/chunk-GZ6TXBEO.mjs.gz +0 -0
  41. package/dist/{chunk-WEU5EMKK.mjs → chunk-L5YGPCQW.mjs} +1 -1
  42. package/dist/chunk-L5YGPCQW.mjs.br +0 -0
  43. package/dist/chunk-L5YGPCQW.mjs.gz +0 -0
  44. package/dist/{chunk-G2LZT5SV.js → chunk-VY3KLDJF.js} +3 -3
  45. package/dist/chunk-VY3KLDJF.js.br +0 -0
  46. package/dist/chunk-VY3KLDJF.js.gz +0 -0
  47. package/dist/{chunk-6KRNQ2KF.mjs → chunk-ZFRPPY2N.mjs} +16 -2
  48. package/dist/chunk-ZFRPPY2N.mjs.br +0 -0
  49. package/dist/chunk-ZFRPPY2N.mjs.gz +0 -0
  50. package/dist/index.d.ts +14 -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 +14 -0
  58. package/dist/internals.d.ts.map +1 -1
  59. package/dist/internals.js +78 -78
  60. package/dist/internals.js.br +0 -0
  61. package/dist/internals.js.gz +0 -0
  62. package/dist/internals.mjs +3 -3
  63. package/dist/internals.mjs.br +0 -0
  64. package/dist/internals.mjs.gz +0 -0
  65. package/dist/viewer/index.d.ts +14 -0
  66. package/dist/viewer/index.js +21 -21
  67. package/dist/viewer/index.js.br +0 -0
  68. package/dist/viewer/index.js.gz +0 -0
  69. package/dist/viewer/index.mjs +5 -5
  70. package/dist/viewer/index.mjs.br +0 -0
  71. package/dist/viewer/index.mjs.gz +0 -0
  72. package/package.json +1 -1
  73. package/dist/AiChatPanel-4YS6DEIT.mjs.br +0 -0
  74. package/dist/AiChatPanel-4YS6DEIT.mjs.gz +0 -0
  75. package/dist/AiChatPanel-DEI3EQFM.js.br +0 -0
  76. package/dist/AiChatPanel-DEI3EQFM.js.gz +0 -0
  77. package/dist/Model3DScene-JSNQCKCJ.mjs.br +0 -0
  78. package/dist/Model3DScene-JSNQCKCJ.mjs.gz +0 -0
  79. package/dist/Model3DScene-X4W7GZVY.js.br +0 -0
  80. package/dist/Model3DScene-X4W7GZVY.js.gz +0 -0
  81. package/dist/SurfaceChart3DScene-3MSU74YH.mjs.gz +0 -0
  82. package/dist/SurfaceChart3DScene-IZLUWT27.js.br +0 -0
  83. package/dist/SurfaceChart3DScene-IZLUWT27.js.gz +0 -0
  84. package/dist/chunk-4TD7EINA.mjs.br +0 -0
  85. package/dist/chunk-4TD7EINA.mjs.gz +0 -0
  86. package/dist/chunk-6KRNQ2KF.mjs.br +0 -0
  87. package/dist/chunk-6KRNQ2KF.mjs.gz +0 -0
  88. package/dist/chunk-EFSQW6S5.js.br +0 -0
  89. package/dist/chunk-EFSQW6S5.js.gz +0 -0
  90. package/dist/chunk-G2LZT5SV.js.br +0 -0
  91. package/dist/chunk-G2LZT5SV.js.gz +0 -0
  92. package/dist/chunk-HRLF4REI.mjs.br +0 -0
  93. package/dist/chunk-HRLF4REI.mjs.gz +0 -0
  94. package/dist/chunk-IDW5UPXW.js.br +0 -0
  95. package/dist/chunk-IDW5UPXW.js.gz +0 -0
  96. package/dist/chunk-RWIQHVZQ.js.br +0 -0
  97. package/dist/chunk-RWIQHVZQ.js.gz +0 -0
  98. package/dist/chunk-SHZ3GWOD.js.br +0 -0
  99. package/dist/chunk-SHZ3GWOD.js.gz +0 -0
  100. package/dist/chunk-WEU5EMKK.mjs.br +0 -0
  101. package/dist/chunk-WEU5EMKK.mjs.gz +0 -0
  102. package/dist/chunk-YA7VFYTW.mjs.br +0 -0
  103. package/dist/chunk-YA7VFYTW.mjs.gz +0 -0
@@ -15896,30 +15896,133 @@ var PptxCommentXmlFactoryProvider = class {
15896
15896
  return new PptxCommentAuthorsXmlFactory();
15897
15897
  }
15898
15898
  };
15899
+ var P14_TRANSITION_TYPES = /* @__PURE__ */ new Set([
15900
+ "conveyor",
15901
+ "doors",
15902
+ "ferris",
15903
+ "flash",
15904
+ "flythrough",
15905
+ "gallery",
15906
+ "glitter",
15907
+ "honeycomb",
15908
+ "pan",
15909
+ "prism",
15910
+ "reveal",
15911
+ "ripple",
15912
+ "shred",
15913
+ "switch",
15914
+ "vortex",
15915
+ "warp",
15916
+ "wheelReverse",
15917
+ "window",
15918
+ "cube",
15919
+ "flip",
15920
+ "rotate",
15921
+ "orbit"
15922
+ ]);
15923
+ function readP14Details(localName22, value) {
15924
+ const type = localName22;
15925
+ let direction;
15926
+ let orient;
15927
+ let pattern;
15928
+ if (value && typeof value === "object" && !Array.isArray(value)) {
15929
+ const detail = value;
15930
+ const rawDir = String(detail["@_dir"] || "").trim();
15931
+ if (rawDir.length > 0) {
15932
+ direction = rawDir;
15933
+ }
15934
+ const rawOrient = String(detail["@_orient"] || "").trim();
15935
+ if (rawOrient === "horz" || rawOrient === "vert") {
15936
+ orient = rawOrient;
15937
+ }
15938
+ const rawPattern = String(detail["@_pattern"] || "").trim();
15939
+ if (rawPattern.length > 0) {
15940
+ pattern = rawPattern;
15941
+ }
15942
+ }
15943
+ return { type, direction, orient, pattern };
15944
+ }
15945
+ function parseP14DirectChild(transitionNode, getXmlLocalName) {
15946
+ for (const [key, value] of Object.entries(transitionNode)) {
15947
+ if (key.startsWith("@_")) {
15948
+ continue;
15949
+ }
15950
+ const localName22 = getXmlLocalName(key);
15951
+ if (P14_TRANSITION_TYPES.has(localName22)) {
15952
+ return readP14Details(localName22, value);
15953
+ }
15954
+ }
15955
+ return void 0;
15956
+ }
15957
+ function parseP14FromExtLst(extLstNode, xmlLookupService, getXmlLocalName) {
15958
+ const extEntries = xmlLookupService.getChildrenArrayByLocalName(extLstNode, "ext");
15959
+ for (const ext of extEntries) {
15960
+ if (!ext) {
15961
+ continue;
15962
+ }
15963
+ for (const [key, value] of Object.entries(ext)) {
15964
+ if (key.startsWith("@_")) {
15965
+ continue;
15966
+ }
15967
+ const localName22 = getXmlLocalName(key);
15968
+ if (!P14_TRANSITION_TYPES.has(localName22)) {
15969
+ continue;
15970
+ }
15971
+ return readP14Details(localName22, value);
15972
+ }
15973
+ }
15974
+ return void 0;
15975
+ }
15976
+ function buildP14ExtLst(transitionType, direction, orient, pattern, rawExtLst, xmlLookupService, getXmlLocalName) {
15977
+ const p14Child = {};
15978
+ const dir = String(direction || "").trim();
15979
+ if (dir.length > 0) {
15980
+ p14Child["@_dir"] = dir;
15981
+ }
15982
+ if (orient) {
15983
+ p14Child["@_orient"] = orient;
15984
+ }
15985
+ if (pattern) {
15986
+ p14Child["@_pattern"] = pattern;
15987
+ }
15988
+ const transitionExt = {
15989
+ "@_uri": "{CE6CE671-F284-4235-B8B7-4F3F06D5A82C}",
15990
+ [`p14:${transitionType}`]: p14Child
15991
+ };
15992
+ if (rawExtLst) {
15993
+ const existing = xmlLookupService.getChildrenArrayByLocalName(rawExtLst, "ext");
15994
+ const otherExts = existing.filter((ext) => {
15995
+ if (!ext) {
15996
+ return false;
15997
+ }
15998
+ for (const key of Object.keys(ext)) {
15999
+ if (key.startsWith("@_")) {
16000
+ continue;
16001
+ }
16002
+ const localName22 = getXmlLocalName(key);
16003
+ if (P14_TRANSITION_TYPES.has(localName22)) {
16004
+ return false;
16005
+ }
16006
+ }
16007
+ return true;
16008
+ });
16009
+ const allExts = [transitionExt, ...otherExts];
16010
+ return { "p:ext": allExts.length === 1 ? allExts[0] : allExts };
16011
+ }
16012
+ return { "p:ext": transitionExt };
16013
+ }
15899
16014
  var MC_NAMESPACE_CAPABILITIES = {
16015
+ // Office 2010 (p14) transitions are shared with the parser's canonical
16016
+ // list (`P14_TRANSITION_TYPES`) so the two can never drift apart again:
16017
+ // this set used to be a hand-copied subset that was missing `reveal` and
16018
+ // `ripple`, so every `mc:Choice Requires="p14"` carrying one of them
16019
+ // reported `UNSUPPORTED_ALTERNATE_CONTENT_CHOICE` and silently used the
16020
+ // fallback fade even though the parser handles both. The extra names are
16021
+ // the non-transition p14 features we also parse.
15900
16022
  p14: /* @__PURE__ */ new Set([
16023
+ ...P14_TRANSITION_TYPES,
15901
16024
  "transition",
15902
- "conveyor",
15903
- "pan",
15904
- "glitter",
15905
- "prism",
15906
- "vortex",
15907
- "switch",
15908
- "flip",
15909
- "gallery",
15910
- "honeycomb",
15911
- "flash",
15912
- "shred",
15913
- "warp",
15914
- "flythrough",
15915
- "doors",
15916
- "window",
15917
- "ferris",
15918
16025
  "newsflash",
15919
- "wheelReverse",
15920
- "rotate",
15921
- "orbit",
15922
- "cube",
15923
16026
  "media",
15924
16027
  "trim",
15925
16028
  "fade",
@@ -15928,6 +16031,17 @@ var MC_NAMESPACE_CAPABILITIES = {
15928
16031
  "hiddenFill",
15929
16032
  "hiddenLine"
15930
16033
  ]),
16034
+ // PowerPoint 2013+ writes its preset transitions (Origami, Fracture, Peel
16035
+ // Off, Page Curl, ...) as `<p15:prstTrans prst="...">`, either inside an
16036
+ // `mc:Choice Requires="p15"` or in a `p:transition/p:extLst` extension.
16037
+ // Both forms are parsed (see `PptxSlideTransitionService`), so the choice
16038
+ // IS supported: without this entry every p15 slide reported
16039
+ // `UNSUPPORTED_ALTERNATE_CONTENT_CHOICE`, which reads as "the transition
16040
+ // was dropped and the fallback fade was used" when in fact the preset
16041
+ // plays. `prstTrans` alone is listed on purpose: any OTHER `p15:*`
16042
+ // element still makes the choice unsupported and falls back, which is
16043
+ // the honest answer.
16044
+ p15: /* @__PURE__ */ new Set(["prstTrans"]),
15931
16045
  // PowerPoint 2016+ writes the Morph transition as `<p159:morph @option>`,
15932
16046
  // either inside an `mc:Choice Requires="p159"` or in a `p:transition/p:extLst`
15933
16047
  // extension. Both forms are parsed (see `PptxSlideTransitionService`), so the
@@ -19904,6 +20018,74 @@ function extractChildBehaviourDurationMs(cTn, toArray2) {
19904
20018
  }
19905
20019
  return longest;
19906
20020
  }
20021
+ var defaultLookup = new PptxXmlLookupService();
20022
+ function resolveSlideTimingNode(slideRoot) {
20023
+ const direct = slideRoot?.["p:timing"];
20024
+ if (direct && typeof direct === "object" && !Array.isArray(direct)) {
20025
+ return direct;
20026
+ }
20027
+ return findEnvelopeChildByLocalName(slideRoot, "timing", defaultLookup);
20028
+ }
20029
+ function findTransitionInAlternateContent(slideRoot, lookup) {
20030
+ return findEnvelopeChildByLocalName(slideRoot, "transition", lookup);
20031
+ }
20032
+ function findEnvelopeChildByLocalName(slideRoot, localName22, lookup) {
20033
+ for (const envelope of lookup.getChildrenArrayByLocalName(slideRoot, "AlternateContent")) {
20034
+ let unsupportedChoiceNode;
20035
+ for (const choice of lookup.getChildrenArrayByLocalName(envelope, "Choice")) {
20036
+ const node = lookup.getChildByLocalName(choice, localName22);
20037
+ if (!node) {
20038
+ continue;
20039
+ }
20040
+ if (isAlternateContentChoiceSupported(choice)) {
20041
+ return node;
20042
+ }
20043
+ unsupportedChoiceNode ??= node;
20044
+ }
20045
+ const fallbackNode = lookup.getChildByLocalName(
20046
+ lookup.getChildByLocalName(envelope, "Fallback"),
20047
+ localName22
20048
+ );
20049
+ const found = fallbackNode ?? unsupportedChoiceNode;
20050
+ if (found) {
20051
+ return found;
20052
+ }
20053
+ }
20054
+ return void 0;
20055
+ }
20056
+ function preservedP14ChildKey(node, transitionType, getXmlLocalName) {
20057
+ for (const key of Object.keys(node)) {
20058
+ if (!key.startsWith("@_") && getXmlLocalName(key) === transitionType) {
20059
+ return key;
20060
+ }
20061
+ }
20062
+ return void 0;
20063
+ }
20064
+ function preservedP15ChildKey(node, transitionType, getXmlLocalName) {
20065
+ for (const [key, value] of Object.entries(node)) {
20066
+ if (key.startsWith("@_") || getXmlLocalName(key) !== "prstTrans") {
20067
+ continue;
20068
+ }
20069
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
20070
+ continue;
20071
+ }
20072
+ if (String(value["@_prst"] || "").trim() === transitionType) {
20073
+ return key;
20074
+ }
20075
+ }
20076
+ return void 0;
20077
+ }
20078
+ function pruneDirectExtensionChildren(node, getXmlLocalName, keepKey) {
20079
+ for (const key of Object.keys(node)) {
20080
+ if (key === keepKey || key.startsWith("@_")) {
20081
+ continue;
20082
+ }
20083
+ const localName22 = getXmlLocalName(key);
20084
+ if (P14_TRANSITION_TYPES.has(localName22) || localName22 === "prstTrans") {
20085
+ delete node[key];
20086
+ }
20087
+ }
20088
+ }
19907
20089
  function isInteractiveSequence(seq) {
19908
20090
  const cTn = seq["p:cTn"];
19909
20091
  if (!cTn || String(cTn["@_nodeType"] || "") === "mainSeq") {
@@ -19925,7 +20107,7 @@ var PptxNativeAnimationService = class {
19925
20107
  */
19926
20108
  parseNativeAnimations(slideXml2) {
19927
20109
  try {
19928
- const timing = slideXml2?.["p:sld"]?.["p:timing"];
20110
+ const timing = resolveSlideTimingNode(slideXml2?.["p:sld"]);
19929
20111
  if (!timing || typeof timing !== "object") {
19930
20112
  return void 0;
19931
20113
  }
@@ -20303,106 +20485,6 @@ var PptxNativeAnimationService = class {
20303
20485
  }
20304
20486
  }
20305
20487
  };
20306
- var P14_TRANSITION_TYPES = /* @__PURE__ */ new Set([
20307
- "conveyor",
20308
- "doors",
20309
- "ferris",
20310
- "flash",
20311
- "flythrough",
20312
- "gallery",
20313
- "glitter",
20314
- "honeycomb",
20315
- "pan",
20316
- "prism",
20317
- "reveal",
20318
- "ripple",
20319
- "shred",
20320
- "switch",
20321
- "vortex",
20322
- "warp",
20323
- "wheelReverse",
20324
- "window",
20325
- "cube",
20326
- "flip",
20327
- "rotate",
20328
- "orbit"
20329
- ]);
20330
- function parseP14FromExtLst(extLstNode, xmlLookupService, getXmlLocalName) {
20331
- const extEntries = xmlLookupService.getChildrenArrayByLocalName(extLstNode, "ext");
20332
- for (const ext of extEntries) {
20333
- if (!ext) {
20334
- continue;
20335
- }
20336
- for (const [key, value] of Object.entries(ext)) {
20337
- if (key.startsWith("@_")) {
20338
- continue;
20339
- }
20340
- const localName22 = getXmlLocalName(key);
20341
- if (!P14_TRANSITION_TYPES.has(localName22)) {
20342
- continue;
20343
- }
20344
- const type = localName22;
20345
- let direction;
20346
- let orient;
20347
- let pattern;
20348
- if (value && typeof value === "object" && !Array.isArray(value)) {
20349
- const detail = value;
20350
- const rawDir = String(detail["@_dir"] || "").trim();
20351
- if (rawDir.length > 0) {
20352
- direction = rawDir;
20353
- }
20354
- const rawOrient = String(detail["@_orient"] || "").trim();
20355
- if (rawOrient === "horz" || rawOrient === "vert") {
20356
- orient = rawOrient;
20357
- }
20358
- const rawPattern = String(detail["@_pattern"] || "").trim();
20359
- if (rawPattern.length > 0) {
20360
- pattern = rawPattern;
20361
- }
20362
- }
20363
- return { type, direction, orient, pattern };
20364
- }
20365
- }
20366
- return void 0;
20367
- }
20368
- function buildP14ExtLst(transitionType, direction, orient, pattern, rawExtLst, xmlLookupService, getXmlLocalName) {
20369
- const p14Child = {};
20370
- const dir = String(direction || "").trim();
20371
- if (dir.length > 0) {
20372
- p14Child["@_dir"] = dir;
20373
- }
20374
- if (orient) {
20375
- p14Child["@_orient"] = orient;
20376
- }
20377
- if (pattern) {
20378
- p14Child["@_pattern"] = pattern;
20379
- }
20380
- const transitionExt = {
20381
- "@_uri": "{CE6CE671-F284-4235-B8B7-4F3F06D5A82C}",
20382
- [`p14:${transitionType}`]: p14Child
20383
- };
20384
- if (rawExtLst) {
20385
- const existing = xmlLookupService.getChildrenArrayByLocalName(rawExtLst, "ext");
20386
- const otherExts = existing.filter((ext) => {
20387
- if (!ext) {
20388
- return false;
20389
- }
20390
- for (const key of Object.keys(ext)) {
20391
- if (key.startsWith("@_")) {
20392
- continue;
20393
- }
20394
- const localName22 = getXmlLocalName(key);
20395
- if (P14_TRANSITION_TYPES.has(localName22)) {
20396
- return false;
20397
- }
20398
- }
20399
- return true;
20400
- });
20401
- const allExts = [transitionExt, ...otherExts];
20402
- return { "p:ext": allExts.length === 1 ? allExts[0] : allExts };
20403
- }
20404
- return { "p:ext": transitionExt };
20405
- }
20406
20488
  var P15_TRANSITION_PRESETS = /* @__PURE__ */ new Set([
20407
20489
  "fallOver",
20408
20490
  "drape",
@@ -20428,6 +20510,36 @@ function optionalBoolean(value) {
20428
20510
  }
20429
20511
  return void 0;
20430
20512
  }
20513
+ function readPrstTrans(value) {
20514
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
20515
+ return void 0;
20516
+ }
20517
+ const detail = value;
20518
+ const prst = String(detail["@_prst"] || "").trim();
20519
+ if (!P15_TRANSITION_PRESETS.has(prst)) {
20520
+ return void 0;
20521
+ }
20522
+ return {
20523
+ type: prst,
20524
+ invX: optionalBoolean(detail["@_invX"]),
20525
+ invY: optionalBoolean(detail["@_invY"])
20526
+ };
20527
+ }
20528
+ function parseP15DirectChild(transitionNode, getXmlLocalName) {
20529
+ for (const [key, value] of Object.entries(transitionNode)) {
20530
+ if (key.startsWith("@_")) {
20531
+ continue;
20532
+ }
20533
+ if (getXmlLocalName(key) !== "prstTrans") {
20534
+ continue;
20535
+ }
20536
+ const result = readPrstTrans(value);
20537
+ if (result) {
20538
+ return result;
20539
+ }
20540
+ }
20541
+ return void 0;
20542
+ }
20431
20543
  function parseP15FromExtLst(extLstNode, xmlLookupService, getXmlLocalName) {
20432
20544
  const extEntries = xmlLookupService.getChildrenArrayByLocalName(extLstNode, "ext");
20433
20545
  for (const ext of extEntries) {
@@ -20441,19 +20553,10 @@ function parseP15FromExtLst(extLstNode, xmlLookupService, getXmlLocalName) {
20441
20553
  if (getXmlLocalName(key) !== "prstTrans") {
20442
20554
  continue;
20443
20555
  }
20444
- if (!value || typeof value !== "object" || Array.isArray(value)) {
20445
- continue;
20446
- }
20447
- const detail = value;
20448
- const prst = String(detail["@_prst"] || "").trim();
20449
- if (!P15_TRANSITION_PRESETS.has(prst)) {
20450
- continue;
20556
+ const result = readPrstTrans(value);
20557
+ if (result) {
20558
+ return result;
20451
20559
  }
20452
- return {
20453
- type: prst,
20454
- invX: optionalBoolean(detail["@_invX"]),
20455
- invY: optionalBoolean(detail["@_invY"])
20456
- };
20457
20560
  }
20458
20561
  }
20459
20562
  return void 0;
@@ -20702,6 +20805,69 @@ function validUnsignedInteger(value, min = 0) {
20702
20805
  return Number.isInteger(value) && Number(value) >= min && Number(value) <= UINT_MAX;
20703
20806
  }
20704
20807
  var MORPH_EXT_URI = "{C7C9D14B-FE2A-4D35-B620-AB07D5B017F4}";
20808
+ function parseMorphFromExtLst(extLstNode, xmlLookupService, getXmlLocalName) {
20809
+ const extEntries = xmlLookupService.getChildrenArrayByLocalName(extLstNode, "ext");
20810
+ for (const ext of extEntries) {
20811
+ if (!ext) {
20812
+ continue;
20813
+ }
20814
+ for (const [key, value] of Object.entries(ext)) {
20815
+ if (key.startsWith("@_")) {
20816
+ continue;
20817
+ }
20818
+ if (getXmlLocalName(key) === "morph") {
20819
+ return {
20820
+ morphOption: normalizeMorphOption(value?.["@_option"])
20821
+ };
20822
+ }
20823
+ }
20824
+ }
20825
+ return void 0;
20826
+ }
20827
+ function hasDirectMorphChild(node, getXmlLocalName) {
20828
+ for (const key of Object.keys(node)) {
20829
+ if (!key.startsWith("@_") && getXmlLocalName(key) === "morph") {
20830
+ return true;
20831
+ }
20832
+ }
20833
+ return false;
20834
+ }
20835
+ function buildMorphExtLst(rawExtLst, morphOption, xmlLookupService, getXmlLocalName) {
20836
+ const morphNode = {
20837
+ "@_xmlns:p159": "http://schemas.microsoft.com/office/powerpoint/2015/09/main"
20838
+ };
20839
+ if (morphOption) {
20840
+ morphNode["@_option"] = morphOption;
20841
+ }
20842
+ const morphExt = {
20843
+ "@_uri": MORPH_EXT_URI,
20844
+ "p159:morph": morphNode
20845
+ };
20846
+ if (!rawExtLst) {
20847
+ return { "p:ext": morphExt };
20848
+ }
20849
+ const existing = xmlLookupService.getChildrenArrayByLocalName(rawExtLst, "ext");
20850
+ const otherExts = existing.filter((ext) => {
20851
+ if (!ext) {
20852
+ return false;
20853
+ }
20854
+ const uri = String(ext["@_uri"] || "").trim();
20855
+ if (uri.toUpperCase() === MORPH_EXT_URI.toUpperCase()) {
20856
+ return false;
20857
+ }
20858
+ for (const key of Object.keys(ext)) {
20859
+ if (key.startsWith("@_")) {
20860
+ continue;
20861
+ }
20862
+ if (getXmlLocalName(key) === "morph") {
20863
+ return false;
20864
+ }
20865
+ }
20866
+ return true;
20867
+ });
20868
+ const allExts = [morphExt, ...otherExts];
20869
+ return { "p:ext": allExts.length === 1 ? allExts[0] : allExts };
20870
+ }
20705
20871
  var PptxSlideTransitionService = class {
20706
20872
  xmlLookupService;
20707
20873
  getXmlLocalName;
@@ -20711,7 +20877,7 @@ var PptxSlideTransitionService = class {
20711
20877
  }
20712
20878
  parseSlideTransition(slideXml2) {
20713
20879
  const slideRoot = this.xmlLookupService.getChildByLocalName(slideXml2, "sld");
20714
- const transitionNode = this.xmlLookupService.getChildByLocalName(slideRoot, "transition") || this.findTransitionInAlternateContent(slideRoot);
20880
+ const transitionNode = this.xmlLookupService.getChildByLocalName(slideRoot, "transition") || findTransitionInAlternateContent(slideRoot, this.xmlLookupService);
20715
20881
  if (!transitionNode) {
20716
20882
  return void 0;
20717
20883
  }
@@ -20720,6 +20886,18 @@ var PptxSlideTransitionService = class {
20720
20886
  let { direction, orient, pattern } = details;
20721
20887
  const { spokes, thruBlk, rawSoundAction, rawExtLst } = details;
20722
20888
  let { morphOption } = details;
20889
+ if (transitionType === "cut") {
20890
+ const p14Direct = parseP14DirectChild(transitionNode, this.getXmlLocalName);
20891
+ const p15Direct = p14Direct ? void 0 : parseP15DirectChild(transitionNode, this.getXmlLocalName);
20892
+ if (p14Direct) {
20893
+ transitionType = p14Direct.type;
20894
+ direction = p14Direct.direction ?? direction;
20895
+ orient = p14Direct.orient ?? orient;
20896
+ pattern = p14Direct.pattern ?? pattern;
20897
+ } else if (p15Direct) {
20898
+ transitionType = p15Direct.type;
20899
+ }
20900
+ }
20723
20901
  if (rawExtLst && transitionType === "cut") {
20724
20902
  const p14Result = parseP14FromExtLst(rawExtLst, this.xmlLookupService, this.getXmlLocalName);
20725
20903
  const p15Result = p14Result ? void 0 : parseP15FromExtLst(rawExtLst, this.xmlLookupService, this.getXmlLocalName);
@@ -20737,7 +20915,11 @@ var PptxSlideTransitionService = class {
20737
20915
  } else if (p15Result) {
20738
20916
  transitionType = p15Result.type;
20739
20917
  } else {
20740
- const morphResult = this.parseMorphFromExtLst(rawExtLst);
20918
+ const morphResult = parseMorphFromExtLst(
20919
+ rawExtLst,
20920
+ this.xmlLookupService,
20921
+ this.getXmlLocalName
20922
+ );
20741
20923
  if (morphResult) {
20742
20924
  transitionType = "morph";
20743
20925
  morphOption = morphResult.morphOption;
@@ -20761,58 +20943,6 @@ var PptxSlideTransitionService = class {
20761
20943
  rawTransition: transitionNode
20762
20944
  };
20763
20945
  }
20764
- /**
20765
- * Locate a `<p:transition>` wrapped in a slide-root `mc:AlternateContent`
20766
- * envelope.
20767
- *
20768
- * Real PowerPoint (verified via COM-authored fixtures) wraps the
20769
- * transition in `mc:AlternateContent` whenever it carries an Office
20770
- * 2010+ attribute such as `p14:dur` (sub-second transition duration):
20771
- * an `mc:Choice Requires="p14"` branch carries the richer transition,
20772
- * and `mc:Fallback` carries a plain one for older readers. Without this
20773
- * unwrap, `p:sld`'s direct-child lookup for `transition` finds nothing
20774
- * and the whole transition (including plain ones falling back with no
20775
- * p14 data) is silently dropped, even though `mc:Choice` is otherwise a
20776
- * complete, directly usable `p:transition` node.
20777
- */
20778
- findTransitionInAlternateContent(slideRoot) {
20779
- const altContent = this.xmlLookupService.getChildByLocalName(slideRoot, "AlternateContent");
20780
- if (!altContent) {
20781
- return void 0;
20782
- }
20783
- const choices2 = this.xmlLookupService.getChildrenArrayByLocalName(altContent, "Choice");
20784
- for (const choice of choices2) {
20785
- const transitionNode = this.xmlLookupService.getChildByLocalName(choice, "transition");
20786
- if (transitionNode) {
20787
- return transitionNode;
20788
- }
20789
- }
20790
- const fallback = this.xmlLookupService.getChildByLocalName(altContent, "Fallback");
20791
- return this.xmlLookupService.getChildByLocalName(fallback, "transition");
20792
- }
20793
- /**
20794
- * Detects the PowerPoint 2016+ `morph` transition stored as a p159 extension
20795
- * inside the transition's extLst.
20796
- */
20797
- parseMorphFromExtLst(extLstNode) {
20798
- const extEntries = this.xmlLookupService.getChildrenArrayByLocalName(extLstNode, "ext");
20799
- for (const ext of extEntries) {
20800
- if (!ext) {
20801
- continue;
20802
- }
20803
- for (const [key, value] of Object.entries(ext)) {
20804
- if (key.startsWith("@_")) {
20805
- continue;
20806
- }
20807
- if (this.getXmlLocalName(key) === "morph") {
20808
- return {
20809
- morphOption: normalizeMorphOption(value?.["@_option"])
20810
- };
20811
- }
20812
- }
20813
- }
20814
- return void 0;
20815
- }
20816
20946
  buildSlideTransitionXml(transition) {
20817
20947
  if (!transition || transition.type === "none") {
20818
20948
  return void 0;
@@ -20822,21 +20952,33 @@ var PptxSlideTransitionService = class {
20822
20952
  const isP15Type = P15_TRANSITION_PRESETS.has(transitionType);
20823
20953
  const isMorphType = transitionType === "morph";
20824
20954
  const node = createPreservedTransitionNode(transition.rawTransition, this.getXmlLocalName);
20955
+ const p14ChildKey = isP14Type ? preservedP14ChildKey(node, transitionType, this.getXmlLocalName) : void 0;
20956
+ const p15ChildKey = isP15Type ? preservedP15ChildKey(node, transitionType, this.getXmlLocalName) : void 0;
20957
+ pruneDirectExtensionChildren(node, this.getXmlLocalName, p14ChildKey ?? p15ChildKey);
20825
20958
  if (isP14Type) {
20826
- node["p:extLst"] = buildP14ExtLst(
20827
- transitionType,
20828
- transition.direction,
20829
- transition.orient,
20830
- transition.pattern,
20831
- transition.rawExtLst,
20832
- this.xmlLookupService,
20833
- this.getXmlLocalName
20834
- );
20959
+ if (!p14ChildKey) {
20960
+ node["p:extLst"] = buildP14ExtLst(
20961
+ transitionType,
20962
+ transition.direction,
20963
+ transition.orient,
20964
+ transition.pattern,
20965
+ transition.rawExtLst,
20966
+ this.xmlLookupService,
20967
+ this.getXmlLocalName
20968
+ );
20969
+ }
20835
20970
  } else if (isP15Type) {
20836
- node["p:extLst"] = transition.rawExtLst ?? buildP15ExtLst(transitionType);
20971
+ if (!p15ChildKey) {
20972
+ node["p:extLst"] = transition.rawExtLst ?? buildP15ExtLst(transitionType);
20973
+ }
20837
20974
  } else if (isMorphType) {
20838
- if (!this.hasDirectMorphChild(node)) {
20839
- node["p:extLst"] = this.buildMorphExtLst(transition.rawExtLst, transition.morphOption);
20975
+ if (!hasDirectMorphChild(node, this.getXmlLocalName)) {
20976
+ node["p:extLst"] = buildMorphExtLst(
20977
+ transition.rawExtLst,
20978
+ transition.morphOption,
20979
+ this.xmlLookupService,
20980
+ this.getXmlLocalName
20981
+ );
20840
20982
  }
20841
20983
  } else {
20842
20984
  node[`p:${transitionType}`] = buildStandardTransitionChild(transition);
@@ -20851,58 +20993,6 @@ var PptxSlideTransitionService = class {
20851
20993
  }
20852
20994
  return node;
20853
20995
  }
20854
- /**
20855
- * True when the (preserved) transition node already carries a `morph`
20856
- * element as a direct child, in any namespace prefix.
20857
- */
20858
- hasDirectMorphChild(node) {
20859
- for (const key of Object.keys(node)) {
20860
- if (!key.startsWith("@_") && this.getXmlLocalName(key) === "morph") {
20861
- return true;
20862
- }
20863
- }
20864
- return false;
20865
- }
20866
- /**
20867
- * Build the extLst XML node for a morph (p159) transition, preserving any
20868
- * non-morph extensions from rawExtLst.
20869
- */
20870
- buildMorphExtLst(rawExtLst, morphOption) {
20871
- const morphNode = {
20872
- "@_xmlns:p159": "http://schemas.microsoft.com/office/powerpoint/2015/09/main"
20873
- };
20874
- if (morphOption) {
20875
- morphNode["@_option"] = morphOption;
20876
- }
20877
- const morphExt = {
20878
- "@_uri": MORPH_EXT_URI,
20879
- "p159:morph": morphNode
20880
- };
20881
- if (!rawExtLst) {
20882
- return { "p:ext": morphExt };
20883
- }
20884
- const existing = this.xmlLookupService.getChildrenArrayByLocalName(rawExtLst, "ext");
20885
- const otherExts = existing.filter((ext) => {
20886
- if (!ext) {
20887
- return false;
20888
- }
20889
- const uri = String(ext["@_uri"] || "").trim();
20890
- if (uri.toUpperCase() === MORPH_EXT_URI.toUpperCase()) {
20891
- return false;
20892
- }
20893
- for (const key of Object.keys(ext)) {
20894
- if (key.startsWith("@_")) {
20895
- continue;
20896
- }
20897
- if (this.getXmlLocalName(key) === "morph") {
20898
- return false;
20899
- }
20900
- }
20901
- return true;
20902
- });
20903
- const allExts = [morphExt, ...otherExts];
20904
- return { "p:ext": allExts.length === 1 ? allExts[0] : allExts };
20905
- }
20906
20996
  };
20907
20997
  var PRESET_TO_OOXML = {
20908
20998
  // ---- Entrance effects (typed `PptxAnimationPreset` names) ----
@@ -41443,6 +41533,30 @@ var FONT_SUBSTITUTION_MAP = {
41443
41533
  Gulim: ["Noto Sans CJK KR", "AppleGothic", "sans-serif"],
41444
41534
  Malgun: ["Noto Sans CJK KR", "Apple SD Gothic Neo", "sans-serif"],
41445
41535
  "Malgun Gothic": ["Noto Sans CJK KR", "Apple SD Gothic Neo", "sans-serif"],
41536
+ // Source Han Sans (Adobe/Google) ships the same glyphs as Noto Sans CJK;
41537
+ // the zh-CN name 思源黑体 is how decks authored in Chinese reference it.
41538
+ "\u601D\u6E90\u9ED1\u4F53 CN": [
41539
+ "Source Han Sans CN",
41540
+ "Noto Sans CJK SC",
41541
+ "Noto Sans SC",
41542
+ "Microsoft YaHei",
41543
+ "sans-serif"
41544
+ ],
41545
+ \u601D\u6E90\u9ED1\u4F53: [
41546
+ "Source Han Sans SC",
41547
+ "Noto Sans CJK SC",
41548
+ "Noto Sans SC",
41549
+ "Microsoft YaHei",
41550
+ "sans-serif"
41551
+ ],
41552
+ "Source Han Sans CN": [
41553
+ "\u601D\u6E90\u9ED1\u4F53 CN",
41554
+ "Noto Sans CJK SC",
41555
+ "Noto Sans SC",
41556
+ "Microsoft YaHei",
41557
+ "sans-serif"
41558
+ ],
41559
+ \u5FAE\u8F6F\u96C5\u9ED1: ["Microsoft YaHei", "Noto Sans CJK SC", "PingFang SC", "sans-serif"],
41446
41560
  // Complex script fonts
41447
41561
  "Arabic Typesetting": ["Noto Naskh Arabic", "serif"],
41448
41562
  "Simplified Arabic": ["Noto Sans Arabic", "sans-serif"],
@@ -41462,6 +41576,11 @@ var FONT_SUBSTITUTION_MAP = {
41462
41576
  Nyala: ["Noto Sans Ethiopic", "sans-serif"],
41463
41577
  MoolBoran: ["Noto Sans Khmer", "sans-serif"],
41464
41578
  // Decorative / Display
41579
+ // Condensed display faces: decks often reference the FULL style name
41580
+ // ("Bebas Neue Regular"); the suffix-stripped base resolves here. The
41581
+ // fallbacks must stay condensed, or short numeric labels sized to the
41582
+ // narrow face overflow their text boxes and wrap (issue #132, "77%").
41583
+ "Bebas Neue": ["Oswald", "Arial Narrow", "Impact", "sans-serif"],
41465
41584
  "Century Gothic": ["URW Gothic", "Futura", "sans-serif"],
41466
41585
  Oswald: ["Agency FB", "Arial Narrow", "sans-serif"],
41467
41586
  "Franklin Gothic": ["Liberation Sans", "Helvetica Neue", "sans-serif"],
@@ -41473,6 +41592,48 @@ var FONT_SUBSTITUTION_MAP = {
41473
41592
  Constantia: ["Liberation Serif", "Palatino", "serif"],
41474
41593
  Corbel: ["Liberation Sans", "Lucida Grande", "sans-serif"]
41475
41594
  };
41595
+ var FONT_STYLE_SUFFIX_TOKENS = /* @__PURE__ */ new Set([
41596
+ "regular",
41597
+ "normal",
41598
+ "book",
41599
+ "roman",
41600
+ "thin",
41601
+ "hairline",
41602
+ "extralight",
41603
+ "ultralight",
41604
+ "demilight",
41605
+ "semilight",
41606
+ "light",
41607
+ "medium",
41608
+ "demibold",
41609
+ "semibold",
41610
+ "bold",
41611
+ "extrabold",
41612
+ "ultrabold",
41613
+ "heavy",
41614
+ "black",
41615
+ "extrablack",
41616
+ "ultra",
41617
+ "italic",
41618
+ "oblique"
41619
+ ]);
41620
+ function stripFontStyleSuffix(fontName) {
41621
+ let name = fontName.trim();
41622
+ let stripped = false;
41623
+ for (let i = 0; i < 2; i++) {
41624
+ const idx = name.lastIndexOf(" ");
41625
+ if (idx <= 0) {
41626
+ break;
41627
+ }
41628
+ const token2 = name.slice(idx + 1).toLowerCase().replace(/-/g, "");
41629
+ if (!FONT_STYLE_SUFFIX_TOKENS.has(token2)) {
41630
+ break;
41631
+ }
41632
+ name = name.slice(0, idx).trim();
41633
+ stripped = true;
41634
+ }
41635
+ return stripped && name.length > 0 ? name : void 0;
41636
+ }
41476
41637
  var PANOSE_FAMILY_MAP = {
41477
41638
  0: "sans-serif",
41478
41639
  // Any — default to sans-serif
@@ -41546,18 +41707,27 @@ function getSubstituteFontFamily(fontName, panose) {
41546
41707
  if (!trimmed) {
41547
41708
  return "sans-serif";
41548
41709
  }
41549
- const directSubs = FONT_SUBSTITUTION_MAP[trimmed];
41710
+ return buildFontFamilyString(trimmed, getSubstituteFonts(trimmed, panose));
41711
+ }
41712
+ function getSubstituteFonts(fontName, panose) {
41713
+ const trimmed = fontName.trim();
41714
+ if (!trimmed) {
41715
+ return ["sans-serif"];
41716
+ }
41717
+ const baseName = stripFontStyleSuffix(trimmed);
41718
+ const basePrefix = baseName ? [baseName] : [];
41719
+ const directSubs = FONT_SUBSTITUTION_MAP[trimmed] ?? (baseName ? FONT_SUBSTITUTION_MAP[baseName] : void 0);
41550
41720
  if (directSubs) {
41551
- return buildFontFamilyString(trimmed, directSubs);
41721
+ return [...basePrefix, ...directSubs];
41552
41722
  }
41553
41723
  if (panose && panose.length >= 4) {
41554
41724
  const genericFamily = classifyPanose(panose);
41555
41725
  const concreteFonts = GENERIC_FAMILY_CONCRETE_FONTS[genericFamily];
41556
41726
  if (concreteFonts) {
41557
- return buildFontFamilyString(trimmed, concreteFonts);
41727
+ return [...basePrefix, ...concreteFonts];
41558
41728
  }
41559
41729
  }
41560
- return buildFontFamilyString(trimmed, ["sans-serif"]);
41730
+ return [...basePrefix, "sans-serif"];
41561
41731
  }
41562
41732
  var CSS_GENERIC_FAMILIES = /* @__PURE__ */ new Set([
41563
41733
  "serif",
@@ -47181,6 +47351,16 @@ function parseCtnMediaTiming(cTn, mediaTag) {
47181
47351
  }
47182
47352
  return { trimStartMs, trimEndMs, loop, autoPlay, playAcrossSlides };
47183
47353
  }
47354
+ function resolvePlayAcrossSlides(cMediaNode, ctnPlayAcrossSlides, mediaTag) {
47355
+ if (ctnPlayAcrossSlides) {
47356
+ return true;
47357
+ }
47358
+ if (mediaTag !== "p:audio") {
47359
+ return false;
47360
+ }
47361
+ const numSld = Number.parseInt(String(cMediaNode["@_numSld"] ?? ""), 10);
47362
+ return Number.isFinite(numSld) && numSld > 1;
47363
+ }
47184
47364
  function parseMediaExtensionData(mediaNode, cMediaNode, shapeId, ensureArray17) {
47185
47365
  let fadeInDuration;
47186
47366
  let fadeOutDuration;
@@ -48641,6 +48821,11 @@ var PptxHandlerRuntime6 = class extends PptxHandlerRuntime5 {
48641
48821
  }
48642
48822
  }
48643
48823
  const hideWhenNotPlaying = cMediaNode["@_showWhenStopped"] === "0";
48824
+ const playAcrossSlides = resolvePlayAcrossSlides(
48825
+ cMediaNode,
48826
+ timing.playAcrossSlides,
48827
+ mediaTag
48828
+ );
48644
48829
  let posterFramePath;
48645
48830
  const posterRId = cMediaNode["@_posterFrame"];
48646
48831
  if (posterRId) {
@@ -48665,7 +48850,7 @@ var PptxHandlerRuntime6 = class extends PptxHandlerRuntime5 {
48665
48850
  fadeInDuration: extData.fadeInDuration,
48666
48851
  fadeOutDuration: extData.fadeOutDuration,
48667
48852
  autoPlay: timing.autoPlay || void 0,
48668
- playAcrossSlides: timing.playAcrossSlides || void 0,
48853
+ playAcrossSlides: playAcrossSlides || void 0,
48669
48854
  hideWhenNotPlaying: hideWhenNotPlaying || void 0,
48670
48855
  bookmarks: extData.bookmarks.length > 0 ? extData.bookmarks : void 0,
48671
48856
  playbackSpeed: extData.playbackSpeed,
@@ -48702,7 +48887,7 @@ var PptxHandlerRuntime6 = class extends PptxHandlerRuntime5 {
48702
48887
  extractMediaTimingMap(slideXml2, slidePath) {
48703
48888
  const result = /* @__PURE__ */ new Map();
48704
48889
  try {
48705
- const timing = slideXml2?.["p:sld"]?.["p:timing"];
48890
+ const timing = resolveSlideTimingNode(slideXml2?.["p:sld"]);
48706
48891
  if (!timing) {
48707
48892
  return result;
48708
48893
  }
@@ -62263,31 +62448,35 @@ var PptxHandlerRuntime57 = class _PptxHandlerRuntime23 extends PptxHandlerRuntim
62263
62448
  return normalized;
62264
62449
  }
62265
62450
  readImageCropFromBlipFill(blipFill) {
62451
+ const result = {};
62266
62452
  const sourceRect = blipFill?.["a:srcRect"];
62267
62453
  if (sourceRect) {
62268
- const cropLeft = this.parseCropFraction(sourceRect["@_l"]);
62269
- const cropTop = this.parseCropFraction(sourceRect["@_t"]);
62270
- const cropRight = this.parseCropFraction(sourceRect["@_r"]);
62271
- const cropBottom = this.parseCropFraction(sourceRect["@_b"]);
62272
- return { cropLeft, cropTop, cropRight, cropBottom };
62454
+ result.cropLeft = this.parseCropFraction(sourceRect["@_l"]);
62455
+ result.cropTop = this.parseCropFraction(sourceRect["@_t"]);
62456
+ result.cropRight = this.parseCropFraction(sourceRect["@_r"]);
62457
+ result.cropBottom = this.parseCropFraction(sourceRect["@_b"]);
62273
62458
  }
62274
62459
  const stretchNode = blipFill?.["a:stretch"];
62275
62460
  const fillRect = stretchNode?.["a:fillRect"];
62276
62461
  if (fillRect) {
62277
- const l = this.parseCropFraction(fillRect["@_l"]);
62278
- const t = this.parseCropFraction(fillRect["@_t"]);
62279
- const r = this.parseCropFraction(fillRect["@_r"]);
62280
- const b = this.parseCropFraction(fillRect["@_b"]);
62281
- if (l !== void 0 || t !== void 0 || r !== void 0 || b !== void 0) {
62282
- return {
62283
- cropLeft: l,
62284
- cropTop: t,
62285
- cropRight: r,
62286
- cropBottom: b
62287
- };
62288
- }
62462
+ result.fillRectLeft = this.parseSignedRectFraction(fillRect["@_l"]);
62463
+ result.fillRectTop = this.parseSignedRectFraction(fillRect["@_t"]);
62464
+ result.fillRectRight = this.parseSignedRectFraction(fillRect["@_r"]);
62465
+ result.fillRectBottom = this.parseSignedRectFraction(fillRect["@_b"]);
62289
62466
  }
62290
- return {};
62467
+ return result;
62468
+ }
62469
+ /**
62470
+ * Parse a signed ST_Percentage rect offset (thousandths of a percent) to a
62471
+ * fraction. Unlike {@link parseCropFraction} the sign is preserved; the
62472
+ * magnitude is capped at 10x the frame to bound hostile input.
62473
+ */
62474
+ parseSignedRectFraction(value) {
62475
+ const raw = Number.parseInt(String(value ?? ""), 10);
62476
+ if (!Number.isFinite(raw)) {
62477
+ return void 0;
62478
+ }
62479
+ return Math.max(-1e6, Math.min(1e6, raw)) / 1e5;
62291
62480
  }
62292
62481
  extractShapeStyle(spPr, styleNode) {
62293
62482
  return this.shapeStyleExtractor.extractShapeStyle(spPr, styleNode);
@@ -63126,6 +63315,19 @@ var PptxHandlerRuntime61 = class _PptxHandlerRuntime25 extends PptxHandlerRuntim
63126
63315
  }
63127
63316
  };
63128
63317
  var PptxHandlerRuntime62 = class _PptxHandlerRuntime26 extends PptxHandlerRuntime61 {
63318
+ /**
63319
+ * A copy of an `a:lstStyle` level entry without its `a:defRPr`: run
63320
+ * defaults follow their own precedence chain, so only the paragraph-level
63321
+ * keys (algn, lnSpc, spacing, margins, tabs) may join the pPr merge.
63322
+ */
63323
+ withoutDefaultRunProperties(node) {
63324
+ if (!node || typeof node !== "object") {
63325
+ return void 0;
63326
+ }
63327
+ const copy2 = { ...node };
63328
+ delete copy2["a:defRPr"];
63329
+ return copy2;
63330
+ }
63129
63331
  /**
63130
63332
  * Extract a paragraph's OWN `a:pPr` geometry (align, spacing, margins,
63131
63333
  * indent, tabs, rtl) as a partial {@link TextStyle} so per-paragraph
@@ -63189,10 +63391,26 @@ var PptxHandlerRuntime62 = class _PptxHandlerRuntime26 extends PptxHandlerRuntim
63189
63391
  */
63190
63392
  resolveShapeParagraphStyle(p, textStyle, ctx) {
63191
63393
  const inheritedParagraph = this.ensureArray(ctx.inheritedTxBody?.["a:p"])[0];
63192
- const pPr = this.mergeXmlObjects(
63394
+ const directPPr = this.mergeXmlObjects(
63193
63395
  inheritedParagraph?.["a:pPr"],
63194
63396
  p["a:pPr"]
63195
63397
  );
63398
+ const parsedLevel = Number.parseInt(String(directPPr?.["@_lvl"] ?? "0"), 10);
63399
+ const level = Number.isFinite(parsedLevel) ? Math.min(Math.max(parsedLevel, 0), 8) : 0;
63400
+ const levelKey = `a:lvl${level + 1}pPr`;
63401
+ const ownLstStyle = ctx.txBody?.["a:lstStyle"];
63402
+ const inheritedLstStyle = ctx.inheritedTxBody?.["a:lstStyle"];
63403
+ const lstStyleParagraphDefaults = this.mergeXmlObjects(
63404
+ this.mergeXmlObjects(
63405
+ this.withoutDefaultRunProperties(inheritedLstStyle?.["a:defPPr"]),
63406
+ this.withoutDefaultRunProperties(inheritedLstStyle?.[levelKey])
63407
+ ),
63408
+ this.mergeXmlObjects(
63409
+ this.withoutDefaultRunProperties(ownLstStyle?.["a:defPPr"]),
63410
+ this.withoutDefaultRunProperties(ownLstStyle?.[levelKey])
63411
+ )
63412
+ );
63413
+ const pPr = this.mergeXmlObjects(lstStyleParagraphDefaults, directPPr);
63196
63414
  const paragraphRtl = this.parseOptionalBooleanAttr(pPr?.["@_rtl"]);
63197
63415
  if (paragraphRtl !== void 0 && textStyle.rtl === void 0) {
63198
63416
  textStyle.rtl = paragraphRtl;
@@ -63316,8 +63534,6 @@ var PptxHandlerRuntime62 = class _PptxHandlerRuntime26 extends PptxHandlerRuntim
63316
63534
  ctx.slideRelationshipMap,
63317
63535
  false
63318
63536
  );
63319
- const level = pPr?.["@_lvl"] === void 0 ? -1 : Number.parseInt(String(pPr["@_lvl"]), 10);
63320
- const levelKey = level === -1 ? "a:defPPr" : `a:lvl${Number.isFinite(level) ? Math.min(Math.max(level + 1, 1), 9) : 1}pPr`;
63321
63537
  const inheritedLevelStyle = this.extractTextRunStyle(
63322
63538
  ctx.inheritedTxBody?.["a:lstStyle"]?.[levelKey]?.["a:defRPr"],
63323
63539
  paraAlign,
@@ -63350,12 +63566,16 @@ var PptxHandlerRuntime62 = class _PptxHandlerRuntime26 extends PptxHandlerRuntim
63350
63566
  mergedDefaultRunStyle.fontFamily = ctx.styleFontRefTypeface;
63351
63567
  }
63352
63568
  if (ctx.effectiveLevelStyles) {
63353
- const normalizedLevel = level === -1 ? -1 : Number.isFinite(level) ? Math.min(Math.max(level, 0), 8) : 0;
63354
- const phLevel = ctx.effectiveLevelStyles[normalizedLevel] ?? ctx.effectiveLevelStyles[-1] ?? (normalizedLevel === -1 ? ctx.effectiveLevelStyles[0] : void 0);
63569
+ const phLevel = ctx.effectiveLevelStyles[level];
63570
+ const phBase = ctx.effectiveLevelStyles[-1];
63355
63571
  if (phLevel) {
63356
63572
  this.applyPlaceholderLevelDefaults(mergedDefaultRunStyle, phLevel);
63357
63573
  this.applyPlaceholderLevelDefaults(textStyle, phLevel);
63358
63574
  }
63575
+ if (phBase) {
63576
+ this.applyPlaceholderLevelDefaults(mergedDefaultRunStyle, phBase);
63577
+ this.applyPlaceholderLevelDefaults(textStyle, phBase);
63578
+ }
63359
63579
  }
63360
63580
  if (pPr?.["@_algn"] === void 0 && textStyle.align !== void 0) {
63361
63581
  paraAlign = textStyle.align;
@@ -63365,15 +63585,13 @@ var PptxHandlerRuntime62 = class _PptxHandlerRuntime26 extends PptxHandlerRuntim
63365
63585
  let effectiveMarginLeft = parMarginLeft;
63366
63586
  let effectiveIndent = parIndent;
63367
63587
  if (ctx.effectiveLevelStyles) {
63368
- const normalizedLevel = level === -1 ? -1 : Number.isFinite(level) ? Math.min(Math.max(level, 0), 8) : 0;
63369
- const phLevel = ctx.effectiveLevelStyles[normalizedLevel] ?? ctx.effectiveLevelStyles[-1] ?? (normalizedLevel === -1 ? ctx.effectiveLevelStyles[0] : void 0);
63370
- if (phLevel) {
63371
- if (effectiveMarginLeft === void 0 && phLevel.marginLeft !== void 0) {
63372
- effectiveMarginLeft = phLevel.marginLeft;
63373
- }
63374
- if (effectiveIndent === void 0 && phLevel.indent !== void 0) {
63375
- effectiveIndent = phLevel.indent;
63376
- }
63588
+ const phLevel = ctx.effectiveLevelStyles[level];
63589
+ const phBase = ctx.effectiveLevelStyles[-1];
63590
+ if (effectiveMarginLeft === void 0) {
63591
+ effectiveMarginLeft = phLevel?.marginLeft ?? phBase?.marginLeft;
63592
+ }
63593
+ if (effectiveIndent === void 0) {
63594
+ effectiveIndent = phLevel?.indent ?? phBase?.indent;
63377
63595
  }
63378
63596
  }
63379
63597
  return {
@@ -87225,8 +87443,8 @@ function formatAxisValue(val2, formatCode) {
87225
87443
  return val2.toFixed(1);
87226
87444
  }
87227
87445
  function computeLayout(elementWidth, elementHeight, style, hasAxes, legendPos, options) {
87228
- const svgWidth = Math.max(320, elementWidth);
87229
- const svgHeight = Math.max(180, elementHeight);
87446
+ const svgWidth = Math.max(1, elementWidth);
87447
+ const svgHeight = Math.max(1, elementHeight);
87230
87448
  let plotLeft = hasAxes ? 48 : 8;
87231
87449
  let plotTop = 8;
87232
87450
  let plotRight = svgWidth - 8;
@@ -87281,6 +87499,12 @@ function chartAreaFill(chartData) {
87281
87499
  function plotAreaFill(chartData) {
87282
87500
  return resolve(chartData?.style?.plotAreaFill, void 0);
87283
87501
  }
87502
+ var CHART_PX_PER_PT = 4 / 3;
87503
+ function chartFontPx(sizePt) {
87504
+ return sizePt * CHART_PX_PER_PT;
87505
+ }
87506
+ var DEFAULT_CHART_TEXT_PX = chartFontPx(10);
87507
+ var DEFAULT_CHART_DATA_LABEL_PX = chartFontPx(9);
87284
87508
  var LOG_EXPONENT_TOLERANCE = 1e-12;
87285
87509
  function computeLogValueRange(series, logBase) {
87286
87510
  const allValues = series.flatMap((item) => item.values).filter((value) => value > 0);
@@ -87859,9 +88083,9 @@ function dashArray(style, width) {
87859
88083
  }
87860
88084
  return `${unit * 3} ${unit * 2}`;
87861
88085
  }
87862
- function chartAxisTextStyle(axis, defaultFontSize = 8) {
88086
+ function chartAxisTextStyle(axis, defaultFontSizePx = DEFAULT_CHART_TEXT_PX) {
87863
88087
  return {
87864
- fontSize: axis?.fontSize ?? defaultFontSize,
88088
+ fontSize: axis?.fontSize !== void 0 ? chartFontPx(axis.fontSize) : defaultFontSizePx,
87865
88089
  fill: axis?.fontColor ?? DEFAULT_COLOR2,
87866
88090
  ...axis?.fontBold !== void 0 ? { fontWeight: axis.fontBold ? "bold" : "normal" } : {},
87867
88091
  ...axis?.fontFamily ? { fontFamily: axis.fontFamily } : {}
@@ -88008,7 +88232,7 @@ function buildPrimaryAxis(range, layout, axis, axisX = layout.plotLeft) {
88008
88232
  x: labelX,
88009
88233
  y: midY,
88010
88234
  text: unitLabel,
88011
- ...chartAxisTextStyle(axis, 9),
88235
+ ...chartAxisTextStyle(axis),
88012
88236
  textAnchor: "middle",
88013
88237
  transform: `rotate(-90, ${labelX}, ${midY})`
88014
88238
  });
@@ -88020,7 +88244,7 @@ function buildSecondaryAxis(range, layout, axis, axisX = layout.plotRight) {
88020
88244
  const gridlines = [];
88021
88245
  const axisLabels = [];
88022
88246
  const textStyle = chartAxisTextStyle(axis);
88023
- const captionStyle = chartAxisTextStyle(axis, 9);
88247
+ const captionStyle = chartAxisTextStyle(axis);
88024
88248
  const axisLine = buildVerticalAxisLine(axis, axisX, layout);
88025
88249
  if (axisLine) {
88026
88250
  gridlines.push(axisLine);
@@ -88242,7 +88466,7 @@ function buildBars(chartData, catCount, layout, primaryRange, secondaryRange, se
88242
88466
  x: x + singleBarWidth / 2,
88243
88467
  y: val2 >= 0 ? y - 4 : y + h + 10,
88244
88468
  text: formatAxisValue2(val2, series[si].numberFormat),
88245
- fontSize: 7,
88469
+ fontSize: DEFAULT_CHART_DATA_LABEL_PX,
88246
88470
  fill: "#334155",
88247
88471
  textAnchor: "middle"
88248
88472
  });
@@ -88314,7 +88538,7 @@ function buildBars(chartData, catCount, layout, primaryRange, secondaryRange, se
88314
88538
  x: x + barW / 2,
88315
88539
  y: y + h / 2 + 3,
88316
88540
  text: `${Math.round(val2)}%`,
88317
- fontSize: 7,
88541
+ fontSize: DEFAULT_CHART_DATA_LABEL_PX,
88318
88542
  fill: "#ffffff",
88319
88543
  textAnchor: "middle",
88320
88544
  fontWeight: "bold"
@@ -88347,7 +88571,7 @@ function pushClusteredStackedLabels(series, sourceIndices2, catCount, layout, ra
88347
88571
  x,
88348
88572
  y: labelY,
88349
88573
  text: formatAxisValue2(val2, series[si].numberFormat),
88350
- fontSize: 7,
88574
+ fontSize: DEFAULT_CHART_DATA_LABEL_PX,
88351
88575
  fill: "#334155",
88352
88576
  textAnchor: "middle"
88353
88577
  });
@@ -88633,7 +88857,7 @@ function buildLines(chartData, catCount, layout, primaryRange, secondaryRange, s
88633
88857
  x: pt.x,
88634
88858
  y: pt.y - 7,
88635
88859
  text: formatAxisValue2(val2, series.numberFormat),
88636
- fontSize: 7,
88860
+ fontSize: DEFAULT_CHART_DATA_LABEL_PX,
88637
88861
  fill: "#334155",
88638
88862
  textAnchor: "middle"
88639
88863
  });
@@ -88705,7 +88929,7 @@ function buildAreas(chartData, catCount, layout, range, sourceIndices2, xPositio
88705
88929
  x: pt.x,
88706
88930
  y: pt.y - 6,
88707
88931
  text: formatAxisValue2(val2, series.numberFormat),
88708
- fontSize: 7,
88932
+ fontSize: DEFAULT_CHART_DATA_LABEL_PX,
88709
88933
  fill: "#334155",
88710
88934
  textAnchor: "middle"
88711
88935
  });
@@ -88750,7 +88974,7 @@ function buildScatter(chartData, layout, range) {
88750
88974
  x: dot.cx,
88751
88975
  y: dot.cy - 6,
88752
88976
  text: formatAxisValue2(val2, series.numberFormat),
88753
- fontSize: 7,
88977
+ fontSize: DEFAULT_CHART_DATA_LABEL_PX,
88754
88978
  fill: "#334155",
88755
88979
  textAnchor: "middle"
88756
88980
  });
@@ -88797,7 +89021,7 @@ function buildBubbles(chartData, layout, range) {
88797
89021
  x: dot.cx,
88798
89022
  y: dot.cy - 10,
88799
89023
  text: formatAxisValue2(val2, series.numberFormat),
88800
- fontSize: 7,
89024
+ fontSize: DEFAULT_CHART_DATA_LABEL_PX,
88801
89025
  fill: "#334155",
88802
89026
  textAnchor: "middle"
88803
89027
  });
@@ -88947,7 +89171,8 @@ function buildMultiLevelCategoryLabels(categoryLabels, categoryLevels, sourceInd
88947
89171
  const skip = Math.max(1, axis?.tickLabelSkip ?? 1);
88948
89172
  const textAnchor = axis?.labelAlignment === "l" ? "start" : axis?.labelAlignment === "r" ? "end" : "middle";
88949
89173
  const direction = labelsAbove ? -1 : 1;
88950
- const bandHeight = Math.max(axis?.fontSize ?? 8, 8) + 4;
89174
+ const fontPx = axis?.fontSize !== void 0 ? chartFontPx(axis.fontSize) : DEFAULT_CHART_TEXT_PX;
89175
+ const bandHeight = Math.max(fontPx, 8) + 4;
88951
89176
  return levels.flatMap((level, levelIndex) => {
88952
89177
  const values = sourceIndices2.map((sourceIndex) => level[sourceIndex] ?? "");
88953
89178
  return groupedLabels(values).flatMap((group2) => {
@@ -89682,7 +89907,7 @@ function computeTrendlinePrimitives(chartData, catCount, layout, range, mode = "
89682
89907
  x: last.x,
89683
89908
  y: last.y - 6,
89684
89909
  text: labelParts.join(" "),
89685
- fontSize: 7,
89910
+ fontSize: DEFAULT_CHART_DATA_LABEL_PX,
89686
89911
  fill: strokeColor,
89687
89912
  textAnchor: "end"
89688
89913
  };
@@ -89699,6 +89924,7 @@ function computeAxisTitlePrimitives(chartData, layout) {
89699
89924
  if (!axes || axes.length === 0) {
89700
89925
  return out;
89701
89926
  }
89927
+ const titleFontPx = (axis) => axis.fontSize !== void 0 ? chartFontPx(axis.fontSize) : DEFAULT_CHART_TEXT_PX;
89702
89928
  const catAxis = axes.find((a) => a.axisType === "catAx" && a.axPos !== "r" && a.titleText);
89703
89929
  if (catAxis?.titleText) {
89704
89930
  const xTitle = {
@@ -89706,7 +89932,7 @@ function computeAxisTitlePrimitives(chartData, layout) {
89706
89932
  x: layout.plotLeft + layout.plotWidth / 2,
89707
89933
  y: layout.plotBottom + 22,
89708
89934
  text: catAxis.titleText,
89709
- fontSize: 9,
89935
+ fontSize: titleFontPx(catAxis),
89710
89936
  fill: AXIS_TITLE_COLOR,
89711
89937
  textAnchor: "middle",
89712
89938
  fontWeight: "bold"
@@ -89722,7 +89948,7 @@ function computeAxisTitlePrimitives(chartData, layout) {
89722
89948
  x: yx,
89723
89949
  y: yy,
89724
89950
  text: valAxis.titleText,
89725
- fontSize: 9,
89951
+ fontSize: titleFontPx(valAxis),
89726
89952
  fill: AXIS_TITLE_COLOR,
89727
89953
  textAnchor: "middle",
89728
89954
  fontWeight: "bold",
@@ -90207,7 +90433,7 @@ function buildComboViewModel(element, chartData, categoryLabels) {
90207
90433
  x: point.x,
90208
90434
  y: point.y - 7,
90209
90435
  text: formatAxisValue2(point.value, series.numberFormat),
90210
- fontSize: 7,
90436
+ fontSize: DEFAULT_CHART_DATA_LABEL_PX,
90211
90437
  fill: "#334155",
90212
90438
  textAnchor: "middle"
90213
90439
  });
@@ -90262,7 +90488,7 @@ function appendBarLabels(series, chartData, layout, catCount, range, sourceIndic
90262
90488
  x: xPositions?.[displayIndex] ?? layout.plotLeft + groupWidth * displayIndex + offset + barWidth / 2,
90263
90489
  y: value >= 0 ? Math.min(zeroY, valueY) - 4 : Math.max(zeroY, valueY) + 10,
90264
90490
  text: formatAxisValue2(value, series.numberFormat),
90265
- fontSize: 7,
90491
+ fontSize: DEFAULT_CHART_DATA_LABEL_PX,
90266
90492
  fill: "#334155",
90267
90493
  textAnchor: "middle"
90268
90494
  });
@@ -90363,7 +90589,7 @@ function buildStockViewModel(element, chartData, categoryLabels) {
90363
90589
  x: cx,
90364
90590
  y: highY - 4,
90365
90591
  text: formatAxisValue2(close),
90366
- fontSize: 7,
90592
+ fontSize: DEFAULT_CHART_DATA_LABEL_PX,
90367
90593
  fill: "#334155",
90368
90594
  textAnchor: "middle"
90369
90595
  });
@@ -90808,7 +91034,7 @@ function buildHistogramViewModel(element, chartData, categoryLabels) {
90808
91034
  x: bar.x + bar.w / 2,
90809
91035
  y: bar.y - 4,
90810
91036
  text: formatAxisValue2(values[index]),
90811
- fontSize: 7,
91037
+ fontSize: DEFAULT_CHART_DATA_LABEL_PX,
90812
91038
  fill: DATA_LABEL_COLOR,
90813
91039
  textAnchor: "middle"
90814
91040
  })) : [];
@@ -91117,8 +91343,8 @@ function sliceAngles(values) {
91117
91343
  });
91118
91344
  }
91119
91345
  function computeOfPieGeom(element, secondPieSize) {
91120
- const svgWidth = Math.max(element.width, 320);
91121
- const svgHeight = Math.max(element.height, 180);
91346
+ const svgWidth = Math.max(element.width, 1);
91347
+ const svgHeight = Math.max(element.height, 1);
91122
91348
  const primaryR = Math.max(Math.min(svgWidth * 0.28, svgHeight * 0.4), 4);
91123
91349
  const secScale = Math.min(Math.max(secondPieSize / 100, 0.3), 1.4);
91124
91350
  return {
@@ -91138,7 +91364,7 @@ function sliceLabel(x, y, value) {
91138
91364
  x,
91139
91365
  y,
91140
91366
  text: formatAxisValue2(value),
91141
- fontSize: 8,
91367
+ fontSize: DEFAULT_CHART_DATA_LABEL_PX,
91142
91368
  fill: "#ffffff",
91143
91369
  textAnchor: "middle",
91144
91370
  fontWeight: "bold",
@@ -91313,7 +91539,7 @@ function buildPieDataLabels(params) {
91313
91539
  x: slice.labelX,
91314
91540
  y: slice.labelY,
91315
91541
  text: formatAxisValue2(val2, numberFormat),
91316
- fontSize: 8,
91542
+ fontSize: DEFAULT_CHART_DATA_LABEL_PX,
91317
91543
  fill: "#ffffff",
91318
91544
  textAnchor: "middle",
91319
91545
  fontWeight: "bold",
@@ -91333,7 +91559,7 @@ function buildPieDataLabels(params) {
91333
91559
  x: labelX + (cos >= 0 ? 2 : -2),
91334
91560
  y: labelY,
91335
91561
  text: formatAxisValue2(val2, numberFormat),
91336
- fontSize: 8,
91562
+ fontSize: DEFAULT_CHART_DATA_LABEL_PX,
91337
91563
  fill: "#334155",
91338
91564
  textAnchor: anchor,
91339
91565
  dominantBaseline: "central"
@@ -91757,7 +91983,8 @@ function textPrimitives(shape, box) {
91757
91983
  if (!shape.paragraphs || shape.paragraphs.length === 0) {
91758
91984
  return [];
91759
91985
  }
91760
- const lineH = 12;
91986
+ const fontPxOf = (para) => para.fontSize !== void 0 ? chartFontPx(para.fontSize) : DEFAULT_CHART_TEXT_PX;
91987
+ const lineH = Math.max(12, ...shape.paragraphs.map((para) => fontPxOf(para) * 1.2));
91761
91988
  const totalH = shape.paragraphs.length * lineH;
91762
91989
  let cursorY = box.y + Math.max((box.h - totalH) / 2, 0) + lineH * 0.75;
91763
91990
  const out = [];
@@ -91774,7 +92001,7 @@ function textPrimitives(shape, box) {
91774
92001
  x: tx,
91775
92002
  y: cursorY,
91776
92003
  text: para.text,
91777
- fontSize: para.fontSize ?? 9,
92004
+ fontSize: fontPxOf(para),
91778
92005
  fill: para.color ?? "#1e293b",
91779
92006
  textAnchor: anchor,
91780
92007
  fontWeight: para.bold ? "bold" : "normal"
@@ -91970,7 +92197,7 @@ function buildWaterfallViewModel(element, chartData, categoryLabels) {
91970
92197
  x: x + barWidth / 2,
91971
92198
  y: y - 4,
91972
92199
  text: formatAxisValue2(value),
91973
- fontSize: 7,
92200
+ fontSize: DEFAULT_CHART_DATA_LABEL_PX,
91974
92201
  fill: "#334155",
91975
92202
  textAnchor: "middle"
91976
92203
  });
@@ -92292,8 +92519,8 @@ function regionViewBounds(viewedRegionType, regionValues) {
92292
92519
  };
92293
92520
  }
92294
92521
  function buildRegionMapViewModel(element, chartData, categoryLabels) {
92295
- const svgWidth = Math.max(element.width, 320);
92296
- const svgHeight = Math.max(element.height, 200);
92522
+ const svgWidth = Math.max(element.width, 1);
92523
+ const svgHeight = Math.max(element.height, 1);
92297
92524
  const categories = categoryLabels.length > 0 ? categoryLabels : chartData.categories;
92298
92525
  const series = chartData.series[0];
92299
92526
  const options = series?.regionMapOptions;
@@ -92655,8 +92882,8 @@ function formatAxisValue2(val2, formatCode) {
92655
92882
  return val2.toFixed(1);
92656
92883
  }
92657
92884
  function computePlotLayout(elementWidth, elementHeight, chartData, hasAxes, options) {
92658
- const svgWidth = Math.max(320, elementWidth);
92659
- const svgHeight = Math.max(180, elementHeight);
92885
+ const svgWidth = Math.max(1, elementWidth);
92886
+ const svgHeight = Math.max(1, elementHeight);
92660
92887
  let plotLeft = hasAxes ? 48 : 8;
92661
92888
  let plotTop = 8;
92662
92889
  let plotRight = svgWidth - 8;
@@ -92736,7 +92963,7 @@ function buildGridlinesAndLabels(range, layout) {
92736
92963
  x: layout.plotLeft - 4,
92737
92964
  y,
92738
92965
  text: formatAxisValue2(val2),
92739
- fontSize: 8,
92966
+ fontSize: DEFAULT_CHART_TEXT_PX,
92740
92967
  fill: AXIS_LABEL_COLOR,
92741
92968
  textAnchor: "end",
92742
92969
  dominantBaseline: "central"
@@ -92768,7 +92995,7 @@ function buildCategoryLabels(categoryLabels, layout, catSpacing) {
92768
92995
  x,
92769
92996
  y: layout.plotBottom + 12,
92770
92997
  text: label,
92771
- fontSize: 8,
92998
+ fontSize: DEFAULT_CHART_TEXT_PX,
92772
92999
  fill: AXIS_LABEL_COLOR,
92773
93000
  textAnchor: "middle"
92774
93001
  };
@@ -93113,8 +93340,8 @@ function buildFlatViewModel(element, chartData, categoryLabels, kind) {
93113
93340
  return buildCartesianViewModel(element, chartData, categoryLabels, kind);
93114
93341
  }
93115
93342
  function buildFallbackViewModel(width, height, label) {
93116
- const svgWidth = Math.max(width, 100);
93117
- const svgHeight = Math.max(height, 60);
93343
+ const svgWidth = Math.max(width, 1);
93344
+ const svgHeight = Math.max(height, 1);
93118
93345
  return {
93119
93346
  svgWidth,
93120
93347
  svgHeight,
@@ -93268,7 +93495,7 @@ function buildRadarViewModel(element, chartData, categoryLabels) {
93268
93495
  x: cx + labelR * Math.cos(angle),
93269
93496
  y: cy + labelR * Math.sin(angle),
93270
93497
  text: categoryLabels[i] ?? "",
93271
- fontSize: 8,
93498
+ fontSize: DEFAULT_CHART_TEXT_PX,
93272
93499
  fill: RADAR_LABEL_COLOR,
93273
93500
  textAnchor: "middle",
93274
93501
  dominantBaseline: "central"
@@ -93312,7 +93539,7 @@ function buildRadarViewModel(element, chartData, categoryLabels) {
93312
93539
  x: p.x,
93313
93540
  y: p.y - 8,
93314
93541
  text: formatAxisValue2(val2, series.numberFormat),
93315
- fontSize: 7,
93542
+ fontSize: DEFAULT_CHART_DATA_LABEL_PX,
93316
93543
  fill: "#334155",
93317
93544
  textAnchor: "middle"
93318
93545
  });
@@ -98256,25 +98483,39 @@ function getImageFitStyle(el) {
98256
98483
  if (!isImageLikeElement(el)) {
98257
98484
  return uncropped;
98258
98485
  }
98486
+ const frLeft = el.fillRectLeft ?? 0;
98487
+ const frTop = el.fillRectTop ?? 0;
98488
+ const frRight = el.fillRectRight ?? 0;
98489
+ const frBottom = el.fillRectBottom ?? 0;
98490
+ const hasFillRect = Math.abs(frLeft) + Math.abs(frTop) + Math.abs(frRight) + Math.abs(frBottom) > 1e-4;
98491
+ const placementTransform = hasFillRect ? `translate(${round2(frLeft * 100)}%, ${round2(frTop * 100)}%) scale(${round6(
98492
+ Math.max(0.01, 1 - frLeft - frRight)
98493
+ )}, ${round6(Math.max(0.01, 1 - frTop - frBottom))})` : "";
98259
98494
  const cropLeft = clampCropValue(el.cropLeft);
98260
98495
  const cropTop = clampCropValue(el.cropTop);
98261
98496
  const cropRight = clampCropValue(el.cropRight);
98262
98497
  const cropBottom = clampCropValue(el.cropBottom);
98263
- if (cropLeft + cropRight <= 1e-4 && cropTop + cropBottom <= 1e-4) {
98498
+ const hasCrop = cropLeft + cropRight > 1e-4 || cropTop + cropBottom > 1e-4;
98499
+ if (!hasCrop && !hasFillRect) {
98264
98500
  return uncropped;
98265
98501
  }
98266
- const horizontalScale = cropLeft + cropRight >= 0.99 ? 0.99 / (cropLeft + cropRight) : 1;
98267
- const verticalScale = cropTop + cropBottom >= 0.99 ? 0.99 / (cropTop + cropBottom) : 1;
98268
- const left = clampCropValue(cropLeft * horizontalScale);
98269
- const right = clampCropValue(cropRight * horizontalScale);
98270
- const top = clampCropValue(cropTop * verticalScale);
98271
- const bottom = clampCropValue(cropBottom * verticalScale);
98272
- const remainingWidth = Math.max(0.01, 1 - left - right);
98273
- const remainingHeight = Math.max(0.01, 1 - top - bottom);
98274
- const tx = Math.round(-left / remainingWidth * 1e4) / 100;
98275
- const ty = Math.round(-top / remainingHeight * 1e4) / 100;
98276
- const sx = Math.round(1 / remainingWidth * 1e6) / 1e6;
98277
- const sy = Math.round(1 / remainingHeight * 1e6) / 1e6;
98502
+ let cropTransform = "";
98503
+ if (hasCrop) {
98504
+ const horizontalScale = cropLeft + cropRight >= 0.99 ? 0.99 / (cropLeft + cropRight) : 1;
98505
+ const verticalScale = cropTop + cropBottom >= 0.99 ? 0.99 / (cropTop + cropBottom) : 1;
98506
+ const left = clampCropValue(cropLeft * horizontalScale);
98507
+ const right = clampCropValue(cropRight * horizontalScale);
98508
+ const top = clampCropValue(cropTop * verticalScale);
98509
+ const bottom = clampCropValue(cropBottom * verticalScale);
98510
+ const remainingWidth = Math.max(0.01, 1 - left - right);
98511
+ const remainingHeight = Math.max(0.01, 1 - top - bottom);
98512
+ const tx = Math.round(-left / remainingWidth * 1e4) / 100;
98513
+ const ty = Math.round(-top / remainingHeight * 1e4) / 100;
98514
+ const sx = Math.round(1 / remainingWidth * 1e6) / 1e6;
98515
+ const sy = Math.round(1 / remainingHeight * 1e6) / 1e6;
98516
+ cropTransform = `translate(${tx}%, ${ty}%) scale(${sx}, ${sy})`;
98517
+ }
98518
+ const transform = [placementTransform, cropTransform].filter(Boolean).join(" ");
98278
98519
  return {
98279
98520
  position: "absolute",
98280
98521
  width: "100%",
@@ -98283,9 +98524,15 @@ function getImageFitStyle(el) {
98283
98524
  maxHeight: "none",
98284
98525
  objectFit: "fill",
98285
98526
  transformOrigin: "top left",
98286
- transform: `translate(${tx}%, ${ty}%) scale(${sx}, ${sy})`
98527
+ transform
98287
98528
  };
98288
98529
  }
98530
+ function round2(value) {
98531
+ return Math.round(value * 100) / 100;
98532
+ }
98533
+ function round6(value) {
98534
+ return Math.round(value * 1e6) / 1e6;
98535
+ }
98289
98536
  function groupElements(elements, ids, groupId) {
98290
98537
  const idSet = new Set(ids);
98291
98538
  const gathered = [];
@@ -99071,7 +99318,10 @@ function resolveLineHeight(textStyle, hasItalicRuns2) {
99071
99318
  if (typeof textStyle?.lineSpacingExactPt === "number" && textStyle.lineSpacingExactPt > 0) {
99072
99319
  return `${textStyle.lineSpacingExactPt}pt`;
99073
99320
  }
99074
- return textStyle?.lineSpacing || DEFAULT_LINE_HEIGHT;
99321
+ return proportionalLineHeight(textStyle?.lineSpacing);
99322
+ }
99323
+ function proportionalLineHeight(lineSpacing) {
99324
+ return typeof lineSpacing === "number" && lineSpacing > 0 ? lineSpacing * DEFAULT_LINE_HEIGHT : DEFAULT_LINE_HEIGHT;
99075
99325
  }
99076
99326
  function toCssWritingMode(textDirection) {
99077
99327
  switch (textDirection) {
@@ -99122,7 +99372,7 @@ function computeAutoFitTextStyle(input) {
99122
99372
  result.fontSize = Math.max(6, Math.round(baseFontSize * ts.autoFitFontScale));
99123
99373
  } else if (ts.autoFitMode !== "normal") {
99124
99374
  const textLength = text2.length;
99125
- const lineHeight = ts.lineSpacingExactPt ? ts.lineSpacingExactPt / baseFontSize : ts.lineSpacing || DEFAULT_LINE_HEIGHT;
99375
+ const lineHeight = ts.lineSpacingExactPt ? ts.lineSpacingExactPt / baseFontSize : proportionalLineHeight(ts.lineSpacing);
99126
99376
  const approxCharsPerLine = Math.max(1, Math.floor(width / (baseFontSize * 0.6)));
99127
99377
  const estimatedLines = Math.max(1, Math.ceil(textLength / approxCharsPerLine));
99128
99378
  const requiredHeight = estimatedLines * baseFontSize * lineHeight;
@@ -99133,8 +99383,7 @@ function computeAutoFitTextStyle(input) {
99133
99383
  }
99134
99384
  }
99135
99385
  if (ts.autoFitLineSpacingReduction !== void 0 && ts.autoFitLineSpacingReduction > 0) {
99136
- const baseLineHeight = typeof ts.lineSpacing === "number" ? ts.lineSpacing : DEFAULT_LINE_HEIGHT;
99137
- result.lineHeight = baseLineHeight * (1 - ts.autoFitLineSpacingReduction);
99386
+ result.lineHeight = proportionalLineHeight(ts.lineSpacing) * (1 - ts.autoFitLineSpacingReduction);
99138
99387
  }
99139
99388
  return result;
99140
99389
  }
@@ -99954,6 +100203,8 @@ function buildTextRunFilterChain(style) {
99954
100203
  }
99955
100204
  return parts.length > 0 ? parts.join(" ") : void 0;
99956
100205
  }
100206
+ var POWERPOINT_METRIC_TRACKING_EM = 3e-3;
100207
+ var POWERPOINT_METRIC_TRACKING = `${POWERPOINT_METRIC_TRACKING_EM}em`;
99957
100208
  function resolveParagraphStrutFontSize(segments, bodyFontSize) {
99958
100209
  let largest;
99959
100210
  for (const segment of segments) {
@@ -102183,6 +102434,10 @@ var SCALAR_ELEMENT_KEYS = /* @__PURE__ */ new Set([
102183
102434
  "cropTop",
102184
102435
  "cropRight",
102185
102436
  "cropBottom",
102437
+ "fillRectLeft",
102438
+ "fillRectTop",
102439
+ "fillRectRight",
102440
+ "fillRectBottom",
102186
102441
  "tileOffsetX",
102187
102442
  "tileOffsetY",
102188
102443
  "tileScaleX",
@@ -103797,9 +104052,16 @@ var CINEMATIC_TRANSITION_KEYFRAMES = `
103797
104052
  /* \u2500\u2500 Airplane (fly off like a paper plane) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
103798
104053
  @keyframes pptx-tr-airplane-out { 0% { transform: perspective(1200px) translate3d(0, 0, 0) rotate3d(1, -1, 0, 0deg) scale(1); opacity: 1; } 40% { transform: perspective(1200px) translate3d(10%, -10%, 0) rotate3d(1, -1, 0, 25deg) scale(.85); opacity: 1; } 100% { transform: perspective(1200px) translate3d(150%, -70%, 0) rotate3d(1, -1, 1, 70deg) scale(.05); opacity: 0; } }
103799
104054
 
103800
- /* \u2500\u2500 Origami (fold out / unfold in) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
103801
- @keyframes pptx-tr-origami-out { from { transform: perspective(1600px) rotateY(0deg) scaleX(1); transform-origin: left center; opacity: 1; } to { transform: perspective(1600px) rotateY(75deg) scaleX(.25); transform-origin: left center; opacity: .2; } }
103802
- @keyframes pptx-tr-origami-in { from { transform: perspective(1600px) rotateY(-75deg) scaleX(.25); transform-origin: right center; opacity: .2; } to { transform: perspective(1600px) rotateY(0deg) scaleX(1); transform-origin: right center; opacity: 1; } }
104055
+ /* \u2500\u2500 Origami (fold the sheet over its top edge; the next unfolds up) \u2500\u2500
104056
+ The old single-phase rotateY + scaleX compressed the outgoing slide into a
104057
+ narrow vertical sliver for most of the (3+ second) duration, which read as
104058
+ "just a grey line" instead of paper folding (issue #132). The fold is now
104059
+ hinged like a real sheet: the outgoing slide creases over its TOP edge,
104060
+ dims as it tips through edge-on, and tumbles away shrinking; the incoming
104061
+ slide lies folded at its BOTTOM edge and rises into place. The edge-on
104062
+ moment is brief and already mid-fade, so no line artifact survives. */
104063
+ @keyframes pptx-tr-origami-out { 0% { transform: perspective(1400px) rotateX(0deg) translateY(0) scale(1); transform-origin: top center; opacity: 1; filter: brightness(1); } 45% { transform: perspective(1400px) rotateX(-52deg) translateY(2%) scale(.96); transform-origin: top center; opacity: 1; filter: brightness(.82); } 70% { transform: perspective(1400px) rotateX(-84deg) translateY(8%) scale(.88); transform-origin: top center; opacity: .8; filter: brightness(.68); } 100% { transform: perspective(1400px) rotateX(-125deg) translateY(30%) scale(.68); transform-origin: top center; opacity: 0; filter: brightness(.55); } }
104064
+ @keyframes pptx-tr-origami-in { 0% { transform: perspective(1400px) rotateX(62deg) scale(.94); transform-origin: bottom center; opacity: 0; filter: brightness(.7); } 30% { transform: perspective(1400px) rotateX(62deg) scale(.94); transform-origin: bottom center; opacity: .65; filter: brightness(.75); } 100% { transform: perspective(1400px) rotateX(0deg) scale(1); transform-origin: bottom center; opacity: 1; filter: brightness(1); } }
103803
104065
  `;
103804
104066
  var CORE_SLIDE_TRANSITION_KEYFRAMES = `
103805
104067
  /* \u2500\u2500 Fade \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */
@@ -110524,6 +110786,103 @@ function mediaTransportVisible(surface) {
110524
110786
  }
110525
110787
  return surface.canvasTransport;
110526
110788
  }
110789
+ var persistentAudioMap = /* @__PURE__ */ new Map();
110790
+ function registerPersistentAudio(elementId, dataUrl, mimetype, loop, volume, trimStartSec) {
110791
+ if (persistentAudioMap.has(elementId) || typeof document === "undefined") {
110792
+ return;
110793
+ }
110794
+ const audio = document.createElement("audio");
110795
+ audio.src = dataUrl;
110796
+ if (mimetype) {
110797
+ const source = document.createElement("source");
110798
+ source.src = dataUrl;
110799
+ source.type = mimetype;
110800
+ audio.appendChild(source);
110801
+ }
110802
+ audio.loop = loop;
110803
+ audio.volume = Math.max(0, Math.min(1, volume));
110804
+ if (trimStartSec > 0) {
110805
+ try {
110806
+ audio.currentTime = trimStartSec;
110807
+ } catch {
110808
+ }
110809
+ }
110810
+ audio.style.display = "none";
110811
+ audio.setAttribute("data-pptx-persistent-audio", elementId);
110812
+ document.body.appendChild(audio);
110813
+ persistentAudioMap.set(elementId, { elementId, audio, loop, pausedByVisibility: false });
110814
+ void audio.play().catch(() => {
110815
+ });
110816
+ }
110817
+ function stopAllPersistentAudio() {
110818
+ for (const entry2 of persistentAudioMap.values()) {
110819
+ entry2.audio.pause();
110820
+ entry2.audio.remove();
110821
+ }
110822
+ persistentAudioMap.clear();
110823
+ }
110824
+ function pauseAllPersistentAudio() {
110825
+ for (const entry2 of persistentAudioMap.values()) {
110826
+ if (!entry2.audio.paused) {
110827
+ entry2.pausedByVisibility = true;
110828
+ entry2.audio.pause();
110829
+ }
110830
+ }
110831
+ }
110832
+ function resumeAllPersistentAudio() {
110833
+ for (const entry2 of persistentAudioMap.values()) {
110834
+ if (entry2.pausedByVisibility) {
110835
+ entry2.pausedByVisibility = false;
110836
+ void entry2.audio.play().catch(() => {
110837
+ });
110838
+ }
110839
+ }
110840
+ }
110841
+ function attachPresentationVisibilityPause(options = {}) {
110842
+ if (typeof document === "undefined") {
110843
+ return () => {
110844
+ };
110845
+ }
110846
+ const root = options.root ?? document;
110847
+ let pausedMedia = [];
110848
+ let suspended = false;
110849
+ const update = () => {
110850
+ const shouldSuspend = document.visibilityState === "hidden" || !document.hasFocus();
110851
+ if (shouldSuspend === suspended) {
110852
+ return;
110853
+ }
110854
+ suspended = shouldSuspend;
110855
+ if (shouldSuspend) {
110856
+ pausedMedia = [];
110857
+ for (const media of root.querySelectorAll("audio, video")) {
110858
+ if (!media.paused && !media.ended) {
110859
+ pausedMedia.push(media);
110860
+ media.pause();
110861
+ }
110862
+ }
110863
+ pauseAllPersistentAudio();
110864
+ options.onHidden?.();
110865
+ return;
110866
+ }
110867
+ for (const media of pausedMedia) {
110868
+ if (media.isConnected) {
110869
+ void media.play().catch(() => {
110870
+ });
110871
+ }
110872
+ }
110873
+ pausedMedia = [];
110874
+ resumeAllPersistentAudio();
110875
+ options.onVisible?.();
110876
+ };
110877
+ document.addEventListener("visibilitychange", update);
110878
+ window.addEventListener("blur", update);
110879
+ window.addEventListener("focus", update);
110880
+ return () => {
110881
+ document.removeEventListener("visibilitychange", update);
110882
+ window.removeEventListener("blur", update);
110883
+ window.removeEventListener("focus", update);
110884
+ };
110885
+ }
110527
110886
  function buildSummaryZoomView(element, lookup) {
110528
110887
  if (element.zoomType !== "summary" || !element.summaryTargets?.length) {
110529
110888
  return void 0;
@@ -114794,4 +115153,4 @@ function segmentFrameCount(durationMs, fps) {
114794
115153
  * `<p:extLst>` (optional)
114795
115154
  */
114796
115155
 
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 };
115156
+ 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, POWERPOINT_METRIC_TRACKING, 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, attachPresentationVisibilityPause, 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, proportionalLineHeight, publishLiveGeometry, publishLiveInlineText, quickStyleSwatchCss, reResolveSlideColors, readBackstageRecentFile, readSlidesFromYDoc, readStoredViewerPrefs, readViewportMetrics, readingViewFitScale, rebuildDrawingShapesIfCleared, rebuildTableStructureInRawXml, reconcileSlidesInYDoc, recordProgressPercent, rectToCells, registerCollaborationTeardown, registerPersistentAudio, 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, stopAllPersistentAudio, 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 };