pptx-react-viewer 2.4.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/{AiChatPanel-SXYMXFYS.mjs → AiChatPanel-EMF3UYCE.mjs} +3 -3
  3. package/dist/AiChatPanel-EMF3UYCE.mjs.br +0 -0
  4. package/dist/AiChatPanel-EMF3UYCE.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-HLLGXBZF.js → AiChatPanel-OHSLJNYG.js} +22 -22
  6. package/dist/AiChatPanel-OHSLJNYG.js.br +0 -0
  7. package/dist/AiChatPanel-OHSLJNYG.js.gz +0 -0
  8. package/dist/{Model3DScene-ZQBWLAMC.js → Model3DScene-ULHIJPMU.js} +2 -2
  9. package/dist/Model3DScene-ULHIJPMU.js.br +0 -0
  10. package/dist/Model3DScene-ULHIJPMU.js.gz +0 -0
  11. package/dist/{Model3DScene-IECT4RWT.mjs → Model3DScene-X6QJTWHV.mjs} +1 -1
  12. package/dist/{Model3DScene-IECT4RWT.mjs.br → Model3DScene-X6QJTWHV.mjs.br} +0 -0
  13. package/dist/Model3DScene-X6QJTWHV.mjs.gz +0 -0
  14. package/dist/{SurfaceChart3DScene-4KRMRWW6.js → SurfaceChart3DScene-K7Q5NYZ4.js} +2 -2
  15. package/dist/SurfaceChart3DScene-K7Q5NYZ4.js.br +0 -0
  16. package/dist/SurfaceChart3DScene-K7Q5NYZ4.js.gz +0 -0
  17. package/dist/{SurfaceChart3DScene-52C3IMPQ.mjs → SurfaceChart3DScene-PRCKQJQQ.mjs} +1 -1
  18. package/dist/{SurfaceChart3DScene-52C3IMPQ.mjs.br → SurfaceChart3DScene-PRCKQJQQ.mjs.br} +0 -0
  19. package/dist/SurfaceChart3DScene-PRCKQJQQ.mjs.gz +0 -0
  20. package/dist/{chunk-VEZO33T2.js → chunk-7Q7AEPO7.js} +378 -324
  21. package/dist/chunk-7Q7AEPO7.js.br +0 -0
  22. package/dist/chunk-7Q7AEPO7.js.gz +0 -0
  23. package/dist/{chunk-XSBFV6TL.js → chunk-I4AFCPUC.js} +843 -844
  24. package/dist/chunk-I4AFCPUC.js.br +0 -0
  25. package/dist/chunk-I4AFCPUC.js.gz +0 -0
  26. package/dist/{chunk-KK7FWBGO.mjs → chunk-JSFUU2BB.mjs} +7 -8
  27. package/dist/chunk-JSFUU2BB.mjs.br +0 -0
  28. package/dist/chunk-JSFUU2BB.mjs.gz +0 -0
  29. package/dist/{chunk-LRIXPSVT.mjs → chunk-LIQGO45T.mjs} +72 -18
  30. package/dist/chunk-LIQGO45T.mjs.br +0 -0
  31. package/dist/chunk-LIQGO45T.mjs.gz +0 -0
  32. package/dist/{chunk-WK56SFN7.js → chunk-LTEDT475.js} +392 -68
  33. package/dist/chunk-LTEDT475.js.br +0 -0
  34. package/dist/chunk-LTEDT475.js.gz +0 -0
  35. package/dist/{chunk-5GHLRHBR.js → chunk-MJAEB43A.js} +3 -3
  36. package/dist/chunk-MJAEB43A.js.br +0 -0
  37. package/dist/chunk-MJAEB43A.js.gz +0 -0
  38. package/dist/{chunk-5TPQJWEO.js → chunk-NVH3RIN7.js} +271 -279
  39. package/dist/chunk-NVH3RIN7.js.br +0 -0
  40. package/dist/chunk-NVH3RIN7.js.gz +0 -0
  41. package/dist/{chunk-G6Q3NXRV.mjs → chunk-TGVID6BB.mjs} +40 -48
  42. package/dist/chunk-TGVID6BB.mjs.br +0 -0
  43. package/dist/chunk-TGVID6BB.mjs.gz +0 -0
  44. package/dist/{chunk-QBZA2GMB.mjs → chunk-VOV2N3NY.mjs} +388 -69
  45. package/dist/chunk-VOV2N3NY.mjs.br +0 -0
  46. package/dist/chunk-VOV2N3NY.mjs.gz +0 -0
  47. package/dist/{chunk-Q6FC2552.mjs → chunk-WJKMTDXS.mjs} +1 -1
  48. package/dist/chunk-WJKMTDXS.mjs.br +0 -0
  49. package/dist/chunk-WJKMTDXS.mjs.gz +0 -0
  50. package/dist/index.d.ts +33 -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 +58 -1
  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 +33 -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-HLLGXBZF.js.br +0 -0
  74. package/dist/AiChatPanel-HLLGXBZF.js.gz +0 -0
  75. package/dist/AiChatPanel-SXYMXFYS.mjs.br +0 -0
  76. package/dist/AiChatPanel-SXYMXFYS.mjs.gz +0 -0
  77. package/dist/Model3DScene-IECT4RWT.mjs.gz +0 -0
  78. package/dist/Model3DScene-ZQBWLAMC.js.br +0 -0
  79. package/dist/Model3DScene-ZQBWLAMC.js.gz +0 -0
  80. package/dist/SurfaceChart3DScene-4KRMRWW6.js.br +0 -0
  81. package/dist/SurfaceChart3DScene-4KRMRWW6.js.gz +0 -0
  82. package/dist/SurfaceChart3DScene-52C3IMPQ.mjs.gz +0 -0
  83. package/dist/chunk-5GHLRHBR.js.br +0 -0
  84. package/dist/chunk-5GHLRHBR.js.gz +0 -0
  85. package/dist/chunk-5TPQJWEO.js.br +0 -0
  86. package/dist/chunk-5TPQJWEO.js.gz +0 -0
  87. package/dist/chunk-G6Q3NXRV.mjs.br +0 -0
  88. package/dist/chunk-G6Q3NXRV.mjs.gz +0 -0
  89. package/dist/chunk-KK7FWBGO.mjs.br +0 -0
  90. package/dist/chunk-KK7FWBGO.mjs.gz +0 -0
  91. package/dist/chunk-LRIXPSVT.mjs.br +0 -0
  92. package/dist/chunk-LRIXPSVT.mjs.gz +0 -0
  93. package/dist/chunk-Q6FC2552.mjs.br +0 -0
  94. package/dist/chunk-Q6FC2552.mjs.gz +0 -0
  95. package/dist/chunk-QBZA2GMB.mjs.br +0 -0
  96. package/dist/chunk-QBZA2GMB.mjs.gz +0 -0
  97. package/dist/chunk-VEZO33T2.js.br +0 -0
  98. package/dist/chunk-VEZO33T2.js.gz +0 -0
  99. package/dist/chunk-WK56SFN7.js.br +0 -0
  100. package/dist/chunk-WK56SFN7.js.gz +0 -0
  101. package/dist/chunk-XSBFV6TL.js.br +0 -0
  102. package/dist/chunk-XSBFV6TL.js.gz +0 -0
@@ -17690,6 +17690,49 @@ var PptxTemplateBackgroundService = class {
17690
17690
  };
17691
17691
  }
17692
17692
  };
