pptx-react-viewer 1.25.4 → 2.0.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 (230) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +1 -1
  3. package/dist/AiChatPanel-BRGQCYZM.mjs +1087 -0
  4. package/dist/AiChatPanel-BRGQCYZM.mjs.br +0 -0
  5. package/dist/AiChatPanel-BRGQCYZM.mjs.gz +0 -0
  6. package/dist/AiChatPanel-PW5OT25Z.js +1089 -0
  7. package/dist/AiChatPanel-PW5OT25Z.js.br +0 -0
  8. package/dist/AiChatPanel-PW5OT25Z.js.gz +0 -0
  9. package/dist/{GLTFLoader-NMAS6VRH.mjs → GLTFLoader-374ZNTXW.mjs} +1 -1
  10. package/dist/GLTFLoader-374ZNTXW.mjs.br +0 -0
  11. package/dist/GLTFLoader-374ZNTXW.mjs.gz +0 -0
  12. package/dist/{GLTFLoader-GP55DVVS.js → GLTFLoader-Q7BHCGAW.js} +1 -1
  13. package/dist/GLTFLoader-Q7BHCGAW.js.br +0 -0
  14. package/dist/GLTFLoader-Q7BHCGAW.js.gz +0 -0
  15. package/dist/{Model3DScene-SP6WOKSX.js → Model3DScene-JCGYRKXM.js} +4 -4
  16. package/dist/{Model3DScene-SP6WOKSX.js.br → Model3DScene-JCGYRKXM.js.br} +0 -0
  17. package/dist/Model3DScene-JCGYRKXM.js.gz +0 -0
  18. package/dist/{Model3DScene-DZFYJPUH.mjs → Model3DScene-TEF362W2.mjs} +3 -3
  19. package/dist/Model3DScene-TEF362W2.mjs.br +0 -0
  20. package/dist/Model3DScene-TEF362W2.mjs.gz +0 -0
  21. package/dist/{OrbitControls-VH6KILH7.js → OrbitControls-SMYCPLXO.js} +1 -1
  22. package/dist/OrbitControls-SMYCPLXO.js.br +3 -0
  23. package/dist/OrbitControls-SMYCPLXO.js.gz +0 -0
  24. package/dist/{OrbitControls-F5XPYD2Z.mjs → OrbitControls-ZTGHPI5G.mjs} +1 -1
  25. package/dist/OrbitControls-ZTGHPI5G.mjs.br +0 -0
  26. package/dist/{OrbitControls-F5XPYD2Z.mjs.gz → OrbitControls-ZTGHPI5G.mjs.gz} +0 -0
  27. package/dist/{PowerPointViewer-CnADroqZ.d.ts → PowerPointViewer-gmU5rc7K.d.ts} +2 -2
  28. package/dist/PowerPointViewer-gmU5rc7K.d.ts.map +1 -0
  29. package/dist/{SmartArt3DScene-WQIDFZ7X.mjs → SmartArt3DScene-XCFVGCXE.mjs} +1 -1
  30. package/dist/SmartArt3DScene-XCFVGCXE.mjs.br +0 -0
  31. package/dist/SmartArt3DScene-XCFVGCXE.mjs.gz +0 -0
  32. package/dist/{SmartArt3DScene-HCQBDRAM.js → SmartArt3DScene-ZO3KFDI2.js} +1 -1
  33. package/dist/SmartArt3DScene-ZO3KFDI2.js.br +0 -0
  34. package/dist/SmartArt3DScene-ZO3KFDI2.js.gz +0 -0
  35. package/dist/{SurfaceChart3DScene-GISPZ4C2.js → SurfaceChart3DScene-2SHCYZVC.js} +4 -4
  36. package/dist/SurfaceChart3DScene-2SHCYZVC.js.br +0 -0
  37. package/dist/SurfaceChart3DScene-2SHCYZVC.js.gz +0 -0
  38. package/dist/{SurfaceChart3DScene-54BRNPQ5.mjs → SurfaceChart3DScene-UPDCIMJM.mjs} +3 -3
  39. package/dist/{SurfaceChart3DScene-54BRNPQ5.mjs.br → SurfaceChart3DScene-UPDCIMJM.mjs.br} +0 -0
  40. package/dist/SurfaceChart3DScene-UPDCIMJM.mjs.gz +0 -0
  41. package/dist/{animation-timeline-CEJJLFqK.d.ts → animation-timeline-eb5z0SHW.d.ts} +250 -8
  42. package/dist/animation-timeline-eb5z0SHW.d.ts.map +1 -0
  43. package/dist/{chunk-M3SIFXWD.mjs → chunk-2X72MOPZ.mjs} +65 -0
  44. package/dist/chunk-2X72MOPZ.mjs.br +0 -0
  45. package/dist/chunk-2X72MOPZ.mjs.gz +0 -0
  46. package/dist/{chunk-QGM4M3NI.js → chunk-4VNS5WPM.js} +5 -0
  47. package/dist/chunk-4VNS5WPM.js.br +0 -0
  48. package/dist/chunk-4VNS5WPM.js.gz +0 -0
  49. package/dist/{chunk-P72VQ7WE.mjs → chunk-5XLLRPMV.mjs} +8966 -16340
  50. package/dist/chunk-5XLLRPMV.mjs.br +0 -0
  51. package/dist/chunk-5XLLRPMV.mjs.gz +0 -0
  52. package/dist/{chunk-UYNOPUSG.mjs → chunk-6YXLGMTN.mjs} +4137 -1927
  53. package/dist/chunk-6YXLGMTN.mjs.br +0 -0
  54. package/dist/chunk-6YXLGMTN.mjs.gz +0 -0
  55. package/dist/chunk-B6NRDUHJ.mjs +8029 -0
  56. package/dist/chunk-B6NRDUHJ.mjs.br +0 -0
  57. package/dist/chunk-B6NRDUHJ.mjs.gz +0 -0
  58. package/dist/chunk-BHVCED34.mjs +16664 -0
  59. package/dist/chunk-BHVCED34.mjs.br +0 -0
  60. package/dist/chunk-BHVCED34.mjs.gz +0 -0
  61. package/dist/{chunk-FWF2SP6N.js → chunk-CLNGAVNH.js} +4142 -1926
  62. package/dist/chunk-CLNGAVNH.js.br +0 -0
  63. package/dist/chunk-CLNGAVNH.js.gz +0 -0
  64. package/dist/{chunk-2EFVXYNA.js → chunk-CUUYYYC5.js} +65 -0
  65. package/dist/chunk-CUUYYYC5.js.br +0 -0
  66. package/dist/chunk-CUUYYYC5.js.gz +0 -0
  67. package/dist/{chunk-TPG2WKHQ.mjs → chunk-L63RAVM7.mjs} +1286 -151
  68. package/dist/chunk-L63RAVM7.mjs.br +0 -0
  69. package/dist/chunk-L63RAVM7.mjs.gz +0 -0
  70. package/dist/{chunk-5VYVKFMS.js → chunk-LFXG7SGG.js} +2074 -939
  71. package/dist/chunk-LFXG7SGG.js.br +0 -0
  72. package/dist/chunk-LFXG7SGG.js.gz +0 -0
  73. package/dist/{chunk-6F4WVHS3.js → chunk-OKOJVSKJ.js} +4701 -656
  74. package/dist/chunk-OKOJVSKJ.js.br +0 -0
  75. package/dist/chunk-OKOJVSKJ.js.gz +0 -0
  76. package/dist/{chunk-VUC3UPLM.mjs → chunk-R2N2UYT7.mjs} +4647 -618
  77. package/dist/chunk-R2N2UYT7.mjs.br +0 -0
  78. package/dist/chunk-R2N2UYT7.mjs.gz +0 -0
  79. package/dist/chunk-SYPHGLIB.js +16701 -0
  80. package/dist/chunk-SYPHGLIB.js.br +0 -0
  81. package/dist/chunk-SYPHGLIB.js.gz +0 -0
  82. package/dist/{chunk-6DZX6EAA.mjs → chunk-XGB3TDIC.mjs} +5 -1
  83. package/dist/chunk-XGB3TDIC.mjs.br +0 -0
  84. package/dist/chunk-XGB3TDIC.mjs.gz +0 -0
  85. package/dist/chunk-ZB4NZRCI.js +11111 -0
  86. package/dist/chunk-ZB4NZRCI.js.br +0 -0
  87. package/dist/chunk-ZB4NZRCI.js.gz +0 -0
  88. package/dist/chunk-ZKDE3HJI.js +8121 -0
  89. package/dist/chunk-ZKDE3HJI.js.br +0 -0
  90. package/dist/chunk-ZKDE3HJI.js.gz +0 -0
  91. package/dist/{dist-QU6JIDAF.js → dist-4LUVI3SW.js} +587 -563
  92. package/dist/dist-4LUVI3SW.js.br +0 -0
  93. package/dist/dist-4LUVI3SW.js.gz +0 -0
  94. package/dist/dist-J6PC54PZ.mjs +2 -0
  95. package/dist/dist-J6PC54PZ.mjs.br +0 -0
  96. package/dist/dist-J6PC54PZ.mjs.gz +0 -0
  97. package/dist/i18n.js +5 -5
  98. package/dist/i18n.js.br +0 -0
  99. package/dist/i18n.js.gz +0 -0
  100. package/dist/i18n.mjs +2 -2
  101. package/dist/i18n.mjs.br +0 -0
  102. package/dist/i18n.mjs.gz +0 -0
  103. package/dist/{index-DWvM1PBB.d.ts → index-a8wcFjRJ.d.ts} +24 -7
  104. package/dist/index-a8wcFjRJ.d.ts.map +1 -0
  105. package/dist/index.d.ts +3333 -301
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +41 -39
  108. package/dist/index.js.br +0 -0
  109. package/dist/index.js.gz +0 -0
  110. package/dist/index.mjs +8 -6
  111. package/dist/index.mjs.br +0 -0
  112. package/dist/index.mjs.gz +0 -0
  113. package/dist/{hooks-unstable.d.ts → internals.d.ts} +1298 -795
  114. package/dist/internals.d.ts.map +1 -0
  115. package/dist/{hooks-unstable.js → internals.js} +81 -80
  116. package/dist/internals.js.br +0 -0
  117. package/dist/internals.js.gz +0 -0
  118. package/dist/{hooks-unstable.mjs → internals.mjs} +6 -5
  119. package/dist/internals.mjs.br +0 -0
  120. package/dist/internals.mjs.gz +0 -0
  121. package/dist/pptx-viewer.css +1 -1
  122. package/dist/pptx-viewer.css.br +0 -0
  123. package/dist/pptx-viewer.css.gz +0 -0
  124. package/dist/{three.module-7CXEVRKB.mjs → three.module-AC7ESV4W.mjs} +1 -1
  125. package/dist/three.module-AC7ESV4W.mjs.br +0 -0
  126. package/dist/three.module-AC7ESV4W.mjs.gz +0 -0
  127. package/dist/{three.module-CPZZFD2Q.js → three.module-GNNNRIMK.js} +1 -1
  128. package/dist/three.module-GNNNRIMK.js.br +0 -0
  129. package/dist/three.module-GNNNRIMK.js.gz +0 -0
  130. package/dist/{useViewerBuildingBlocks-ll3_ncCH.d.ts → useViewerBuildingBlocks-CjureTRf.d.ts} +185 -174
  131. package/dist/useViewerBuildingBlocks-CjureTRf.d.ts.map +1 -0
  132. package/dist/viewer/index.d.ts +692 -53
  133. package/dist/viewer/index.d.ts.map +1 -1
  134. package/dist/viewer/index.js +35 -33
  135. package/dist/viewer/index.js.br +0 -0
  136. package/dist/viewer/index.js.gz +0 -0
  137. package/dist/viewer/index.mjs +8 -6
  138. package/dist/viewer/index.mjs.br +0 -0
  139. package/dist/viewer/index.mjs.gz +0 -0
  140. package/dist/{y-webrtc-6CRYHAXH.mjs → y-webrtc-DGVURJIF.mjs} +1 -1
  141. package/dist/y-webrtc-DGVURJIF.mjs.br +0 -0
  142. package/dist/y-webrtc-DGVURJIF.mjs.gz +0 -0
  143. package/dist/{y-webrtc-QCZF75JW.js → y-webrtc-YN53KW3J.js} +5 -5
  144. package/dist/y-webrtc-YN53KW3J.js.br +0 -0
  145. package/dist/y-webrtc-YN53KW3J.js.gz +0 -0
  146. package/dist/{y-websocket-QJEM6VOB.js → y-websocket-HZCIQLM6.js} +1 -1
  147. package/dist/y-websocket-HZCIQLM6.js.br +0 -0
  148. package/dist/y-websocket-HZCIQLM6.js.gz +0 -0
  149. package/dist/{y-websocket-57Q3RNHC.mjs → y-websocket-P5LTAJ5T.mjs} +1 -1
  150. package/dist/y-websocket-P5LTAJ5T.mjs.br +0 -0
  151. package/dist/y-websocket-P5LTAJ5T.mjs.gz +0 -0
  152. package/dist/{yjs-Y7IYUWOG.mjs → yjs-FKGX4QHS.mjs} +1 -1
  153. package/dist/yjs-FKGX4QHS.mjs.br +0 -0
  154. package/dist/yjs-FKGX4QHS.mjs.gz +0 -0
  155. package/dist/{yjs-UH3EPF3C.js → yjs-HBLSEMHP.js} +1 -1
  156. package/dist/yjs-HBLSEMHP.js.br +0 -0
  157. package/dist/yjs-HBLSEMHP.js.gz +0 -0
  158. package/package.json +19 -7
  159. package/dist/GLTFLoader-GP55DVVS.js.br +0 -0
  160. package/dist/GLTFLoader-GP55DVVS.js.gz +0 -0
  161. package/dist/GLTFLoader-NMAS6VRH.mjs.br +0 -0
  162. package/dist/GLTFLoader-NMAS6VRH.mjs.gz +0 -0
  163. package/dist/Model3DScene-DZFYJPUH.mjs.br +0 -0
  164. package/dist/Model3DScene-DZFYJPUH.mjs.gz +0 -0
  165. package/dist/Model3DScene-SP6WOKSX.js.gz +0 -0
  166. package/dist/OrbitControls-F5XPYD2Z.mjs.br +0 -0
  167. package/dist/OrbitControls-VH6KILH7.js.br +0 -2
  168. package/dist/OrbitControls-VH6KILH7.js.gz +0 -0
  169. package/dist/PowerPointViewer-CnADroqZ.d.ts.map +0 -1
  170. package/dist/SmartArt3DScene-HCQBDRAM.js.br +0 -0
  171. package/dist/SmartArt3DScene-HCQBDRAM.js.gz +0 -0
  172. package/dist/SmartArt3DScene-WQIDFZ7X.mjs.br +0 -0
  173. package/dist/SmartArt3DScene-WQIDFZ7X.mjs.gz +0 -0
  174. package/dist/SurfaceChart3DScene-54BRNPQ5.mjs.gz +0 -0
  175. package/dist/SurfaceChart3DScene-GISPZ4C2.js.br +0 -0
  176. package/dist/SurfaceChart3DScene-GISPZ4C2.js.gz +0 -0
  177. package/dist/animation-timeline-CEJJLFqK.d.ts.map +0 -1
  178. package/dist/chunk-2EFVXYNA.js.br +0 -0
  179. package/dist/chunk-2EFVXYNA.js.gz +0 -0
  180. package/dist/chunk-5VYVKFMS.js.br +0 -0
  181. package/dist/chunk-5VYVKFMS.js.gz +0 -0
  182. package/dist/chunk-6DZX6EAA.mjs.br +0 -0
  183. package/dist/chunk-6DZX6EAA.mjs.gz +0 -0
  184. package/dist/chunk-6F4WVHS3.js.br +0 -0
  185. package/dist/chunk-6F4WVHS3.js.gz +0 -0
  186. package/dist/chunk-7FE27DDH.js +0 -18559
  187. package/dist/chunk-7FE27DDH.js.br +0 -0
  188. package/dist/chunk-7FE27DDH.js.gz +0 -0
  189. package/dist/chunk-FWF2SP6N.js.br +0 -0
  190. package/dist/chunk-FWF2SP6N.js.gz +0 -0
  191. package/dist/chunk-M3SIFXWD.mjs.br +0 -0
  192. package/dist/chunk-M3SIFXWD.mjs.gz +0 -0
  193. package/dist/chunk-P72VQ7WE.mjs.br +0 -0
  194. package/dist/chunk-P72VQ7WE.mjs.gz +0 -0
  195. package/dist/chunk-QGM4M3NI.js.br +0 -0
  196. package/dist/chunk-QGM4M3NI.js.gz +0 -0
  197. package/dist/chunk-TPG2WKHQ.mjs.br +0 -0
  198. package/dist/chunk-TPG2WKHQ.mjs.gz +0 -0
  199. package/dist/chunk-UYNOPUSG.mjs.br +0 -0
  200. package/dist/chunk-UYNOPUSG.mjs.gz +0 -0
  201. package/dist/chunk-VUC3UPLM.mjs.br +0 -0
  202. package/dist/chunk-VUC3UPLM.mjs.gz +0 -0
  203. package/dist/dist-QNYKM7YS.mjs +0 -2
  204. package/dist/dist-QNYKM7YS.mjs.br +0 -0
  205. package/dist/dist-QNYKM7YS.mjs.gz +0 -0
  206. package/dist/dist-QU6JIDAF.js.br +0 -0
  207. package/dist/dist-QU6JIDAF.js.gz +0 -0
  208. package/dist/hooks-unstable.d.ts.map +0 -1
  209. package/dist/hooks-unstable.js.br +0 -0
  210. package/dist/hooks-unstable.js.gz +0 -0
  211. package/dist/hooks-unstable.mjs.br +0 -0
  212. package/dist/hooks-unstable.mjs.gz +0 -0
  213. package/dist/index-DWvM1PBB.d.ts.map +0 -1
  214. package/dist/three.module-7CXEVRKB.mjs.br +0 -0
  215. package/dist/three.module-7CXEVRKB.mjs.gz +0 -0
  216. package/dist/three.module-CPZZFD2Q.js.br +0 -0
  217. package/dist/three.module-CPZZFD2Q.js.gz +0 -0
  218. package/dist/useViewerBuildingBlocks-ll3_ncCH.d.ts.map +0 -1
  219. package/dist/y-webrtc-6CRYHAXH.mjs.br +0 -0
  220. package/dist/y-webrtc-6CRYHAXH.mjs.gz +0 -0
  221. package/dist/y-webrtc-QCZF75JW.js.br +0 -0
  222. package/dist/y-webrtc-QCZF75JW.js.gz +0 -0
  223. package/dist/y-websocket-57Q3RNHC.mjs.br +0 -0
  224. package/dist/y-websocket-57Q3RNHC.mjs.gz +0 -0
  225. package/dist/y-websocket-QJEM6VOB.js.br +0 -0
  226. package/dist/y-websocket-QJEM6VOB.js.gz +0 -0
  227. package/dist/yjs-UH3EPF3C.js.br +0 -0
  228. package/dist/yjs-UH3EPF3C.js.gz +0 -0
  229. package/dist/yjs-Y7IYUWOG.mjs.br +0 -0
  230. package/dist/yjs-Y7IYUWOG.mjs.gz +0 -0
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import React__default, { RefObject } from 'react';
3
+ import { LanguageModel, ChatTransport, UIMessage, ToolSet } from 'ai';
3
4
  import * as Y from 'yjs';
