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
package/dist/index.d.ts CHANGED
@@ -1316,6 +1316,27 @@ interface ShapeStyle {
1316
1316
  * `authored-shape-style.ts`'s `effectIsPurelyStyleMatrix`.
1317
1317
  */
1318
1318
  inheritedEffectStyle?: ShapeStyle;
1319
+ /**
1320
+ * Set by a style-matrix pick (the Shape Styles gallery): the shape's own
1321
+ * `spPr` fill, outline and effects were replaced by `<p:style>`, so the
1322
+ * writer clears whatever the retained `spPr` still authored before it
1323
+ * writes the (now reference-owned) style. Never parsed; editor state only.
1324
+ */
1325
+ styleMatrixReset?: boolean;
1326
+ }
1327
+ /**
1328
+ * The result of resolving a `<p:style>` block against the loaded theme.
1329
+ *
1330
+ * `shapeStyle` is exactly what the load pipeline would have produced for a
1331
+ * shape whose `spPr` authors nothing and whose `<p:style>` is `styleXml`:
1332
+ * the flat fill/outline/effect values a renderer needs, the reference indices
1333
+ * and colours the writer re-emits, and the inheritance baselines that tell the
1334
+ * writer to leave `spPr` empty while the flat values still agree with them.
1335
+ */
1336
+ interface ResolvedStyleMatrix {
1337
+ shapeStyle: ShapeStyle;
1338
+ /** The text colour `<a:fontRef>` names, resolved to hex. */
1339
+ fontColor?: string;
1319
1340
  }
1320
1341
  //#endregion
1321
1342
  //#region src/core/types/text.d.ts
@@ -1950,6 +1971,16 @@ interface TextStyle {
1950
1971
  textReflectionEndOpacity?: number;
1951
1972
  /** Text reflection offset distance in px. */
1952
1973
  textReflectionOffset?: number;
1974
+ /**
1975
+ * Text reflection end position (`@endPos`) as a 0-1 fraction of the text
1976
+ * height the fade reaches. Mirrors `ShapeStyle.reflectionEndPosition`.
1977
+ */
1978
+ textReflectionEndPosition?: number;
1979
+ /**
1980
+ * Text reflection offset direction (`@dir`) in degrees. Mirrors
1981
+ * `ShapeStyle.reflectionDirection`.
1982
+ */
1983
+ textReflectionDirection?: number;
1953
1984
  /**
1954
1985
  * Text reflection fade direction (`a:rPr/a:effectLst/a:reflection/@fadeDir`)
1955
1986
  * in degrees. Mirrors `ShapeStyle.reflectionFadeDirection`.
@@ -2268,6 +2299,21 @@ interface TextSegment {
2268
2299
  * populated; unrelated fields fall back to the shape-level style.
2269
2300
  */
2270
2301
  paragraphProperties?: TextStyle;
2302
+ /**
2303
+ * The paragraph this segment starts authored an EMPTY `<a:pPr/>`. Only
2304
+ * meaningful on the first segment of a paragraph. The writer re-emits the
2305
+ * empty element when it has no paragraph property of its own to write, so
2306
+ * a rewritten slide keeps the markup PowerPoint wrote.
2307
+ */
2308
+ emptyParagraphPropertiesAuthored?: boolean;
2309
+ /**
2310
+ * The paragraph this segment starts has no run content and authored no
2311
+ * `a:endParaRPr` (a bare `<a:p/>`, possibly with an `a:pPr`). Only
2312
+ * meaningful on the first segment of a paragraph. It stops the writer
2313
+ * inventing an empty run or an `<a:endParaRPr lang="en-US"/>` stub for a
2314
+ * paragraph that still has no content when saved.
2315
+ */
2316
+ bareParagraph?: boolean;
2271
2317
  /**
2272
2318
  * Phonetic annotation text from `a:ruby > a:rt` (e.g. furigana, pinyin).
2273
2319
  * When present, the renderer should wrap the base text with an HTML `<ruby>` tag.
@@ -2290,6 +2336,22 @@ interface TextSegment {
2290
2336
  * Used by the renderer to apply font family, colour, etc. to the `<rt>` element.
2291
2337
  */
2292
2338
  rubyStyle?: TextStyle;
2339
+ /**
2340
+ * The parsed `a:rubyPr` node, kept verbatim so its attributes (`hps`,
2341
+ * `hpsRaise`, `hpsBaseText`, `lid`, ...) round-trip exactly; only an
2342
+ * edited {@link rubyAlignment} is written over it on save.
2343
+ */
2344
+ rubyPropertiesXml?: XmlObject;
2345
+ /**
2346
+ * What each of a ruby run's two base-side `a:rPr`s authored on its own:
2347
+ * `outer` is the containing `a:r`'s, `base` the `a:rubyBase` run's. The
2348
+ * flat {@link style} merges both for rendering; these let the writer give
2349
+ * each `a:rPr` back only its own properties (plus any later edit).
2350
+ */
2351
+ rubyRunAuthoredStyles?: {
2352
+ outer?: TextStyle;
2353
+ base?: TextStyle;
2354
+ };
2293
2355
  }
2294
2356
  //#endregion
2295
2357
  //#region src/core/types/element-base.d.ts
