pptx-react-viewer 4.1.6 → 4.3.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 (194) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/dist/{AiChatPanel-DRCY3T2Z.js → AiChatPanel-7UQA25FA.js} +28 -28
  3. package/dist/AiChatPanel-7UQA25FA.js.br +0 -0
  4. package/dist/AiChatPanel-7UQA25FA.js.gz +0 -0
  5. package/dist/{AiChatPanel-Y2RKSHOO.mjs → AiChatPanel-UCEK3ZTD.mjs} +4 -4
  6. package/dist/AiChatPanel-UCEK3ZTD.mjs.br +0 -0
  7. package/dist/AiChatPanel-UCEK3ZTD.mjs.gz +0 -0
  8. package/dist/{Model3DScene-ITHRMCLT.mjs → Model3DScene-AI2JTBQM.mjs} +1 -1
  9. package/dist/Model3DScene-AI2JTBQM.mjs.br +0 -0
  10. package/dist/Model3DScene-AI2JTBQM.mjs.gz +0 -0
  11. package/dist/{Model3DScene-VJZS726S.js → Model3DScene-X3DS3ELB.js} +2 -2
  12. package/dist/Model3DScene-X3DS3ELB.js.br +0 -0
  13. package/dist/Model3DScene-X3DS3ELB.js.gz +0 -0
  14. package/dist/{chunk-IXS7DALE.js → OrbitControls-4TDJCTBA.js} +1 -0
  15. package/dist/OrbitControls-4TDJCTBA.js.br +0 -0
  16. package/dist/OrbitControls-4TDJCTBA.js.gz +0 -0
  17. package/dist/{chunk-MV2GCDBR.mjs → OrbitControls-WCOIJFFL.mjs} +1 -0
  18. package/dist/OrbitControls-WCOIJFFL.mjs.br +0 -0
  19. package/dist/OrbitControls-WCOIJFFL.mjs.gz +0 -0
  20. package/dist/{chunk-FT3MMIXW.mjs → chunk-3UWJWJCR.mjs} +69243 -56884
  21. package/dist/chunk-3UWJWJCR.mjs.br +0 -0
  22. package/dist/chunk-3UWJWJCR.mjs.gz +0 -0
  23. package/dist/{chunk-LNSYROED.js → chunk-42XEZVUQ.js} +1322 -1216
  24. package/dist/chunk-42XEZVUQ.js.br +0 -0
  25. package/dist/chunk-42XEZVUQ.js.gz +0 -0
  26. package/dist/{chunk-P5LF34BT.js → chunk-E7O4HTS5.js} +195 -187
  27. package/dist/chunk-E7O4HTS5.js.br +0 -0
  28. package/dist/chunk-E7O4HTS5.js.gz +0 -0
  29. package/dist/{chunk-2O66VMWK.js → chunk-KAO5USPE.js} +5 -5
  30. package/dist/chunk-KAO5USPE.js.br +0 -0
  31. package/dist/chunk-KAO5USPE.js.gz +0 -0
  32. package/dist/{chunk-PC7H3C5W.mjs → chunk-OBQ453H6.mjs} +2 -2
  33. package/dist/chunk-OBQ453H6.mjs.br +0 -0
  34. package/dist/chunk-OBQ453H6.mjs.gz +0 -0
  35. package/dist/{chunk-KDTE5JOW.mjs → chunk-PLDG3CXW.mjs} +18 -10
  36. package/dist/chunk-PLDG3CXW.mjs.br +0 -0
  37. package/dist/chunk-PLDG3CXW.mjs.gz +0 -0
  38. package/dist/{chunk-YHTDDCSC.mjs → chunk-RXYLPESV.mjs} +265 -159
  39. package/dist/chunk-RXYLPESV.mjs.br +0 -0
  40. package/dist/chunk-RXYLPESV.mjs.gz +0 -0
  41. package/dist/{chunk-OFSKGB3W.mjs → chunk-SKTZSG7Q.mjs} +531 -748
  42. package/dist/chunk-SKTZSG7Q.mjs.br +0 -0
  43. package/dist/chunk-SKTZSG7Q.mjs.gz +0 -0
  44. package/dist/{chunk-QMSSDBKN.js → chunk-UTI4CLYJ.js} +69255 -56897
  45. package/dist/chunk-UTI4CLYJ.js.br +0 -0
  46. package/dist/chunk-UTI4CLYJ.js.gz +0 -0
  47. package/dist/{chunk-NXGUR2DO.js → chunk-W5KLLGVH.js} +2 -2
  48. package/dist/chunk-W5KLLGVH.js.br +0 -0
  49. package/dist/chunk-W5KLLGVH.js.gz +0 -0
  50. package/dist/{chunk-VWGJXNMR.js → chunk-Y7LI2JIR.js} +1992 -2215
  51. package/dist/chunk-Y7LI2JIR.js.br +0 -0
  52. package/dist/chunk-Y7LI2JIR.js.gz +0 -0
  53. package/dist/{chunk-QEYWSHNE.mjs → chunk-YQJOCGOK.mjs} +1 -1
  54. package/dist/chunk-YQJOCGOK.mjs.br +0 -0
  55. package/dist/chunk-YQJOCGOK.mjs.gz +0 -0
  56. package/dist/i18n/de.cjs +2 -2
  57. package/dist/i18n/de.cjs.br +0 -0
  58. package/dist/i18n/de.cjs.gz +0 -0
  59. package/dist/i18n/de.mjs +2 -2
  60. package/dist/i18n/de.mjs.br +0 -0
  61. package/dist/i18n/de.mjs.gz +0 -0
  62. package/dist/i18n/es.cjs +2 -2
  63. package/dist/i18n/es.cjs.br +0 -0
  64. package/dist/i18n/es.cjs.gz +0 -0
  65. package/dist/i18n/es.mjs +2 -2
  66. package/dist/i18n/es.mjs.br +0 -0
  67. package/dist/i18n/es.mjs.gz +0 -0
  68. package/dist/i18n/fr.cjs +2 -2
  69. package/dist/i18n/fr.cjs.br +0 -0
  70. package/dist/i18n/fr.cjs.gz +0 -0
  71. package/dist/i18n/fr.mjs +2 -2
  72. package/dist/i18n/fr.mjs.br +0 -0
  73. package/dist/i18n/fr.mjs.gz +0 -0
  74. package/dist/i18n/zh-CN.cjs +2 -2
  75. package/dist/i18n/zh-CN.cjs.br +0 -0
  76. package/dist/i18n/zh-CN.cjs.gz +0 -0
  77. package/dist/i18n/zh-CN.mjs +2 -2
  78. package/dist/i18n/zh-CN.mjs.br +0 -0
  79. package/dist/i18n/zh-CN.mjs.gz +0 -0
  80. package/dist/i18n.js +4 -4
  81. package/dist/i18n.js.br +0 -0
  82. package/dist/i18n.js.gz +0 -0
  83. package/dist/i18n.mjs +1 -1
  84. package/dist/i18n.mjs.br +0 -0
  85. package/dist/i18n.mjs.gz +0 -0
  86. package/dist/index.d.ts +310 -22
  87. package/dist/index.js +49 -49
  88. package/dist/index.js.br +0 -0
  89. package/dist/index.js.gz +0 -0
  90. package/dist/index.mjs +6 -6
  91. package/dist/index.mjs.br +0 -0
  92. package/dist/index.mjs.gz +0 -0
  93. package/dist/internals.d.ts +358 -22
  94. package/dist/internals.js +105 -105
  95. package/dist/internals.js.br +0 -0
  96. package/dist/internals.js.gz +0 -0
  97. package/dist/internals.mjs +4 -4
  98. package/dist/internals.mjs.br +0 -0
  99. package/dist/internals.mjs.gz +0 -0
  100. package/dist/pptx-viewer.css +1 -1
  101. package/dist/pptx-viewer.css.br +0 -0
  102. package/dist/pptx-viewer.css.gz +0 -0
  103. package/dist/viewer/index.d.ts +278 -3
  104. package/dist/viewer/index.js +27 -27
  105. package/dist/viewer/index.js.br +0 -0
  106. package/dist/viewer/index.js.gz +0 -0
  107. package/dist/viewer/index.mjs +6 -6
  108. package/dist/viewer/index.mjs.br +0 -0
  109. package/dist/viewer/index.mjs.gz +0 -0
  110. package/package.json +1 -1
  111. package/dist/AiChatPanel-DRCY3T2Z.js.br +0 -0
  112. package/dist/AiChatPanel-DRCY3T2Z.js.gz +0 -0
  113. package/dist/AiChatPanel-Y2RKSHOO.mjs.br +0 -0
  114. package/dist/AiChatPanel-Y2RKSHOO.mjs.gz +0 -0
  115. package/dist/Area3DChartScene-J4LMNSGM.js +0 -64
  116. package/dist/Area3DChartScene-J4LMNSGM.js.br +0 -0
  117. package/dist/Area3DChartScene-J4LMNSGM.js.gz +0 -0
  118. package/dist/Area3DChartScene-TDACCSOI.mjs +0 -62
  119. package/dist/Area3DChartScene-TDACCSOI.mjs.br +0 -0
  120. package/dist/Area3DChartScene-TDACCSOI.mjs.gz +0 -0
  121. package/dist/Bar3DChartScene-AD72DLBJ.mjs +0 -62
  122. package/dist/Bar3DChartScene-AD72DLBJ.mjs.br +0 -0
  123. package/dist/Bar3DChartScene-AD72DLBJ.mjs.gz +0 -0
  124. package/dist/Bar3DChartScene-T7334CTK.js +0 -64
  125. package/dist/Bar3DChartScene-T7334CTK.js.br +0 -0
  126. package/dist/Bar3DChartScene-T7334CTK.js.gz +0 -0
  127. package/dist/Line3DChartScene-2ZQSCHK3.mjs +0 -62
  128. package/dist/Line3DChartScene-2ZQSCHK3.mjs.br +0 -0
  129. package/dist/Line3DChartScene-2ZQSCHK3.mjs.gz +0 -0
  130. package/dist/Line3DChartScene-ELVKCFJZ.js +0 -64
  131. package/dist/Line3DChartScene-ELVKCFJZ.js.br +0 -0
  132. package/dist/Line3DChartScene-ELVKCFJZ.js.gz +0 -0
  133. package/dist/Model3DScene-ITHRMCLT.mjs.br +0 -0
  134. package/dist/Model3DScene-ITHRMCLT.mjs.gz +0 -0
  135. package/dist/Model3DScene-VJZS726S.js.br +0 -0
  136. package/dist/Model3DScene-VJZS726S.js.gz +0 -0
  137. package/dist/OrbitControls-2XOMWUVE.mjs +0 -3
  138. package/dist/OrbitControls-2XOMWUVE.mjs.br +0 -0
  139. package/dist/OrbitControls-2XOMWUVE.mjs.gz +0 -0
  140. package/dist/OrbitControls-CGYUF3BY.js +0 -12
  141. package/dist/OrbitControls-CGYUF3BY.js.br +0 -0
  142. package/dist/OrbitControls-CGYUF3BY.js.gz +0 -0
  143. package/dist/PieChart3DScene-N3DM33FW.js +0 -58
  144. package/dist/PieChart3DScene-N3DM33FW.js.br +0 -0
  145. package/dist/PieChart3DScene-N3DM33FW.js.gz +0 -0
  146. package/dist/PieChart3DScene-PYHOA7BO.mjs +0 -56
  147. package/dist/PieChart3DScene-PYHOA7BO.mjs.br +0 -0
  148. package/dist/PieChart3DScene-PYHOA7BO.mjs.gz +0 -0
  149. package/dist/SmartArt3DScene-D4VNNPHS.mjs +0 -500
  150. package/dist/SmartArt3DScene-D4VNNPHS.mjs.br +0 -0
  151. package/dist/SmartArt3DScene-D4VNNPHS.mjs.gz +0 -0
  152. package/dist/SmartArt3DScene-NHD7CZJ5.js +0 -502
  153. package/dist/SmartArt3DScene-NHD7CZJ5.js.br +0 -0
  154. package/dist/SmartArt3DScene-NHD7CZJ5.js.gz +0 -0
  155. package/dist/SurfaceChart3DScene-IFBUOLNB.mjs +0 -62
  156. package/dist/SurfaceChart3DScene-IFBUOLNB.mjs.br +0 -0
  157. package/dist/SurfaceChart3DScene-IFBUOLNB.mjs.gz +0 -0
  158. package/dist/SurfaceChart3DScene-PUWIMT7V.js +0 -64
  159. package/dist/SurfaceChart3DScene-PUWIMT7V.js.br +0 -0
  160. package/dist/SurfaceChart3DScene-PUWIMT7V.js.gz +0 -0
  161. package/dist/chunk-2O66VMWK.js.br +0 -0
  162. package/dist/chunk-2O66VMWK.js.gz +0 -0
  163. package/dist/chunk-DNR6CH6I.js +0 -30
  164. package/dist/chunk-DNR6CH6I.js.br +0 -0
  165. package/dist/chunk-DNR6CH6I.js.gz +0 -0
  166. package/dist/chunk-FT3MMIXW.mjs.br +0 -0
  167. package/dist/chunk-FT3MMIXW.mjs.gz +0 -0
  168. package/dist/chunk-IXS7DALE.js.br +0 -0
  169. package/dist/chunk-IXS7DALE.js.gz +0 -0
  170. package/dist/chunk-KDTE5JOW.mjs.br +0 -0
  171. package/dist/chunk-KDTE5JOW.mjs.gz +0 -0
  172. package/dist/chunk-LNSYROED.js.br +0 -0
  173. package/dist/chunk-LNSYROED.js.gz +0 -0
  174. package/dist/chunk-MV2GCDBR.mjs.br +0 -0
  175. package/dist/chunk-MV2GCDBR.mjs.gz +0 -0
  176. package/dist/chunk-NXGUR2DO.js.br +0 -0
  177. package/dist/chunk-NXGUR2DO.js.gz +0 -0
  178. package/dist/chunk-OFSKGB3W.mjs.br +0 -0
  179. package/dist/chunk-OFSKGB3W.mjs.gz +0 -0
  180. package/dist/chunk-P5LF34BT.js.br +0 -0
  181. package/dist/chunk-P5LF34BT.js.gz +0 -0
  182. package/dist/chunk-PC7H3C5W.mjs.br +0 -0
  183. package/dist/chunk-PC7H3C5W.mjs.gz +0 -0
  184. package/dist/chunk-QEYWSHNE.mjs.br +0 -0
  185. package/dist/chunk-QEYWSHNE.mjs.gz +0 -0
  186. package/dist/chunk-QMSSDBKN.js.br +0 -0
  187. package/dist/chunk-QMSSDBKN.js.gz +0 -0
  188. package/dist/chunk-T6GFCLSM.mjs +0 -27
  189. package/dist/chunk-T6GFCLSM.mjs.br +0 -4
  190. package/dist/chunk-T6GFCLSM.mjs.gz +0 -0
  191. package/dist/chunk-VWGJXNMR.js.br +0 -0
  192. package/dist/chunk-VWGJXNMR.js.gz +0 -0
  193. package/dist/chunk-YHTDDCSC.mjs.br +0 -0
  194. package/dist/chunk-YHTDDCSC.mjs.gz +0 -0