4
5
  import { Doc } from 'yjs';
5
6
 
@@ -207,6 +208,13 @@ interface PptxShapeLocks {
207
208
  noAdjustHandles?: boolean;
208
209
  noChangeArrowheads?: boolean;
209
210
  noChangeShapeType?: boolean;
211
+ /**
212
+ * Text-box flag from `p:cNvSpPr/@txBox`. Not a lock in the strict sense,
213
+ * but it lives on the same non-visual-properties node as `a:spLocks`, so
214
+ * it is captured here to round-trip through the model. When `true` the
215
+ * shape is a plain text box (no fill/line by default).
216
+ */
217
+ txBox?: boolean;
210
218
  }
211
219
  /**
212
220
  * A drawing guide parsed from OOXML extension lists.
@@ -796,6 +804,15 @@ interface ShapeStyle {
796
804
  r: number;
797
805
  b: number;
798
806
  };
807
+ /** Raw tileRect LTRB values (0..1 fractions, may be negative) from
808
+ * `a:gradFill/a:tileRect`. Defines the rectangle the gradient tile occupies
809
+ * before any flip/tiling is applied. */
810
+ fillGradientTileRect?: {
811
+ l: number;
812
+ t: number;
813
+ r: number;
814
+ b: number;
815
+ };
799
816
  /** Gradient tile flip mode (`a:gradFill/@flip`).
800
817
  * `none` = no tiling flip (default), `x|y|xy` = mirror in the named axis. */