@@ -4201,6 +4263,14 @@ interface PptxChartData {
4201
4263
  style?: PptxChartStyle;
4202
4264
  /** Grouping mode for bar/area/line charts: 'clustered' | 'stacked' | 'percentStacked' */
4203
4265
  grouping?: 'clustered' | 'stacked' | 'percentStacked';
4266
+ /**
4267
+ * The source `c:grouping` was `standard`, which {@link grouping} folds into
4268
+ * `'clustered'` (a 2D bar chart draws the two the same). A 3D chart draws
4269
+ * `standard` differently: each series on its own depth row. The writer
4270
+ * emits `standard` again while `grouping` is still `'clustered'`, so the
4271
+ * chart round-trips unchanged.
4272
+ */
4273
+ groupingStandard?: boolean;
4204
4274
  /**
4205
4275
  * Whether the first (or only) series varies its point colours
4206
4276
  * (`c:varyColors/@val`). Pie/doughnut default this on; single-series
@@ -5598,6 +5668,14 @@ interface PptxSmartArtNode {
5598
5668
  * quick-style variation) applied to every other node.
5599
5669
  */
5600
5670
  coherent3DOff?: boolean;
5671
+ /**
5672
+ * The layout variables PowerPoint recorded for each presentation node
5673
+ * this point drives (`dgm:prSet/@presName` -> `dgm:presLayoutVars`
5674
+ * variable -> `@val`), e.g. `{ hierRoot1: { hierBranch: 'l' } }` for an
5675
+ * org-chart manager set to "Left Hanging". Read-only: the presentation
5676
+ * points themselves round-trip verbatim.
5677
+ */
5678
+ presLayoutVarsByName?: Record<string, Record<string, string>>;
5601
5679
  /**
5602
5680
  * Per-run text + run-properties for the node's first paragraph, captured at
5603
5681
  * parse time. When the joined run text still equals {@link text} (the node
@@ -5667,6 +5745,16 @@ interface PptxSmartArtQuickStyleLabel {
5667
5745
  name: string;
5668
5746
  /** Theme-resolved `dgm:style` refs for this label's role, when available. */
5669
5747
  resolvedStyle?: PptxSmartArtResolvedStyleRef;
5748
+ /**
5749
+ * The label's own `dgm:scene3d` (per-shape camera + light rig). PowerPoint
5750
+ * copies it onto a shape's cached `a:scene3d` unless it is the default
5751
+ * front camera with a `threePt` light (see `applySmartArtQuickStyle3d`).
5752
+ */
5753
+ scene3d?: Pptx3DScene;
5754
+ /** The label's own `dgm:sp3d` (bevel / extrusion / contour / material); absent when empty. */
5755
+ shape3d?: Pptx3DShape;
5756
+ /** The label's `dgm:txPr/a:sp3d` label-text extrusion (Bird's Eye Scene). */
5757
+ text3d?: Text3DStyle;
5670
5758
  }
5671
5759
  /** CT_CTStyleLabel metadata from a color-transform definition. */
