pptx-react-viewer 4.7.0 → 4.9.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 (135) hide show
  1. package/CHANGELOG.md +146 -0
  2. package/dist/{AiChatPanel-3YILWCBX.js → AiChatPanel-WJ64Q6KO.js} +28 -28
  3. package/dist/AiChatPanel-WJ64Q6KO.js.br +0 -0
  4. package/dist/AiChatPanel-WJ64Q6KO.js.gz +0 -0
  5. package/dist/{AiChatPanel-X2MVL5UP.mjs → AiChatPanel-YRWC7C3B.mjs} +4 -4
  6. package/dist/AiChatPanel-YRWC7C3B.mjs.br +0 -0
  7. package/dist/AiChatPanel-YRWC7C3B.mjs.gz +0 -0
  8. package/dist/{Model3DScene-QFWI5CEE.mjs → Model3DScene-DS6AQWFV.mjs} +1 -1
  9. package/dist/Model3DScene-DS6AQWFV.mjs.br +0 -0
  10. package/dist/Model3DScene-DS6AQWFV.mjs.gz +0 -0
  11. package/dist/{Model3DScene-G7P6ZAIO.js → Model3DScene-VHDYCHO5.js} +2 -2
  12. package/dist/{Model3DScene-G7P6ZAIO.js.br → Model3DScene-VHDYCHO5.js.br} +0 -0
  13. package/dist/Model3DScene-VHDYCHO5.js.gz +0 -0
  14. package/dist/{chunk-FYAOOACZ.js → chunk-7NTNFOPT.js} +287 -255
  15. package/dist/chunk-7NTNFOPT.js.br +0 -0
  16. package/dist/chunk-7NTNFOPT.js.gz +0 -0
  17. package/dist/{chunk-WIEBQGQI.mjs → chunk-HDH4KFDK.mjs} +323 -96
  18. package/dist/chunk-HDH4KFDK.mjs.br +0 -0
  19. package/dist/chunk-HDH4KFDK.mjs.gz +0 -0
  20. package/dist/{chunk-UBYFLXAU.mjs → chunk-K5HZD63F.mjs} +2548 -1857
  21. package/dist/chunk-K5HZD63F.mjs.br +0 -0
  22. package/dist/chunk-K5HZD63F.mjs.gz +0 -0
  23. package/dist/{chunk-UIAU3NR2.js → chunk-KPKO2ELT.js} +323 -96
  24. package/dist/chunk-KPKO2ELT.js.br +0 -0
  25. package/dist/chunk-KPKO2ELT.js.gz +0 -0
  26. package/dist/{chunk-OECUSL2B.mjs → chunk-M6KW27TZ.mjs} +8 -7
  27. package/dist/chunk-M6KW27TZ.mjs.br +0 -0
  28. package/dist/chunk-M6KW27TZ.mjs.gz +0 -0
  29. package/dist/{chunk-VF4RA27Q.js → chunk-NMXIX7E4.js} +4565 -3874
  30. package/dist/chunk-NMXIX7E4.js.br +0 -0
  31. package/dist/chunk-NMXIX7E4.js.gz +0 -0
  32. package/dist/{chunk-QLDHUKH2.mjs → chunk-PJT2DTOS.mjs} +43189 -15692
  33. package/dist/chunk-PJT2DTOS.mjs.br +0 -0
  34. package/dist/chunk-PJT2DTOS.mjs.gz +0 -0
  35. package/dist/{chunk-2BM4GBFZ.js → chunk-PSJTZIIK.js} +5 -5
  36. package/dist/chunk-PSJTZIIK.js.br +0 -0
  37. package/dist/chunk-PSJTZIIK.js.gz +0 -0
  38. package/dist/{chunk-5J6NW3YS.mjs → chunk-Y7RTQOD6.mjs} +81 -49
  39. package/dist/chunk-Y7RTQOD6.mjs.br +0 -0
  40. package/dist/chunk-Y7RTQOD6.mjs.gz +0 -0
  41. package/dist/{chunk-AQIXKTAT.js → chunk-YWAFJZ23.js} +43214 -15695
  42. package/dist/chunk-YWAFJZ23.js.br +0 -0
  43. package/dist/chunk-YWAFJZ23.js.gz +0 -0
  44. package/dist/{chunk-SR7ETIBF.js → chunk-ZZ6IPWOP.js} +819 -818
  45. package/dist/chunk-ZZ6IPWOP.js.br +0 -0
  46. package/dist/chunk-ZZ6IPWOP.js.gz +0 -0
  47. package/dist/{chunk-E5OIDWHO.mjs → chunk-ZZY24BB7.mjs} +1 -1
  48. package/dist/chunk-ZZY24BB7.mjs.br +0 -0
  49. package/dist/chunk-ZZY24BB7.mjs.gz +0 -0
  50. package/dist/i18n/de.cjs +340 -105
  51. package/dist/i18n/de.cjs.br +0 -0
  52. package/dist/i18n/de.cjs.gz +0 -0
  53. package/dist/i18n/de.mjs +340 -105
  54. package/dist/i18n/de.mjs.br +0 -0
  55. package/dist/i18n/de.mjs.gz +0 -0
  56. package/dist/i18n/es.cjs +340 -105
  57. package/dist/i18n/es.cjs.br +0 -0
  58. package/dist/i18n/es.cjs.gz +0 -0
  59. package/dist/i18n/es.mjs +340 -105
  60. package/dist/i18n/es.mjs.br +0 -0
  61. package/dist/i18n/es.mjs.gz +0 -0
  62. package/dist/i18n/fr.cjs +340 -105
  63. package/dist/i18n/fr.cjs.br +0 -0
  64. package/dist/i18n/fr.cjs.gz +0 -0
  65. package/dist/i18n/fr.mjs +340 -105
  66. package/dist/i18n/fr.mjs.br +0 -0
  67. package/dist/i18n/fr.mjs.gz +0 -0
  68. package/dist/i18n/zh-CN.cjs +342 -107
  69. package/dist/i18n/zh-CN.cjs.br +0 -0
  70. package/dist/i18n/zh-CN.cjs.gz +0 -0
  71. package/dist/i18n/zh-CN.mjs +342 -107
  72. package/dist/i18n/zh-CN.mjs.br +0 -0
  73. package/dist/i18n/zh-CN.mjs.gz +0 -0
  74. package/dist/i18n.js +4 -4
  75. package/dist/i18n.js.br +0 -0
  76. package/dist/i18n.js.gz +0 -0
  77. package/dist/i18n.mjs +1 -1
  78. package/dist/i18n.mjs.br +0 -0
  79. package/dist/i18n.mjs.gz +0 -0
  80. package/dist/index.d.ts +762 -22
  81. package/dist/index.js +63 -63
  82. package/dist/index.js.br +0 -0
  83. package/dist/index.js.gz +0 -0
  84. package/dist/index.mjs +6 -6
  85. package/dist/index.mjs.br +0 -0
  86. package/dist/index.mjs.gz +0 -0
  87. package/dist/internals.d.ts +754 -11
  88. package/dist/internals.js +105 -105
  89. package/dist/internals.js.br +0 -0
  90. package/dist/internals.js.gz +0 -0
  91. package/dist/internals.mjs +4 -4
  92. package/dist/internals.mjs.br +0 -0
  93. package/dist/internals.mjs.gz +0 -0
  94. package/dist/pptx-viewer.css +1 -1
  95. package/dist/pptx-viewer.css.br +0 -0
  96. package/dist/pptx-viewer.css.gz +0 -0
  97. package/dist/viewer/index.d.ts +739 -22
  98. package/dist/viewer/index.js +27 -27
  99. package/dist/viewer/index.js.br +0 -0
  100. package/dist/viewer/index.js.gz +0 -0
  101. package/dist/viewer/index.mjs +6 -6
  102. package/dist/viewer/index.mjs.br +0 -0
  103. package/dist/viewer/index.mjs.gz +0 -0
  104. package/package.json +3 -2
  105. package/dist/AiChatPanel-3YILWCBX.js.br +0 -0
  106. package/dist/AiChatPanel-3YILWCBX.js.gz +0 -0
  107. package/dist/AiChatPanel-X2MVL5UP.mjs.br +0 -0
  108. package/dist/AiChatPanel-X2MVL5UP.mjs.gz +0 -0
  109. package/dist/Model3DScene-G7P6ZAIO.js.gz +0 -0
  110. package/dist/Model3DScene-QFWI5CEE.mjs.br +0 -0
  111. package/dist/Model3DScene-QFWI5CEE.mjs.gz +0 -0
  112. package/dist/chunk-2BM4GBFZ.js.br +0 -0
  113. package/dist/chunk-2BM4GBFZ.js.gz +0 -0
  114. package/dist/chunk-5J6NW3YS.mjs.br +0 -0
  115. package/dist/chunk-5J6NW3YS.mjs.gz +0 -0
  116. package/dist/chunk-AQIXKTAT.js.br +0 -0
  117. package/dist/chunk-AQIXKTAT.js.gz +0 -0
  118. package/dist/chunk-E5OIDWHO.mjs.br +0 -0
  119. package/dist/chunk-E5OIDWHO.mjs.gz +0 -0
  120. package/dist/chunk-FYAOOACZ.js.br +0 -0
  121. package/dist/chunk-FYAOOACZ.js.gz +0 -0
  122. package/dist/chunk-OECUSL2B.mjs.br +0 -0
  123. package/dist/chunk-OECUSL2B.mjs.gz +0 -0
  124. package/dist/chunk-QLDHUKH2.mjs.br +0 -0
  125. package/dist/chunk-QLDHUKH2.mjs.gz +0 -0
  126. package/dist/chunk-SR7ETIBF.js.br +0 -0
  127. package/dist/chunk-SR7ETIBF.js.gz +0 -0
  128. package/dist/chunk-UBYFLXAU.mjs.br +0 -0
  129. package/dist/chunk-UBYFLXAU.mjs.gz +0 -0
  130. package/dist/chunk-UIAU3NR2.js.br +0 -0
  131. package/dist/chunk-UIAU3NR2.js.gz +0 -0
  132. package/dist/chunk-VF4RA27Q.js.br +0 -0
  133. package/dist/chunk-VF4RA27Q.js.gz +0 -0
  134. package/dist/chunk-WIEBQGQI.mjs.br +0 -0
  135. package/dist/chunk-WIEBQGQI.mjs.gz +0 -0
