pptx-react-viewer 3.6.0 → 3.7.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 (161) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/{AiChatPanel-WRQGJJVD.mjs → AiChatPanel-L5QGWVZK.mjs} +4 -4
  3. package/dist/AiChatPanel-L5QGWVZK.mjs.br +0 -0
  4. package/dist/AiChatPanel-L5QGWVZK.mjs.gz +0 -0
  5. package/dist/{AiChatPanel-LEOEDIW2.js → AiChatPanel-M3AHKYPS.js} +25 -25
  6. package/dist/AiChatPanel-M3AHKYPS.js.br +0 -0
  7. package/dist/AiChatPanel-M3AHKYPS.js.gz +0 -0
  8. package/dist/{Area3DChartScene-SJC2ZB6R.mjs → Area3DChartScene-AE2XYKDW.mjs} +1 -1
  9. package/dist/Area3DChartScene-AE2XYKDW.mjs.br +1 -0
  10. package/dist/Area3DChartScene-AE2XYKDW.mjs.gz +0 -0
  11. package/dist/{Area3DChartScene-3TJ2GTGI.js → Area3DChartScene-ZQLQK6L4.js} +2 -2
  12. package/dist/Area3DChartScene-ZQLQK6L4.js.br +0 -0
  13. package/dist/Area3DChartScene-ZQLQK6L4.js.gz +0 -0
  14. package/dist/{Bar3DChartScene-SPER4LQA.mjs → Bar3DChartScene-FQV62XOI.mjs} +1 -1
  15. package/dist/Bar3DChartScene-FQV62XOI.mjs.br +2 -0
  16. package/dist/Bar3DChartScene-FQV62XOI.mjs.gz +0 -0
  17. package/dist/{Bar3DChartScene-2ZGOMOZO.js → Bar3DChartScene-TZ6ADFBS.js} +2 -2
  18. package/dist/Bar3DChartScene-TZ6ADFBS.js.br +0 -0
  19. package/dist/Bar3DChartScene-TZ6ADFBS.js.gz +0 -0
  20. package/dist/{Line3DChartScene-42FYFGLU.js → Line3DChartScene-5CKPAX63.js} +2 -2
  21. package/dist/Line3DChartScene-5CKPAX63.js.br +0 -0
  22. package/dist/Line3DChartScene-5CKPAX63.js.gz +0 -0
  23. package/dist/{Line3DChartScene-FH3YHPXE.mjs → Line3DChartScene-FEUY3PCE.mjs} +1 -1
  24. package/dist/Line3DChartScene-FEUY3PCE.mjs.br +1 -0
  25. package/dist/Line3DChartScene-FEUY3PCE.mjs.gz +0 -0
  26. package/dist/{Model3DScene-EIU2GVUZ.js → Model3DScene-BLXEALM6.js} +2 -2
  27. package/dist/Model3DScene-BLXEALM6.js.br +0 -0
  28. package/dist/Model3DScene-BLXEALM6.js.gz +0 -0
  29. package/dist/{Model3DScene-2BCR2YYD.mjs → Model3DScene-V3DHIISV.mjs} +1 -1
  30. package/dist/Model3DScene-V3DHIISV.mjs.br +0 -0
  31. package/dist/Model3DScene-V3DHIISV.mjs.gz +0 -0
  32. package/dist/{PieChart3DScene-VQOHZPHI.js → PieChart3DScene-GHHT3PDV.js} +2 -2
  33. package/dist/PieChart3DScene-GHHT3PDV.js.br +0 -0
  34. package/dist/PieChart3DScene-GHHT3PDV.js.gz +0 -0
  35. package/dist/{PieChart3DScene-QFQUJFDP.mjs → PieChart3DScene-VZI2VARG.mjs} +1 -1
  36. package/dist/PieChart3DScene-VZI2VARG.mjs.br +0 -0
  37. package/dist/PieChart3DScene-VZI2VARG.mjs.gz +0 -0
  38. package/dist/PowerPointViewer-Cl6jBPNw.d.ts.map +1 -1
  39. package/dist/{SurfaceChart3DScene-CGXMRBCL.mjs → SurfaceChart3DScene-T36E2HBA.mjs} +1 -1
  40. package/dist/SurfaceChart3DScene-T36E2HBA.mjs.br +0 -0
  41. package/dist/SurfaceChart3DScene-T36E2HBA.mjs.gz +0 -0
  42. package/dist/{SurfaceChart3DScene-FTVXZN6O.js → SurfaceChart3DScene-WWIMQ65D.js} +2 -2
  43. package/dist/SurfaceChart3DScene-WWIMQ65D.js.br +0 -0
  44. package/dist/SurfaceChart3DScene-WWIMQ65D.js.gz +0 -0
  45. package/dist/{chunk-ZWPHUPL4.js → chunk-3EJFZ7TE.js} +5 -5
  46. package/dist/chunk-3EJFZ7TE.js.br +0 -0
  47. package/dist/chunk-3EJFZ7TE.js.gz +0 -0
  48. package/dist/{chunk-AL2KLPOJ.js → chunk-DCNHUEWQ.js} +4058 -1841
  49. package/dist/chunk-DCNHUEWQ.js.br +0 -0
  50. package/dist/chunk-DCNHUEWQ.js.gz +0 -0
  51. package/dist/{chunk-TGCSZXOG.mjs → chunk-FGTMS7LR.mjs} +2 -23
  52. package/dist/chunk-FGTMS7LR.mjs.br +0 -0
  53. package/dist/chunk-FGTMS7LR.mjs.gz +0 -0
  54. package/dist/{chunk-WX7AFFBZ.mjs → chunk-JANUSAEK.mjs} +51 -68
  55. package/dist/chunk-JANUSAEK.mjs.br +0 -0
  56. package/dist/chunk-JANUSAEK.mjs.gz +0 -0
  57. package/dist/{chunk-ZUSYUWOV.mjs → chunk-NV55GU5V.mjs} +4046 -1839
  58. package/dist/chunk-NV55GU5V.mjs.br +0 -0
  59. package/dist/chunk-NV55GU5V.mjs.gz +0 -0
  60. package/dist/{chunk-ZHSBMG37.js → chunk-OBE4TB76.js} +447 -549
  61. package/dist/chunk-OBE4TB76.js.br +0 -0
  62. package/dist/chunk-OBE4TB76.js.gz +0 -0
  63. package/dist/{chunk-VYNICQ4O.mjs → chunk-PC62KGU3.mjs} +12 -114
  64. package/dist/chunk-PC62KGU3.mjs.br +0 -0
  65. package/dist/chunk-PC62KGU3.mjs.gz +0 -0
  66. package/dist/{chunk-NFOOONND.js → chunk-TUSALM3A.js} +1449 -1278
  67. package/dist/chunk-TUSALM3A.js.br +0 -0
  68. package/dist/chunk-TUSALM3A.js.gz +0 -0
  69. package/dist/{chunk-FG5VQFWP.mjs → chunk-TXY2E7VQ.mjs} +265 -94
  70. package/dist/chunk-TXY2E7VQ.mjs.br +0 -0
  71. package/dist/chunk-TXY2E7VQ.mjs.gz +0 -0
  72. package/dist/{chunk-7VPDHSWF.js → chunk-VIFDZIVX.js} +222 -240
  73. package/dist/chunk-VIFDZIVX.js.br +0 -0
  74. package/dist/chunk-VIFDZIVX.js.gz +0 -0
  75. package/dist/{chunk-MZI4DG3S.js → chunk-W24OJ7H5.js} +2 -23
  76. package/dist/chunk-W24OJ7H5.js.br +0 -0
  77. package/dist/chunk-W24OJ7H5.js.gz +0 -0
  78. package/dist/{chunk-T3V5FBXJ.mjs → chunk-WKODF5ZU.mjs} +1 -1
  79. package/dist/chunk-WKODF5ZU.mjs.br +0 -0
  80. package/dist/chunk-WKODF5ZU.mjs.gz +0 -0
  81. package/dist/i18n.js +4 -4
  82. package/dist/i18n.js.br +0 -0
  83. package/dist/i18n.js.gz +0 -0
  84. package/dist/i18n.mjs +1 -1
  85. package/dist/i18n.mjs.br +0 -0
  86. package/dist/i18n.mjs.gz +0 -0
  87. package/dist/index.d.ts +419 -18
  88. package/dist/index.js +47 -47
  89. package/dist/index.js.br +0 -0
  90. package/dist/index.js.gz +0 -0
  91. package/dist/index.mjs +6 -6
  92. package/dist/index.mjs.br +0 -0
  93. package/dist/index.mjs.gz +0 -0
  94. package/dist/internals.d.ts +419 -18
  95. package/dist/internals.d.ts.map +1 -1
  96. package/dist/internals.js +79 -79
  97. package/dist/internals.js.br +0 -0
  98. package/dist/internals.js.gz +0 -0
  99. package/dist/internals.mjs +4 -4
  100. package/dist/internals.mjs.br +0 -0
  101. package/dist/internals.mjs.gz +0 -0
  102. package/dist/viewer/index.d.ts +387 -18
  103. package/dist/viewer/index.js +27 -27
  104. package/dist/viewer/index.js.br +0 -0
  105. package/dist/viewer/index.js.gz +0 -0
  106. package/dist/viewer/index.mjs +6 -6
  107. package/dist/viewer/index.mjs.br +0 -0
  108. package/dist/viewer/index.mjs.gz +0 -0
  109. package/package.json +2 -2
  110. package/dist/AiChatPanel-LEOEDIW2.js.br +0 -0
  111. package/dist/AiChatPanel-LEOEDIW2.js.gz +0 -0
  112. package/dist/AiChatPanel-WRQGJJVD.mjs.br +0 -0
  113. package/dist/AiChatPanel-WRQGJJVD.mjs.gz +0 -0
  114. package/dist/Area3DChartScene-3TJ2GTGI.js.br +0 -0
  115. package/dist/Area3DChartScene-3TJ2GTGI.js.gz +0 -0
  116. package/dist/Area3DChartScene-SJC2ZB6R.mjs.br +0 -2
  117. package/dist/Area3DChartScene-SJC2ZB6R.mjs.gz +0 -0
  118. package/dist/Bar3DChartScene-2ZGOMOZO.js.br +0 -0
  119. package/dist/Bar3DChartScene-2ZGOMOZO.js.gz +0 -0
  120. package/dist/Bar3DChartScene-SPER4LQA.mjs.br +0 -0
  121. package/dist/Bar3DChartScene-SPER4LQA.mjs.gz +0 -0
  122. package/dist/Line3DChartScene-42FYFGLU.js.br +0 -0
  123. package/dist/Line3DChartScene-42FYFGLU.js.gz +0 -0
  124. package/dist/Line3DChartScene-FH3YHPXE.mjs.br +0 -2
  125. package/dist/Line3DChartScene-FH3YHPXE.mjs.gz +0 -0
  126. package/dist/Model3DScene-2BCR2YYD.mjs.br +0 -0
  127. package/dist/Model3DScene-2BCR2YYD.mjs.gz +0 -0
  128. package/dist/Model3DScene-EIU2GVUZ.js.br +0 -0
  129. package/dist/Model3DScene-EIU2GVUZ.js.gz +0 -0
  130. package/dist/PieChart3DScene-QFQUJFDP.mjs.br +0 -0
  131. package/dist/PieChart3DScene-QFQUJFDP.mjs.gz +0 -0
  132. package/dist/PieChart3DScene-VQOHZPHI.js.br +0 -0
  133. package/dist/PieChart3DScene-VQOHZPHI.js.gz +0 -0
  134. package/dist/SurfaceChart3DScene-CGXMRBCL.mjs.br +0 -0
  135. package/dist/SurfaceChart3DScene-CGXMRBCL.mjs.gz +0 -0
  136. package/dist/SurfaceChart3DScene-FTVXZN6O.js.br +0 -0
  137. package/dist/SurfaceChart3DScene-FTVXZN6O.js.gz +0 -0
  138. package/dist/chunk-7VPDHSWF.js.br +0 -0
  139. package/dist/chunk-7VPDHSWF.js.gz +0 -0
  140. package/dist/chunk-AL2KLPOJ.js.br +0 -0
  141. package/dist/chunk-AL2KLPOJ.js.gz +0 -0
  142. package/dist/chunk-FG5VQFWP.mjs.br +0 -0
  143. package/dist/chunk-FG5VQFWP.mjs.gz +0 -0
  144. package/dist/chunk-MZI4DG3S.js.br +0 -0
  145. package/dist/chunk-MZI4DG3S.js.gz +0 -0
  146. package/dist/chunk-NFOOONND.js.br +0 -0
  147. package/dist/chunk-NFOOONND.js.gz +0 -0
  148. package/dist/chunk-T3V5FBXJ.mjs.br +0 -0
  149. package/dist/chunk-T3V5FBXJ.mjs.gz +0 -0
  150. package/dist/chunk-TGCSZXOG.mjs.br +0 -0
  151. package/dist/chunk-TGCSZXOG.mjs.gz +0 -0
  152. package/dist/chunk-VYNICQ4O.mjs.br +0 -0
  153. package/dist/chunk-VYNICQ4O.mjs.gz +0 -0
  154. package/dist/chunk-WX7AFFBZ.mjs.br +0 -0
  155. package/dist/chunk-WX7AFFBZ.mjs.gz +0 -0
  156. package/dist/chunk-ZHSBMG37.js.br +0 -0
  157. package/dist/chunk-ZHSBMG37.js.gz +0 -0
  158. package/dist/chunk-ZUSYUWOV.mjs.br +0 -0
  159. package/dist/chunk-ZUSYUWOV.mjs.gz +0 -0
  160. package/dist/chunk-ZWPHUPL4.js.br +0 -0
  161. package/dist/chunk-ZWPHUPL4.js.gz +0 -0
