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
@@ -573,6 +573,44 @@ interface PptxCustomPathProperties {
573
573
  customGeometryTextRect?: CustomGeometryTextRect;
574
574
  }
575
575
  //#endregion
576
+ //#region src/core/types/color-ref.d.ts
577
+ /**
578
+ * Theme colour references: the typed counterpart of `<a:schemeClr>`.
579
+ *
580
+ * A colour picked from the theme palette is remembered as a scheme slot plus
581
+ * PowerPoint's luminance variants rather than as the sRGB it currently
582
+ * resolves to, so a later theme change re-colours the shape (and a saved file
583
+ * keeps `<a:schemeClr>` instead of a canonical `<a:srgbClr>`).
584
+ *
585
+ * @module types/color-ref
586
+ */
587
+ /**
588
+ * The scheme slot names `a:schemeClr/@val` accepts (ECMA-376 `ST_SchemeColorIndex`).
589
+ * `bg1`/`tx1`/`bg2`/`tx2` are the colour-map aliases a slide resolves through
590
+ * `p:clrMap`; `phClr` is the placeholder colour used inside a theme's style
591
+ * matrix and is never chosen from a picker.
592
+ */
593
+ type PptxThemeColorSchemeName = 'dk1' | 'lt1' | 'dk2' | 'lt2' | 'accent1' | 'accent2' | 'accent3' | 'accent4' | 'accent5' | 'accent6' | 'hlink' | 'folHlink' | 'bg1' | 'tx1' | 'bg2' | 'tx2' | 'phClr';
594
+ /**
595
+ * A theme colour choice. Every transform is a 0..1 fraction of the OOXML
596
+ * percentage (`lumMod val="20000"` is `lumMod: 0.2`), matching how the parser
597
+ * reads them, and is applied in the order `a:schemeClr` children are written:
598
+ * `tint`, `shade`, `lumMod`, `lumOff`, `alpha`.
599
+ */
600
+ interface PptxThemeColorRef {
601
+ scheme: PptxThemeColorSchemeName;
602
+ /** `a:lumMod`: multiply HSL luminance (PowerPoint's "Lighter/Darker" rows). */
603
+ lumMod?: number;
604
+ /** `a:lumOff`: add to HSL luminance after `lumMod` ("Lighter N%" rows). */
605
+ lumOff?: number;
606
+ /** `a:tint`: blend towards white. */
607
+ tint?: number;
608
+ /** `a:shade`: blend towards black. */
609
+ shade?: number;
610
+ /** `a:alpha`: opacity fraction (1 = opaque). */
611
+ alpha?: number;
612
+ }
613
+ //#endregion
576
614
  //#region src/core/types/effect-dag.d.ts
577
615
  type EffectDagBlendMode = 'darken' | 'lighten' | 'mult' | 'over' | 'screen';
578
616
  type EffectDagContainerType = 'sib' | 'tree';