17693
+ function applyBackgroundFillToShapes(elements2, background) {
17694
+ for (const element of elements2) {
17695
+ if (element.type === "group" && Array.isArray(element.children)) {
17696
+ applyBackgroundFillToShapes(element.children, background);
17697
+ }
17698
+ if (!hasShapeProperties(element) || !element.shapeStyle?.useBackgroundFill) {
17699
+ continue;
17700
+ }
17701
+ applyBackground(element.shapeStyle, background);
17702
+ }
17703
+ }
17704
+ function applyBackground(style, background) {
17705
+ if (background.backgroundImage) {
17706
+ style.fillMode = "image";
17707
+ style.fillImageUrl = background.backgroundImage;
17708
+ style.fillColor = "transparent";
17709
+ style.fillOpacity = 1;
17710
+ return;
17711
+ }
17712
+ if (background.backgroundGradient) {
17713
+ style.fillMode = "gradient";
17714
+ style.fillGradient = background.backgroundGradient;
17715
+ style.fillOpacity = 1;
17716
+ return;
17717
+ }
17718
+ if (background.backgroundPattern) {
17719
+ style.fillMode = "pattern";
17720
+ style.fillPatternPreset = background.backgroundPattern.preset;
17721
+ style.fillColor = background.backgroundPattern.fgColor;
17722
+ style.fillPatternBackgroundColor = background.backgroundPattern.bgColor;
17723
+ style.fillOpacity = 1;
17724
+ return;
17725
+ }
17726
+ if (background.backgroundColor) {
17727
+ style.fillMode = "solid";
17728
+ style.fillColor = background.backgroundColor;
17729
+ style.fillOpacity = 1;
17730
+ return;
17731
+ }
17732
+ style.fillMode = "none";
17733
+ style.fillColor = "transparent";
17734
+ style.fillOpacity = 0;
17735
+ }
17693
17736
  var EMU_PER_PX3 = 914400 / 96;
17694
17737
  var EMU_PER_POS_UNIT = 12700 / 8;
17695
17738
  var P14_GUIDE_URI = "{72B1D4B2-8646-4E06-B1EF-53B0C71A9B0A}";