@@ -571,6 +571,44 @@ interface PptxCustomPathProperties {
571
571
  customGeometryTextRect?: CustomGeometryTextRect;
572
572
  }
573
573
  //#endregion
574
+ //#region src/core/types/color-ref.d.ts
575
+ /**
576
+ * Theme colour references: the typed counterpart of `<a:schemeClr>`.
577
+ *
578
+ * A colour picked from the theme palette is remembered as a scheme slot plus
579
+ * PowerPoint's luminance variants rather than as the sRGB it currently
580
+ * resolves to, so a later theme change re-colours the shape (and a saved file
581
+ * keeps `<a:schemeClr>` instead of a canonical `<a:srgbClr>`).
582
+ *
583
+ * @module types/color-ref
584
+ */
585
+ /**
586
+ * The scheme slot names `a:schemeClr/@val` accepts (ECMA-376 `ST_SchemeColorIndex`).
587
+ * `bg1`/`tx1`/`bg2`/`tx2` are the colour-map aliases a slide resolves through
588
+ * `p:clrMap`; `phClr` is the placeholder colour used inside a theme's style
589
+ * matrix and is never chosen from a picker.
590
+ */
591
+ type PptxThemeColorSchemeName = 'dk1' | 'lt1' | 'dk2' | 'lt2' | 'accent1' | 'accent2' | 'accent3' | 'accent4' | 'accent5' | 'accent6' | 'hlink' | 'folHlink' | 'bg1' | 'tx1' | 'bg2' | 'tx2' | 'phClr';
592
+ /**
593
+ * A theme colour choice. Every transform is a 0..1 fraction of the OOXML
594
+ * percentage (`lumMod val="20000"` is `lumMod: 0.2`), matching how the parser
595
+ * reads them, and is applied in the order `a:schemeClr` children are written:
596
+ * `tint`, `shade`, `lumMod`, `lumOff`, `alpha`.
597
+ */
598
+ interface PptxThemeColorRef {
599
+ scheme: PptxThemeColorSchemeName;
600
+ /** `a:lumMod`: multiply HSL luminance (PowerPoint's "Lighter/Darker" rows). */
601
+ lumMod?: number;
602
+ /** `a:lumOff`: add to HSL luminance after `lumMod` ("Lighter N%" rows). */
603
+ lumOff?: number;
604
+ /** `a:tint`: blend towards white. */
605
+ tint?: number;
606
+ /** `a:shade`: blend towards black. */
607
+ shade?: number;
608
+ /** `a:alpha`: opacity fraction (1 = opaque). */
609
+ alpha?: number;
610
+ }
611
+ //#endregion
574
612
  //#region src/core/types/effect-dag.d.ts