@@ -1297,6 +1297,27 @@ interface ShapeStyle {
1297
1297
  * `authored-shape-style.ts`'s `effectIsPurelyStyleMatrix`.
1298
1298
  */
1299
1299
  inheritedEffectStyle?: ShapeStyle;
1300
+ /**
1301
+ * Set by a style-matrix pick (the Shape Styles gallery): the shape's own
1302
+ * `spPr` fill, outline and effects were replaced by `<p:style>`, so the
1303
+ * writer clears whatever the retained `spPr` still authored before it
1304
+ * writes the (now reference-owned) style. Never parsed; editor state only.
1305
+ */
1306
+ styleMatrixReset?: boolean;
1307
+ }
1308
+ /**
1309
+ * The result of resolving a `<p:style>` block against the loaded theme.
1310
+ *
1311
+ * `shapeStyle` is exactly what the load pipeline would have produced for a
1312
+ * shape whose `spPr` authors nothing and whose `<p:style>` is `styleXml`:
1313
+ * the flat fill/outline/effect values a renderer needs, the reference indices
1314
+ * and colours the writer re-emits, and the inheritance baselines that tell the
1315
+ * writer to leave `spPr` empty while the flat values still agree with them.
1316
+ */
1317
+ interface ResolvedStyleMatrix {
1318
+ shapeStyle: ShapeStyle;
1319
+ /** The text colour `<a:fontRef>` names, resolved to hex. */
1320
+ fontColor?: string;
1300
1321
  }
1301
1322
  //#endregion
1302
1323
  //#region src/core/types/text.d.ts
@@ -1931,6 +1952,16 @@ interface TextStyle {
1931
1952
  textReflectionEndOpacity?: number;
1932
1953
  /** Text reflection offset distance in px. */
1933
1954
  textReflectionOffset?: number;
1955
+ /**
1956
+ * Text reflection end position (`@endPos`) as a 0-1 fraction of the text
1957
+ * height the fade reaches. Mirrors `ShapeStyle.reflectionEndPosition`.
1958
+ */
1959
+ textReflectionEndPosition?: number;
1960
+ /**
1961
+ * Text reflection offset direction (`@dir`) in degrees. Mirrors
1962
+ * `ShapeStyle.reflectionDirection`.
1963
+ */
1964
+ textReflectionDirection?: number;
1934
1965
  /**
1935
1966
  * Text reflection fade direction (`a:rPr/a:effectLst/a:reflection/@fadeDir`)
1936
1967
  * in degrees. Mirrors `ShapeStyle.reflectionFadeDirection`.
@@ -2249,6 +2280,21 @@ interface TextSegment {
2249
2280
  * populated; unrelated fields fall back to the shape-level style.
2250
2281
  */
2251
2282
  paragraphProperties?: TextStyle;
2283
+ /**
2284
+ * The paragraph this segment starts authored an EMPTY `<a:pPr/>`. Only
2285
+ * meaningful on the first segment of a paragraph. The writer re-emits the
2286
+ * empty element when it has no paragraph property of its own to write, so
2287
+ * a rewritten slide keeps the markup PowerPoint wrote.
2288
+ */
2289
+ emptyParagraphPropertiesAuthored?: boolean;
2290
+ /**
2291
+ * The paragraph this segment starts has no run content and authored no
2292
+ * `a:endParaRPr` (a bare `<a:p/>`, possibly with an `a:pPr`). Only
2293
+ * meaningful on the first segment of a paragraph. It stops the writer
2294
+ * inventing an empty run or an `<a:endParaRPr lang="en-US"/>` stub for a
2295
+ * paragraph that still has no content when saved.
2296
+ */
2297
+ bareParagraph?: boolean;
2252
2298
  /**
2253
2299
  * Phonetic annotation text from `a:ruby > a:rt` (e.g. furigana, pinyin).
2254
2300
  * When present, the renderer should wrap the base text with an HTML `<ruby>` tag.
@@ -2271,6 +2317,22 @@ interface TextSegment {
2271
2317
  * Used by the renderer to apply font family, colour, etc. to the `<rt>` element.
2272
2318
  */
2273
2319
  rubyStyle?: TextStyle;
2320
+ /**
2321
+ * The parsed `a:rubyPr` node, kept verbatim so its attributes (`hps`,
2322
+ * `hpsRaise`, `hpsBaseText`, `lid`, ...) round-trip exactly; only an
2323
+ * edited {@link rubyAlignment} is written over it on save.
2324
+ */
2325
+ rubyPropertiesXml?: XmlObject;
2326
+ /**
2327
+ * What each of a ruby run's two base-side `a:rPr`s authored on its own:
2328
+ * `outer` is the containing `a:r`'s, `base` the `a:rubyBase` run's. The
2329
+ * flat {@link style} merges both for rendering; these let the writer give
2330
+ * each `a:rPr` back only its own properties (plus any later edit).
2331
+ */
2332
+ rubyRunAuthoredStyles?: {
2333
+ outer?: TextStyle;
2334
+ base?: TextStyle;
2335
+ };
2274
2336
  }
