pptx-react-viewer 4.0.0 → 4.1.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 (188) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/{AiChatPanel-MHURGN6G.mjs → AiChatPanel-C3ACRWOY.mjs} +4 -4
  3. package/dist/AiChatPanel-C3ACRWOY.mjs.br +0 -0
  4. package/dist/AiChatPanel-C3ACRWOY.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-WMVQFNDC.js → AiChatPanel-GQNSKMP6.js} +25 -25
  6. package/dist/AiChatPanel-GQNSKMP6.js.br +0 -0
  7. package/dist/AiChatPanel-GQNSKMP6.js.gz +0 -0
  8. package/dist/{Area3DChartScene-IMGZEZNU.js → Area3DChartScene-3I6KB2DN.js} +2 -2
  9. package/dist/Area3DChartScene-3I6KB2DN.js.br +0 -0
  10. package/dist/Area3DChartScene-3I6KB2DN.js.gz +0 -0
  11. package/dist/{Area3DChartScene-LKOWSMAU.mjs → Area3DChartScene-4TPNRYXS.mjs} +1 -1
  12. package/dist/{Area3DChartScene-LKOWSMAU.mjs.br → Area3DChartScene-4TPNRYXS.mjs.br} +0 -0
  13. package/dist/Area3DChartScene-4TPNRYXS.mjs.gz +0 -0
  14. package/dist/{Bar3DChartScene-NQNSIMUL.mjs → Bar3DChartScene-V45IUIT7.mjs} +1 -1
  15. package/dist/{Bar3DChartScene-NQNSIMUL.mjs.br → Bar3DChartScene-V45IUIT7.mjs.br} +0 -0
  16. package/dist/Bar3DChartScene-V45IUIT7.mjs.gz +0 -0
  17. package/dist/{Bar3DChartScene-VLSYVFRT.js → Bar3DChartScene-ZSCATOYF.js} +2 -2
  18. package/dist/Bar3DChartScene-ZSCATOYF.js.br +0 -0
  19. package/dist/Bar3DChartScene-ZSCATOYF.js.gz +0 -0
  20. package/dist/{Line3DChartScene-ANZBJYQI.mjs → Line3DChartScene-DCQJEZK6.mjs} +1 -1
  21. package/dist/{Line3DChartScene-ANZBJYQI.mjs.br → Line3DChartScene-DCQJEZK6.mjs.br} +0 -0
  22. package/dist/Line3DChartScene-DCQJEZK6.mjs.gz +0 -0
  23. package/dist/{Line3DChartScene-IWZHA563.js → Line3DChartScene-DK55LQ2D.js} +2 -2
  24. package/dist/Line3DChartScene-DK55LQ2D.js.br +0 -0
  25. package/dist/Line3DChartScene-DK55LQ2D.js.gz +0 -0
  26. package/dist/{Model3DScene-2L3YRAMR.js → Model3DScene-2WNP4XBP.js} +2 -2
  27. package/dist/Model3DScene-2WNP4XBP.js.br +0 -0
  28. package/dist/Model3DScene-2WNP4XBP.js.gz +0 -0
  29. package/dist/{Model3DScene-Y34HTZXK.mjs → Model3DScene-SA5XMR2D.mjs} +1 -1
  30. package/dist/Model3DScene-SA5XMR2D.mjs.br +0 -0
  31. package/dist/Model3DScene-SA5XMR2D.mjs.gz +0 -0
  32. package/dist/{PieChart3DScene-FBRPLHLG.mjs → PieChart3DScene-HC2ZWL42.mjs} +1 -1
  33. package/dist/{PieChart3DScene-FBRPLHLG.mjs.br → PieChart3DScene-HC2ZWL42.mjs.br} +0 -0
  34. package/dist/PieChart3DScene-HC2ZWL42.mjs.gz +0 -0
  35. package/dist/{PieChart3DScene-NE3GN5VG.js → PieChart3DScene-Q75D66HS.js} +2 -2
  36. package/dist/PieChart3DScene-Q75D66HS.js.br +0 -0
  37. package/dist/PieChart3DScene-Q75D66HS.js.gz +0 -0
  38. package/dist/{SmartArt3DScene-QZGIABOK.mjs → SmartArt3DScene-D4VNNPHS.mjs} +124 -19
  39. package/dist/SmartArt3DScene-D4VNNPHS.mjs.br +0 -0
  40. package/dist/SmartArt3DScene-D4VNNPHS.mjs.gz +0 -0
  41. package/dist/{SmartArt3DScene-T236GYUT.js → SmartArt3DScene-NHD7CZJ5.js} +123 -18
  42. package/dist/SmartArt3DScene-NHD7CZJ5.js.br +0 -0
  43. package/dist/SmartArt3DScene-NHD7CZJ5.js.gz +0 -0
  44. package/dist/{SurfaceChart3DScene-7HE5DA3X.mjs → SurfaceChart3DScene-JRMX4PN5.mjs} +1 -1
  45. package/dist/SurfaceChart3DScene-JRMX4PN5.mjs.br +0 -0
  46. package/dist/SurfaceChart3DScene-JRMX4PN5.mjs.gz +0 -0
  47. package/dist/{SurfaceChart3DScene-OSMAVZJC.js → SurfaceChart3DScene-ODS5E6ZG.js} +2 -2
  48. package/dist/SurfaceChart3DScene-ODS5E6ZG.js.br +0 -0
  49. package/dist/SurfaceChart3DScene-ODS5E6ZG.js.gz +0 -0
  50. package/dist/{chunk-H7J4EYXS.mjs → chunk-25CABWCR.mjs} +131 -329
  51. package/dist/chunk-25CABWCR.mjs.br +0 -0
  52. package/dist/chunk-25CABWCR.mjs.gz +0 -0
  53. package/dist/{chunk-IWHZ2DUD.mjs → chunk-3B6YIH4K.mjs} +626 -133
  54. package/dist/chunk-3B6YIH4K.mjs.br +0 -0
  55. package/dist/chunk-3B6YIH4K.mjs.gz +0 -0
  56. package/dist/{chunk-L6I73WMO.js → chunk-A6JKOHSV.js} +2143 -1644
  57. package/dist/chunk-A6JKOHSV.js.br +0 -0
  58. package/dist/chunk-A6JKOHSV.js.gz +0 -0
  59. package/dist/{chunk-5F426BCZ.mjs → chunk-GRAARMUW.mjs} +1 -1
  60. package/dist/chunk-GRAARMUW.mjs.br +0 -0
  61. package/dist/chunk-GRAARMUW.mjs.gz +0 -0
  62. package/dist/{chunk-ZOB6ITIM.js → chunk-MQHMMB6V.js} +5 -5
  63. package/dist/chunk-MQHMMB6V.js.br +0 -0
  64. package/dist/chunk-MQHMMB6V.js.gz +0 -0
  65. package/dist/{chunk-I5F3XLVR.js → chunk-NR4MQJM5.js} +1961 -2161
  66. package/dist/chunk-NR4MQJM5.js.br +0 -0
  67. package/dist/chunk-NR4MQJM5.js.gz +0 -0
  68. package/dist/{chunk-M24DEOP6.js → chunk-NXGUR2DO.js} +2 -0
  69. package/dist/chunk-NXGUR2DO.js.br +0 -0
  70. package/dist/chunk-NXGUR2DO.js.gz +0 -0
  71. package/dist/{chunk-R664EPDC.mjs → chunk-PC7H3C5W.mjs} +2 -0
  72. package/dist/chunk-PC7H3C5W.mjs.br +0 -0
  73. package/dist/chunk-PC7H3C5W.mjs.gz +0 -0
  74. package/dist/{chunk-NKACTGK5.js → chunk-PUALTXTU.js} +182 -182
  75. package/dist/chunk-PUALTXTU.js.br +0 -0
  76. package/dist/chunk-PUALTXTU.js.gz +0 -0
  77. package/dist/{chunk-33YE6E2O.mjs → chunk-Q6QJOD56.mjs} +2145 -470
  78. package/dist/chunk-Q6QJOD56.mjs.br +0 -0
  79. package/dist/chunk-Q6QJOD56.mjs.gz +0 -0
  80. package/dist/{chunk-LAAXFMRE.js → chunk-SK2CZQ6P.js} +2151 -469
  81. package/dist/chunk-SK2CZQ6P.js.br +0 -0
  82. package/dist/chunk-SK2CZQ6P.js.gz +0 -0
  83. package/dist/{chunk-GITM3RKP.mjs → chunk-WLWAYLL6.mjs} +2 -2
  84. package/dist/chunk-WLWAYLL6.mjs.br +0 -0
  85. package/dist/chunk-WLWAYLL6.mjs.gz +0 -0
  86. package/dist/i18n/de.cjs +2 -0
  87. package/dist/i18n/de.cjs.br +0 -0
  88. package/dist/i18n/de.cjs.gz +0 -0
  89. package/dist/i18n/de.mjs +2 -0
  90. package/dist/i18n/de.mjs.br +0 -0
  91. package/dist/i18n/de.mjs.gz +0 -0
  92. package/dist/i18n/es.cjs +2 -0
  93. package/dist/i18n/es.cjs.br +0 -0
  94. package/dist/i18n/es.cjs.gz +0 -0
  95. package/dist/i18n/es.mjs +2 -0
  96. package/dist/i18n/es.mjs.br +0 -0
  97. package/dist/i18n/es.mjs.gz +0 -0
  98. package/dist/i18n/fr.cjs +2 -0
  99. package/dist/i18n/fr.cjs.br +0 -0
  100. package/dist/i18n/fr.cjs.gz +0 -0
  101. package/dist/i18n/fr.mjs +2 -0
  102. package/dist/i18n/fr.mjs.br +0 -0
  103. package/dist/i18n/fr.mjs.gz +0 -0
  104. package/dist/i18n/zh-CN.cjs +2 -0
  105. package/dist/i18n/zh-CN.cjs.br +0 -0
  106. package/dist/i18n/zh-CN.cjs.gz +0 -0
  107. package/dist/i18n/zh-CN.mjs +2 -0
  108. package/dist/i18n/zh-CN.mjs.br +0 -0
  109. package/dist/i18n/zh-CN.mjs.gz +0 -0
  110. package/dist/i18n.js +4 -4
  111. package/dist/i18n.js.br +0 -0
  112. package/dist/i18n.js.gz +0 -0
  113. package/dist/i18n.mjs +1 -1
  114. package/dist/i18n.mjs.br +0 -0
  115. package/dist/i18n.mjs.gz +0 -0
  116. package/dist/index.d.ts +586 -7
  117. package/dist/index.js +52 -48
  118. package/dist/index.js.br +0 -0
  119. package/dist/index.js.gz +0 -0
  120. package/dist/index.mjs +6 -6
  121. package/dist/index.mjs.br +0 -0
  122. package/dist/index.mjs.gz +0 -0
  123. package/dist/internals.d.ts +447 -13
  124. package/dist/internals.js +105 -105
  125. package/dist/internals.js.br +0 -0
  126. package/dist/internals.js.gz +0 -0
  127. package/dist/internals.mjs +4 -4
  128. package/dist/internals.mjs.br +0 -0
  129. package/dist/internals.mjs.gz +0 -0
  130. package/dist/viewer/index.js +32 -32
  131. package/dist/viewer/index.js.br +0 -0
  132. package/dist/viewer/index.js.gz +0 -0
  133. package/dist/viewer/index.mjs +6 -6
  134. package/dist/viewer/index.mjs.br +0 -0
  135. package/dist/viewer/index.mjs.gz +0 -0
  136. package/package.json +2 -2
  137. package/dist/AiChatPanel-MHURGN6G.mjs.br +0 -0
  138. package/dist/AiChatPanel-MHURGN6G.mjs.gz +0 -0
  139. package/dist/AiChatPanel-WMVQFNDC.js.br +0 -0
  140. package/dist/AiChatPanel-WMVQFNDC.js.gz +0 -0
  141. package/dist/Area3DChartScene-IMGZEZNU.js.br +0 -0
  142. package/dist/Area3DChartScene-IMGZEZNU.js.gz +0 -0
  143. package/dist/Area3DChartScene-LKOWSMAU.mjs.gz +0 -0
  144. package/dist/Bar3DChartScene-NQNSIMUL.mjs.gz +0 -0
  145. package/dist/Bar3DChartScene-VLSYVFRT.js.br +0 -0
  146. package/dist/Bar3DChartScene-VLSYVFRT.js.gz +0 -0
  147. package/dist/Line3DChartScene-ANZBJYQI.mjs.gz +0 -0
  148. package/dist/Line3DChartScene-IWZHA563.js.br +0 -0
  149. package/dist/Line3DChartScene-IWZHA563.js.gz +0 -0
  150. package/dist/Model3DScene-2L3YRAMR.js.br +0 -0
  151. package/dist/Model3DScene-2L3YRAMR.js.gz +0 -0
  152. package/dist/Model3DScene-Y34HTZXK.mjs.br +0 -0
  153. package/dist/Model3DScene-Y34HTZXK.mjs.gz +0 -0
  154. package/dist/PieChart3DScene-FBRPLHLG.mjs.gz +0 -0
  155. package/dist/PieChart3DScene-NE3GN5VG.js.br +0 -0
  156. package/dist/PieChart3DScene-NE3GN5VG.js.gz +0 -0
  157. package/dist/SmartArt3DScene-QZGIABOK.mjs.br +0 -0
  158. package/dist/SmartArt3DScene-QZGIABOK.mjs.gz +0 -0
  159. package/dist/SmartArt3DScene-T236GYUT.js.br +0 -0
  160. package/dist/SmartArt3DScene-T236GYUT.js.gz +0 -0
  161. package/dist/SurfaceChart3DScene-7HE5DA3X.mjs.br +0 -0
  162. package/dist/SurfaceChart3DScene-7HE5DA3X.mjs.gz +0 -0
  163. package/dist/SurfaceChart3DScene-OSMAVZJC.js.br +0 -0
  164. package/dist/SurfaceChart3DScene-OSMAVZJC.js.gz +0 -0
  165. package/dist/chunk-33YE6E2O.mjs.br +0 -0
  166. package/dist/chunk-33YE6E2O.mjs.gz +0 -0
  167. package/dist/chunk-5F426BCZ.mjs.br +0 -0
  168. package/dist/chunk-5F426BCZ.mjs.gz +0 -0
  169. package/dist/chunk-GITM3RKP.mjs.br +0 -0
  170. package/dist/chunk-GITM3RKP.mjs.gz +0 -0
  171. package/dist/chunk-H7J4EYXS.mjs.br +0 -0
  172. package/dist/chunk-H7J4EYXS.mjs.gz +0 -0
  173. package/dist/chunk-I5F3XLVR.js.br +0 -0
  174. package/dist/chunk-I5F3XLVR.js.gz +0 -0
  175. package/dist/chunk-IWHZ2DUD.mjs.br +0 -0
  176. package/dist/chunk-IWHZ2DUD.mjs.gz +0 -0
  177. package/dist/chunk-L6I73WMO.js.br +0 -0
  178. package/dist/chunk-L6I73WMO.js.gz +0 -0
  179. package/dist/chunk-LAAXFMRE.js.br +0 -0
  180. package/dist/chunk-LAAXFMRE.js.gz +0 -0
  181. package/dist/chunk-M24DEOP6.js.br +0 -0
  182. package/dist/chunk-M24DEOP6.js.gz +0 -0
  183. package/dist/chunk-NKACTGK5.js.br +0 -0
  184. package/dist/chunk-NKACTGK5.js.gz +0 -0
  185. package/dist/chunk-R664EPDC.mjs.br +0 -0
  186. package/dist/chunk-R664EPDC.mjs.gz +0 -0
  187. package/dist/chunk-ZOB6ITIM.js.br +0 -0
  188. package/dist/chunk-ZOB6ITIM.js.gz +0 -0
