pptx-react-viewer 1.17.1 → 1.18.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 (120) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +1 -1
  3. package/dist/{Model3DScene-YA4F63DT.js → Model3DScene-GVWQ6SOM.js} +3 -3
  4. package/dist/Model3DScene-GVWQ6SOM.js.br +0 -0
  5. package/dist/Model3DScene-GVWQ6SOM.js.gz +0 -0
  6. package/dist/{Model3DScene-QHDYQXL2.mjs → Model3DScene-JGVLIDLD.mjs} +2 -2
  7. package/dist/Model3DScene-JGVLIDLD.mjs.br +0 -0
  8. package/dist/Model3DScene-JGVLIDLD.mjs.gz +0 -0
  9. package/dist/{SurfaceChart3DScene-GUAS2NWQ.mjs → SurfaceChart3DScene-DBWSDSKI.mjs} +2 -2
  10. package/dist/SurfaceChart3DScene-DBWSDSKI.mjs.br +0 -0
  11. package/dist/SurfaceChart3DScene-DBWSDSKI.mjs.gz +0 -0
  12. package/dist/{SurfaceChart3DScene-TGNJHTJQ.js → SurfaceChart3DScene-ZOTOHOIE.js} +3 -3
  13. package/dist/SurfaceChart3DScene-ZOTOHOIE.js.br +0 -0
  14. package/dist/SurfaceChart3DScene-ZOTOHOIE.js.gz +0 -0
  15. package/dist/{chunk-WH7YXV3I.js → chunk-73ST7AC6.js} +2153 -1572
  16. package/dist/chunk-73ST7AC6.js.br +0 -0
  17. package/dist/chunk-73ST7AC6.js.gz +0 -0
  18. package/dist/{chunk-IZXN663G.js → chunk-AALZCSY4.js} +7 -0
  19. package/dist/chunk-AALZCSY4.js.br +0 -0
  20. package/dist/chunk-AALZCSY4.js.gz +0 -0
  21. package/dist/{chunk-MGLRKGCH.js → chunk-EXDUEXTO.js} +26101 -15360
  22. package/dist/chunk-EXDUEXTO.js.br +0 -0
  23. package/dist/chunk-EXDUEXTO.js.gz +0 -0
  24. package/dist/{chunk-JWS3RQKN.js → chunk-HBXPK572.js} +584 -144
  25. package/dist/chunk-HBXPK572.js.br +0 -0
  26. package/dist/chunk-HBXPK572.js.gz +0 -0
  27. package/dist/{chunk-G22EWPLH.mjs → chunk-HHTZQHKZ.mjs} +532 -119
  28. package/dist/chunk-HHTZQHKZ.mjs.br +0 -0
  29. package/dist/chunk-HHTZQHKZ.mjs.gz +0 -0
  30. package/dist/{chunk-SXCO5HHN.js → chunk-JDRC3PSY.js} +655 -491
  31. package/dist/chunk-JDRC3PSY.js.br +0 -0
  32. package/dist/chunk-JDRC3PSY.js.gz +0 -0
  33. package/dist/{chunk-PCQH2UBR.mjs → chunk-KMLIWCNL.mjs} +1345 -764
  34. package/dist/chunk-KMLIWCNL.mjs.br +0 -0
  35. package/dist/chunk-KMLIWCNL.mjs.gz +0 -0
  36. package/dist/{chunk-5CD34U2V.mjs → chunk-RIRK64DM.mjs} +7 -0
  37. package/dist/chunk-RIRK64DM.mjs.br +0 -0
  38. package/dist/chunk-RIRK64DM.mjs.gz +0 -0
  39. package/dist/{chunk-XRYREYXC.mjs → chunk-SBNTEQUA.mjs} +26062 -15360
  40. package/dist/chunk-SBNTEQUA.mjs.br +0 -0
  41. package/dist/chunk-SBNTEQUA.mjs.gz +0 -0
  42. package/dist/{chunk-HN7CPQUG.mjs → chunk-Z4MDCPAY.mjs} +223 -59
  43. package/dist/chunk-Z4MDCPAY.mjs.br +0 -0
  44. package/dist/chunk-Z4MDCPAY.mjs.gz +0 -0
  45. package/dist/{dist-2ZAH7U6U.js → dist-KRRXYUGI.js} +663 -507
  46. package/dist/dist-KRRXYUGI.js.br +0 -0
  47. package/dist/dist-KRRXYUGI.js.gz +0 -0
  48. package/dist/dist-N6PAPXK6.mjs +2 -0
  49. package/dist/dist-N6PAPXK6.mjs.br +0 -0
  50. package/dist/dist-N6PAPXK6.mjs.gz +0 -0
  51. package/dist/hooks-unstable.d.ts +484 -117
  52. package/dist/hooks-unstable.d.ts.map +1 -1
  53. package/dist/hooks-unstable.js +75 -75
  54. package/dist/hooks-unstable.js.br +0 -0
  55. package/dist/hooks-unstable.js.gz +0 -0
  56. package/dist/hooks-unstable.mjs +4 -4
  57. package/dist/hooks-unstable.mjs.br +0 -0
  58. package/dist/hooks-unstable.mjs.gz +0 -0
  59. package/dist/i18n.js +3 -3
  60. package/dist/i18n.js.br +0 -0
  61. package/dist/i18n.js.gz +0 -0
  62. package/dist/i18n.mjs +1 -1
  63. package/dist/i18n.mjs.br +0 -0
  64. package/dist/i18n.mjs.gz +0 -0
  65. package/dist/{index-XGt7MZpa.d.ts → index-DmHVR48M.d.ts} +25 -3
  66. package/dist/index-DmHVR48M.d.ts.map +1 -0
  67. package/dist/index.d.ts +412 -117
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +19 -19
  70. package/dist/index.js.br +0 -0
  71. package/dist/index.js.gz +0 -0
  72. package/dist/index.mjs +5 -5
  73. package/dist/index.mjs.br +0 -0
  74. package/dist/index.mjs.gz +0 -0
  75. package/dist/pptx-viewer.css +1 -1
  76. package/dist/pptx-viewer.css.br +0 -0
  77. package/dist/pptx-viewer.css.gz +0 -0
  78. package/dist/viewer/index.d.ts +438 -121
  79. package/dist/viewer/index.d.ts.map +1 -1
  80. package/dist/viewer/index.js +24 -20
  81. package/dist/viewer/index.js.br +0 -0
  82. package/dist/viewer/index.js.gz +0 -0
  83. package/dist/viewer/index.mjs +5 -5
  84. package/dist/viewer/index.mjs.br +0 -0
  85. package/dist/viewer/index.mjs.gz +0 -0
  86. package/package.json +1 -1
  87. package/dist/Model3DScene-QHDYQXL2.mjs.br +0 -0
  88. package/dist/Model3DScene-QHDYQXL2.mjs.gz +0 -0
  89. package/dist/Model3DScene-YA4F63DT.js.br +0 -0
  90. package/dist/Model3DScene-YA4F63DT.js.gz +0 -0
  91. package/dist/SurfaceChart3DScene-GUAS2NWQ.mjs.br +0 -0
  92. package/dist/SurfaceChart3DScene-GUAS2NWQ.mjs.gz +0 -0
  93. package/dist/SurfaceChart3DScene-TGNJHTJQ.js.br +0 -0
  94. package/dist/SurfaceChart3DScene-TGNJHTJQ.js.gz +0 -0
  95. package/dist/chunk-5CD34U2V.mjs.br +0 -0
  96. package/dist/chunk-5CD34U2V.mjs.gz +0 -0
  97. package/dist/chunk-G22EWPLH.mjs.br +0 -0
  98. package/dist/chunk-G22EWPLH.mjs.gz +0 -0
  99. package/dist/chunk-HN7CPQUG.mjs.br +0 -0
  100. package/dist/chunk-HN7CPQUG.mjs.gz +0 -0
  101. package/dist/chunk-IZXN663G.js.br +0 -0
  102. package/dist/chunk-IZXN663G.js.gz +0 -0
  103. package/dist/chunk-JWS3RQKN.js.br +0 -0
  104. package/dist/chunk-JWS3RQKN.js.gz +0 -0
  105. package/dist/chunk-MGLRKGCH.js.br +0 -0
  106. package/dist/chunk-MGLRKGCH.js.gz +0 -0
  107. package/dist/chunk-PCQH2UBR.mjs.br +0 -0
  108. package/dist/chunk-PCQH2UBR.mjs.gz +0 -0
  109. package/dist/chunk-SXCO5HHN.js.br +0 -0
  110. package/dist/chunk-SXCO5HHN.js.gz +0 -0
  111. package/dist/chunk-WH7YXV3I.js.br +0 -0
  112. package/dist/chunk-WH7YXV3I.js.gz +0 -0
  113. package/dist/chunk-XRYREYXC.mjs.br +0 -0
  114. package/dist/chunk-XRYREYXC.mjs.gz +0 -0
  115. package/dist/dist-2ZAH7U6U.js.br +0 -0
  116. package/dist/dist-2ZAH7U6U.js.gz +0 -0
  117. package/dist/dist-MXDC6YTS.mjs +0 -2
  118. package/dist/dist-MXDC6YTS.mjs.br +0 -0
  119. package/dist/dist-MXDC6YTS.mjs.gz +0 -0
  120. package/dist/index-XGt7MZpa.d.ts.map +0 -1