2275
2337
  //#endregion
2276
2338
  //#region src/core/types/element-base.d.ts
@@ -4182,6 +4244,14 @@ interface PptxChartData {
4182
4244
  style?: PptxChartStyle;
4183
4245
  /** Grouping mode for bar/area/line charts: 'clustered' | 'stacked' | 'percentStacked' */
4184
4246
  grouping?: 'clustered' | 'stacked' | 'percentStacked';
4247
+ /**
4248
+ * The source `c:grouping` was `standard`, which {@link grouping} folds into
4249
+ * `'clustered'` (a 2D bar chart draws the two the same). A 3D chart draws
4250
+ * `standard` differently: each series on its own depth row. The writer
4251
+ * emits `standard` again while `grouping` is still `'clustered'`, so the
4252
+ * chart round-trips unchanged.
4253
+ */
4254
+ groupingStandard?: boolean;
4185
4255
  /**
4186
4256
  * Whether the first (or only) series varies its point colours
4187
4257
  * (`c:varyColors/@val`). Pie/doughnut default this on; single-series
@@ -5579,6 +5649,14 @@ interface PptxSmartArtNode {
5579
5649
  * quick-style variation) applied to every other node.
5580
5650
  */
5581
5651
  coherent3DOff?: boolean;
5652
+ /**
5653
+ * The layout variables PowerPoint recorded for each presentation node
5654
+ * this point drives (`dgm:prSet/@presName` -> `dgm:presLayoutVars`
5655
+ * variable -> `@val`), e.g. `{ hierRoot1: { hierBranch: 'l' } }` for an
5656
+ * org-chart manager set to "Left Hanging". Read-only: the presentation
5657
+ * points themselves round-trip verbatim.
5658
+ */
5659
+ presLayoutVarsByName?: Record<string, Record<string, string>>;
5582
5660
  /**
5583
5661
  * Per-run text + run-properties for the node's first paragraph, captured at
5584
5662
  * parse time. When the joined run text still equals {@link text} (the node
@@ -5648,6 +5726,16 @@ interface PptxSmartArtQuickStyleLabel {
5648
5726
  name: string;
5649
5727
  /** Theme-resolved `dgm:style` refs for this label's role, when available. */
5650
5728
  resolvedStyle?: PptxSmartArtResolvedStyleRef;
5729
+ /**
5730
+ * The label's own `dgm:scene3d` (per-shape camera + light rig). PowerPoint
5731
+ * copies it onto a shape's cached `a:scene3d` unless it is the default
5732
+ * front camera with a `threePt` light (see `applySmartArtQuickStyle3d`).
5733
+ */
5734
+ scene3d?: Pptx3DScene;
5735
+ /** The label's own `dgm:sp3d` (bevel / extrusion / contour / material); absent when empty. */
5736
+ shape3d?: Pptx3DShape;
5737
+ /** The label's `dgm:txPr/a:sp3d` label-text extrusion (Bird's Eye Scene). */
5738
+ text3d?: Text3DStyle;
5651
5739
  }
5652
5740
  /** CT_CTStyleLabel metadata from a color-transform definition. */