575
613
  type EffectDagBlendMode = 'darken' | 'lighten' | 'mult' | 'over' | 'screen';
576
614
  type EffectDagContainerType = 'sib' | 'tree';
@@ -860,6 +898,15 @@ interface ShapeStyle {
860
898
  * back to canonical `<a:srgbClr>`.
861
899
  */
862
900
  fillColorXml?: XmlObject;
901
+ /**
902
+ * Typed theme colour reference for the fill, set when {@link fillColorXml}
903
+ * is a plain `a:schemeClr` (see `themeColorRefFromColorChoice`). When
904
+ * present it WINS on save: the writer emits `<a:schemeClr>` from this ref
905
+ * instead of the resolved {@link fillColor}, so the fill keeps following
906
+ * the theme palette after a later theme change. `undefined` means the fill
907
+ * is a plain hex (or a colour kind a ref cannot express).
908
+ */
909
+ fillColorRef?: PptxThemeColorRef;
863
910
  fillGradient?: string;
864
911
  /** Original `gradFill` XML retained for unknown-child and extension round-tripping. */
865
912
  fillGradientXml?: XmlObject;
@@ -894,6 +941,12 @@ interface ShapeStyle {
894
941
  opacity?: number;
895
942
  /** Raw XML colour node preserved for round-trip (e.g. a:schemeClr with transforms). */
896
943
  originalColorXml?: XmlObject;
944
+ /**
945
+ * Typed theme colour reference for this stop, set when
946
+ * {@link originalColorXml} is a plain `a:schemeClr`. Wins on save, same
947
+ * as {@link ShapeStyle.fillColorRef}.
948
+ */
949
+ colorRef?: PptxThemeColorRef;
897
950
  }>;
898
951
  fillGradientAngle?: number;
899
952
  fillGradientType?: 'linear' | 'radial';
@@ -940,6 +993,12 @@ interface ShapeStyle {
940
993
  * round-trip serialisation. See {@link fillColorXml} for the rationale.
941
994
  */
942
995
  strokeColorXml?: XmlObject;
996
+ /**
997
+ * Typed theme colour reference for the outline, mirroring
998
+ * {@link fillColorRef}: set when {@link strokeColorXml} is a plain
999
+ * `a:schemeClr`, and wins on save.
1000
+ */
1001
+ strokeColorRef?: PptxThemeColorRef;
943
1002
  /**
944
1003
  * Kind of fill painted on the outline (`a:ln` child). Distinguishes a solid
945
1004
  * outline from a gradient/pattern/none outline so save can emit the correct
@@ -1443,6 +1502,15 @@ interface TextStyle {
1443
1502
  * verbatim when the resolved {@link color} still matches this node.
1444
1503
  */
1445
1504
  colorXml?: XmlObject;
1505
+ /**
1506
+ * Typed theme colour reference for the run's text colour, set when
1507
+ * {@link colorXml} is a plain `a:schemeClr` (see
1508
+ * `themeColorRefFromColorChoice`). When present it WINS on save: the
1509
+ * writer emits `<a:schemeClr>` from this ref instead of the resolved
1510
+ * {@link color}, so the text keeps following the theme palette after a
1511
+ * later theme change.
1512
+ */
1513
+ colorRef?: PptxThemeColorRef;
1446
1514
  align?: 'left' | 'center' | 'right' | 'justify' | 'justLow' | 'dist' | 'thaiDist';
1447
1515
  /**
1448
1516
  * Vertical text-box anchor (`a:bodyPr/@anchor`, `ST_TextAnchoringType`).
@@ -1868,6 +1936,12 @@ interface BulletInfo {
1868
1936
  * identity rather than being flattened to `<a:srgbClr/>` on save.
1869
1937
  */
1870
1938
  colorXml?: XmlObject;
1939
+ /**
1940
+ * Typed theme colour reference for the bullet colour, set when
1941
+ * {@link colorXml} is a plain `a:schemeClr`. Wins on save, same as
1942
+ * {@link TextStyle.colorRef}.
1943
+ */
1944
+ colorRef?: PptxThemeColorRef;
1871
1945
  /** True when `a:buNone` explicitly suppresses bullets. */
1872
1946
  none?: boolean;
1873
1947
  /** Picture bullet: relationship ID from `a:buBlip` → `a:blip[@r:embed]`. */
@@ -2479,6 +2553,39 @@ interface PptxChartStyleDefinition {
2479
2553
  plotArea?: PptxChartStylePartEntry;
2480
2554
  }
2481
2555
  //#endregion
2556
+ //#region src/core/types/chart-title.d.ts
2557
+ /**
2558
+ * Chart title rich-text run type, split out of `types/chart.ts` (already at
2559
+ * the repo's file-size limit) to keep that module from growing further.
2560
+ *
2561
+ * @module pptx-types/chart-title
2562
+ */
2563
+ /**
2564
+ * One run of a chart title's rich text (`c:title/c:tx/c:rich/a:p/a:r`).
2565
+ *
2566
+ * The flat `PptxChartData.title` field only ever captured the FIRST run's
2567
+ * text with no per-run formatting; `titleRuns` (when present) is the
2568
+ * lossless, multi-run replacement parsed from the same `c:rich` body. Absent
2569
+ * when the title has no rich text at all (an empty/auto title, or one
2570
+ * authored as a linked-cell reference).
2571
+ */
2572
+ interface PptxChartTitleRun {
2573
+ /** This run's text (`a:t`). */
2574
+ text: string;
2575
+ /** `a:rPr/@_b`. */
2576
+ bold?: boolean;
2577
+ /** `a:rPr/@_i`. */
2578
+ italic?: boolean;
2579
+ /**
2580
+ * Font size in POINTS (`a:rPr/@_sz`, hundredths of a point / 100), matching
2581
+ * `PptxChartLegendTextStyle.fontSize`'s convention rather than the pixel
2582
+ * convention `TextStyle.fontSize` uses for slide text.
2583
+ */
2584
+ fontSize?: number;
2585
+ /** Resolved hex colour (e.g. `"#FF0000"`) from `a:rPr/a:solidFill`. */
2586
+ color?: string;
2587
+ }
2588
+ //#endregion
2482
2589
  //#region src/core/types/chart-user-shapes.d.ts
2483
2590
  /**
2484
2591
  * Types for chart drawing-overlay shapes (`c:userShapes`).
@@ -2627,6 +2734,10 @@ interface PptxChartTrendline {
2627
2734
  displayRSq?: boolean;
2628
2735
  displayEq?: boolean;
2629
2736
  color?: string;
2737
+ /** Trendline width in points (`c:trendline/c:spPr/a:ln/@w`, EMU / 12700). */
2738
+ lineWidth?: number;
2739
+ /** Trendline dash style (`c:trendline/c:spPr/a:ln/a:prstDash/@val`). */
2740
+ lineDashStyle?: string;
2630
2741
  label?: PptxChartTrendlineLabel | null;
2631
2742
  }
2632
2743
  /** Typed, commonly edited properties of `c:trendlineLbl`. */
@@ -2672,6 +2783,10 @@ interface PptxChartErrBars {
2672
2783
  customMinus?: number[];
2673
2784
  noEndCap?: boolean;
2674
2785
  color?: string;
2786
+ /** Error-bar line width in points (`c:errBars/c:spPr/a:ln/@w`, EMU / 12700). */
2787
+ width?: number;
2788
+ /** Error-bar line dash style (`c:errBars/c:spPr/a:ln/a:prstDash/@val`). */
2789
+ dashStyle?: string;
2675
2790
  }
2676
2791
  /**
2677
2792
  * Visibility flags for the chart data table (axes + legend keys).
@@ -2798,6 +2913,12 @@ interface PptxChartDataLabel {
2798
2913
  * `.../a:p/a:pPr/a:defRPr` default-run-property style.
2799
2914
  */
2800
2915
  txPr?: PptxChartLegendTextStyle;
2916
+ /**
2917
+ * This label's own shape formatting (`c:dLbl/c:spPr`): fill/line colour,
2918
+ * width, and dash style for the label's callout box, taking precedence
2919
+ * over any chart/series-level default when set.
2920
+ */
2921
+ spPr?: PptxChartShapeProps;
2801
2922
  }