801
818
  fillGradientFlip?: 'none' | 'x' | 'y' | 'xy';
@@ -813,6 +830,20 @@ interface ShapeStyle {
813
830
  * round-trip serialisation. See {@link fillColorXml} for the rationale.
814
831
  */
815
832
  strokeColorXml?: XmlObject;
833
+ /**
834
+ * Kind of fill painted on the outline (`a:ln` child). Distinguishes a solid
835
+ * outline from a gradient/pattern/none outline so save can emit the correct
836
+ * single line fill instead of collapsing every outline to `a:solidFill`
837
+ * (which, alongside a preserved `a:gradFill`/`a:pattFill`, produces an
838
+ * invalid dual-fill `<a:ln>`).
839
+ */
840
+ strokeFillMode?: 'solid' | 'gradient' | 'pattern' | 'none';
841
+ /** Raw `a:ln/a:gradFill` XML preserved for round-trip when the outline is
842
+ * gradient-filled. Re-emitted verbatim as the line's single fill on save. */
843
+ strokeGradientXml?: XmlObject;
844
+ /** Raw `a:ln/a:pattFill` XML preserved for round-trip when the outline is
845
+ * pattern-filled. Re-emitted verbatim as the line's single fill on save. */
846
+ strokePatternXml?: XmlObject;
816
847
  strokeWidth?: number;
817
848
  strokeOpacity?: number;
818
849
  strokeDash?: StrokeDashType;
@@ -994,6 +1025,14 @@ interface ShapeStyle {
994
1025
  };
995
1026
  /** Fill overlay blend mode from effectDag `a:fillOverlay/@blend`. */
996
1027
  dagFillOverlayBlend?: 'over' | 'mult' | 'screen' | 'darken' | 'lighten';
1028
+ /**
1029
+ * Fill overlay tint colour (hex `#RRGGBB`) from effectDag `a:fillOverlay`'s
1030
+ * `a:solidFill`/`a:gradFill`. Painted as a blended overlay layer over the
1031
+ * element; the blend mode comes from {@link dagFillOverlayBlend}.
1032
+ */
1033
+ dagFillOverlayColor?: string;
1034
+ /** Fill overlay tint opacity (0-1), from the overlay fill colour's alpha. */
1035
+ dagFillOverlayOpacity?: number;
997
1036
  /** `<a:lnRef @idx>` — 1-based index into the theme's lnStyleLst. */
998
1037
  lnRefIdx?: number;
999
1038
  /** Raw XML colour child of `<a:lnRef>` (e.g. `<a:schemeClr>` with transforms). */
@@ -1121,6 +1160,13 @@ interface TextStyle {
1121
1160
  kerning?: number;
1122
1161
  /** Text highlight colour as hex string (`a:highlight`). */
1123
1162
  highlightColor?: string;
1163
+ /**
1164
+ * Raw colour-choice XML preserved from `a:highlight` so a themed highlight
1165
+ * (`a:schemeClr` / `a:sysClr` / `a:prstClr`) re-emits with its original
1166
+ * identity rather than being flattened to `<a:srgbClr/>` on save. On save we
1167
+ * re-emit verbatim when the resolved {@link highlightColor} still matches.
1168
+ */
1169
+ highlightColorXml?: XmlObject;
1124
1170
  /** Text-level gradient fill CSS string (from `a:rPr > a:gradFill`). */
1125
1171
  textFillGradient?: string;
1126
1172
  /** Structured gradient stops for text fill round-trip serialization. */
@@ -1232,10 +1278,36 @@ interface TextStyle {
1232
1278
  eastAsiaFont?: string;
1233
1279
  /** Complex Script font family from `a:cs`. */
1234
1280
  complexScriptFont?: string;
1281
+ /**
1282
+ * Theme-font token (`+mj-lt` / `+mn-lt` / ...) authored on `a:latin`, when
1283
+ * present. {@link fontFamily} holds the resolved concrete face for
1284
+ * rendering; this preserves the token linkage so the writer re-emits the
1285
+ * token rather than the flattened face (see #84).
1286
+ */
1287
+ latinFontThemeToken?: string;
1288
+ /** Theme-font token authored on `a:ea` (e.g. `+mn-ea`), when present. */
1289
+ eastAsiaFontThemeToken?: string;
1290
+ /** Theme-font token authored on `a:cs` (e.g. `+mn-cs`), when present. */
1291
+ complexScriptFontThemeToken?: string;
1292
+ /**
1293
+ * Automatic per-script fallback face resolved from the theme's
1294
+ * `<a:font script="...">` overrides for a run whose text is dominantly
1295
+ * CJK / Arabic / Hebrew / Thai (see #83). A rendering hint only: it is not
1296
+ * serialised back on save, so it never disturbs the round-trip typefaces.
1297
+ */
1298
+ scriptFallbackFont?: string;
1235
1299
  /** Text language from `a:rPr/@lang`. */
1236
1300
  language?: string;
1237
1301
  /** Hyperlink mouse-over target from `a:hlinkMouseOver`. */
1238
1302
  hyperlinkMouseOver?: string;
1303
+ /**
1304
+ * Raw `a:snd` (embedded WAV audio) child of `a:hlinkClick`, preserved
1305
+ * verbatim (carries `@r:embed` + `@name`). Round-tripped on save so the
1306
+ * click sound survives instead of being dropped.
1307
+ */
1308
+ hyperlinkSoundXml?: XmlObject;
1309
+ /** Raw `a:snd` child of `a:hlinkMouseOver`, preserved verbatim for round-trip. */
1310
+ hyperlinkMouseOverSoundXml?: XmlObject;
1239
1311
  /** Hyperlink invalidUrl attribute (`a:hlinkClick/@invalidUrl`). */
1240
1312
  hyperlinkInvalidUrl?: string;
1241
1313
  /** Hyperlink target frame (`a:hlinkClick/@tgtFrame`). */
@@ -1579,6 +1651,15 @@ interface TextSegment {
1579
1651
  * on the first segment of a paragraph.
1580
1652
  */
1581
1653
  endParaRunProperties?: Record<string, unknown>;
1654
+ /**
1655
+ * Per-paragraph properties (alignment, spacing, margins, indent, tab stops,
1656
+ * rtl) authored on this paragraph's own `a:pPr` (#69). Only meaningful on
1657
+ * the first segment of a paragraph. When present, the writer emits these
1658
+ * per paragraph instead of collapsing one shape-level pPr onto every
1659
+ * paragraph. Only the paragraph-geometry keys of {@link TextStyle} are
1660
+ * populated; unrelated fields fall back to the shape-level style.
1661
+ */
1662
+ paragraphProperties?: TextStyle;
1582
1663
  /**
1583
1664
  * Phonetic annotation text from `a:ruby > a:rt` (e.g. furigana, pinyin).
1584
1665
  * When present, the renderer should wrap the base text with an HTML `<ruby>` tag.
@@ -1884,6 +1965,75 @@ interface PptxChartProtection {
1884
1965
  rawXml?: XmlObject;
1885
1966
  }
1886
1967
  //#endregion
1968
+ //#region src/core/types/chart-user-shapes.d.ts
1969
+ /**
1970
+ * Types for chart drawing-overlay shapes (`c:userShapes`).
1971
+ *
1972
+ * A chart's `c:userShapes` element carries an `r:id` that references a
1973
+ * separate drawing part (`ppt/drawings/drawingN.xml`) whose root is a
1974
+ * `c:userShapes` element populated with `cdr:relSizeAnchor` /
1975
+ * `cdr:absSizeAnchor` wrappers around `sp` / `pic` / `cxnSp` shapes drawn on
1976
+ * top of the chart plot. These interfaces describe the parsed, renderable
1977
+ * overlay model. The raw reference is preserved separately on
1978
+ * {@link PptxChartData.userShapesXml} for verbatim round-trip save; this model
1979
+ * is render-only.
1980
+ *
1981
+ * @module pptx-types/chart-user-shapes
1982
+ */
1983
+ /** A single paragraph of overlay-shape text with light formatting. */
1984
+ interface PptxChartUserShapeParagraph {
1985
+ /** Joined run text of the paragraph. */
1986
+ text: string;
1987
+ /** Font size in points (`a:rPr/@sz` divided by 100), when present. */
1988
+ fontSize?: number;
1989
+ /** Whether the first run is bold (`a:rPr/@b`). */
1990
+ bold?: boolean;
1991
+ /** Whether the first run is italic (`a:rPr/@i`). */
1992
+ italic?: boolean;
1993
+ /** Resolved run colour hex (e.g. `"#FF0000"`), when present. */
1994
+ color?: string;
1995
+ /** Paragraph alignment (`a:pPr/@algn`): left / centre / right. */
1996
+ align?: 'l' | 'ctr' | 'r';
1997
+ }
1998
+ /**
1999
+ * A parsed chart-overlay shape positioned by a drawing anchor.
2000
+ *
2001
+ * Position is expressed as chart-relative fractions in {@link from}. For a
2002
+ * `relSizeAnchor` the opposite corner is {@link to} (also fractional); for an
2003
+ * `absSizeAnchor` the extent is {@link ext} in EMU.
2004
+ */
2005
+ interface PptxChartUserShape {
2006
+ /** Shape kind: text/preset shape, connector, or picture. */
2007
+ kind: 'sp' | 'cxnSp' | 'pic';
2008
+ /** Anchor kind that positioned the shape. */
2009
+ anchor: 'rel' | 'abs';
2010
+ /** Top-left corner as chart-relative fractions (0-1). */
2011
+ from: {
2012
+ x: number;
2013
+ y: number;
2014
+ };
2015
+ /** Bottom-right corner as chart-relative fractions (0-1); relSizeAnchor only. */
2016
+ to?: {
2017
+ x: number;
2018
+ y: number;
2019
+ };
2020
+ /** Extent in EMU (cx, cy); absSizeAnchor only. */
2021
+ ext?: {
2022
+ cx: number;
2023
+ cy: number;
2024
+ };
2025
+ /** Preset geometry name (`a:prstGeom/@prst`), defaulting to `"rect"`. */
2026
+ prst?: string;
2027
+ /** Resolved solid-fill hex colour, when present. */
2028
+ fill?: string;
2029
+ /** Resolved line/stroke hex colour, when present. */
2030
+ stroke?: string;
2031
+ /** Line width in points (`a:ln/@w` divided by 12700), when present. */
2032
+ strokeWidth?: number;
2033
+ /** Text paragraphs of the shape's `txBody`, when present. */
2034
+ paragraphs?: PptxChartUserShapeParagraph[];
2035
+ }
2036
+ //#endregion
1887
2037
  //#region src/core/types/chart.d.ts
1888
2038
  /**
1889
2039
  * Supported chart type discriminators.
@@ -2217,6 +2367,15 @@ interface PptxChartTreemapOptions {
2217
2367
  interface PptxChartSeries {
2218
2368
  name: string;
2219
2369
  values: number[];
2370
+ /**
2371
+ * Blank-value mask aligned index-for-index with {@link values}: `true` marks
2372
+ * a category whose numeric cache point (`c:numCache/c:pt`) was absent or
2373
+ * empty, i.e. a genuine blank rather than a real `0`. Present only when the
2374
+ * source series actually contains blanks; when set, blank slots in
2375
+ * {@link values} carry `0` as a placeholder. Renderers honour
2376
+ * `c:dispBlanksAs` (gap / zero / span) using this mask.
2377
+ */
2378
+ blanks?: boolean[];
2220
2379
  color?: string;
2221
2380
  trendlines?: PptxChartTrendline[];
2222
2381
  errBars?: PptxChartErrBars[];
@@ -2224,6 +2383,18 @@ interface PptxChartSeries {
2224
2383
  marker?: PptxChartMarker;
2225
2384
  dataLabels?: PptxChartDataLabel[];
2226
2385
  explosion?: number;
2386
+ /**
2387
+ * Series-level `c:invertIfNegative`: when true, bar/column data points with a
2388
+ * negative value are drawn with an inverted (lightened) fill. A per-point
2389
+ * `c:dPt/c:invertIfNegative` overrides this for that point. Absent when the
2390
+ * source XML omits the flag.
2391
+ */
2392
+ invertIfNegative?: boolean;
2393
+ /**
2394
+ * Whether this line/scatter series is drawn with bezier smoothing
2395
+ * (`c:ser/c:smooth/@val`). Absent when the source XML omits `c:smooth`.
2396
+ */
2397
+ smooth?: boolean;
2227
2398
  /** Axis ID this series is plotted against (links to PptxChartAxisFormatting.axisId). */
2228
2399
  axisId?: number;
2229
2400
  /**
@@ -2426,6 +2597,14 @@ interface PptxChartManualLayout {
2426
2597
  y?: number;
2427
2598
  width?: number;
2428
2599
  height?: number;
2600
+ /**
2601
+ * Raw `c:extLst` (CT_ExtensionList) of the `c:manualLayout`, captured
2602
+ * verbatim so it round-trips through the typed model. Without this, a dirty
2603
+ * write of an edited layout would drop the extension list (the manual node
2604
+ * is rebuilt from the typed fields). Emitted as the trailing child, matching
2605
+ * the CT_ManualLayout schema order.
2606
+ */
2607
+ ext?: XmlObject;
2429
2608
  }
2430
2609
  /**
2431
2610
  * Typed manual layouts for chart regions that accept `c:layout`.
@@ -2490,6 +2669,33 @@ interface PptxChartData {
2490
2669
  style?: PptxChartStyle;
2491
2670
  /** Grouping mode for bar/area/line charts: 'clustered' | 'stacked' | 'percentStacked' */
2492
2671
  grouping?: 'clustered' | 'stacked' | 'percentStacked';
2672
+ /**
2673
+ * Whether the first (or only) series varies its point colours
2674
+ * (`c:varyColors/@val`). Pie/doughnut default this on; single-series
2675
+ * bar/column honour it by giving each point a distinct palette colour.
2676
+ * Absent when the source XML omits `c:varyColors`.
2677
+ */
2678
+ varyColors?: boolean;
2679
+ /**
2680
+ * Pie/doughnut start angle in degrees clockwise from 12 o'clock
2681
+ * (`c:firstSliceAng/@val`, 0 through 360). Absent uses the default 0.
2682
+ */
2683
+ firstSliceAngle?: number;
2684
+ /**
2685
+ * Doughnut hole diameter as a percentage of the outer diameter
2686
+ * (`c:holeSize/@val`, 10 through 90). Absent uses the renderer default.
2687
+ */
2688
+ doughnutHoleSize?: number;
2689
+ /**
2690
+ * Bar/column gap between category clusters as a percentage of bar width
2691
+ * (`c:gapWidth/@val`, 0 through 500). Absent uses the renderer default.
2692
+ */
2693
+ barGapWidth?: number;
2694
+ /**
2695
+ * Clustered bar/column overlap between series within a category as a
2696
+ * percentage (`c:overlap/@val`, -100 through 100). Absent uses 0.
2697
+ */
2698
+ barOverlap?: number;
2493
2699
  /** Internal: path to the chart XML part in the PPTX archive (for round-trip save). */
2494
2700
  chartPartPath?: string;
2495
2701
  /** Internal: relationship ID linking the graphic frame to the chart part. */
@@ -2590,6 +2796,15 @@ interface PptxChartData {
2590
2796
  * attempting to parse the nested drawing tree.
2591
2797
  */
2592
2798
  userShapesXml?: unknown;
2799
+ /**
2800
+ * Parsed, renderable drawing-overlay shapes resolved from the separate
2801
+ * drawing part referenced by `c:userShapes/@r:id`
2802
+ * (`ppt/drawings/drawingN.xml`). Each entry carries chart-relative anchor
2803
+ * geometry plus light shape/text formatting so the viewer can render an
2804
+ * overlay on top of the chart plot. Render-only: {@link userShapesXml}
2805
+ * remains the source of truth for round-trip save.
2806
+ */
2807
+ userShapes?: PptxChartUserShape[];
2593
2808
  /**
2594
2809
  * Raw `c:pivotFmts` XML subtree preserved verbatim.
2595
2810
  *
@@ -3297,6 +3512,18 @@ interface PptxSmartArtColorTransform extends PptxSmartArtDefinitionMetadata {
3297
3512
  fillColors: string[];
3298
3513
  /** Ordered resolved line colors for rendering. */
3299
3514
  lineColors: string[];
3515
+ /** Ordered resolved text-fill colors (primary styleLbl `txFillClrLst`). */
3516
+ textFillColors?: string[];
3517
+ /** Ordered resolved text-line colors (primary styleLbl `txLinClrLst`). */
3518
+ textLineColors?: string[];
3519
+ /** Ordered resolved effect colors (primary styleLbl `effectClrLst`). */
3520
+ effectColors?: string[];
3521
+ /** Ordered resolved text-effect colors (primary styleLbl `txEffectClrLst`). */
3522
+ textEffectColors?: string[];
3523
+ /** Fill-list span/cycle + hue-direction interpolation of the primary styleLbl. */
3524
+ fillInterpolation?: PptxSmartArtColorListMetadata;
3525
+ /** Line-list span/cycle + hue-direction interpolation of the primary styleLbl. */
3526
+ lineInterpolation?: PptxSmartArtColorListMetadata;
3300
3527
  /** Ordered CT_CTStyleLabel metadata. */
3301
3528
  labels?: PptxSmartArtColorStyleLabel[];
3302
3529
  }
@@ -3485,6 +3712,40 @@ interface PptxSmartArtChrome {
3485
3712
  /** Outline stroke width in points. */
3486
3713
  outlineWidth?: number;
3487
3714
  }
3715
+ /**
3716
+ * Presentation layout variables from `dgm:prSet/dgm:presLayoutVars` (data model)
3717
+ * or `dgm:varLst` (layout definition defaults).
3718
+ *
3719
+ * These drive how the DiagramML layout interpreter arranges points: flow
3720
+ * direction, hierarchy branch style, org-chart mode, and child count limits.
3721
+ * The fallback layout engine can consult them for direction/org-chart hints.
3722
+ *
3723
+ * @example
3724
+ * ```ts
3725
+ * const vars: PptxSmartArtPresLayoutVars = { direction: "rev", orgChart: true };
3726
+ * // => satisfies PptxSmartArtPresLayoutVars
3727
+ * ```
3728
+ */
3729
+ interface PptxSmartArtPresLayoutVars {
3730
+ /** Flow direction (`dgm:dir`): "norm" (default) or "rev" (reversed/RTL). */
3731
+ direction?: 'norm' | 'rev';
3732
+ /** Hierarchy branch style (`dgm:hierBranch`): std/init/l/r/hang. */
3733
+ hierarchyBranch?: 'std' | 'init' | 'l' | 'r' | 'hang';
3734
+ /** Org-chart mode enabled (`dgm:orgChart`). */
3735
+ orgChart?: boolean;
3736
+ /** Maximum children per node (`dgm:chMax`, -1 = unbounded). */
3737
+ childMax?: number;
3738
+ /** Preferred children per node (`dgm:chPref`, -1 = unbounded). */
3739
+ childPreferred?: number;
3740
+ /** Whether bullets are enabled (`dgm:bulletEnabled`). */
3741
+ bulletEnabled?: boolean;
3742
+ /** Animation-by-level setting (`dgm:animLvl`). */
3743
+ animationLevel?: string;
3744
+ /** Animate-one setting (`dgm:animOne`). */
3745
+ animateOne?: string;
3746
+ /** Allowed resize handles (`dgm:resizeHandles`). */
3747
+ resizeHandles?: string;
3748
+ }
3488
3749
  /**
3489
3750
  * Complete parsed SmartArt data for a {@link SmartArtPptxElement}.
3490
3751
  *
@@ -3526,6 +3787,12 @@ interface PptxSmartArtData {
3526
3787
  quickStyle?: PptxSmartArtQuickStyle;
3527
3788
  /** Editable metadata from the related DiagramML layout definition. */
3528
3789
  layoutDefinition?: PptxSmartArtLayoutDefinition;
3790
+ /**
3791
+ * Presentation layout variables (direction, hierarchy branch, org-chart,
3792
+ * child limits, bullets) from `dgm:presLayoutVars` / layout `dgm:varLst`.
3793
+ * Consulted by the fallback layout engine for direction/org-chart hints.
3794
+ */
3795
+ presLayoutVars?: PptxSmartArtPresLayoutVars;
3529
3796
  /** Relationship ID for the diagram data part (for round-trip save). */
3530
3797
  dataRelId?: string;
3531
3798
  /** Relationship ID for the diagram layout part. */
@@ -3558,7 +3825,7 @@ interface PptxSmartArtData {
3558
3825
  /**
3559
3826
  * Per-cell visual style for a table cell.
3560
3827
  *
3561
- * All fields are optional unset values inherit from the table style.
3828
+ * All fields are optional - unset values inherit from the table style.
3562
3829
  *
3563
3830
  * @example
3564
3831
  * ```ts
@@ -3686,6 +3953,52 @@ interface PptxTableCellStyle {
3686
3953
  patternFillForeground?: string;
3687
3954
  /** Pattern fill background colour. */
3688
3955
  patternFillBackground?: string;
3956
+ /**
3957
+ * Cell 3D bevel + lighting from `a:tcPr/a:cell3D` (CT_Cell3D,
3958
+ * ECMA-376 §21.1.3.1). Rendered as a CSS bevel treatment.
3959
+ */
3960
+ cell3D?: PptxTableCell3D;
3961
+ /**
3962
+ * `a:tcPr/@anchorCtr` - centre the text block in the direction
3963
+ * perpendicular to the text flow (horizontal centring for horizontal text).
3964
+ */
3965
+ anchorCtr?: boolean;
3966
+ /**
3967
+ * `a:tcPr/@horzOverflow` (ST_TextHorzOverflowType): `clip` clips text at
3968
+ * the cell edge, `overflow` (the default) lets it spill.
3969
+ */
3970
+ horzOverflow?: 'clip' | 'overflow';
3971
+ }
3972
+ /**
3973
+ * Cell 3D bevel + lighting parsed from `a:tcPr/a:cell3D` (CT_Cell3D).
3974
+ *
3975
+ * Only the fields needed to render a plausible bevel treatment are captured;
3976
+ * verbatim round-trip of the full node is handled separately by the save path.
3977
+ *
3978
+ * @example
3979
+ * ```ts
3980
+ * const c3d: PptxTableCell3D = {
3981
+ * bevelWidth: 8,
3982
+ * bevelHeight: 8,
3983
+ * bevelPreset: 'circle',
3984
+ * material: 'plastic',
3985
+ * };
3986
+ * // => satisfies PptxTableCell3D
3987
+ * ```
3988
+ */
3989
+ interface PptxTableCell3D {
3990
+ /** Bevel width in px (from `a:bevel@w`, EMU converted). */
3991
+ bevelWidth?: number;
3992
+ /** Bevel height in px (from `a:bevel@h`, EMU converted). */
3993
+ bevelHeight?: number;
3994
+ /** Bevel preset name (`a:bevel@prst`, e.g. `circle`, `relaxedInset`). */
3995
+ bevelPreset?: string;
3996
+ /** Preset material (`a:cell3D@prstMaterial`, e.g. `plastic`, `metal`). */
3997
+ material?: string;
3998
+ /** Light rig type (`a:lightRig@rig`, e.g. `threePt`, `soft`). */
3999
+ lightRig?: string;
4000
+ /** Light rig direction (`a:lightRig@dir`, e.g. `tl`, `t`, `tr`). */
4001
+ lightRigDirection?: string;
3689
4002
  }
3690
4003
  /**
3691
4004
  * A single table cell with text content, optional style, and merge info.
@@ -3798,12 +4111,50 @@ interface PptxTableData {
3798
4111
  * ```
3799
4112
  */
3800
4113
  interface ParsedTableStyleFill {
3801
- /** Theme colour key (e.g. `accent1`, `dk1`). */
4114
+ /**
4115
+ * Theme colour key (e.g. `accent1`, `dk1`). Empty string when the fill is a
4116
+ * non-scheme fill (explicit sRGB, gradient, pattern, or none) that carries
4117
+ * no theme colour reference; the renderer then resolves {@link color},
4118
+ * {@link gradient}, {@link pattern}, or {@link noFill} instead.
4119
+ */
3802
4120
  schemeColor: string;
3803
4121
  /** Tint value (0-100 000). */
3804
4122
  tint?: number;
3805
4123
  /** Shade value (0-100 000). */
3806
4124
  shade?: number;
4125
+ /** Explicit sRGB hex colour (e.g. `#FF8800`) from `a:srgbClr`. */
4126
+ color?: string;
4127
+ /** The fill was `a:noFill`: renders transparent and clears lower layers. */
4128
+ noFill?: boolean;
4129
+ /** Gradient fill parsed from `a:gradFill`. */
4130
+ gradient?: ParsedTableStyleGradient;
4131
+ /** Preset pattern fill parsed from `a:pattFill`. */
4132
+ pattern?: ParsedTableStylePattern;
4133
+ }
4134
+ /** A single colour stop within a {@link ParsedTableStyleGradient}. */
4135
+ interface ParsedTableStyleGradientStop {
4136
+ /** Stop position as a percentage (0-100). */
4137
+ position: number;
4138
+ /** Stop colour (scheme or explicit sRGB). */
4139
+ fill: ParsedTableStyleFill;
4140
+ }
4141
+ /** A gradient fill parsed from a table style section's `a:gradFill`. */
4142
+ interface ParsedTableStyleGradient {
4143
+ /** Ordered colour stops. */
4144
+ stops: ParsedTableStyleGradientStop[];
4145
+ /** Linear gradient angle in degrees (from `a:lin@ang`, 60000ths -> deg). */
4146
+ angle?: number;
4147
+ /** Gradient family: linear (`a:lin`) or radial (`a:path`). */
4148
+ type: 'linear' | 'radial';
4149
+ }
4150
+ /** A preset pattern fill parsed from a table style section's `a:pattFill`. */
4151
+ interface ParsedTableStylePattern {
4152
+ /** OOXML preset name (e.g. `ltDnDiag`) from `a:pattFill@prst`. */
4153
+ preset: string;
4154
+ /** Foreground colour (`a:fgClr`). */
4155
+ foreground?: ParsedTableStyleFill;
4156
+ /** Background colour (`a:bgClr`). */
4157
+ background?: ParsedTableStyleFill;
3807
4158
  }
3808
4159
  /**
3809
4160
  * A single entry in the parsed table style map.
@@ -3830,12 +4181,20 @@ interface ParsedTableStyleText {
3830
4181
  bold?: boolean;
3831
4182
  /** Font italic. */
3832
4183
  italic?: boolean;
4184
+ /** Font underline (from `a:tcTxStyle@u`, any value other than `none`). */
4185
+ underline?: boolean;
3833
4186
  /** Font colour as theme scheme key. */
3834
4187
  fontSchemeColor?: string;
3835
4188
  /** Font colour tint (0-100 000). */
3836
4189
  fontTint?: number;
3837
4190
  /** Font colour shade (0-100 000). */
3838
4191
  fontShade?: number;
4192
+ /** Explicit sRGB hex font colour (e.g. `#FF0000`) from `a:srgbClr`. */
4193
+ fontColor?: string;
4194
+ /** Typeface from `a:font@typeface` (latin font). */
4195
+ fontFace?: string;
4196
+ /** Font-collection index from `a:fontRef@idx` (`minor`, `major`, `none`). */
4197
+ fontRefIdx?: string;
3839
4198
  }
3840
4199
  /**
3841
4200
  * A single border side within a table style's `a:tcStyle/a:tcBdr`.
@@ -3863,7 +4222,7 @@ interface ParsedTableStyleBorder {
3863
4222
  fill?: ParsedTableStyleFill;
3864
4223
  /** Explicit hex colour when the line used `a:srgbClr` (e.g. `#808080`). */
3865
4224
  color?: string;
3866
- /** The line was `a:noFill` an explicit "no border" that clears lower layers. */
4225
+ /** The line was `a:noFill` - an explicit "no border" that clears lower layers. */
3867
4226
  noFill?: boolean;
3868
4227
  }
3869
4228
  /**
@@ -4744,6 +5103,19 @@ interface PptxNativeAnimation {
4744
5103
  durationMs?: number;
4745
5104
  /** Delay in milliseconds. */
4746
5105
  delayMs?: number;
5106
+ /**
5107
+ * Acceleration fraction in the range 0..1, parsed from `p:cTn/@accel`
5108
+ * (ST_PositiveFixedPercentage, stored as 1000ths of a percent). A non-zero
5109
+ * value means the effect eases in (starts slow). Absent means no easing-in.
5110
+ */
5111
+ accel?: number;
5112
+ /**
5113
+ * Deceleration fraction in the range 0..1, parsed from `p:cTn/@decel`.
5114
+ * A non-zero value means the effect eases out (ends slow). Absent means no
5115
+ * easing-out. When both {@link accel} and {@link decel} are set, the effect
5116
+ * eases in and out.
5117
+ */
5118
+ decel?: number;
4747
5119
  /** Trigger delay in milliseconds (for afterDelay). */
4748
5120
  triggerDelayMs?: number;
4749
5121
  /** SVG path string for motion path animations (`p:animMotion/@path`). */
@@ -4836,6 +5208,14 @@ interface PptxNativeAnimation {
4836
5208
  * that aren't OLE charts).
4837
5209
  */
4838
5210
  graphicBuild?: string;
5211
+ /**
5212
+ * OLE-embedded chart build attribute (`p:bldOleChart/@bld`) when this
5213
+ * animation stages an OLE chart graphic frame. Values follow
5214
+ * ST_TLOleChartBuildType: `allAtOnce`, `series`, `category`, `seriesEl`,
5215
+ * `categoryEl`. Lets a staged-reveal renderer build the chart by series /
5216
+ * category / element to match PowerPoint, rather than as one whole element.
5217
+ */
5218
+ oleChartBuild?: string;
4839
5219
  /** Schema-accurate `p:bldGraphic/p:bldAsOne|p:bldSub` representation. */
4840
5220
  graphicBuildProperties?: PptxGraphicBuild;
4841
5221
  /**
@@ -5325,6 +5705,18 @@ interface PptxAppProperties {
5325
5705
  template?: string;
5326
5706
  /** Hyperlink base URL. */
5327
5707
  hyperlinkBase?: string;
5708
+ /** Document security bitmask (`<DocSecurity>`). */
5709
+ docSecurity?: number;
5710
+ /** Number of multimedia clips (`<MMClips>`). */
5711
+ mmClips?: number;
5712
+ /** Whether thumbnail images were scaled to fit (`<ScaleCrop>`). */
5713
+ scaleCrop?: boolean;
5714
+ /** Whether hyperlinks are current (`<LinksUpToDate>`). */
5715
+ linksUpToDate?: boolean;
5716
+ /** Whether the document is shared (`<SharedDoc>`). */
5717
+ sharedDoc?: boolean;
5718
+ /** Whether hyperlinks changed since last save (`<HyperlinksChanged>`). */
5719
+ hyperlinksChanged?: boolean;
5328
5720
  }
5329
5721
  //#endregion
5330
5722
  //#region src/core/types/presentation-print-properties.d.ts
@@ -5829,6 +6221,21 @@ interface PptxActiveXControl {
5829
6221
  name?: string;
5830
6222
  /** Shape ID this control is linked to (from @spid). */
5831
6223
  shapeId?: string;
6224
+ /** X position (px) of the control's fallback picture, if present. */
6225
+ x?: number;
6226
+ /** Y position (px) of the control's fallback picture, if present. */
6227
+ y?: number;
6228
+ /** Width (px) of the control's fallback picture, if present. */
6229
+ width?: number;
6230
+ /** Height (px) of the control's fallback picture, if present. */
6231
+ height?: number;
6232
+ /**
6233
+ * Relationship ID of the control's static fallback picture
6234
+ * (`mc:AlternateContent > mc:Fallback > p:pic > p:blipFill > a:blip@r:embed`).
6235
+ * Renderers resolve this to an image so a control shows its last static
6236
+ * frame instead of a blank area (the live ActiveX cannot run in a viewer).
6237
+ */
6238
+ fallbackImageRelId?: string;
5832
6239
  /** Raw XML for round-trip preservation. */
5833
6240
  rawXml?: XmlObject;
5834
6241
  }
@@ -5955,6 +6362,13 @@ interface PptxSlide {
5955
6362
  customerData?: PptxCustomerData[];
5956
6363
  /** ActiveX control references from `p:controls` on this slide. */
5957
6364
  activeXControls?: PptxActiveXControl[];
6365
+ /**
6366
+ * Shapes parsed from a referenced legacy VML drawing part
6367
+ * (`ppt/drawings/vmlDrawing*.vml`, linked via a `legacyDrawing`
6368
+ * relationship). These are read-only render hints: the VML part itself is
6369
+ * preserved verbatim on save, so this field is not re-serialized.
6370
+ */
6371
+ legacyVmlElements?: PptxElement[];
5958
6372
  /** Per-slide header/footer flags from `<p:hf>` (P-H3). */
5959
6373
  headerFooterFlags?: PptxHeaderFooterFlags;
5960
6374
  /** Server-backed slide synchronization metadata stored in a related OPC part. */
@@ -6063,12 +6477,6 @@ interface PptxPresentationProperties {
6063
6477
  showSubtitles?: boolean;
6064
6478
  /** Typed `p:prnPr` settings. Set to null during save to remove the element. */
6065
6479
  printProperties?: PptxPresentationPrintProperties | null;
6066
- /** @deprecated Use `printProperties.printWhat`; retained as a handout compatibility alias. */
6067
- printSlidesPerPage?: number;
6068
- /** @deprecated Use `printProperties.frameSlides`. */
6069
- printFrameSlides?: boolean;
6070
- /** @deprecated Use `printProperties.colorMode`. */
6071
- printColorMode?: 'clr' | 'gray' | 'bw';
6072
6480
  /** Most-recently-used colours from the presentation palette. */
6073
6481
  mruColors?: string[];
6074
6482
  /** Grid spacing in EMUs (cx, cy). Default is 914400 / 8 = 114300. */
@@ -8010,6 +8418,20 @@ interface ViewerFontSource {
8010
8418
  weight?: string | number;
8011
8419
  style?: 'normal' | 'italic';
8012
8420
  }
8421
+ /**
8422
+ * Store PPTX content bytes so the audience tab can retrieve them.
8423
+ * Called by the presenter before opening the audience window.
8424
+ */
8425
+ declare function storeAudienceContent(content: ArrayBuffer | Uint8Array, sessionId?: string): Promise<void>;
8426
+ /**
8427
+ * Load PPTX content bytes stored by the presenter tab.
8428
+ * Returns `null` if nothing is stored.
8429
+ */
8430
+ declare function loadAudienceContent(sessionId?: string): Promise<Uint8Array | null>;
8431
+ /**
8432
+ * Remove stored audience content (cleanup).
8433
+ */
8434
+ declare function clearAudienceContent(sessionId?: string): Promise<void>;
8013
8435
  /** In-memory clipboard payload stored when an element is copied or cut. */
8014
8436
  interface ElementClipboardPayload {
8015
8437
  element: PptxElement;
@@ -8218,6 +8640,228 @@ interface ShapeQuickStyle {
8218
8640
  style: Partial<ShapeStyle>;
8219
8641
  }
8220
8642
  //#endregion
8643
+ //#region ../shared/dist/ai/index.d.ts
8644
+ //#endregion
8645
+ //#region src/ai/change-animator.d.ts
8646
+ /** Host-tunable options for how AI edits are animated on the canvas. */
8647
+ interface AiChangeAnimationConfig {
8648
+ /** Master switch. Default true. */
8649
+ enabled?: boolean;
8650
+ /** How long the motion + glow plays, in ms. Default 900. */
8651
+ durationMs?: number;
8652
+ /** Draw the pulsing glow highlight on changed elements. Default true. */
8653
+ glow?: boolean;
8654
+ /** Glide old->new bounds and cross-fade colours. Default true. */
8655
+ tween?: boolean;
8656
+ /** Accent colour (any CSS colour) for the glow/ghosts. Default a blue. */
8657
+ color?: string;
8658
+ }
8659
+ //#endregion
8660
+ //#region src/ai/config.d.ts
8661
+ /** The UI message shape exchanged with the assistant. Alias of the SDK type. */
8662
+ type PptxAiUIMessage = UIMessage;
8663
+ /**
8664
+ * Canonical name of every tool the assistant can call. Document tools mirror the
8665
+ * `pptx-viewer-mcp` server exactly (they ARE the same functions, run against the
8666
+ * live deck); the viewer-only tools (navigation, deck outline, element/notes
8667
+ * readers, table merge) have no MCP counterpart.
8668
+ */
8669
+ type PptxAiToolName = 'get_deck_overview' | 'get_slide' | 'get_element' | 'get_speaker_notes' | 'find_text' | 'get_theme' | 'go_to_slide' | 'select_elements' | 'merge_tables' | 'get_metadata' | 'get_layouts' | 'find_placeholders' | 'get_presentation_properties' | 'run_accessibility_check' | 'convert_to_markdown' | 'add_element' | 'update_element' | 'delete_elements' | 'arrange_elements' | 'clone_element' | 'set_element_animation' | 'group_elements' | 'ungroup_elements' | 'batch_update_elements' | 'update_element_style' | 'replace_geometry' | 'set_element_lock' | 'manage_hyperlinks' | 'replace_text' | 'manage_comments' | 'update_table_cells' | 'manage_table_structure' | 'create_chart' | 'update_chart' | 'add_chart_series' | 'remove_chart_series' | 'update_chart_series_data' | 'manage_smart_art' | 'apply_template' | 'add_slide' | 'duplicate_slide' | 'delete_slides' | 'reorder_slides' | 'update_slide_properties' | 'set_slide_transition' | 'apply_theme_preset' | 'update_theme_colors' | 'update_theme_fonts' | 'set_canvas_size' | 'update_metadata' | 'manage_sections' | 'update_presentation_properties' | 'apply_layout';
8670
+ type Resolvable<T> = T | (() => T | Promise<T>);
8671
+ /** How the assistant reaches a language model. */
8672
+ type PptxAiConnection =
8673
+ /**
8674
+ * Post messages to a host backend route (recommended for production so the
8675
+ * provider API key stays server-side). Maps to `DefaultChatTransport`.
8676
+ */
8677
+ {
8678
+ kind: 'endpoint';
8679
+ api: string;
8680
+ headers?: Resolvable<Record<string, string>>;
8681
+ body?: Resolvable<Record<string, unknown>>;
8682
+ credentials?: RequestCredentials;
8683
+ fetch?: typeof globalThis.fetch;
8684
+ } |
8685
+ /**
8686
+ * Run a language model in-process in the browser (bring-your-own key /
8687
+ * local model). Maps to a `ToolLoopAgent` behind a `DirectChatTransport`.
8688
+ */
8689
+ {
8690
+ kind: 'model';
8691
+ model: LanguageModel;
8692
+ system?: string;
8693
+ maxSteps?: number;
8694
+ } |
8695
+ /** Provide a fully-constructed transport (advanced / testing escape hatch). */
8696
+ {
8697
+ kind: 'transport';
8698
+ transport: ChatTransport<PptxAiUIMessage>;
8699
+ };
8700
+ /** How writes proposed by the assistant reach the document. */
8701
+ type PptxAiWritePolicy = 'stage' | 'approve' | 'auto';
8702
+ /** Which deck context is fed to the model with each turn. */
8703
+ type PptxAiContextStrategy = 'outline' | 'current-slide' | 'none';
8704
+ /** Optional per-session history persistence hooks. */
8705
+ interface PptxAiHistoryHooks {
8706
+ load?(id: string): Promise<PptxAiUIMessage[]>;
8707
+ save?(id: string, messages: PptxAiUIMessage[]): Promise<void>;
8708
+ }
8709
+ /** Complete host configuration for an AI chat session. */
8710
+ interface PptxAiConfig {
8711
+ connection: PptxAiConnection;
8712
+ /** Extra host instructions appended to the base system prompt. */
8713
+ systemPromptExtras?: string;
8714
+ tools?: {
8715
+ /** Allowlist. When set, only these tools are exposed. */
8716
+ enabled?: PptxAiToolName[];
8717
+ /** Denylist, applied after `enabled`. */
8718
+ disabled?: PptxAiToolName[];
8719
+ /** Additional host-defined tools merged into the tool set. */
8720
+ extra?: ToolSet;
8721
+ };
8722
+ /** Default `'stage'`. */
8723
+ writePolicy?: PptxAiWritePolicy;
8724
+ /** Default `'outline'`. */
8725
+ contextStrategy?: PptxAiContextStrategy;
8726
+ history?: PptxAiHistoryHooks;
8727
+ /**
8728
+ * How AI edits are animated on the canvas so the user can watch them land
8729
+ * (glide old->new, fade/scale in-out, glow-pulse). Omit for the defaults;
8730
+ * set `{ enabled: false }` to turn it off.
8731
+ */
8732
+ changeAnimation?: AiChangeAnimationConfig;
8733
+ onError?(error: Error): void;
8734
+ }
8735
+ //#endregion
8736
+ //#region src/ai/bridge.d.ts
8737
+ /** Lightweight, model-friendly summary of the whole deck. */
8738
+ interface PptxAiDeckMeta {
8739
+ /** Total number of slides. */
8740
+ slideCount: number;
8741
+ /** Zero-based index of the currently active slide. */
8742
+ activeSlideIndex: number;
8743
+ /** Deck title, when known (first slide title / core properties). */
8744
+ title?: string;
8745
+ /** Slide canvas width in CSS pixels. */
8746
+ width: number;
8747
+ /** Slide canvas height in CSS pixels. */
8748
+ height: number;
8749
+ }
8750
+ /** Severity hint for {@link PptxAiBridge.notify}. */
8751
+ type PptxAiNotifyLevel = 'info' | 'success' | 'warning' | 'error';
8752
+ /**
8753
+ * A target the user has scoped the assistant to: either a whole slide or a
8754
+ * single element on a slide. Returned by {@link PptxAiBridge.getFocusedTargets}
8755
+ * so the context builder can tell the model exactly what to focus on.
8756
+ */
8757
+ type PptxAiFocusedTarget = {
8758
+ kind: 'slide';
8759
+ slideIndex: number;
8760
+ } | {
8761
+ kind: 'element';
8762
+ slideIndex: number;
8763
+ elementId: string;
8764
+ };
8765
+ /**
8766
+ * A pure updater over the deck's slides. It receives a deep clone of the
8767
+ * current slides (mutation-safe) and returns the next slides array. The bridge
8768
+ * commits the returned array as ONE history entry.
8769
+ */
8770
+ type PptxAiSlidesUpdater = (slides: PptxSlide[]) => PptxSlide[];
8771
+ /**
8772
+ * A pure updater over the whole parsed deck ({@link PptxData}). Mirrors the
8773
+ * `pptx-viewer-mcp` tool model (data in, mutated data out) so presentation-level
8774
+ * MCP tools (metadata, sections, canvas size, presentation properties, layouts)
8775
+ * can be committed as ONE undoable history entry through {@link
8776
+ * PptxAiBridge.applyDeckData}. Optional: bindings that only track slide/theme
8777
+ * state can omit it, in which case those presentation-level tools report that
8778
+ * they are unavailable in this viewer while every slide/theme tool still works.
8779
+ */
8780
+ type PptxAiDataUpdater = (data: PptxData) => PptxData;
8781
+ /** Field-level updates for a single element, mirroring the MCP update vocab. */
8782
+ interface PptxAiElementUpdate {
8783
+ x?: number;
8784
+ y?: number;
8785
+ width?: number;
8786
+ height?: number;
8787
+ rotation?: number;
8788
+ opacity?: number;
8789
+ hidden?: boolean;
8790
+ flipHorizontal?: boolean;
8791
+ flipVertical?: boolean;
8792
+ text?: string;
8793
+ fontSize?: number;
8794
+ fontFamily?: string;
8795
+ fontColor?: string;
8796
+ bold?: boolean;
8797
+ italic?: boolean;
8798
+ underline?: boolean;
8799
+ align?: 'left' | 'center' | 'right' | 'justify';
8800
+ fillColor?: string;
8801
+ strokeColor?: string;
8802
+ strokeWidth?: number;
8803
+ }
8804
+ /**
8805
+ * Implemented by each binding to expose its live editor to the AI core.
8806
+ *
8807
+ * Read methods must be cheap and synchronous. Write methods must route through
8808
+ * the binding's editor-history layer so AI edits are undoable like manual ones.
8809
+ */
8810
+ interface PptxAiBridge {
8811
+ /** Return a summary of the whole deck. */
8812
+ getDeckMeta(): PptxAiDeckMeta;
8813
+ /** Return the deck's slides. Callers must not mutate the returned array. */
8814
+ getSlides(): PptxSlide[];
8815
+ /** Return the zero-based index of the active slide. */
8816
+ getActiveSlideIndex(): number;
8817
+ /** Return the resolved presentation theme, when available. */
8818
+ getTheme(): PptxTheme | undefined;
8819
+ /** Return the underlying core handler, when the binding exposes one. */
8820
+ getHandler(): PptxHandler | undefined;
8821
+ /** Navigate the viewer to a slide by zero-based index. */
8822
+ goToSlide(index: number): void;
8823
+ /** Select the given elements on a slide (empty array clears selection). */
8824
+ selectElements(slideIndex: number, elementIds: string[]): void;
8825
+ /**
8826
+ * Apply a slides updater as a single, atomic, undoable history entry. The
8827
+ * binding is responsible for cloning current slides before calling
8828
+ * `updater` and for installing the result.
8829
+ */
8830
+ applySlidesUpdate(updater: PptxAiSlidesUpdater, label: string): void;
8831
+ /** Apply field updates to one element as a single history entry. */
8832
+ updateElement(slideIndex: number, elementId: string, updates: PptxAiElementUpdate): void;
8833
+ /** Apply partial theme updates as a single history entry. */
8834
+ applyTheme(updates: Partial<PptxTheme>): void;
8835
+ /**
8836
+ * Return the full parsed {@link PptxData} for the open deck, with the live
8837
+ * (edited) slides and theme overlaid. Enables `pptx-viewer-mcp` tools that
8838
+ * read presentation-level state (metadata, sections, layouts, presentation
8839
+ * properties). Optional: when absent, the AI core synthesises a minimal
8840
+ * PptxData from slides + dimensions, which is enough for every slide/theme
8841
+ * tool but not for presentation-level reads.
8842
+ */
8843
+ getDeckData?(): PptxData | undefined;
8844
+ /**
8845
+ * Commit a whole-deck {@link PptxData} mutation as one undoable history entry.
8846
+ * Used to apply presentation-level MCP tool results (metadata, sections,
8847
+ * canvas size, presentation properties, layouts). Optional: when absent,
8848
+ * those tools report they are not supported in this viewer; slide/theme tools
8849
+ * are unaffected (they route through {@link PptxAiBridge.applySlidesUpdate}
8850
+ * and {@link PptxAiBridge.applyTheme}).
8851
+ */
8852
+ applyDeckData?(updater: PptxAiDataUpdater, label: string): void;
8853
+ /**
8854
+ * Return the slides / elements the user has scoped the assistant to, if any.
8855
+ * When present and non-empty, the context builder tells the model to focus on
8856
+ * exactly these targets. Optional so existing bridges satisfy the contract
8857
+ * without change; a bridge that does not implement it behaves as before (no
8858
+ * focus scoping).
8859
+ */
8860
+ getFocusedTargets?(): PptxAiFocusedTarget[];
8861
+ /** Surface a transient message in the host UI (toast / status line). */
8862
+ notify?(message: string, level?: PptxAiNotifyLevel): void;
8863
+ }
8864
+ //#endregion
8221
8865
  //#region src/viewer/hooks/collaboration/types.d.ts
8222
8866
  /** Connection lifecycle states for the Yjs WebSocket provider. */
8223
8867
  type ConnectionStatus = 'disconnected' | 'connecting' | 'connected' | 'error';
@@ -8558,11 +9202,11 @@ interface PowerPointViewerProps {
8558
9202
  serverUrl?: string;
8559
9203
  };
8560
9204
  /**
8561
- * Opt in to the experimental Three.js SmartArt renderer. When `true`,
8562
- * SmartArt diagrams render as extruded 3D blocks on a WebGL canvas instead
8563
- * of flat SVG. Requires the optional `three` peer dependency; when it is not
8564
- * installed (or the diagram has no geometry), the viewer transparently falls
8565
- * back to the SVG `SmartArtRenderer`. Default `false`.
9205
+ * Opt in to the Three.js SmartArt renderer. When `true`, SmartArt diagrams
9206
+ * render as extruded 3D blocks on a WebGL canvas instead of flat SVG.
9207
+ * Requires the optional `three` peer dependency; when it is not installed
9208
+ * (or the diagram has no geometry), the viewer transparently falls back to
9209
+ * the SVG `SmartArtRenderer`. Default `false`.
8566
9210
  */
8567
9211
  smartArt3D?: boolean;
8568
9212
  /**
@@ -8583,11 +9227,44 @@ interface PowerPointViewerProps {
8583
9227
  * ```
8584
9228
  */
8585
9229
  hiddenActions?: ToolbarActionId[];
9230
+ /**
9231
+ * Opt in to the built-in AI assistant. When provided, a Sparkles toggle
9232
+ * appears in the toolbar and opens a chat panel wired to this config; when
9233
+ * omitted, no AI icon renders and no AI code is loaded (the panel and its
9234
+ * `@ai-sdk/react` dependency are `React.lazy`-imported only on first open).
9235
+ *
9236
+ * The host supplies the model connection (a backend `endpoint`, an in-browser
9237
+ * `model`, or a custom `transport`) plus optional tool allow/deny lists and a
9238
+ * write policy. Requires the optional `ai` and `@ai-sdk/react` peers.
9239
+ *
9240
+ * @example
9241
+ * ```tsx
9242
+ * <PowerPointViewer content={bytes} ai={{ connection: { kind: 'model', model } }} />
9243
+ * ```
9244
+ *
9245
+ * @see {@link PptxAiConfig}
9246
+ */
9247
+ ai?: PptxAiConfig;
8586
9248
  }
8587
9249
  interface PowerPointViewerHandle extends FileViewerHandle, PowerPointViewerAPI {
8588
9250
  getContent: () => Promise<Uint8Array>;
8589
9251
  }
8590
9252
 
9253
+ //#region src/viewer/utils/animation-effects.d.ts
9254
+ declare function getAnimationInitialStyle(preset: PptxAnimationPreset | undefined, nativeAnimation?: PptxNativeAnimation): React__default.CSSProperties;
9255
+ //#endregion
9256
+ //#region src/viewer/PowerPointViewer.d.ts
9257
+ /**
9258
+ * Root React component for the PowerPoint viewer/editor.
9259
+ *
9260
+ * Accepts binary `.pptx` content and renders a full-featured editor with
9261
+ * slide canvas, toolbar, inspector panels, presentation mode, and more.
9262
+ *
9263
+ * Uses `forwardRef` to expose a `PowerPointViewerHandle` for imperative
9264
+ * access (e.g. serialising the current content for saving).
9265
+ */
9266
+ declare const PowerPointViewer: React.ForwardRefExoticComponent<PowerPointViewerProps & React.RefAttributes<PowerPointViewerHandle>>;
9267
+
8591
9268
  //#endregion
8592
9269
  //#region src/viewer/hooks/useThemeSwitching.d.ts
8593
9270
  interface UseThemeSwitchingInput {
@@ -8877,44 +9554,6 @@ declare function parseAudienceNonce(): string | null;
8877
9554
  /** Returns true if the current page was opened as an audience tab. */
8878
9555
  declare function isAudienceTab(): boolean;
8879
9556
 
8880
- //#region src/viewer/utils/animation-effects.d.ts
8881
- declare function getAnimationInitialStyle(preset: PptxAnimationPreset | undefined, nativeAnimation?: PptxNativeAnimation): React__default.CSSProperties;
8882
- //#endregion
8883
- //#region src/viewer/PowerPointViewer.d.ts
8884
- /**
8885
- * Root React component for the PowerPoint viewer/editor.
8886
- *
8887
- * Accepts binary `.pptx` content and renders a full-featured editor with
8888
- * slide canvas, toolbar, inspector panels, presentation mode, and more.
8889
- *
8890
- * Uses `forwardRef` to expose a `PowerPointViewerHandle` for imperative
8891
- * access (e.g. serialising the current content for saving).
8892
- */
8893
- declare const PowerPointViewer: React.ForwardRefExoticComponent<PowerPointViewerProps & React.RefAttributes<PowerPointViewerHandle>>;
8894
-
8895
- //#region src/viewer/hooks/presentation-mode/audience-content-store.d.ts
8896
- /**
8897
- * audience-content-store: IndexedDB-based storage for sharing PPTX content
8898
- * between the presenter tab and audience tab.
8899
- *
8900
- * When the presenter opens an audience window, the PPTX bytes are stored in
8901
- * IndexedDB. The audience tab retrieves them on load and then cleans up.
8902
- */
8903
- /**
8904
- * Store PPTX content bytes so the audience tab can retrieve them.
8905
- * Called by the presenter before opening the audience window.
8906
- */
8907
- declare function storeAudienceContent(content: ArrayBuffer | Uint8Array, sessionId?: string): Promise<void>;
8908
- /**
8909
- * Load PPTX content bytes stored by the presenter tab.
8910
- * Returns `null` if nothing is stored.
8911
- */
8912
- declare function loadAudienceContent(sessionId?: string): Promise<Uint8Array | null>;
8913
- /**
8914
- * Remove stored audience content (cleanup).
8915
- */
8916
- declare function clearAudienceContent(sessionId?: string): Promise<void>;
8917
- //#endregion
8918
9557
  //#region src/viewer/components/collaboration/CollaborationProvider.d.ts
8919
9558
  interface CollaborationProviderProps {
8920
9559
  /** Collaboration config, or `undefined`/omitted while no session is active. */
@@ -8967,4 +9606,4 @@ interface CollaborationStatusIndicatorProps {
8967
9606
  declare function CollaborationStatusIndicator({ status, connectedCount, onRetry }: CollaborationStatusIndicatorProps): React__default.ReactElement;
8968
9607
 
8969
9608
  export { CollaborationProvider, CollaborationStatusIndicator, PowerPointViewer, RemoteUserCursors, UserAvatarBar, clearAudienceContent, getAnimationInitialStyle, isAudienceTab, loadAudienceContent, parseAudienceNonce, storeAudienceContent, useCollaborativeHistory, useCollaborativeState, usePresenceTracking, useThemeSwitching, useYjsProvider };
8970
- export type { AccessibilityIssue, AnimationPresetOption, CanvasSize, CollaborationConfig, CollaborationContextValue, CollaborationRole, CollaborationStatusIndicatorProps, ConnectionStatus, ConnectorArrowOption, ConnectorGeometryOption, ConnectorGeometryType, ConnectorPathGeometry, DragState, DrawingTool, EditorHistorySnapshot, ElementBounds, ElementClipboardPayload, ElementContextMenuAction, ElementContextMenuState, FileViewerHandle, MarqueeSelectionState, ParsedTableCell, ParsedTableData, PowerPointViewerHandle, PowerPointViewerProps, PresentationAnimationRuntime, RemoteUserCursorsProps, ResizeHandle, ResizeState, ShapeAdjustmentDragState, ShapeAdjustmentHandleDescriptor, ShapePreset, ShapeQuickStyle, ShortcutReferenceItem, SlideAlignment, SlideSectionGroup, SlideTransitionOption, StrokeDashOption, SupportedShapeType, TableCellEditorState, ThemeSwitchingResult, ToolbarSection, UseCollaborativeHistoryResult, UseCollaborativeStateInput, UsePresenceTrackingResult, UseThemeSwitchingInput, UserAvatarBarProps, UserPresence, ViewerMode };
9609
+ export type { AccessibilityIssue, AnimationPresetOption, CanvasSize, CollaborationConfig, CollaborationContextValue, CollaborationRole, CollaborationStatusIndicatorProps, ConnectionStatus, ConnectorArrowOption, ConnectorGeometryOption, ConnectorGeometryType, ConnectorPathGeometry, DragState, DrawingTool, EditorHistorySnapshot, ElementBounds, ElementClipboardPayload, ElementContextMenuAction, ElementContextMenuState, FileViewerHandle, MarqueeSelectionState, ParsedTableCell, ParsedTableData, PowerPointViewerHandle, PowerPointViewerProps, PptxAiBridge, PptxAiConfig, PptxAiConnection, PptxAiContextStrategy, PptxAiToolName, PptxAiWritePolicy, PresentationAnimationRuntime, RemoteUserCursorsProps, ResizeHandle, ResizeState, ShapeAdjustmentDragState, ShapeAdjustmentHandleDescriptor, ShapePreset, ShapeQuickStyle, ShortcutReferenceItem, SlideAlignment, SlideSectionGroup, SlideTransitionOption, StrokeDashOption, SupportedShapeType, TableCellEditorState, ThemeSwitchingResult, ToolbarSection, UseCollaborativeHistoryResult, UseCollaborativeStateInput, UsePresenceTrackingResult, UseThemeSwitchingInput, UserAvatarBarProps, UserPresence, ViewerMode };