@@ -862,6 +900,15 @@ interface ShapeStyle {
862
900
  * back to canonical `<a:srgbClr>`.
863
901
  */
864
902
  fillColorXml?: XmlObject;
903
+ /**
904
+ * Typed theme colour reference for the fill, set when {@link fillColorXml}
905
+ * is a plain `a:schemeClr` (see `themeColorRefFromColorChoice`). When
906
+ * present it WINS on save: the writer emits `<a:schemeClr>` from this ref
907
+ * instead of the resolved {@link fillColor}, so the fill keeps following
908
+ * the theme palette after a later theme change. `undefined` means the fill
909
+ * is a plain hex (or a colour kind a ref cannot express).
910
+ */
911
+ fillColorRef?: PptxThemeColorRef;
865
912
  fillGradient?: string;
866
913
  /** Original `gradFill` XML retained for unknown-child and extension round-tripping. */
867
914
  fillGradientXml?: XmlObject;
@@ -896,6 +943,12 @@ interface ShapeStyle {
896
943
  opacity?: number;
897
944
  /** Raw XML colour node preserved for round-trip (e.g. a:schemeClr with transforms). */
898
945
  originalColorXml?: XmlObject;
946
+ /**
947
+ * Typed theme colour reference for this stop, set when
948
+ * {@link originalColorXml} is a plain `a:schemeClr`. Wins on save, same
949
+ * as {@link ShapeStyle.fillColorRef}.
950
+ */
951
+ colorRef?: PptxThemeColorRef;
899
952
  }>;
900
953
  fillGradientAngle?: number;
901
954
  fillGradientType?: 'linear' | 'radial';
@@ -942,6 +995,12 @@ interface ShapeStyle {
942
995
  * round-trip serialisation. See {@link fillColorXml} for the rationale.
943
996
  */
944
997
  strokeColorXml?: XmlObject;
998
+ /**
999
+ * Typed theme colour reference for the outline, mirroring
1000
+ * {@link fillColorRef}: set when {@link strokeColorXml} is a plain
1001
+ * `a:schemeClr`, and wins on save.
1002
+ */
1003
+ strokeColorRef?: PptxThemeColorRef;
945
1004
  /**
946
1005
  * Kind of fill painted on the outline (`a:ln` child). Distinguishes a solid
947
1006
  * outline from a gradient/pattern/none outline so save can emit the correct
@@ -1445,6 +1504,15 @@ interface TextStyle {
1445
1504
  * verbatim when the resolved {@link color} still matches this node.
1446
1505
  */
1447
1506
  colorXml?: XmlObject;
1507
+ /**
1508
+ * Typed theme colour reference for the run's text colour, set when
1509
+ * {@link colorXml} is a plain `a:schemeClr` (see
1510
+ * `themeColorRefFromColorChoice`). When present it WINS on save: the
1511
+ * writer emits `<a:schemeClr>` from this ref instead of the resolved
1512
+ * {@link color}, so the text keeps following the theme palette after a
1513
+ * later theme change.
1514
+ */
1515
+ colorRef?: PptxThemeColorRef;
1448
1516
  align?: 'left' | 'center' | 'right' | 'justify' | 'justLow' | 'dist' | 'thaiDist';
1449
1517
  /**
1450
1518
  * Vertical text-box anchor (`a:bodyPr/@anchor`, `ST_TextAnchoringType`).
@@ -1870,6 +1938,12 @@ interface BulletInfo {
1870
1938
  * identity rather than being flattened to `<a:srgbClr/>` on save.
1871
1939
  */
1872
1940
  colorXml?: XmlObject;
1941
+ /**
1942
+ * Typed theme colour reference for the bullet colour, set when
1943
+ * {@link colorXml} is a plain `a:schemeClr`. Wins on save, same as
1944
+ * {@link TextStyle.colorRef}.
1945
+ */
1946
+ colorRef?: PptxThemeColorRef;
1873
1947
  /** True when `a:buNone` explicitly suppresses bullets. */
1874
1948
  none?: boolean;
1875
1949
  /** Picture bullet: relationship ID from `a:buBlip` → `a:blip[@r:embed]`. */
@@ -2481,6 +2555,39 @@ interface PptxChartStyleDefinition {
2481
2555
  plotArea?: PptxChartStylePartEntry;
2482
2556
  }
2483
2557
  //#endregion
2558
+ //#region src/core/types/chart-title.d.ts
2559
+ /**
2560
+ * Chart title rich-text run type, split out of `types/chart.ts` (already at
2561
+ * the repo's file-size limit) to keep that module from growing further.
2562
+ *
2563
+ * @module pptx-types/chart-title
2564
+ */
2565
+ /**
2566
+ * One run of a chart title's rich text (`c:title/c:tx/c:rich/a:p/a:r`).
2567
+ *
2568
+ * The flat `PptxChartData.title` field only ever captured the FIRST run's
2569
+ * text with no per-run formatting; `titleRuns` (when present) is the
2570
+ * lossless, multi-run replacement parsed from the same `c:rich` body. Absent
2571
+ * when the title has no rich text at all (an empty/auto title, or one
2572
+ * authored as a linked-cell reference).
2573
+ */
2574
+ interface PptxChartTitleRun {
2575
+ /** This run's text (`a:t`). */
2576
+ text: string;
2577
+ /** `a:rPr/@_b`. */
2578
+ bold?: boolean;
2579
+ /** `a:rPr/@_i`. */
2580
+ italic?: boolean;
2581
+ /**
2582
+ * Font size in POINTS (`a:rPr/@_sz`, hundredths of a point / 100), matching
2583
+ * `PptxChartLegendTextStyle.fontSize`'s convention rather than the pixel
2584
+ * convention `TextStyle.fontSize` uses for slide text.
2585
+ */
2586
+ fontSize?: number;
2587
+ /** Resolved hex colour (e.g. `"#FF0000"`) from `a:rPr/a:solidFill`. */
2588
+ color?: string;
2589
+ }
2590
+ //#endregion
2484
2591
  //#region src/core/types/chart-user-shapes.d.ts
2485
2592
  /**
2486
2593
  * Types for chart drawing-overlay shapes (`c:userShapes`).
@@ -2629,6 +2736,10 @@ interface PptxChartTrendline {
2629
2736
  displayRSq?: boolean;
2630
2737
  displayEq?: boolean;
2631
2738
  color?: string;
2739
+ /** Trendline width in points (`c:trendline/c:spPr/a:ln/@w`, EMU / 12700). */
2740
+ lineWidth?: number;
2741
+ /** Trendline dash style (`c:trendline/c:spPr/a:ln/a:prstDash/@val`). */
2742
+ lineDashStyle?: string;
2632
2743
  label?: PptxChartTrendlineLabel | null;
2633
2744
  }
2634
2745
  /** Typed, commonly edited properties of `c:trendlineLbl`. */
@@ -2674,6 +2785,10 @@ interface PptxChartErrBars {
2674
2785
  customMinus?: number[];
2675
2786
  noEndCap?: boolean;
2676
2787
  color?: string;
2788
+ /** Error-bar line width in points (`c:errBars/c:spPr/a:ln/@w`, EMU / 12700). */
2789
+ width?: number;
2790
+ /** Error-bar line dash style (`c:errBars/c:spPr/a:ln/a:prstDash/@val`). */
2791
+ dashStyle?: string;
2677
2792
  }
2678
2793
  /**
2679
2794
  * Visibility flags for the chart data table (axes + legend keys).
@@ -2800,6 +2915,12 @@ interface PptxChartDataLabel {
2800
2915
  * `.../a:p/a:pPr/a:defRPr` default-run-property style.
2801
2916
  */
2802
2917
  txPr?: PptxChartLegendTextStyle;
2918
+ /**
2919
+ * This label's own shape formatting (`c:dLbl/c:spPr`): fill/line colour,
2920
+ * width, and dash style for the label's callout box, taking precedence
2921
+ * over any chart/series-level default when set.
2922
+ */
2923
+ spPr?: PptxChartShapeProps;
2803
2924
  }
