pptx-react-viewer 1.17.1 → 1.19.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 (121) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +1 -1
  3. package/dist/{Model3DScene-YA4F63DT.js → Model3DScene-CQP7JLKK.js} +3 -3
  4. package/dist/Model3DScene-CQP7JLKK.js.br +0 -0
  5. package/dist/Model3DScene-CQP7JLKK.js.gz +0 -0
  6. package/dist/{Model3DScene-QHDYQXL2.mjs → Model3DScene-J2KBVMEZ.mjs} +2 -2
  7. package/dist/Model3DScene-J2KBVMEZ.mjs.br +0 -0
  8. package/dist/Model3DScene-J2KBVMEZ.mjs.gz +0 -0
  9. package/dist/PowerPointViewer-C4d7SKZf.d.ts.map +1 -1
  10. package/dist/{SurfaceChart3DScene-GUAS2NWQ.mjs → SurfaceChart3DScene-52VUVZSC.mjs} +2 -2
  11. package/dist/SurfaceChart3DScene-52VUVZSC.mjs.br +0 -0
  12. package/dist/SurfaceChart3DScene-52VUVZSC.mjs.gz +0 -0
  13. package/dist/{SurfaceChart3DScene-TGNJHTJQ.js → SurfaceChart3DScene-U6LVKSKR.js} +3 -3
  14. package/dist/SurfaceChart3DScene-U6LVKSKR.js.br +0 -0
  15. package/dist/SurfaceChart3DScene-U6LVKSKR.js.gz +0 -0
  16. package/dist/{chunk-XRYREYXC.mjs → chunk-3ZGCM6RC.mjs} +39271 -20532
  17. package/dist/chunk-3ZGCM6RC.mjs.br +0 -0
  18. package/dist/chunk-3ZGCM6RC.mjs.gz +0 -0
  19. package/dist/{chunk-IZXN663G.js → chunk-AALZCSY4.js} +7 -0
  20. package/dist/chunk-AALZCSY4.js.br +0 -0
  21. package/dist/chunk-AALZCSY4.js.gz +0 -0
  22. package/dist/{chunk-MGLRKGCH.js → chunk-AD3EAEY6.js} +39323 -20531
  23. package/dist/chunk-AD3EAEY6.js.br +0 -0
  24. package/dist/chunk-AD3EAEY6.js.gz +0 -0
  25. package/dist/{chunk-WH7YXV3I.js → chunk-DBZLZMED.js} +24152 -23261
  26. package/dist/chunk-DBZLZMED.js.br +0 -0
  27. package/dist/chunk-DBZLZMED.js.gz +0 -0
  28. package/dist/{chunk-JWS3RQKN.js → chunk-P3T4E6JQ.js} +3573 -907
  29. package/dist/chunk-P3T4E6JQ.js.br +0 -0
  30. package/dist/chunk-P3T4E6JQ.js.gz +0 -0
  31. package/dist/{chunk-G22EWPLH.mjs → chunk-R7FTNSSP.mjs} +3498 -882
  32. package/dist/chunk-R7FTNSSP.mjs.br +0 -0
  33. package/dist/chunk-R7FTNSSP.mjs.gz +0 -0
  34. package/dist/{chunk-5CD34U2V.mjs → chunk-RIRK64DM.mjs} +7 -0
  35. package/dist/chunk-RIRK64DM.mjs.br +0 -0
  36. package/dist/chunk-RIRK64DM.mjs.gz +0 -0
  37. package/dist/{chunk-PCQH2UBR.mjs → chunk-SLJXGFZS.mjs} +24109 -23218
  38. package/dist/chunk-SLJXGFZS.mjs.br +0 -0
  39. package/dist/chunk-SLJXGFZS.mjs.gz +0 -0
  40. package/dist/{chunk-HN7CPQUG.mjs → chunk-XGTMHQR7.mjs} +244 -785
  41. package/dist/chunk-XGTMHQR7.mjs.br +0 -0
  42. package/dist/chunk-XGTMHQR7.mjs.gz +0 -0
  43. package/dist/{chunk-SXCO5HHN.js → chunk-YF6JD4DO.js} +679 -1231
  44. package/dist/chunk-YF6JD4DO.js.br +0 -0
  45. package/dist/chunk-YF6JD4DO.js.gz +0 -0
  46. package/dist/dist-3YRZ26TL.mjs +2 -0
  47. package/dist/dist-3YRZ26TL.mjs.br +0 -0
  48. package/dist/dist-3YRZ26TL.mjs.gz +0 -0
  49. package/dist/{dist-2ZAH7U6U.js → dist-M2P6HBG4.js} +719 -507
  50. package/dist/dist-M2P6HBG4.js.br +0 -0
  51. package/dist/dist-M2P6HBG4.js.gz +0 -0
  52. package/dist/hooks-unstable.d.ts +1006 -165
  53. package/dist/hooks-unstable.d.ts.map +1 -1
  54. package/dist/hooks-unstable.js +78 -78
  55. package/dist/hooks-unstable.js.br +0 -0
  56. package/dist/hooks-unstable.js.gz +0 -0
  57. package/dist/hooks-unstable.mjs +4 -4
  58. package/dist/hooks-unstable.mjs.br +0 -0
  59. package/dist/hooks-unstable.mjs.gz +0 -0
  60. package/dist/i18n.js +3 -3
  61. package/dist/i18n.js.br +0 -0
  62. package/dist/i18n.js.gz +0 -0
  63. package/dist/i18n.mjs +1 -1
  64. package/dist/i18n.mjs.br +0 -0
  65. package/dist/i18n.mjs.gz +0 -0
  66. package/dist/{index-XGt7MZpa.d.ts → index-DmHVR48M.d.ts} +25 -3
  67. package/dist/index-DmHVR48M.d.ts.map +1 -0
  68. package/dist/index.d.ts +828 -137
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +19 -19
  71. package/dist/index.js.br +0 -0
  72. package/dist/index.js.gz +0 -0
  73. package/dist/index.mjs +5 -5
  74. package/dist/index.mjs.br +0 -0
  75. package/dist/index.mjs.gz +0 -0
  76. package/dist/pptx-viewer.css +1 -1
  77. package/dist/pptx-viewer.css.br +0 -0
  78. package/dist/pptx-viewer.css.gz +0 -0
  79. package/dist/viewer/index.d.ts +946 -147
  80. package/dist/viewer/index.d.ts.map +1 -1
  81. package/dist/viewer/index.js +24 -20
  82. package/dist/viewer/index.js.br +0 -0
  83. package/dist/viewer/index.js.gz +0 -0
  84. package/dist/viewer/index.mjs +5 -5
  85. package/dist/viewer/index.mjs.br +0 -0
  86. package/dist/viewer/index.mjs.gz +0 -0
  87. package/package.json +1 -1
  88. package/dist/Model3DScene-QHDYQXL2.mjs.br +0 -0
  89. package/dist/Model3DScene-QHDYQXL2.mjs.gz +0 -0
  90. package/dist/Model3DScene-YA4F63DT.js.br +0 -0
  91. package/dist/Model3DScene-YA4F63DT.js.gz +0 -0
  92. package/dist/SurfaceChart3DScene-GUAS2NWQ.mjs.br +0 -0
  93. package/dist/SurfaceChart3DScene-GUAS2NWQ.mjs.gz +0 -0
  94. package/dist/SurfaceChart3DScene-TGNJHTJQ.js.br +0 -0
  95. package/dist/SurfaceChart3DScene-TGNJHTJQ.js.gz +0 -0
  96. package/dist/chunk-5CD34U2V.mjs.br +0 -0
  97. package/dist/chunk-5CD34U2V.mjs.gz +0 -0
  98. package/dist/chunk-G22EWPLH.mjs.br +0 -0
  99. package/dist/chunk-G22EWPLH.mjs.gz +0 -0
  100. package/dist/chunk-HN7CPQUG.mjs.br +0 -0
  101. package/dist/chunk-HN7CPQUG.mjs.gz +0 -0
  102. package/dist/chunk-IZXN663G.js.br +0 -0
  103. package/dist/chunk-IZXN663G.js.gz +0 -0
  104. package/dist/chunk-JWS3RQKN.js.br +0 -0
  105. package/dist/chunk-JWS3RQKN.js.gz +0 -0
  106. package/dist/chunk-MGLRKGCH.js.br +0 -0
  107. package/dist/chunk-MGLRKGCH.js.gz +0 -0
  108. package/dist/chunk-PCQH2UBR.mjs.br +0 -0
  109. package/dist/chunk-PCQH2UBR.mjs.gz +0 -0
  110. package/dist/chunk-SXCO5HHN.js.br +0 -0
  111. package/dist/chunk-SXCO5HHN.js.gz +0 -0
  112. package/dist/chunk-WH7YXV3I.js.br +0 -0
  113. package/dist/chunk-WH7YXV3I.js.gz +0 -0
  114. package/dist/chunk-XRYREYXC.mjs.br +0 -0
  115. package/dist/chunk-XRYREYXC.mjs.gz +0 -0
  116. package/dist/dist-2ZAH7U6U.js.br +0 -0
  117. package/dist/dist-2ZAH7U6U.js.gz +0 -0
  118. package/dist/dist-MXDC6YTS.mjs +0 -2
  119. package/dist/dist-MXDC6YTS.mjs.br +0 -0
  120. package/dist/dist-MXDC6YTS.mjs.gz +0 -0
  121. package/dist/index-XGt7MZpa.d.ts.map +0 -1