@@ -18317,6 +18360,12 @@ var PptxSlideLoaderService = class {
18317
18360
  const nativeAnimations = params.parseNativeAnimations(slideXmlObj);
18318
18361
  reconcileAnimationTargets(elements2, nativeAnimations, animations);
18319
18362
  const rawTiming = slideXmlObj["p:sld"]?.["p:timing"];
18363
+ applyBackgroundFillToShapes(elements2, {
18364
+ backgroundColor,
18365
+ backgroundGradient: backgroundGradient || void 0,
18366
+ backgroundImage,
18367
+ backgroundPattern
18368
+ });
18320
18369
  const drawingGuides = parseSlideDrawingGuides(slideXmlObj);
18321
18370
  const activeXControls = params.parseSlideActiveXControls(slideXmlObj);
18322
18371
  const legacyVmlElements = await loadLegacyVmlDrawings(
@@ -19484,6 +19533,61 @@ function parseConditionList(condListXml) {
19484
19533
  }
19485
19534
  return result.length > 0 ? result : void 0;
19486
19535
  }
19536
+ var TIME_NODE_EVENTS = /* @__PURE__ */ new Set(["onBegin", "onEnd", "begin", "end"]);
19537
+ function createGroupContext() {
19538
+ return { parCounter: { next: 0 } };
19539
+ }
19540
+ function conditionsStartAutomatically(cTn) {
19541
+ if (!cTn) {
19542
+ return true;
19543
+ }
19544
+ const stCondLst = cTn["p:stCondLst"];
19545
+ if (!stCondLst) {
19546
+ return true;
19547
+ }
19548
+ const conditions = ensureArray5(stCondLst["p:cond"]);
19549
+ if (conditions.length === 0) {
19550
+ return true;
19551
+ }
19552
+ for (const condition of conditions) {
19553
+ const event = condition["@_evt"] === void 0 ? void 0 : String(condition["@_evt"]);
19554
+ const hasTimeNode = condition["p:tn"] !== void 0 || condition["@_tn"] !== void 0;
19555
+ if (event !== void 0 && TIME_NODE_EVENTS.has(event) && hasTimeNode) {
19556
+ return true;
19557
+ }
19558
+ if (event !== void 0) {
19559
+ continue;
19560
+ }
19561
+ const delay = condition["@_delay"];
19562
+ if (delay !== void 0 && Number.isFinite(Number.parseInt(String(delay), 10))) {
19563
+ return true;
19564
+ }
19565
+ }
19566
+ return false;
19567
+ }
19568
+ function isMainSequence(cTn) {
19569
+ return cTn !== void 0 && String(cTn["@_nodeType"] ?? "") === "mainSeq";
19570
+ }
19571
+ function isEffectNode(cTn) {
19572
+ return cTn !== void 0 && cTn["@_presetClass"] !== void 0;
19573
+ }
19574
+ function childGroupContext(parent, cTn, options) {
19575
+ if (options.isClickLevelGroup) {
19576
+ return {
19577
+ groupAutoStart: conditionsStartAutomatically(cTn),
19578
+ parGroupIndex: parent.parGroupIndex,
19579
+ parCounter: parent.parCounter
19580
+ };
19581
+ }
19582
+ if (isEffectNode(cTn)) {
19583
+ return parent;
19584
+ }
19585
+ return {
19586
+ groupAutoStart: parent.groupAutoStart,
19587
+ parGroupIndex: parent.parCounter.next++,
19588
+ parCounter: parent.parCounter
19589
+ };
19590
+ }
19487
19591
  function extractColorAnimation(childTnList) {
19488
19592
  if (!childTnList) {
19489
19593
  return void 0;
@@ -19744,7 +19848,7 @@ var PptxNativeAnimationService = class {
19744
19848
  if (!rootPar || typeof rootPar !== "object") {
19745
19849
  return void 0;
19746
19850
  }
19747
- this.walkTimingTree(rootPar, animations, "onClick");
19851
+ this.walkTimingTree(rootPar, animations, "onClick", createGroupContext());
19748
19852
  this.parseInteractiveSequences(rootPar, animations);
19749
19853
  this.parseMediaAnimations(timing, animations);
19750
19854
  const bldLst = timing["p:bldLst"];
@@ -19793,8 +19897,11 @@ var PptxNativeAnimationService = class {
19793
19897
  * @param node - Current XML node in the timing tree.
19794
19898
  * @param animations - Mutable array to collect discovered animations.
19795
19899
  * @param currentTrigger - Inherited trigger type from parent context.
19900
+ * @param group - Click-group / effect-wrapper context inherited from the
19901
+ * parent node. See `animation-group-context` for why the flat list
19902
+ * needs it.
19796
19903
  */
19797
- walkTimingTree(node, animations, currentTrigger) {
19904
+ walkTimingTree(node, animations, currentTrigger, group = createGroupContext()) {
19798
19905
  if (!node) {
19799
19906
  return;
19800
19907
  }
@@ -19892,23 +19999,33 @@ var PptxNativeAnimationService = class {
19892
19999
  commandString: cmdInfo.commandString,
19893
20000
  textTarget: textTarget ?? void 0,
19894
20001
  cTnAttributes: roundTripAttrs,
19895
- afterEffect: afterEffectFlag
20002
+ afterEffect: afterEffectFlag,
20003
+ groupAutoStart: group.groupAutoStart,
20004
+ parGroupIndex: group.parGroupIndex
19896
20005
  });
19897
20006
  }
19898
20007
  const childTnList = cTn["p:childTnLst"];
19899
20008
  if (childTnList) {
20009
+ const isClickLevel = isMainSequence(cTn);
19900
20010
  const parallels = ensureArray5(childTnList["p:par"]);
19901
20011
  const sequences = ensureArray5(childTnList["p:seq"]);
19902
20012
  const exclusives = ensureArray5(childTnList["p:excl"]);
19903
20013
  for (const parallel of parallels) {
19904
- this.walkTimingTree(parallel, animations, trigger);
20014
+ this.walkTimingTree(
20015
+ parallel,
20016
+ animations,
20017
+ trigger,
20018
+ childGroupContext(group, parallel["p:cTn"], {
20019
+ isClickLevelGroup: isClickLevel
20020
+ })
20021
+ );
19905
20022
  }
19906
20023
  for (const sequence of sequences) {
19907
- this.walkTimingTree(sequence, animations, trigger);
20024
+ this.walkTimingTree(sequence, animations, trigger, group);
19908
20025
  }
19909
20026
  for (const excl of exclusives) {
19910
20027
  const exclAnims = [];
19911
- this.walkTimingTree(excl, exclAnims, trigger);
20028
+ this.walkTimingTree(excl, exclAnims, trigger, group);
19912
20029
  for (const a of exclAnims) {
19913
20030
  a.exclusive = true;
19914
20031
  animations.push(a);
@@ -19919,10 +20036,17 @@ var PptxNativeAnimationService = class {
19919
20036
  const directParallels = ensureArray5(node["p:par"]);
19920
20037
  const directSequences = ensureArray5(node["p:seq"]);
19921
20038
  for (const parallel of directParallels) {
19922
- this.walkTimingTree(parallel, animations, currentTrigger);
20039
+ this.walkTimingTree(
20040
+ parallel,
20041
+ animations,
20042
+ currentTrigger,
20043
+ childGroupContext(group, parallel["p:cTn"], {
20044
+ isClickLevelGroup: false
20045
+ })
20046
+ );
19923
20047
  }
19924
20048
  for (const sequence of directSequences) {
19925
- this.walkTimingTree(sequence, animations, currentTrigger);
20049
+ this.walkTimingTree(sequence, animations, currentTrigger, group);
19926
20050
  }
19927
20051
  }
19928
20052
  /**
@@ -21644,6 +21768,18 @@ function buildInteractiveSequences(animations, allocateId) {
21644
21768
  }
21645
21769
  return seqNodes;
21646
21770
  }
21771
+ function markGroupAutoStart(groupNode, mainSeqId) {
21772
+ const cTn = groupNode?.["p:cTn"];
21773
+ if (!cTn) {
21774
+ return;
21775
+ }
21776
+ cTn["p:stCondLst"] = {
21777
+ "p:cond": [
21778
+ { "@_delay": "indefinite" },
21779
+ { "@_evt": "onBegin", "@_delay": "0", "p:tn": { "@_val": String(mainSeqId) } }
21780
+ ]
21781
+ };
21782
+ }
21647
21783
  var PptxAnimationWriteService = class {
21648
21784
  nextId = 1;
21649
21785
  /**
@@ -21670,12 +21806,15 @@ var PptxAnimationWriteService = class {
21670
21806
  const interactiveAnimations = validAnimations.filter(
21671
21807
  (a) => a.trigger === "onShapeClick" && a.triggerShapeId
21672
21808
  );
21673
- const animationNodes = this.buildAnimationSequence(regularAnimations);
21809
+ const { nodes: animationNodes, firstGroupAutoStarts } = this.buildAnimationSequence(regularAnimations);
21674
21810
  if (animationNodes.length === 0 && interactiveAnimations.length === 0) {
21675
21811
  return existingRawTiming;
21676
21812
  }
21677
21813
  const rootParId = this.allocateId();
21678
21814
  const mainSeqId = this.allocateId();
21815
+ if (firstGroupAutoStarts) {
21816
+ markGroupAutoStart(animationNodes[0], mainSeqId);
21817
+ }
21679
21818
  const mainSequenceChildren = [];
21680
21819
  for (const node of animationNodes) {
21681
21820
  mainSequenceChildren.push(node);
@@ -21742,12 +21881,14 @@ var PptxAnimationWriteService = class {
21742
21881
  buildAnimationSequence(animations) {
21743
21882
  const clickGroups = [];
21744
21883
  let currentGroup = [];
21884
+ let firstTrigger;
21745
21885
  for (const anim of animations) {
21746
21886
  const effectNodes = this.buildEffectNodesForAnimation(anim);
21747
21887
  if (effectNodes.length === 0) {
21748
21888
  continue;
21749
21889
  }
21750
21890
  const trigger = anim.trigger ?? "onClick";
21891
+ firstTrigger ??= trigger;
21751
21892
  if (trigger === "onClick" || currentGroup.length === 0) {
21752
21893
  if (currentGroup.length > 0) {
21753
21894
  clickGroups.push(currentGroup);
@@ -21761,7 +21902,7 @@ var PptxAnimationWriteService = class {
21761
21902
  if (currentGroup.length > 0) {
21762
21903
  clickGroups.push(currentGroup);
21763
21904
  }
21764
- return clickGroups.map((group) => {
21905
+ const nodes = clickGroups.map((group) => {
21765
21906
  const groupId = this.allocateId();
21766
21907
  return {
21767
21908
  "p:cTn": {
@@ -21778,6 +21919,10 @@ var PptxAnimationWriteService = class {
21778
21919
  }
21779
21920
  };
21780
21921
  });
21922
+ return {
21923
+ nodes,
21924
+ firstGroupAutoStarts: firstTrigger !== void 0 && firstTrigger !== "onClick"
21925
+ };
21781
21926
  }
21782
21927
  buildEffectNodesForAnimation(anim) {
21783
21928
  return buildEffectNodesForAnimation(anim, this.allocateId.bind(this));
@@ -56475,7 +56620,8 @@ var PptxHandlerRuntime28 = class _PptxHandlerRuntime8 extends PptxHandlerRuntime
56475
56620
  applyFillAndStroke(spPr, shapeStyle) {
56476
56621
  const requestedFillMode = shapeStyle.fillMode;
56477
56622
  const gradientFillXml = this.buildGradientFillXml(shapeStyle);
56478
- if (requestedFillMode === "none" || shapeStyle.fillColor === "transparent") {
56623
+ if (shapeStyle.useBackgroundFill) ;
56624
+ else if (requestedFillMode === "none" || shapeStyle.fillColor === "transparent") {
56479
56625
  spPr["a:noFill"] = {};
56480
56626
  delete spPr["a:solidFill"];
56481
56627
  delete spPr["a:gradFill"];
@@ -63316,6 +63462,10 @@ var PptxHandlerRuntime64 = class _PptxHandlerRuntime27 extends PptxHandlerRuntim
63316
63462
  text2 = textParts.join("");
63317
63463
  }
63318
63464
  const shapeStyle = this.extractShapeStyle(effectiveSpPr, styleNode);
63465
+ const useBgFill = String(shape?.["@_useBgFill"] ?? "").trim().toLowerCase();
63466
+ if (useBgFill === "1" || useBgFill === "true") {
63467
+ shapeStyle.useBackgroundFill = true;
63468
+ }
63319
63469
  const hasText = text2.trim().length > 0;
63320
63470
  const isPlainRect = (!prstGeom || prstGeom === "rect") && !custGeom;
63321
63471
  const hasVisibleStyle = shapeStyle.fillColor && shapeStyle.fillColor !== "transparent" || (shapeStyle.strokeWidth || 0) > 0;
@@ -93112,10 +93262,63 @@ function expandTextBuildAnimations(animations, segmentCounts) {
93112
93262
  }
93113
93263
  return result;
93114
93264
  }
93115
- function expandSingleBuildAnimation(anim, buildType, counts, output) {
93265
+ function iterateGranularity(anim) {
93266
+ if (anim.iterate?.type === "lt") {
93267
+ return "byChar";
93268
+ }
93269
+ if (anim.iterate?.type === "wd") {
93270
+ return "byWord";
93271
+ }
93272
+ return void 0;
93273
+ }
93274
+ function pieceCounts(kind, counts) {
93275
+ return kind === "byChar" ? { token: "c", perParagraph: counts.charCounts ?? [] } : { token: "w", perParagraph: counts.wordCounts ?? [] };
93276
+ }
93277
+ function emitStaggeredPieces(anim, kind, counts, output, newClickStepPerParagraph) {
93116
93278
  const targetId = anim.targetId ?? "";
93117
93279
  const baseDuration = anim.durationMs ?? 500;
93280
+ const stagger = iterateStaggerMs(anim, baseDuration);
93281
+ const { token: token2, perParagraph } = pieceCounts(kind, counts);
93282
+ const fallbackDuration = kind === "byChar" ? Math.max(50, Math.round(baseDuration / 4)) : Math.max(100, Math.round(baseDuration / 2));
93283
+ const fallbackStagger = kind === "byChar" ? 20 : 50;
93284
+ let stepIndex = 0;
93285
+ for (let pIdx = 0; pIdx < counts.paragraphCount; pIdx++) {
93286
+ const pieces = perParagraph[pIdx] ?? 0;
93287
+ for (let i = 0; i < pieces; i++) {
93288
+ const opensParagraph = i === 0;
93289
+ const isFirstStep = stepIndex === 0;
93290
+ const startsClickStep = newClickStepPerParagraph && opensParagraph && !isFirstStep;
93291
+ output.push({
93292
+ ...anim,
93293
+ targetId: `${targetId}${TEXT_BUILD_ID_SEP}${token2}${pIdx}-${i}`,
93294
+ trigger: isFirstStep ? anim.trigger : startsClickStep ? "onClick" : stagger !== void 0 ? "withPrevious" : "afterPrevious",
93295
+ durationMs: stagger !== void 0 ? baseDuration : fallbackDuration,
93296
+ delayMs: isFirstStep ? anim.delayMs ?? 0 : startsClickStep ? 0 : stagger ?? fallbackStagger,
93297
+ // Only the first sub-step inherits the parent's start delay; the
93298
+ // rest carry the bare stagger, so these must not re-apply it.
93299
+ // They are synthetic chain steps rather than OOXML `p:par`
93300
+ // siblings, so they also drop the wrapper index: their delay is
93301
+ // an interval off the step before, not an offset from the group.
93302
+ ...isFirstStep ? {} : {
93303
+ triggerDelayMs: void 0,
93304
+ startConditions: void 0,
93305
+ parGroupIndex: void 0
93306
+ },
93307
+ buildType: void 0,
93308
+ iterate: void 0
93309
+ });
93310
+ stepIndex++;
93311
+ }
93312
+ }
93313
+ }
93314
+ function expandSingleBuildAnimation(anim, buildType, counts, output) {
93315
+ const targetId = anim.targetId ?? "";
93118
93316
  if (buildType === "byParagraph") {
93317
+ const granularity = iterateGranularity(anim);
93318
+ if (granularity) {
93319
+ emitStaggeredPieces(anim, granularity, counts, output, true);
93320
+ return;
93321
+ }
93119
93322
  for (let i = 0; i < counts.paragraphCount; i++) {
93120
93323
  output.push({
93121
93324
  ...anim,
@@ -93126,51 +93329,8 @@ function expandSingleBuildAnimation(anim, buildType, counts, output) {
93126
93329
  }
93127
93330
  return;
93128
93331
  }
93129
- const stagger = iterateStaggerMs(anim, baseDuration);
93130
- if (buildType === "byWord") {
93131
- const wordCounts = counts.wordCounts ?? [];
93132
- let stepIndex = 0;
93133
- for (let pIdx = 0; pIdx < counts.paragraphCount; pIdx++) {
93134
- const wc = wordCounts[pIdx] ?? 0;
93135
- for (let wIdx = 0; wIdx < wc; wIdx++) {
93136
- output.push({
93137
- ...anim,
93138
- targetId: `${targetId}${TEXT_BUILD_ID_SEP}w${pIdx}-${wIdx}`,
93139
- trigger: stepIndex === 0 ? anim.trigger : stagger !== void 0 ? "withPrevious" : "afterPrevious",
93140
- durationMs: stagger !== void 0 ? baseDuration : Math.max(100, Math.round(baseDuration / 2)),
93141
- delayMs: stepIndex === 0 ? anim.delayMs ?? 0 : stagger ?? 50,
93142
- // Only the first sub-step inherits the parent's start delay; the
93143
- // rest carry the bare stagger, so these must not re-apply it.
93144
- ...stepIndex === 0 ? {} : { triggerDelayMs: void 0, startConditions: void 0 },
93145
- buildType: void 0,
93146
- iterate: void 0
93147
- });
93148
- stepIndex++;
93149
- }
93150
- }
93151
- return;
93152
- }
93153
- if (buildType === "byChar") {
93154
- const charCounts = counts.charCounts ?? [];
93155
- let stepIndex = 0;
93156
- for (let pIdx = 0; pIdx < counts.paragraphCount; pIdx++) {
93157
- const cc = charCounts[pIdx] ?? 0;
93158
- for (let cIdx = 0; cIdx < cc; cIdx++) {
93159
- output.push({
93160
- ...anim,
93161
- targetId: `${targetId}${TEXT_BUILD_ID_SEP}c${pIdx}-${cIdx}`,
93162
- trigger: stepIndex === 0 ? anim.trigger : stagger !== void 0 ? "withPrevious" : "afterPrevious",
93163
- durationMs: stagger !== void 0 ? baseDuration : Math.max(50, Math.round(baseDuration / 4)),
93164
- delayMs: stepIndex === 0 ? anim.delayMs ?? 0 : stagger ?? 20,
93165
- // Only the first sub-step inherits the parent's start delay; the
93166
- // rest carry the bare stagger, so these must not re-apply it.
93167
- ...stepIndex === 0 ? {} : { triggerDelayMs: void 0, startConditions: void 0 },
93168
- buildType: void 0,
93169
- iterate: void 0
93170
- });
93171
- stepIndex++;
93172
- }
93173
- }
93332
+ if (buildType === "byWord" || buildType === "byChar") {
93333
+ emitStaggeredPieces(anim, buildType, counts, output, false);
93174
93334
  return;
93175
93335
  }
93176
93336
  output.push(anim);
@@ -93441,6 +93601,9 @@ function buildTimeline(nativeAnimations) {
93441
93601
  let dynamicUid = 0;
93442
93602
  let currentGroup = [];
93443
93603
  let currentGroupIsClick = false;
93604
+ let currentGroupAutoStart = false;
93605
+ let subGroupIndex;
93606
+ let subGroupStartMs = 0;
93444
93607
  for (const anim of regularAnims) {
93445
93608
  const expandedSteps = expandIterateAnimation(anim);
93446
93609
  for (const singleAnim of expandedSteps) {
@@ -93495,21 +93658,29 @@ function buildTimeline(nativeAnimations) {
93495
93658
  if (isOnClick || isFirstAnimation) {
93496
93659
  if (currentGroup.length > 0) {
93497
93660
  const group = finalizeClickGroup(currentGroup);
93498
- if (!currentGroupIsClick && clickGroups.length > 0) {
93661
+ if (currentGroupAutoStart || !currentGroupIsClick && clickGroups.length > 0) {
93499
93662
  group.autoAdvance = true;
93500
93663
  }
93501
93664
  clickGroups.push(group);
93502
93665
  }
93503
93666
  currentGroup = [];
93504
93667
  currentGroupIsClick = isOnClick || isFirstAnimation;
93668
+ currentGroupAutoStart = !isOnClick && singleAnim.groupAutoStart === true;
93669
+ subGroupIndex = singleAnim.parGroupIndex;
93670
+ subGroupStartMs = 0;
93505
93671
  }
93672
+ const prevStep = currentGroup.length > 0 ? currentGroup[currentGroup.length - 1] : void 0;
93506
93673
  let delayMs;
93507
- if (trigger === "withPrevious" && currentGroup.length > 0) {
93508
- const prev = currentGroup[currentGroup.length - 1];
93509
- delayMs = prev.delayMs + animDelay + triggerDelay;
93510
- } else if ((trigger === "afterPrevious" || trigger === "afterDelay") && currentGroup.length > 0) {
93511
- const prev = currentGroup[currentGroup.length - 1];
93512
- delayMs = prev.delayMs + prev.durationMs + animDelay + triggerDelay;
93674
+ if (singleAnim.parGroupIndex !== void 0 && prevStep) {
93675
+ if (singleAnim.parGroupIndex !== subGroupIndex) {
93676
+ subGroupIndex = singleAnim.parGroupIndex;
93677
+ subGroupStartMs = trigger === "withPrevious" ? prevStep.delayMs : prevStep.delayMs + prevStep.durationMs;
93678
+ }
93679
+ delayMs = subGroupStartMs + animDelay + triggerDelay;
93680
+ } else if (trigger === "withPrevious" && prevStep) {
93681
+ delayMs = prevStep.delayMs + animDelay + triggerDelay;
93682
+ } else if ((trigger === "afterPrevious" || trigger === "afterDelay") && prevStep) {
93683
+ delayMs = prevStep.delayMs + prevStep.durationMs + animDelay + triggerDelay;
93513
93684
  } else {
93514
93685
  delayMs = animDelay + triggerDelay;
93515
93686
  }
@@ -93535,14 +93706,14 @@ function buildTimeline(nativeAnimations) {
93535
93706
  }
93536
93707
  if (currentGroup.length > 0) {
93537
93708
  const group = finalizeClickGroup(currentGroup);
93538
- if (!currentGroupIsClick && clickGroups.length > 0) {
93709
+ if (currentGroupAutoStart || !currentGroupIsClick && clickGroups.length > 0) {
93539
93710
  group.autoAdvance = true;
93540
93711
  }
93541
93712
  clickGroups.push(group);
93542
93713
  }
93543
- for (let i = 1; i < clickGroups.length; i++) {
93544
- if (clickGroups[i].autoAdvance) {
93545
- clickGroups[i].autoAdvanceDelayMs = 0;
93714
+ for (const group of clickGroups) {
93715
+ if (group.autoAdvance) {
93716
+ group.autoAdvanceDelayMs = 0;
93546
93717
  }
93547
93718
  }
93548
93719
  const interactiveSequences = buildSequenceGroups(
@@ -93912,6 +94083,34 @@ var TimelineEngine = class _TimelineEngine {
93912
94083
  resetHover(triggerShapeId) {
93913
94084
  this.hoverGroupIndexes.delete(triggerShapeId);
93914
94085
  }
94086
+ /**
94087
+ * Jump to the END of the timeline: every click-group counted as played, every
94088
+ * entrance revealed and every exit applied, with no CSS animation attached so
94089
+ * nothing replays.
94090
+ *
94091
+ * This is what PowerPoint shows when you step BACKWARD onto a slide: it
94092
+ * appears with its builds already complete, and a further back press walks
94093
+ * them off again. Re-running the timeline from zero instead made a deck whose
94094
+ * opening build auto-starts restart its animation every time the presenter
94095
+ * stepped back onto it.
94096
+ */
94097
+ completeAll() {
94098
+ this.reset();
94099
+ for (const group of this.timeline.clickGroups) {
94100
+ for (const step of group.steps) {
94101
+ if (step.build || step.colorTargets) {
94102
+ this.activeSteps.set(step.elementId, step);
94103
+ }
94104
+ if (step.presetClass === "entr") {
94105
+ this.revealedElements.add(step.elementId);
94106
+ }
94107
+ if (step.presetClass === "exit") {
94108
+ this.exitedElements.add(step.elementId);
94109
+ }
94110
+ }
94111
+ }
94112
+ this.currentGroupIndex = this.timeline.clickGroups.length - 1;
94113
+ }
93915
94114
  /**
93916
94115
  * Reset the engine to its initial state (no animations played).
93917
94116
  */
@@ -94029,6 +94228,14 @@ var PresentationAnimationController = class _PresentationAnimationController {
94029
94228
  reset() {
94030
94229
  this.engine.reset();
94031
94230
  }
94231
+ /**
94232
+ * Seed the slide as fully built: every group counted as played, nothing
94233
+ * animating. Bindings use it when the presenter steps BACKWARD onto a slide,
94234
+ * which PowerPoint shows with its builds already complete.
94235
+ */
94236
+ completeAll() {
94237
+ this.engine.completeAll();
94238
+ }
94032
94239
  // -----------------------------------------------------------------------
94033
94240
  // Interactive + hover sequences (delegated to the engine)
94034
94241
  // -----------------------------------------------------------------------
@@ -104180,6 +104387,93 @@ function notesSegmentsToSpans(segments) {
104180
104387
  return { kind: "text", key: `seg-${index}`, text: segment.text, style };
104181
104388
  });
104182
104389
  }
104390
+ function charactersWithStyle(runs) {
104391
+ const out = [];
104392
+ for (const run of runs) {
104393
+ for (const ch of run.text) {
104394
+ out.push({ ch, style: run.style });
104395
+ }
104396
+ }
104397
+ return out;
104398
+ }
104399
+ function stateSpan(animId, text2, states, style) {
104400
+ const state = states.get(animId);
104401
+ return {
104402
+ animId,
104403
+ text: text2,
104404
+ hidden: state?.visible === false,
104405
+ cssAnimation: state?.cssAnimation,
104406
+ style
104407
+ };
104408
+ }
104409
+ function buildTextBuildSpec(elementId, paraIndex, runs, states) {
104410
+ if (!states || states.size === 0) {
104411
+ return void 0;
104412
+ }
104413
+ const paraKey = `${elementId}${TEXT_BUILD_ID_SEP}p${paraIndex}`;
104414
+ const paraState = states.get(paraKey);
104415
+ if (paraState) {
104416
+ return {
104417
+ granularity: "paragraph",
104418
+ animId: paraKey,
104419
+ hidden: paraState.visible === false,
104420
+ cssAnimation: paraState.cssAnimation
104421
+ };
104422
+ }
104423
+ const characters = charactersWithStyle(runs);
104424
+ if (states.has(`${elementId}${TEXT_BUILD_ID_SEP}w${paraIndex}-0`)) {
104425
+ const spans = [];
104426
+ let wordIndex = 0;
104427
+ let current = null;
104428
+ const flush = () => {
104429
+ if (!current) {
104430
+ return;
104431
+ }
104432
+ spans.push(
104433
+ stateSpan(
104434
+ `${elementId}${TEXT_BUILD_ID_SEP}w${paraIndex}-${wordIndex}`,
104435
+ current.text,
104436
+ states,
104437
+ current.style
104438
+ )
104439
+ );
104440
+ wordIndex++;
104441
+ current = null;
104442
+ };
104443
+ for (const { ch, style } of characters) {
104444
+ if (/\s/u.test(ch)) {
104445
+ flush();
104446
+ spans.push({ text: ch, hidden: false, style });
104447
+ continue;
104448
+ }
104449
+ current = current === null ? { text: ch, style } : { text: current.text + ch, style: current.style };
104450
+ }
104451
+ flush();
104452
+ return { granularity: "word", spans };
104453
+ }
104454
+ if (states.has(`${elementId}${TEXT_BUILD_ID_SEP}c${paraIndex}-0`)) {
104455
+ const spans = characters.map(
104456
+ (entry, index) => stateSpan(
104457
+ `${elementId}${TEXT_BUILD_ID_SEP}c${paraIndex}-${index}`,
104458
+ entry.ch,
104459
+ states,
104460
+ entry.style
104461
+ )
104462
+ );
104463
+ return { granularity: "char", spans };
104464
+ }
104465
+ return void 0;
104466
+ }
104467
+ function textBuildSpanStyle(span) {
104468
+ const style = { display: "inline" };
104469
+ if (span.hidden) {
104470
+ style.visibility = "hidden";
104471
+ }
104472
+ if (span.cssAnimation) {
104473
+ style.animation = span.cssAnimation;
104474
+ }
104475
+ return style;
104476
+ }
104183
104477
  var PRESENTER_ZOOM_MIN = 1;
104184
104478
  var PRESENTER_ZOOM_MAX = 4;
104185
104479
  var PRESENTER_ZOOM_STEP = 0.5;
@@ -104559,6 +104853,31 @@ async function clearAudienceContent(sessionId) {
104559
104853
  } catch {
104560
104854
  }
104561
104855
  }
104856
+ function isAudienceDisplayHash(hash2) {
104857
+ return typeof hash2 === "string" && hash2.startsWith(PRESENTATION_HASH);
104858
+ }
104859
+ function isAudienceDisplayTab() {
104860
+ if (typeof window === "undefined") {
104861
+ return false;
104862
+ }
104863
+ return isAudienceDisplayHash(window.location.hash);
104864
+ }
104865
+ function mayLeaveSlideShow(isAudienceDisplay = isAudienceDisplayTab()) {
104866
+ return !isAudienceDisplay;
104867
+ }
104868
+ function acceptsPresentationInput(isAudienceDisplay = isAudienceDisplayTab()) {
104869
+ return !isAudienceDisplay;
104870
+ }
104871
+ function endAudienceDisplay(win = globalThis.window) {
104872
+ if (!win) {
104873
+ return true;
104874
+ }
104875
+ try {
104876
+ win.close();
104877
+ } catch {
104878
+ }
104879
+ return !win.closed;
104880
+ }
104562
104881
  function formatSlideCounter(currentSlide, totalSlides) {
104563
104882
  return `${currentSlide + 1} / ${totalSlides}`;
104564
104883
  }
@@ -109392,4 +109711,4 @@ function segmentFrameCount(durationMs, fps) {
109392
109711
  * `<p:extLst>` (optional)
109393
109712
  */
109394
109713
 
109395
- export { ACTION_BUTTON_PRESETS, ARTISTIC_EFFECTS, AVATAR_COLOR_SWATCHES, BACKSTAGE_NAV, BACKSTAGE_TEMPLATES, BROADCAST_THROTTLE_MS, CATEGORIES, COLOR_MAP_ALIAS_KEYS, CONNECTION_TIMEOUT_MS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_COLOR_CHANGE_TOLERANCE, DEFAULT_COLOR_MAP, DEFAULT_INSERT_CHART_TYPE, DEFAULT_QUICK_ACCESS_COMMAND_IDS, DEFAULT_ROW_HEIGHT, DEFAULT_VIEWER_OPTIONS, DEFAULT_VIEWER_PROFILE, DEFAULT_VIRTUAL_OVERSCAN, DIRECTIONAL_PRESETS, DUOTONE_PRESETS, EQUATION_TEMPLATES, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, EncryptedFileError, FILL_MODE_OPTIONS, GRADIENT_TYPE_OPTIONS, HANDOUT_OPTIONS, INK_REPLAY_KEYFRAMES, INSERT_CHART_TYPES, LBL, LOCAL_SYNC_ORIGIN, MOBILE_BREAKPOINT, NOTES_FONT_SIZE_DEFAULT, NOTES_FONT_SIZE_MAX, NOTES_FONT_SIZE_MIN, NOTES_FONT_SIZE_STEP, NUM, PATTERN_OPTIONS, PRESENTATION_CHANNEL_NAME, PRESENTATION_HASH, PRESENTATION_MESSAGE_ORIGIN, PRESENTATION_NONCE_KEY, PRESETS, PptxHandler, PptxMarkdownConverter, PresentationAnimationController, QUICK_ACCESS_COMMAND_CATALOG, RULER_FONT_SIZE, RULER_THICKNESS, SECTION_HEADING, SEL, SHAPE_PRESET_DEFS, SHORTCUT_REFERENCE_ITEMS, SLIDE_TRANSITION_KEYFRAMES, SLIDE_VIRTUALIZATION_THRESHOLD, SWITCHABLE_LAYOUT_TYPES, SvgExporter, TABLET_BREAKPOINT, TABLE_STYLE_PRESETS, TAB_ROW_ACTION_CLASSES, TEXT_BUILD_ID_SEP, THEME_CATALOG, THEME_COLOR_LABELS, THEME_COLOR_SCHEME_KEYS, THEME_PRESETS, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, TOOLBAR_TABS, ThemePresets, VIEWER_OPTIONS_TABS, VIEWER_PREFS_STORAGE_KEY, WEBM_MIME_CANDIDATES, activateModalFocus, addQuickAccessCommand, addSection, addSmartArtNode, addSmartArtNodeAsChild, alignElements, appendPresentationInkPoint, apply3dEffects, applyAcceptAllSlides, applyAcceptSlide, applyCaseTransformToSegments, applyChartBuildReveal, applyColorChange, applyDuotone, applyFormatToElement, applyPreferenceToOptions, applyRehearsalTimings, applyReroutedConnectors, applyResize, applyStyleToSelectedSegments, applyThemeOverrideToSlide, applyThemeToData, availableQuickAccessCommands, bringForward, bringToFront, build3DExtrusionData, buildBroadcastViewerUrl, buildCacheKey, buildCalloutLeaderLineSvgPath, buildChartViewModel, buildCollaborationShareUrl, buildCreateCollaborationConfig, buildCssGradientFromShapeStyle, buildDuotoneCacheKey, buildElementClipboardPayload, buildGlowBoxShadow, buildHandoutsHtml, buildInitialGuides, buildInnerShadowCssFromShapeStyle, buildJoinCollaborationConfig, buildMultiLayerShadowCss, buildNotesHtml, buildNotesPdfBytes, buildOutlineHtml, buildPatternFillCss, buildPresentationAudienceUrl, buildPreviewAnimation, buildPreviewElements, buildPrintDocument, buildPrintHtmlDocument, buildReflectionCss, buildShadowCssFromShapeStyle, buildSlidesHtml, buildSlidesPdfBytes, buildSmartArt3DModel, buildSmartArtA11y, buildSmartArtPresetData, buildSummaryZoomView, buildTextBody3DSceneStyle, buildTextFillCss, buildTextReflectionCss, buildTextRunFilterChain, buildTextShadowCss, buildThemeColorGrid, buildThemeColorMap, buildUserFontFaceStyles, canvasToJpegData, cell3DBevelCss, chartDataAddCategory, chartDataAddSeries, chartDataChangeType, chartDataRemoveCategory, chartDataRemoveSeries, chartDataUpdatePoint, chartPartToAttrs, clampCropValue, clampNotesFontSize, clampPercent, clampUnitInterval2 as clampUnitInterval, clearAllLocalViewerData, clearAudienceContent, clearLocalAwareness, clearStoredViewerPrefs, cloneElementForPaste, cloneHistorySnapshot, cloneSlide, cloneTemplateElementsBySlideId, collectImagePaths, collectMediaElements, collectUsedFonts, colorWithOpacity, comparePresentation, computeAllNotesPages, computeAutoFitTextStyle, 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, createPresenterTimer, createSyncGate, createTouchGestureRecognizer, createViewerOptionsStore, customGeometryPathsToSvgSubpaths, defaultCssVars, defaultRadius, defaultThemeColors, deleteAutosaveSnapshot, deleteSection, deleteTableColumn, deleteTableRow, demoteSmartArtNode, derivePresenceList, detectOrientation, detectTouchDevice, distributeElements, downloadBlob, downloadDataUrl, dragAnchorViewY, dragValueForPart, elementActionToPptxAction, encodeGif, erasePresentationInkAt, evaluatePresetShape, extractPathPoints, filterCommands, findChartPartTarget, findSmartArtNodeText, 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, getGroupChildParentFill, getImageColorWashStyle, getImageEffectsFilter, getImageEffectsOpacity, getImageSvgFilters, getInkReplayStyles, getInlineEditorSelection, getKinsokuLineBreakStyles, getLinkedTextBoxSegments, getLocalStorageUsageSummary, getNotesPrintableArea, getOleBadgeLabel, getOleObjectTypeLabel, getOleTypeColor, getOleTypeLabel, getPatternSvg, getPendingSelectionRestore, getPresetShapeClipPath, getPrintableArea, getResolvedShapeClipPath, getRoundRectRadiusPx, getSecondaryValueAxis, getShapeAdjustmentHandleDescriptor, getSlideBackgroundStyle, getSlideTransitionAnimations, getSoftEdgeFilterId, getSoftEdgeSvgFilter, getSubstituteFontFamily, getSvgStrokeDasharray, getTextAlphaOpacity, getTextCompensationTransform, getWarpPath, groupElements, groupIntoParagraphs, groupSlidesBySection, guidePxToEmu, hasCopyableFormat, hasDistinctScriptFonts, hasPressureVariation, hasShapeProperties, hasTextProperties, hexToRgbChannels2 as hexToRgbChannels, insertTableColumn, insertTableRow, isActionHidden, isBrowserOpenableMime, isCalloutShape, isCellInRect, isEditableTextElement, isExportAbortError, isFirstSlide, isImageLikeElement, isInkElement, isKeyboardOpen, isLastSlide, isMixedContentBlocked, isMobileViewport, isPpactionUrl, isPresentationSessionMessage, isTemplateElement, isTemplateElementId2 as isTemplateElementId, isUrlSafe, listAutosaveSnapshots, listBackstageRecentFiles, loadAudienceContent, makeCloneId, makeSlideId, mapPresentationKey, mergeAdditiveSelection, mergeCells, mergePresentationSnapshot, mergeShapes, mobileElapsedSince, mobileSlideCounter, mountModel3D, mountSurfaceChart3D, movePresenterPointer, moveQuickAccessCommand, moveSectionDown, moveSectionUp, moveSlidesToSection, newTableElement, normalizeColorsForCapture, normalizeHexColor, normalizeStrokeDashType, normalizeValue, notesSegmentsToSpans, observeYDocSlides, ooxmlDashToCssBorderStyle, ooxmlGradientAngleToCssDegrees, openPptxFile, openUrlInNewTab, paletteColor, parseDrawingColor, parseDrawingColorOpacity, parseMediaCommand, parsePpactionUrl, pickSupportedMimeType, placeAudienceWindow, polygonsToSvgPath, pptxActionToElementAction, preprocessCssForCapture, presentationInkPath, presenterElapsed, presenterPaneAdvancesOnClick, pressuresToWidths, printPropertiesFrameSlides, printPropertiesSlidesPerPage, promoteSmartArtNode, publishLiveGeometry, publishLiveInlineText, reResolveSlideColors, readBackstageRecentFile, readSlidesFromYDoc, readStoredViewerPrefs, readViewportMetrics, rebuildDrawingShapesIfCleared, rebuildTableStructureInRawXml, reconcileSlidesInYDoc, recordProgressPercent, rectToCells, registerCollaborationTeardown, remapTextToSegments, removeQuickAccessCommand, removeSmartArtNode, renameSection, reorderSmartArtNode, rerouteConnectorsForMovedElements, resetPresenterTimer, resolveAudienceScreenPlacement, resolveCssTextAlign, resolveDrawingShapeNodeId, resolveFontForScript, resolveFontRefIdx, resolveGroupChildFill, resolveInkColor, resolveInkOpacity, resolveInkWidth, resolveLineHeight, resolveOleType, resolveParagraphAlign, resolveParagraphRtl, resolvePictureBullet, resolveProfileInitial, resolveRegionCode, resolveThemeCatalogEntry, resolveTitleBarStatusKey, resolveTransitionDurationMs, resolveTransportForServerUrl, resolveUnderlineDecorationStyle, resolveViewerAddinRows, restoreSegmentSelection, revealedSmartArtNodeCount, safeOpenUrl, sanitizeColor, sanitizeDownloadFilename, sanitizeMathMl, saveAutosaveSnapshot, saveViewerProfile, scanAvailableFontFamilies, segmentByScript, segmentFrameCount, sendBackward, sendToBack, sequentialColorScale, seriesColor2 as seriesColor, setCachedResult, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartDataPointMarker, setChartSeriesChartType, setChartSeriesMarker, setDuotoneCachedResult, setPendingSelectionRestore, setSmartArtNodeStyle, shadeColor2, shouldAutoFollowBroadcaster, shouldCommitSmartArtNodeText, shouldConfirmExternalHyperlink, shouldLoopContinuously, shouldUseSvgWarp, slideProgressPercent, slideStatusLabel, snapBoxToGrid, splitCell, splitSeriesByAxis, stepPresenterZoom, storeAudienceContent, substituteFieldText, svgLineCap, svgPathToPolygons, swapPresentationWindows, switchSmartArtLayout, themeColorSchemesEqual, themeToCssVars, tintColor2, toCssTextOrientation, toCssVerticalDirection, toCssWritingMode, togglePresenterTimer, transformTextCase, updateCellTextInRawXml, updateCellTextStyleInRawXml, updateMergeAttrsInRawXml, updateSmartArtNodeText, validateRoomId, valueToY, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, viewerOptionsToPreferences, withChartPointValue, withChartTitle, withFrameSlides, withSlidesPerPage, writeStoredViewerPrefs };
109714
+ export { ACTION_BUTTON_PRESETS, ARTISTIC_EFFECTS, AVATAR_COLOR_SWATCHES, BACKSTAGE_NAV, BACKSTAGE_TEMPLATES, BROADCAST_THROTTLE_MS, CATEGORIES, COLOR_MAP_ALIAS_KEYS, CONNECTION_TIMEOUT_MS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_COLOR_CHANGE_TOLERANCE, DEFAULT_COLOR_MAP, DEFAULT_INSERT_CHART_TYPE, DEFAULT_QUICK_ACCESS_COMMAND_IDS, DEFAULT_ROW_HEIGHT, DEFAULT_VIEWER_OPTIONS, DEFAULT_VIEWER_PROFILE, DEFAULT_VIRTUAL_OVERSCAN, DIRECTIONAL_PRESETS, DUOTONE_PRESETS, EQUATION_TEMPLATES, EXPORT_ASSEMBLING_PERCENT, EXPORT_DONE_PERCENT, EncryptedFileError, FILL_MODE_OPTIONS, GRADIENT_TYPE_OPTIONS, HANDOUT_OPTIONS, INK_REPLAY_KEYFRAMES, INSERT_CHART_TYPES, LBL, LOCAL_SYNC_ORIGIN, MOBILE_BREAKPOINT, NOTES_FONT_SIZE_DEFAULT, NOTES_FONT_SIZE_MAX, NOTES_FONT_SIZE_MIN, NOTES_FONT_SIZE_STEP, NUM, PATTERN_OPTIONS, PRESENTATION_CHANNEL_NAME, PRESENTATION_HASH, PRESENTATION_MESSAGE_ORIGIN, PRESENTATION_NONCE_KEY, PRESETS, PptxHandler, PptxMarkdownConverter, PresentationAnimationController, QUICK_ACCESS_COMMAND_CATALOG, RULER_FONT_SIZE, RULER_THICKNESS, SECTION_HEADING, SEL, SHAPE_PRESET_DEFS, SHORTCUT_REFERENCE_ITEMS, SLIDE_TRANSITION_KEYFRAMES, SLIDE_VIRTUALIZATION_THRESHOLD, SWITCHABLE_LAYOUT_TYPES, SvgExporter, TABLET_BREAKPOINT, TABLE_STYLE_PRESETS, TAB_ROW_ACTION_CLASSES, TEXT_BUILD_ID_SEP, THEME_CATALOG, THEME_COLOR_LABELS, THEME_COLOR_SCHEME_KEYS, THEME_PRESETS, TITLE_BAR_CLASSES, TITLE_BAR_DEFAULT_FILE_KEY, TOOLBAR_TABS, ThemePresets, VIEWER_OPTIONS_TABS, VIEWER_PREFS_STORAGE_KEY, WEBM_MIME_CANDIDATES, acceptsPresentationInput, activateModalFocus, addQuickAccessCommand, addSection, addSmartArtNode, addSmartArtNodeAsChild, alignElements, appendPresentationInkPoint, apply3dEffects, applyAcceptAllSlides, applyAcceptSlide, applyCaseTransformToSegments, applyChartBuildReveal, applyColorChange, applyDuotone, applyFormatToElement, applyPreferenceToOptions, applyRehearsalTimings, applyReroutedConnectors, applyResize, applyStyleToSelectedSegments, applyThemeOverrideToSlide, applyThemeToData, availableQuickAccessCommands, bringForward, bringToFront, build3DExtrusionData, buildBroadcastViewerUrl, buildCacheKey, buildCalloutLeaderLineSvgPath, buildChartViewModel, buildCollaborationShareUrl, buildCreateCollaborationConfig, buildCssGradientFromShapeStyle, buildDuotoneCacheKey, buildElementClipboardPayload, buildGlowBoxShadow, buildHandoutsHtml, buildInitialGuides, buildInnerShadowCssFromShapeStyle, buildJoinCollaborationConfig, buildMultiLayerShadowCss, buildNotesHtml, buildNotesPdfBytes, buildOutlineHtml, buildPatternFillCss, buildPresentationAudienceUrl, buildPreviewAnimation, buildPreviewElements, buildPrintDocument, buildPrintHtmlDocument, buildReflectionCss, buildShadowCssFromShapeStyle, buildSlidesHtml, buildSlidesPdfBytes, buildSmartArt3DModel, buildSmartArtA11y, buildSmartArtPresetData, buildSummaryZoomView, buildTextBody3DSceneStyle, buildTextBuildSpec, buildTextFillCss, buildTextReflectionCss, buildTextRunFilterChain, buildTextShadowCss, buildThemeColorGrid, buildThemeColorMap, buildUserFontFaceStyles, canvasToJpegData, cell3DBevelCss, chartDataAddCategory, chartDataAddSeries, chartDataChangeType, chartDataRemoveCategory, chartDataRemoveSeries, chartDataUpdatePoint, chartPartToAttrs, clampCropValue, clampNotesFontSize, clampPercent, clampUnitInterval2 as clampUnitInterval, clearAllLocalViewerData, clearAudienceContent, clearLocalAwareness, clearStoredViewerPrefs, cloneElementForPaste, cloneHistorySnapshot, cloneSlide, cloneTemplateElementsBySlideId, collectImagePaths, collectMediaElements, collectUsedFonts, colorWithOpacity, comparePresentation, computeAllNotesPages, computeAutoFitTextStyle, 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, createPresenterTimer, createSyncGate, createTouchGestureRecognizer, createViewerOptionsStore, customGeometryPathsToSvgSubpaths, defaultCssVars, defaultRadius, defaultThemeColors, deleteAutosaveSnapshot, deleteSection, deleteTableColumn, deleteTableRow, demoteSmartArtNode, derivePresenceList, detectOrientation, detectTouchDevice, distributeElements, downloadBlob, downloadDataUrl, dragAnchorViewY, dragValueForPart, elementActionToPptxAction, encodeGif, endAudienceDisplay, erasePresentationInkAt, evaluatePresetShape, extractPathPoints, filterCommands, findChartPartTarget, findSmartArtNodeText, 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, getGroupChildParentFill, getImageColorWashStyle, getImageEffectsFilter, getImageEffectsOpacity, getImageSvgFilters, getInkReplayStyles, getInlineEditorSelection, getKinsokuLineBreakStyles, getLinkedTextBoxSegments, getLocalStorageUsageSummary, getNotesPrintableArea, getOleBadgeLabel, getOleObjectTypeLabel, getOleTypeColor, getOleTypeLabel, getPatternSvg, getPendingSelectionRestore, getPresetShapeClipPath, getPrintableArea, getResolvedShapeClipPath, getRoundRectRadiusPx, getSecondaryValueAxis, getShapeAdjustmentHandleDescriptor, getSlideBackgroundStyle, getSlideTransitionAnimations, getSoftEdgeFilterId, getSoftEdgeSvgFilter, getSubstituteFontFamily, getSvgStrokeDasharray, getTextAlphaOpacity, getTextCompensationTransform, getWarpPath, groupElements, groupIntoParagraphs, groupSlidesBySection, guidePxToEmu, hasCopyableFormat, hasDistinctScriptFonts, hasPressureVariation, hasShapeProperties, hasTextProperties, hexToRgbChannels2 as hexToRgbChannels, insertTableColumn, insertTableRow, isActionHidden, isBrowserOpenableMime, isCalloutShape, isCellInRect, isEditableTextElement, isExportAbortError, isFirstSlide, isImageLikeElement, isInkElement, isKeyboardOpen, isLastSlide, isMixedContentBlocked, isMobileViewport, isPpactionUrl, isPresentationSessionMessage, isTemplateElement, isTemplateElementId2 as isTemplateElementId, isUrlSafe, listAutosaveSnapshots, listBackstageRecentFiles, loadAudienceContent, makeCloneId, makeSlideId, mapPresentationKey, mayLeaveSlideShow, mergeAdditiveSelection, mergeCells, mergePresentationSnapshot, mergeShapes, mobileElapsedSince, mobileSlideCounter, mountModel3D, mountSurfaceChart3D, movePresenterPointer, moveQuickAccessCommand, moveSectionDown, moveSectionUp, moveSlidesToSection, newTableElement, normalizeColorsForCapture, normalizeHexColor, normalizeStrokeDashType, normalizeValue, notesSegmentsToSpans, observeYDocSlides, ooxmlDashToCssBorderStyle, ooxmlGradientAngleToCssDegrees, openPptxFile, openUrlInNewTab, paletteColor, parseDrawingColor, parseDrawingColorOpacity, parseMediaCommand, parsePpactionUrl, pickSupportedMimeType, placeAudienceWindow, polygonsToSvgPath, pptxActionToElementAction, preprocessCssForCapture, presentationInkPath, presenterElapsed, presenterPaneAdvancesOnClick, pressuresToWidths, printPropertiesFrameSlides, printPropertiesSlidesPerPage, promoteSmartArtNode, publishLiveGeometry, publishLiveInlineText, reResolveSlideColors, readBackstageRecentFile, readSlidesFromYDoc, readStoredViewerPrefs, readViewportMetrics, rebuildDrawingShapesIfCleared, rebuildTableStructureInRawXml, reconcileSlidesInYDoc, recordProgressPercent, rectToCells, registerCollaborationTeardown, remapTextToSegments, removeQuickAccessCommand, removeSmartArtNode, renameSection, reorderSmartArtNode, rerouteConnectorsForMovedElements, resetPresenterTimer, resolveAudienceScreenPlacement, resolveCssTextAlign, resolveDrawingShapeNodeId, resolveFontForScript, resolveFontRefIdx, resolveGroupChildFill, resolveInkColor, resolveInkOpacity, resolveInkWidth, resolveLineHeight, resolveOleType, resolveParagraphAlign, resolveParagraphRtl, resolvePictureBullet, resolveProfileInitial, resolveRegionCode, resolveThemeCatalogEntry, resolveTitleBarStatusKey, resolveTransitionDurationMs, resolveTransportForServerUrl, resolveUnderlineDecorationStyle, resolveViewerAddinRows, restoreSegmentSelection, revealedSmartArtNodeCount, safeOpenUrl, sanitizeColor, sanitizeDownloadFilename, sanitizeMathMl, saveAutosaveSnapshot, saveViewerProfile, scanAvailableFontFamilies, segmentByScript, segmentFrameCount, sendBackward, sendToBack, sequentialColorScale, seriesColor2 as seriesColor, setCachedResult, setChartAxisGridlineStyle, setChartAxisLogScale, setChartAxisTitleStyle, setChartDataPointExplosion, setChartDataPointFill, setChartDataPointLabel, setChartDataPointMarker, setChartSeriesChartType, setChartSeriesMarker, setDuotoneCachedResult, setPendingSelectionRestore, setSmartArtNodeStyle, shadeColor2, shouldAutoFollowBroadcaster, shouldCommitSmartArtNodeText, shouldConfirmExternalHyperlink, shouldLoopContinuously, shouldUseSvgWarp, slideProgressPercent, slideStatusLabel, snapBoxToGrid, splitCell, splitSeriesByAxis, stepPresenterZoom, storeAudienceContent, substituteFieldText, svgLineCap, svgPathToPolygons, swapPresentationWindows, switchSmartArtLayout, textBuildSpanStyle, themeColorSchemesEqual, themeToCssVars, tintColor2, toCssTextOrientation, toCssVerticalDirection, toCssWritingMode, togglePresenterTimer, transformTextCase, updateCellTextInRawXml, updateCellTextStyleInRawXml, updateMergeAttrsInRawXml, updateSmartArtNodeText, validateRoomId, valueToY, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, viewerOptionsToPreferences, withChartPointValue, withChartTitle, withFrameSlides, withSlidesPerPage, writeStoredViewerPrefs };