5653
5741
  interface PptxSmartArtColorStyleLabel {
@@ -5715,9 +5803,10 @@ interface PptxSmartArtQuickStyle extends PptxSmartArtDefinitionMetadata {
5715
5803
  * for the "Scene" quick styles (Brick, Flat, Metallic, Sunset, Bird's Eye
5716
5804
  * Scene). One camera renders the whole diagram; per-shape `a:scene3d` is
5717
5805
  * absent for those styles (see `PptxSmartArtDrawingShape.scene3d`). Each
5718
- * `dgm:styleLbl` also carries its own per-label `dgm:scene3d`/`dgm:sp3d`,
5719
- * but PowerPoint bakes those fully resolved onto each cached shape's own
5720
- * `dsp:spPr/a:sp3d`, so only the diagram-level scene is exposed here.
5806
+ * `dgm:styleLbl` also carries its own per-label `dgm:scene3d`/`dgm:sp3d`
5807
+ * ({@link PptxSmartArtQuickStyleLabel.scene3d} / `shape3d` / `text3d`),
5808
+ * which PowerPoint bakes onto each cached shape; they are re-applied when a
5809
+ * structural edit regenerates the shapes.
5721
5810
  */
5722
5811
  scene3d?: Pptx3DScene;
5723
5812
  }
@@ -5848,6 +5937,11 @@ interface PptxSmartArtDrawingShape extends PptxCustomPathProperties {
5848
5937
  fillNone?: boolean;
5849
5938
  /** Solid fill colour (hex). */
5850
5939
  fillColor?: string;
5940
+ /**
5941
+ * Opacity (0..1) of the solid fill, from the colour's `a:alpha` (Basic Venn
5942
+ * paints its circles at 50% so overlaps blend). Absent when opaque.
5943
+ */
5944
+ fillOpacity?: number;
5851
5945
  /**
5852
5946
  * Gradient fill stops when the cached shape uses `a:gradFill`. Positions are
5853
5947
  * 0..100 (percent). Renderers emit an SVG/CSS gradient instead of a flat box.
@@ -7795,6 +7889,84 @@ interface PptxThemeOption {
7795
7889
  name?: string;
7796
7890
  }
7797
7891
  //#endregion
7892
+ //#region src/core/types/animation-behavior.d.ts
7893
+ /** Timing of one behaviour, from its own `p:cBhvr/p:cTn`. */
7894
+ interface PptxAnimationBehaviorTiming {
7895
+ /** `p:cTn/@dur` in ms; absent when `indefinite` or unset. */
7896
+ durationMs?: number;
7897
+ /** Start offset in ms from `p:stCondLst/p:cond/@delay`, relative to the effect start. */
7898
+ delayMs?: number;
7899
+ /** `p:cTn/@accel` as a 0..1 fraction of the behaviour's duration. */
7900
+ accel?: number;
7901
+ /** `p:cTn/@decel` as a 0..1 fraction of the behaviour's duration. */
7902
+ decel?: number;
7903
+ /** `p:cTn/@autoRev`: play forward, then backward, doubling the active time. */
7904
+ autoReverse?: boolean;
7905
+ /** `p:cTn/@repeatCount` in plain iterations (OOXML stores thousandths). */
7906
+ repeatCount?: number;
7907
+ /** `p:cTn/@tmFilter`: the raw `"t,v; t,v; ..."` time remapping list. */
7908
+ tmFilter?: string;
7909
+ }
7910
+ interface BehaviorBase {
7911
+ /** Lower-cased `p:attrNameLst` entries, in document order. */
7912
+ attrNames: string[];
7913
+ /** `p:cBhvr/@additive` (`base`, `sum`, `repl`, `mult`, `none`). */
7914
+ additive?: string;
7915
+ timing: PptxAnimationBehaviorTiming;
7916
+ }
7917
+ /** `p:set`: a discrete value held from the behaviour's start. */
7918
+ interface PptxSetBehavior extends BehaviorBase {
7919
+ kind: 'set';
7920
+ value: string | number | boolean;
7921
+ }
7922
+ /** `p:anim`: a `p:tavLst` ramp or a `from`/`to`/`by` formula ramp. */
7923
+ interface PptxAnimBehavior extends BehaviorBase {
7924
+ kind: 'anim';
7925
+ calcMode?: 'discrete' | 'lin' | 'fmla';
7926
+ valueType?: string;
7927
+ from?: string;
7928
+ to?: string;
7929
+ by?: string;
7930
+ keyframes: PptxAnimationKeyframe[];
7931
+ }
7932
+ /** `p:animEffect`: a filter transition (`fade`, `wipe(down)`...). */
7933
+ interface PptxAnimEffectBehavior extends BehaviorBase {
7934
+ kind: 'animEffect';
7935
+ filter?: string;
7936
+ transition?: 'in' | 'out' | 'none';
7937
+ }
7938
+ /** A `p:animScale` factor pair (1 = unscaled) or a `p:animMotion` offset (slide fractions). */
7939
+ interface PptxBehaviorPoint {
7940
+ x: number;
7941
+ y: number;
7942
+ }
7943
+ /** `p:animScale`: scale factors as fractions (OOXML stores percent*1000, so `100000` = 1). */
7944
+ interface PptxAnimScaleBehavior extends BehaviorBase {
7945
+ kind: 'animScale';
7946
+ from?: PptxBehaviorPoint;
7947
+ to?: PptxBehaviorPoint;
7948
+ by?: PptxBehaviorPoint;
7949
+ zoomContents?: boolean;
7950
+ }
7951
+ /** `p:animRot`: rotation in degrees (OOXML stores 60000ths). */
7952
+ interface PptxAnimRotBehavior extends BehaviorBase {
7953
+ kind: 'animRot';
7954
+ from?: number;
7955
+ to?: number;
7956
+ by?: number;
7957
+ }
7958
+ /** `p:animMotion`: a path (slide fractions) or a `from`/`to`/`by` offset. */
7959
+ interface PptxAnimMotionBehavior extends BehaviorBase {
7960
+ kind: 'animMotion';
7961
+ path?: string;
7962
+ origin?: string;
7963
+ from?: PptxBehaviorPoint;
7964
+ to?: PptxBehaviorPoint;
7965
+ by?: PptxBehaviorPoint;
7966
+ }
7967
+ /** One behaviour child of an effect, tagged by its OOXML element. */
7968
+ type PptxAnimationBehavior = PptxSetBehavior | PptxAnimBehavior | PptxAnimEffectBehavior | PptxAnimScaleBehavior | PptxAnimRotBehavior | PptxAnimMotionBehavior;
7969
+ //#endregion
7798
7970
  //#region src/core/types/animation.d.ts
7799
7971
  /**
7800
7972
  * Built-in animation preset names used for entrance, exit, and emphasis effects.
@@ -8346,6 +8518,14 @@ interface PptxNativeAnimation {
8346
8518
  * shared playback (round-trip/typed-model only so far).
8347
8519
  */
8348
8520
  setAnimations?: PptxSetAnimation[];
8521
+ /**
8522
+ * Every behaviour child of this effect (`p:set`, `p:anim`, `p:animEffect`,
8523
+ * `p:animScale`, `p:animRot`, `p:animMotion`) with its own timing, as
8524
+ * authored. The single-valued fields above flatten a composed preset;
8525
+ * this keeps the whole tree so playback can follow what PowerPoint wrote
8526
+ * (see `animation-behavior-player` in `pptx-viewer-shared`).
8527
+ */
8528
+ behaviors?: PptxAnimationBehavior[];
8349
8529
  }
8350
8530
  /**
8351
8531
  * One `p:set` discrete (non-interpolated) attribute assignment composed
@@ -11256,6 +11436,8 @@ interface IPptxHandlerRuntime {
11256
11436
  updateThemeColorScheme(colorScheme: PptxThemeColorScheme): Promise<void>;
11257
11437
  updateThemeFontScheme(fontScheme: PptxThemeFontScheme): Promise<void>;
11258
11438
  updateThemeName(name: string): Promise<void>;
11439
+ /** Resolve a `<p:style>` node against the loaded theme (see PptxHandlerRuntimeStyleMatrixResolve). */
11440
+ resolveStyleMatrixReferences(styleXml: XmlObject): ResolvedStyleMatrix;
11259
11441
  applyTheme(colorScheme: PptxThemeColorScheme, fontScheme: PptxThemeFontScheme, themeName?: string): Promise<void>;
11260
11442
  load(data: ArrayBuffer, options?: PptxHandlerLoadOptions): Promise<PptxData>;
11261
11443
  getChartDataForGraphicFrame(slidePath: string, graphicFrame: XmlObject | undefined): Promise<PptxChartData | undefined>;
@@ -11551,6 +11733,14 @@ declare class PptxHandlerCore {
11551
11733
  * @param name - New display name for the theme.
11552
11734
  */
11553
11735
  updateThemeName(name: string): Promise<void>;
11736
+ /**
11737
+ * Resolve a `<p:style>` block (`a:lnRef` / `a:fillRef` / `a:effectRef` /
11738
+ * `a:fontRef`) against the loaded theme, exactly as the load path would for
11739
+ * a shape whose `spPr` authors nothing. Apply the returned `shapeStyle` to a
11740
+ * shape and it renders like PowerPoint's Shape Styles entry and saves as a
11741
+ * bare `<p:style>` with an empty `spPr`, which is what PowerPoint writes.
11742
+ */
11743
+ resolveStyleMatrixReferences(styleXml: XmlObject): ResolvedStyleMatrix;
11554
11744
  /**
11555
11745
  * Apply a complete theme in one call (colour scheme + font scheme + optional name).
11556
11746
  *
@@ -12513,6 +12703,13 @@ type ToolbarButtonId = 'share' | 'broadcast' | 'export' | 'undo' | 'redo' | 'rec
12513
12703
  /** A top-level ribbon tab. `record` intentionally shares its id with the quick-access Record button above: both surface the same recording feature, so hiding one hides the other. */
12514
12704
  type ToolbarTabId = 'file' | 'home' | 'insert' | 'draw' | 'design' | 'transitions' | 'animations' | 'slideShow' | 'record' | 'review' | 'view' | 'help';
12515
12705
  type ToolbarActionId = ToolbarButtonId | ToolbarTabId;
12706
+ /**
12707
+ * PowerPoint's contextual tabs: they join the tab row only while the
12708
+ * selection is of their kind (see `contextualTabsForElement` in
12709
+ * `ribbon-galleries/`). Kept apart from `ToolbarTabId` because they are not
12710
+ * part of the fixed tab order every binding renders.
12711
+ */
12712
+ type RibbonContextualTabId = 'shapeFormat' | 'pictureFormat' | 'tableDesign' | 'chartDesign' | 'smartArtDesign';
12516
12713
  //#endregion
12517
12714
  //#region src/render/options/viewer-options.d.ts
12518
12715
  /**
@@ -12686,6 +12883,511 @@ type FreeformToolKind = 'freeformShape' | 'curve';
12686
12883
  */
12687
12884
  type ViewerOptionsTabId = 'general' | 'proofing' | 'save' | 'language' | 'accessibility' | 'advanced' | 'ribbon' | 'quickAccess' | 'addIns' | 'trust';
12688
12885
  //#endregion
12886
+ //#region src/render/customization/ribbon-control-catalog.d.ts
12887
+ declare const RIBBON_CONTROL_CATALOG: {
12888
+ readonly home: {
12889
+ readonly clipboard: {
12890
+ readonly label: 'Clipboard';
12891
+ readonly controls: {
12892
+ readonly paste: 'Paste';
12893
+ readonly cut: 'Cut';
12894
+ readonly copy: 'Copy';
12895
+ readonly formatPainter: 'Format Painter';
12896
+ };
12897
+ };
12898
+ readonly slides: {
12899
+ readonly label: 'Slides';
12900
+ readonly controls: {
12901
+ readonly newSlide: 'New Slide';
12902
+ readonly layout: 'Layout';
12903
+ readonly reset: 'Reset';
12904
+ readonly section: 'Section';
12905
+ readonly slideTemplates: 'Slide templates';
12906
+ };
12907
+ };
12908
+ readonly font: {
12909
+ readonly label: 'Font';
12910
+ readonly controls: {
12911
+ readonly fontFamily: 'Font';
12912
+ readonly fontSize: 'Font Size';
12913
+ readonly increaseFontSize: 'Increase Font Size';
12914
+ readonly decreaseFontSize: 'Decrease Font Size';
12915
+ readonly clearFormatting: 'Clear All Formatting';
12916
+ readonly bold: 'Bold';
12917
+ readonly italic: 'Italic';
12918
+ readonly underline: 'Underline';
12919
+ readonly strikethrough: 'Strikethrough';
12920
+ readonly shadow: 'Text Shadow';
12921
+ readonly characterSpacing: 'Character Spacing';
12922
+ readonly changeCase: 'Change Case';
12923
+ readonly fontColor: 'Font Color';
12924
+ readonly highlightColor: 'Text Highlight Color';
12925
+ readonly superscript: 'Superscript';
12926
+ readonly subscript: 'Subscript';
12927
+ };
12928
+ };
12929
+ readonly paragraph: {
12930
+ readonly label: 'Paragraph';
12931
+ readonly controls: {
12932
+ readonly bullets: 'Bullets (toggle and gallery)';
12933
+ readonly numbering: 'Numbering (toggle and gallery)';
12934
+ readonly decreaseIndent: 'Decrease List Level';
12935
+ readonly increaseIndent: 'Increase List Level';
12936
+ readonly lineSpacing: 'Line Spacing';
12937
+ readonly alignLeft: 'Align Left';
12938
+ readonly alignCenter: 'Center';
12939
+ readonly alignRight: 'Align Right';
12940
+ readonly justify: 'Justify';
12941
+ readonly columns: 'Columns';
12942
+ readonly textDirection: 'Text Direction';
12943
+ readonly alignText: 'Align Text';
12944
+ };
12945
+ };
12946
+ readonly drawing: {
12947
+ readonly label: 'Drawing';
12948
+ readonly controls: {
12949
+ readonly shapes: 'Shapes';
12950
+ readonly arrange: 'Arrange';
12951
+ readonly quickStyles: 'Quick Styles (Shape Styles gallery)';
12952
+ readonly shapeFill: 'Shape Fill';
12953
+ readonly shapeOutline: 'Shape Outline';
12954
+ readonly shapeEffects: 'Shape Effects gallery';
12955
+ };
12956
+ };
12957
+ readonly arrange: {
12958
+ readonly label: 'Arrange';
12959
+ readonly controls: {
12960
+ readonly bringForward: 'Bring Forward';
12961
+ readonly sendBackward: 'Send Backward';
12962
+ readonly bringToFront: 'Bring to Front';
12963
+ readonly sendToBack: 'Send to Back';
12964
+ readonly flipHorizontal: 'Flip Horizontal';
12965
+ readonly flipVertical: 'Flip Vertical';
12966
+ readonly duplicate: 'Duplicate';
12967
+ readonly delete: 'Delete';
12968
+ readonly group: 'Group';
12969
+ readonly ungroup: 'Ungroup';
12970
+ readonly align: 'Align';
12971
+ readonly mergeShapes: 'Merge Shapes';
12972
+ readonly crop: 'Crop';
12973
+ readonly outlineWidth: 'Outline width';
12974
+ };
12975
+ };
12976
+ readonly editing: {
12977
+ readonly label: 'Editing';
12978
+ readonly controls: {
12979
+ readonly find: 'Find';
12980
+ readonly replace: 'Replace';
12981
+ readonly select: 'Select';
12982
+ };
12983
+ };
12984
+ };
12985
+ readonly insert: {
12986
+ readonly slides: {
12987
+ readonly label: 'Slides';
12988
+ readonly controls: {
12989
+ readonly newSlide: 'New Slide';
12990
+ };
12991
+ };
12992
+ readonly tables: {
12993
+ readonly label: 'Tables';
12994
+ readonly controls: {
12995
+ readonly table: 'Table';
12996
+ };
12997
+ };
12998
+ readonly images: {
12999
+ readonly label: 'Images';
13000
+ readonly controls: {
13001
+ readonly pictures: 'Pictures';
13002
+ };
13003
+ };
13004
+ readonly illustrations: {
13005
+ readonly label: 'Illustrations';
13006
+ readonly controls: {
13007
+ readonly shapes: 'Shapes';
13008
+ readonly smartArt: 'SmartArt';
13009
+ readonly chart: 'Chart';
13010
+ };
13011
+ };
13012
+ readonly links: {
13013
+ readonly label: 'Links';
13014
+ readonly controls: {
13015
+ readonly link: 'Link';
13016
+ readonly action: 'Action button';
13017
+ };
13018
+ };
13019
+ readonly comments: {
13020
+ readonly label: 'Comments';
13021
+ readonly controls: {
13022
+ readonly comment: 'Comment';
13023
+ };
13024
+ };
13025
+ readonly text: {
13026
+ readonly label: 'Text';
13027
+ readonly controls: {
13028
+ readonly textBox: 'Text Box';
13029
+ readonly field: 'Header, date, slide number field';
13030
+ };
13031
+ };
13032
+ readonly symbols: {
13033
+ readonly label: 'Symbols';
13034
+ readonly controls: {
13035
+ readonly equation: 'Equation';
13036
+ readonly symbol: 'Symbol';
13037
+ };
13038
+ };
13039
+ readonly media: {
13040
+ readonly label: 'Media';
13041
+ readonly controls: {
13042
+ readonly media: 'Video / Audio';
13043
+ };
13044
+ };
13045
+ };
13046
+ readonly draw: {
13047
+ readonly tools: {
13048
+ readonly label: 'Drawing Tools';
13049
+ readonly controls: {
13050
+ readonly select: 'Select';
13051
+ readonly pen: 'Pen';
13052
+ readonly highlighter: 'Highlighter';
13053
+ readonly eraser: 'Eraser';
13054
+ readonly penColor: 'Pen colour';
13055
+ readonly penWidth: 'Pen width';
13056
+ };
13057
+ };
13058
+ readonly convert: {
13059
+ readonly label: 'Convert';
13060
+ readonly controls: {
13061
+ readonly inkToShape: 'Ink to Shape';
13062
+ };
13063
+ };
13064
+ };
13065
+ readonly design: {
13066
+ readonly themes: {
13067
+ readonly label: 'Themes';
13068
+ readonly controls: {
13069
+ readonly browseThemes: 'Themes gallery';
13070
+ readonly editTheme: 'Edit theme';
13071
+ };
13072
+ };
13073
+ readonly variants: {
13074
+ readonly label: 'Variants';
13075
+ readonly controls: {
13076
+ readonly colors: 'Variants: Colors gallery';
13077
+ readonly fonts: 'Variants: Fonts gallery';
13078
+ };
13079
+ };
13080
+ readonly customize: {
13081
+ readonly label: 'Customize';
13082
+ readonly controls: {
13083
+ readonly slideSize: 'Slide Size';
13084
+ readonly formatBackground: 'Format Background';
13085
+ };
13086
+ };
13087
+ };
13088
+ readonly transitions: {
13089
+ readonly preview: {
13090
+ readonly label: 'Preview';
13091
+ readonly controls: {
13092
+ readonly preview: 'Preview';
13093
+ };
13094
+ };
13095
+ readonly transitionToThisSlide: {
13096
+ readonly label: 'Transition to This Slide';
13097
+ readonly controls: {
13098
+ readonly gallery: 'Transition gallery';
13099
+ readonly effectOptions: 'Effect Options';
13100
+ };
13101
+ };
13102
+ readonly timing: {
13103
+ readonly label: 'Timing';
13104
+ readonly controls: {
13105
+ readonly sound: 'Sound';
13106
+ readonly duration: 'Duration';
13107
+ readonly applyToAll: 'Apply To All';
13108
+ readonly advanceOnClick: 'On Mouse Click';
13109
+ readonly advanceAfter: 'After';
13110
+ };
13111
+ };
13112
+ };
13113
+ readonly animations: {
13114
+ readonly preview: {
13115
+ readonly label: 'Preview';
13116
+ readonly controls: {
13117
+ readonly preview: 'Preview';
13118
+ };
13119
+ };
13120
+ readonly animation: {
13121
+ readonly label: 'Animation';
13122
+ readonly controls: {
13123
+ readonly gallery: 'Animation gallery';
13124
+ readonly effectOptions: 'Effect Options';
13125
+ };
13126
+ };
13127
+ readonly motionPath: {
13128
+ readonly label: 'Motion Paths';
13129
+ readonly controls: {
13130
+ readonly gallery: 'Motion path gallery';
13131
+ };
13132
+ };
13133
+ readonly advancedAnimation: {
13134
+ readonly label: 'Advanced Animation';
13135
+ readonly controls: {
13136
+ readonly addAnimation: 'Add Animation';
13137
+ readonly animationPane: 'Animation Pane';
13138
+ readonly trigger: 'Trigger';
13139
+ readonly animationPainter: 'Animation Painter';
13140
+ readonly remove: 'Remove animation';
13141
+ };
13142
+ };
13143
+ readonly timing: {
13144
+ readonly label: 'Timing';
13145
+ readonly controls: {
13146
+ readonly start: 'Start';
13147
+ readonly duration: 'Duration';
13148
+ readonly delay: 'Delay';
13149
+ readonly reorder: 'Reorder';
13150
+ };
13151
+ };
13152
+ };
13153
+ readonly slideShow: {
13154
+ readonly startSlideShow: {
13155
+ readonly label: 'Start Slide Show';
13156
+ readonly controls: {
13157
+ readonly fromBeginning: 'From Beginning';
13158
+ readonly fromCurrent: 'From Current Slide';
13159
+ readonly customShow: 'Custom Slide Show';
13160
+ };
13161
+ };
13162
+ readonly present: {
13163
+ readonly label: 'Present';
13164
+ readonly controls: {
13165
+ readonly presenterView: 'Presenter View';
13166
+ readonly broadcast: 'Present Online';
13167
+ };
13168
+ };
13169
+ readonly setUp: {
13170
+ readonly label: 'Set Up';
13171
+ readonly controls: {
13172
+ readonly setUpSlideShow: 'Set Up Slide Show';
13173
+ readonly hideSlide: 'Hide Slide';
13174
+ readonly rehearseTimings: 'Rehearse Timings';
13175
+ readonly record: 'Record';
13176
+ readonly rehearseWithCoach: 'Rehearse with Coach';
13177
+ };
13178
+ };
13179
+ readonly captions: {
13180
+ readonly label: 'Captions & Subtitles';
13181
+ readonly controls: {
13182
+ readonly subtitles: 'Always Use Subtitles';
13183
+ readonly subtitleSettings: 'Subtitle Settings';
13184
+ };
13185
+ };
13186
+ };
13187
+ readonly record: {
13188
+ readonly camera: {
13189
+ readonly label: 'Camera';
13190
+ readonly controls: {
13191
+ readonly cameo: 'Cameo';
13192
+ };
13193
+ };
13194
+ readonly record: {
13195
+ readonly label: 'Record';
13196
+ readonly controls: {
13197
+ readonly fromBeginning: 'From Beginning';
13198
+ readonly fromCurrent: 'From Current Slide';
13199
+ };
13200
+ };
13201
+ readonly manage: {
13202
+ readonly label: 'Manage';
13203
+ readonly controls: {
13204
+ readonly clear: 'Clear';
13205
+ readonly reset: 'Reset to Cameo';
13206
+ };
13207
+ };
13208
+ readonly help: {
13209
+ readonly label: 'Help';
13210
+ readonly controls: {
13211
+ readonly learnMore: 'Learn more';
13212
+ };
13213
+ };
13214
+ };
13215
+ readonly review: {
13216
+ readonly proofing: {
13217
+ readonly label: 'Proofing';
13218
+ readonly controls: {
13219
+ readonly spelling: 'Spelling';
13220
+ readonly thesaurus: 'Thesaurus';
13221
+ };
13222
+ };
13223
+ readonly accessibility: {
13224
+ readonly label: 'Accessibility';
13225
+ readonly controls: {
13226
+ readonly check: 'Check Accessibility';
13227
+ };
13228
+ };
13229
+ readonly language: {
13230
+ readonly label: 'Language';
13231
+ readonly controls: {
13232
+ readonly translate: 'Translate';
13233
+ };
13234
+ };
13235
+ readonly comments: {
13236
+ readonly label: 'Comments';
13237
+ readonly controls: {
13238
+ readonly newComment: 'New Comment';
13239
+ readonly delete: 'Delete';
13240
+ readonly previous: 'Previous';
13241
+ readonly next: 'Next';
13242
+ readonly showComments: 'Show Comments';
13243
+ };
13244
+ };
13245
+ readonly compare: {
13246
+ readonly label: 'Compare';
13247
+ readonly controls: {
13248
+ readonly compare: 'Compare';
13249
+ readonly markAllRead: 'Mark all read';
13250
+ };
13251
+ };
13252
+ readonly protect: {
13253
+ readonly label: 'Protect';
13254
+ readonly controls: {
13255
+ readonly readOnly: 'Read-only';
13256
+ readonly restrictPermission: 'Restrict Permission';
13257
+ };
13258
+ };
13259
+ readonly ink: {
13260
+ readonly label: 'Ink';
13261
+ readonly controls: {
13262
+ readonly hideInk: 'Hide Ink';
13263
+ };
13264
+ };
13265
+ };
13266
+ readonly view: {
13267
+ readonly presentationViews: {
13268
+ readonly label: 'Presentation Views';
13269
+ readonly controls: {
13270
+ readonly normal: 'Normal';
13271
+ readonly outline: 'Outline View';
13272
+ readonly slideSorter: 'Slide Sorter';
13273
+ readonly notesPage: 'Notes Page';
13274
+ readonly readingView: 'Reading View';
13275
+ };
13276
+ };
13277
+ readonly masterViews: {
13278
+ readonly label: 'Master Views';
13279
+ readonly controls: {
13280
+ readonly slideMaster: 'Slide Master';
13281
+ readonly handoutMaster: 'Handout Master';
13282
+ readonly notesMaster: 'Notes Master';
13283
+ };
13284
+ };
13285
+ readonly show: {
13286
+ readonly label: 'Show';
13287
+ readonly controls: {
13288
+ readonly ruler: 'Ruler';
13289
+ readonly gridlines: 'Gridlines';
13290
+ readonly guides: 'Guides';
13291
+ readonly snapToGrid: 'Snap to Grid';
13292
+ readonly snapToShape: 'Snap to Shape';
13293
+ readonly addGuide: 'Add horizontal / vertical guide';
13294
+ readonly selectionPane: 'Selection Pane';
13295
+ readonly eyedropper: 'Eyedropper';
13296
+ readonly notes: 'Notes';
13297
+ };
13298
+ };
13299
+ readonly zoom: {
13300
+ readonly label: 'Zoom';
13301
+ readonly controls: {
13302
+ readonly zoom: 'Zoom';
13303
+ readonly fitToWindow: 'Fit to Window';
13304
+ };
13305
+ };
13306
+ readonly window: {
13307
+ readonly label: 'Window';
13308
+ readonly controls: {
13309
+ readonly templateEditing: 'Edit template elements';
13310
+ readonly macros: 'Macros';
13311
+ };
13312
+ };
13313
+ };
13314
+ readonly help: {
13315
+ readonly help: {
13316
+ readonly label: 'Help';
13317
+ readonly controls: {
13318
+ readonly options: 'Options';
13319
+ readonly keyboardShortcuts: 'Keyboard shortcuts';
13320
+ readonly accessibility: 'Accessibility checker';
13321
+ };
13322
+ };
13323
+ };
13324
+ readonly shapeFormat: {
13325
+ readonly shapeStyles: {
13326
+ readonly label: 'Shape Styles';
13327
+ readonly controls: {
13328
+ readonly gallery: 'Shape Styles gallery';
13329
+ readonly shapeEffects: 'Shape Effects gallery';
13330
+ };
13331
+ };
13332
+ readonly wordArtStyles: {
13333
+ readonly label: 'WordArt Styles';
13334
+ readonly controls: {
13335
+ readonly gallery: 'WordArt Styles gallery';
13336
+ };
13337
+ };
13338
+ };
13339
+ readonly pictureFormat: {
13340
+ readonly pictureStyles: {
13341
+ readonly label: 'Picture Styles';
13342
+ readonly controls: {
13343
+ readonly gallery: 'Picture Styles gallery';
13344
+ readonly pictureEffects: 'Picture Effects gallery';
13345
+ };
13346
+ };
13347
+ };
13348
+ readonly tableDesign: {
13349
+ readonly tableStyles: {
13350
+ readonly label: 'Table Styles';
13351
+ readonly controls: {
13352
+ readonly gallery: 'Table Styles gallery';
13353
+ };
13354
+ };
13355
+ };
13356
+ readonly chartDesign: {
13357
+ readonly chartLayouts: {
13358
+ readonly label: 'Chart Layouts';
13359
+ readonly controls: {
13360
+ readonly quickLayout: 'Quick Layout gallery';
13361
+ };
13362
+ };
13363
+ readonly chartStyles: {
13364
+ readonly label: 'Chart Styles';
13365
+ readonly controls: {
13366
+ readonly changeColors: 'Change Colors gallery';
13367
+ readonly gallery: 'Chart Styles gallery';
13368
+ };
13369
+ };
13370
+ };
13371
+ readonly smartArtDesign: {
13372
+ readonly smartArtStyles: {
13373
+ readonly label: 'SmartArt Styles';
13374
+ readonly controls: {
13375
+ readonly changeColors: 'Change Colors gallery';
13376
+ readonly gallery: 'SmartArt Styles gallery';
13377
+ };
13378
+ };
13379
+ };
13380
+ };
13381
+ //#endregion
13382
+ //#region src/render/customization/ribbon-control-ids.d.ts
13383
+ type Catalog = typeof RIBBON_CONTROL_CATALOG;
13384
+ /** `<tab>.<group>`, for example `home.font`. */
13385
+ type RibbonGroupId = { [T in keyof Catalog]: { [G in keyof Catalog[T]]: `${T & string}.${G & string}`; }[keyof Catalog[T]]; }[keyof Catalog];
13386
+ /** `<tab>.<group>.<control>`, for example `home.font.bold`. */
13387
+ type RibbonControlId = { [T in keyof Catalog]: { [G in keyof Catalog[T]]: Catalog[T][G] extends {
13388
+ controls: infer C;
13389
+ } ? `${T & string}.${G & string}.${keyof C & string}` : never; }[keyof Catalog[T]]; }[keyof Catalog];
13390
+ //#endregion
12689
13391
  //#region src/render/customization/customization-types.d.ts
12690
13392
  /** Keys of an options group whose value is a primitive (not an array). */
12691
13393
  type PrimitiveKeys<T> = { [K in keyof T]: T[K] extends ViewerOptionPrimitive ? K : never; }[keyof T] & string;
@@ -12710,10 +13412,20 @@ type OptionsSectionId = `${ViewerOptionsTabId}.${string}`;
12710
13412
  type OptionsSettingValues = Partial<Record<OptionsSettingId, ViewerOptionPrimitive>>;
12711
13413
  /** Ribbon and toolbar customisation. */
12712
13414
  interface RibbonCustomization {
12713
- /** Ribbon tabs to remove (the File tab included, unlike Customize Ribbon). */
12714
- hiddenTabs?: readonly ToolbarTabId[];
12715
- /** Top-level toolbar buttons / control clusters to remove. */
12716
- hiddenButtons?: readonly ToolbarButtonId[];
13415
+ /**
13416
+ * Ribbon tabs to remove (the File tab included, unlike Customize Ribbon),
13417
+ * and contextual tabs (`shapeFormat`, `pictureFormat`, ...) that should
13418
+ * never appear.
13419
+ */
13420
+ hiddenTabs?: readonly (ToolbarTabId | RibbonContextualTabId)[];
13421
+ /** Groups inside a tab to remove, as `<tab>.<group>` (`home.font`). */
13422
+ hiddenGroups?: readonly RibbonGroupId[];
13423
+ /**
13424
+ * Controls to remove: a top-level toolbar button / control cluster
13425
+ * (`share`, `zoom`, ...) or any ribbon control as
13426
+ * `<tab>.<group>.<control>` (`home.font.bold`).
13427
+ */
13428
+ hiddenButtons?: readonly (ToolbarButtonId | RibbonControlId)[];
12717
13429
  }
12718
13430
  /** File > Options (the Settings dialog) customisation. */
12719
13431
  interface OptionsCustomization {
@@ -12825,10 +13537,18 @@ interface ViewerCustomizationApi {
12825
13537
  updateCustomization(patch: ViewerCustomization): void;
12826
13538
  /** Drop every customisation, back to the stock UI. */
12827
13539
  resetCustomization(): void;
12828
- hideRibbonTab(tab: ToolbarTabId): void;
12829
- showRibbonTab(tab: ToolbarTabId): void;
12830
- hideToolbarButton(button: ToolbarButtonId): void;
12831
- showToolbarButton(button: ToolbarButtonId): void;
13540
+ /** Hide a fixed tab, or stop a contextual tab (`shapeFormat`, ...) from appearing. */
13541
+ hideRibbonTab(tab: ToolbarTabId | RibbonContextualTabId): void;
13542
+ showRibbonTab(tab: ToolbarTabId | RibbonContextualTabId): void;
13543
+ /** Hide a group inside a tab (`home.font`). */
13544
+ hideRibbonGroup(group: RibbonGroupId): void;
13545
+ showRibbonGroup(group: RibbonGroupId): void;
13546
+ /** Hide a top-level toolbar button or any ribbon control (`home.font.bold`). */
13547
+ hideToolbarButton(button: ToolbarButtonId | RibbonControlId): void;
13548
+ showToolbarButton(button: ToolbarButtonId | RibbonControlId): void;
13549
+ /** Alias of `hideToolbarButton` for a ribbon control id. */
13550
+ hideRibbonControl(control: RibbonControlId): void;
13551
+ showRibbonControl(control: RibbonControlId): void;
12832
13552
  hideOptionsPage(page: OptionsPageId): void;
12833
13553
  showOptionsPage(page: OptionsPageId): void;
12834
13554
  hideOptionsSection(section: OptionsSectionId): void;
@@ -13616,8 +14336,8 @@ interface PowerPointViewerProps extends ViewportFitOptions {
13616
14336
  smartArt3D?: boolean;
13617
14337
  /**
13618
14338
  * Opt in to the interactive Three.js surface-chart renderer. When `true`,
13619
- * `surface`/`surface3D` charts render as a camera-orbitable WebGL mesh
13620
- * (drag to rotate, scroll to zoom) instead of the static SVG isometric
14339
+ * `surface`/`surface3D` charts render as a WebGL mesh
14340
+ * instead of the static SVG isometric
13621
14341
  * projection. Chart marks are not selectable/draggable in this mode.
13622
14342
  * Requires the optional `three` peer dependency; when it is not installed
13623
14343
  * (or the chart has no plottable grid), the viewer transparently falls back
@@ -13626,8 +14346,7 @@ interface PowerPointViewerProps extends ViewportFitOptions {
13626
14346
  surfaceChart3D?: boolean;
13627
14347
  /**
13628
14348
  * Opt in to the interactive Three.js bar3D-chart renderer. When `true`,
13629
- * `bar3D` charts render as camera-orbitable real box meshes (drag to
13630
- * rotate, scroll to zoom) instead of the flat SVG oblique-projection
14349
+ * `bar3D` charts render as real box meshes instead of the flat SVG oblique-projection
13631
14350
  * illusion. Chart marks are not selectable/draggable in this mode.
13632
14351
  * Requires the optional `three` peer dependency; when it is not installed
13633
14352
  * (or the chart has no plottable grid, or it is a horizontal 3-D Bar), the
@@ -13637,8 +14356,8 @@ interface PowerPointViewerProps extends ViewportFitOptions {
13637
14356
  barChart3D?: boolean;
13638
14357
  /**
13639
14358
  * Opt in to the interactive Three.js line3D-chart renderer. When `true`,
13640
- * `line3D` charts render as a camera-orbitable real tube-path mesh per
13641
- * series, one per depth ("series") plane (drag to rotate, scroll to zoom),
14359
+ * `line3D` charts render as a real tube-path mesh per
14360
+ * series, one per depth ("series") plane,
13642
14361
  * instead of the flat SVG oblique-projection illusion. Chart marks are not
13643
14362
  * selectable/draggable in this mode. Requires the optional `three` peer
13644
14363
  * dependency; when it is not installed (or the chart has no plottable
@@ -13648,9 +14367,8 @@ interface PowerPointViewerProps extends ViewportFitOptions {
13648
14367
  lineChart3D?: boolean;
13649
14368
  /**
13650
14369
  * Opt in to the interactive Three.js area3D-chart renderer. When `true`,
13651
- * `area3D` charts render as a camera-orbitable real tube path + filled
13652
- * ribbon mesh per series, one per depth ("series") plane (drag to rotate,
13653
- * scroll to zoom), instead of the flat SVG oblique-projection illusion.
14370
+ * `area3D` charts render as a real tube path + filled
14371
+ * ribbon mesh per series, one per depth ("series") plane, instead of the flat SVG oblique-projection illusion.
13654
14372
  * Chart marks are not selectable/draggable in this mode. Requires the
13655
14373
  * optional `three` peer dependency; when it is not installed (or the chart
13656
14374
  * has no plottable grid), the viewer transparently falls back to the flat
@@ -13659,8 +14377,7 @@ interface PowerPointViewerProps extends ViewportFitOptions {
13659
14377
  areaChart3D?: boolean;
13660
14378
  /**
13661
14379
  * Opt in to the interactive Three.js pie3D-chart renderer. When `true`,
13662
- * `pie3D` charts render as camera-orbitable real wedge meshes (drag to
13663
- * rotate, scroll to zoom) instead of the flat SVG oblique-projection
14380
+ * `pie3D` charts render as real wedge meshes instead of the flat SVG oblique-projection
13664
14381
  * illusion. Chart marks are not selectable/draggable in this mode.
13665
14382
  * Requires the optional `three` peer dependency; when it is not installed
13666
14383
  * (or the chart has no plottable series), the viewer transparently falls