@@ -439,6 +439,8 @@ interface CustomGeometryPath {
439
439
  * and the text rectangle are not lost when a custGeom is edited and saved.
440
440
  */
441
441
  interface CustomGeometryRawData {
442
+ /** Raw `a:avLst` XML content (adjustment value list). */
443
+ avLstXml?: unknown;
442
444
  /** Raw `a:gdLst` XML content (guide list). */
443
445
  gdLstXml?: unknown;
444
446
  /** Raw `a:ahLst` XML content (adjustment handles). */
@@ -579,7 +581,7 @@ interface PptxCustomPathProperties {
579
581
  pathHeight?: number;
580
582
  /** Structured custom geometry paths for editing (maps to a:custGeom/a:pathLst). */
581
583
  customGeometryPaths?: CustomGeometryPath[];
582
- /** Raw a:gdLst/a:ahLst/a:cxnLst/a:rect XML preserved for round-trip serialization. */
584
+ /** Raw adjustment/guide/handle/connection/text-rectangle XML preserved for serialization. */
583
585
  customGeometryRawData?: CustomGeometryRawData;
584
586
  /**
585
587
  * Typed XY adjustment handles parsed from `a:custGeom/a:ahLst/a:ahXY`.
@@ -679,6 +681,10 @@ interface Text3DStyle {
679
681
  interface Pptx3DScene {
680
682
  /** Camera preset type, e.g. "orthographicFront", "perspectiveFront". */
681
683
  cameraPreset?: string;
684
+ /** Camera field of view in 1/60000 degrees (`a:camera/@fov`). */
685
+ cameraFieldOfView?: number;
686
+ /** Camera zoom as an OOXML percentage fraction (`a:camera/@zoom`, 1 = 100%). */
687
+ cameraZoom?: number;
682
688
  /** Camera rotation around X axis in 1/60000 degrees. */
683
689
  cameraRotX?: number;
684
690
  /** Camera rotation around Y axis in 1/60000 degrees. */
@@ -689,6 +695,12 @@ interface Pptx3DScene {
689
695
  lightRigType?: string;
690
696
  /** Light rig direction, e.g. "t", "b", "l", "r", "tl". */
691
697
  lightRigDirection?: string;
698
+ /** Light-rig rotation latitude in 1/60000 degrees. */
699
+ lightRigRotX?: number;
700
+ /** Light-rig rotation longitude in 1/60000 degrees. */
701
+ lightRigRotY?: number;
702
+ /** Light-rig rotation revolution in 1/60000 degrees. */
703
+ lightRigRotZ?: number;
692
704
  /** Whether a 3D backdrop plane is present (`a:backdrop`). */
693
705
  hasBackdrop?: boolean;
694
706
  /** Backdrop plane anchor X in EMU. */
@@ -697,6 +709,18 @@ interface Pptx3DScene {
697
709
  backdropAnchorY?: number;
698
710
  /** Backdrop plane anchor Z in EMU. */
699
711
  backdropAnchorZ?: number;
712
+ /** Backdrop normal vector X component. */
713
+ backdropNormalX?: number;
714
+ /** Backdrop normal vector Y component. */
715
+ backdropNormalY?: number;
716
+ /** Backdrop normal vector Z component. */
717
+ backdropNormalZ?: number;
718
+ /** Backdrop up vector X component. */
719
+ backdropUpX?: number;
720
+ /** Backdrop up vector Y component. */
721
+ backdropUpY?: number;
722
+ /** Backdrop up vector Z component. */
723
+ backdropUpZ?: number;
700
724
  }
701
725
  /**
702
726
  * 3D shape extrusion/bevel from `a:sp3d`.
@@ -768,6 +792,12 @@ type PptxTextWarpPreset = 'textNoShape' | 'textPlain' | 'textStop' | 'textTriang
768
792
  * @module pptx-types/shape-style
769
793
  */
770
794
 
795
+ interface PptxCustomDashSegment {
796
+ /** Dash length as a non-negative percentage in thousandths of one percent. */
797
+ dash: number;
798
+ /** Space length as a non-negative percentage in thousandths of one percent. */
799
+ space: number;
800
+ }
771
801
  /**
772
802
  * Comprehensive visual style for a shape, connector, or image element.
773
803
  *
@@ -816,9 +846,13 @@ interface ShapeStyle {
816
846
  */
817
847
  fillColorXml?: XmlObject;
818
848
  fillGradient?: string;
849
+ /** Original `gradFill` XML retained for unknown-child and extension round-tripping. */
850
+ fillGradientXml?: XmlObject;
819
851
  fillMode?: 'solid' | 'gradient' | 'pattern' | 'none' | 'image' | 'theme' | 'group';
820
852
  fillPatternPreset?: string;
821
853
  fillPatternBackgroundColor?: string;
854
+ /** Original `pattFill` XML retained for unknown-child round-tripping. */
855
+ fillPatternXml?: XmlObject;
822
856
  /** Raw XML node for pattern fill foreground colour (preserves color transforms). */
823
857
  fillPatternFgClrXml?: XmlObject;
824
858
  /** Raw XML node for pattern fill background colour (preserves color transforms). */
@@ -884,6 +918,14 @@ interface ShapeStyle {
884
918
  /** Pen line alignment (`a:ln/@algn`): `ctr` (centre, default) or `in` (inside). */
885
919
  lineAlignment?: 'ctr' | 'in';
886
920
  shadowColor?: string;
921
+ /** Preserved source `a:effectLst`, including unknown effects and extensions. */
922
+ effectListXml?: XmlObject;
923
+ /** Original outer-shadow node used for lossless surgical updates. */
924
+ outerShadowXml?: XmlObject;
925
+ /** Resolved source shadow colour used to detect colour edits. */
926
+ outerShadowOriginalColor?: string;
927
+ /** Source shadow opacity used to detect alpha edits. */
928
+ outerShadowOriginalOpacity?: number;
887
929
  shadowBlur?: number;
888
930
  shadowOffsetX?: number;
889
931
  shadowOffsetY?: number;
@@ -927,11 +969,23 @@ interface ShapeStyle {
927
969
  /** Multiple shadow layers (for advanced effects). */
928
970
  shadows?: ShadowEffect[];
929
971
  glowColor?: string;
972
+ /** Original glow node used for lossless surgical updates. */
973
+ glowXml?: XmlObject;
974
+ /** Resolved source glow colour used to detect colour edits. */
975
+ glowOriginalColor?: string;
976
+ /** Source glow opacity used to detect alpha edits. */
977
+ glowOriginalOpacity?: number;
930
978
  glowRadius?: number;
931
979
  glowOpacity?: number;
932
980
  softEdgeRadius?: number;
933
981
  /** Inner shadow colour (`a:innerShdw`). */
934
982
  innerShadowColor?: string;
983
+ /** Original inner-shadow node used for lossless surgical updates. */
984
+ innerShadowXml?: XmlObject;
985
+ /** Resolved source inner-shadow colour used to detect colour edits. */
986
+ innerShadowOriginalColor?: string;
987
+ /** Source inner-shadow opacity used to detect alpha edits. */
988
+ innerShadowOriginalOpacity?: number;
935
989
  /** Inner shadow opacity (0-1). */
936
990
  innerShadowOpacity?: number;
937
991
  /** Inner shadow blur radius in px. */
@@ -940,8 +994,12 @@ interface ShapeStyle {
940
994
  innerShadowOffsetX?: number;
941
995
  /** Inner shadow vertical offset in px. */
942
996
  innerShadowOffsetY?: number;
997
+ /** Original soft-edge node, including vendor attributes and extensions. */
998
+ softEdgeXml?: XmlObject;
943
999
  /** Reflection effect — distance from shape bottom in px. */
944
1000
  reflectionBlurRadius?: number;
1001
+ /** Original reflection node, including vendor attributes and extensions. */
1002
+ reflectionXml?: XmlObject;
945
1003
  /** Reflection start opacity (0-1). */
946
1004
  reflectionStartOpacity?: number;
947
1005
  /** Reflection end opacity (0-1). */
@@ -972,11 +1030,12 @@ interface ShapeStyle {
972
1030
  connectorStartConnection?: ConnectorConnectionPoint;
973
1031
  /** Connection point for the end of a connector. */
974
1032
  connectorEndConnection?: ConnectorConnectionPoint;
975
- /** Custom dash segments array (`a:custDash/a:ds`). Each entry has dash length and space length in EMU. */
976
- customDashSegments?: Array<{
977
- dash: number;
978
- space: number;
979
- }>;
1033
+ /** Custom dash pattern, measured relative to line width in thousandths of one percent. */
1034
+ customDashSegments?: PptxCustomDashSegment[];
1035
+ /** Original `a:ds` payloads retained by index for lossless edits. */
1036
+ customDashSegmentXml?: XmlObject[];
1037
+ /** Original `a:custDash` payload retained for lossless edits. */
1038
+ customDashXml?: XmlObject;
980
1039
  /** 3D scene/camera settings from `a:scene3d`. */
981
1040
  scene3d?: Pptx3DScene;
982
1041
  /** 3D shape extrusion/bevel from `a:sp3d`. */
@@ -1088,6 +1147,8 @@ interface ShapeStyle {
1088
1147
  * ```
1089
1148
  */
1090
1149
  interface TextStyle {
1150
+ /** Original `a:rPr` XML retained by projections that share the shape-text model. */
1151
+ runPropertiesXml?: XmlObject;
1091
1152
  fontFamily?: string;
1092
1153
  fontSize?: number;
1093
1154
  /** When true, renderer should shrink text to fit the shape bounds. */
@@ -1437,6 +1498,8 @@ interface TextStyle {
1437
1498
  text3d?: Text3DStyle;
1438
1499
  /** 3D scene (camera + light rig) settings on the text body (`a:bodyPr/a:scene3d`). */
1439
1500
  textBodyScene3d?: Pptx3DScene;
1501
+ /** Raw `a:scene3d` subtree used to preserve extensions and unmodelled children. */
1502
+ textBodyScene3dXml?: XmlObject;
1440
1503
  /**
1441
1504
  * Raw `<a:extLst>` subtree captured from `<a:bodyPr>`. Preserved verbatim so
1442
1505
  * authored extensions (e.g. content placeholders, custom application data)
@@ -1813,12 +1876,126 @@ interface PlaceholderTextLevelStyle {
1813
1876
  spaceAfter?: number;
1814
1877
  }
1815
1878
 
1879
+ /** Tick-mark placement from ChartML `ST_TickMark`. */
1880
+ type PptxChartTickMark = 'cross' | 'in' | 'none' | 'out';
1881
+ /** Typed axis tick and category/date label controls. */
1882
+ interface PptxChartAxisLabelFormatting {
1883
+ /** Primary and secondary tick-mark placement. */
1884
+ majorTickMark?: PptxChartTickMark;
1885
+ minorTickMark?: PptxChartTickMark;
1886
+ /** Tick-label position from ChartML `ST_TickLblPos`. */
1887
+ tickLblPos?: 'high' | 'low' | 'nextTo' | 'none';
1888
+ /** Automatic category/date axis behavior (`c:auto`). */
1889
+ auto?: boolean;
1890
+ /** Category-axis label alignment (`c:lblAlgn`). */
1891
+ labelAlignment?: 'ctr' | 'l' | 'r';
1892
+ /** Category/date label distance, from 0 through 1000 percent. */
1893
+ labelOffset?: number;
1894
+ /** Number of category/date labels between rendered labels. */
1895
+ tickLabelSkip?: number;
1896
+ /** Number of category/date tick positions between major tick marks. */
1897
+ tickMarkSkip?: number;
1898
+ /** Suppress multi-level category labels (`c:noMultiLvlLbl`). */
1899
+ noMultiLevelLabels?: boolean;
1900
+ }
1901
+
1902
+ interface PptxChartPivotFormat {
1903
+ index: number;
1904
+ shapePropertiesXml?: XmlObject | null;
1905
+ markerXml?: XmlObject | null;
1906
+ dataLabelXml?: XmlObject | null;
1907
+ extensionListXml?: XmlObject | null;
1908
+ rawXml?: XmlObject;
1909
+ }
1910
+ /** Editable classic ChartML `c:pivotFmts` collection. */
1911
+ interface PptxChartPivotFormats {
1912
+ formats: PptxChartPivotFormat[];
1913
+ rawXml?: XmlObject;
1914
+ }
1915
+
1916
+ /** Editable classic ChartML `c:pivotSource` metadata. */
1917
+ interface PptxChartPivotSource {
1918
+ /** Pivot table reference stored as `c:name` text. */
1919
+ name: string;
1920
+ /** Required unsigned format identifier stored in `c:fmtId/@val`. */
1921
+ formatId: number;
1922
+ /** Internal source subtree used to preserve extensions and foreign markup. */
1923
+ rawXml?: XmlObject;
1924
+ }
1925
+
1926
+ /** Headers and footers used when a classic ChartML chart is printed. */
1927
+ interface PptxChartPrintHeaderFooter {
1928
+ oddHeader?: string;
1929
+ oddFooter?: string;
1930
+ evenHeader?: string;
1931
+ evenFooter?: string;
1932
+ firstHeader?: string;
1933
+ firstFooter?: string;
1934
+ alignWithMargins?: boolean;
1935
+ differentOddEven?: boolean;
1936
+ differentFirst?: boolean;
1937
+ /** Original subtree retained for foreign attributes and extension children. */
1938
+ rawXml?: unknown;
1939
+ }
1940
+ /** Required page margins from ChartML `c:pageMargins`, measured in inches. */
1941
+ interface PptxChartPageMargins {
1942
+ left: number;
1943
+ right: number;
1944
+ top: number;
1945
+ bottom: number;
1946
+ header: number;
1947
+ footer: number;
1948
+ /** Original leaf retained for foreign attributes. */
1949
+ rawXml?: unknown;
1950
+ }
1951
+ /** Printer page configuration from ChartML `c:pageSetup`. */
1952
+ interface PptxChartPageSetup {
1953
+ paperSize?: number;
1954
+ firstPageNumber?: number;
1955
+ orientation?: 'default' | 'portrait' | 'landscape';
1956
+ blackAndWhite?: boolean;
1957
+ draft?: boolean;
1958
+ useFirstPageNumber?: boolean;
1959
+ horizontalDpi?: number;
1960
+ verticalDpi?: number;
1961
+ copies?: number;
1962
+ /** Original leaf retained for foreign attributes. */
1963
+ rawXml?: unknown;
1964
+ }
1965
+ /** Editable `c:printSettings` content from a classic ChartML chart space. */
1966
+ interface PptxChartPrintSettings {
1967
+ headerFooter?: PptxChartPrintHeaderFooter | null;
1968
+ pageMargins?: PptxChartPageMargins | null;
1969
+ pageSetup?: PptxChartPageSetup | null;
1970
+ /** `null` removes the legacy header/footer drawing relationship element. */
1971
+ legacyDrawingHeaderFooterRelationshipId?: string | null;
1972
+ /** Original subtree retained for unknown and extension content. */
1973
+ rawXml?: unknown;
1974
+ }
1975
+
1976
+ /** Editable classic ChartML `c:protection` settings. */
1977
+ interface PptxChartProtection {
1978
+ /** Prevent editing the chart object. */
1979
+ chartObject?: boolean | null;
1980
+ /** Prevent editing the chart data. */
1981
+ data?: boolean | null;
1982
+ /** Prevent editing chart formatting. */
1983
+ formatting?: boolean | null;
1984
+ /** Prevent selecting chart elements. */
1985
+ selection?: boolean | null;
1986
+ /** Prevent chart user-interface operations. */
1987
+ userInterface?: boolean | null;
1988
+ /** Internal source subtree used to preserve foreign markup during edits. */
1989
+ rawXml?: XmlObject;
1990
+ }
1991
+
1816
1992
  /**
1817
1993
  * Chart types: chart categories, series data, style metadata, data tables,
1818
1994
  * trendlines, error bars, and the composite `PptxChartData`.
1819
1995
  *
1820
1996
  * @module pptx-types/chart
1821
1997
  */
1998
+
1822
1999
  /**
1823
2000
  * Supported chart type discriminators.
1824
2001
  *
@@ -1855,6 +2032,7 @@ type PptxChartTrendlineType = 'linear' | 'exponential' | 'logarithmic' | 'polyno
1855
2032
  */
1856
2033
  interface PptxChartTrendline {
1857
2034
  trendlineType: PptxChartTrendlineType;
2035
+ name?: string;
1858
2036
  order?: number;
1859
2037
  period?: number;
1860
2038
  forward?: number;
@@ -1863,6 +2041,13 @@ interface PptxChartTrendline {
1863
2041
  displayRSq?: boolean;
1864
2042
  displayEq?: boolean;
1865
2043
  color?: string;
2044
+ label?: PptxChartTrendlineLabel | null;
2045
+ }
2046
+ /** Typed, commonly edited properties of `c:trendlineLbl`. */
2047
+ interface PptxChartTrendlineLabel {
2048
+ layout?: PptxChartManualLayout;
2049
+ numberFormatCode?: string;
2050
+ sourceLinked?: boolean;
1866
2051
  }
1867
2052
  /** Error-bar direction axis. */
1868
2053
  type PptxChartErrBarDir = 'x' | 'y';
@@ -1899,6 +2084,8 @@ interface PptxChartErrBars {
1899
2084
  val?: number;
1900
2085
  customPlus?: number[];
1901
2086
  customMinus?: number[];
2087
+ noEndCap?: boolean;
2088
+ color?: string;
1902
2089
  }
1903
2090
  /**
1904
2091
  * Visibility flags for the chart data table (axes + legend keys).
@@ -1948,9 +2135,17 @@ interface PptxChartShapeProps {
1948
2135
  /** Line dash style (a:prstDash/@val), e.g. 'solid', 'dash', 'dot', 'lgDash'. */
1949
2136
  strokeDashStyle?: string;
1950
2137
  }
2138
+ /** Up/down bar formatting on line and stock charts (`c:upDownBars`). */
2139
+ interface PptxChartUpDownBars {
2140
+ /** Gap between bars as a percentage, constrained to 0 through 500. */
2141
+ gapWidth?: number;
2142
+ upBars?: PptxChartShapeProps;
2143
+ downBars?: PptxChartShapeProps;
2144
+ }
1951
2145
  /** Marker appearance on a chart series or data point. */
1952
2146
  interface PptxChartMarker {
1953
2147
  symbol: PptxChartMarkerSymbol;
2148
+ /** Marker size in points, constrained by ST_MarkerSize to 2 through 72. */
1954
2149
  size?: number;
1955
2150
  spPr?: PptxChartShapeProps;
1956
2151
  }
@@ -1961,26 +2156,43 @@ interface PptxChartDataPoint {
1961
2156
  explosion?: number;
1962
2157
  invertIfNegative?: boolean;
1963
2158
  marker?: PptxChartMarker;
2159
+ /** Render a bubble-chart point with a 3-D appearance. */
2160
+ bubble3D?: boolean;
1964
2161
  }
2162
+ /** Schema values accepted by `c:dLblPos`. */
2163
+ type PptxChartDataLabelPosition = 'bestFit' | 'b' | 'ctr' | 'inBase' | 'inEnd' | 'l' | 'outEnd' | 'r' | 't';
1965
2164
  /** Individual data label override (c:dLbl). */
1966
2165
  interface PptxChartDataLabel {
1967
2166
  idx: number;
2167
+ /** Suppress this data point's automatically generated label. */
2168
+ deleted?: boolean;
1968
2169
  showVal?: boolean;
1969
2170
  showCatName?: boolean;
1970
2171
  showSerName?: boolean;
1971
2172
  showPercent?: boolean;
1972
2173
  showLegendKey?: boolean;
1973
2174
  showBubbleSize?: boolean;
1974
- position?: string;
2175
+ position?: PptxChartDataLabelPosition;
1975
2176
  text?: string;
2177
+ separator?: string;
2178
+ showLeaderLines?: boolean;
1976
2179
  }
1977
2180
  /** Axis number format. */
1978
2181
  interface PptxChartAxisNumFmt {
1979
2182
  formatCode: string;
1980
2183
  sourceLinked?: boolean;
1981
2184
  }
2185
+ /** Typed contents of a value-axis display-unit label (`c:dispUnitsLbl`). */
2186
+ interface PptxChartDisplayUnitsLabel {
2187
+ /** Literal label text. Omit to preserve the source text subtree. */
2188
+ text?: string;
2189
+ /** Manual label placement. `null` removes only the manual layout. */
2190
+ layout?: PptxChartManualLayout | null;
2191
+ /** Label shape formatting. `null` removes `c:spPr`. */
2192
+ spPr?: PptxChartShapeProps | null;
2193
+ }
1982
2194
  /** Axis formatting for category, value, or date axes. */
1983
- interface PptxChartAxisFormatting {
2195
+ interface PptxChartAxisFormatting extends PptxChartAxisLabelFormatting {
1984
2196
  axisType: 'catAx' | 'valAx' | 'dateAx' | 'serAx';
1985
2197
  /** Axis position: "b" (bottom), "l" (left), "r" (right), "t" (top). */
1986
2198
  axPos?: 'b' | 'l' | 'r' | 't';
@@ -1988,6 +2200,12 @@ interface PptxChartAxisFormatting {
1988
2200
  axisId?: number;
1989
2201
  /** Cross-axis identifier — the axis this axis crosses. */
1990
2202
  crossAxisId?: number;
2203
+ /** Automatic crossing mode (`c:crosses`). Mutually exclusive with `crossesAt`. */
2204
+ crosses?: 'autoZero' | 'min' | 'max';
2205
+ /** Explicit crossing value (`c:crossesAt`). Units depend on the axis type. */
2206
+ crossesAt?: number;
2207
+ /** Whether a value axis crosses between or at category tick marks. */
2208
+ crossBetween?: 'between' | 'midCat';
1991
2209
  numFmt?: PptxChartAxisNumFmt;
1992
2210
  titleText?: string;
1993
2211
  spPr?: PptxChartShapeProps;
@@ -2005,6 +2223,8 @@ interface PptxChartAxisFormatting {
2005
2223
  min?: number;
2006
2224
  /** Maximum axis value override (c:max/@val). */
2007
2225
  max?: number;
2226
+ /** Axis value direction (`c:scaling/c:orientation/@val`). */
2227
+ orientation?: 'minMax' | 'maxMin';
2008
2228
  /** Whether the axis is deleted/hidden (c:delete/@val). */
2009
2229
  deleted?: boolean;
2010
2230
  /**
@@ -2014,8 +2234,12 @@ interface PptxChartAxisFormatting {
2014
2234
  displayUnits?: 'hundreds' | 'thousands' | 'tenThousands' | 'hundredThousands' | 'millions' | 'tenMillions' | 'hundredMillions' | 'billions' | 'trillions' | 'custom';
2015
2235
  /** Custom display unit divisor value (c:dispUnits/c:custUnit/@val). Only used when displayUnits is 'custom'. */
2016
2236
  displayUnitsValue?: number;
2017
- /** Display units label text (c:dispUnits/c:dispUnitsLbl). Overrides the built-in default label when present. */
2018
- displayUnitsLabel?: string;
2237
+ /**
2238
+ * Display-unit label contents (`c:dispUnits/c:dispUnitsLbl`). A string is
2239
+ * retained as a compatibility shorthand for `{ text: string }`; `null`
2240
+ * explicitly removes the label.
2241
+ */
2242
+ displayUnitsLabel?: string | PptxChartDisplayUnitsLabel | null;
2019
2243
  /** Whether logarithmic scaling is enabled (presence of c:scaling/c:logBase). */
2020
2244
  logScale?: boolean;
2021
2245
  /** Logarithmic base value (c:scaling/c:logBase/@val), typically 10 or e. */
@@ -2024,14 +2248,69 @@ interface PptxChartAxisFormatting {
2024
2248
  majorUnit?: number;
2025
2249
  /** Minor-unit interval between secondary tick marks (c:minorUnit/@val). */
2026
2250
  minorUnit?: number;
2027
- /** Tick-label position (c:tickLblPos/@val): 'high', 'low', 'nextTo', or 'none'. */
2028
- tickLblPos?: 'high' | 'low' | 'nextTo' | 'none';
2251
+ /** Calendar unit used to interpret date-axis serial values. */
2252
+ baseTimeUnit?: 'days' | 'months' | 'years';
2253
+ majorTimeUnit?: 'days' | 'months' | 'years';
2254
+ minorTimeUnit?: 'days' | 'months' | 'years';
2029
2255
  }
2030
2256
  /** 3D wall or floor element formatting. */
2031
2257
  interface PptxChart3DSurface {
2032
2258
  thickness?: number;
2033
2259
  spPr?: PptxChartShapeProps;
2034
2260
  }
2261
+ /** Office 2016 ChartEx box-and-whisker series layout options. */
2262
+ interface PptxChartBoxWhiskerOptions {
2263
+ quartileMethod?: 'inclusive' | 'exclusive';
2264
+ showMeanLine?: boolean;
2265
+ showMeanMarker?: boolean;
2266
+ /** Show non-outlier (inner) data points. */
2267
+ showInnerPoints?: boolean;
2268
+ showOutlierPoints?: boolean;
2269
+ }
2270
+ /** Office 2016 ChartEx histogram and Pareto series layout options. */
2271
+ interface PptxChartHistogramOptions {
2272
+ /** Maps to `clusteredColumn` for histogram columns or `paretoLine`. */
2273
+ layout?: 'histogram' | 'pareto';
2274
+ /** Exactly one of binSize and binCount is emitted by the ChartEx writer. */
2275
+ binSize?: number;
2276
+ binCount?: number;
2277
+ intervalClosed?: 'l' | 'r';
2278
+ underflow?: number | 'auto';
2279
+ overflow?: number | 'auto';
2280
+ }
2281
+ /** Office 2016 ChartEx waterfall series layout options. */
2282
+ interface PptxChartWaterfallOptions {
2283
+ /** Zero-based data point indexes rendered as absolute subtotal or total bars. */
2284
+ subtotalIndices?: number[];
2285
+ /** Whether connector lines are visible between adjacent bars. */
2286
+ connectorLines?: boolean;
2287
+ }
2288
+ /** Office 2016 ChartEx geographic series dimensions and layout options. */
2289
+ interface PptxChartRegionMapOptions {
2290
+ /** Optional provider entity identifiers aligned with categories and values. */
2291
+ entityIds?: string[];
2292
+ /** Original `cx:pt/@idx` values for category points. */
2293
+ categorySourceIndices?: number[];
2294
+ /** Original `cx:pt/@idx` values for colour-value points. */
2295
+ valueSourceIndices?: number[];
2296
+ /** Original `cx:pt/@idx` values for entity-ID points. */
2297
+ entityIdSourceIndices?: number[];
2298
+ regionLabelLayout?: 'none' | 'bestFitOnly' | 'showAll';
2299
+ projectionType?: 'mercator' | 'miller' | 'robinson' | 'albers';
2300
+ viewedRegionType?: 'dataOnly' | 'postalCode' | 'county' | 'state' | 'countryRegion' | 'countryRegionList' | 'world';
2301
+ cultureLanguage?: string;
2302
+ /** ISO-3166-1 alpha-2 region code. */
2303
+ cultureRegion?: string;
2304
+ attribution?: string;
2305
+ /** Opaque authored provider cache under `cx:geography/cx:geoCache`. */
2306
+ geographyCache?: XmlObject;
2307
+ }
2308
+ /** Layout for parent category labels in a hierarchical ChartEx treemap. */
2309
+ type PptxChartParentLabelLayout = 'none' | 'banner' | 'overlapping';
2310
+ /** Per-series layout options for an Office 2016+ ChartEx treemap. */
2311
+ interface PptxChartTreemapOptions {
2312
+ parentLabelLayout?: PptxChartParentLabelLayout;
2313
+ }
2035
2314
  /**
2036
2315
  * A single data series within a chart.
2037
2316
  *
@@ -2067,6 +2346,11 @@ interface PptxChartSeries {
2067
2346
  * series.
2068
2347
  */
2069
2348
  seriesChartType?: PptxChartType;
2349
+ boxWhiskerOptions?: PptxChartBoxWhiskerOptions;
2350
+ histogramOptions?: PptxChartHistogramOptions;
2351
+ waterfallOptions?: PptxChartWaterfallOptions;
2352
+ regionMapOptions?: PptxChartRegionMapOptions;
2353
+ treemapOptions?: PptxChartTreemapOptions;
2070
2354
  }
2071
2355
  /**
2072
2356
  * Chart-level data-label options (`c:dLbls` directly under a chart-type
@@ -2084,12 +2368,32 @@ interface PptxChartDataLabelOptions {
2084
2368
  showPercent?: boolean;
2085
2369
  /** Show the legend key swatch (`c:showLegendKey`). */
2086
2370
  showLegendKey?: boolean;
2371
+ /** Show bubble size (`c:showBubbleSize`). */
2372
+ showBubbleSize?: boolean;
2373
+ /** Text placed between combined label components (`c:separator`). */
2374
+ separator?: string;
2375
+ /** Show leader lines where supported (`c:showLeaderLines`). */
2376
+ showLeaderLines?: boolean;
2087
2377
  /**
2088
2378
  * Label position (`c:dLblPos`). Valid values depend on the chart type
2089
2379
  * (`ctr`, `inEnd`, `inBase`, `outEnd`, `bestFit`, `l`, `r`, `t`, `b`).
2090
2380
  * Omit to let PowerPoint use the type default.
2091
2381
  */
2092
- position?: 'ctr' | 'inEnd' | 'inBase' | 'outEnd' | 'bestFit' | 'l' | 'r' | 't' | 'b';
2382
+ position?: PptxChartDataLabelPosition;
2383
+ }
2384
+ /** Typed text defaults for a single chart legend entry. */
2385
+ interface PptxChartLegendTextStyle {
2386
+ fontFamily?: string;
2387
+ fontSize?: number;
2388
+ bold?: boolean;
2389
+ italic?: boolean;
2390
+ color?: string;
2391
+ }
2392
+ /** Per-series legend entry override (`c:legendEntry`). */
2393
+ interface PptxChartLegendEntry {
2394
+ index: number;
2395
+ deleted?: boolean;
2396
+ textStyle?: PptxChartLegendTextStyle;
2093
2397
  }
2094
2398
  /**
2095
2399
  * Style / formatting metadata for a chart.
@@ -2112,6 +2416,8 @@ interface PptxChartStyle {
2112
2416
  hasLegend?: boolean;
2113
2417
  /** Legend position (t, b, l, r, tr). */
2114
2418
  legendPosition?: string;
2419
+ /** Per-series visibility and text-style overrides. */
2420
+ legendEntries?: PptxChartLegendEntry[];
2115
2421
  /** Whether the chart has a title. */
2116
2422
  hasTitle?: boolean;
2117
2423
  /** Whether gridlines are visible. */
@@ -2172,6 +2478,14 @@ interface PptxChartOfPieOptions {
2172
2478
  serLines?: boolean;
2173
2479
  gapWidth?: number;
2174
2480
  }
2481
+ /** Classic `c:bubbleChart` options from CT_BubbleChart. */
2482
+ interface PptxBubbleChartOptions {
2483
+ bubble3D?: boolean;
2484
+ /** Bubble diameter scale in percent, constrained to 0 through 300. */
2485
+ bubbleScale?: number;
2486
+ showNegativeBubbles?: boolean;
2487
+ sizeRepresents?: 'area' | 'w';
2488
+ }
2175
2489
  /**
2176
2490
  * 3D viewing parameters for a chart (`c:view3D`, ECMA-376 §21.2.2.228 /
2177
2491
  * CT_View3D).
@@ -2212,6 +2526,27 @@ interface PptxChartChrome {
2212
2526
  dispBlanksAs?: 'gap' | 'zero' | 'span';
2213
2527
  showDLblsOverMax?: boolean;
2214
2528
  }
2529
+ /** Manual chart placement from `c:layout/c:manualLayout` (CT_ManualLayout). */
2530
+ interface PptxChartManualLayout {
2531
+ layoutTarget?: 'inner' | 'outer';
2532
+ xMode?: 'edge' | 'factor';
2533
+ yMode?: 'edge' | 'factor';
2534
+ widthMode?: 'edge' | 'factor';
2535
+ heightMode?: 'edge' | 'factor';
2536
+ x?: number;
2537
+ y?: number;
2538
+ width?: number;
2539
+ height?: number;
2540
+ }
2541
+ /**
2542
+ * Typed manual layouts for chart regions that accept `c:layout`.
2543
+ * A `null` region removes its manual layout without removing extensions.
2544
+ */
2545
+ interface PptxChartLayouts {
2546
+ title?: PptxChartManualLayout | null;
2547
+ plotArea?: PptxChartManualLayout | null;
2548
+ legend?: PptxChartManualLayout | null;
2549
+ }
2215
2550
  /** Parsed data extracted from an embedded xlsx workbook. */
2216
2551
  interface PptxEmbeddedWorkbookData {
2217
2552
  /** Category labels from the first column/row. */
@@ -2221,6 +2556,16 @@ interface PptxEmbeddedWorkbookData {
2221
2556
  name: string;
2222
2557
  values: number[];
2223
2558
  }>;
2559
+ /** Whether the workbook uses the 1904 date system. */
2560
+ date1904?: boolean;
2561
+ }
2562
+ /** Raw numeric category cache used by a classic ChartML date axis. */
2563
+ interface PptxChartDateCategories {
2564
+ values: number[];
2565
+ /** False/default uses Excel's 1900 date system; true uses the 1904 system. */
2566
+ date1904?: boolean;
2567
+ /** Number format copied from the numeric category cache. */
2568
+ formatCode?: string;
2224
2569
  }
2225
2570
  /**
2226
2571
  * Complete parsed chart data for a {@link ChartPptxElement}.
@@ -2244,6 +2589,13 @@ interface PptxChartData {
2244
2589
  title?: string;
2245
2590
  chartType: PptxChartType;
2246
2591
  categories: string[];
2592
+ /**
2593
+ * Hierarchical category levels in source XML order for ChartEx hierarchy charts.
2594
+ * Level 0 contains the leaf labels and remains mirrored by {@link categories}
2595
+ * for consumers that only understand a flat category axis.
2596
+ */
2597
+ categoryLevels?: string[][];
2598
+ dateCategories?: PptxChartDateCategories;
2247
2599
  series: PptxChartSeries[];
2248
2600
  /** Chart style/formatting metadata. */
2249
2601
  style?: PptxChartStyle;
@@ -2253,9 +2605,12 @@ interface PptxChartData {
2253
2605
  chartPartPath?: string;
2254
2606
  /** Internal: relationship ID linking the graphic frame to the chart part. */
2255
2607
  chartRelationshipId?: string;
2256
- dataTable?: PptxChartDataTable;
2608
+ /** `null` explicitly removes an existing ChartML data table. */
2609
+ dataTable?: PptxChartDataTable | null;
2257
2610
  dropLines?: PptxChartLineStyle;
2258
2611
  hiLowLines?: PptxChartLineStyle;
2612
+ /** `null` explicitly removes an existing up/down-bars container. */
2613
+ upDownBars?: PptxChartUpDownBars | null;
2259
2614
  axes?: PptxChartAxisFormatting[];
2260
2615
  floor?: PptxChart3DSurface;
2261
2616
  sideWall?: PptxChart3DSurface;
@@ -2277,12 +2632,7 @@ interface PptxChartData {
2277
2632
  * The chart still renders using its cached series data; this field
2278
2633
  * is metadata about the data origin, preserved for round-trip fidelity.
2279
2634
  */
2280
- pivotSource?: {
2281
- /** Pivot table reference name, e.g. "[workbook.xlsx]Sheet1!PivotTable1". */
2282
- name: string;
2283
- /** Format identifier from c:fmtId/@val. */
2284
- formatId?: number;
2285
- };
2635
+ pivotSource?: PptxChartPivotSource | null;
2286
2636
  /**
2287
2637
  * Whether only visible cells are plotted (c:plotVisOnly).
2288
2638
  * When `true` (the default), hidden cells are excluded from the chart.
@@ -2305,6 +2655,12 @@ interface PptxChartData {
2305
2655
  * - `"acrossLinear"` — gradient across series
2306
2656
  */
2307
2657
  colorMethod?: 'cycle' | 'withinLinear' | 'acrossLinear';
2658
+ /** Internal source color-style part path used for lossless dirty saves. */
2659
+ colorStylePartPath?: string;
2660
+ /** Internal parsed palette snapshot used to detect actual edits. */
2661
+ colorStyleOriginalPalette?: string[];
2662
+ /** Internal parsed method snapshot used to detect actual edits. */
2663
+ colorStyleOriginalMethod?: 'cycle' | 'withinLinear' | 'acrossLinear';
2308
2664
  /**
2309
2665
  * Pie-of-pie / Bar-of-pie options (`c:ofPieChart`, CT_OfPieChart).
2310
2666
  *
@@ -2313,6 +2669,8 @@ interface PptxChartData {
2313
2669
  * `ofPieChart` element can be re-emitted on save with full fidelity.
2314
2670
  */
2315
2671
  ofPieOptions?: PptxChartOfPieOptions;
2672
+ /** Classic bubble-chart display options (`c:bubbleChart`). */
2673
+ bubbleOptions?: PptxBubbleChartOptions;
2316
2674
  /**
2317
2675
  * 3D viewing parameters (`c:view3D`, CT_View3D).
2318
2676
  *
@@ -2328,6 +2686,12 @@ interface PptxChartData {
2328
2686
  * source data, so absence does not produce empty `<c:…/>` placeholders.
2329
2687
  */
2330
2688
  chartChrome?: PptxChartChrome;
2689
+ /** `c:chartSpace/c:printSettings`; `null` removes the container on save. */
2690
+ printSettings?: PptxChartPrintSettings | null;
2691
+ /** `c:chartSpace/c:protection`; `null` removes the container on save. */
2692
+ protection?: PptxChartProtection | null;
2693
+ /** Editable manual placement for the title, plot area, and legend. */
2694
+ layouts?: PptxChartLayouts;
2331
2695
  /**
2332
2696
  * Raw `c:userShapes` XML subtree (a drawing tree) preserved verbatim.
2333
2697
  *
@@ -2344,7 +2708,8 @@ interface PptxChartData {
2344
2708
  * for charts whose data originates from a PivotTable. Preserved
2345
2709
  * verbatim for round-trip fidelity.
2346
2710
  */
2347
- pivotFmtsXml?: unknown;
2711
+ /** Typed pivot-chart format persistence; `null` removes `c:pivotFmts`. */
2712
+ pivotFormats?: PptxChartPivotFormats | null;
2348
2713
  /**
2349
2714
  * Color-map override (`c:clrMapOvr`) carrying 12 attributes that
2350
2715
  * remap theme colour roles for this chart only. Preserved as a flat
@@ -2353,107 +2718,61 @@ interface PptxChartData {
2353
2718
  clrMapOvr?: Record<string, string>;
2354
2719
  }
2355
2720
 
2356
- /**
2357
- * Image types: effects, crop shapes, and properties shared by image/picture
2358
- * elements.
2359
- *
2360
- * @module pptx-types/image
2361
- */
2362
- /**
2363
- * Blend mode for `a:blend` container nodes inside an `a:effectDag` (CT_BlendEffect).
2364
- *
2365
- * Per ECMA-376 §20.1.8.10, valid values are: `darken`, `lighten`, `mult`,
2366
- * `over`, `screen`.
2367
- */
2368
2721
  type EffectDagBlendMode = 'darken' | 'lighten' | 'mult' | 'over' | 'screen';
2369
- /**
2370
- * Container node kind inside an `a:effectDag` (CT_EffectContainer @type).
2371
- *
2372
- * Per ECMA-376 §20.1.8.20, `sib` (sibling) draws each child independently
2373
- * over the same source; `tree` (tree) chains effects so each sees the output
2374
- * of its siblings.
2375
- */
2376
2722
  type EffectDagContainerType = 'sib' | 'tree';
2377
- /**
2378
- * Typed model of the directed-acyclic effect graph stored in `a:effectDag`.
2379
- *
2380
- * The four "structural" container/transform nodes are typed; any other inner
2381
- * effect (e.g. `a:outerShdw`, `a:glow`, `a:alphaInv`) is preserved verbatim
2382
- * as a raw XML object via the {@link EffectDagRawLeaf} variant so we never
2383
- * have to recurse into the full effect taxonomy.
2384
- *
2385
- * @example
2386
- * ```ts
2387
- * // <a:effectDag>
2388
- * // <a:cont type="sib">
2389
- * // <a:blend blend="mult"><a:cont type="tree" /></a:blend>
2390
- * // </a:cont>
2391
- * // </a:effectDag>
2392
- * const dag: EffectDagContainer = {
2393
- * kind: "cont",
2394
- * type: "sib",
2395
- * children: [{
2396
- * kind: "blend",
2397
- * mode: "mult",
2398
- * container: { kind: "cont", type: "tree", children: [] },
2399
- * }],
2400
- * };
2401
- * ```
2402
- */
2403
- type EffectDagNode = EffectDagContainer | EffectDagBlend | EffectDagXfrm | EffectDagRelOff | EffectDagRawLeaf;
2404
- /** `a:cont` — CT_EffectContainer. Recursive; mirrors the top-level `effectDag`. */
2723
+ type EffectDagNode = EffectDagContainer | EffectDagBlend | EffectDagXfrm | EffectDagRelOff | EffectDagBlur | EffectDagAlphaOutset | EffectDagPresetShadow | EffectDagRawLeaf;
2405
2724
  interface EffectDagContainer {
2406
2725
  kind: 'cont';
2407
- /** `@type` — `sib` or `tree`. */
2408
2726
  type: EffectDagContainerType;
2409
- /** Optional `@name` attribute. */
2410
2727
  name?: string;
2411
- /** Ordered children. */
2412
2728
  children: EffectDagNode[];
2413
2729
  }
2414
- /** `a:blend` — CT_BlendEffect. Always wraps a single `a:cont` child. */
2415
2730
  interface EffectDagBlend {
2416
2731
  kind: 'blend';
2417
- /** `@blend` attribute. */
2418
2732
  mode: EffectDagBlendMode;
2419
- /** Required child `a:cont` container. */
2420
2733
  container: EffectDagContainer;
2421
2734
  }
2422
- /** `a:xfrmEffect` — CT_TransformEffect. Affine transform with no children. */
2423
2735
  interface EffectDagXfrm {
2424
2736
  kind: 'xfrmEffect';
2425
- /** Horizontal scale, percentage * 1000 (e.g. 100000 = 100%). */
2426
2737
  sx?: number;
2427
- /** Vertical scale, percentage * 1000. */
2428
2738
  sy?: number;
2429
- /** Horizontal skew, degrees * 60000. */
2430
2739
  kx?: number;
2431
- /** Vertical skew, degrees * 60000. */
2432
2740
  ky?: number;
2433
- /** Horizontal translation in EMU. */
2434
2741
  tx?: number;
2435
- /** Vertical translation in EMU. */
2436
2742
  ty?: number;
2437
2743
  }
2438
- /** `a:relOff` — CT_RelativeOffsetEffect. Relative offset in 1000ths of a percent. */
2439
2744
  interface EffectDagRelOff {
2440
2745
  kind: 'relOff';
2441
- /** Horizontal offset, percentage * 1000. */
2442
2746
  tx?: number;
2443
- /** Vertical offset, percentage * 1000. */
2444
2747
  ty?: number;
2445
2748
  }
2446
- /**
2447
- * Catch-all leaf preserving any non-container effect (e.g. `a:outerShdw`,
2448
- * `a:glow`, `a:alphaInv`) as raw XML. Re-emitted verbatim on save.
2449
- */
2749
+ /** Typed CT_BlurEffect with its original payload retained for lossless edits. */
2750
+ interface EffectDagBlur {
2751
+ kind: 'blur';
2752
+ radiusEmu?: number;
2753
+ grow?: boolean;
2754
+ xml: XmlObject;
2755
+ }
2756
+ /** Typed CT_AlphaOutsetEffect with original XML retained for lossless edits. */
2757
+ interface EffectDagAlphaOutset {
2758
+ kind: 'alphaOutset';
2759
+ radiusEmu?: number;
2760
+ xml: XmlObject;
2761
+ }
2762
+ /** Typed CT_PresetShadowEffect with colour and extension XML retained verbatim. */
2763
+ interface EffectDagPresetShadow {
2764
+ kind: 'prstShdw';
2765
+ preset?: `shdw${number}`;
2766
+ distanceEmu?: number;
2767
+ direction?: number;
2768
+ xml: XmlObject;
2769
+ }
2450
2770
  interface EffectDagRawLeaf {
2451
2771
  kind: 'raw';
2452
- /** Local element name without the `a:` prefix (e.g. `outerShdw`, `glow`). */
2453
2772
  tag: string;
2454
- /** Raw XML object captured at load — preserved verbatim on save. */
2455
2773
  xml: Record<string, unknown>;
2456
2774
  }
2775
+
2457
2776
  /**
2458
2777
  * Image recolour/adjustment properties parsed from blip extensions.
2459
2778
  *
@@ -2479,6 +2798,8 @@ interface PptxImageEffects {
2479
2798
  duotone?: {
2480
2799
  color1: string;
2481
2800
  color2: string;
2801
+ /** Original effect XML, retained while the resolved colours are unchanged. */
2802
+ rawXml?: XmlObject;
2482
2803
  };
2483
2804
  /** Grayscale flag. */
2484
2805
  grayscale?: boolean;
@@ -2493,8 +2814,10 @@ interface PptxImageEffects {
2493
2814
  artisticEffect?: string;
2494
2815
  /** Artistic effect radius/amount. */
2495
2816
  artisticRadius?: number;
2496
- /** Alpha modulation fixed overall opacity (0-100, where 100 = fully opaque). */
2817
+ /** Alpha modulation fixed: non-negative percentage (100 means unchanged opacity). */
2497
2818
  alphaModFix?: number;
2819
+ /** Original alpha modulation fixed node, including foreign attributes. */
2820
+ alphaModFixRawXml?: XmlObject;
2498
2821
  /** Bi-level threshold — converts to 1-bit black/white (0-100). */
2499
2822
  biLevel?: number;
2500
2823
  /** Colour change — swap one colour range for another (used for transparency keying). */
@@ -2503,7 +2826,13 @@ interface PptxImageEffects {
2503
2826
  clrTo: string;
2504
2827
  /** Whether the target colour is fully transparent (alpha = 0). */
2505
2828
  clrToTransparent?: boolean;
2829
+ /** Original effect XML, including colour transforms and extensions. */
2830
+ rawXml?: XmlObject;
2506
2831
  };
2832
+ /** Original grayscale node, including extension or foreign attributes. */
2833
+ grayscaleRawXml?: XmlObject;
2834
+ /** Original bi-level node, including extension or foreign attributes. */
2835
+ biLevelRawXml?: XmlObject;
2507
2836
  /**
2508
2837
  * Alpha inverse effect (`a:alphaInv`). Inverts the alpha channel; an optional
2509
2838
  * colour child shifts the inversion baseline.
@@ -2511,11 +2840,17 @@ interface PptxImageEffects {
2511
2840
  alphaInv?: {
2512
2841
  /** Optional baseline colour (hex). */
2513
2842
  color?: string;
2843
+ /** Original effect XML, including colour transforms and foreign attributes. */
2844
+ rawXml?: XmlObject;
2514
2845
  };
2515
2846
  /** Alpha ceiling (`a:alphaCeiling`) — clamps any non-zero alpha to fully opaque. Boolean flag. */
2516
2847
  alphaCeiling?: boolean;
2848
+ /** Original alpha ceiling node, including foreign attributes. */
2849
+ alphaCeilingRawXml?: XmlObject;
2517
2850
  /** Alpha floor (`a:alphaFloor`) — clamps any non-fully-opaque alpha to fully transparent. Boolean flag. */
2518
2851
  alphaFloor?: boolean;
2852
+ /** Original alpha floor node, including foreign attributes. */
2853
+ alphaFloorRawXml?: XmlObject;
2519
2854
  /**
2520
2855
  * Alpha modulate (`a:alphaMod`). The schema requires a single `cont` (effect
2521
2856
  * container) child; we preserve the inner XML opaquely for round-trip.
@@ -2523,11 +2858,17 @@ interface PptxImageEffects {
2523
2858
  alphaMod?: {
2524
2859
  /** Raw opaque XML for the `a:cont` child to preserve on save. */
2525
2860
  contRawXml?: Record<string, unknown>;
2861
+ /** Original effect XML, including foreign attributes. */
2862
+ rawXml?: XmlObject;
2526
2863
  };
2527
2864
  /** Alpha replace (`a:alphaRepl`) — replaces alpha with the given fixed-percent value (0..100). */
2528
2865
  alphaRepl?: number;
2866
+ /** Original alpha replace node, including foreign attributes. */
2867
+ alphaReplRawXml?: XmlObject;
2529
2868
  /** Alpha bi-level (`a:alphaBiLevel`) — threshold (0..100) above which alpha becomes fully opaque. */
2530
2869
  alphaBiLevel?: number;
2870
+ /** Original alpha bi-level node, including foreign attributes. */
2871
+ alphaBiLevelRawXml?: XmlObject;
2531
2872
  /**
2532
2873
  * Colour replace (`a:clrRepl`) — replaces all colour information in an image
2533
2874
  * with the given solid colour. Stores the raw colour child to preserve scheme
@@ -2670,6 +3011,7 @@ declare module "./index" {
2670
3011
  *
2671
3012
  * @module pptx-types/media
2672
3013
  */
3014
+
2673
3015
  /**
2674
3016
  * Discriminator for embedded media element types.
2675
3017
  *
@@ -2680,6 +3022,13 @@ declare module "./index" {
2680
3022
  * ```
2681
3023
  */
2682
3024
  type PptxMediaType = 'video' | 'audio' | 'unknown';
3025
+ type PptxMediaReferenceKind = 'audioCd' | 'wavAudioFile' | 'audioFile' | 'videoFile' | 'quickTimeFile';
3026
+ interface PptxAudioCdPosition {
3027
+ track: number;
3028
+ time?: number;
3029
+ /** Original `st` or `end` node, retained for lossless edits. */
3030
+ rawXml?: XmlObject;
3031
+ }
2683
3032
  /**
2684
3033
  * A named bookmark within a media clip timeline.
2685
3034
  *
@@ -2756,6 +3105,112 @@ interface MediaCaptionTrack {
2756
3105
  isDefault?: boolean;
2757
3106
  }
2758
3107
 
3108
+ type PptxSmartArtConstraintRelationship = 'self' | 'ch' | 'des';
3109
+ type PptxSmartArtConstraintOperator = 'none' | 'equ' | 'gte' | 'lte';
3110
+ type PptxSmartArtConstraintPointType = 'all' | 'doc' | 'node' | 'norm' | 'nonNorm' | 'asst' | 'nonAsst' | 'parTrans' | 'pres' | 'sibTrans';
3111
+ interface PptxSmartArtConstraintTarget {
3112
+ for?: PptxSmartArtConstraintRelationship;
3113
+ forName?: string;
3114
+ pointType?: PptxSmartArtConstraintPointType;
3115
+ }
3116
+ /** Editable DiagramML CT_Constraint. */
3117
+ interface PptxSmartArtConstraint extends PptxSmartArtConstraintTarget {
3118
+ type: string;
3119
+ referenceType?: string;
3120
+ referenceFor?: PptxSmartArtConstraintRelationship;
3121
+ referenceForName?: string;
3122
+ referencePointType?: PptxSmartArtConstraintPointType;
3123
+ operator?: PptxSmartArtConstraintOperator;
3124
+ value?: number;
3125
+ factor?: number;
3126
+ /** Original constraint retained for foreign attributes and extension content. */
3127
+ rawXml?: XmlObject;
3128
+ }
3129
+ /** Editable DiagramML CT_NumericRule. */
3130
+ interface PptxSmartArtNumericRule extends PptxSmartArtConstraintTarget {
3131
+ type: string;
3132
+ value?: number;
3133
+ factor?: number;
3134
+ max?: number;
3135
+ /** Original rule retained for foreign attributes and extension content. */
3136
+ rawXml?: XmlObject;
3137
+ }
3138
+
3139
+ /** Typed, editable metadata from a DiagramML layout-definition part. */
3140
+
3141
+ interface PptxSmartArtLocalizedText {
3142
+ value: string;
3143
+ language?: string;
3144
+ }
3145
+ interface PptxSmartArtLayoutCategory {
3146
+ type: string;
3147
+ priority: number;
3148
+ }
3149
+ interface PptxSmartArtAlgorithmParameter {
3150
+ type: string;
3151
+ value?: string;
3152
+ }
3153
+ /** Typed DiagramML CT_Algorithm data attached to a layout node. */
3154
+ interface PptxSmartArtLayoutAlgorithm {
3155
+ type: string;
3156
+ revision?: number;
3157
+ parameters?: PptxSmartArtAlgorithmParameter[];
3158
+ }
3159
+ interface PptxSmartArtIteratorAttributes {
3160
+ name?: string;
3161
+ reference?: string;
3162
+ axis?: string[];
3163
+ pointTypes?: string[];
3164
+ hideLastTransition?: boolean[];
3165
+ start?: number[];
3166
+ count?: number[];
3167
+ step?: number[];
3168
+ }
3169
+ interface PptxSmartArtForEach extends PptxSmartArtIteratorAttributes {
3170
+ rawXml?: XmlObject;
3171
+ }
3172
+ interface PptxSmartArtWhen extends PptxSmartArtIteratorAttributes {
3173
+ function: string;
3174
+ argument?: string;
3175
+ operator: string;
3176
+ value: string;
3177
+ rawXml?: XmlObject;
3178
+ }
3179
+ interface PptxSmartArtChoose {
3180
+ name?: string;
3181
+ when: PptxSmartArtWhen[];
3182
+ otherwise?: {
3183
+ name?: string;
3184
+ rawXml?: XmlObject;
3185
+ } | null;
3186
+ rawXml?: XmlObject;
3187
+ }
3188
+ /** Identity and ordering metadata from DiagramML CT_LayoutNode. */
3189
+ interface PptxSmartArtLayoutNode {
3190
+ name?: string;
3191
+ styleLabel?: string;
3192
+ childOrder?: 'b' | 't';
3193
+ moveWith?: string;
3194
+ algorithm?: PptxSmartArtLayoutAlgorithm;
3195
+ forEach?: PptxSmartArtForEach[];
3196
+ choose?: PptxSmartArtChoose[];
3197
+ constraints?: PptxSmartArtConstraint[];
3198
+ rules?: PptxSmartArtNumericRule[];
3199
+ children?: PptxSmartArtLayoutNode[];
3200
+ }
3201
+ /** Metadata and root node from DiagramML CT_DiagramDefinition. */
3202
+ interface PptxSmartArtLayoutDefinition {
3203
+ uniqueId?: string;
3204
+ minimumVersion?: string;
3205
+ defaultStyle?: string;
3206
+ titles?: PptxSmartArtLocalizedText[];
3207
+ descriptions?: PptxSmartArtLocalizedText[];
3208
+ categories?: PptxSmartArtLayoutCategory[];
3209
+ rootNode: PptxSmartArtLayoutNode;
3210
+ /** Original definition retained for constraint evaluation and foreign rules. */
3211
+ rawXml?: XmlObject;
3212
+ }
3213
+
2759
3214
  /**
2760
3215
  * SmartArt node types: per-run text, per-node visual override, and the
2761
3216
  * data-model node itself. Split out of `smart-art.ts` to keep each type file
@@ -2765,6 +3220,7 @@ interface MediaCaptionTrack {
2765
3220
  *
2766
3221
  * @module pptx-types/smart-art-node
2767
3222
  */
3223
+
2768
3224
  /**
2769
3225
  * A single run of text inside a SmartArt node, capturing the run text and the
2770
3226
  * raw `a:rPr` run-properties object verbatim so per-run formatting (bold,
@@ -2788,6 +3244,54 @@ interface PptxSmartArtTextRun {
2788
3244
  * round-trip. Untyped XML, hence the loose record shape.
2789
3245
  */
2790
3246
  rPr?: Record<string, unknown>;
3247
+ /** Resolved standard shape-text style derived from {@link rPr}. */
3248
+ style?: TextStyle;
3249
+ /** Raw run XML used to retain unmodelled extension children on save. */
3250
+ rawXml?: Record<string, unknown>;
3251
+ /** Original direct-child order, including unmodelled extension children. */
3252
+ childOrder?: string[];
3253
+ }
3254
+ /** An ordered item within a SmartArt text paragraph. */
3255
+ type PptxSmartArtTextParagraphItem = {
3256
+ kind: 'run';
3257
+ run: PptxSmartArtTextRun;
3258
+ } | {
3259
+ kind: 'break';
3260
+ rPr?: Record<string, unknown>;
3261
+ style?: TextStyle;
3262
+ rawXml?: Record<string, unknown>;
3263
+ childOrder?: string[];
3264
+ } | {
3265
+ kind: 'field';
3266
+ id?: string;
3267
+ fieldType?: string;
3268
+ text: string;
3269
+ rPr?: Record<string, unknown>;
3270
+ style?: TextStyle;
3271
+ pPr?: Record<string, unknown>;
3272
+ rawXml?: Record<string, unknown>;
3273
+ childOrder?: string[];
3274
+ } | {
3275
+ kind: 'tab';
3276
+ rawXml?: Record<string, unknown>;
3277
+ childOrder?: string[];
3278
+ } | {
3279
+ kind: 'raw';
3280
+ name: string;
3281
+ value: unknown;
3282
+ };
3283
+ /** A complete `a:p` paragraph in a SmartArt data-model text body. */
3284
+ interface PptxSmartArtTextParagraph {
3285
+ /** Paragraph properties (`a:pPr`) preserved verbatim. */
3286
+ pPr?: Record<string, unknown>;
3287
+ /** Text children in source order. */
3288
+ items: PptxSmartArtTextParagraphItem[];
3289
+ /** End-paragraph run properties (`a:endParaRPr`) preserved verbatim. */
3290
+ endParaRPr?: Record<string, unknown>;
3291
+ /** Resolved style for the paragraph terminator. */
3292
+ endParaStyle?: TextStyle;
3293
+ /** Raw paragraph XML used to retain unmodelled extension children on save. */
3294
+ rawXml?: Record<string, unknown>;
2791
3295
  }
2792
3296
  /**
2793
3297
  * Per-node visual override for a SmartArt node.
@@ -2843,6 +3347,8 @@ interface PptxSmartArtNodeStyle {
2843
3347
  interface PptxSmartArtNode {
2844
3348
  id: string;
2845
3349
  text: string;
3350
+ /** CT_Pt connection identifier, when the point references a connection. */
3351
+ connectionId?: string | null;
2846
3352
  parentId?: string;
2847
3353
  children?: PptxSmartArtNode[];
2848
3354
  /** Node type from `@_type` attribute (e.g. "doc", "node", "asst", "pres"). */
@@ -2855,6 +3361,11 @@ interface PptxSmartArtNode {
2855
3361
  * is not flattened. When {@link text} diverges, the runs are ignored.
2856
3362
  */
2857
3363
  runs?: PptxSmartArtTextRun[];
3364
+ /**
3365
+ * Complete typed paragraph model. Unlike {@link runs}, this retains every
3366
+ * paragraph and the ordered run, field, break, and tab children within it.
3367
+ */
3368
+ paragraphs?: PptxSmartArtTextParagraph[];
2858
3369
  /**
2859
3370
  * Optional per-node visual override (fill / line / font colour, bold /
2860
3371
  * italic). Read at parse time from the point's `spPr` / first-run `rPr`, set
@@ -2864,6 +3375,64 @@ interface PptxSmartArtNode {
2864
3375
  style?: PptxSmartArtNodeStyle;
2865
3376
  }
2866
3377
 
3378
+ /** Editable metadata shared by DiagramML quick-style and color definitions. */
3379
+ interface PptxSmartArtDefinitionText {
3380
+ value: string;
3381
+ language?: string;
3382
+ }
3383
+ interface PptxSmartArtDefinitionCategory {
3384
+ type: string;
3385
+ priority: number;
3386
+ }
3387
+ type PptxSmartArtColorApplicationMethod = 'span' | 'cycle' | 'repeat';
3388
+ type PptxSmartArtHueDirection = 'cw' | 'ccw';
3389
+ /** CT_Colors application metadata. Color-choice children remain preserved XML. */
3390
+ interface PptxSmartArtColorListMetadata {
3391
+ method?: PptxSmartArtColorApplicationMethod;
3392
+ hueDirection?: PptxSmartArtHueDirection;
3393
+ }
3394
+ /** CT_StyleLabel metadata from a quick-style definition. */
3395
+ interface PptxSmartArtQuickStyleLabel {
3396
+ name: string;
3397
+ }
3398
+ /** CT_CTStyleLabel metadata from a color-transform definition. */
3399
+ interface PptxSmartArtColorStyleLabel {
3400
+ name: string;
3401
+ fill?: PptxSmartArtColorListMetadata;
3402
+ line?: PptxSmartArtColorListMetadata;
3403
+ effect?: PptxSmartArtColorListMetadata;
3404
+ textLine?: PptxSmartArtColorListMetadata;
3405
+ textFill?: PptxSmartArtColorListMetadata;
3406
+ textEffect?: PptxSmartArtColorListMetadata;
3407
+ }
3408
+ interface PptxSmartArtDefinitionMetadata {
3409
+ uniqueId?: string;
3410
+ minimumVersion?: string;
3411
+ titles?: PptxSmartArtDefinitionText[];
3412
+ descriptions?: PptxSmartArtDefinitionText[];
3413
+ categories?: PptxSmartArtDefinitionCategory[];
3414
+ }
3415
+ /** Typed CT_ColorTransform metadata and the resolved legacy color palette. */
3416
+ interface PptxSmartArtColorTransform extends PptxSmartArtDefinitionMetadata {
3417
+ /** Legacy resolved display name. */
3418
+ name?: string;
3419
+ /** Ordered resolved fill colors for rendering. */
3420
+ fillColors: string[];
3421
+ /** Ordered resolved line colors for rendering. */
3422
+ lineColors: string[];
3423
+ /** Ordered CT_CTStyleLabel metadata. */
3424
+ labels?: PptxSmartArtColorStyleLabel[];
3425
+ }
3426
+ /** Typed CT_StyleDefinition metadata and legacy rendering hint. */
3427
+ interface PptxSmartArtQuickStyle extends PptxSmartArtDefinitionMetadata {
3428
+ /** Legacy resolved display name. */
3429
+ name?: string;
3430
+ /** Legacy effect-intensity rendering hint. */
3431
+ effectIntensity?: string;
3432
+ /** Ordered CT_StyleLabel metadata. Complex style payload remains preserved XML. */
3433
+ labels?: PptxSmartArtQuickStyleLabel[];
3434
+ }
3435
+
2867
3436
  /**
2868
3437
  * SmartArt types: layout categories, layout presets, colour schemes,
2869
3438
  * data-model nodes/connections, drawing shapes, chrome, and the composite
@@ -2926,6 +3495,8 @@ type SmartArtStyle = 'flat' | 'moderate' | 'intense';
2926
3495
  * ```
2927
3496
  */
2928
3497
  interface PptxSmartArtConnection {
3498
+ /** Stable CT_Cxn model identifier. Required when serialized. */
3499
+ modelId?: string | null;
2929
3500
  /** Model ID of the source node. */
2930
3501
  sourceId: string;
2931
3502
  /** Model ID of the destination node. */
@@ -2936,6 +3507,12 @@ interface PptxSmartArtConnection {
2936
3507
  srcOrd?: number;
2937
3508
  /** Destination index for ordering. */
2938
3509
  destOrd?: number;
3510
+ /** Model ID of the parent transition point associated with this edge. */
3511
+ parentTransitionId?: string | null;
3512
+ /** Model ID of the sibling transition point associated with this edge. */
3513
+ siblingTransitionId?: string | null;
3514
+ /** Layout presentation identifier used by presentation connections. */
3515
+ presentationId?: string | null;
2939
3516
  }
2940
3517
  /**
2941
3518
  * A pre-computed shape from `ppt/diagrams/drawing*.xml`.
@@ -2952,7 +3529,7 @@ interface PptxSmartArtConnection {
2952
3529
  * // => satisfies PptxSmartArtDrawingShape
2953
3530
  * ```
2954
3531
  */
2955
- interface PptxSmartArtDrawingShape {
3532
+ interface PptxSmartArtDrawingShape extends PptxCustomPathProperties {
2956
3533
  /** Shape ID within the drawing. */
2957
3534
  id: string;
2958
3535
  /** Preset geometry type (e.g. "roundRect", "ellipse"). */
@@ -2976,6 +3553,8 @@ interface PptxSmartArtDrawingShape {
2976
3553
  strokeWidth?: number;
2977
3554
  /** Text content of the shape. */
2978
3555
  text?: string;
3556
+ /** Standard rich-text segments projected from the associated SmartArt node. */
3557
+ textSegments?: TextSegment[];
2979
3558
  /** Font size in points. */
2980
3559
  fontSize?: number;
2981
3560
  /** Font colour (hex). */
@@ -3002,45 +3581,6 @@ interface PptxSmartArtChrome {
3002
3581
  /** Outline stroke width in points. */
3003
3582
  outlineWidth?: number;
3004
3583
  }
3005
- /**
3006
- * Colour transform entry from `ppt/diagrams/colors*.xml`.
3007
- *
3008
- * @example
3009
- * ```ts
3010
- * const transform: PptxSmartArtColorTransform = {
3011
- * name: "Colorful - Accent Colors",
3012
- * fillColors: ["#4F81BD", "#C0504D", "#9BBB59"],
3013
- * lineColors: ["#385D8A", "#8C3836", "#71893F"],
3014
- * };
3015
- * // => satisfies PptxSmartArtColorTransform
3016
- * ```
3017
- */
3018
- interface PptxSmartArtColorTransform {
3019
- /** Colour scheme name / title. */
3020
- name?: string;
3021
- /** Ordered list of fill colours (hex) for each node. */
3022
- fillColors: string[];
3023
- /** Ordered list of line colours (hex). */
3024
- lineColors: string[];
3025
- }
3026
- /**
3027
- * Style entry from `ppt/diagrams/quickStyles*.xml`.
3028
- *
3029
- * @example
3030
- * ```ts
3031
- * const qs: PptxSmartArtQuickStyle = {
3032
- * name: "Moderate Effect",
3033
- * effectIntensity: "moderate",
3034
- * };
3035
- * // => satisfies PptxSmartArtQuickStyle
3036
- * ```
3037
- */
3038
- interface PptxSmartArtQuickStyle {
3039
- /** Style name / title. */
3040
- name?: string;
3041
- /** Effect intensity identifier (e.g. "subtle", "moderate", "intense"). */
3042
- effectIntensity?: string;
3043
- }
3044
3584
  /**
3045
3585
  * Complete parsed SmartArt data for a {@link SmartArtPptxElement}.
3046
3586
  *
@@ -3080,14 +3620,28 @@ interface PptxSmartArtData {
3080
3620
  colorTransform?: PptxSmartArtColorTransform;
3081
3621
  /** Quick style from `ppt/diagrams/quickStyles*.xml`. */
3082
3622
  quickStyle?: PptxSmartArtQuickStyle;
3623
+ /** Editable metadata from the related DiagramML layout definition. */
3624
+ layoutDefinition?: PptxSmartArtLayoutDefinition;
3083
3625
  /** Relationship ID for the diagram data part (for round-trip save). */
3084
3626
  dataRelId?: string;
3627
+ /** Relationship ID for the diagram layout part. */
3628
+ layoutRelId?: string;
3085
3629
  /** Relationship ID for the drawing part. */
3086
3630
  drawingRelId?: string;
3087
3631
  /** Relationship ID for the colours part. */
3088
3632
  colorsRelId?: string;
3089
3633
  /** Relationship ID for the quick-styles part. */
3090
3634
  styleRelId?: string;
3635
+ /** Internal save hint: the layout definition changed in the editor. */
3636
+ layoutDirty?: boolean;
3637
+ /** Internal save hint: typed layout-definition metadata changed. */
3638
+ layoutDefinitionDirty?: boolean;
3639
+ /** Internal save hint: quick-style definition metadata changed. */
3640
+ quickStyleDirty?: boolean;
3641
+ /** Internal save hint: color-transform definition metadata changed. */
3642
+ colorTransformDirty?: boolean;
3643
+ /** Internal save hint: cached drawing geometry or text changed in the editor. */
3644
+ drawingDirty?: boolean;
3091
3645
  }
3092
3646
 
3093
3647
  /**
@@ -3696,6 +4250,13 @@ interface MediaPptxElement extends PptxElementBase {
3696
4250
  mediaPath?: string;
3697
4251
  mediaData?: string;
3698
4252
  mediaMimeType?: string;
4253
+ mediaReferenceKind?: PptxMediaReferenceKind;
4254
+ mediaReferenceName?: string;
4255
+ /** Explicit DrawingML `audioFile/@contentType` value when present. */
4256
+ mediaReferenceContentType?: string;
4257
+ audioCdStart?: PptxAudioCdPosition;
4258
+ audioCdEnd?: PptxAudioCdPosition;
4259
+ rawMediaReferenceXml?: XmlObject;
3699
4260
  /** Trim start in milliseconds (from p:cMediaNode p:cTn @st). */
3700
4261
  trimStartMs?: number;
3701
4262
  /** Trim end in milliseconds (from p:cMediaNode p:cTn @end). */
@@ -3816,6 +4377,10 @@ interface ContentPartPptxElement extends PptxElementBase {
3816
4377
  type: 'contentPart';
3817
4378
  /** Ink strokes contained in this content part. */
3818
4379
  inkStrokes?: ContentPartInkStroke[];
4380
+ /** Package path of the related InkML part. */
4381
+ inkPartPath?: string;
4382
+ /** Parsed InkML root retained for unknown-node preservation on dirty save. */
4383
+ inkPartRawXml?: XmlObject;
3819
4384
  }
3820
4385
  /**
3821
4386
  * A Slide Zoom or Section Zoom element (PowerPoint Zoom Object).
@@ -3836,12 +4401,32 @@ interface ContentPartPptxElement extends PptxElementBase {
3836
4401
  */
3837
4402
  interface ZoomPptxElement extends PptxElementBase, PptxImageProperties {
3838
4403
  type: 'zoom';
3839
- /** Type of zoom: slide-level or section-level. */
3840
- zoomType: 'slide' | 'section';
4404
+ /** Type of zoom: slide-level, section-level, or a multi-section summary. */
4405
+ zoomType: 'slide' | 'section' | 'summary';
3841
4406
  /** Zero-based index of the target slide. */
3842
4407
  targetSlideIndex: number;
3843
4408
  /** Section ID for section zoom. */
3844
4409
  targetSectionId?: string;
4410
+ /** Ordered section tiles in a Summary Zoom container. */
4411
+ summaryTargets?: SummaryZoomTarget[];
4412
+ /** Layout mode authored on the Summary Zoom container. */
4413
+ summaryLayout?: 'grid' | 'fixed';
4414
+ }
4415
+ /** A single section tile within a PowerPoint Summary Zoom container. */
4416
+ interface SummaryZoomTarget extends PptxImageProperties {
4417
+ sectionId: string;
4418
+ targetSlideIndex: number;
4419
+ x: number;
4420
+ y: number;
4421
+ width: number;
4422
+ height: number;
4423
+ title?: string;
4424
+ description?: string;
4425
+ offsetFactorX?: number;
4426
+ offsetFactorY?: number;
4427
+ scaleFactorX?: number;
4428
+ scaleFactorY?: number;
4429
+ rawXml?: XmlObject;
3845
4430
  }
3846
4431
  /**
3847
4432
  * A 3D model object embedded via `p16:model3D` inside an
@@ -4120,6 +4705,44 @@ type PptxAnimationTrigger = 'onClick' | 'onShapeClick' | 'onHover' | 'afterPrevi
4120
4705
  * is preserved alongside other animations.
4121
4706
  */
4122
4707
  type PptxNativeAnimationKind = 'media';
4708
+ /** A target selected by `p:tgtEl` in the PresentationML timing model. */
4709
+ type PptxAnimationTarget = {
4710
+ type: 'shape';
4711
+ shapeId: string;
4712
+ rawXml?: XmlObject;
4713
+ } | {
4714
+ type: 'slide';
4715
+ rawXml?: XmlObject;
4716
+ } | {
4717
+ type: 'sound';
4718
+ relationshipId: string;
4719
+ name?: string;
4720
+ rawXml?: XmlObject;
4721
+ } | {
4722
+ type: 'ink';
4723
+ shapeId: string;
4724
+ rawXml?: XmlObject;
4725
+ } | {
4726
+ type: 'unknown';
4727
+ rawXml: XmlObject;
4728
+ };
4729
+ /** Nested build choice carried by `p:bldGraphic`. */
4730
+ type PptxGraphicBuild = {
4731
+ mode: 'asOne';
4732
+ rawXml?: XmlObject;
4733
+ } | {
4734
+ mode: 'sub';
4735
+ kind: 'diagram';
4736
+ build: string;
4737
+ reverse: boolean;
4738
+ rawXml?: XmlObject;
4739
+ } | {
4740
+ mode: 'sub';
4741
+ kind: 'chart';
4742
+ build: string;
4743
+ animateBackground: boolean;
4744
+ rawXml?: XmlObject;
4745
+ };
4123
4746
  /**
4124
4747
  * Parsed native animation record from `p:timing / p:tnLst`.
4125
4748
  *
@@ -4141,6 +4764,8 @@ type PptxNativeAnimationKind = 'media';
4141
4764
  interface PptxNativeAnimation {
4142
4765
  /** Target element/shape ID. */
4143
4766
  targetId?: string;
4767
+ /** Full timing target, including sound and ink target variants. */
4768
+ target?: PptxAnimationTarget;
4144
4769
  /** Trigger type. */
4145
4770
  trigger?: PptxAnimationTrigger;
4146
4771
  /** Shape ID that triggers this animation when clicked (interactive sequence). */
@@ -4245,6 +4870,8 @@ interface PptxNativeAnimation {
4245
4870
  * that aren't OLE charts).
4246
4871
  */
4247
4872
  graphicBuild?: string;
4873
+ /** Schema-accurate `p:bldGraphic/p:bldAsOne|p:bldSub` representation. */
4874
+ graphicBuildProperties?: PptxGraphicBuild;
4248
4875
  /**
4249
4876
  * Opaque map of `p:cTn` attributes that don't have a typed home on this
4250
4877
  * interface but must round-trip through parse → save. Keys are stored
@@ -4361,6 +4988,8 @@ interface AnimationCondition {
4361
4988
  targetShapeId?: string;
4362
4989
  /** Whether the condition targets a slide (from `p:tgtEl/p:sldTgt`). */
4363
4990
  targetSlide?: boolean;
4991
+ /** Full target choice, including `p:sndTgt` and `p:inkTgt`. */
4992
+ target?: PptxAnimationTarget;
4364
4993
  }
4365
4994
  /** Iteration configuration from `p:iterate`. */
4366
4995
  interface PptxAnimationIterate {
@@ -4439,12 +5068,40 @@ interface PptxElementAnimation {
4439
5068
  stopSound?: boolean;
4440
5069
  }
4441
5070
 
5071
+ interface PptxEmbeddedFontDataId {
5072
+ /** Required relationship identifier from `r:id`. */
5073
+ relationshipId?: string | null;
5074
+ /** Original leaf retained for unknown attribute preservation. */
5075
+ rawXml?: XmlObject;
5076
+ }
5077
+ interface PptxEmbeddedFontDescriptor {
5078
+ typeface?: string | null;
5079
+ panose?: string | null;
5080
+ pitchFamily?: string | null;
5081
+ charset?: string | null;
5082
+ rawXml?: XmlObject;
5083
+ }
5084
+ interface PptxEmbeddedFontListEntry {
5085
+ font: PptxEmbeddedFontDescriptor;
5086
+ regular?: PptxEmbeddedFontDataId | null;
5087
+ bold?: PptxEmbeddedFontDataId | null;
5088
+ italic?: PptxEmbeddedFontDataId | null;
5089
+ boldItalic?: PptxEmbeddedFontDataId | null;
5090
+ rawXml?: XmlObject;
5091
+ }
5092
+ interface PptxEmbeddedFontList {
5093
+ fonts: PptxEmbeddedFontListEntry[];
5094
+ /** Original list retained for unknown attribute and child preservation. */
5095
+ rawXml?: XmlObject;
5096
+ }
5097
+
4442
5098
  /**
4443
5099
  * Metadata types: slide comments, compatibility warnings, tags,
4444
5100
  * custom properties, core/app document properties.
4445
5101
  *
4446
5102
  * @module pptx-types/metadata
4447
5103
  */
5104
+
4448
5105
  /**
4449
5106
  * A slide comment — may be a legacy positional comment or a modern
4450
5107
  * threaded comment with replies.
@@ -4464,6 +5121,10 @@ interface PptxElementAnimation {
4464
5121
  interface PptxComment {
4465
5122
  id: string;
4466
5123
  text: string;
5124
+ /** Storage vocabulary used by this comment. Omitted means legacy PresentationML. */
5125
+ format?: 'legacy' | 'modern';
5126
+ /** Stable GUID author identifier used by Office 2021 modern comments. */
5127
+ authorId?: string;
4467
5128
  /** Optional parent comment id for reply threading metadata. */
4468
5129
  parentId?: string;
4469
5130
  author?: string;
@@ -4472,12 +5133,35 @@ interface PptxComment {
4472
5133
  y?: number;
4473
5134
  /** Whether this comment has been resolved/marked done. */
4474
5135
  resolved?: boolean;
5136
+ /** Native p188 status token. */
5137
+ status?: 'active' | 'resolved' | 'closed';
5138
+ /** Modern comment classification tags and author IDs that liked the comment. */
5139
+ tags?: string[];
5140
+ likes?: string[];
5141
+ startDate?: string;
5142
+ dueDate?: string;
5143
+ assignedTo?: string[];
5144
+ /** Task completion in thousandths of a percent, from 0 through 100000. */
5145
+ complete?: number;
5146
+ priority?: number;
5147
+ title?: string;
4475
5148
  /** Modern threaded comment support (p15:threadingInfo). */
4476
5149
  threadId?: string;
4477
5150
  /** Replies to this comment (for modern threaded comments). */
4478
5151
  replies?: PptxComment[];
4479
5152
  /** ID of the element this comment is associated with (if any). */
4480
5153
  elementId?: string;
5154
+ /** Original `p:cm` subtree, retained for unknown child and extension preservation. */
5155
+ rawXml?: XmlObject;
5156
+ }
5157
+ /** Office 2021 comment author from the p188 Author part. */
5158
+ interface PptxModernCommentAuthor {
5159
+ id: string;
5160
+ name: string;
5161
+ initials?: string;
5162
+ userId: string;
5163
+ providerId: string;
5164
+ rawXml?: XmlObject;
4481
5165
  }
4482
5166
  /**
4483
5167
  * A comment author from `ppt/commentAuthors.xml`.
@@ -4510,6 +5194,8 @@ interface PptxCommentAuthor {
4510
5194
  lastIdx: number;
4511
5195
  /** Colour index assigned to this author (`@_clrIdx`). */
4512
5196
  clrIdx: number;
5197
+ /** Original `p:cmAuthor` subtree, retained for unknown attribute preservation. */
5198
+ rawXml?: XmlObject;
4513
5199
  }
4514
5200
  /**
4515
5201
  * A compatibility warning generated during parse or save when the
@@ -4564,9 +5250,17 @@ interface PptxTag {
4564
5250
  */
4565
5251
  interface PptxTagCollection {
4566
5252
  /** File path within the PPTX archive. */
4567
- path: string;
5253
+ path?: string;
5254
+ /** Package owner of the tags relationship. New collections default to presentation. */
5255
+ owner?: 'presentation' | 'slide' | 'part';
5256
+ /** Source OPC part that owns the relationship, e.g. ppt/slides/slide1.xml. */
5257
+ sourcePartPath?: string;
5258
+ /** Durable relationship identifier from the owning part. */
5259
+ relationshipId?: string;
4568
5260
  /** Tags in this collection. */
4569
5261
  tags: PptxTag[];
5262
+ /** Parsed tag-list XML retained for unknown-node preservation. */
5263
+ rawXml?: XmlObject;
4570
5264
  }
4571
5265
  /**
4572
5266
  * A custom document property from `docProps/custom.xml`.
@@ -4671,6 +5365,19 @@ interface PptxAppProperties {
4671
5365
  /** Hyperlink base URL. */
4672
5366
  hyperlinkBase?: string;
4673
5367
  }
5368
+
5369
+ type PptxPrintOutput = 'slides' | 'handouts1' | 'handouts2' | 'handouts3' | 'handouts4' | 'handouts6' | 'handouts9' | 'notes' | 'outline';
5370
+ type PptxPrintColorMode = 'bw' | 'gray' | 'clr';
5371
+ /** PresentationML `CT_PrintProperties` (`p:prnPr`). */
5372
+ interface PptxPresentationPrintProperties {
5373
+ printWhat?: PptxPrintOutput | null;
5374
+ colorMode?: PptxPrintColorMode | null;
5375
+ hiddenSlides?: boolean | null;
5376
+ scaleToFitPaper?: boolean | null;
5377
+ frameSlides?: boolean | null;
5378
+ /** Original subtree retained for unknown attributes and `p:extLst`. */
5379
+ rawXml?: XmlObject;
5380
+ }
4674
5381
  /**
4675
5382
  * Resolved hex values for the 12 theme colour slots.
4676
5383
  *
@@ -4957,6 +5664,8 @@ interface PptxTheme {
4957
5664
  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';
4958
5665
  /** Split orientation from OOXML `@_orient`. */
4959
5666
  type PptxSplitOrientation = 'horz' | 'vert';
5667
+ /** Schema-defined `ST_TransitionSpeed` values. */
5668
+ type PptxTransitionSpeed = 'slow' | 'med' | 'fast';
4960
5669
  /**
4961
5670
  * Slide transition configuration.
4962
5671
  *
@@ -4973,6 +5682,8 @@ type PptxSplitOrientation = 'horz' | 'vert';
4973
5682
  */
4974
5683
  interface PptxSlideTransition {
4975
5684
  type: PptxTransitionType;
5685
+ /** Schema-defined transition speed. Defaults to `fast` when omitted. */
5686
+ speed?: PptxTransitionSpeed;
4976
5687
  durationMs?: number;
4977
5688
  direction?: string;
4978
5689
  advanceOnClick?: boolean;
@@ -4987,6 +5698,10 @@ interface PptxSlideTransition {
4987
5698
  orient?: PptxSplitOrientation;
4988
5699
  /** Relationship ID of transition sound from `p:sndAc/p:stSnd/@r:embed` when present. */
4989
5700
  soundRId?: string;
5701
+ /** Embedded WAV display name from `p:stSnd/p:snd/@name`. */
5702
+ soundName?: string;
5703
+ /** Whether the transition sound repeats until another sound starts. */
5704
+ soundLoop?: boolean;
4990
5705
  /** Resolved transition sound media path within the package. */
4991
5706
  soundPath?: string;
4992
5707
  /** Human-readable sound file name (extracted from soundPath). */
@@ -5000,6 +5715,8 @@ interface PptxSlideTransition {
5000
5715
  rawSoundAction?: XmlObject;
5001
5716
  /** Preserved extension-list XML node from `p:extLst` within the transition for lossless round-trip. */
5002
5717
  rawExtLst?: XmlObject;
5718
+ /** Original transition node, retained to preserve unknown attributes and children. */
5719
+ rawTransition?: XmlObject;
5003
5720
  }
5004
5721
 
5005
5722
  /**
@@ -5019,6 +5736,11 @@ interface PptxViewScale {
5019
5736
  n: number;
5020
5737
  /** Denominator of the scale percentage (e.g. 100 for 100%). */
5021
5738
  d: number;
5739
+ /** Optional independent vertical scale. When absent, the X scale is used. */
5740
+ sy?: {
5741
+ n: number;
5742
+ d: number;
5743
+ };
5022
5744
  }
5023
5745
  /**
5024
5746
  * Origin point for a view (x, y in twips or EMU).
@@ -5027,6 +5749,16 @@ interface PptxViewOrigin {
5027
5749
  x: number;
5028
5750
  y: number;
5029
5751
  }
5752
+ /** A horizontal or vertical drawing guide in slide coordinates. */
5753
+ interface PptxViewGuide {
5754
+ orientation?: 'horz' | 'vert';
5755
+ position?: number;
5756
+ }
5757
+ /** Positive grid spacing from `p:gridSpacing`. */
5758
+ interface PptxGridSpacing {
5759
+ cx: number;
5760
+ cy: number;
5761
+ }
5030
5762
  /**
5031
5763
  * Restored region dimensions for normal view splitter.
5032
5764
  * Represents `p:restoredLeft` or `p:restoredTop`.
@@ -5068,6 +5800,10 @@ interface PptxCommonSlideViewProperties {
5068
5800
  snapToObjects?: boolean;
5069
5801
  /** Whether drawing guides are shown. */
5070
5802
  showGuides?: boolean;
5803
+ /** Whether the application may vary the scale automatically. */
5804
+ variableScale?: boolean;
5805
+ /** Drawing guides shown in this slide view. */
5806
+ guides?: PptxViewGuide[];
5071
5807
  /** View origin (scroll position). */
5072
5808
  origin?: PptxViewOrigin;
5073
5809
  /** View scale. */
@@ -5095,6 +5831,8 @@ interface PptxViewProperties {
5095
5831
  };
5096
5832
  /** Notes view properties. */
5097
5833
  notesViewPr?: PptxCommonSlideViewProperties;
5834
+ /** Grid spacing in positive DrawingML coordinates. */
5835
+ gridSpacing?: PptxGridSpacing;
5098
5836
  /** Raw XML preserved for lossless round-trip of unparsed attributes. */
5099
5837
  rawXml?: Record<string, unknown>;
5100
5838
  }
@@ -5109,12 +5847,16 @@ interface PptxViewProperties {
5109
5847
  * @see ECMA-376 Part 1, §19.2.1.3 (custDataLst), §19.3.1.6 (custData)
5110
5848
  */
5111
5849
  interface PptxCustomerData {
5112
- /** Resolved part path inside the package (e.g. `ppt/customerData/item1.xml`). */
5113
- id: string;
5850
+ /** Resolved part path inside the package (e.g. `customXml/item1.xml`). */
5851
+ id?: string;
5114
5852
  /** Relationship ID referencing the custom data part. */
5115
- relId: string;
5853
+ relId?: string;
5116
5854
  /** Raw string content of the custom data part (if resolvable). */
5117
5855
  data?: string;
5856
+ /** OPC content type for the custom data part. */
5857
+ contentType?: string;
5858
+ /** Raw `p:custData` XML retained for unknown-node preservation. */
5859
+ rawXml?: XmlObject;
5118
5860
  }
5119
5861
  /**
5120
5862
  * An ActiveX control reference from `p:controls / p:control`.
@@ -5239,6 +5981,8 @@ interface PptxSlide {
5239
5981
  /** Optional `<p:cSld @name>` value of the notes slide, for round-trip. */
5240
5982
  notesCSldName?: string;
5241
5983
  comments?: PptxComment[];
5984
+ /** Source package metadata for an Office 2021 p188 comment part. */
5985
+ modernCommentPart?: PptxModernCommentPart;
5242
5986
  warnings?: PptxCompatibilityWarning[];
5243
5987
  rawXml?: XmlObject;
5244
5988
  /** Per-slide colour map override parsed from `p:clrMapOvr`. */
@@ -5257,6 +6001,24 @@ interface PptxSlide {
5257
6001
  activeXControls?: PptxActiveXControl[];
5258
6002
  /** Per-slide header/footer flags from `<p:hf>` (P-H3). */
5259
6003
  headerFooterFlags?: PptxHeaderFooterFlags;
6004
+ /** Server-backed slide synchronization metadata stored in a related OPC part. */
6005
+ slideSynchronization?: PptxSlideSyncProperties;
6006
+ }
6007
+ interface PptxModernCommentPart {
6008
+ path: string;
6009
+ relationshipId: string;
6010
+ /** Original p188:cmLst root, including unknown attributes and extensions. */
6011
+ rawXml?: XmlObject;
6012
+ }
6013
+ /** Metadata from a `p:sldSyncPr` slide synchronization data part. */
6014
+ interface PptxSlideSyncProperties {
6015
+ serverSlideId: string;
6016
+ serverSlideModifiedTime: string;
6017
+ clientInsertedTime: string;
6018
+ extensionList?: XmlObject;
6019
+ rawXml?: XmlObject;
6020
+ partPath?: string;
6021
+ relationshipId?: string;
5260
6022
  }
5261
6023
  /**
5262
6024
  * A slide layout available in the loaded presentation.
@@ -5343,11 +6105,13 @@ interface PptxPresentationProperties {
5343
6105
  showSlidesTo?: number;
5344
6106
  /** Whether to show subtitles/captions during presentation mode. */
5345
6107
  showSubtitles?: boolean;
5346
- /** Print settings: slides per page. */
6108
+ /** Typed `p:prnPr` settings. Set to null during save to remove the element. */
6109
+ printProperties?: PptxPresentationPrintProperties | null;
6110
+ /** @deprecated Use `printProperties.printWhat`; retained as a handout compatibility alias. */
5347
6111
  printSlidesPerPage?: number;
5348
- /** Print settings: frame slides. */
6112
+ /** @deprecated Use `printProperties.frameSlides`. */
5349
6113
  printFrameSlides?: boolean;
5350
- /** Print settings: colour mode (from `p:prnPr/@clrMode`). */
6114
+ /** @deprecated Use `printProperties.colorMode`. */
5351
6115
  printColorMode?: 'clr' | 'gray' | 'bw';
5352
6116
  /** Most-recently-used colours from the presentation palette. */
5353
6117
  mruColors?: string[];
@@ -5384,6 +6148,8 @@ interface PptxCustomShow {
5384
6148
  id: string;
5385
6149
  /** Ordered list of slide relationship IDs included in this custom show. */
5386
6150
  slideRIds: string[];
6151
+ /** Original `p:custShow` subtree used to preserve unmodelled attributes and extensions. */
6152
+ rawXml?: XmlObject;
5387
6153
  }
5388
6154
  /**
5389
6155
  * An ordered section in the presentation (from `p:sectionLst` / `p14:sectionLst`).
@@ -5412,6 +6178,8 @@ interface PptxSection {
5412
6178
  collapsed?: boolean;
5413
6179
  /** Section highlight color hex (from p15:sectionPr/@clr). */
5414
6180
  color?: string;
6181
+ /** Original section subtree used to preserve unmodelled attributes and extensions. */
6182
+ rawXml?: XmlObject;
5415
6183
  }
5416
6184
  /**
5417
6185
  * Write-protection hash data parsed from `p:modifyVerifier` in `presentation.xml`.
@@ -5480,11 +6248,13 @@ interface PptxPhotoAlbum {
5480
6248
  */
5481
6249
  interface PptxKinsoku {
5482
6250
  /** Language code (e.g. "ja-JP", "zh-CN"). */
5483
- lang?: string;
6251
+ lang?: string | null;
5484
6252
  /** Characters that cannot begin a line. */
5485
6253
  invalStChars?: string;
5486
6254
  /** Characters that cannot end a line. */
5487
6255
  invalEndChars?: string;
6256
+ /** Original leaf retained for unknown attribute preservation. */
6257
+ rawXml?: XmlObject;
5488
6258
  }
5489
6259
  /**
5490
6260
  * Root data structure returned by {@link PptxHandlerCore.load}.
@@ -5535,6 +6305,8 @@ interface PptxData {
5535
6305
  isPasswordProtected?: boolean;
5536
6306
  /** Embedded font data (name + binary data URL) extracted from the presentation. */
5537
6307
  embeddedFonts?: PptxEmbeddedFont[];
6308
+ /** Typed `p:embeddedFontLst` package metadata, including unresolved variants. */
6309
+ embeddedFontList?: PptxEmbeddedFontList;
5538
6310
  /** Most-recently-used colour list from presentation properties. */
5539
6311
  mruColors?: string[];
5540
6312
  /** Parsed notes master data if present in the PPTX. */
@@ -5575,6 +6347,8 @@ interface PptxData {
5575
6347
  thumbnailData?: Uint8Array;
5576
6348
  /** Comment authors parsed from `ppt/commentAuthors.xml` for round-trip preservation. */
5577
6349
  commentAuthors?: PptxCommentAuthor[];
6350
+ /** Office 2021 p188 authors from the modern Author part. */
6351
+ modernCommentAuthors?: PptxModernCommentAuthor[];
5578
6352
  /**
5579
6353
  * OOXML conformance class of the loaded file.
5580
6354
  * - `'strict'` -- ISO/IEC 29500 Strict (uses `purl.oclc.org` namespace URIs)
@@ -5867,10 +6641,17 @@ interface ChartSeriesInput {
5867
6641
  name: string;
5868
6642
  values: number[];
5869
6643
  color?: string;
6644
+ boxWhiskerOptions?: PptxChartBoxWhiskerOptions;
6645
+ histogramOptions?: PptxChartHistogramOptions;
6646
+ waterfallOptions?: PptxChartWaterfallOptions;
6647
+ regionMapOptions?: PptxChartRegionMapOptions;
6648
+ treemapOptions?: PptxChartTreemapOptions;
5870
6649
  }
5871
6650
  interface ChartInput {
5872
6651
  series: ChartSeriesInput[];
5873
6652
  categories: string[];
6653
+ /** ChartEx hierarchy levels in leaf-to-root XML order. */
6654
+ categoryLevels?: string[][];
5874
6655
  title?: string;
5875
6656
  hasLegend?: boolean;
5876
6657
  legendPosition?: 't' | 'b' | 'l' | 'r' | 'tr';
@@ -6384,10 +7165,12 @@ interface PptxHandlerSaveOptions {
6384
7165
  slideLayouts?: PptxSlideLayout[];
6385
7166
  /** Updated tag collections to save back to ppt/tags/tag*.xml. */
6386
7167
  tags?: PptxTagCollection[];
7168
+ /** Presentation-level customer data references to author or update. */
7169
+ customerData?: PptxCustomerData[];
6387
7170
  /** Photo album metadata to save back to `p:photoAlbum`. */
6388
7171
  photoAlbum?: PptxPhotoAlbum;
6389
7172
  /** East Asian line-break settings to save back to `p:kinsoku`. */
6390
- kinsoku?: PptxKinsoku;
7173
+ kinsoku?: PptxKinsoku | null;
6391
7174
  /** Write-protection verifier. Set to `null` to remove, `undefined` to preserve existing. */
6392
7175
  modifyVerifier?: PptxModifyVerifier | null;
6393
7176
  /** View properties to save back to ppt/viewProps.xml. */
@@ -6419,6 +7202,8 @@ interface PptxHandlerSaveOptions {
6419
7202
  * preserved (i.e. the default is lossless round-trip).
6420
7203
  */
6421
7204
  embeddedFonts?: PptxEmbeddedFont[];
7205
+ /** Typed embedded-font list metadata. Set to null to remove fonts and relationships. */
7206
+ embeddedFontList?: PptxEmbeddedFontList | null;
6422
7207
  /**
6423
7208
  * OOXML conformance class for the saved output.
6424
7209
  * - `'preserve'` (default): use the same conformance as the loaded file.
@@ -7150,10 +7935,12 @@ type CollaborationRole = 'owner' | 'collaborator' | 'viewer';
7150
7935
  * any signaling server, which makes this mode usable from static hosting.
7151
7936
  */
7152
7937
  type CollaborationTransport = 'websocket' | 'webrtc';
7938
+ /** How the local user entered a collaboration session. */
7939
+ type CollaborationSessionIntent = 'create' | 'join';
7153
7940
  /**
7154
7941
  * Real-time collaboration configuration.
7155
7942
  *
7156
- * The same shape is accepted by the React, Vue, and Angular bindings.
7943
+ * The same shape is accepted by every framework binding.
7157
7944
  */
7158
7945
  interface CollaborationConfig {
7159
7946
  /** Unique identifier for the collaboration room (alphanumeric, hyphens, underscores). */
@@ -7181,6 +7968,13 @@ interface CollaborationConfig {
7181
7968
  authToken?: string;
7182
7969
  /** Role in the session; defaults to `'collaborator'`. */
7183
7970
  role?: CollaborationRole;
7971
+ /**
7972
+ * Whether this client created the room or joined an existing room. Providers
7973
+ * do not use this value, but hosts can use it to avoid publishing local file
7974
+ * bytes when handling a join request. Omitted values retain the legacy
7975
+ * create-session behaviour.
7976
+ */
7977
+ sessionIntent?: CollaborationSessionIntent;
7184
7978
  /**
7185
7979
  * Elected-writer write-back callback (Area 3 of the C3 hardening plan).
7186
7980
  *
@@ -7953,6 +8747,11 @@ interface UseCollaborativeHistoryResult {
7953
8747
  declare function useCollaborativeHistory({ localClientId: _localClientId, handleUndo, handleRedo, canUndo, canRedo }: UseCollaborativeHistoryInput): UseCollaborativeHistoryResult;
7954
8748
  //#endregion
7955
8749
  //#region src/viewer/hooks/presentation-mode/usePresenterWindow.d.ts
8750
+ /**
8751
+ * Parse the session nonce from the current page URL hash. Returns null if the
8752
+ * hash is not in the expected `#pptx-audience&nonce=<uuid>` form.
8753
+ */
8754
+ declare function parseAudienceNonce(): string | null;
7956
8755
  /** Returns true if the current page was opened as an audience tab. */
7957
8756
  declare function isAudienceTab(): boolean;
7958
8757
 
@@ -7983,16 +8782,16 @@ declare const PowerPointViewer: React.ForwardRefExoticComponent<PowerPointViewer
7983
8782
  * Store PPTX content bytes so the audience tab can retrieve them.
7984
8783
  * Called by the presenter before opening the audience window.
7985
8784
  */
7986
- declare function storeAudienceContent(content: ArrayBuffer | Uint8Array): Promise<void>;
8785
+ declare function storeAudienceContent(content: ArrayBuffer | Uint8Array, sessionId?: string): Promise<void>;
7987
8786
  /**
7988
8787
  * Load PPTX content bytes stored by the presenter tab.
7989
8788
  * Returns `null` if nothing is stored.
7990
8789
  */
7991
- declare function loadAudienceContent(): Promise<Uint8Array | null>;
8790
+ declare function loadAudienceContent(sessionId?: string): Promise<Uint8Array | null>;
7992
8791
  /**
7993
8792
  * Remove stored audience content (cleanup).
7994
8793
  */
7995
- declare function clearAudienceContent(): Promise<void>;
8794
+ declare function clearAudienceContent(sessionId?: string): Promise<void>;
7996
8795
  //#endregion
7997
8796
  //#region src/viewer/components/collaboration/CollaborationProvider.d.ts
7998
8797
  interface CollaborationProviderProps {
@@ -8045,5 +8844,5 @@ interface CollaborationStatusIndicatorProps {
8045
8844
  }
8046
8845
  declare function CollaborationStatusIndicator({ status, connectedCount, onRetry }: CollaborationStatusIndicatorProps): React__default.ReactElement;
8047
8846
 
8048
- export { CollaborationProvider, CollaborationStatusIndicator, PowerPointViewer, RemoteUserCursors, UserAvatarBar, clearAudienceContent, getAnimationInitialStyle, isAudienceTab, loadAudienceContent, storeAudienceContent, useCollaborativeHistory, useCollaborativeState, usePresenceTracking, useThemeSwitching, useYjsProvider };
8847
+ export { CollaborationProvider, CollaborationStatusIndicator, PowerPointViewer, RemoteUserCursors, UserAvatarBar, clearAudienceContent, getAnimationInitialStyle, isAudienceTab, loadAudienceContent, parseAudienceNonce, storeAudienceContent, useCollaborativeHistory, useCollaborativeState, usePresenceTracking, useThemeSwitching, useYjsProvider };
8049
8848
  export type { AccessibilityIssue, AnimationPresetOption, CanvasSize, CollaborationConfig, CollaborationContextValue, CollaborationRole, CollaborationStatusIndicatorProps, ConnectionStatus, ConnectorArrowOption, ConnectorGeometryOption, ConnectorGeometryType, ConnectorPathGeometry, DragState, DrawingTool, EditorHistorySnapshot, ElementBounds, ElementClipboardPayload, ElementContextMenuAction, ElementContextMenuState, FileViewerHandle, MarqueeSelectionState, ParsedTableCell, ParsedTableData, PowerPointViewerHandle, PowerPointViewerProps, PresentationAnimationRuntime, RemoteUserCursorsProps, ResizeHandle, ResizeState, ShapeAdjustmentDragState, ShapeAdjustmentHandleDescriptor, ShapePreset, ShapeQuickStyle, ShortcutReferenceItem, SlideAlignment, SlideSectionGroup, SlideTransitionOption, StrokeDashOption, SupportedShapeType, TableCellEditorState, ThemeSwitchingResult, ToolbarSection, UseCollaborativeHistoryResult, UseCollaborativeStateInput, UsePresenceTrackingResult, UseThemeSwitchingInput, UserAvatarBarProps, UserPresence, ViewerMode };