2802
2923
  /** Axis number format. */
2803
2924
  interface PptxChartAxisNumFmt {
@@ -3361,6 +3482,16 @@ interface PptxChartDateCategories {
3361
3482
  */
3362
3483
  interface PptxChartData {
3363
3484
  title?: string;
3485
+ /**
3486
+ * Rich-text runs of the title, parsed from `c:title/c:tx/c:rich` (issue:
3487
+ * chart title rich text). Lossless multi-run alternative to the flat
3488
+ * {@link title}: when present, the writer serialises every run's own
3489
+ * bold/italic/size/color; when absent, save falls back to the flat
3490
+ * `title` path as before. Only populated for a classic (`c:`) chart's
3491
+ * rich (typed) title, not a ChartEx (`cx:`) title or one authored as a
3492
+ * linked-cell reference.
3493
+ */
3494
+ titleRuns?: PptxChartTitleRun[];
3364
3495
  chartType: PptxChartType;
3365
3496
  categories: string[];
3366
3497
  /**
@@ -3452,8 +3583,10 @@ interface PptxChartData {
3452
3583
  chartRelationshipId?: string;
3453
3584
  /** `null` explicitly removes an existing ChartML data table. */
3454
3585
  dataTable?: PptxChartDataTable | null;
3455
- dropLines?: PptxChartLineStyle;
3456
- hiLowLines?: PptxChartLineStyle;
3586
+ /** `null` explicitly removes an existing `c:dropLines` element. */
3587
+ dropLines?: PptxChartLineStyle | null;
3588
+ /** `null` explicitly removes an existing `c:hiLowLines` element. */
3589
+ hiLowLines?: PptxChartLineStyle | null;
3457
3590
  /** `null` explicitly removes an existing up/down-bars container. */
3458
3591
  upDownBars?: PptxChartUpDownBars | null;
3459
3592
  axes?: PptxChartAxisFormatting[];
@@ -3568,10 +3701,13 @@ interface PptxChartData {
3568
3701
  pivotFormats?: PptxChartPivotFormats | null;
3569
3702
  /**
3570
3703
  * Color-map override (`c:clrMapOvr`) carrying 12 attributes that
3571
- * remap theme colour roles for this chart only. Preserved as a flat
3572
- * `attribute value` map for round-trip fidelity.
3704
+ * remap theme colour roles for this chart only. Modeled as a flat
3705
+ * `attribute -> value` map (e.g. `{ bg1: 'lt1', accent1: 'accent2' }`)
3706
+ * so unknown/future attributes round-trip without code changes.
3707
+ * `null` explicitly removes an existing `c:clrMapOvr`; an empty object
3708
+ * is treated the same as `null` on save.
3573
3709
  */
3574
- clrMapOvr?: Record<string, string>;
3710
+ clrMapOvr?: Record<string, string> | null;
3575
3711
  /**
3576
3712
  * Whether the chart's own cached numeric values use the 1904 date epoch
3577
3713
  * (`c:chartSpace/c:date1904/@val`). Independent of, and authoritative over,
@@ -4948,13 +5084,55 @@ interface PptxSmartArtData {
4948
5084
  drawingDirty?: boolean;
4949
5085
  }
4950
5086
  //#endregion
4951
- //#region src/core/types/table.d.ts
5087
+ //#region src/core/types/table-style-edit.d.ts
5088
+ /**
5089
+ * A `a:fillRef`/`a:lnRef`/`a:effectRef`-style style-matrix reference: an
5090
+ * index into the theme's format scheme (`a:fmtScheme/a:fillStyleLst`, 1-based
5091
+ * per ECMA-376 §20.1.4.1.12) plus an optional colour transform child.
5092
+ *
5093
+ * Distinct from an already-resolved {@link ParsedTableStyleFill}: a fill ref
5094
+ * points AT a theme style-matrix entry rather than carrying a colour choice
5095
+ * directly, though the two commonly appear together (`<a:fillRef idx="2">
5096
+ * <a:schemeClr val="accent1"/></a:fillRef>`).
5097
+ *
5098
+ * @example
5099
+ * ```ts
5100
+ * const ref: ParsedTableFillRef = { idx: 2, color: { schemeColor: 'accent1' } };
5101
+ * // => satisfies ParsedTableFillRef
5102
+ * ```
5103
+ */
5104
+ interface ParsedTableFillRef {
5105
+ /** 1-based index into the theme format scheme's fill style list. */
5106
+ idx: number;
5107
+ /** Colour transform child (`a:schemeClr`/`a:srgbClr`) applied to the referenced style. */
5108
+ color?: ParsedTableStyleFill;
5109
+ }
4952
5110
  /**
4953
- * Table types: cell styling, cell data, rows, table data, and the parsed
4954
- * table style map from `ppt/tableStyles.xml`.
5111
+ * One leaf (or `effectDag`-wrapped) node of an `a:effectLst`/`a:effectDag`
5112
+ * effect chain, kept mostly opaque: {@link kind} names the OOXML element so a
5113
+ * consumer can recognise common effects (`outerShdw`, `glow`, `softEdge`,
5114
+ * `reflection`, `blur`, `innerShdw`, `prstShdw`, `fillOverlay`, `alphaModFix`,
5115
+ * `alphaInv`, `grayscl`, `biLevel`, `duotone`, `hsl`, `lum`, `tint`) without
5116
+ * this module re-deriving the full shape-effect taxonomy already modelled on
5117
+ * `ShapeStyle`; {@link xml} preserves the node verbatim for lossless re-emit.
4955
5118
  *
4956
- * @module pptx-types/table
5119
+ * @example
5120
+ * ```ts
5121
+ * const effect: ParsedTableStyleEffect = {
5122
+ * kind: 'outerShdw',
5123
+ * xml: { '@_blurRad': '40000', '@_dist': '20000', '@_dir': '5400000' },
5124
+ * };
5125
+ * // => satisfies ParsedTableStyleEffect
5126
+ * ```
4957
5127
  */
5128
+ interface ParsedTableStyleEffect {
5129
+ /** The OOXML element's local name, e.g. `outerShdw`, `glow`, `softEdge`. */
5130
+ kind: string;
5131
+ /** Verbatim XML node (attributes + children) for lossless round-trip. */
5132
+ xml: XmlObject;
5133
+ }
5134
+ //#endregion
5135
+ //#region src/core/types/table.d.ts
4958
5136
  /**
4959
5137
  * Per-cell visual style for a table cell.
4960
5138
  *
@@ -4991,6 +5169,14 @@ interface PptxTableCellStyle {
4991
5169
  * future expansion alongside the run-properties round-trip path.
4992
5170
  */
4993
5171
  colorXml?: XmlObject;
5172
+ /**
5173
+ * Typed theme colour reference for the cell text colour, set when
5174
+ * {@link colorXml} is a plain `a:schemeClr`. Wins on save, mirroring
5175
+ * `TextStyle.colorRef`. Distinct from {@link ParsedTableStyleFill.schemeColor},
5176
+ * which describes a `ppt/tableStyles.xml` section fill rather than an
5177
+ * individual cell override.
5178
+ */
5179
+ colorRef?: PptxThemeColorRef;
4994
5180
  backgroundColor?: string;
4995
5181
  /**
4996
5182
  * Raw XML colour-choice node preserved from cell `a:tcPr/a:solidFill` for
@@ -4998,6 +5184,12 @@ interface PptxTableCellStyle {
4998
5184
  * {@link backgroundColor} still matches the original colour.
4999
5185
  */
5000
5186
  backgroundColorXml?: XmlObject;
5187
+ /**
5188
+ * Typed theme colour reference for the cell fill, set when
5189
+ * {@link backgroundColorXml} is a plain `a:schemeClr`. Wins on save,
5190
+ * mirroring `ShapeStyle.fillColorRef`.
5191
+ */
5192
+ backgroundColorRef?: PptxThemeColorRef;
5001
5193
  borderColor?: string;
5002
5194
  /** Top border width in px. */
5003
5195
  borderTopWidth?: number;
@@ -5311,12 +5503,14 @@ interface PptxTableData {
5311
5503
  */
5312
5504
  tableFill?: ParsedTableStyleFill;
5313
5505
  /**
5314
- * Whether `a:tblPr` carries its own `a:effectLst`/`a:effectDag`,
5315
- * independent of the referenced table style. Presence-only: the concrete
5316
- * effect is not yet rendered, and the raw XML round-trips separately via
5317
- * whatever preserves `a:tblPr`'s unrecognised children (issue G6).
5506
+ * `a:tblPr`'s own `a:effectLst` (or `a:effectDag`) effect chain,
5507
+ * independent of the referenced table style, decomposed into a typed
5508
+ * sequence of {@link ParsedTableStyleEffect} nodes (issue G6). Each node
5509
+ * keeps its own XML verbatim for lossless round-trip; empty array is
5510
+ * normalised to `undefined` by the parser so `tableEffects` is only ever
5511
+ * present when there is at least one effect.
5318
5512
  */
5319
- tableEffects?: boolean;
5513
+ tableEffects?: ParsedTableStyleEffect[];
5320
5514
  }
5321
5515
  /**
5322
5516
  * A single fill reference within a table style section.
@@ -5492,13 +5686,20 @@ interface ParsedTableStyleBorders {
5492
5686
  /**
5493
5687
  * Table background style (CT_TableBackgroundStyle, ECMA-376 §21.1.3.7).
5494
5688
  *
5495
- * Corresponds to the `<a:tblBg>` child of `<a:tblStyle>`. Currently
5496
- * captures only the resolved scheme-fill colour (verbatim XML for fill
5497
- * / effect references is preserved separately by the save path).
5689
+ * Corresponds to the `<a:tblBg>` child of `<a:tblStyle>`. Captures the
5690
+ * resolved scheme-fill colour, an unresolved style-matrix `a:fillRef`, and a
5691
+ * presence flag for effects (verbatim XML for the effect list is preserved
5692
+ * separately by the save path).
5498
5693
  */
5499
5694
  interface ParsedTableBackground {
5500
5695
  /** Solid fill (resolved from `a:fill > a:solidFill > a:schemeClr`). */
5501
5696
  fill?: ParsedTableStyleFill;
5697
+ /**
5698
+ * Style-matrix fill reference (`<a:fillRef idx="N">...</a:fillRef>`),
5699
+ * mutually exclusive with {@link fill} (`a:fill` is the choice sibling of
5700
+ * `a:fillRef` in `CT_TableBackgroundStyle`).
5701
+ */
5702
+ fillRef?: ParsedTableFillRef;
5502
5703
  /** Has an `a:effectLst` child that should be round-tripped. */
5503
5704
  hasEffectLst?: boolean;
5504
5705
  }
@@ -5750,6 +5951,13 @@ interface TablePptxElement extends PptxElementBase {
5750
5951
  type: 'table';
5751
5952
  /** Parsed table cell data for editing. */
5752
5953
  tableData?: PptxTableData;
5954
+ /**
5955
+ * Accessibility description from `p:nvGraphicFramePr/p:cNvPr/@descr`, the
5956
+ * same non-visual-properties attribute a picture's alt text comes from.
5957
+ */
5958
+ altText?: string;
5959
+ /** Accessibility title from `p:nvGraphicFramePr/p:cNvPr/@title`. */
5960
+ title?: string;
5753
5961
  /**
5754
5962
  * Unrecognised extensions captured from `a:graphicData/a:extLst` so they
5755
5963
  * round-trip losslessly. See {@link PptxGraphicFrameExtension}.
@@ -5765,6 +5973,10 @@ interface TablePptxElement extends PptxElementBase {
5765
5973
  interface ChartPptxElement extends PptxElementBase {
5766
5974
  type: 'chart';
5767
5975
  chartData?: PptxChartData;
5976
+ /** Accessibility description from `p:nvGraphicFramePr/p:cNvPr/@descr`. */
5977
+ altText?: string;
5978
+ /** Accessibility title from `p:nvGraphicFramePr/p:cNvPr/@title`. */
5979
+ title?: string;
5768
5980
  /** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
5769
5981
  extensionXml?: PptxGraphicFrameExtension[];
5770
5982
  }
@@ -5782,6 +5994,10 @@ interface ChartPptxElement extends PptxElementBase {
5782
5994
  interface SmartArtPptxElement extends PptxElementBase {
5783
5995
  type: 'smartArt';
5784
5996
  smartArtData?: PptxSmartArtData;
5997
+ /** Accessibility description from `p:nvGraphicFramePr/p:cNvPr/@descr`. */
5998
+ altText?: string;
5999
+ /** Accessibility title from `p:nvGraphicFramePr/p:cNvPr/@title`. */
6000
+ title?: string;
5785
6001
  /** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
5786
6002
  extensionXml?: PptxGraphicFrameExtension[];
5787
6003
  }
@@ -5868,6 +6084,10 @@ interface OlePptxElement extends PptxElementBase {
5868
6084
  * `false`; `undefined` means the source authored no explicit value.
5869
6085
  */
5870
6086
  oleUpdateAutomatic?: boolean;
6087
+ /** Accessibility description from `p:nvGraphicFramePr/p:cNvPr/@descr`. */
6088
+ altText?: string;
6089
+ /** Accessibility title from `p:nvGraphicFramePr/p:cNvPr/@title`. */
6090
+ title?: string;
5871
6091
  /** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
5872
6092
  extensionXml?: PptxGraphicFrameExtension[];
5873
6093
  }
@@ -5959,6 +6179,15 @@ interface MediaPptxElement extends PptxElementBase {
5959
6179
  * (`r:embed`). Defaults to embedded when undefined.
5960
6180
  */
5961
6181
  isLinked?: boolean;
6182
+ /**
6183
+ * Accessibility description from `p:nvGraphicFramePr/p:cNvPr/@descr`.
6184
+ * Only populated for the `p:graphicFrame`-shaped (SDK-created) media
6185
+ * form; a `p:pic`-shaped media element's alt text is not currently
6186
+ * parsed (see `PptxHandlerRuntimePictureParsing.ts`).
6187
+ */
6188
+ altText?: string;
6189
+ /** Accessibility title from `p:nvGraphicFramePr/p:cNvPr/@title`. Same scope note as {@link altText}. */
6190
+ title?: string;
5962
6191
  /** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
5963
6192
  extensionXml?: PptxGraphicFrameExtension[];
5964
6193
  }
@@ -6475,7 +6704,20 @@ interface PptxAnimationGraphicElementTarget {
6475
6704
  seriesIdx?: number;
6476
6705
  /** `@_categoryIdx`, 0-based category index, when the target is category-scoped. */
6477
6706
  categoryIdx?: number;
6478
- /** `@_bldStep` (ST_TLChartBuildStep): `category` / `categoryEl` / `series` / `seriesEl`. */
6707
+ /**
6708
+ * `p:dgm/@_id` (CT_TLBuildDiagram, ECMA-376 S19.5.10): the diagram DATA MODEL
6709
+ * point id (`dgm:pt/@modelId`) this per-stage effect reveals, when a
6710
+ * `p:bldDgm` build authors one effect per node instead of a single staged
6711
+ * reveal. `dgm`-kind targets only; a `chart`-kind target never carries this.
6712
+ * Matches `PptxSmartArtNode.id` (parsed from the same `@modelId`), so a
6713
+ * diagram renderer can reveal the exact authored node.
6714
+ */
6715
+ id?: string;
6716
+ /**
6717
+ * `@_bldStep`: `ST_TLChartBuildStep` (`category` / `categoryEl` / `series` /
6718
+ * `seriesEl`) for a `chart`-kind target, or `ST_TLDiagramBuildStep`
6719
+ * (`sp` / `bg`) for a `dgm`-kind target.
6720
+ */
6479
6721
  bldStep?: string;
6480
6722
  }
6481
6723
  /**
@@ -6925,6 +7167,34 @@ interface PptxNativeAnimation {
6925
7167
  * `childStyle`, a legacy compatibility hint. Round-tripped only.
6926
7168
  */
6927
7169
  cBhvrOverride?: 'normal' | 'childStyle';
7170
+ /**
7171
+ * `p:set` discrete attribute assignments composed alongside this effect
7172
+ * (ECMA-376 S19.5.79 CT_TLSetBehavior): an instantaneous (non-interpolated)
7173
+ * value change, as opposed to {@link attributeAnimations}'s `p:anim`
7174
+ * keyframe ramps. PowerPoint authors several font-style emphasis effects
7175
+ * this way (Bold Reveal, Underline, Bold Flash, Change Font Size), since
7176
+ * "on/off" or "size N" has nothing to interpolate. Not yet consulted by
7177
+ * shared playback (round-trip/typed-model only so far).
7178
+ */
7179
+ setAnimations?: PptxSetAnimation[];
7180
+ }
7181
+ /**
7182
+ * One `p:set` discrete (non-interpolated) attribute assignment composed
7183
+ * alongside an authored effect. See {@link PptxNativeAnimation.setAnimations}.
7184
+ *
7185
+ * @see ECMA-376 S19.5.79 CT_TLSetBehavior
7186
+ */
7187
+ interface PptxSetAnimation {
7188
+ /** Lowercased target attribute from `p:cBhvr/p:attrNameLst/p:attrName`. */
7189
+ attrName: string;
7190
+ /** Decoded value from `p:to` (same variant shape as a `p:tav/p:val`). */
7191
+ value: string | boolean | number;
7192
+ /** Discriminant indicating which `p:to` child carried the value. */
7193
+ valueType: 'str' | 'bool' | 'int' | 'flt' | 'clr';
7194
+ /** Duration from this behaviour's nested `p:cTn/@dur`. */
7195
+ durationMs?: number;
7196
+ /** Start offset from this behaviour's nested `p:stCondLst`. */
7197
+ delayMs?: number;
6928
7198
  }
6929
7199
  /**
6930
7200
  * Parsed `p:animEffect/@filter` (+ `@transition`) descriptor. ECMA-376
@@ -7192,6 +7462,16 @@ interface PptxElementAnimation {
7192
7462
  * OOXML equivalent and is not required for playback.
7193
7463
  */
7194
7464
  soundFileName?: string;
7465
+ /**
7466
+ * Per-build-level timing template(s) from the {@link sequence}'s own
7467
+ * `p:bldP/p:tmplLst` (ECMA-376 §19.5.84), carried over from the loaded
7468
+ * `PptxNativeAnimation.buildTemplates` this element animation was derived
7469
+ * from so a full timing-tree rebuild (`PptxAnimationWriteService`'s
7470
+ * `buildTimingXml`, when the slide had no prior `p:timing`) can re-emit
7471
+ * them instead of silently dropping the deck's authored per-level
7472
+ * defaults. Absent when {@link sequence} carries no such template.
7473
+ */
7474
+ buildTemplates?: PptxTimingTemplate[];
7195
7475
  }
7196
7476
  /**
7197
7477
  * A read-only anchor representing one of the deck's own effect groups: a
@@ -8108,6 +8388,22 @@ interface PptxActiveXControl {
8108
8388
  name?: string;
8109
8389
  /** Shape ID this control is linked to (from @spid). */
8110
8390
  shapeId?: string;
8391
+ /**
8392
+ * `p:control/@showAsIcon` (CT_Control, ECMA-376 S19.3.1.2): whether the
8393
+ * control renders as its static icon rather than its live appearance.
8394
+ * `undefined` when the source authored no explicit value (schema default
8395
+ * `false`).
8396
+ */
8397
+ showAsIcon?: boolean;
8398
+ /**
8399
+ * `p:control/@imgW` in EMU (ST_PositiveCoordinate32): the width the host
8400
+ * reserves for the control's icon/preview image. Distinct from
8401
+ * {@link width}, which is the fallback `p:pic`'s own `a:ext/@cx` in px;
8402
+ * `imgW`/`imgH` are direct attributes on `p:control` itself.
8403
+ */
8404
+ imgWidthEmu?: number;
8405
+ /** `p:control/@imgH` in EMU (ST_PositiveCoordinate32). @see imgWidthEmu */
8406
+ imgHeightEmu?: number;
8111
8407
  /** X position (px) of the control's fallback picture, if present. */
8112
8408
  x?: number;
8113
8409
  /** Y position (px) of the control's fallback picture, if present. */
@@ -8564,6 +8860,34 @@ interface PptxPhotoAlbum {
8564
8860
  layout?: string;
8565
8861
  /** Frame style applied to each photo (e.g. "frameStyle1"). */
8566
8862
  frame?: string;
8863
+ /**
8864
+ * `p:photoAlbum/@isPhoto` (ECMA-376 S19.2.1.27, CT_PhotoAlbum): whether
8865
+ * the pictures placed by the album wizard are real photographs, as
8866
+ * opposed to clip art or other embedded images. `undefined` when the
8867
+ * source authored no explicit value (schema default `false`); this is a
8868
+ * purely declarative wizard-provenance flag, not something this library
8869
+ * gates any layout/frame behaviour on.
8870
+ */
8871
+ isPhoto?: boolean;
8872
+ }
8873
+ /**
8874
+ * A recognizer-owned `p:smartTags` reference from `presentation.xml`
8875
+ * (CT_SmartTags, ECMA-376 S19.2.1.42): a bare relationship id pointing at a
8876
+ * legacy Office "Smart Tags" recognizer part, distinct from the
8877
+ * user-authored `p:tags` construct (see {@link PptxTagCollection}).
8878
+ *
8879
+ * This library has no data model for recognizer part CONTENT (there is no
8880
+ * way to create, inspect, or edit one through the public API), so this type
8881
+ * only captures enough to preserve an authored reference losslessly: the
8882
+ * relationship id and, when resolvable, the target part path.
8883
+ */
8884
+ interface PptxSmartTagsReference {
8885
+ /** Relationship id from `p:smartTags/@r:id`. */
8886
+ relId: string;
8887
+ /** Resolved ZIP path of the referenced recognizer part, when resolvable. */
8888
+ targetPath?: string;
8889
+ /** Raw `p:smartTags` XML retained for lossless round-trip. */
8890
+ rawXml?: XmlObject;
8567
8891
  }
8568
8892
  /**
8569
8893
  * East Asian line-break (kinsoku) settings from `p:kinsoku` in `presentation.xml`.
@@ -8628,6 +8952,13 @@ interface PptxData {
8628
8952
  themeOptions?: PptxThemeOption[];
8629
8953
  /** Parsed table style definitions from `ppt/tableStyles.xml`. */
8630
8954
  tableStyleMap?: ParsedTableStyleMap;
8955
+ /**
8956
+ * The current default table style GUID (`ppt/tableStyles.xml`'s
8957
+ * `a:tblStyleLst/@def`): the style PowerPoint applies to a newly inserted
8958
+ * table. Matches `PptxSaveOptions.tableStylesDefaultId` so a save call
8959
+ * that omits it can fall back to what was loaded.
8960
+ */
8961
+ tableStylesDefaultId?: string;
8631
8962
  /** Whether the presentation is password-protected. */
8632
8963
  isPasswordProtected?: boolean;
8633
8964
  /** Embedded font data (name + binary data URL) extracted from the presentation. */
@@ -8687,6 +9018,14 @@ interface PptxData {
8687
9018
  modifyVerifier?: PptxModifyVerifier;
8688
9019
  /** Photo album metadata from `p:photoAlbum` in `presentation.xml`. */
8689
9020
  photoAlbum?: PptxPhotoAlbum;
9021
+ /**
9022
+ * Legacy Smart Tags recognizer reference from `p:smartTags` in
9023
+ * `presentation.xml`. Read-only: there is no data model for the
9024
+ * recognizer part's own content, so this exists to make the reference
9025
+ * inspectable and to prove it survives a save (the owning part and its
9026
+ * relationship are preserved passively, like any other unmodelled part).
9027
+ */
9028
+ smartTags?: PptxSmartTagsReference;
8690
9029
  /** East Asian line-break settings from `p:kinsoku` in `presentation.xml`. */
8691
9030
  kinsoku?: PptxKinsoku;
8692
9031
  /** Custom XML data parts from `customXml/` in the OPC package. */
@@ -8851,6 +9190,14 @@ type FillInput = {
8851
9190
  type: 'solid';
8852
9191
  color: string;
8853
9192
  opacity?: number;
9193
+ /**
9194
+ * A theme colour to use instead of a plain hex. When set, the shape
9195
+ * saves as `<a:schemeClr>` (e.g. `{ scheme: 'accent1', lumMod: 0.8 }`
9196
+ * for "Accent 1, Lighter 80%") so it keeps following the theme after a
9197
+ * later theme change; `color` still supplies the immediate resolved
9198
+ * hex for renderers that read it directly.
9199
+ */
9200
+ themeColorRef?: PptxThemeColorRef;
8854
9201
  } | {
8855
9202
  type: 'gradient';
8856
9203
  /**
@@ -8886,6 +9233,8 @@ interface StrokeInput {
8886
9233
  opacity?: number;
8887
9234
  join?: 'round' | 'bevel' | 'miter';
8888
9235
  cap?: 'flat' | 'rnd' | 'sq';
9236
+ /** A theme colour for the outline; see {@link FillInput}'s `themeColorRef`. */
9237
+ themeColorRef?: PptxThemeColorRef;
8889
9238
  }
8890
9239
  interface ShadowInput {
8891
9240
  color?: string;
@@ -8902,6 +9251,8 @@ interface TextStyleInput {
8902
9251
  underline?: boolean;
8903
9252
  strikethrough?: boolean;
8904
9253
  color?: string;
9254
+ /** A theme colour for the run; see {@link FillInput}'s `themeColorRef`. */
9255
+ themeColorRef?: PptxThemeColorRef;
8905
9256
  alignment?: 'left' | 'center' | 'right' | 'justify';
8906
9257
  verticalAlignment?: 'top' | 'middle' | 'bottom';
8907
9258
  lineSpacing?: number;
@@ -9529,6 +9880,24 @@ interface PptxHandlerSaveOptions {
9529
9880
  * part untouched.
9530
9881
  */
9531
9882
  tableStyles?: ParsedTableStyleMap;
9883
+ /**
9884
+ * Set `ppt/tableStyles.xml`'s `<a:tblStyleLst @def>` to this style GUID
9885
+ * (normalised to uppercase-with-braces). `undefined` preserves the
9886
+ * existing default; there is no removal form (`@def` is required by the
9887
+ * schema and PowerPoint always points it at a real style). No-op when the
9888
+ * archive has no `ppt/tableStyles.xml`, same as {@link tableStyles}.
9889
+ */
9890
+ tableStylesDefaultId?: string;
9891
+ /**
9892
+ * Style GUIDs to remove from `ppt/tableStyles.xml` entirely, kept as a
9893
+ * separate opt-in list rather than inferred from omission on
9894
+ * {@link tableStyles}: that map is documented as safe to pass a PARTIAL
9895
+ * edit (only the entries a caller actually touched), so treating every
9896
+ * GUID missing from it as "delete this" would silently destroy untouched
9897
+ * styles on an ordinary targeted edit. A GUID here that is also the
9898
+ * current (or newly requested) default is left in place and skipped.
9899
+ */
9900
+ tableStylesToDelete?: string[];
9532
9901
  /**
9533
9902
  * Target output format.
9534
9903
  * - `'pptx'` (default): Standard presentation.
@@ -10467,6 +10836,27 @@ interface ChartRevealDescriptor {
10467
10836
  /** Individual cells revealed by a `bldStep="seriesEl"`/`"categoryEl"` effect. */
10468
10837
  points: readonly ChartRevealPoint[];
10469
10838
  }
10839
+ /**
10840
+ * Playback-time SmartArt diagram reveal state derived from AUTHORED
10841
+ * `p:graphicEl/p:dgm/@id` indices (see `diagram-reveal-descriptor`'s
10842
+ * `resolveDiagramRevealDescriptor`), rather than from click-count/time
10843
+ * progress. Present on {@link ElementAnimationState.diagramReveal} only when
10844
+ * every fired diagram-build step for the element carried `p:graphicEl` data.
10845
+ * A SmartArt renderer prefers this over the progress-based `build` /
10846
+ * {@link ElementBuildState} path when present, since it reflects the real
10847
+ * authored reveal set (correct even for a reversed-order or by-branch build),
10848
+ * and falls back to `build` when absent.
10849
+ */
10850
+ interface DiagramRevealDescriptor {
10851
+ /**
10852
+ * Whether the diagram's background/connector chrome should currently be
10853
+ * visible: `true` once any node-revealing or background-revealing
10854
+ * (`bldStep="bg"`) step has fired.
10855
+ */
10856
+ background: boolean;
10857
+ /** Data-model point ids (`PptxSmartArtNode.id`) revealed so far. */
10858
+ nodeIds: ReadonlySet<string>;
10859
+ }
10470
10860
  /**
10471
10861
  * Playback-time staged-build state surfaced on {@link ElementAnimationState}.
10472
10862
  * `progress` is the 0..1 fraction of the build revealed at the current playback
@@ -10507,6 +10897,17 @@ interface ElementAnimationState {
10507
10897
  mode: ChartBuildMode;
10508
10898
  descriptor: ChartRevealDescriptor;
10509
10899
  };
10900
+ /**
10901
+ * Authored-index SmartArt diagram reveal state (see
10902
+ * {@link DiagramRevealDescriptor}), present only when every fired
10903
+ * diagram-build step for this element carried `p:graphicEl` node-id data.
10904
+ * `diagram-build`'s `resolveRevealedSmartArtNodes` prefers this over `build`
10905
+ * when present.
10906
+ */
10907
+ diagramReveal?: {
10908
+ mode: DiagramBuildMode;
10909
+ descriptor: DiagramRevealDescriptor;
10910
+ };
10510
10911
  /**
10511
10912
  * True when an active `p:animClr` color animation targets this shape's fill.
10512
10913
  * A vector renderer should then paint the fill with `fill: inherit` so the