@@ -1396,6 +1396,32 @@ interface TextStyle {
1396
1396
  * @see element-paragraph-geometry.ts
1397
1397
  */
1398
1398
  resolvedParagraphGeometry?: TextStyle;
1399
+ /**
1400
+ * Snapshot of the ELEMENT-scope `a:bodyPr` properties (vertical anchor,
1401
+ * text direction, columns, overflow, autofit, body insets, text wrap, and
1402
+ * the boolean/rotation attributes) as the load pipeline resolved them.
1403
+ *
1404
+ * A shape's own `a:bodyPr` is parsed first, then whatever it left
1405
+ * `undefined` is back-filled from the placeholder / layout / master
1406
+ * defaults (`applyPlaceholderBodyDefaults`), and a placeholder shape with
1407
+ * no `a:bodyPr` of its own has the INHERITED one parsed as if it were its
1408
+ * own. None of those three sources is distinguishable at
1409
+ * `element.textStyle` once the cascade finishes, so a writer that
1410
+ * re-emits every defined field turns an inherited anchor, inset, autofit
1411
+ * mode or `rtlCol` into a value pinned on the slide forever (and an
1412
+ * inherited `a:normAutofit` with no scale gets written back as
1413
+ * `a:spAutoFit`, flipping AutoSize from "shrink text" to "resize shape").
1414
+ *
1415
+ * Present only on an `element.textStyle` that came from a parsed deck.
1416
+ * The save path diffs the live style against this snapshot: a field that
1417
+ * still matches is an inheritance artefact and the writer leaves the
1418
+ * underlying `a:bodyPr` attribute untouched (whatever it already is,
1419
+ * present or absent); a field that differs was authored or has since
1420
+ * been edited and is written out.
1421
+ *
1422
+ * @see element-body-properties.ts
1423
+ */
1424
+ resolvedBodyProperties?: TextStyle;
1399
1425
  fontFamily?: string;
1400
1426
  fontSize?: number;
1401
1427
  /** When true, some form of autofit is in effect; see {@link autoFitMode} for which. */
@@ -1578,6 +1604,16 @@ interface TextStyle {
1578
1604
  align: 'l' | 'ctr' | 'r' | 'dec';
1579
1605
  leader?: 'none' | 'dot' | 'hyphen' | 'underscore';
1580
1606
  }>;
1607
+ /**
1608
+ * True when the paragraph's own `a:pPr` authored an EMPTY `<a:tabLst/>`
1609
+ * (explicitly "no tab stops", overriding whatever the cascade would
1610
+ * otherwise supply) rather than omitting the element entirely (inherit).
1611
+ * fast-xml-parser gives a childless element as the empty string, so
1612
+ * `tabLst` and no-`tabLst` are otherwise indistinguishable once `tabStops`
1613
+ * comes back empty either way. Paragraph-scope only; not part of the
1614
+ * element-level geometry cascade.
1615
+ */
1616
+ tabStopsExplicitEmpty?: boolean;
1581
1617
  /** Body text wrapping mode from `a:bodyPr/@wrap`. */
1582
1618
  textWrap?: 'square' | 'none';
1583
1619
  /** Preset text warp type from `a:bodyPr/a:prstTxWarp`. */
@@ -1620,6 +1656,20 @@ interface TextStyle {
1620
1656
  * serialised back on save, so it never disturbs the round-trip typefaces.
1621
1657
  */
1622
1658
  scriptFallbackFont?: string;
1659
+ /**
1660
+ * Set alongside {@link scriptFallbackFont} when the resolved {@link fontFamily}
1661
+ * came only from the paragraph/list-style/theme CASCADE (the run's own
1662
+ * `a:rPr` authored no `a:latin`/`a:ea`/`a:cs` of its own). A run always
1663
+ * inherits SOME font this way (typically the theme's `+mn-lt`), so without
1664
+ * this flag `fontFamily` was indistinguishable from a run that genuinely
1665
+ * chose that font itself, and the renderer never applied the theme's
1666
+ * per-script override (see #83): `+mn-lt` names only the LATIN member of
1667
+ * the font scheme and was never meant to cover text in a different
1668
+ * dominant script. An explicit `a:latin`/`a:ea`/`a:cs` authored on the run
1669
+ * itself still always wins; only the cascade default yields to the
1670
+ * script-specific override.
1671
+ */
1672
+ fontFamilyIsCascadeDefault?: boolean;
1623
1673
  /** Text language from `a:rPr/@lang`. */
1624
1674
  language?: string;
1625
1675
  /** Hyperlink mouse-over target from `a:hlinkMouseOver`. */
@@ -1972,6 +2022,18 @@ interface BulletInfo {
1972
2022
  /** When true, `<a:buSzTx/>` was specified — inherit the bullet size from
1973
2023
  * the run text font size. */
1974
2024
  sizeInherit?: boolean;
2025
+ /**
2026
+ * True when this bullet resolution came from the paragraph's OWN `a:pPr`
2027
+ * rather than the shape's `a:lstStyle`, an inherited placeholder, or the
2028
+ * master's `a:defPPr` / `p:txStyles`. `resolveParagraphBulletInfo` walks
2029
+ * that cascade and returns the first match, so without this flag a
2030
+ * writer that re-emits every resolved `BulletInfo` in full pins an
2031
+ * inherited bullet (e.g. a master `buFont="Arial"` / `buChar="•"`) onto
2032
+ * every paragraph's own `a:pPr` the moment the slide is rewritten. The
2033
+ * save path only writes the bullet group when this is `true`, mirroring
2034
+ * how `paragraphProperties` gates every other per-paragraph field.
2035
+ */
2036
+ ownedByParagraph?: boolean;
1975
2037
  }
1976
2038
  /**
1977
2039
  * A single text run within a paragraph.
@@ -2014,6 +2076,23 @@ interface TextSegment {
2014
2076
  fieldParagraphPropertiesXml?: XmlObject;
2015
2077
  /** Raw OMML XML node for equation segments (from `a14:m` / `m:oMathPara`). */
2016
2078
  equationXml?: Record<string, unknown>;
2079
+ /**
2080
+ * The ORIGINAL top-level paragraph child that carried this equation,
2081
+ * captured verbatim at parse time and keyed by its own tag: `{ 'a14:m':
2082
+ * ... }`, `{ 'm:oMathPara': ... }`, `{ 'm:oMath': ... }`, or `{
2083
+ * 'mc:AlternateContent': ... }` for an equation authored behind a
2084
+ * Choice/Fallback switch. `equationXml` above is the resolved math content
2085
+ * used for rendering (unwrapped one level for `a14:m`/`mc:AlternateContent`
2086
+ * sources); this field exists solely so the writer can re-emit an UNTOUCHED
2087
+ * equation byte-for-byte, Choice and Fallback both, instead of collapsing
2088
+ * it to a bare math element PowerPoint's own writer never produces.
2089
+ * `undefined` for a freshly inserted or edited equation, which the writer
2090
+ * instead reconstructs from `equationXml` (always `{ 'm:oMathPara': ... }`
2091
+ * or `{ 'm:oMath': ... }` for those cases). Any code that replaces
2092
+ * `equationXml` on an existing segment must drop this field, or the writer
2093
+ * would keep re-emitting the equation's OLD XML instead of the edit.
2094
+ */
2095
+ equationSourceXml?: Record<string, unknown>;
2017
2096
  /**
2018
2097
  * Optional equation number for numbered equations (e.g. "(1)", "(2.3)").
2019
2098
  * When present, the equation is rendered centered with the number right-aligned.
@@ -2298,6 +2377,24 @@ interface PptxShapeProperties {
2298
2377
  */
2299
2378
  interface PlaceholderTextLevelStyle {
2300
2379
  fontFamily?: string;
2380
+ /**
2381
+ * The RAW `a:defRPr/a:latin/@typeface` string (verbatim: a theme alias
2382
+ * such as `+mj-lt`/`+mn-lt`, or a literal face name) {@link fontFamily}
2383
+ * was resolved from. Master/layout text styles are parsed once and
2384
+ * cached, so `fontFamily` is a resolved-for-display snapshot; re-emitting
2385
+ * it as the literal name on every save (the master-level analogue of
2386
+ * `colorChoiceXml` below) flattens the theme alias the moment ANYTHING
2387
+ * about the deck is rewritten, even when this level was never touched.
2388
+ * Absent when the level declares no `a:latin`.
2389
+ */
2390
+ fontTypefaceXml?: string;
2391
+ /**
2392
+ * Snapshot of {@link fontFamily} exactly as parsed, before any edit. The
2393
+ * save path diffs the live value against this: unchanged means re-emit
2394
+ * {@link fontTypefaceXml} verbatim (preserve the alias); different means
2395
+ * a genuine edit, so the new literal name is written instead.
2396
+ */
2397
+ resolvedFontFamily?: string;
2301
2398
  fontSize?: number;
2302
2399
  bold?: boolean;
2303
2400
  italic?: boolean;
@@ -2347,8 +2444,32 @@ interface PlaceholderTextLevelStyle {
2347
2444
  tabStops?: TextStyle['tabStops'];
2348
2445
  lineSpacing?: number;
2349
2446
  lineSpacingExactPt?: number;
2447
+ /**
2448
+ * Space before the paragraph in px, resolved from EITHER `a:spcPts`
2449
+ * (absolute) or `a:spcPct` (a percentage of this level's own `a:defRPr`
2450
+ * font size) - the OOXML source is not distinguishable from this field
2451
+ * alone. See {@link spaceBeforePercent} / {@link resolvedSpaceBefore}.
2452
+ */
2350
2453
  spaceBefore?: number;
2351
2454
  spaceAfter?: number;
2455
+ /**
2456
+ * Snapshot of {@link spaceBefore} / {@link spaceAfter} exactly as parsed.
2457
+ * Diffed the same way as {@link resolvedFontFamily}: unchanged means the
2458
+ * writer re-emits the ORIGINAL form (`a:spcPct` when
2459
+ * {@link spaceBeforePercent} / {@link spaceAfterPercent} is set); a value
2460
+ * that has since moved away from the snapshot is a genuine edit and is
2461
+ * always written as `a:spcPts`, since an editor works in absolute units.
2462
+ */
2463
+ resolvedSpaceBefore?: number;
2464
+ resolvedSpaceAfter?: number;
2465
+ /**
2466
+ * The raw `a:spcPct` fraction (e.g. `0.2` for 20%) {@link spaceBefore} /
2467
+ * {@link spaceAfter} was resolved from, when the source used percentage
2468
+ * spacing rather than `a:spcPts`. Absent when the source used `a:spcPts`
2469
+ * (or authored no spacing at all).
2470
+ */
2471
+ spaceBeforePercent?: number;
2472
+ spaceAfterPercent?: number;
2352
2473
  /** Default tab interval in CSS pixels (`a:lvlXpPr/@defTabSz`). */
2353
2474
  defaultTabSize?: number;
2354
2475
  /** Whether East Asian line-breaking rules are enabled. */
@@ -5081,6 +5202,18 @@ interface PptxSmartArtLayoutDefinition {
5081
5202
  rootNode: PptxSmartArtLayoutNode;
5082
5203
  /** Original definition retained for constraint evaluation and foreign rules. */
5083
5204
  rawXml?: XmlObject;
5205
+ /**
5206
+ * The un-parsed layout-definition part text (starting at `<dgm:layoutDef>`,
5207
+ * XML declaration included). `rawXml` above loses the document order of
5208
+ * differently-named siblings (the package-wide `fast-xml-parser`
5209
+ * configuration groups children into one array per tag), which the
5210
+ * per-point DiagramML engine (`core/utils/smartart-engine/`) needs to
5211
+ * execute a `layoutNode` body's `forEach`/`choose`/`constrLst` statements
5212
+ * in their real declared sequence - see that package's `ordered-xml.ts`.
5213
+ * `undefined` when the part could not be read (matches `rawXml`'s own
5214
+ * optionality); the engine falls back to the legacy interpreter then.
5215
+ */
5216
+ rawXmlText?: string;
5084
5217
  }
5085
5218
  //#endregion
5086
5219
  //#region src/core/types/smart-art-node.d.ts
@@ -5319,7 +5452,6 @@ interface PptxSmartArtNode {
5319
5452
  }
5320
5453
  //#endregion
5321
5454
  //#region src/core/types/smart-art-style-definition.d.ts
5322
- /** Editable metadata shared by DiagramML quick-style and color definitions. */
5323
5455
  interface PptxSmartArtDefinitionText {
5324
5456
  value: string;
5325
5457
  language?: string;
@@ -5419,6 +5551,17 @@ interface PptxSmartArtQuickStyle extends PptxSmartArtDefinitionMetadata {
5419
5551
  effectIntensity?: string;
5420
5552
  /** Ordered CT_StyleLabel metadata. Complex style payload remains preserved XML. */
5421
5553
  labels?: PptxSmartArtQuickStyleLabel[];
5554
+ /**
5555
+ * Whole-diagram 3D scene (camera preset/rotation/zoom/fov, light rig,
5556
+ * backdrop) from the quick style's own `dgm:styleDef/dgm:scene3d`, present
5557
+ * for the "Scene" quick styles (Brick, Flat, Metallic, Sunset, Bird's Eye
5558
+ * Scene). One camera renders the whole diagram; per-shape `a:scene3d` is
5559
+ * absent for those styles (see `PptxSmartArtDrawingShape.scene3d`). Each
5560
+ * `dgm:styleLbl` also carries its own per-label `dgm:scene3d`/`dgm:sp3d`,
5561
+ * but PowerPoint bakes those fully resolved onto each cached shape's own
5562
+ * `dsp:spPr/a:sp3d`, so only the diagram-level scene is exposed here.
5563
+ */
5564
+ scene3d?: Pptx3DScene;
5422
5565
  }
5423
5566
  //#endregion
5424
5567
  //#region src/core/types/smart-art.d.ts
@@ -5619,6 +5762,29 @@ interface PptxSmartArtDrawingShape extends PptxCustomPathProperties {
5619
5762
  textFrameY?: number;
5620
5763
  textFrameWidth?: number;
5621
5764
  textFrameHeight?: number;
5765
+ /**
5766
+ * 3D scene (camera/light rig/backdrop) from `dsp:spPr/a:scene3d`, when this
5767
+ * cached shape carries its own per-shape camera. Bevel quick styles
5768
+ * (Polished, Inset, Cartoon, Powder) cache one per shape (always
5769
+ * `orthographicFront`, so the 2D layout stays undistorted). Scene quick
5770
+ * styles (Brick, Flat, Metallic, Sunset, Bird's Eye) instead put ONE camera
5771
+ * on the whole diagram (see `PptxSmartArtQuickStyle.scene3d`) and leave this
5772
+ * undefined on every shape.
5773
+ */
5774
+ scene3d?: Pptx3DScene;
5775
+ /**
5776
+ * 3D extrusion/bevel/contour/material from `dsp:spPr/a:sp3d`. PowerPoint
5777
+ * caches this fully resolved (from the quick style's per-label `dgm:sp3d`)
5778
+ * on every shape for every non-flat quick style, bevel or scene alike.
5779
+ */
5780
+ shape3d?: Pptx3DShape;
5781
+ /**
5782
+ * Text-body 3D extrusion/bevel from `dsp:txBody/a:bodyPr/a:sp3d`. Rare:
5783
+ * present when a quick style extrudes the label text itself off the shape
5784
+ * face (e.g. Bird's Eye Scene: `extrusionH="28000"`), rather than only the
5785
+ * shape body.
5786
+ */
5787
+ text3d?: Text3DStyle;
5622
5788
  }
5623
5789
  /**
5624
5790
  * Presentation layout variables from `dgm:prSet/dgm:presLayoutVars` (data model)
@@ -6160,6 +6326,20 @@ interface PptxTableData {
6160
6326
  * present when there is at least one effect.
6161
6327
  */
6162
6328
  tableEffects?: ParsedTableStyleEffect[];
6329
+ /**
6330
+ * Table-cell-context default text size in points, resolved from the
6331
+ * slide's master `p:otherStyle` (ECMA-376 §19.3.1.42 CT_TextListStyle,
6332
+ * §19.3.1.52 for `p:txStyles`). PowerPoint sizes a table cell's text off
6333
+ * this master default (commonly 18pt) whenever neither the run nor the
6334
+ * (size-less) table style provides one; without it, cell text without an
6335
+ * explicit `a:rPr@sz` fell back to the browser's own default font size
6336
+ * (16px / 12pt) instead. A render-only hint: it is not part of any
6337
+ * individual cell's parsed style and is never written back on save, so
6338
+ * resaving an unstyled cell does not bake in an explicit size that was
6339
+ * never authored. `undefined` when no master/otherStyle size resolves
6340
+ * (renderers should leave the browser default in place in that case).
6341
+ */
6342
+ defaultCellFontSize?: number;
6163
6343
  }
6164
6344
  /**
6165
6345
  * A single fill reference within a table style section.
@@ -6185,6 +6365,14 @@ interface ParsedTableStyleFill {
6185
6365
  tint?: number;
6186
6366
  /** Shade value (0-100 000). */
6187
6367
  shade?: number;
6368
+ /**
6369
+ * Alpha (opacity) value (0-100 000, where 100 000 is fully opaque) from an
6370
+ * `a:alpha` child of `a:schemeClr`/`a:srgbClr`. Several built-in table
6371
+ * styles (e.g. "Light Style 1/3", "Themed Style 1/2") band their rows with
6372
+ * a partially transparent tint of the theme colour rather than a tint/shade
6373
+ * blend.
6374
+ */
6375
+ alpha?: number;
6188
6376
  /** Explicit sRGB hex colour (e.g. `#FF8800`) from `a:srgbClr`. */
6189
6377
  color?: string;
6190
6378
  /** The fill was `a:noFill`: renders transparent and clears lower layers. */
@@ -7020,6 +7208,20 @@ interface ContentPartInkStroke {
7020
7208
  * NAMES differ.
7021
7209
  */
7022
7210
  tiltEncoding?: 'vector' | 'azimuthAltitude';
7211
+ /**
7212
+ * Per-point timestamps (milliseconds), decoded from the source InkML
7213
+ * trace's `T` channel when it declared one.
7214
+ *
7215
+ * Absent for the overwhelming majority of real decks: PowerPoint's own
7216
+ * SaveAs output declares only `X`/`Y` and has no per-point time channel at
7217
+ * all (see `contentpart-real-ink-roundtrip.test.ts`'s fixture), so this is
7218
+ * populated only for InkML sources that genuinely author one (a captured
7219
+ * digitizer session, OneNote, a Surface Hub export). When present, ink
7220
+ * replay ("watch the ink get drawn") uses each stroke's own first/last
7221
+ * timestamp to time its reveal instead of the fixed per-stroke cascade; see
7222
+ * `pptx-viewer-shared`'s `render/ink-replay-timeline.ts`.
7223
+ */
7224
+ pointTimestamps?: number[];
7023
7225
  }
7024
7226
  /**
7025
7227
  * A content-part element wrapped in `mc:AlternateContent`.
@@ -7064,6 +7266,28 @@ interface ZoomPptxElement extends PptxElementBase, PptxImageProperties {
7064
7266
  summaryTargets?: SummaryZoomTarget[];
7065
7267
  /** Layout mode authored on the Summary Zoom container. */
7066
7268
  summaryLayout?: 'grid' | 'fixed';
7269
+ /**
7270
+ * `zmPr/@returnToParent` (MS-PPTX `CT_ZoomObjectProperties`, shared by all
7271
+ * three Zoom kinds): whether continuing forward from the destination slide
7272
+ * during a live show returns to this Zoom's origin slide instead of
7273
+ * advancing linearly through the deck. OOXML default is `true` when the
7274
+ * attribute is present but this codebase leaves it `undefined` when the
7275
+ * source XML omits it, so a round-trip never fabricates the attribute.
7276
+ * For `zoomType: 'summary'`, this mirrors the first tile's own value; see
7277
+ * {@link SummaryZoomTarget.returnToParent} for the per-tile value.
7278
+ */
7279
+ returnToParent?: boolean;
7280
+ /**
7281
+ * `zmPr/@transitionDur` (MS-PPTX `CT_ZoomObjectProperties`): the
7282
+ * zoom-transition length in milliseconds. PowerPoint's own writer emits a
7283
+ * unitless decimal-millisecond value for every OOXML `ST_UniversalTimeOffset`
7284
+ * this codebase has observed (see the media-trim/-fade parsers), so this
7285
+ * follows the same convention rather than the full TIMEOFFSET grammar's
7286
+ * unit suffixes. Undefined uses the destination slide's own transition.
7287
+ * For `zoomType: 'summary'`, this mirrors the first tile's own value; see
7288
+ * {@link SummaryZoomTarget.transitionDurationMs} for the per-tile value.
7289
+ */
7290
+ transitionDurationMs?: number;
7067
7291
  }
7068
7292
  /** A single section tile within a PowerPoint Summary Zoom container. */
7069
7293
  interface SummaryZoomTarget extends PptxImageProperties {
@@ -7079,6 +7303,10 @@ interface SummaryZoomTarget extends PptxImageProperties {
7079
7303
  offsetFactorY?: number;
7080
7304
  scaleFactorX?: number;
7081
7305
  scaleFactorY?: number;
7306
+ /** This tile's own `zmPr/@returnToParent`; see {@link ZoomPptxElement.returnToParent}. */
7307
+ returnToParent?: boolean;
7308
+ /** This tile's own `zmPr/@transitionDur` in milliseconds; see {@link ZoomPptxElement.transitionDurationMs}. */
7309
+ transitionDurationMs?: number;
7082
7310
  rawXml?: XmlObject;
7083
7311
  }
7084
7312
  /**
@@ -8079,6 +8307,17 @@ interface PptxAttributeAnimation {
8079
8307
  * IS consulted regardless of this field's value. Absent means `lin`.
8080
8308
  */
8081
8309
  calcMode?: 'discrete' | 'lin' | 'fmla';
8310
+ /**
8311
+ * `p:anim/@_p14:bounceEnd` (Office 2010 `p14` extension attribute,
8312
+ * MS-OI29500), normalized to a 0-1 fraction of this behaviour's own
8313
+ * duration. PowerPoint's Fly In "Bounce End" effect option writes this on
8314
+ * the position-ramp `p:anim` node(s): the fraction of the duration at
8315
+ * which the primary travel completes, with the remainder spent bouncing
8316
+ * and settling at the final value. Mirrored verbatim by PowerPoint onto
8317
+ * the enclosing `p:cTn/@_p14:presetBounceEnd`. Absent for every animation
8318
+ * that doesn't use this effect option (the overwhelming majority).
8319
+ */
8320
+ bounceEnd?: number;
8082
8321
  }
8083
8322
  /** Signed HSL channel deltas parsed from `p:animClr/p:by/p:hsl`. */
8084
8323
  interface PptxHslColorDelta {
@@ -8160,7 +8399,19 @@ interface PptxTextAnimationTarget {
8160
8399
  * These map directly to OOXML condition event attribute values
8161
8400
  * (ISO/IEC 29500-1 S19.5.28 CT_TLTimeCondition).
8162
8401
  */
8163
- type AnimationConditionEvent = 'onBegin' | 'onEnd' | 'begin' | 'end' | 'onClick' | 'onMouseOver' | 'onMouseOut' | 'onNext' | 'onPrev' | 'onStopAudio' | 'onDblClick';
8402
+ type AnimationConditionEvent = 'onBegin' | 'onEnd' | 'begin' | 'end' | 'onClick' | 'onMouseOver' | 'onMouseOut' | 'onNext' | 'onPrev' | 'onStopAudio' | 'onDblClick' | 'onMediaBookmark';
8403
+ /**
8404
+ * `p14:bmkTgt` (Office 2010 `p14` extension, MS-OI29500): names the specific
8405
+ * media element and bookmark an `evt="onMediaBookmark"` condition fires for.
8406
+ * `bookmarkName` matches a `p14:bmk/@_name` on that media element's own
8407
+ * `p14:bmkLst` (see `MediaBookmark.label` in `core/types/elements.ts`).
8408
+ */
8409
+ interface PptxMediaBookmarkTarget {
8410
+ /** `p14:bmkTgt/@_spid`: the media element's shape id. */
8411
+ shapeId: string;
8412
+ /** `p14:bmkTgt/@_bmkName`: the bookmark's name. */
8413
+ bookmarkName: string;
8414
+ }
8164
8415
  /**
8165
8416
  * Structured representation of a single OOXML animation condition
8166
8417
  * from `p:cond` elements inside `p:stCondLst` or `p:endCondLst`.
@@ -8180,6 +8431,11 @@ type AnimationConditionEvent = 'onBegin' | 'onEnd' | 'begin' | 'end' | 'onClick'
8180
8431
  interface AnimationCondition {
8181
8432
  /** Event that triggers the condition. */
8182
8433
  event?: AnimationConditionEvent;
8434
+ /**
8435
+ * The media element/bookmark this condition fires for, when
8436
+ * {@link event} is `onMediaBookmark`. See {@link PptxMediaBookmarkTarget}.
8437
+ */
8438
+ bookmarkTarget?: PptxMediaBookmarkTarget;
8183
8439
  /** Delay in milliseconds (from `@_delay`). "indefinite" is represented as -1. */
8184
8440
  delay?: number;
8185
8441
  /** Target time node ID reference (from `@_tn`). */
@@ -9498,7 +9754,12 @@ interface PptxHeaderFooter {
9498
9754
  hasDateTime?: boolean;
9499
9755
  dateTimeText?: string;
9500
9756
  dateTimeAuto?: boolean;
9501
- /** OOXML date format pattern (e.g. "M/d/yyyy", "dddd, MMMM dd, yyyy"). */
9757
+ /**
9758
+ * The master date placeholder's own `a:fld/@type` (e.g. "datetime2"), NOT a
9759
+ * format pattern. It is one of the predefined OOXML datetime field types
9760
+ * (`datetime1`-`datetime13`); the display pattern for each is resolved by
9761
+ * `resolveFieldDateText` in `packages/shared/src/render/text-field-substitution.ts`.
9762
+ */
9502
9763
  dateFormat?: string;
9503
9764
  hasSlideNumber?: boolean;
9504
9765
  }
@@ -11472,23 +11733,6 @@ declare class PptxHandler extends PptxHandlerCore {
11472
11733
  /** Supported merge shape operations (matching PowerPoint's Merge Shapes menu). */
11473
11734
  type MergeShapeOperation = 'union' | 'intersect' | 'subtract' | 'fragment' | 'combine';
11474
11735
 
11475
- //#region src/render/animation-text-style-resolve.d.ts
11476
- /**
11477
- * Framework-neutral text-style override a font-style emphasis effect applies
11478
- * on top of its target's own authored per-run bold/italic/underline/size/
11479
- * colour. Every binding maps this onto its own text container so it OVERRIDES
11480
- * the runs' inline styles (the runs carry explicit inline styles of their
11481
- * own, so plain CSS inheritance cannot reach them).
11482
- */
11483
- interface TextStyleAnimationDescriptor {
11484
- bold?: boolean;
11485
- italic?: boolean;
11486
- underline?: boolean;
11487
- /** Relative multiplier against each run's own authored font size. */
11488
- fontScale?: number;
11489
- color?: string;
11490
- }
11491
-
11492
11736
  //#region src/render/collaboration-presence.d.ts
11493
11737
  /** Connection lifecycle states for the Yjs WebSocket provider. */
11494
11738
  type ConnectionStatus$1 = 'disconnected' | 'connecting' | 'connected' | 'error';
@@ -11905,6 +12149,23 @@ type ElementBuildState = {
11905
12149
  mode: DiagramBuildMode;
11906
12150
  progress: number;
11907
12151
  };
12152
+ //#endregion
12153
+ //#region src/render/animation-text-style-resolve.d.ts
12154
+ /**
12155
+ * Framework-neutral text-style override a font-style emphasis effect applies
12156
+ * on top of its target's own authored per-run bold/italic/underline/size/
12157
+ * colour. Every binding maps this onto its own text container so it OVERRIDES
12158
+ * the runs' inline styles (the runs carry explicit inline styles of their
12159
+ * own, so plain CSS inheritance cannot reach them).
12160
+ */
12161
+ interface TextStyleAnimationDescriptor {
12162
+ bold?: boolean;
12163
+ italic?: boolean;
12164
+ underline?: boolean;
12165
+ /** Relative multiplier against each run's own authored font size. */
12166
+ fontScale?: number;
12167
+ color?: string;
12168
+ }
11908
12169
  /** Snapshot of a single element's animation state at a point in the timeline. */
11909
12170
  interface ElementAnimationState {
11910
12171
  /** Whether the element should be visible. */
@@ -12275,13 +12536,21 @@ type InlineListReadResult = {
12275
12536
  * Pure string logic: resolves OOXML field runs (slide number, date/time,
12276
12537
  * header/footer, document properties, slide title) into their display text.
12277
12538
  * Extracted from the React `viewer/utils/text-field-substitution` module so
12278
- * every binding substitutes identically.
12539
+ * every binding substitutes identically. The locale-aware datetime engine
12540
+ * lives in `text-field-datetime.ts`.
12279
12541
  */
12280
12542
  /** Context for substituting field placeholders (slide number, date/time, header/footer, etc.). */
12281
12543
  interface FieldSubstitutionContext {
12282
12544
  slideNumber?: number;
12283
12545
  dateTimeText?: string;
12284
- /** OOXML date-format pattern from header/footer settings (e.g. "M/d/yyyy"). */
12546
+ /**
12547
+ * The deck's master date-field default TYPE (`a:fld/@type` on the slide
12548
+ * master's `dt` placeholder, e.g. "datetime2"; see `header-footer-parts.ts`).
12549
+ * This is a field TYPE, not a format pattern, and is used ONLY as a
12550
+ * fallback for a field authored with the generic, unnumbered `datetime`
12551
+ * type - a field that already names its own `datetime1`-`datetime13` type
12552
+ * always uses that type, never this one (see `substituteFieldText`).
12553
+ */
12285
12554
  dateFormat?: string;
12286
12555
  /** Footer text from PptxHeaderFooter settings. */
12287
12556
  footerText?: string;
@@ -13523,6 +13792,20 @@ interface ViewportFitOptions {
13523
13792
  maxFitScale?: number | null;
13524
13793
  }
13525
13794
  //#endregion
13795
+ //#region src/web-components/select-value.d.ts
13796
+ /** Public DOM shape used by all bindings; the element is not a native select. */
13797
+ interface PptxUiSelectElement extends HTMLElement {
13798
+ value: string;
13799
+ disabled: boolean;
13800
+ readonly options: HTMLOptionElement[];
13801
+ selectedIndex: number;
13802
+ }
13803
+ declare global {
13804
+ interface HTMLElementTagNameMap {
13805
+ 'pptx-ui-select': PptxUiSelectElement;
13806
+ }
13807
+ }
13808
+ //#endregion
13526
13809
  //#region src/render/slide-transition-cinematic.d.ts
13527
13810
  /**
13528
13811
  * Resolve a p15 cinematic transition to its CSS `animation` descriptors, or
@@ -13891,6 +14174,11 @@ interface ToolbarProps {
13891
14174
  onOpenSettings?: () => void;
13892
14175
  onRunAccessibilityCheck: () => void;
13893
14176
  onToggleSlideSorter: () => void;
14177
+ /**
14178
+ * View > Normal: leave whichever alternate view (slide sorter, reading,
14179
+ * outline, master) is open and return to the ordinary editing canvas.
14180
+ */
14181
+ onGoToNormalView?: () => void;
13894
14182
  /** Enter PowerPoint's Reading View (full window, not the fullscreen show). */
13895
14183
  onOpenReadingView: () => void;
13896
14184
  /** Enter PowerPoint's Outline view: the deck as editable indented text. */
@@ -15366,6 +15654,18 @@ interface EditorOperationsResult {
15366
15654
  manipulation: ElementManipulationHandlers;
15367
15655
  slideOps: SlideManagementHandlers;
15368
15656
  tableOps: TableOperationHandlers;
15657
+ /**
15658
+ * Ctrl/Cmd+Shift+C: copy the selected element's format, the same capture
15659
+ * the format-painter ribbon toggle triggers, without requiring a
15660
+ * follow-up click to apply it.
15661
+ */
15662
+ copyFormatFromSelection: () => void;
15663
+ /**
15664
+ * Ctrl/Cmd+Shift+V: apply whatever format `copyFormatFromSelection` (or the
15665
+ * ribbon's format painter) captured onto every given element id, then
15666
+ * clear the copied format the same way the click-to-apply path does.
15667
+ */
15668
+ pasteFormatToSelection: (targetIds: string[]) => void;
15369
15669
  }
15370
15670
  declare function useEditorOperations(input: UseEditorOperationsInput): EditorOperationsResult;
15371
15671
  //#endregion
@@ -16910,6 +17210,14 @@ interface UseKeyboardShortcutWiringInput {
16910
17210
  * apply the same way they do for the button).
16911
17211
  */
16912
17212
  onSetMode: (mode: ViewerMode) => void;
17213
+ /** Ctrl/Cmd+M: the same entry point the ribbon's "New Slide" button uses. */
17214
+ handleAddSlide: () => void;
17215
+ /** Ctrl/Cmd+K: open the hyperlink dialog for the current selection. */
17216
+ onOpenHyperlinkDialog: () => void;
17217
+ /** Ctrl/Cmd+Shift+C: capture the current selection's format for the format painter. */
17218
+ copyFormatFromSelection: () => void;
17219
+ /** Ctrl/Cmd+Shift+V: apply the copied format to the given element ids. */
17220
+ pasteFormatToSelection: (targetIds: string[]) => void;
16913
17221
  }
16914
17222
  declare function useKeyboardShortcutWiring(input: UseKeyboardShortcutWiringInput): void;
16915
17223
  //#endregion
@@ -17421,6 +17729,34 @@ interface UseKeyboardShortcutsInput {
17421
17729
  onStartShowFromBeginning: () => void;
17422
17730
  /** `Shift+F5`: start the show on the current slide. Same entry point as the ribbon's "From Current Slide". */
17423
17731
  onStartShowFromCurrent: () => void;
17732
+ /** Ctrl/Cmd+L: set paragraph alignment to left. */
17733
+ onAlignLeft?: () => void;
17734
+ /** Ctrl/Cmd+E: set paragraph alignment to center. */
17735
+ onAlignCenter?: () => void;
17736
+ /** Ctrl/Cmd+R: set paragraph alignment to right. */
17737
+ onAlignRight?: () => void;
17738
+ /** Ctrl/Cmd+J: set paragraph alignment to justify. */
17739
+ onAlignJustify?: () => void;
17740
+ /** Ctrl/Cmd+Shift+> or Ctrl/Cmd+]: step the selection's font size up PowerPoint's size ladder. */
17741
+ onIncreaseFontSize?: () => void;
17742
+ /** Ctrl/Cmd+Shift+< or Ctrl/Cmd+[: step the selection's font size down PowerPoint's size ladder. */
17743
+ onDecreaseFontSize?: () => void;
17744
+ /** Ctrl/Cmd+Shift+C: copy the selection's formatting (format painter). */
17745
+ onCopyFormat?: () => void;
17746
+ /** Ctrl/Cmd+Shift+V: apply the copied formatting to the selection. */
17747
+ onPasteFormat?: () => void;
17748
+ /** Ctrl/Cmd+M: insert a new slide. */
17749
+ onNewSlide?: () => void;
17750
+ /** Ctrl/Cmd+K: open the hyperlink dialog. */
17751
+ onHyperlink?: () => void;
17752
+ /** Ctrl/Cmd+H: open Find and Replace. */
17753
+ onFindReplace?: () => void;
17754
+ /** Ctrl/Cmd+Space: clear character formatting on the selection. */
17755
+ onClearFormatting?: () => void;
17756
+ /** Tab: select the next element on the slide. */
17757
+ onCycleSelectionNext?: () => void;
17758
+ /** Shift+Tab: select the previous element on the slide. */
17759
+ onCycleSelectionPrev?: () => void;
17424
17760
  }
17425
17761
  declare function useKeyboardShortcuts(input: UseKeyboardShortcutsInput): void;
17426
17762
  //#endregion