2804
2925
  /** Axis number format. */
2805
2926
  interface PptxChartAxisNumFmt {
@@ -3363,6 +3484,16 @@ interface PptxChartDateCategories {
3363
3484
  */
3364
3485
  interface PptxChartData {
3365
3486
  title?: string;
3487
+ /**
3488
+ * Rich-text runs of the title, parsed from `c:title/c:tx/c:rich` (issue:
3489
+ * chart title rich text). Lossless multi-run alternative to the flat
3490
+ * {@link title}: when present, the writer serialises every run's own
3491
+ * bold/italic/size/color; when absent, save falls back to the flat
3492
+ * `title` path as before. Only populated for a classic (`c:`) chart's
3493
+ * rich (typed) title, not a ChartEx (`cx:`) title or one authored as a
3494
+ * linked-cell reference.
3495
+ */
3496
+ titleRuns?: PptxChartTitleRun[];
3366
3497
  chartType: PptxChartType;
3367
3498
  categories: string[];
3368
3499
  /**
@@ -3454,8 +3585,10 @@ interface PptxChartData {
3454
3585
  chartRelationshipId?: string;
3455
3586
  /** `null` explicitly removes an existing ChartML data table. */
3456
3587
  dataTable?: PptxChartDataTable | null;
3457
- dropLines?: PptxChartLineStyle;
3458
- hiLowLines?: PptxChartLineStyle;
3588
+ /** `null` explicitly removes an existing `c:dropLines` element. */
3589
+ dropLines?: PptxChartLineStyle | null;
3590
+ /** `null` explicitly removes an existing `c:hiLowLines` element. */
3591
+ hiLowLines?: PptxChartLineStyle | null;
3459
3592
  /** `null` explicitly removes an existing up/down-bars container. */
3460
3593
  upDownBars?: PptxChartUpDownBars | null;
3461
3594
  axes?: PptxChartAxisFormatting[];
@@ -3570,10 +3703,13 @@ interface PptxChartData {
3570
3703
  pivotFormats?: PptxChartPivotFormats | null;
3571
3704
  /**
3572
3705
  * Color-map override (`c:clrMapOvr`) carrying 12 attributes that
3573
- * remap theme colour roles for this chart only. Preserved as a flat
3574
- * `attribute value` map for round-trip fidelity.
3706
+ * remap theme colour roles for this chart only. Modeled as a flat
3707
+ * `attribute -> value` map (e.g. `{ bg1: 'lt1', accent1: 'accent2' }`)
3708
+ * so unknown/future attributes round-trip without code changes.
3709
+ * `null` explicitly removes an existing `c:clrMapOvr`; an empty object
3710
+ * is treated the same as `null` on save.
3575
3711
  */
3576
- clrMapOvr?: Record<string, string>;
3712
+ clrMapOvr?: Record<string, string> | null;
3577
3713
  /**
3578
3714
  * Whether the chart's own cached numeric values use the 1904 date epoch
3579
3715
  * (`c:chartSpace/c:date1904/@val`). Independent of, and authoritative over,
@@ -4950,13 +5086,55 @@ interface PptxSmartArtData {
4950
5086
  drawingDirty?: boolean;
4951
5087
  }
4952
5088
  //#endregion
4953
- //#region src/core/types/table.d.ts
5089
+ //#region src/core/types/table-style-edit.d.ts
5090
+ /**
5091
+ * A `a:fillRef`/`a:lnRef`/`a:effectRef`-style style-matrix reference: an
5092
+ * index into the theme's format scheme (`a:fmtScheme/a:fillStyleLst`, 1-based
5093
+ * per ECMA-376 §20.1.4.1.12) plus an optional colour transform child.
5094
+ *
5095
+ * Distinct from an already-resolved {@link ParsedTableStyleFill}: a fill ref
5096
+ * points AT a theme style-matrix entry rather than carrying a colour choice
5097
+ * directly, though the two commonly appear together (`<a:fillRef idx="2">
5098
+ * <a:schemeClr val="accent1"/></a:fillRef>`).
5099
+ *
5100
+ * @example
5101
+ * ```ts
5102
+ * const ref: ParsedTableFillRef = { idx: 2, color: { schemeColor: 'accent1' } };
5103
+ * // => satisfies ParsedTableFillRef
5104
+ * ```
5105
+ */
5106
+ interface ParsedTableFillRef {
5107
+ /** 1-based index into the theme format scheme's fill style list. */
5108
+ idx: number;
5109
+ /** Colour transform child (`a:schemeClr`/`a:srgbClr`) applied to the referenced style. */
5110
+ color?: ParsedTableStyleFill;
5111
+ }
4954
5112
  /**
4955
- * Table types: cell styling, cell data, rows, table data, and the parsed
4956
- * table style map from `ppt/tableStyles.xml`.
5113
+ * One leaf (or `effectDag`-wrapped) node of an `a:effectLst`/`a:effectDag`
5114
+ * effect chain, kept mostly opaque: {@link kind} names the OOXML element so a
5115
+ * consumer can recognise common effects (`outerShdw`, `glow`, `softEdge`,
5116
+ * `reflection`, `blur`, `innerShdw`, `prstShdw`, `fillOverlay`, `alphaModFix`,
5117
+ * `alphaInv`, `grayscl`, `biLevel`, `duotone`, `hsl`, `lum`, `tint`) without
5118
+ * this module re-deriving the full shape-effect taxonomy already modelled on
5119
+ * `ShapeStyle`; {@link xml} preserves the node verbatim for lossless re-emit.
4957
5120
  *
4958
- * @module pptx-types/table
5121
+ * @example
5122
+ * ```ts
5123
+ * const effect: ParsedTableStyleEffect = {
5124
+ * kind: 'outerShdw',
5125
+ * xml: { '@_blurRad': '40000', '@_dist': '20000', '@_dir': '5400000' },
5126
+ * };
5127
+ * // => satisfies ParsedTableStyleEffect
5128
+ * ```
4959
5129
  */
5130
+ interface ParsedTableStyleEffect {
5131
+ /** The OOXML element's local name, e.g. `outerShdw`, `glow`, `softEdge`. */
5132
+ kind: string;
5133
+ /** Verbatim XML node (attributes + children) for lossless round-trip. */
5134
+ xml: XmlObject;
5135
+ }
5136
+ //#endregion
5137
+ //#region src/core/types/table.d.ts
4960
5138
  /**
4961
5139
  * Per-cell visual style for a table cell.
4962
5140
  *
@@ -4993,6 +5171,14 @@ interface PptxTableCellStyle {
4993
5171
  * future expansion alongside the run-properties round-trip path.
4994
5172
  */
4995
5173
  colorXml?: XmlObject;
5174
+ /**
5175
+ * Typed theme colour reference for the cell text colour, set when
5176
+ * {@link colorXml} is a plain `a:schemeClr`. Wins on save, mirroring
5177
+ * `TextStyle.colorRef`. Distinct from {@link ParsedTableStyleFill.schemeColor},
5178
+ * which describes a `ppt/tableStyles.xml` section fill rather than an
5179
+ * individual cell override.
5180
+ */
5181
+ colorRef?: PptxThemeColorRef;
4996
5182
  backgroundColor?: string;
4997
5183
  /**
4998
5184
  * Raw XML colour-choice node preserved from cell `a:tcPr/a:solidFill` for
@@ -5000,6 +5186,12 @@ interface PptxTableCellStyle {
5000
5186
  * {@link backgroundColor} still matches the original colour.
5001
5187
  */
5002
5188
  backgroundColorXml?: XmlObject;
5189
+ /**
5190
+ * Typed theme colour reference for the cell fill, set when
5191
+ * {@link backgroundColorXml} is a plain `a:schemeClr`. Wins on save,
5192
+ * mirroring `ShapeStyle.fillColorRef`.
5193
+ */
5194
+ backgroundColorRef?: PptxThemeColorRef;
5003
5195
  borderColor?: string;
5004
5196
  /** Top border width in px. */
5005
5197
  borderTopWidth?: number;
@@ -5313,12 +5505,14 @@ interface PptxTableData {
5313
5505
  */
5314
5506
  tableFill?: ParsedTableStyleFill;
5315
5507
  /**
5316
- * Whether `a:tblPr` carries its own `a:effectLst`/`a:effectDag`,
5317
- * independent of the referenced table style. Presence-only: the concrete
5318
- * effect is not yet rendered, and the raw XML round-trips separately via
5319
- * whatever preserves `a:tblPr`'s unrecognised children (issue G6).
5508
+ * `a:tblPr`'s own `a:effectLst` (or `a:effectDag`) effect chain,
5509
+ * independent of the referenced table style, decomposed into a typed
5510
+ * sequence of {@link ParsedTableStyleEffect} nodes (issue G6). Each node
5511
+ * keeps its own XML verbatim for lossless round-trip; empty array is
5512
+ * normalised to `undefined` by the parser so `tableEffects` is only ever
5513
+ * present when there is at least one effect.
5320
5514
  */
5321
- tableEffects?: boolean;
5515
+ tableEffects?: ParsedTableStyleEffect[];
5322
5516
  }
5323
5517
  /**
5324
5518
  * A single fill reference within a table style section.
@@ -5494,13 +5688,20 @@ interface ParsedTableStyleBorders {
5494
5688
  /**
5495
5689
  * Table background style (CT_TableBackgroundStyle, ECMA-376 §21.1.3.7).
5496
5690
  *
5497
- * Corresponds to the `<a:tblBg>` child of `<a:tblStyle>`. Currently
5498
- * captures only the resolved scheme-fill colour (verbatim XML for fill
5499
- * / effect references is preserved separately by the save path).
5691
+ * Corresponds to the `<a:tblBg>` child of `<a:tblStyle>`. Captures the
5692
+ * resolved scheme-fill colour, an unresolved style-matrix `a:fillRef`, and a
5693
+ * presence flag for effects (verbatim XML for the effect list is preserved
5694
+ * separately by the save path).
5500
5695
  */
5501
5696
  interface ParsedTableBackground {
5502
5697
  /** Solid fill (resolved from `a:fill > a:solidFill > a:schemeClr`). */
5503
5698
  fill?: ParsedTableStyleFill;
5699
+ /**
5700
+ * Style-matrix fill reference (`<a:fillRef idx="N">...</a:fillRef>`),
5701
+ * mutually exclusive with {@link fill} (`a:fill` is the choice sibling of
5702
+ * `a:fillRef` in `CT_TableBackgroundStyle`).
5703
+ */
5704
+ fillRef?: ParsedTableFillRef;
5504
5705
  /** Has an `a:effectLst` child that should be round-tripped. */
5505
5706
  hasEffectLst?: boolean;
5506
5707
  }
@@ -5752,6 +5953,13 @@ interface TablePptxElement extends PptxElementBase {
5752
5953
  type: 'table';
5753
5954
  /** Parsed table cell data for editing. */
5754
5955
  tableData?: PptxTableData;
5956
+ /**
5957
+ * Accessibility description from `p:nvGraphicFramePr/p:cNvPr/@descr`, the
5958
+ * same non-visual-properties attribute a picture's alt text comes from.
5959
+ */
5960
+ altText?: string;
5961
+ /** Accessibility title from `p:nvGraphicFramePr/p:cNvPr/@title`. */
5962
+ title?: string;
5755
5963
  /**
5756
5964
  * Unrecognised extensions captured from `a:graphicData/a:extLst` so they
5757
5965
  * round-trip losslessly. See {@link PptxGraphicFrameExtension}.
@@ -5767,6 +5975,10 @@ interface TablePptxElement extends PptxElementBase {
5767
5975
  interface ChartPptxElement extends PptxElementBase {
5768
5976
  type: 'chart';
5769
5977
  chartData?: PptxChartData;
5978
+ /** Accessibility description from `p:nvGraphicFramePr/p:cNvPr/@descr`. */
5979
+ altText?: string;
5980
+ /** Accessibility title from `p:nvGraphicFramePr/p:cNvPr/@title`. */
5981
+ title?: string;
5770
5982
  /** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
5771
5983
  extensionXml?: PptxGraphicFrameExtension[];
5772
5984
  }
@@ -5784,6 +5996,10 @@ interface ChartPptxElement extends PptxElementBase {
5784
5996
  interface SmartArtPptxElement extends PptxElementBase {
5785
5997
  type: 'smartArt';
5786
5998
  smartArtData?: PptxSmartArtData;
5999
+ /** Accessibility description from `p:nvGraphicFramePr/p:cNvPr/@descr`. */
6000
+ altText?: string;
6001
+ /** Accessibility title from `p:nvGraphicFramePr/p:cNvPr/@title`. */
6002
+ title?: string;
5787
6003
  /** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
5788
6004
  extensionXml?: PptxGraphicFrameExtension[];
5789
6005
  }
@@ -5870,6 +6086,10 @@ interface OlePptxElement extends PptxElementBase {
5870
6086
  * `false`; `undefined` means the source authored no explicit value.
5871
6087
  */
5872
6088
  oleUpdateAutomatic?: boolean;
6089
+ /** Accessibility description from `p:nvGraphicFramePr/p:cNvPr/@descr`. */
6090
+ altText?: string;
6091
+ /** Accessibility title from `p:nvGraphicFramePr/p:cNvPr/@title`. */
6092
+ title?: string;
5873
6093
  /** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
5874
6094
  extensionXml?: PptxGraphicFrameExtension[];
5875
6095
  }
@@ -5961,6 +6181,15 @@ interface MediaPptxElement extends PptxElementBase {
5961
6181
  * (`r:embed`). Defaults to embedded when undefined.
5962
6182
  */
5963
6183
  isLinked?: boolean;
6184
+ /**
6185
+ * Accessibility description from `p:nvGraphicFramePr/p:cNvPr/@descr`.
6186
+ * Only populated for the `p:graphicFrame`-shaped (SDK-created) media
6187
+ * form; a `p:pic`-shaped media element's alt text is not currently
6188
+ * parsed (see `PptxHandlerRuntimePictureParsing.ts`).
6189
+ */
6190
+ altText?: string;
6191
+ /** Accessibility title from `p:nvGraphicFramePr/p:cNvPr/@title`. Same scope note as {@link altText}. */
6192
+ title?: string;
5964
6193
  /** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
5965
6194
  extensionXml?: PptxGraphicFrameExtension[];
5966
6195
  }
@@ -6467,7 +6696,20 @@ interface PptxAnimationGraphicElementTarget {
6467
6696
  seriesIdx?: number;
6468
6697
  /** `@_categoryIdx`, 0-based category index, when the target is category-scoped. */
6469
6698
  categoryIdx?: number;
6470
- /** `@_bldStep` (ST_TLChartBuildStep): `category` / `categoryEl` / `series` / `seriesEl`. */
6699
+ /**
6700
+ * `p:dgm/@_id` (CT_TLBuildDiagram, ECMA-376 S19.5.10): the diagram DATA MODEL
6701
+ * point id (`dgm:pt/@modelId`) this per-stage effect reveals, when a
6702
+ * `p:bldDgm` build authors one effect per node instead of a single staged
6703
+ * reveal. `dgm`-kind targets only; a `chart`-kind target never carries this.
6704
+ * Matches `PptxSmartArtNode.id` (parsed from the same `@modelId`), so a
6705
+ * diagram renderer can reveal the exact authored node.
6706
+ */
6707
+ id?: string;
6708
+ /**
6709
+ * `@_bldStep`: `ST_TLChartBuildStep` (`category` / `categoryEl` / `series` /
6710
+ * `seriesEl`) for a `chart`-kind target, or `ST_TLDiagramBuildStep`
6711
+ * (`sp` / `bg`) for a `dgm`-kind target.
6712
+ */
6471
6713
  bldStep?: string;
6472
6714
  }
6473
6715
  /**
@@ -6917,6 +7159,34 @@ interface PptxNativeAnimation {
6917
7159
  * `childStyle`, a legacy compatibility hint. Round-tripped only.
6918
7160
  */
6919
7161
  cBhvrOverride?: 'normal' | 'childStyle';
7162
+ /**
7163
+ * `p:set` discrete attribute assignments composed alongside this effect
7164
+ * (ECMA-376 S19.5.79 CT_TLSetBehavior): an instantaneous (non-interpolated)
7165
+ * value change, as opposed to {@link attributeAnimations}'s `p:anim`
7166
+ * keyframe ramps. PowerPoint authors several font-style emphasis effects
7167
+ * this way (Bold Reveal, Underline, Bold Flash, Change Font Size), since
7168
+ * "on/off" or "size N" has nothing to interpolate. Not yet consulted by
7169
+ * shared playback (round-trip/typed-model only so far).
7170
+ */
7171
+ setAnimations?: PptxSetAnimation[];
7172
+ }
7173
+ /**
7174
+ * One `p:set` discrete (non-interpolated) attribute assignment composed
7175
+ * alongside an authored effect. See {@link PptxNativeAnimation.setAnimations}.
7176
+ *
7177
+ * @see ECMA-376 S19.5.79 CT_TLSetBehavior
7178
+ */
7179
+ interface PptxSetAnimation {
7180
+ /** Lowercased target attribute from `p:cBhvr/p:attrNameLst/p:attrName`. */
7181
+ attrName: string;
7182
+ /** Decoded value from `p:to` (same variant shape as a `p:tav/p:val`). */
7183
+ value: string | boolean | number;
7184
+ /** Discriminant indicating which `p:to` child carried the value. */
7185
+ valueType: 'str' | 'bool' | 'int' | 'flt' | 'clr';
7186
+ /** Duration from this behaviour's nested `p:cTn/@dur`. */
7187
+ durationMs?: number;
7188
+ /** Start offset from this behaviour's nested `p:stCondLst`. */
7189
+ delayMs?: number;
6920
7190
  }
6921
7191
  /**
6922
7192
  * Parsed `p:animEffect/@filter` (+ `@transition`) descriptor. ECMA-376
@@ -7184,6 +7454,16 @@ interface PptxElementAnimation {
7184
7454
  * OOXML equivalent and is not required for playback.
7185
7455
  */
7186
7456
  soundFileName?: string;
7457
+ /**
7458
+ * Per-build-level timing template(s) from the {@link sequence}'s own
7459
+ * `p:bldP/p:tmplLst` (ECMA-376 §19.5.84), carried over from the loaded
7460
+ * `PptxNativeAnimation.buildTemplates` this element animation was derived
7461
+ * from so a full timing-tree rebuild (`PptxAnimationWriteService`'s
7462
+ * `buildTimingXml`, when the slide had no prior `p:timing`) can re-emit
7463
+ * them instead of silently dropping the deck's authored per-level
7464
+ * defaults. Absent when {@link sequence} carries no such template.
7465
+ */
7466
+ buildTemplates?: PptxTimingTemplate[];
7187
7467
  }
7188
7468
  /**
7189
7469
  * A read-only anchor representing one of the deck's own effect groups: a
@@ -8100,6 +8380,22 @@ interface PptxActiveXControl {
8100
8380
  name?: string;
8101
8381
  /** Shape ID this control is linked to (from @spid). */
8102
8382
  shapeId?: string;
8383
+ /**
8384
+ * `p:control/@showAsIcon` (CT_Control, ECMA-376 S19.3.1.2): whether the
8385
+ * control renders as its static icon rather than its live appearance.
8386
+ * `undefined` when the source authored no explicit value (schema default
8387
+ * `false`).
8388
+ */
8389
+ showAsIcon?: boolean;
8390
+ /**
8391
+ * `p:control/@imgW` in EMU (ST_PositiveCoordinate32): the width the host
8392
+ * reserves for the control's icon/preview image. Distinct from
8393
+ * {@link width}, which is the fallback `p:pic`'s own `a:ext/@cx` in px;
8394
+ * `imgW`/`imgH` are direct attributes on `p:control` itself.
8395
+ */
8396
+ imgWidthEmu?: number;
8397
+ /** `p:control/@imgH` in EMU (ST_PositiveCoordinate32). @see imgWidthEmu */
8398
+ imgHeightEmu?: number;
8103
8399
  /** X position (px) of the control's fallback picture, if present. */
8104
8400
  x?: number;
8105
8401
  /** Y position (px) of the control's fallback picture, if present. */
@@ -8556,6 +8852,34 @@ interface PptxPhotoAlbum {
8556
8852
  layout?: string;
8557
8853
  /** Frame style applied to each photo (e.g. "frameStyle1"). */
8558
8854
  frame?: string;
8855
+ /**
8856
+ * `p:photoAlbum/@isPhoto` (ECMA-376 S19.2.1.27, CT_PhotoAlbum): whether
8857
+ * the pictures placed by the album wizard are real photographs, as
8858
+ * opposed to clip art or other embedded images. `undefined` when the
8859
+ * source authored no explicit value (schema default `false`); this is a
8860
+ * purely declarative wizard-provenance flag, not something this library
8861
+ * gates any layout/frame behaviour on.
8862
+ */
8863
+ isPhoto?: boolean;
8864
+ }
8865
+ /**
8866
+ * A recognizer-owned `p:smartTags` reference from `presentation.xml`
8867
+ * (CT_SmartTags, ECMA-376 S19.2.1.42): a bare relationship id pointing at a
8868
+ * legacy Office "Smart Tags" recognizer part, distinct from the
8869
+ * user-authored `p:tags` construct (see {@link PptxTagCollection}).
8870
+ *
8871
+ * This library has no data model for recognizer part CONTENT (there is no
8872
+ * way to create, inspect, or edit one through the public API), so this type
8873
+ * only captures enough to preserve an authored reference losslessly: the
8874
+ * relationship id and, when resolvable, the target part path.
8875
+ */
8876
+ interface PptxSmartTagsReference {
8877
+ /** Relationship id from `p:smartTags/@r:id`. */
8878
+ relId: string;
8879
+ /** Resolved ZIP path of the referenced recognizer part, when resolvable. */
8880
+ targetPath?: string;
8881
+ /** Raw `p:smartTags` XML retained for lossless round-trip. */
8882
+ rawXml?: XmlObject;
8559
8883
  }
8560
8884
  /**
8561
8885
  * East Asian line-break (kinsoku) settings from `p:kinsoku` in `presentation.xml`.
@@ -8620,6 +8944,13 @@ interface PptxData {
8620
8944
  themeOptions?: PptxThemeOption[];
8621
8945
  /** Parsed table style definitions from `ppt/tableStyles.xml`. */
8622
8946
  tableStyleMap?: ParsedTableStyleMap;
8947
+ /**
8948
+ * The current default table style GUID (`ppt/tableStyles.xml`'s
8949
+ * `a:tblStyleLst/@def`): the style PowerPoint applies to a newly inserted
8950
+ * table. Matches `PptxSaveOptions.tableStylesDefaultId` so a save call
8951
+ * that omits it can fall back to what was loaded.
8952
+ */
8953
+ tableStylesDefaultId?: string;
8623
8954
  /** Whether the presentation is password-protected. */
8624
8955
  isPasswordProtected?: boolean;
8625
8956
  /** Embedded font data (name + binary data URL) extracted from the presentation. */
@@ -8679,6 +9010,14 @@ interface PptxData {
8679
9010
  modifyVerifier?: PptxModifyVerifier;
8680
9011
  /** Photo album metadata from `p:photoAlbum` in `presentation.xml`. */
8681
9012
  photoAlbum?: PptxPhotoAlbum;
9013
+ /**
9014
+ * Legacy Smart Tags recognizer reference from `p:smartTags` in
9015
+ * `presentation.xml`. Read-only: there is no data model for the
9016
+ * recognizer part's own content, so this exists to make the reference
9017
+ * inspectable and to prove it survives a save (the owning part and its
9018
+ * relationship are preserved passively, like any other unmodelled part).
9019
+ */
9020
+ smartTags?: PptxSmartTagsReference;
8682
9021
  /** East Asian line-break settings from `p:kinsoku` in `presentation.xml`. */
8683
9022
  kinsoku?: PptxKinsoku;
8684
9023
  /** Custom XML data parts from `customXml/` in the OPC package. */
@@ -8843,6 +9182,14 @@ type FillInput = {
8843
9182
  type: 'solid';
8844
9183
  color: string;
8845
9184
  opacity?: number;
9185
+ /**
9186
+ * A theme colour to use instead of a plain hex. When set, the shape
9187
+ * saves as `<a:schemeClr>` (e.g. `{ scheme: 'accent1', lumMod: 0.8 }`
9188
+ * for "Accent 1, Lighter 80%") so it keeps following the theme after a
9189
+ * later theme change; `color` still supplies the immediate resolved
9190
+ * hex for renderers that read it directly.
9191
+ */
9192
+ themeColorRef?: PptxThemeColorRef;
8846
9193
  } | {
8847
9194
  type: 'gradient';
8848
9195
  /**
@@ -8878,6 +9225,8 @@ interface StrokeInput {
8878
9225
  opacity?: number;
8879
9226
  join?: 'round' | 'bevel' | 'miter';
8880
9227
  cap?: 'flat' | 'rnd' | 'sq';
9228
+ /** A theme colour for the outline; see {@link FillInput}'s `themeColorRef`. */
9229
+ themeColorRef?: PptxThemeColorRef;
8881
9230
  }
8882
9231
  interface ShadowInput {
8883
9232
  color?: string;
@@ -8894,6 +9243,8 @@ interface TextStyleInput {
8894
9243
  underline?: boolean;
8895
9244
  strikethrough?: boolean;
8896
9245
  color?: string;
9246
+ /** A theme colour for the run; see {@link FillInput}'s `themeColorRef`. */
9247
+ themeColorRef?: PptxThemeColorRef;
8897
9248
  alignment?: 'left' | 'center' | 'right' | 'justify';
8898
9249
  verticalAlignment?: 'top' | 'middle' | 'bottom';
8899
9250
  lineSpacing?: number;
@@ -9521,6 +9872,24 @@ interface PptxHandlerSaveOptions {
9521
9872
  * part untouched.
9522
9873
  */
9523
9874
  tableStyles?: ParsedTableStyleMap;
9875
+ /**
9876
+ * Set `ppt/tableStyles.xml`'s `<a:tblStyleLst @def>` to this style GUID
9877
+ * (normalised to uppercase-with-braces). `undefined` preserves the
9878
+ * existing default; there is no removal form (`@def` is required by the
9879
+ * schema and PowerPoint always points it at a real style). No-op when the
9880
+ * archive has no `ppt/tableStyles.xml`, same as {@link tableStyles}.
9881
+ */
9882
+ tableStylesDefaultId?: string;
9883
+ /**
9884
+ * Style GUIDs to remove from `ppt/tableStyles.xml` entirely, kept as a
9885
+ * separate opt-in list rather than inferred from omission on
9886
+ * {@link tableStyles}: that map is documented as safe to pass a PARTIAL
9887
+ * edit (only the entries a caller actually touched), so treating every
9888
+ * GUID missing from it as "delete this" would silently destroy untouched
9889
+ * styles on an ordinary targeted edit. A GUID here that is also the
9890
+ * current (or newly requested) default is left in place and skipped.
9891
+ */
9892
+ tableStylesToDelete?: string[];
9524
9893
  /**
9525
9894
  * Target output format.
9526
9895
  * - `'pptx'` (default): Standard presentation.