package/dist/index.d.ts CHANGED
@@ -11648,7 +11648,24 @@ interface TextStyleAnimationDescriptor {
11648
11648
 
11649
11649
  //#region src/render/collaboration-presence.d.ts
11650
11650
  /** Connection lifecycle states for the Yjs WebSocket provider. */
11651
- type ConnectionStatus = 'disconnected' | 'connecting' | 'connected' | 'error';
11651
+ type ConnectionStatus$1 = 'disconnected' | 'connecting' | 'connected' | 'error';
11652
+ /**
11653
+ * Presence data for a remote collaborator, sanitised from the awareness
11654
+ * protocol. Returned by {@link sanitizePresence}; coordinates are in unscaled
11655
+ * slide pixels, clamped to the supplied canvas bounds.
11656
+ */
11657
+ interface SanitizedPresence {
11658
+ clientId: number;
11659
+ userName: string;
11660
+ userAvatar?: string;
11661
+ userColor: string;
11662
+ activeSlideIndex: number;
11663
+ cursorX: number;
11664
+ cursorY: number;
11665
+ lastUpdated: string;
11666
+ selectedElementId?: string;
11667
+ role?: CollaborationRole;
11668
+ }
11652
11669
  //#endregion
11653
11670
  //#region src/render/collaboration-presence-publisher.d.ts
11654
11671
  /**
@@ -11666,7 +11683,7 @@ interface AwarenessLike {
11666
11683
  //#region src/render/collaboration-external-session.d.ts
11667
11684
  /** Connection state reported by the host, independent of the viewer lifetime. */
11668
11685
  interface ExternalCollaborationSnapshot {
11669
- status: ConnectionStatus;
11686
+ status: ConnectionStatus$1;
11670
11687
  /**
11671
11688
  * The host has loaded the authoritative document and permits local edits.
11672
11689
  * Keep true while offline to allow ordinary Yjs offline edits, or set false
@@ -11897,6 +11914,47 @@ interface CollaborationConfig {
11897
11914
  writeBackDebounceMs?: number;
11898
11915
  }
11899
11916
  //#endregion
11917
+ //#region src/render/text-run-style.d.ts
11918
+ /** A plain CSS style map (keys are CSS properties; binding-agnostic). */
11919
+ type RunStyle = Record<string, string | number>;
11920
+ /** One script-tagged piece of a run's text, ready for a binding's nested span. */
11921
+ interface ScriptFontPiece {
11922
+ text: string;
11923
+ /**
11924
+ * CSS for a nested span wrapping `text`, or `undefined` when this piece
11925
+ * needs no span at all (its script's font equals the run's own, so plain
11926
+ * text renders identically). When present it carries the `fontFamily`
11927
+ * override plus the run's own decoration subset, repeated because
11928
+ * `text-decoration-*` does not inherit into a nested span (see
11929
+ * `nestedTextDecorationStyle`).
11930
+ */
11931
+ style?: RunStyle;
11932
+ }
11933
+ //#endregion
11934
+ //#region src/render/reflection.d.ts
11935
+ /**
11936
+ * CSS `mask-image`/`-webkit-mask-image` value plus the raw `transform` for a
11937
+ * mirrored reflection sibling. Every value is a ready-to-apply CSS string (or
11938
+ * `'none'` sentinel avoided - fields are omitted when the browser default
11939
+ * already matches), so a binding can spread this directly onto its own style
11940
+ * object with no further per-framework logic.
11941
+ */
11942
+ interface ReflectionWrapperStyle {
11943
+ position: 'absolute';
11944
+ left: string;
11945
+ /** `calc(100% + <dist>px)`: sits `@dist` px below the source element's box. */
11946
+ top: string;
11947
+ width: string;
11948
+ height: string;
11949
+ /** Mirror (`scaleY(-1)`) composed with `@sx`/`@sy`/`@kx`/`@ky`/`@rot`. */
11950
+ transform: string;
11951
+ /** Anchor point for the transform above, from `@algn` (default `center top`). */
11952
+ transformOrigin: string;
11953
+ maskImage: string;
11954
+ WebkitMaskImage: string;
11955
+ pointerEvents: 'none';
11956
+ }
11957
+ //#endregion
11900
11958
  //#region src/render/animation-timeline-build-descriptors.d.ts
11901
11959
  /**
11902
11960
  * `animation-timeline-build-descriptors` - staged-build (`p:bldChart` /
@@ -12134,6 +12192,272 @@ declare function buildSlideTemplateContent(id: SlideTemplateId, options?: SlideT
12134
12192
  declare function buildSlideTemplateSlide(templateId: SlideTemplateId, slideId: string, slideNumber: number, options?: SlideTemplateBuildOptions): PptxSlide;
12135
12193
  /** The unit system used for ruler display. */
12136
12194
  type RulerUnit = 'inches' | 'centimetres';
12195
+ /** Framework-neutral picture-bullet source, sizing, and accessible fallback. */
12196
+ interface PictureBulletMarker {
12197
+ src?: string;
12198
+ sizePx: number;
12199
+ fallbackMarker: string;
12200
+ accessibleLabel: string;
12201
+ imageRelId?: string;
12202
+ }
12203
+ //#endregion
12204
+ //#region src/render/text-run-meta.d.ts
12205
+ /** A run's resolved hyperlink target. */
12206
+ interface RunHyperlink {
12207
+ /**
12208
+ * The URL to hand a click handler. For an internal `ppaction://hlinksldjump`
12209
+ * the resolved slide index is appended as a `slideIndex` query parameter, so
12210
+ * the target survives a callback whose only argument is the URL (see
12211
+ * `parsePpactionUrl`, which reads it back off).
12212
+ */
12213
+ url: string;
12214
+ /**
12215
+ * A safe, renderable `href` for a plain `<a>`, or `undefined` when the target
12216
+ * is an internal `ppaction://` action or fails the URL safety check. A
12217
+ * binding with no click handler renders the run as text in that case, which
12218
+ * is what every binding did for every link before this field existed.
12219
+ */
12220
+ href?: string;
12221
+ /** `a:hlinkClick/@tooltip`, for the anchor's `title`. */
12222
+ tooltip?: string;
12223
+ /**
12224
+ * `<a target>` for a real (non-`ppaction://`) hyperlink, from
12225
+ * `a:hlinkClick/@tgtFrame` when authored, else `_blank` (every binding's
12226
+ * pre-existing hardcoded default). Only meaningful alongside {@link href}.
12227
+ */
12228
+ target?: string;
12229
+ /** `<a rel>` paired with {@link target} (see `resolveHyperlinkTargetAttrs`). */
12230
+ rel?: string;
12231
+ /** Resolved target slide for an internal slide jump. */
12232
+ targetSlideIndex?: number;
12233
+ /**
12234
+ * True when the target came from `a:hlinkMouseOver` rather than
12235
+ * `a:hlinkClick`: PowerPoint follows it on hover, not on click, so a binding
12236
+ * that renders a plain anchor should not make it look clickable.
12237
+ */
12238
+ onHover?: boolean;
12239
+ }
12240
+ /** An inline equation run (`m:oMath`), rendered as MathML rather than text. */
12241
+ interface RunEquation {
12242
+ /** The raw OMML node, for `convertOmmlToMathMl`. */
12243
+ xml: Record<string, unknown>;
12244
+ /** Display number for a numbered equation, without its parentheses. */
12245
+ number?: string;
12246
+ }
12247
+ //#endregion
12248
+ //#region src/render/text-run-ruby.d.ts
12249
+ /** A run's phonetic guide, ready to render as `<rt>` above the base text. */
12250
+ interface RunRuby {
12251
+ /** The annotation itself (`a:ruby/a:rt`), e.g. the furigana reading. */
12252
+ text: string;
12253
+ /** Inline style for the `<rt>` element (size, family, alignment, colour). */
12254
+ style: RunStyle;
12255
+ }
12256
+ //#endregion
12257
+ //#region src/render/text-tab-run-build.d.ts
12258
+ /** One tabbed-line piece, ready to spread onto a binding's own span element. */
12259
+ interface TabbedRunPiece {
12260
+ text: string;
12261
+ /**
12262
+ * CSS for the span that wraps `text`: inline-block layout, this run's own
12263
+ * decoration repeated, and this piece's own PowerPoint advance-width
12264
+ * correction as `letter-spacing` (see `buildTabbedLine`). The piece is
12265
+ * nested inside the run's own span, and neither property inherits the way a
12266
+ * caller would want: `text-decoration-*` does not inherit into a nested
12267
+ * element at all (an ancestor's underline is drawn *through* its
12268
+ * descendants, but each descendant still computes `none` of its own), so a
12269
+ * caller passes the run's decoration subset (`nestedTextDecorationStyle`) to
12270
+ * have it repeated here; `letter-spacing` DOES inherit, which is exactly why
12271
+ * this piece sets it explicitly rather than only when non-zero - the run's
12272
+ * container span carries its own (wrong, whole-text) correction that would
12273
+ * otherwise leak in.
12274
+ */
12275
+ style: RunStyle;
12276
+ /** CSS for the leader-fill span preceding this piece, or `undefined` when there is no gap to fill. */
12277
+ leaderStyle?: RunStyle;
12278
+ /** Leader glyphs sized to fill `leaderStyle`'s width. Present only alongside `leaderStyle`. */
12279
+ leaderText?: string;
12280
+ /**
12281
+ * `a:rPr/@u="words"` per-word/gap sub-pieces of THIS tab piece's own text
12282
+ * (see `splitWordsForUnderline`), present only when the run's underline is
12283
+ * `words`. A tab-separated piece is otherwise rendered as a single span
12284
+ * (`text` + `style`), which underlines it continuously - correct for a
12285
+ * one-word piece, but wrong for a piece like `"Hello World"` between two tab
12286
+ * stops, which needs a gap under the space. A binding renders one SIBLING
12287
+ * span per entry IN PLACE OF the piece's single `text` span: each entry's
12288
+ * `style` is the piece's own `style` (the same inline-block layout and
12289
+ * advance-width correction, so the line measures exactly as before), with
12290
+ * the underline stripped on a gap entry. They must be siblings, not spans
12291
+ * nested inside the piece span: an ancestor's underline is drawn through
12292
+ * every inline descendant, so a nested gap could not lose it. `text`/`style`
12293
+ * stay the continuous-underline fallback for a binding that does not
12294
+ * render this field.
12295
+ */
12296
+ words?: Array<{
12297
+ text: string;
12298
+ style: RunStyle;
12299
+ }>;
12300
+ }
12301
+ /** One `\n`-split line of a run's tabbed text. */
12302
+ interface TabbedLineRun {
12303
+ pieces: TabbedRunPiece[];
12304
+ }
12305
+ //#endregion
12306
+ //#region src/render/paragraph-types.d.ts
12307
+ /** A single rendered run within a paragraph. */
12308
+ interface ParagraphRun {
12309
+ text: string;
12310
+ style: RunStyle;
12311
+ /**
12312
+ * The run's hyperlink (`a:hlinkClick` / `a:hlinkMouseOver`), when it has one.
12313
+ * A binding renders the run inside an `<a href>` when {@link RunHyperlink.href}
12314
+ * is set, and routes {@link RunHyperlink.url} to its click handler otherwise
12315
+ * (internal `ppaction://` slide jumps).
12316
+ */
12317
+ hyperlink?: RunHyperlink;
12318
+ /**
12319
+ * An inline equation (`m:oMath`) this run renders INSTEAD of `text`, which is
12320
+ * empty for it. Emitted in the run sequence so the maths lands at its
12321
+ * authored position between the runs around it.
12322
+ */
12323
+ equation?: RunEquation;
12324
+ /**
12325
+ * The run's phonetic guide (`a:ruby`: furigana, pinyin, bopomofo), when it
12326
+ * has one. A binding renders `<ruby>{text}<rt style>{ruby.text}</rt></ruby>`;
12327
+ * a run carrying one is never split per word, so the annotation appears once
12328
+ * over the whole base run.
12329
+ *
12330
+ * Core parsed and saved ruby from the start, but `buildParagraphs` never read
12331
+ * it, so the annotation rendered in React alone.
12332
+ */
12333
+ ruby?: RunRuby;
12334
+ /**
12335
+ * Index of the `textSegments` entry (of the override list when one was
12336
+ * supplied) this run was built from.
12337
+ *
12338
+ * Shared splits one authored run into several per-word runs for PowerPoint's
12339
+ * metric tracking, so this is many-to-one. It is the seam a binding uses to
12340
+ * reach the facts the neutral model does not carry - React's find-match
12341
+ * highlights, per-script font spans, tab stops and ruby all key off the
12342
+ * originating segment - without regrouping the segments itself and drifting
12343
+ * from the grouping here.
12344
+ */
12345
+ segmentIndex?: number;
12346
+ /**
12347
+ * Offset of this run's `text` within its segment's RENDERED text (after field
12348
+ * substitution), so a caller holding per-segment character offsets can map
12349
+ * them onto the split runs.
12350
+ */
12351
+ charStart?: number;
12352
+ /**
12353
+ * Per-script (`a:ea`/`a:cs`/`a:sym`) font-fallback pieces for this run's
12354
+ * text, when a script it contains needs a font distinct from its own. A
12355
+ * binding renders these as nested spans in place of `text` (see
12356
+ * `text-script-fonts.ts`); absent for the common single-font case.
12357
+ */
12358
+ scriptRuns?: ScriptFontPiece[];
12359
+ /**
12360
+ * Measured tab-stop layout for this run's text, present when it contains an
12361
+ * authored `\t` and the paragraph declares explicit tab stops. A binding
12362
+ * renders these lines/pieces in place of `text`, honouring per-stop
12363
+ * alignment and leader glyphs a plain CSS `tab-size` cannot express (see
12364
+ * `text-tab-run-build.ts`). Absent for the common no-tab case.
12365
+ */
12366
+ tabLines?: TabbedLineRun[];
12367
+ /**
12368
+ * `a:rPr/@u="words"` word/gap pieces of a RUBY run's base text, present only
12369
+ * when such a run's underline is `words` (the ordinary per-word split emits
12370
+ * sibling runs instead; a tab piece carries its own `words`). Same shape as
12371
+ * `scriptRuns` and rendered the same way, in place of `text`: a word entry
12372
+ * carries the decoration for its own span, a gap entry is bare text. The
12373
+ * run's own `style` has the underline stripped when this is set (see
12374
+ * `paragraph-run-build.ts`).
12375
+ */
12376
+ underlineWordPieces?: ScriptFontPiece[];
12377
+ /**
12378
+ * `a:reflection` mirrored-sibling wrapper style for this run (the text-run
12379
+ * counterpart of a shape/picture's `ComputedEffectStyle.reflection`), or
12380
+ * `undefined` for the common no-reflection case. A binding renders a sibling
12381
+ * node just below the run's own, painted with the same text, positioned and
12382
+ * masked by this style - see `render/reflection.ts`'s
12383
+ * `getTextReflectionWrapperStyle`.
12384
+ */
12385
+ reflection?: ReflectionWrapperStyle;
12386
+ }
12387
+ /** A rendered paragraph: runs plus resolved bullet + hanging-indent metadata. */
12388
+ interface RenderParagraph {
12389
+ runs: ParagraphRun[];
12390
+ /** Bullet glyph / number to render before the runs (or `undefined`). */
12391
+ bulletMarker?: string;
12392
+ /** Picture marker rendered before runs, or fallback metadata when unresolved. */
12393
+ bulletPicture?: PictureBulletMarker;
12394
+ /** Inline style for the bullet marker (font / size / colour). */
12395
+ bulletStyle: RunStyle;
12396
+ /** `margin-left` in px for the whole paragraph (hanging-indent layout). */
12397
+ marginLeftPx?: number;
12398
+ /** `text-indent` in px (first-line / hanging indent). */
12399
+ textIndentPx?: number;
12400
+ /**
12401
+ * Per-paragraph `line-height` from this paragraph's own `a:pPr > a:lnSpc`.
12402
+ * A unitless multiplier for proportional spacing (`a:spcPct`) or a `"<n>pt"`
12403
+ * string for exact spacing (`a:spcPts`). Undefined when the paragraph does
12404
+ * not override spacing (binding keeps the body-level line-height).
12405
+ */
12406
+ lineHeight?: number | string;
12407
+ /** `margin-top` in px from this paragraph's `a:pPr > a:spcBef` (space before). */
12408
+ spaceBeforePx?: number;
12409
+ /** `margin-bottom` in px from this paragraph's `a:pPr > a:spcAft` (space after). */
12410
+ spaceAfterPx?: number;
12411
+ /**
12412
+ * `font-size` in px to set on the paragraph element so its CSS line boxes
12413
+ * are built from its OWN runs rather than the text body's default size.
12414
+ * Undefined when the paragraph already matches the body default.
12415
+ *
12416
+ * See `resolveParagraphStrutFontSize` for why this is needed: without it a
12417
+ * paragraph of small runs inside a larger-defaulting body is laid out on
12418
+ * too-tall lines and overflows its shape.
12419
+ */
12420
+ strutFontSizePx?: number;
12421
+ /**
12422
+ * True when the paragraph has no runs and no bullet: an authored blank line
12423
+ * (`<a:p><a:endParaRPr/></a:p>`).
12424
+ *
12425
+ * PowerPoint gives such a paragraph a full line box, which is how decks
12426
+ * space a heading away from the bullet list under it. A binding must render
12427
+ * something with height for it (a `<br>`), or the gap disappears and the
12428
+ * block reads as one dense run of text (issue #131, slides 13-14).
12429
+ */
12430
+ isEmpty?: boolean;
12431
+ /**
12432
+ * Indices of this paragraph's segments in the rendered segment list (the
12433
+ * override list when one was supplied), in authored order and INCLUDING the
12434
+ * bullet-marker segment the runs drop.
12435
+ *
12436
+ * The seam a binding uses to reach paragraph facts the neutral model does not
12437
+ * carry, without regrouping the segments itself and drifting from the
12438
+ * grouping here - which is exactly how React ended up splitting on every
12439
+ * `"\n"` and treating a soft `a:br` as a paragraph break.
12440
+ */
12441
+ segmentIndices: number[];
12442
+ /**
12443
+ * True when this paragraph resolves right-to-left (`a:pPr/@rtl`, or the text
12444
+ * body's default). A binding that mirrors its hanging indent for RTL reads
12445
+ * this; the direction itself is already in {@link paragraphStyle}.
12446
+ */
12447
+ rtl?: boolean;
12448
+ /**
12449
+ * Extra CSS for the paragraph box, beyond the margin / indent / spacing
12450
+ * fields above: this paragraph's own `text-align` (`a:pPr/@algn`), its BiDi
12451
+ * `direction`, and the kinsoku line-breaking rules (`@eaLnBrk`,
12452
+ * `@latinLnBrk`, `@hangingPunct`). Absent when the paragraph overrides none
12453
+ * of them, which is the common case.
12454
+ *
12455
+ * All three used to be resolved in React's private paragraph renderer only,
12456
+ * so a deck that centred one paragraph of a left-aligned body, or set CJK
12457
+ * break rules, rendered differently in the other four bindings.
12458
+ */
12459
+ paragraphStyle?: RunStyle;
12460
+ }
12137
12461
  //#endregion
12138
12462
  //#region src/render/inline-list-types.d.ts
12139
12463
  /** Current editor payload. Missing segments explicitly denotes plain-text fallback. */
@@ -12142,6 +12466,15 @@ interface InlineTextEditSnapshot {
12142
12466
  text: string;
12143
12467
  textSegments?: TextSegment[];
12144
12468
  }
12469
+ type InlineListReadResult = {
12470
+ kind: 'supported';
12471
+ snapshot: InlineTextEditSnapshot;
12472
+ paragraphs: RenderParagraph[];
12473
+ } | {
12474
+ kind: 'unsupported';
12475
+ reason: string;
12476
+ text: string;
12477
+ };
12145
12478
  //#endregion
12146
12479
  //#region src/render/text-field-substitution.d.ts
12147
12480
  /**
@@ -12238,6 +12571,184 @@ interface ShapeAdjustmentHandleDescriptor {
12238
12571
  */
12239
12572
  solvers?: AdjustmentAxisSolver[];
12240
12573
  }
12574
+ interface CollaborationShellState {
12575
+ canEdit: boolean;
12576
+ status: ConnectionStatus$1;
12577
+ remoteUsers: readonly SanitizedPresence[];
12578
+ connectedCount: number;
12579
+ }
12580
+ type CollaborationShellTranslate = (key: string, params?: Record<string, string | number>) => string;
12581
+ /**
12582
+ * One-line, localised status for a custom shell's `role="status"` readout.
12583
+ *
12584
+ * Every binding's custom-shell demo renders this same string under the same
12585
+ * `Collaboration status` label, so the framework-neutral e2e helper that
12586
+ * waits for the shell to become editable (`waitForHostEditing`) reads every
12587
+ * binding the same way. Three of five demos once phrased it differently and
12588
+ * the helper silently skipped them; on vanilla, that let a peer double-click
12589
+ * before its edit gate opened.
12590
+ */
12591
+ declare function describeCollaborationShellState(state: Pick<CollaborationShellState, 'canEdit' | 'status' | 'connectedCount'>, translate: CollaborationShellTranslate): string;
12592
+ //#endregion
12593
+ //#region src/render/collaboration-text-codec.d.ts
12594
+ /**
12595
+ * collaboration-text-codec.ts: TextSegment[] <-> Y.Text delta codec used by the
12596
+ * collaboration sync layer. Split out of collaboration-sync.ts to keep both
12597
+ * modules focused.
12598
+ *
12599
+ * Exports:
12600
+ * - DeltaOp / YTextLike: structural Yjs text interfaces (no yjs import)
12601
+ * - encodeTextBody: write TextSegment[] into a live YTextLike
12602
+ * - encodeSegmentsToDelta: pure simulation of the delta Y.Text would produce
12603
+ * - decodeDelta / decodeTextBody: delta -> TextSegment[]
12604
+ * - isYTextLike: runtime guard
12605
+ */
12606
+ interface DeltaOp {
12607
+ insert?: unknown;
12608
+ attributes?: Record<string, unknown>;
12609
+ }
12610
+ interface YTextLike {
12611
+ insert: (index: number, text: string, attrs?: Record<string, string>) => void;
12612
+ toDelta: () => DeltaOp[];
12613
+ toString: () => string;
12614
+ }
12615
+ //#endregion
12616
+ //#region src/render/collaboration-text-merge.d.ts
12617
+ /** Y.Text surface needed for in-place edits (delete/format on top of insert). */
12618
+ interface YTextEditableLike extends YTextLike {
12619
+ delete: (index: number, length: number) => void;
12620
+ format: (index: number, length: number, attributes: Record<string, string | null>) => void;
12621
+ }
12622
+ //#endregion
12623
+ //#region src/render/collaboration-text-positions.d.ts
12624
+ interface TextPositionCell {
12625
+ index: number;
12626
+ left?: TextPositionCell;
12627
+ right?: TextPositionCell;
12628
+ }
12629
+ interface TrackedTextPosition {
12630
+ /** Internal identity, shared by snapshots that observed the same character. */
12631
+ readonly cell: TextPositionCell;
12632
+ readonly association: number;
12633
+ }
12634
+ //#endregion
12635
+ //#region src/render/collaboration-text-session-delta.d.ts
12636
+ /** Browser edit range mapped to the editor's pre-input encoded coordinates. */
12637
+ interface LocalTextReplacement {
12638
+ from: number;
12639
+ to: number;
12640
+ }
12641
+ /** Desired UTF-16 units mapped to the editor's previously observed identities. */
12642
+ interface TextSessionCorrespondence {
12643
+ readonly retainedIndices: readonly (number | null)[];
12644
+ /** Old carriers for known paragraph attributes, independently of character identity. */
12645
+ readonly paragraphSources?: readonly (number | null)[];
12646
+ }
12647
+ type LocalTextEdit = LocalTextReplacement | TextSessionCorrespondence;
12648
+ //#endregion
12649
+ //#region src/render/collaboration-text-session.d.ts
12650
+ /** Supplied by the binding's existing Yjs runtime, bound to this exact Y.Text. */
12651
+ interface TextSessionPositions<Position> {
12652
+ capture: (index: number, association: number) => Position;
12653
+ resolve: (position: Position) => number | null;
12654
+ /** Synchronize tracked positions once per batch, including in-transaction writes. */
12655
+ refresh?: () => boolean | void;
12656
+ /** Release only resources created for this session. */
12657
+ dispose?: () => void;
12658
+ }
12659
+ /** Opaque acknowledgement identity for an exact remote snapshot painted by an adapter. */
12660
+ interface CollaborationTextSnapshot {
12661
+ readonly delta: readonly DeltaOp[];
12662
+ }
12663
+ interface CollaborationTextSession {
12664
+ applyLocalDelta: (delta: readonly DeltaOp[], edit?: LocalTextEdit) => boolean;
12665
+ readMerged: () => CollaborationTextSnapshot | undefined;
12666
+ adoptMerged: (snapshot: CollaborationTextSnapshot) => boolean;
12667
+ /** Capture an offset in the last painted/local draft, not the newer remote string. */
12668
+ bookmark: (index: number, association: number) => () => number | null;
12669
+ dispose: () => void;
12670
+ }
12671
+ //#endregion
12672
+ //#region src/render/collaboration-sync.d.ts
12673
+ interface YMapLike {
12674
+ get: (key: string) => unknown;
12675
+ set: (key: string, value: unknown) => void;
12676
+ delete: (key: string) => void;
12677
+ forEach: (cb: (value: unknown, key: string) => void) => void;
12678
+ }
12679
+ /** Shape of the Yjs transaction passed to (deep) observers. */
12680
+ interface YTransactionLike {
12681
+ origin?: unknown;
12682
+ }
12683
+ type YDeepObserver = (events?: unknown, transaction?: YTransactionLike) => void;
12684
+ interface YArrayLike {
12685
+ readonly length: number;
12686
+ get: (index: number) => unknown;
12687
+ push: (items: unknown[]) => void;
12688
+ delete: (index: number, length?: number) => void;
12689
+ insert: (index: number, items: unknown[]) => void;
12690
+ toArray: () => unknown[];
12691
+ observe: (handler: () => void) => void;
12692
+ unobserve: (handler: () => void) => void;
12693
+ observeDeep: (handler: YDeepObserver) => void;
12694
+ unobserveDeep: (handler: YDeepObserver) => void;
12695
+ }
12696
+ interface YDocLike {
12697
+ getMap: (name: string) => YMapLike;
12698
+ getArray: (name: string) => YArrayLike;
12699
+ transact: (fn: () => void, origin?: unknown) => void;
12700
+ }
12701
+ interface YjsFactories {
12702
+ createMap: () => YMapLike;
12703
+ createArray: () => YArrayLike;
12704
+ createText: () => YTextLike;
12705
+ /** Track character identities using the binding's existing Yjs runtime. */
12706
+ createTextPositions?: (text: YTextEditableLike) => TextSessionPositions<TrackedTextPosition>;
12707
+ }
12708
+ //#endregion
12709
+ //#region src/render/collaboration-live-patch-target.d.ts
12710
+ /** Interim geometry for an element mid-gesture. All fields optional. */
12711
+ interface LiveGeometryPatch {
12712
+ x?: number;
12713
+ y?: number;
12714
+ width?: number;
12715
+ height?: number;
12716
+ rotation?: number;
12717
+ }
12718
+ /** The element's pre-edit rich text, used to remap the interim plain text. */
12719
+ interface LiveTextSource {
12720
+ textSegments?: TextSegment[];
12721
+ textStyle?: TextStyle;
12722
+ }
12723
+ //#endregion
12724
+ //#region src/render/collaboration-text-target.d.ts
12725
+ interface CollaborationInlineSnapshot extends CollaborationTextSnapshot {
12726
+ readonly inline: InlineTextEditSnapshot;
12727
+ }
12728
+ /** A mounted editor owns this handle, never the document or its provider. */
12729
+ interface CollaborationTextTarget extends CollaborationTextSession {
12730
+ readMerged: () => CollaborationInlineSnapshot | undefined;
12731
+ /** A bookmark follows character identity rather than a mutable numeric offset. */
12732
+ bookmark: (index: number, association: number) => () => number | null;
12733
+ }
12734
+ interface CollaborationLivePatcher {
12735
+ /** Bind a mounted native editor; its handle must be disposed on unmount. */
12736
+ beginTextEdit?: (slideId: string | undefined, elementId: string, onChange?: () => void, ownsModel?: (element: PptxElement) => boolean) => CollaborationTextTarget | undefined;
12737
+ /** Attach a live doc (or `null` to go dormant). Pending patches are dropped. */
12738
+ configure: (doc: YDocLike | null, factories: YjsFactories | null,
12739
+ /** Publish synchronously when the host may revoke write readiness at any time. */
12740
+ immediate?: boolean) => void;
12741
+ /** True when a doc + factories are attached, i.e. patches will be written. */
12742
+ isActive: () => boolean;
12743
+ /** Queue interim geometry for an element. */
12744
+ patchGeometry: (slideId: string | undefined, elementId: string, geometry: LiveGeometryPatch) => void;
12745
+ /** Queue interim text for an element (remapped over `source`'s segments). */
12746
+ patchText: (slideId: string | undefined, elementId: string, text: string, source?: LiveTextSource) => void;
12747
+ /** Write everything queued right now (call on gesture end / edit commit). */
12748
+ flush: () => void;
12749
+ /** Drop pending work, cancel timers and detach the doc. */
12750
+ dispose: () => void;
12751
+ }
12241
12752
  /**
12242
12753
  * A font supplied by the host application. The package never ships fonts:
12243
12754
  * applications provide a licensed URL, data URL, or blob URL for their users.
@@ -12904,6 +13415,58 @@ interface PptxAiBridge {
12904
13415
  notify?(message: string, level?: PptxAiNotifyLevel): void;
12905
13416
  }
12906
13417
  //#endregion
13418
+ //#region src/viewer/hooks/collaboration/types.d.ts
13419
+ /** Connection lifecycle states for the Yjs WebSocket provider. */
13420
+ type ConnectionStatus = 'disconnected' | 'connecting' | 'connected' | 'error';
13421
+ /**
13422
+ * Presence data broadcast to other participants.
13423
+ * Cursor position is relative to the slide canvas (0..canvasWidth, 0..canvasHeight).
13424
+ */
13425
+ interface UserPresence {
13426
+ /** Unique client ID (assigned by Yjs awareness). */
13427
+ clientId: number;
13428
+ /** Sanitised display name. */
13429
+ userName: string;
13430
+ /** Optional avatar URL (validated). */
13431
+ userAvatar?: string;
13432
+ /** Hex colour for the user's cursor ring. */
13433
+ userColor: string;
13434
+ /** Slide index the user is currently viewing. */
13435
+ activeSlideIndex: number;
13436
+ /** Cursor X on the canvas (clamped to slide bounds). */
13437
+ cursorX: number;
13438
+ /** Cursor Y on the canvas (clamped to slide bounds). */
13439
+ cursorY: number;
13440
+ /** ISO timestamp of last update (for stale-presence cleanup). */
13441
+ lastUpdated: string;
13442
+ /** Optional currently selected element ID. */
13443
+ selectedElementId?: string;
13444
+ /** Role in the session (owner, viewer, or collaborator). */
13445
+ role?: CollaborationRole;
13446
+ }
13447
+ /** Value exposed by `CollaborationContext`. */
13448
+ interface CollaborationContextValue {
13449
+ /** Current WebSocket connection status. */
13450
+ status: ConnectionStatus;
13451
+ /** Presence data for all remote users (excludes the local user). */
13452
+ remoteUsers: UserPresence[];
13453
+ /** Broadcast the local user's presence state. */
13454
+ broadcastPresence: (update: Partial<Omit<UserPresence, 'clientId'>>) => void;
13455
+ /** Total number of connected users (including local). */
13456
+ connectedCount: number;
13457
+ /** The collaboration config that was provided. */
13458
+ config: CollaborationConfig;
13459
+ /** The Yjs document (for document sync). */
13460
+ doc: Doc | null;
13461
+ /**
13462
+ * Whether the provider completed its initial document sync (or the
13463
+ * first-write grace period elapsed). Local doc writes are gated on this.
13464
+ */
13465
+ synced: boolean;
13466
+ /** Manually retry the WebSocket connection after a timeout or error. */
13467
+ retry: () => void;
13468
+ }
13469
+ //#endregion
12907
13470
  //#region src/viewer/types-ui.d.ts
12908
13471
  /**
12909
13472
  * Base handle interface for file viewer components.
@@ -13522,6 +14085,9 @@ interface ZoomViewport {
13522
14085
  editorScale: number;
13523
14086
  }
13524
14087
  interface SlideCanvasProps {
14088
+ /** The viewer-owned live channel; absent for static/custom non-collaborative canvases. */
14089
+ livePatcher?: CollaborationLivePatcher;
14090
+ registerInlineEditReader?: (elementId: string, read: () => InlineListReadResult) => () => void;
13525
14091
  /** Native image paste commands supplied by the stock or headless editor. */
13526
14092
  imagePaste?: CanvasImagePasteHandlers;
13527
14093
  activeSlide: PptxSlide | undefined;
@@ -13672,8 +14238,10 @@ type AutosaveStatus = {
13672
14238
  message: string;
13673
14239
  };
13674
14240
  //#endregion
13675
- //#region src/viewer/hooks/useViewerBuildingBlocks.d.ts
14241
+ //#region src/viewer/hooks/useViewerBuildingBlocks-types.d.ts
13676
14242
  interface UseViewerBuildingBlocksInput extends ViewportFitOptions {
14243
+ /** Optional collaboration, including a host-owned document and presence session. */
14244
+ collaboration?: CollaborationConfig;
13677
14245
  /** PPTX content as ArrayBuffer/Uint8Array, or null/undefined while no file is loaded. */
13678
14246
  content: ArrayBuffer | Uint8Array | null | undefined;
13679
14247
  /** Whether editing actions are enabled. Defaults to false (view-only). */
@@ -13689,7 +14257,7 @@ interface UseViewerBuildingBlocksInput extends ViewportFitOptions {
13689
14257
  /** Host-supplied list of toolbar buttons/ribbon tabs to hide. */
13690
14258
  hiddenActions?: readonly ToolbarActionId[];
13691
14259
  /** Imperative handle ref, exposing the same `PowerPointViewerHandle` API `PowerPointViewer` does. */
13692
- handle?: React.ForwardedRef<PowerPointViewerHandle>;
14260
+ handle?: React$1__default.ForwardedRef<PowerPointViewerHandle>;
13693
14261
  onContentChange?: (content: Uint8Array) => void;
13694
14262
  onDirtyChange?: (dirty: boolean) => void;
13695
14263
  onActiveSlideChange?: (index: number) => void;
@@ -13705,6 +14273,15 @@ interface UseViewerBuildingBlocksInput extends ViewportFitOptions {
13705
14273
  onOpenShareDialog?: () => void;
13706
14274
  }
13707
14275
  interface ViewerBuildingBlocksResult {
14276
+ /** Connection and presence state for a custom status bar, or null when disabled. */
14277
+ collaboration: CollaborationContextValue | null;
14278
+ /**
14279
+ * Effective edit permission plus connection/presence counts, in the shape
14280
+ * every binding's custom shell receives (Vue/Svelte `shellState`, Angular
14281
+ * `state()`, Vanilla `getState()`); pass it to
14282
+ * `describeCollaborationShellState` for a localised status line.
14283
+ */
14284
+ shellState: CollaborationShellState;
13708
14285
  /** Flat, self-contained props for the standalone `<Toolbar>` component. */
13709
14286
  toolbarProps: ToolbarProps;
13710
14287
  /** Flat, self-contained props for the standalone `<SlideCanvas>` component. */
@@ -13718,13 +14295,15 @@ interface ViewerBuildingBlocksResult {
13718
14295
  /** Current autosave-to-localStorage recovery status. */
13719
14296
  autosaveStatus: AutosaveStatus;
13720
14297
  }
14298
+ //#endregion
14299
+ //#region src/viewer/hooks/useViewerBuildingBlocks.d.ts
13721
14300
  declare function useViewerBuildingBlocks(input: UseViewerBuildingBlocksInput): ViewerBuildingBlocksResult;
13722
14301
 
13723
14302
  //#region src/viewer/components/Toolbar.d.ts
13724
14303
  declare function Toolbar(p: ToolbarProps): React$1__default.ReactElement;
13725
14304
  //#endregion
13726
14305
  //#region src/viewer/components/SlideCanvas.d.ts
13727
- declare function SlideCanvas({ imagePaste, activeSlide, templateElements, canvasSize, zoom, mode, canEdit, editTemplateMode, selectedElementIdSet, selectedElement, inlineEditingElementId, inlineEditingText, spellCheckEnabled, mediaDataUrls, tableEditorState, marqueeSelectionState, snapLines, showGrid, gridSpacingPx, showRulers, rulerUnit, guides, presentationElementStates, presentationKeyframesCss, onClick, onDoubleClick, onMouseDown, onContextMenu, onCanvasMouseDown, onResizePointerDown, onAdjustmentPointerDown, onRotate, onInlineEditChange, onInlineEditCommit, onInlineEditCancel, onTableCellSelect, onCommitCellEdit, onUpdateSmartArtElement, onFormatText, onResizeTableColumns, onResizeTableRow, findResults, findResultIndex, activeSlideIndex, activeTool, drawingColor, drawingWidth, isDrawingRef, onAddInkElement, onAddFreeformShape, onEraseInkElement, onActionClick, onHyperlinkClick, comments, showCommentMarkers, onCommentMarkerClick, onMoveGuide, onDeleteGuide, onCreateGuideFromRuler, connectorCreationMode, onCreateConnector, onUpdateSlideAnimations, allSlides, onZoomClick, sourceSlideIndex, fieldContext, tableStyleContext, collaborationOverlay, aiActive }: SlideCanvasProps): React$1.JSX.Element;
14306
+ declare function SlideCanvas(props: SlideCanvasProps): React$1.JSX.Element;
13728
14307
  //#endregion
13729
14308
  //#region src/viewer/components/SlideTemplateGalleryDialog.d.ts
13730
14309
  interface SlideTemplateGalleryDialogProps {
@@ -13763,5 +14342,5 @@ declare function SlideTemplatePreview({ templateId, scheme }: SlideTemplatePrevi
13763
14342
  */
13764
14343
  declare function renderToCanvas(element: HTMLElement, options?: Partial<Options>): Promise<HTMLCanvasElement>;
13765
14344
 
13766
- export { AVATAR_COLOR_SWATCHES, DEFAULT_VIEWER_PROFILE, LOCALE_CATALOG, PPTX_OPEN_ACCEPT, PRESENTATION_OPEN_EXTENSIONS, PowerPointViewer, SLIDE_TEMPLATES, SlideCanvas, SlideTemplateGalleryDialog, SlideTemplatePreview, THEME_CATALOG, Toolbar, VIEWER_PREFS_STORAGE_KEY, ViewerThemeProvider, buildSlideTemplateContent, buildSlideTemplateSlide, clearAllLocalViewerData, clearStoredViewerPrefs, createImageElementFromFile, defaultCssVars, defaultRadius, defaultThemeColors, getAnimationInitialStyle, getLocalStorageUsageSummary, isLegacyBinaryPresentation, isSupportedPresentationFile, presentationBaseName, readStoredViewerPrefs, renderToCanvas, resolveProfileInitial, resolveThemeCatalogEntry, saveViewerProfile, savedPresentationFileName, themeToCssVars, useViewerBuildingBlocks, useViewerTheme, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, writeStoredViewerPrefs };
13767
- export type { AccountAuthConfig, CollaborationConfig, ElementUpdate, ElementUpdateOptions, ExternalCollaborationAwareness, ExternalCollaborationSession, ExternalCollaborationSnapshot, LocalStorageUsageSummary, LocaleCatalogEntry, PowerPointViewerAPI, PowerPointViewerHandle, PowerPointViewerProps, PptxAiBridge, PptxAiConfig, PptxAiConnection, PptxAiContextStrategy, PptxAiToolName, PptxAiWritePolicy, SavedPresentationFormat, SlideCanvasProps, SlideTemplateGalleryDialogProps, SlideTemplateId, SlideTemplatePreviewProps, SlideTemplateSpec, StoredViewerPrefs, ThemeCatalogEntry, ToolbarActionId, ToolbarButtonId, ToolbarProps, ToolbarTabId, UseViewerBuildingBlocksInput, ViewerBuildingBlocksResult, ViewerMode, ViewerProfile, ViewerTheme, ViewerThemeColors, ViewportFitOptions, ViewportFitPadding };
14345
+ export { AVATAR_COLOR_SWATCHES, DEFAULT_VIEWER_PROFILE, LOCALE_CATALOG, PPTX_OPEN_ACCEPT, PRESENTATION_OPEN_EXTENSIONS, PowerPointViewer, SLIDE_TEMPLATES, SlideCanvas, SlideTemplateGalleryDialog, SlideTemplatePreview, THEME_CATALOG, Toolbar, VIEWER_PREFS_STORAGE_KEY, ViewerThemeProvider, buildSlideTemplateContent, buildSlideTemplateSlide, clearAllLocalViewerData, clearStoredViewerPrefs, createImageElementFromFile, defaultCssVars, defaultRadius, defaultThemeColors, describeCollaborationShellState, getAnimationInitialStyle, getLocalStorageUsageSummary, isLegacyBinaryPresentation, isSupportedPresentationFile, presentationBaseName, readStoredViewerPrefs, renderToCanvas, resolveProfileInitial, resolveThemeCatalogEntry, saveViewerProfile, savedPresentationFileName, themeToCssVars, useViewerBuildingBlocks, useViewerTheme, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, writeStoredViewerPrefs };
14346
+ export type { AccountAuthConfig, CollaborationConfig, CollaborationContextValue, CollaborationShellState, ElementUpdate, ElementUpdateOptions, ExternalCollaborationAwareness, ExternalCollaborationSession, ExternalCollaborationSnapshot, LocalStorageUsageSummary, LocaleCatalogEntry, PowerPointViewerAPI, PowerPointViewerHandle, PowerPointViewerProps, PptxAiBridge, PptxAiConfig, PptxAiConnection, PptxAiContextStrategy, PptxAiToolName, PptxAiWritePolicy, SavedPresentationFormat, SlideCanvasProps, SlideTemplateGalleryDialogProps, SlideTemplateId, SlideTemplatePreviewProps, SlideTemplateSpec, StoredViewerPrefs, ThemeCatalogEntry, ToolbarActionId, ToolbarButtonId, ToolbarProps, ToolbarTabId, UseViewerBuildingBlocksInput, ViewerBuildingBlocksResult, ViewerMode, ViewerProfile, ViewerTheme, ViewerThemeColors, ViewportFitOptions, ViewportFitPadding };