package/dist/index.d.ts CHANGED
@@ -724,6 +724,10 @@ interface Text3DStyle {
724
724
  interface Pptx3DScene {
725
725
  /** Camera preset type, e.g. "orthographicFront", "perspectiveFront". */
726
726
  cameraPreset?: string;
727
+ /** Camera field of view in 1/60000 degrees (`a:camera/@fov`). */
728
+ cameraFieldOfView?: number;
729
+ /** Camera zoom as an OOXML percentage fraction (`a:camera/@zoom`, 1 = 100%). */
730
+ cameraZoom?: number;
727
731
  /** Camera rotation around X axis in 1/60000 degrees. */
728
732
  cameraRotX?: number;
729
733
  /** Camera rotation around Y axis in 1/60000 degrees. */
@@ -734,6 +738,12 @@ interface Pptx3DScene {
734
738
  lightRigType?: string;
735
739
  /** Light rig direction, e.g. "t", "b", "l", "r", "tl". */
736
740
  lightRigDirection?: string;
741
+ /** Light-rig rotation latitude in 1/60000 degrees. */
742
+ lightRigRotX?: number;
743
+ /** Light-rig rotation longitude in 1/60000 degrees. */
744
+ lightRigRotY?: number;
745
+ /** Light-rig rotation revolution in 1/60000 degrees. */
746
+ lightRigRotZ?: number;
737
747
  /** Whether a 3D backdrop plane is present (`a:backdrop`). */
738
748
  hasBackdrop?: boolean;
739
749
  /** Backdrop plane anchor X in EMU. */
@@ -742,6 +752,18 @@ interface Pptx3DScene {
742
752
  backdropAnchorY?: number;
743
753
  /** Backdrop plane anchor Z in EMU. */
744
754
  backdropAnchorZ?: number;
755
+ /** Backdrop normal vector X component. */
756
+ backdropNormalX?: number;
757
+ /** Backdrop normal vector Y component. */
758
+ backdropNormalY?: number;
759
+ /** Backdrop normal vector Z component. */
760
+ backdropNormalZ?: number;
761
+ /** Backdrop up vector X component. */
762
+ backdropUpX?: number;
763
+ /** Backdrop up vector Y component. */
764
+ backdropUpY?: number;
765
+ /** Backdrop up vector Z component. */
766
+ backdropUpZ?: number;
745
767
  }
746
768
  /**
747
769
  * 3D shape extrusion/bevel from `a:sp3d`.
@@ -861,9 +883,13 @@ interface ShapeStyle {
861
883
  */
862
884
  fillColorXml?: XmlObject;
863
885
  fillGradient?: string;
886
+ /** Original `gradFill` XML retained for unknown-child and extension round-tripping. */
887
+ fillGradientXml?: XmlObject;
864
888
  fillMode?: 'solid' | 'gradient' | 'pattern' | 'none' | 'image' | 'theme' | 'group';
865
889
  fillPatternPreset?: string;
866
890
  fillPatternBackgroundColor?: string;
891
+ /** Original `pattFill` XML retained for unknown-child round-tripping. */
892
+ fillPatternXml?: XmlObject;
867
893
  /** Raw XML node for pattern fill foreground colour (preserves color transforms). */
868
894
  fillPatternFgClrXml?: XmlObject;
869
895
  /** Raw XML node for pattern fill background colour (preserves color transforms). */
@@ -929,6 +955,14 @@ interface ShapeStyle {
929
955
  /** Pen line alignment (`a:ln/@algn`): `ctr` (centre, default) or `in` (inside). */
930
956
  lineAlignment?: 'ctr' | 'in';
931
957
  shadowColor?: string;
958
+ /** Preserved source `a:effectLst`, including unknown effects and extensions. */
959
+ effectListXml?: XmlObject;
960
+ /** Original outer-shadow node used for lossless surgical updates. */
961
+ outerShadowXml?: XmlObject;
962
+ /** Resolved source shadow colour used to detect colour edits. */
963
+ outerShadowOriginalColor?: string;
964
+ /** Source shadow opacity used to detect alpha edits. */
965
+ outerShadowOriginalOpacity?: number;
932
966
  shadowBlur?: number;
933
967
  shadowOffsetX?: number;
934
968
  shadowOffsetY?: number;
@@ -972,11 +1006,23 @@ interface ShapeStyle {
972
1006
  /** Multiple shadow layers (for advanced effects). */
973
1007
  shadows?: ShadowEffect[];
974
1008
  glowColor?: string;
1009
+ /** Original glow node used for lossless surgical updates. */
1010
+ glowXml?: XmlObject;
1011
+ /** Resolved source glow colour used to detect colour edits. */
1012
+ glowOriginalColor?: string;
1013
+ /** Source glow opacity used to detect alpha edits. */
1014
+ glowOriginalOpacity?: number;
975
1015
  glowRadius?: number;
976
1016
  glowOpacity?: number;
977
1017
  softEdgeRadius?: number;
978
1018
  /** Inner shadow colour (`a:innerShdw`). */
979
1019
  innerShadowColor?: string;
1020
+ /** Original inner-shadow node used for lossless surgical updates. */
1021
+ innerShadowXml?: XmlObject;
1022
+ /** Resolved source inner-shadow colour used to detect colour edits. */
1023
+ innerShadowOriginalColor?: string;
1024
+ /** Source inner-shadow opacity used to detect alpha edits. */
1025
+ innerShadowOriginalOpacity?: number;
980
1026
  /** Inner shadow opacity (0-1). */
981
1027
  innerShadowOpacity?: number;
982
1028
  /** Inner shadow blur radius in px. */
@@ -985,8 +1031,12 @@ interface ShapeStyle {
985
1031
  innerShadowOffsetX?: number;
986
1032
  /** Inner shadow vertical offset in px. */
987
1033
  innerShadowOffsetY?: number;
1034
+ /** Original soft-edge node, including vendor attributes and extensions. */
1035
+ softEdgeXml?: XmlObject;
988
1036
  /** Reflection effect — distance from shape bottom in px. */
989
1037
  reflectionBlurRadius?: number;
1038
+ /** Original reflection node, including vendor attributes and extensions. */
1039
+ reflectionXml?: XmlObject;
990
1040
  /** Reflection start opacity (0-1). */
991
1041
  reflectionStartOpacity?: number;
992
1042
  /** Reflection end opacity (0-1). */
@@ -1482,6 +1532,8 @@ interface TextStyle {
1482
1532
  text3d?: Text3DStyle;
1483
1533
  /** 3D scene (camera + light rig) settings on the text body (`a:bodyPr/a:scene3d`). */
1484
1534
  textBodyScene3d?: Pptx3DScene;
1535
+ /** Raw `a:scene3d` subtree used to preserve extensions and unmodelled children. */
1536
+ textBodyScene3dXml?: XmlObject;
1485
1537
  /**
1486
1538
  * Raw `<a:extLst>` subtree captured from `<a:bodyPr>`. Preserved verbatim so
1487
1539
  * authored extensions (e.g. content placeholders, custom application data)
@@ -1817,12 +1869,32 @@ interface PptxShapeProperties {
1817
1869
  adjustmentHandles?: GeometryAdjustmentHandle[];
1818
1870
  }
1819
1871
 
1872
+ /** Tick-mark placement from ChartML `ST_TickMark`. */
1873
+ type PptxChartTickMark = 'cross' | 'in' | 'none' | 'out';
1874
+ /** Typed axis tick and category/date label controls. */
1875
+ interface PptxChartAxisLabelFormatting {
1876
+ /** Primary and secondary tick-mark placement. */
1877
+ majorTickMark?: PptxChartTickMark;
1878
+ minorTickMark?: PptxChartTickMark;
1879
+ /** Tick-label position from ChartML `ST_TickLblPos`. */
1880
+ tickLblPos?: 'high' | 'low' | 'nextTo' | 'none';
1881
+ /** Automatic category/date axis behavior (`c:auto`). */
1882
+ auto?: boolean;
1883
+ /** Category-axis label alignment (`c:lblAlgn`). */
1884
+ labelAlignment?: 'ctr' | 'l' | 'r';
1885
+ /** Category/date label distance, from 0 through 1000 percent. */
1886
+ labelOffset?: number;
1887
+ /** Suppress multi-level category labels (`c:noMultiLvlLbl`). */
1888
+ noMultiLevelLabels?: boolean;
1889
+ }
1890
+
1820
1891
  /**
1821
1892
  * Chart types: chart categories, series data, style metadata, data tables,
1822
1893
  * trendlines, error bars, and the composite `PptxChartData`.
1823
1894
  *
1824
1895
  * @module pptx-types/chart
1825
1896
  */
1897
+
1826
1898
  /**
1827
1899
  * Supported chart type discriminators.
1828
1900
  *
@@ -1859,6 +1931,7 @@ type PptxChartTrendlineType = 'linear' | 'exponential' | 'logarithmic' | 'polyno
1859
1931
  */
1860
1932
  interface PptxChartTrendline {
1861
1933
  trendlineType: PptxChartTrendlineType;
1934
+ name?: string;
1862
1935
  order?: number;
1863
1936
  period?: number;
1864
1937
  forward?: number;
@@ -1867,6 +1940,13 @@ interface PptxChartTrendline {
1867
1940
  displayRSq?: boolean;
1868
1941
  displayEq?: boolean;
1869
1942
  color?: string;
1943
+ label?: PptxChartTrendlineLabel | null;
1944
+ }
1945
+ /** Typed, commonly edited properties of `c:trendlineLbl`. */
1946
+ interface PptxChartTrendlineLabel {
1947
+ layout?: PptxChartManualLayout;
1948
+ numberFormatCode?: string;
1949
+ sourceLinked?: boolean;
1870
1950
  }
1871
1951
  /** Error-bar direction axis. */
1872
1952
  type PptxChartErrBarDir = 'x' | 'y';
@@ -1903,6 +1983,8 @@ interface PptxChartErrBars {
1903
1983
  val?: number;
1904
1984
  customPlus?: number[];
1905
1985
  customMinus?: number[];
1986
+ noEndCap?: boolean;
1987
+ color?: string;
1906
1988
  }
1907
1989
  /**
1908
1990
  * Visibility flags for the chart data table (axes + legend keys).
@@ -1952,6 +2034,13 @@ interface PptxChartShapeProps {
1952
2034
  /** Line dash style (a:prstDash/@val), e.g. 'solid', 'dash', 'dot', 'lgDash'. */
1953
2035
  strokeDashStyle?: string;
1954
2036
  }
2037
+ /** Up/down bar formatting on line and stock charts (`c:upDownBars`). */
2038
+ interface PptxChartUpDownBars {
2039
+ /** Gap between bars as a percentage, constrained to 0 through 500. */
2040
+ gapWidth?: number;
2041
+ upBars?: PptxChartShapeProps;
2042
+ downBars?: PptxChartShapeProps;
2043
+ }
1955
2044
  /** Marker appearance on a chart series or data point. */
1956
2045
  interface PptxChartMarker {
1957
2046
  symbol: PptxChartMarkerSymbol;
@@ -1966,25 +2055,40 @@ interface PptxChartDataPoint {
1966
2055
  invertIfNegative?: boolean;
1967
2056
  marker?: PptxChartMarker;
1968
2057
  }
2058
+ /** Schema values accepted by `c:dLblPos`. */
2059
+ type PptxChartDataLabelPosition = 'bestFit' | 'b' | 'ctr' | 'inBase' | 'inEnd' | 'l' | 'outEnd' | 'r' | 't';
1969
2060
  /** Individual data label override (c:dLbl). */
1970
2061
  interface PptxChartDataLabel {
1971
2062
  idx: number;
2063
+ /** Suppress this data point's automatically generated label. */
2064
+ deleted?: boolean;
1972
2065
  showVal?: boolean;
1973
2066
  showCatName?: boolean;
1974
2067
  showSerName?: boolean;
1975
2068
  showPercent?: boolean;
1976
2069
  showLegendKey?: boolean;
1977
2070
  showBubbleSize?: boolean;
1978
- position?: string;
2071
+ position?: PptxChartDataLabelPosition;
1979
2072
  text?: string;
2073
+ separator?: string;
2074
+ showLeaderLines?: boolean;
1980
2075
  }
1981
2076
  /** Axis number format. */
1982
2077
  interface PptxChartAxisNumFmt {
1983
2078
  formatCode: string;
1984
2079
  sourceLinked?: boolean;
1985
2080
  }
2081
+ /** Typed contents of a value-axis display-unit label (`c:dispUnitsLbl`). */
2082
+ interface PptxChartDisplayUnitsLabel {
2083
+ /** Literal label text. Omit to preserve the source text subtree. */
2084
+ text?: string;
2085
+ /** Manual label placement. `null` removes only the manual layout. */
2086
+ layout?: PptxChartManualLayout | null;
2087
+ /** Label shape formatting. `null` removes `c:spPr`. */
2088
+ spPr?: PptxChartShapeProps | null;
2089
+ }
1986
2090
  /** Axis formatting for category, value, or date axes. */
1987
- interface PptxChartAxisFormatting {
2091
+ interface PptxChartAxisFormatting extends PptxChartAxisLabelFormatting {
1988
2092
  axisType: 'catAx' | 'valAx' | 'dateAx' | 'serAx';
1989
2093
  /** Axis position: "b" (bottom), "l" (left), "r" (right), "t" (top). */
1990
2094
  axPos?: 'b' | 'l' | 'r' | 't';
@@ -2018,8 +2122,12 @@ interface PptxChartAxisFormatting {
2018
2122
  displayUnits?: 'hundreds' | 'thousands' | 'tenThousands' | 'hundredThousands' | 'millions' | 'tenMillions' | 'hundredMillions' | 'billions' | 'trillions' | 'custom';
2019
2123
  /** Custom display unit divisor value (c:dispUnits/c:custUnit/@val). Only used when displayUnits is 'custom'. */
2020
2124
  displayUnitsValue?: number;
2021
- /** Display units label text (c:dispUnits/c:dispUnitsLbl). Overrides the built-in default label when present. */
2022
- displayUnitsLabel?: string;
2125
+ /**
2126
+ * Display-unit label contents (`c:dispUnits/c:dispUnitsLbl`). A string is
2127
+ * retained as a compatibility shorthand for `{ text: string }`; `null`
2128
+ * explicitly removes the label.
2129
+ */
2130
+ displayUnitsLabel?: string | PptxChartDisplayUnitsLabel | null;
2023
2131
  /** Whether logarithmic scaling is enabled (presence of c:scaling/c:logBase). */
2024
2132
  logScale?: boolean;
2025
2133
  /** Logarithmic base value (c:scaling/c:logBase/@val), typically 10 or e. */
@@ -2028,8 +2136,6 @@ interface PptxChartAxisFormatting {
2028
2136
  majorUnit?: number;
2029
2137
  /** Minor-unit interval between secondary tick marks (c:minorUnit/@val). */
2030
2138
  minorUnit?: number;
2031
- /** Tick-label position (c:tickLblPos/@val): 'high', 'low', 'nextTo', or 'none'. */
2032
- tickLblPos?: 'high' | 'low' | 'nextTo' | 'none';
2033
2139
  }
2034
2140
  /** 3D wall or floor element formatting. */
2035
2141
  interface PptxChart3DSurface {
@@ -2088,12 +2194,32 @@ interface PptxChartDataLabelOptions {
2088
2194
  showPercent?: boolean;
2089
2195
  /** Show the legend key swatch (`c:showLegendKey`). */
2090
2196
  showLegendKey?: boolean;
2197
+ /** Show bubble size (`c:showBubbleSize`). */
2198
+ showBubbleSize?: boolean;
2199
+ /** Text placed between combined label components (`c:separator`). */
2200
+ separator?: string;
2201
+ /** Show leader lines where supported (`c:showLeaderLines`). */
2202
+ showLeaderLines?: boolean;
2091
2203
  /**
2092
2204
  * Label position (`c:dLblPos`). Valid values depend on the chart type
2093
2205
  * (`ctr`, `inEnd`, `inBase`, `outEnd`, `bestFit`, `l`, `r`, `t`, `b`).
2094
2206
  * Omit to let PowerPoint use the type default.
2095
2207
  */
2096
- position?: 'ctr' | 'inEnd' | 'inBase' | 'outEnd' | 'bestFit' | 'l' | 'r' | 't' | 'b';
2208
+ position?: PptxChartDataLabelPosition;
2209
+ }
2210
+ /** Typed text defaults for a single chart legend entry. */
2211
+ interface PptxChartLegendTextStyle {
2212
+ fontFamily?: string;
2213
+ fontSize?: number;
2214
+ bold?: boolean;
2215
+ italic?: boolean;
2216
+ color?: string;
2217
+ }
2218
+ /** Per-series legend entry override (`c:legendEntry`). */
2219
+ interface PptxChartLegendEntry {
2220
+ index: number;
2221
+ deleted?: boolean;
2222
+ textStyle?: PptxChartLegendTextStyle;
2097
2223
  }
2098
2224
  /**
2099
2225
  * Style / formatting metadata for a chart.
@@ -2116,6 +2242,8 @@ interface PptxChartStyle {
2116
2242
  hasLegend?: boolean;
2117
2243
  /** Legend position (t, b, l, r, tr). */
2118
2244
  legendPosition?: string;
2245
+ /** Per-series visibility and text-style overrides. */
2246
+ legendEntries?: PptxChartLegendEntry[];
2119
2247
  /** Whether the chart has a title. */
2120
2248
  hasTitle?: boolean;
2121
2249
  /** Whether gridlines are visible. */
@@ -2176,6 +2304,14 @@ interface PptxChartOfPieOptions {
2176
2304
  serLines?: boolean;
2177
2305
  gapWidth?: number;
2178
2306
  }
2307
+ /** Classic `c:bubbleChart` options from CT_BubbleChart. */
2308
+ interface PptxBubbleChartOptions {
2309
+ bubble3D?: boolean;
2310
+ /** Bubble diameter scale in percent, constrained to 0 through 300. */
2311
+ bubbleScale?: number;
2312
+ showNegativeBubbles?: boolean;
2313
+ sizeRepresents?: 'area' | 'w';
2314
+ }
2179
2315
  /**
2180
2316
  * 3D viewing parameters for a chart (`c:view3D`, ECMA-376 §21.2.2.228 /
2181
2317
  * CT_View3D).
@@ -2216,6 +2352,27 @@ interface PptxChartChrome {
2216
2352
  dispBlanksAs?: 'gap' | 'zero' | 'span';
2217
2353
  showDLblsOverMax?: boolean;
2218
2354
  }
2355
+ /** Manual chart placement from `c:layout/c:manualLayout` (CT_ManualLayout). */
2356
+ interface PptxChartManualLayout {
2357
+ layoutTarget?: 'inner' | 'outer';
2358
+ xMode?: 'edge' | 'factor';
2359
+ yMode?: 'edge' | 'factor';
2360
+ widthMode?: 'edge' | 'factor';
2361
+ heightMode?: 'edge' | 'factor';
2362
+ x?: number;
2363
+ y?: number;
2364
+ width?: number;
2365
+ height?: number;
2366
+ }
2367
+ /**
2368
+ * Typed manual layouts for chart regions that accept `c:layout`.
2369
+ * A `null` region removes its manual layout without removing extensions.
2370
+ */
2371
+ interface PptxChartLayouts {
2372
+ title?: PptxChartManualLayout | null;
2373
+ plotArea?: PptxChartManualLayout | null;
2374
+ legend?: PptxChartManualLayout | null;
2375
+ }
2219
2376
  /** Parsed data extracted from an embedded xlsx workbook. */
2220
2377
  interface PptxEmbeddedWorkbookData {
2221
2378
  /** Category labels from the first column/row. */
@@ -2257,9 +2414,12 @@ interface PptxChartData {
2257
2414
  chartPartPath?: string;
2258
2415
  /** Internal: relationship ID linking the graphic frame to the chart part. */
2259
2416
  chartRelationshipId?: string;
2260
- dataTable?: PptxChartDataTable;
2417
+ /** `null` explicitly removes an existing ChartML data table. */
2418
+ dataTable?: PptxChartDataTable | null;
2261
2419
  dropLines?: PptxChartLineStyle;
2262
2420
  hiLowLines?: PptxChartLineStyle;
2421
+ /** `null` explicitly removes an existing up/down-bars container. */
2422
+ upDownBars?: PptxChartUpDownBars | null;
2263
2423
  axes?: PptxChartAxisFormatting[];
2264
2424
  floor?: PptxChart3DSurface;
2265
2425
  sideWall?: PptxChart3DSurface;
@@ -2317,6 +2477,8 @@ interface PptxChartData {
2317
2477
  * `ofPieChart` element can be re-emitted on save with full fidelity.
2318
2478
  */
2319
2479
  ofPieOptions?: PptxChartOfPieOptions;
2480
+ /** Classic bubble-chart display options (`c:bubbleChart`). */
2481
+ bubbleOptions?: PptxBubbleChartOptions;
2320
2482
  /**
2321
2483
  * 3D viewing parameters (`c:view3D`, CT_View3D).
2322
2484
  *
@@ -2332,6 +2494,8 @@ interface PptxChartData {
2332
2494
  * source data, so absence does not produce empty `<c:…/>` placeholders.
2333
2495
  */
2334
2496
  chartChrome?: PptxChartChrome;
2497
+ /** Editable manual placement for the title, plot area, and legend. */
2498
+ layouts?: PptxChartLayouts;
2335
2499
  /**
2336
2500
  * Raw `c:userShapes` XML subtree (a drawing tree) preserved verbatim.
2337
2501
  *
@@ -2357,107 +2521,55 @@ interface PptxChartData {
2357
2521
  clrMapOvr?: Record<string, string>;
2358
2522
  }
2359
2523
 
2360
- /**
2361
- * Image types: effects, crop shapes, and properties shared by image/picture
2362
- * elements.
2363
- *
2364
- * @module pptx-types/image
2365
- */
2366
- /**
2367
- * Blend mode for `a:blend` container nodes inside an `a:effectDag` (CT_BlendEffect).
2368
- *
2369
- * Per ECMA-376 §20.1.8.10, valid values are: `darken`, `lighten`, `mult`,
2370
- * `over`, `screen`.
2371
- */
2372
2524
  type EffectDagBlendMode = 'darken' | 'lighten' | 'mult' | 'over' | 'screen';
2373
- /**
2374
- * Container node kind inside an `a:effectDag` (CT_EffectContainer @type).
2375
- *
2376
- * Per ECMA-376 §20.1.8.20, `sib` (sibling) draws each child independently
2377
- * over the same source; `tree` (tree) chains effects so each sees the output
2378
- * of its siblings.
2379
- */
2380
2525
  type EffectDagContainerType = 'sib' | 'tree';
2381
- /**
2382
- * Typed model of the directed-acyclic effect graph stored in `a:effectDag`.
2383
- *
2384
- * The four "structural" container/transform nodes are typed; any other inner
2385
- * effect (e.g. `a:outerShdw`, `a:glow`, `a:alphaInv`) is preserved verbatim
2386
- * as a raw XML object via the {@link EffectDagRawLeaf} variant so we never
2387
- * have to recurse into the full effect taxonomy.
2388
- *
2389
- * @example
2390
- * ```ts
2391
- * // <a:effectDag>
2392
- * // <a:cont type="sib">
2393
- * // <a:blend blend="mult"><a:cont type="tree" /></a:blend>
2394
- * // </a:cont>
2395
- * // </a:effectDag>
2396
- * const dag: EffectDagContainer = {
2397
- * kind: "cont",
2398
- * type: "sib",
2399
- * children: [{
2400
- * kind: "blend",
2401
- * mode: "mult",
2402
- * container: { kind: "cont", type: "tree", children: [] },
2403
- * }],
2404
- * };
2405
- * ```
2406
- */
2407
- type EffectDagNode = EffectDagContainer | EffectDagBlend | EffectDagXfrm | EffectDagRelOff | EffectDagRawLeaf;
2408
- /** `a:cont` — CT_EffectContainer. Recursive; mirrors the top-level `effectDag`. */
2526
+ type EffectDagNode = EffectDagContainer | EffectDagBlend | EffectDagXfrm | EffectDagRelOff | EffectDagBlur | EffectDagPresetShadow | EffectDagRawLeaf;
2409
2527
  interface EffectDagContainer {
2410
2528
  kind: 'cont';
2411
- /** `@type` — `sib` or `tree`. */
2412
2529
  type: EffectDagContainerType;
2413
- /** Optional `@name` attribute. */
2414
2530
  name?: string;
2415
- /** Ordered children. */
2416
2531
  children: EffectDagNode[];
2417
2532
  }
2418
- /** `a:blend` — CT_BlendEffect. Always wraps a single `a:cont` child. */
2419
2533
  interface EffectDagBlend {
2420
2534
  kind: 'blend';
2421
- /** `@blend` attribute. */
2422
2535
  mode: EffectDagBlendMode;
2423
- /** Required child `a:cont` container. */
2424
2536
  container: EffectDagContainer;
2425
2537
  }
2426
- /** `a:xfrmEffect` — CT_TransformEffect. Affine transform with no children. */
2427
2538
  interface EffectDagXfrm {
2428
2539
  kind: 'xfrmEffect';
2429
- /** Horizontal scale, percentage * 1000 (e.g. 100000 = 100%). */
2430
2540
  sx?: number;
2431
- /** Vertical scale, percentage * 1000. */
2432
2541
  sy?: number;
2433
- /** Horizontal skew, degrees * 60000. */
2434
2542
  kx?: number;
2435
- /** Vertical skew, degrees * 60000. */
2436
2543
  ky?: number;
2437
- /** Horizontal translation in EMU. */
2438
2544
  tx?: number;
2439
- /** Vertical translation in EMU. */
2440
2545
  ty?: number;
2441
2546
  }
2442
- /** `a:relOff` — CT_RelativeOffsetEffect. Relative offset in 1000ths of a percent. */
2443
2547
  interface EffectDagRelOff {
2444
2548
  kind: 'relOff';
2445
- /** Horizontal offset, percentage * 1000. */
2446
2549
  tx?: number;
2447
- /** Vertical offset, percentage * 1000. */
2448
2550
  ty?: number;
2449
2551
  }
2450
- /**
2451
- * Catch-all leaf preserving any non-container effect (e.g. `a:outerShdw`,
2452
- * `a:glow`, `a:alphaInv`) as raw XML. Re-emitted verbatim on save.
2453
- */
2552
+ /** Typed CT_BlurEffect with its original payload retained for lossless edits. */
2553
+ interface EffectDagBlur {
2554
+ kind: 'blur';
2555
+ radiusEmu?: number;
2556
+ grow?: boolean;
2557
+ xml: XmlObject;
2558
+ }
2559
+ /** Typed CT_PresetShadowEffect with colour and extension XML retained verbatim. */
2560
+ interface EffectDagPresetShadow {
2561
+ kind: 'prstShdw';
2562
+ preset?: `shdw${number}`;
2563
+ distanceEmu?: number;
2564
+ direction?: number;
2565
+ xml: XmlObject;
2566
+ }
2454
2567
  interface EffectDagRawLeaf {
2455
2568
  kind: 'raw';
2456
- /** Local element name without the `a:` prefix (e.g. `outerShdw`, `glow`). */
2457
2569
  tag: string;
2458
- /** Raw XML object captured at load — preserved verbatim on save. */
2459
2570
  xml: Record<string, unknown>;
2460
2571
  }
2572
+
2461
2573
  /**
2462
2574
  * Image recolour/adjustment properties parsed from blip extensions.
2463
2575
  *
@@ -2684,6 +2796,11 @@ declare module "./index" {
2684
2796
  * ```
2685
2797
  */
2686
2798
  type PptxMediaType = 'video' | 'audio' | 'unknown';
2799
+ type PptxMediaReferenceKind = 'audioCd' | 'wavAudioFile' | 'audioFile' | 'videoFile' | 'quickTimeFile';
2800
+ interface PptxAudioCdPosition {
2801
+ track: number;
2802
+ time?: number;
2803
+ }
2687
2804
  /**
2688
2805
  * A named bookmark within a media clip timeline.
2689
2806
  *
@@ -2760,6 +2877,34 @@ interface MediaCaptionTrack {
2760
2877
  isDefault?: boolean;
2761
2878
  }
2762
2879
 
2880
+ /** Typed, editable metadata from a DiagramML layout-definition part. */
2881
+ interface PptxSmartArtLocalizedText {
2882
+ value: string;
2883
+ language?: string;
2884
+ }
2885
+ interface PptxSmartArtLayoutCategory {
2886
+ type: string;
2887
+ priority: number;
2888
+ }
2889
+ /** Identity and ordering metadata from DiagramML CT_LayoutNode. */
2890
+ interface PptxSmartArtLayoutNode {
2891
+ name?: string;
2892
+ styleLabel?: string;
2893
+ childOrder?: 'b' | 't';
2894
+ moveWith?: string;
2895
+ children?: PptxSmartArtLayoutNode[];
2896
+ }
2897
+ /** Metadata and root node from DiagramML CT_DiagramDefinition. */
2898
+ interface PptxSmartArtLayoutDefinition {
2899
+ uniqueId?: string;
2900
+ minimumVersion?: string;
2901
+ defaultStyle?: string;
2902
+ titles?: PptxSmartArtLocalizedText[];
2903
+ descriptions?: PptxSmartArtLocalizedText[];
2904
+ categories?: PptxSmartArtLayoutCategory[];
2905
+ rootNode: PptxSmartArtLayoutNode;
2906
+ }
2907
+
2763
2908
  /**
2764
2909
  * SmartArt node types: per-run text, per-node visual override, and the
2765
2910
  * data-model node itself. Split out of `smart-art.ts` to keep each type file
@@ -2847,6 +2992,8 @@ interface PptxSmartArtNodeStyle {
2847
2992
  interface PptxSmartArtNode {
2848
2993
  id: string;
2849
2994
  text: string;
2995
+ /** CT_Pt connection identifier, when the point references a connection. */
2996
+ connectionId?: string | null;
2850
2997
  parentId?: string;
2851
2998
  children?: PptxSmartArtNode[];
2852
2999
  /** Node type from `@_type` attribute (e.g. "doc", "node", "asst", "pres"). */
@@ -2868,6 +3015,64 @@ interface PptxSmartArtNode {
2868
3015
  style?: PptxSmartArtNodeStyle;
2869
3016
  }
2870
3017
 
3018
+ /** Editable metadata shared by DiagramML quick-style and color definitions. */
3019
+ interface PptxSmartArtDefinitionText {
3020
+ value: string;
3021
+ language?: string;
3022
+ }
3023
+ interface PptxSmartArtDefinitionCategory {
3024
+ type: string;
3025
+ priority: number;
3026
+ }
3027
+ type PptxSmartArtColorApplicationMethod = 'span' | 'cycle' | 'repeat';
3028
+ type PptxSmartArtHueDirection = 'cw' | 'ccw';
3029
+ /** CT_Colors application metadata. Color-choice children remain preserved XML. */
3030
+ interface PptxSmartArtColorListMetadata {
3031
+ method?: PptxSmartArtColorApplicationMethod;
3032
+ hueDirection?: PptxSmartArtHueDirection;
3033
+ }
3034
+ /** CT_StyleLabel metadata from a quick-style definition. */
3035
+ interface PptxSmartArtQuickStyleLabel {
3036
+ name: string;
3037
+ }
3038
+ /** CT_CTStyleLabel metadata from a color-transform definition. */
3039
+ interface PptxSmartArtColorStyleLabel {
3040
+ name: string;
3041
+ fill?: PptxSmartArtColorListMetadata;
3042
+ line?: PptxSmartArtColorListMetadata;
3043
+ effect?: PptxSmartArtColorListMetadata;
3044
+ textLine?: PptxSmartArtColorListMetadata;
3045
+ textFill?: PptxSmartArtColorListMetadata;
3046
+ textEffect?: PptxSmartArtColorListMetadata;
3047
+ }
3048
+ interface PptxSmartArtDefinitionMetadata {
3049
+ uniqueId?: string;
3050
+ minimumVersion?: string;
3051
+ titles?: PptxSmartArtDefinitionText[];
3052
+ descriptions?: PptxSmartArtDefinitionText[];
3053
+ categories?: PptxSmartArtDefinitionCategory[];
3054
+ }
3055
+ /** Typed CT_ColorTransform metadata and the resolved legacy color palette. */
3056
+ interface PptxSmartArtColorTransform extends PptxSmartArtDefinitionMetadata {
3057
+ /** Legacy resolved display name. */
3058
+ name?: string;
3059
+ /** Ordered resolved fill colors for rendering. */
3060
+ fillColors: string[];
3061
+ /** Ordered resolved line colors for rendering. */
3062
+ lineColors: string[];
3063
+ /** Ordered CT_CTStyleLabel metadata. */
3064
+ labels?: PptxSmartArtColorStyleLabel[];
3065
+ }
3066
+ /** Typed CT_StyleDefinition metadata and legacy rendering hint. */
3067
+ interface PptxSmartArtQuickStyle extends PptxSmartArtDefinitionMetadata {
3068
+ /** Legacy resolved display name. */
3069
+ name?: string;
3070
+ /** Legacy effect-intensity rendering hint. */
3071
+ effectIntensity?: string;
3072
+ /** Ordered CT_StyleLabel metadata. Complex style payload remains preserved XML. */
3073
+ labels?: PptxSmartArtQuickStyleLabel[];
3074
+ }
3075
+
2871
3076
  /**
2872
3077
  * SmartArt types: layout categories, layout presets, colour schemes,
2873
3078
  * data-model nodes/connections, drawing shapes, chrome, and the composite
@@ -2930,6 +3135,8 @@ type SmartArtStyle = 'flat' | 'moderate' | 'intense';
2930
3135
  * ```
2931
3136
  */
2932
3137
  interface PptxSmartArtConnection {
3138
+ /** Stable CT_Cxn model identifier. Required when serialized. */
3139
+ modelId?: string | null;
2933
3140
  /** Model ID of the source node. */
2934
3141
  sourceId: string;
2935
3142
  /** Model ID of the destination node. */
@@ -2940,6 +3147,12 @@ interface PptxSmartArtConnection {
2940
3147
  srcOrd?: number;
2941
3148
  /** Destination index for ordering. */
2942
3149
  destOrd?: number;
3150
+ /** Model ID of the parent transition point associated with this edge. */
3151
+ parentTransitionId?: string | null;
3152
+ /** Model ID of the sibling transition point associated with this edge. */
3153
+ siblingTransitionId?: string | null;
3154
+ /** Layout presentation identifier used by presentation connections. */
3155
+ presentationId?: string | null;
2943
3156
  }
2944
3157
  /**
2945
3158
  * A pre-computed shape from `ppt/diagrams/drawing*.xml`.
@@ -3006,45 +3219,6 @@ interface PptxSmartArtChrome {
3006
3219
  /** Outline stroke width in points. */
3007
3220
  outlineWidth?: number;
3008
3221
  }
3009
- /**
3010
- * Colour transform entry from `ppt/diagrams/colors*.xml`.
3011
- *
3012
- * @example
3013
- * ```ts
3014
- * const transform: PptxSmartArtColorTransform = {
3015
- * name: "Colorful - Accent Colors",
3016
- * fillColors: ["#4F81BD", "#C0504D", "#9BBB59"],
3017
- * lineColors: ["#385D8A", "#8C3836", "#71893F"],
3018
- * };
3019
- * // => satisfies PptxSmartArtColorTransform
3020
- * ```
3021
- */
3022
- interface PptxSmartArtColorTransform {
3023
- /** Colour scheme name / title. */
3024
- name?: string;
3025
- /** Ordered list of fill colours (hex) for each node. */
3026
- fillColors: string[];
3027
- /** Ordered list of line colours (hex). */
3028
- lineColors: string[];
3029
- }
3030
- /**
3031
- * Style entry from `ppt/diagrams/quickStyles*.xml`.
3032
- *
3033
- * @example
3034
- * ```ts
3035
- * const qs: PptxSmartArtQuickStyle = {
3036
- * name: "Moderate Effect",
3037
- * effectIntensity: "moderate",
3038
- * };
3039
- * // => satisfies PptxSmartArtQuickStyle
3040
- * ```
3041
- */
3042
- interface PptxSmartArtQuickStyle {
3043
- /** Style name / title. */
3044
- name?: string;
3045
- /** Effect intensity identifier (e.g. "subtle", "moderate", "intense"). */
3046
- effectIntensity?: string;
3047
- }
3048
3222
  /**
3049
3223
  * Complete parsed SmartArt data for a {@link SmartArtPptxElement}.
3050
3224
  *
@@ -3084,14 +3258,28 @@ interface PptxSmartArtData {
3084
3258
  colorTransform?: PptxSmartArtColorTransform;
3085
3259
  /** Quick style from `ppt/diagrams/quickStyles*.xml`. */
3086
3260
  quickStyle?: PptxSmartArtQuickStyle;
3261
+ /** Editable metadata from the related DiagramML layout definition. */
3262
+ layoutDefinition?: PptxSmartArtLayoutDefinition;
3087
3263
  /** Relationship ID for the diagram data part (for round-trip save). */
3088
3264
  dataRelId?: string;
3265
+ /** Relationship ID for the diagram layout part. */
3266
+ layoutRelId?: string;
3089
3267
  /** Relationship ID for the drawing part. */
3090
3268
  drawingRelId?: string;
3091
3269
  /** Relationship ID for the colours part. */
3092
3270
  colorsRelId?: string;
3093
3271
  /** Relationship ID for the quick-styles part. */
3094
3272
  styleRelId?: string;
3273
+ /** Internal save hint: the layout definition changed in the editor. */
3274
+ layoutDirty?: boolean;
3275
+ /** Internal save hint: typed layout-definition metadata changed. */
3276
+ layoutDefinitionDirty?: boolean;
3277
+ /** Internal save hint: quick-style definition metadata changed. */
3278
+ quickStyleDirty?: boolean;
3279
+ /** Internal save hint: color-transform definition metadata changed. */
3280
+ colorTransformDirty?: boolean;
3281
+ /** Internal save hint: cached drawing geometry or text changed in the editor. */
3282
+ drawingDirty?: boolean;
3095
3283
  }
3096
3284
 
3097
3285
  /**
@@ -3580,6 +3768,11 @@ interface MediaPptxElement extends PptxElementBase {
3580
3768
  mediaPath?: string;
3581
3769
  mediaData?: string;
3582
3770
  mediaMimeType?: string;
3771
+ mediaReferenceKind?: PptxMediaReferenceKind;
3772
+ mediaReferenceName?: string;
3773
+ audioCdStart?: PptxAudioCdPosition;
3774
+ audioCdEnd?: PptxAudioCdPosition;
3775
+ rawMediaReferenceXml?: XmlObject;
3583
3776
  /** Trim start in milliseconds (from p:cMediaNode p:cTn @st). */
3584
3777
  trimStartMs?: number;
3585
3778
  /** Trim end in milliseconds (from p:cMediaNode p:cTn @end). */
@@ -3809,6 +4002,44 @@ type PptxAnimationTrigger = 'onClick' | 'onShapeClick' | 'onHover' | 'afterPrevi
3809
4002
  * is preserved alongside other animations.
3810
4003
  */
3811
4004
  type PptxNativeAnimationKind = 'media';
4005
+ /** A target selected by `p:tgtEl` in the PresentationML timing model. */
4006
+ type PptxAnimationTarget = {
4007
+ type: 'shape';
4008
+ shapeId: string;
4009
+ rawXml?: XmlObject;
4010
+ } | {
4011
+ type: 'slide';
4012
+ rawXml?: XmlObject;
4013
+ } | {
4014
+ type: 'sound';
4015
+ relationshipId: string;
4016
+ name?: string;
4017
+ rawXml?: XmlObject;
4018
+ } | {
4019
+ type: 'ink';
4020
+ shapeId: string;
4021
+ rawXml?: XmlObject;
4022
+ } | {
4023
+ type: 'unknown';
4024
+ rawXml: XmlObject;
4025
+ };
4026
+ /** Nested build choice carried by `p:bldGraphic`. */
4027
+ type PptxGraphicBuild = {
4028
+ mode: 'asOne';
4029
+ rawXml?: XmlObject;
4030
+ } | {
4031
+ mode: 'sub';
4032
+ kind: 'diagram';
4033
+ build: string;
4034
+ reverse: boolean;
4035
+ rawXml?: XmlObject;
4036
+ } | {
4037
+ mode: 'sub';
4038
+ kind: 'chart';
4039
+ build: string;
4040
+ animateBackground: boolean;
4041
+ rawXml?: XmlObject;
4042
+ };
3812
4043
  /**
3813
4044
  * Parsed native animation record from `p:timing / p:tnLst`.
3814
4045
  *
@@ -3830,6 +4061,8 @@ type PptxNativeAnimationKind = 'media';
3830
4061
  interface PptxNativeAnimation {
3831
4062
  /** Target element/shape ID. */
3832
4063
  targetId?: string;
4064
+ /** Full timing target, including sound and ink target variants. */
4065
+ target?: PptxAnimationTarget;
3833
4066
  /** Trigger type. */
3834
4067
  trigger?: PptxAnimationTrigger;
3835
4068
  /** Shape ID that triggers this animation when clicked (interactive sequence). */
@@ -3934,6 +4167,8 @@ interface PptxNativeAnimation {
3934
4167
  * that aren't OLE charts).
3935
4168
  */
3936
4169
  graphicBuild?: string;
4170
+ /** Schema-accurate `p:bldGraphic/p:bldAsOne|p:bldSub` representation. */
4171
+ graphicBuildProperties?: PptxGraphicBuild;
3937
4172
  /**
3938
4173
  * Opaque map of `p:cTn` attributes that don't have a typed home on this
3939
4174
  * interface but must round-trip through parse → save. Keys are stored
@@ -4050,6 +4285,8 @@ interface AnimationCondition {
4050
4285
  targetShapeId?: string;
4051
4286
  /** Whether the condition targets a slide (from `p:tgtEl/p:sldTgt`). */
4052
4287
  targetSlide?: boolean;
4288
+ /** Full target choice, including `p:sndTgt` and `p:inkTgt`. */
4289
+ target?: PptxAnimationTarget;
4053
4290
  }
4054
4291
  /** Iteration configuration from `p:iterate`. */
4055
4292
  interface PptxAnimationIterate {
@@ -4134,6 +4371,7 @@ interface PptxElementAnimation {
4134
4371
  *
4135
4372
  * @module pptx-types/metadata
4136
4373
  */
4374
+
4137
4375
  /**
4138
4376
  * A slide comment — may be a legacy positional comment or a modern
4139
4377
  * threaded comment with replies.
@@ -4153,6 +4391,10 @@ interface PptxElementAnimation {
4153
4391
  interface PptxComment {
4154
4392
  id: string;
4155
4393
  text: string;
4394
+ /** Storage vocabulary used by this comment. Omitted means legacy PresentationML. */
4395
+ format?: 'legacy' | 'modern';
4396
+ /** Stable GUID author identifier used by Office 2021 modern comments. */
4397
+ authorId?: string;
4156
4398
  /** Optional parent comment id for reply threading metadata. */
4157
4399
  parentId?: string;
4158
4400
  author?: string;
@@ -4161,12 +4403,26 @@ interface PptxComment {
4161
4403
  y?: number;
4162
4404
  /** Whether this comment has been resolved/marked done. */
4163
4405
  resolved?: boolean;
4406
+ /** Native p188 status token. */
4407
+ status?: 'active' | 'resolved' | 'closed';
4408
+ /** Modern comment classification tags and author IDs that liked the comment. */
4409
+ tags?: string[];
4410
+ likes?: string[];
4411
+ startDate?: string;
4412
+ dueDate?: string;
4413
+ assignedTo?: string[];
4414
+ /** Task completion in thousandths of a percent, from 0 through 100000. */
4415
+ complete?: number;
4416
+ priority?: number;
4417
+ title?: string;
4164
4418
  /** Modern threaded comment support (p15:threadingInfo). */
4165
4419
  threadId?: string;
4166
4420
  /** Replies to this comment (for modern threaded comments). */
4167
4421
  replies?: PptxComment[];
4168
4422
  /** ID of the element this comment is associated with (if any). */
4169
4423
  elementId?: string;
4424
+ /** Original `p:cm` subtree, retained for unknown child and extension preservation. */
4425
+ rawXml?: XmlObject;
4170
4426
  }
4171
4427
  /**
4172
4428
  * A compatibility warning generated during parse or save when the
@@ -4218,6 +4474,8 @@ interface PptxCompatibilityWarning {
4218
4474
  type PptxTransitionType = 'none' | 'cut' | 'fade' | 'push' | 'wipe' | 'split' | 'randomBar' | 'blinds' | 'checker' | 'circle' | 'comb' | 'cover' | 'diamond' | 'dissolve' | 'plus' | 'pull' | 'random' | 'strips' | 'uncover' | 'wedge' | 'wheel' | 'zoom' | 'newsflash' | 'morph' | 'conveyor' | 'doors' | 'ferris' | 'flash' | 'flythrough' | 'gallery' | 'glitter' | 'honeycomb' | 'pan' | 'prism' | 'reveal' | 'ripple' | 'shred' | 'switch' | 'vortex' | 'warp' | 'wheelReverse' | 'window' | 'cube' | 'flip' | 'rotate' | 'orbit';
4219
4475
  /** Split orientation from OOXML `@_orient`. */
4220
4476
  type PptxSplitOrientation = 'horz' | 'vert';
4477
+ /** Schema-defined `ST_TransitionSpeed` values. */
4478
+ type PptxTransitionSpeed = 'slow' | 'med' | 'fast';
4221
4479
  /**
4222
4480
  * Slide transition configuration.
4223
4481
  *
@@ -4234,6 +4492,8 @@ type PptxSplitOrientation = 'horz' | 'vert';
4234
4492
  */
4235
4493
  interface PptxSlideTransition {
4236
4494
  type: PptxTransitionType;
4495
+ /** Schema-defined transition speed. Defaults to `fast` when omitted. */
4496
+ speed?: PptxTransitionSpeed;
4237
4497
  durationMs?: number;
4238
4498
  direction?: string;
4239
4499
  advanceOnClick?: boolean;
@@ -4248,6 +4508,10 @@ interface PptxSlideTransition {
4248
4508
  orient?: PptxSplitOrientation;
4249
4509
  /** Relationship ID of transition sound from `p:sndAc/p:stSnd/@r:embed` when present. */
4250
4510
  soundRId?: string;
4511
+ /** Embedded WAV display name from `p:stSnd/p:snd/@name`. */
4512
+ soundName?: string;
4513
+ /** Whether the transition sound repeats until another sound starts. */
4514
+ soundLoop?: boolean;
4251
4515
  /** Resolved transition sound media path within the package. */
4252
4516
  soundPath?: string;
4253
4517
  /** Human-readable sound file name (extracted from soundPath). */
@@ -4261,6 +4525,8 @@ interface PptxSlideTransition {
4261
4525
  rawSoundAction?: XmlObject;
4262
4526
  /** Preserved extension-list XML node from `p:extLst` within the transition for lossless round-trip. */
4263
4527
  rawExtLst?: XmlObject;
4528
+ /** Original transition node, retained to preserve unknown attributes and children. */
4529
+ rawTransition?: XmlObject;
4264
4530
  }
4265
4531
 
4266
4532
  /**
@@ -4403,6 +4669,8 @@ interface PptxSlide {
4403
4669
  /** Optional `<p:cSld @name>` value of the notes slide, for round-trip. */
4404
4670
  notesCSldName?: string;
4405
4671
  comments?: PptxComment[];
4672
+ /** Source package metadata for an Office 2021 p188 comment part. */
4673
+ modernCommentPart?: PptxModernCommentPart;
4406
4674
  warnings?: PptxCompatibilityWarning[];
4407
4675
  rawXml?: XmlObject;
4408
4676
  /** Per-slide colour map override parsed from `p:clrMapOvr`. */
@@ -4421,6 +4689,24 @@ interface PptxSlide {
4421
4689
  activeXControls?: PptxActiveXControl[];
4422
4690
  /** Per-slide header/footer flags from `<p:hf>` (P-H3). */
4423
4691
  headerFooterFlags?: PptxHeaderFooterFlags;
4692
+ /** Server-backed slide synchronization metadata stored in a related OPC part. */
4693
+ slideSynchronization?: PptxSlideSyncProperties;
4694
+ }
4695
+ interface PptxModernCommentPart {
4696
+ path: string;
4697
+ relationshipId: string;
4698
+ /** Original p188:cmLst root, including unknown attributes and extensions. */
4699
+ rawXml?: XmlObject;
4700
+ }
4701
+ /** Metadata from a `p:sldSyncPr` slide synchronization data part. */
4702
+ interface PptxSlideSyncProperties {
4703
+ serverSlideId: string;
4704
+ serverSlideModifiedTime: string;
4705
+ clientInsertedTime: string;
4706
+ extensionList?: XmlObject;
4707
+ rawXml?: XmlObject;
4708
+ partPath?: string;
4709
+ relationshipId?: string;
4424
4710
  }
4425
4711
 
4426
4712
  /** Viewer interaction mode: read-only, edit, presentation, or master-view. */
@@ -4531,10 +4817,12 @@ type CollaborationRole = 'owner' | 'collaborator' | 'viewer';
4531
4817
  * any signaling server, which makes this mode usable from static hosting.
4532
4818
  */
4533
4819
  type CollaborationTransport = 'websocket' | 'webrtc';
4820
+ /** How the local user entered a collaboration session. */
4821
+ type CollaborationSessionIntent = 'create' | 'join';
4534
4822
  /**
4535
4823
  * Real-time collaboration configuration.
4536
4824
  *
4537
- * The same shape is accepted by the React, Vue, and Angular bindings.
4825
+ * The same shape is accepted by every framework binding.
4538
4826
  */
4539
4827
  interface CollaborationConfig {
4540
4828
  /** Unique identifier for the collaboration room (alphanumeric, hyphens, underscores). */
@@ -4562,6 +4850,13 @@ interface CollaborationConfig {
4562
4850
  authToken?: string;
4563
4851
  /** Role in the session; defaults to `'collaborator'`. */
4564
4852
  role?: CollaborationRole;
4853
+ /**
4854
+ * Whether this client created the room or joined an existing room. Providers
4855
+ * do not use this value, but hosts can use it to avoid publishing local file
4856
+ * bytes when handling a join request. Omitted values retain the legacy
4857
+ * create-session behaviour.
4858
+ */
4859
+ sessionIntent?: CollaborationSessionIntent;
4565
4860
  /**
4566
4861
  * Elected-writer write-back callback (Area 3 of the C3 hardening plan).
4567
4862
  *