5672
5760
  interface PptxSmartArtColorStyleLabel {
@@ -5734,9 +5822,10 @@ interface PptxSmartArtQuickStyle extends PptxSmartArtDefinitionMetadata {
5734
5822
  * for the "Scene" quick styles (Brick, Flat, Metallic, Sunset, Bird's Eye
5735
5823
  * Scene). One camera renders the whole diagram; per-shape `a:scene3d` is
5736
5824
  * absent for those styles (see `PptxSmartArtDrawingShape.scene3d`). Each
5737
- * `dgm:styleLbl` also carries its own per-label `dgm:scene3d`/`dgm:sp3d`,
5738
- * but PowerPoint bakes those fully resolved onto each cached shape's own
5739
- * `dsp:spPr/a:sp3d`, so only the diagram-level scene is exposed here.
5825
+ * `dgm:styleLbl` also carries its own per-label `dgm:scene3d`/`dgm:sp3d`
5826
+ * ({@link PptxSmartArtQuickStyleLabel.scene3d} / `shape3d` / `text3d`),
5827
+ * which PowerPoint bakes onto each cached shape; they are re-applied when a
5828
+ * structural edit regenerates the shapes.
5740
5829
  */
5741
5830
  scene3d?: Pptx3DScene;
5742
5831
  }
@@ -5867,6 +5956,11 @@ interface PptxSmartArtDrawingShape extends PptxCustomPathProperties {
5867
5956
  fillNone?: boolean;
5868
5957
  /** Solid fill colour (hex). */
5869
5958
  fillColor?: string;
5959
+ /**
5960
+ * Opacity (0..1) of the solid fill, from the colour's `a:alpha` (Basic Venn
5961
+ * paints its circles at 50% so overlaps blend). Absent when opaque.
5962
+ */
5963
+ fillOpacity?: number;
5870
5964
  /**
5871
5965
  * Gradient fill stops when the cached shape uses `a:gradFill`. Positions are
5872
5966
  * 0..100 (percent). Renderers emit an SVG/CSS gradient instead of a flat box.
@@ -7814,6 +7908,84 @@ interface PptxThemeOption {
7814
7908
  name?: string;
7815
7909
  }
7816
7910
  //#endregion
7911
+ //#region src/core/types/animation-behavior.d.ts
7912
+ /** Timing of one behaviour, from its own `p:cBhvr/p:cTn`. */
7913
+ interface PptxAnimationBehaviorTiming {
7914
+ /** `p:cTn/@dur` in ms; absent when `indefinite` or unset. */
7915
+ durationMs?: number;
7916
+ /** Start offset in ms from `p:stCondLst/p:cond/@delay`, relative to the effect start. */
7917
+ delayMs?: number;
7918
+ /** `p:cTn/@accel` as a 0..1 fraction of the behaviour's duration. */
7919
+ accel?: number;
7920
+ /** `p:cTn/@decel` as a 0..1 fraction of the behaviour's duration. */
7921
+ decel?: number;
7922
+ /** `p:cTn/@autoRev`: play forward, then backward, doubling the active time. */
7923
+ autoReverse?: boolean;
7924
+ /** `p:cTn/@repeatCount` in plain iterations (OOXML stores thousandths). */
7925
+ repeatCount?: number;
7926
+ /** `p:cTn/@tmFilter`: the raw `"t,v; t,v; ..."` time remapping list. */
7927
+ tmFilter?: string;
7928
+ }
7929
+ interface BehaviorBase {
7930
+ /** Lower-cased `p:attrNameLst` entries, in document order. */
7931
+ attrNames: string[];
7932
+ /** `p:cBhvr/@additive` (`base`, `sum`, `repl`, `mult`, `none`). */
7933
+ additive?: string;
7934
+ timing: PptxAnimationBehaviorTiming;
7935
+ }
7936
+ /** `p:set`: a discrete value held from the behaviour's start. */
7937
+ interface PptxSetBehavior extends BehaviorBase {
7938
+ kind: 'set';
7939
+ value: string | number | boolean;
7940
+ }
7941
+ /** `p:anim`: a `p:tavLst` ramp or a `from`/`to`/`by` formula ramp. */
7942
+ interface PptxAnimBehavior extends BehaviorBase {
7943
+ kind: 'anim';
7944
+ calcMode?: 'discrete' | 'lin' | 'fmla';
7945
+ valueType?: string;
7946
+ from?: string;
7947
+ to?: string;
7948
+ by?: string;
7949
+ keyframes: PptxAnimationKeyframe[];
7950
+ }
7951
+ /** `p:animEffect`: a filter transition (`fade`, `wipe(down)`...). */
7952
+ interface PptxAnimEffectBehavior extends BehaviorBase {
7953
+ kind: 'animEffect';
7954
+ filter?: string;
7955
+ transition?: 'in' | 'out' | 'none';
7956
+ }
7957
+ /** A `p:animScale` factor pair (1 = unscaled) or a `p:animMotion` offset (slide fractions). */
7958
+ interface PptxBehaviorPoint {
7959
+ x: number;
7960
+ y: number;
7961
+ }
7962
+ /** `p:animScale`: scale factors as fractions (OOXML stores percent*1000, so `100000` = 1). */
7963
+ interface PptxAnimScaleBehavior extends BehaviorBase {
7964
+ kind: 'animScale';
7965
+ from?: PptxBehaviorPoint;
7966
+ to?: PptxBehaviorPoint;
7967
+ by?: PptxBehaviorPoint;
7968
+ zoomContents?: boolean;
7969
+ }
7970
+ /** `p:animRot`: rotation in degrees (OOXML stores 60000ths). */
7971
+ interface PptxAnimRotBehavior extends BehaviorBase {
7972
+ kind: 'animRot';
7973
+ from?: number;
7974
+ to?: number;
7975
+ by?: number;
7976
+ }
7977
+ /** `p:animMotion`: a path (slide fractions) or a `from`/`to`/`by` offset. */
7978
+ interface PptxAnimMotionBehavior extends BehaviorBase {
7979
+ kind: 'animMotion';
7980
+ path?: string;
7981
+ origin?: string;
7982
+ from?: PptxBehaviorPoint;
7983
+ to?: PptxBehaviorPoint;
7984
+ by?: PptxBehaviorPoint;
7985
+ }
7986
+ /** One behaviour child of an effect, tagged by its OOXML element. */
7987
+ type PptxAnimationBehavior = PptxSetBehavior | PptxAnimBehavior | PptxAnimEffectBehavior | PptxAnimScaleBehavior | PptxAnimRotBehavior | PptxAnimMotionBehavior;
7988
+ //#endregion
7817
7989
  //#region src/core/types/animation.d.ts
7818
7990
  /**
7819
7991
  * Built-in animation preset names used for entrance, exit, and emphasis effects.
@@ -8365,6 +8537,14 @@ interface PptxNativeAnimation {
8365
8537
  * shared playback (round-trip/typed-model only so far).
8366
8538
  */
8367
8539
  setAnimations?: PptxSetAnimation[];
8540
+ /**
8541
+ * Every behaviour child of this effect (`p:set`, `p:anim`, `p:animEffect`,
8542
+ * `p:animScale`, `p:animRot`, `p:animMotion`) with its own timing, as
8543
+ * authored. The single-valued fields above flatten a composed preset;
8544
+ * this keeps the whole tree so playback can follow what PowerPoint wrote
8545
+ * (see `animation-behavior-player` in `pptx-viewer-shared`).
8546
+ */
8547
+ behaviors?: PptxAnimationBehavior[];
8368
8548
  }
8369
8549
  /**
8370
8550
  * One `p:set` discrete (non-interpolated) attribute assignment composed
@@ -11275,6 +11455,8 @@ interface IPptxHandlerRuntime {
11275
11455
  updateThemeColorScheme(colorScheme: PptxThemeColorScheme): Promise<void>;
11276
11456
  updateThemeFontScheme(fontScheme: PptxThemeFontScheme): Promise<void>;
11277
11457
  updateThemeName(name: string): Promise<void>;
11458
+ /** Resolve a `<p:style>` node against the loaded theme (see PptxHandlerRuntimeStyleMatrixResolve). */
11459
+ resolveStyleMatrixReferences(styleXml: XmlObject): ResolvedStyleMatrix;
11278
11460
  applyTheme(colorScheme: PptxThemeColorScheme, fontScheme: PptxThemeFontScheme, themeName?: string): Promise<void>;
11279
11461
  load(data: ArrayBuffer, options?: PptxHandlerLoadOptions): Promise<PptxData>;
11280
11462
  getChartDataForGraphicFrame(slidePath: string, graphicFrame: XmlObject | undefined): Promise<PptxChartData | undefined>;
@@ -11570,6 +11752,14 @@ declare class PptxHandlerCore {
11570
11752
  * @param name - New display name for the theme.
11571
11753
  */
11572
11754
  updateThemeName(name: string): Promise<void>;
11755
+ /**
11756
+ * Resolve a `<p:style>` block (`a:lnRef` / `a:fillRef` / `a:effectRef` /
11757
+ * `a:fontRef`) against the loaded theme, exactly as the load path would for
11758
+ * a shape whose `spPr` authors nothing. Apply the returned `shapeStyle` to a
11759
+ * shape and it renders like PowerPoint's Shape Styles entry and saves as a
11760
+ * bare `<p:style>` with an empty `spPr`, which is what PowerPoint writes.
11761
+ */
11762
+ resolveStyleMatrixReferences(styleXml: XmlObject): ResolvedStyleMatrix;
11573
11763
  /**
11574
11764
  * Apply a complete theme in one call (colour scheme + font scheme + optional name).
11575
11765
  *
@@ -12660,6 +12850,15 @@ interface PictureBulletMarker {
12660
12850
  imageRelId?: string;
12661
12851
  }
12662
12852
  //#endregion
12853
+ //#region src/render/text-east-asian-breaks.d.ts
12854
+ /** Which of the two behaviours a paragraph asks for. */
12855
+ interface EastAsianBreakOptions {
12856
+ /** `a:pPr/@hangingPunct="1"`. */
12857
+ hangingPunctuation: boolean;
12858
+ /** `a:pPr/@eaLnBrk="0"`: break between any two East Asian characters. */
12859
+ breakAnywhere: boolean;
12860
+ }
12861
+ //#endregion
12663
12862
  //#region src/render/text-run-meta.d.ts
12664
12863
  /** A run's resolved hyperlink target. */
12665
12864
  interface RunHyperlink {
@@ -12833,6 +13032,8 @@ interface ParagraphRun {
12833
13032
  * `paragraph-run-build.ts`).
12834
13033
  */
12835
13034
  underlineWordPieces?: ScriptFontPiece[];
13035
+ /** The advance-carrying space after a hanging `、`/`。` (`text-east-asian-breaks`). */
13036
+ hangingSpace?: true;
12836
13037
  /**
12837
13038
  * `a:reflection` mirrored-sibling wrapper style for this run (the text-run
12838
13039
  * counterpart of a shape/picture's `ComputedEffectStyle.reflection`), or
@@ -12916,6 +13117,12 @@ interface RenderParagraph {
12916
13117
  * break rules, rendered differently in the other four bindings.
12917
13118
  */
12918
13119
  paragraphStyle?: RunStyle;
13120
+ /**
13121
+ * `@hangingPunct` / `@eaLnBrk="0"` as resolved for this paragraph. The runs
13122
+ * above already carry their pieces; React, which rebuilds each segment's
13123
+ * pieces inside one span, re-applies `splitEastAsianBreaks` from this.
13124
+ */
13125
+ eastAsianBreaks?: EastAsianBreakOptions;
12919
13126
  }
12920
13127
  //#endregion
12921
13128
  //#region src/render/inline-list-types.d.ts
@@ -13484,6 +13691,13 @@ type ToolbarButtonId = 'share' | 'broadcast' | 'export' | 'undo' | 'redo' | 'rec
13484
13691
  /** 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. */
13485
13692
  type ToolbarTabId = 'file' | 'home' | 'insert' | 'draw' | 'design' | 'transitions' | 'animations' | 'slideShow' | 'record' | 'review' | 'view' | 'help';
13486
13693
  type ToolbarActionId = ToolbarButtonId | ToolbarTabId;
13694
+ /**
13695
+ * PowerPoint's contextual tabs: they join the tab row only while the
13696
+ * selection is of their kind (see `contextualTabsForElement` in
13697
+ * `ribbon-galleries/`). Kept apart from `ToolbarTabId` because they are not
13698
+ * part of the fixed tab order every binding renders.
13699
+ */
13700
+ type RibbonContextualTabId = 'shapeFormat' | 'pictureFormat' | 'tableDesign' | 'chartDesign' | 'smartArtDesign';
13487
13701
  //#endregion
13488
13702
  //#region src/render/options/viewer-options.d.ts
13489
13703
  /**
@@ -13687,6 +13901,511 @@ type FreeformToolKind = 'freeformShape' | 'curve';
13687
13901
  */
13688
13902
  type ViewerOptionsTabId = 'general' | 'proofing' | 'save' | 'language' | 'accessibility' | 'advanced' | 'ribbon' | 'quickAccess' | 'addIns' | 'trust';
13689
13903
  //#endregion
13904
+ //#region src/render/customization/ribbon-control-catalog.d.ts
13905
+ declare const RIBBON_CONTROL_CATALOG: {
13906
+ readonly home: {
13907
+ readonly clipboard: {
13908
+ readonly label: 'Clipboard';
13909
+ readonly controls: {
13910
+ readonly paste: 'Paste';
13911
+ readonly cut: 'Cut';
13912
+ readonly copy: 'Copy';
13913
+ readonly formatPainter: 'Format Painter';
13914
+ };
13915
+ };
13916
+ readonly slides: {
13917
+ readonly label: 'Slides';
13918
+ readonly controls: {
13919
+ readonly newSlide: 'New Slide';
13920
+ readonly layout: 'Layout';
13921
+ readonly reset: 'Reset';
13922
+ readonly section: 'Section';
13923
+ readonly slideTemplates: 'Slide templates';
13924
+ };
13925
+ };
13926
+ readonly font: {
13927
+ readonly label: 'Font';
13928
+ readonly controls: {
13929
+ readonly fontFamily: 'Font';
13930
+ readonly fontSize: 'Font Size';
13931
+ readonly increaseFontSize: 'Increase Font Size';
13932
+ readonly decreaseFontSize: 'Decrease Font Size';
13933
+ readonly clearFormatting: 'Clear All Formatting';
13934
+ readonly bold: 'Bold';
13935
+ readonly italic: 'Italic';
13936
+ readonly underline: 'Underline';
13937
+ readonly strikethrough: 'Strikethrough';
13938
+ readonly shadow: 'Text Shadow';
13939
+ readonly characterSpacing: 'Character Spacing';
13940
+ readonly changeCase: 'Change Case';
13941
+ readonly fontColor: 'Font Color';
13942
+ readonly highlightColor: 'Text Highlight Color';
13943
+ readonly superscript: 'Superscript';
13944
+ readonly subscript: 'Subscript';
13945
+ };
13946
+ };
13947
+ readonly paragraph: {
13948
+ readonly label: 'Paragraph';
13949
+ readonly controls: {
13950
+ readonly bullets: 'Bullets (toggle and gallery)';
13951
+ readonly numbering: 'Numbering (toggle and gallery)';
13952
+ readonly decreaseIndent: 'Decrease List Level';
13953
+ readonly increaseIndent: 'Increase List Level';
13954
+ readonly lineSpacing: 'Line Spacing';
13955
+ readonly alignLeft: 'Align Left';
13956
+ readonly alignCenter: 'Center';
13957
+ readonly alignRight: 'Align Right';
13958
+ readonly justify: 'Justify';
13959
+ readonly columns: 'Columns';
13960
+ readonly textDirection: 'Text Direction';
13961
+ readonly alignText: 'Align Text';
13962
+ };
13963
+ };
13964
+ readonly drawing: {
13965
+ readonly label: 'Drawing';
13966
+ readonly controls: {
13967
+ readonly shapes: 'Shapes';
13968
+ readonly arrange: 'Arrange';
13969
+ readonly quickStyles: 'Quick Styles (Shape Styles gallery)';
13970
+ readonly shapeFill: 'Shape Fill';
13971
+ readonly shapeOutline: 'Shape Outline';
13972
+ readonly shapeEffects: 'Shape Effects gallery';
13973
+ };
13974
+ };
13975
+ readonly arrange: {
13976
+ readonly label: 'Arrange';
13977
+ readonly controls: {
13978
+ readonly bringForward: 'Bring Forward';
13979
+ readonly sendBackward: 'Send Backward';
13980
+ readonly bringToFront: 'Bring to Front';
13981
+ readonly sendToBack: 'Send to Back';
13982
+ readonly flipHorizontal: 'Flip Horizontal';
13983
+ readonly flipVertical: 'Flip Vertical';
13984
+ readonly duplicate: 'Duplicate';
13985
+ readonly delete: 'Delete';
13986
+ readonly group: 'Group';
13987
+ readonly ungroup: 'Ungroup';
13988
+ readonly align: 'Align';
13989
+ readonly mergeShapes: 'Merge Shapes';
13990
+ readonly crop: 'Crop';
13991
+ readonly outlineWidth: 'Outline width';
13992
+ };
13993
+ };
13994
+ readonly editing: {
13995
+ readonly label: 'Editing';
13996
+ readonly controls: {
13997
+ readonly find: 'Find';
13998
+ readonly replace: 'Replace';
13999
+ readonly select: 'Select';
14000
+ };
14001
+ };
14002
+ };
14003
+ readonly insert: {
14004
+ readonly slides: {
14005
+ readonly label: 'Slides';
14006
+ readonly controls: {
14007
+ readonly newSlide: 'New Slide';
14008
+ };
14009
+ };
14010
+ readonly tables: {
14011
+ readonly label: 'Tables';
14012
+ readonly controls: {
14013
+ readonly table: 'Table';
14014
+ };
14015
+ };
14016
+ readonly images: {
14017
+ readonly label: 'Images';
14018
+ readonly controls: {
14019
+ readonly pictures: 'Pictures';
14020
+ };
14021
+ };
14022
+ readonly illustrations: {
14023
+ readonly label: 'Illustrations';
14024
+ readonly controls: {
14025
+ readonly shapes: 'Shapes';
14026
+ readonly smartArt: 'SmartArt';
14027
+ readonly chart: 'Chart';
14028
+ };
14029
+ };
14030
+ readonly links: {
14031
+ readonly label: 'Links';
14032
+ readonly controls: {
14033
+ readonly link: 'Link';
14034
+ readonly action: 'Action button';
14035
+ };
14036
+ };
14037
+ readonly comments: {
14038
+ readonly label: 'Comments';
14039
+ readonly controls: {
14040
+ readonly comment: 'Comment';
14041
+ };
14042
+ };
14043
+ readonly text: {
14044
+ readonly label: 'Text';
14045
+ readonly controls: {
14046
+ readonly textBox: 'Text Box';
14047
+ readonly field: 'Header, date, slide number field';
14048
+ };
14049
+ };
14050
+ readonly symbols: {
14051
+ readonly label: 'Symbols';
14052
+ readonly controls: {
14053
+ readonly equation: 'Equation';
14054
+ readonly symbol: 'Symbol';
14055
+ };
14056
+ };
14057
+ readonly media: {
14058
+ readonly label: 'Media';
14059
+ readonly controls: {
14060
+ readonly media: 'Video / Audio';
14061
+ };
14062
+ };
14063
+ };
14064
+ readonly draw: {
14065
+ readonly tools: {
14066
+ readonly label: 'Drawing Tools';
14067
+ readonly controls: {
14068
+ readonly select: 'Select';
14069
+ readonly pen: 'Pen';
14070
+ readonly highlighter: 'Highlighter';
14071
+ readonly eraser: 'Eraser';
14072
+ readonly penColor: 'Pen colour';
14073
+ readonly penWidth: 'Pen width';
14074
+ };
14075
+ };
14076
+ readonly convert: {
14077
+ readonly label: 'Convert';
14078
+ readonly controls: {
14079
+ readonly inkToShape: 'Ink to Shape';
14080
+ };
14081
+ };
14082
+ };
14083
+ readonly design: {
14084
+ readonly themes: {
14085
+ readonly label: 'Themes';
14086
+ readonly controls: {
14087
+ readonly browseThemes: 'Themes gallery';
14088
+ readonly editTheme: 'Edit theme';
14089
+ };
14090
+ };
14091
+ readonly variants: {
14092
+ readonly label: 'Variants';
14093
+ readonly controls: {
14094
+ readonly colors: 'Variants: Colors gallery';
14095
+ readonly fonts: 'Variants: Fonts gallery';
14096
+ };
14097
+ };
14098
+ readonly customize: {
14099
+ readonly label: 'Customize';
14100
+ readonly controls: {
14101
+ readonly slideSize: 'Slide Size';
14102
+ readonly formatBackground: 'Format Background';
14103
+ };
14104
+ };
14105
+ };
14106
+ readonly transitions: {
14107
+ readonly preview: {
14108
+ readonly label: 'Preview';
14109
+ readonly controls: {
14110
+ readonly preview: 'Preview';
14111
+ };
14112
+ };
14113
+ readonly transitionToThisSlide: {
14114
+ readonly label: 'Transition to This Slide';
14115
+ readonly controls: {
14116
+ readonly gallery: 'Transition gallery';
14117
+ readonly effectOptions: 'Effect Options';
14118
+ };
14119
+ };
14120
+ readonly timing: {
14121
+ readonly label: 'Timing';
14122
+ readonly controls: {
14123
+ readonly sound: 'Sound';
14124
+ readonly duration: 'Duration';
14125
+ readonly applyToAll: 'Apply To All';
14126
+ readonly advanceOnClick: 'On Mouse Click';
14127
+ readonly advanceAfter: 'After';
14128
+ };
14129
+ };
14130
+ };
14131
+ readonly animations: {
14132
+ readonly preview: {
14133
+ readonly label: 'Preview';
14134
+ readonly controls: {
14135
+ readonly preview: 'Preview';
14136
+ };
14137
+ };
14138
+ readonly animation: {
14139
+ readonly label: 'Animation';
14140
+ readonly controls: {
14141
+ readonly gallery: 'Animation gallery';
14142
+ readonly effectOptions: 'Effect Options';
14143
+ };
14144
+ };
14145
+ readonly motionPath: {
14146
+ readonly label: 'Motion Paths';
14147
+ readonly controls: {
14148
+ readonly gallery: 'Motion path gallery';
14149
+ };
14150
+ };
14151
+ readonly advancedAnimation: {
14152
+ readonly label: 'Advanced Animation';
14153
+ readonly controls: {
14154
+ readonly addAnimation: 'Add Animation';
14155
+ readonly animationPane: 'Animation Pane';
14156
+ readonly trigger: 'Trigger';
14157
+ readonly animationPainter: 'Animation Painter';
14158
+ readonly remove: 'Remove animation';
14159
+ };
14160
+ };
14161
+ readonly timing: {
14162
+ readonly label: 'Timing';
14163
+ readonly controls: {
14164
+ readonly start: 'Start';
14165
+ readonly duration: 'Duration';
14166
+ readonly delay: 'Delay';
14167
+ readonly reorder: 'Reorder';
14168
+ };
14169
+ };
14170
+ };
14171
+ readonly slideShow: {
14172
+ readonly startSlideShow: {
14173
+ readonly label: 'Start Slide Show';
14174
+ readonly controls: {
14175
+ readonly fromBeginning: 'From Beginning';
14176
+ readonly fromCurrent: 'From Current Slide';
14177
+ readonly customShow: 'Custom Slide Show';
14178
+ };
14179
+ };
14180
+ readonly present: {
14181
+ readonly label: 'Present';
14182
+ readonly controls: {
14183
+ readonly presenterView: 'Presenter View';
14184
+ readonly broadcast: 'Present Online';
14185
+ };
14186
+ };
14187
+ readonly setUp: {
14188
+ readonly label: 'Set Up';
14189
+ readonly controls: {
14190
+ readonly setUpSlideShow: 'Set Up Slide Show';
14191
+ readonly hideSlide: 'Hide Slide';
14192
+ readonly rehearseTimings: 'Rehearse Timings';
14193
+ readonly record: 'Record';
14194
+ readonly rehearseWithCoach: 'Rehearse with Coach';
14195
+ };
14196
+ };
14197
+ readonly captions: {
14198
+ readonly label: 'Captions & Subtitles';
14199
+ readonly controls: {
14200
+ readonly subtitles: 'Always Use Subtitles';
14201
+ readonly subtitleSettings: 'Subtitle Settings';
14202
+ };
14203
+ };
14204
+ };
14205
+ readonly record: {
14206
+ readonly camera: {
14207
+ readonly label: 'Camera';
14208
+ readonly controls: {
14209
+ readonly cameo: 'Cameo';
14210
+ };
14211
+ };
14212
+ readonly record: {
14213
+ readonly label: 'Record';
14214
+ readonly controls: {
14215
+ readonly fromBeginning: 'From Beginning';
14216
+ readonly fromCurrent: 'From Current Slide';
14217
+ };
14218
+ };
14219
+ readonly manage: {
14220
+ readonly label: 'Manage';
14221
+ readonly controls: {
14222
+ readonly clear: 'Clear';
14223
+ readonly reset: 'Reset to Cameo';
14224
+ };
14225
+ };
14226
+ readonly help: {
14227
+ readonly label: 'Help';
14228
+ readonly controls: {
14229
+ readonly learnMore: 'Learn more';
14230
+ };
14231
+ };
14232
+ };
14233
+ readonly review: {
14234
+ readonly proofing: {
14235
+ readonly label: 'Proofing';
14236
+ readonly controls: {
14237
+ readonly spelling: 'Spelling';
14238
+ readonly thesaurus: 'Thesaurus';
14239
+ };
14240
+ };
14241
+ readonly accessibility: {
14242
+ readonly label: 'Accessibility';
14243
+ readonly controls: {
14244
+ readonly check: 'Check Accessibility';
14245
+ };
14246
+ };
14247
+ readonly language: {
14248
+ readonly label: 'Language';
14249
+ readonly controls: {
14250
+ readonly translate: 'Translate';
14251
+ };
14252
+ };
14253
+ readonly comments: {
14254
+ readonly label: 'Comments';
14255
+ readonly controls: {
14256
+ readonly newComment: 'New Comment';
14257
+ readonly delete: 'Delete';
14258
+ readonly previous: 'Previous';
14259
+ readonly next: 'Next';
14260
+ readonly showComments: 'Show Comments';
14261
+ };
14262
+ };
14263
+ readonly compare: {
14264
+ readonly label: 'Compare';
14265
+ readonly controls: {
14266
+ readonly compare: 'Compare';
14267
+ readonly markAllRead: 'Mark all read';
14268
+ };
14269
+ };
14270
+ readonly protect: {
14271
+ readonly label: 'Protect';
14272
+ readonly controls: {
14273
+ readonly readOnly: 'Read-only';
14274
+ readonly restrictPermission: 'Restrict Permission';
14275
+ };
14276
+ };
14277
+ readonly ink: {
14278
+ readonly label: 'Ink';
14279
+ readonly controls: {
14280
+ readonly hideInk: 'Hide Ink';
14281
+ };
14282
+ };
14283
+ };
14284
+ readonly view: {
14285
+ readonly presentationViews: {
14286
+ readonly label: 'Presentation Views';
14287
+ readonly controls: {
14288
+ readonly normal: 'Normal';
14289
+ readonly outline: 'Outline View';
14290
+ readonly slideSorter: 'Slide Sorter';
14291
+ readonly notesPage: 'Notes Page';
14292
+ readonly readingView: 'Reading View';
14293
+ };
14294
+ };
14295
+ readonly masterViews: {
14296
+ readonly label: 'Master Views';
14297
+ readonly controls: {
14298
+ readonly slideMaster: 'Slide Master';
14299
+ readonly handoutMaster: 'Handout Master';
14300
+ readonly notesMaster: 'Notes Master';
14301
+ };
14302
+ };
14303
+ readonly show: {
14304
+ readonly label: 'Show';
14305
+ readonly controls: {
14306
+ readonly ruler: 'Ruler';
14307
+ readonly gridlines: 'Gridlines';
14308
+ readonly guides: 'Guides';
14309
+ readonly snapToGrid: 'Snap to Grid';
14310
+ readonly snapToShape: 'Snap to Shape';
14311
+ readonly addGuide: 'Add horizontal / vertical guide';
14312
+ readonly selectionPane: 'Selection Pane';
14313
+ readonly eyedropper: 'Eyedropper';
14314
+ readonly notes: 'Notes';
14315
+ };
14316
+ };
14317
+ readonly zoom: {
14318
+ readonly label: 'Zoom';
14319
+ readonly controls: {
14320
+ readonly zoom: 'Zoom';
14321
+ readonly fitToWindow: 'Fit to Window';
14322
+ };
14323
+ };
14324
+ readonly window: {
14325
+ readonly label: 'Window';
14326
+ readonly controls: {
14327
+ readonly templateEditing: 'Edit template elements';
14328
+ readonly macros: 'Macros';
14329
+ };
14330
+ };
14331
+ };
14332
+ readonly help: {
14333
+ readonly help: {
14334
+ readonly label: 'Help';
14335
+ readonly controls: {
14336
+ readonly options: 'Options';
14337
+ readonly keyboardShortcuts: 'Keyboard shortcuts';
14338
+ readonly accessibility: 'Accessibility checker';
14339
+ };
14340
+ };
14341
+ };
14342
+ readonly shapeFormat: {
14343
+ readonly shapeStyles: {
14344
+ readonly label: 'Shape Styles';
14345
+ readonly controls: {
14346
+ readonly gallery: 'Shape Styles gallery';
14347
+ readonly shapeEffects: 'Shape Effects gallery';
14348
+ };
14349
+ };
14350
+ readonly wordArtStyles: {
14351
+ readonly label: 'WordArt Styles';
14352
+ readonly controls: {
14353
+ readonly gallery: 'WordArt Styles gallery';
14354
+ };
14355
+ };
14356
+ };
14357
+ readonly pictureFormat: {
14358
+ readonly pictureStyles: {
14359
+ readonly label: 'Picture Styles';
14360
+ readonly controls: {
14361
+ readonly gallery: 'Picture Styles gallery';
14362
+ readonly pictureEffects: 'Picture Effects gallery';
14363
+ };
14364
+ };
14365
+ };
14366
+ readonly tableDesign: {
14367
+ readonly tableStyles: {
14368
+ readonly label: 'Table Styles';
14369
+ readonly controls: {
14370
+ readonly gallery: 'Table Styles gallery';
14371
+ };
14372
+ };
14373
+ };
14374
+ readonly chartDesign: {
14375
+ readonly chartLayouts: {
14376
+ readonly label: 'Chart Layouts';
14377
+ readonly controls: {
14378
+ readonly quickLayout: 'Quick Layout gallery';
14379
+ };
14380
+ };
14381
+ readonly chartStyles: {
14382
+ readonly label: 'Chart Styles';
14383
+ readonly controls: {
14384
+ readonly changeColors: 'Change Colors gallery';
14385
+ readonly gallery: 'Chart Styles gallery';
14386
+ };
14387
+ };
14388
+ };
14389
+ readonly smartArtDesign: {
14390
+ readonly smartArtStyles: {
14391
+ readonly label: 'SmartArt Styles';
14392
+ readonly controls: {
14393
+ readonly changeColors: 'Change Colors gallery';
14394
+ readonly gallery: 'SmartArt Styles gallery';
14395
+ };
14396
+ };
14397
+ };
14398
+ };
14399
+ //#endregion
14400
+ //#region src/render/customization/ribbon-control-ids.d.ts
14401
+ type Catalog = typeof RIBBON_CONTROL_CATALOG;
14402
+ /** `<tab>.<group>`, for example `home.font`. */
14403
+ type RibbonGroupId = { [T in keyof Catalog]: { [G in keyof Catalog[T]]: `${T & string}.${G & string}`; }[keyof Catalog[T]]; }[keyof Catalog];
14404
+ /** `<tab>.<group>.<control>`, for example `home.font.bold`. */
14405
+ type RibbonControlId = { [T in keyof Catalog]: { [G in keyof Catalog[T]]: Catalog[T][G] extends {
14406
+ controls: infer C;
14407
+ } ? `${T & string}.${G & string}.${keyof C & string}` : never; }[keyof Catalog[T]]; }[keyof Catalog];
14408
+ //#endregion
13690
14409
  //#region src/render/customization/customization-types.d.ts
13691
14410
  /** Keys of an options group whose value is a primitive (not an array). */
13692
14411
  type PrimitiveKeys<T> = { [K in keyof T]: T[K] extends ViewerOptionPrimitive ? K : never; }[keyof T] & string;
@@ -13711,10 +14430,20 @@ type OptionsSectionId = `${ViewerOptionsTabId}.${string}`;
13711
14430
  type OptionsSettingValues = Partial<Record<OptionsSettingId, ViewerOptionPrimitive>>;
13712
14431
  /** Ribbon and toolbar customisation. */
13713
14432
  interface RibbonCustomization {
13714
- /** Ribbon tabs to remove (the File tab included, unlike Customize Ribbon). */
13715
- hiddenTabs?: readonly ToolbarTabId[];
13716
- /** Top-level toolbar buttons / control clusters to remove. */
13717
- hiddenButtons?: readonly ToolbarButtonId[];
14433
+ /**
14434
+ * Ribbon tabs to remove (the File tab included, unlike Customize Ribbon),
14435
+ * and contextual tabs (`shapeFormat`, `pictureFormat`, ...) that should
14436
+ * never appear.
14437
+ */
14438
+ hiddenTabs?: readonly (ToolbarTabId | RibbonContextualTabId)[];
14439
+ /** Groups inside a tab to remove, as `<tab>.<group>` (`home.font`). */
14440
+ hiddenGroups?: readonly RibbonGroupId[];
14441
+ /**
14442
+ * Controls to remove: a top-level toolbar button / control cluster
14443
+ * (`share`, `zoom`, ...) or any ribbon control as
14444
+ * `<tab>.<group>.<control>` (`home.font.bold`).
14445
+ */
14446
+ hiddenButtons?: readonly (ToolbarButtonId | RibbonControlId)[];
13718
14447
  }
13719
14448
  /** File > Options (the Settings dialog) customisation. */
13720
14449
  interface OptionsCustomization {
@@ -13852,6 +14581,12 @@ interface ResolvedKeyboardCustomization {
13852
14581
  /** The normalised, set-based view of a customisation. Treat as immutable. */
13853
14582
  interface ResolvedCustomization {
13854
14583
  hiddenActions: ReadonlySet<ToolbarActionId>;
14584
+ /** Contextual tabs (`shapeFormat`, ...) the host never wants shown. */
14585
+ hiddenContextualTabs: ReadonlySet<RibbonContextualTabId>;
14586
+ /** Catalogued ribbon groups to hide (`ribbon.hiddenGroups`). */
14587
+ hiddenRibbonGroups: ReadonlySet<RibbonGroupId>;
14588
+ /** Catalogued ribbon controls to hide (the `<tab>.<group>.<control>` part of `ribbon.hiddenButtons`). */
14589
+ hiddenRibbonControls: ReadonlySet<RibbonControlId>;
13855
14590
  hiddenOptionsPages: ReadonlySet<OptionsPageId>;
13856
14591
  hiddenOptionsSections: ReadonlySet<OptionsSectionId>;
13857
14592
  hiddenSettings: ReadonlySet<OptionsSettingId>;
@@ -13882,10 +14617,18 @@ interface ViewerCustomizationApi {
13882
14617
  updateCustomization(patch: ViewerCustomization): void;
13883
14618
  /** Drop every customisation, back to the stock UI. */
13884
14619
  resetCustomization(): void;
13885
- hideRibbonTab(tab: ToolbarTabId): void;
13886
- showRibbonTab(tab: ToolbarTabId): void;
13887
- hideToolbarButton(button: ToolbarButtonId): void;
13888
- showToolbarButton(button: ToolbarButtonId): void;
14620
+ /** Hide a fixed tab, or stop a contextual tab (`shapeFormat`, ...) from appearing. */
14621
+ hideRibbonTab(tab: ToolbarTabId | RibbonContextualTabId): void;
14622
+ showRibbonTab(tab: ToolbarTabId | RibbonContextualTabId): void;
14623
+ /** Hide a group inside a tab (`home.font`). */
14624
+ hideRibbonGroup(group: RibbonGroupId): void;
14625
+ showRibbonGroup(group: RibbonGroupId): void;
14626
+ /** Hide a top-level toolbar button or any ribbon control (`home.font.bold`). */
14627
+ hideToolbarButton(button: ToolbarButtonId | RibbonControlId): void;
14628
+ showToolbarButton(button: ToolbarButtonId | RibbonControlId): void;
14629
+ /** Alias of `hideToolbarButton` for a ribbon control id. */
14630
+ hideRibbonControl(control: RibbonControlId): void;
14631
+ showRibbonControl(control: RibbonControlId): void;
13889
14632
  hideOptionsPage(page: OptionsPageId): void;
13890
14633
  showOptionsPage(page: OptionsPageId): void;
13891
14634
  hideOptionsSection(section: OptionsSectionId): void;
@@ -14484,8 +15227,8 @@ interface PowerPointViewerProps extends ViewportFitOptions {
14484
15227
  smartArt3D?: boolean;
14485
15228
  /**
14486
15229
  * Opt in to the interactive Three.js surface-chart renderer. When `true`,
14487
- * `surface`/`surface3D` charts render as a camera-orbitable WebGL mesh
14488
- * (drag to rotate, scroll to zoom) instead of the static SVG isometric
15230
+ * `surface`/`surface3D` charts render as a WebGL mesh
15231
+ * instead of the static SVG isometric
14489
15232
  * projection. Chart marks are not selectable/draggable in this mode.
14490
15233
  * Requires the optional `three` peer dependency; when it is not installed
14491
15234
  * (or the chart has no plottable grid), the viewer transparently falls back
@@ -14494,8 +15237,7 @@ interface PowerPointViewerProps extends ViewportFitOptions {
14494
15237
  surfaceChart3D?: boolean;
14495
15238
  /**
14496
15239
  * Opt in to the interactive Three.js bar3D-chart renderer. When `true`,
14497
- * `bar3D` charts render as camera-orbitable real box meshes (drag to
14498
- * rotate, scroll to zoom) instead of the flat SVG oblique-projection
15240
+ * `bar3D` charts render as real box meshes instead of the flat SVG oblique-projection
14499
15241
  * illusion. Chart marks are not selectable/draggable in this mode.
14500
15242
  * Requires the optional `three` peer dependency; when it is not installed
14501
15243
  * (or the chart has no plottable grid, or it is a horizontal 3-D Bar), the
@@ -14505,8 +15247,8 @@ interface PowerPointViewerProps extends ViewportFitOptions {
14505
15247
  barChart3D?: boolean;
14506
15248
  /**
14507
15249
  * Opt in to the interactive Three.js line3D-chart renderer. When `true`,
14508
- * `line3D` charts render as a camera-orbitable real tube-path mesh per
14509
- * series, one per depth ("series") plane (drag to rotate, scroll to zoom),
15250
+ * `line3D` charts render as a real tube-path mesh per
15251
+ * series, one per depth ("series") plane,
14510
15252
  * instead of the flat SVG oblique-projection illusion. Chart marks are not
14511
15253
  * selectable/draggable in this mode. Requires the optional `three` peer
14512
15254
  * dependency; when it is not installed (or the chart has no plottable
@@ -14516,9 +15258,8 @@ interface PowerPointViewerProps extends ViewportFitOptions {
14516
15258
  lineChart3D?: boolean;
14517
15259
  /**
14518
15260
  * Opt in to the interactive Three.js area3D-chart renderer. When `true`,
14519
- * `area3D` charts render as a camera-orbitable real tube path + filled
14520
- * ribbon mesh per series, one per depth ("series") plane (drag to rotate,
14521
- * scroll to zoom), instead of the flat SVG oblique-projection illusion.
15261
+ * `area3D` charts render as a real tube path + filled
15262
+ * ribbon mesh per series, one per depth ("series") plane, instead of the flat SVG oblique-projection illusion.
14522
15263
  * Chart marks are not selectable/draggable in this mode. Requires the
14523
15264
  * optional `three` peer dependency; when it is not installed (or the chart
14524
15265
  * has no plottable grid), the viewer transparently falls back to the flat
@@ -14527,8 +15268,7 @@ interface PowerPointViewerProps extends ViewportFitOptions {
14527
15268
  areaChart3D?: boolean;
14528
15269
  /**
14529
15270
  * Opt in to the interactive Three.js pie3D-chart renderer. When `true`,
14530
- * `pie3D` charts render as camera-orbitable real wedge meshes (drag to
14531
- * rotate, scroll to zoom) instead of the flat SVG oblique-projection
15271
+ * `pie3D` charts render as real wedge meshes instead of the flat SVG oblique-projection
14532
15272
  * illusion. Chart marks are not selectable/draggable in this mode.
14533
15273
  * Requires the optional `three` peer dependency; when it is not installed
14534
15274
  * (or the chart has no plottable series), the viewer transparently falls