pptx-vanilla-viewer 0.8.0 → 0.9.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.
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import "fast-xml-parser";
2
2
  import "jszip";
3
3
  import "html2canvas-pro";
4
- //#region ../core/dist/presentation-BAMjUmQZ.d.ts
4
+ //#region ../core/dist/presentation-BLbjWKxK.d.ts
5
5
  /**
6
6
  * Action types: hyperlinks, slide jumps, macros, and action buttons.
7
7
  *
@@ -43,6 +43,48 @@ interface PptxAction {
43
43
  /** Resolved media target path for the optional click sound. */
44
44
  soundPath?: string;
45
45
  }
46
+ /**
47
+ * High-level action type for the action settings UI.
48
+ * Maps to OOXML `ppaction://` verbs + external URLs.
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * const type: ElementActionType = "slide";
53
+ * // => "slide" — one of: "none" | "url" | "slide" | "firstSlide" | "lastSlide" | "prevSlide" | "nextSlide" | "endShow"
54
+ * ```
55
+ */
56
+ type ElementActionType = 'none' | 'url' | 'slide' | 'firstSlide' | 'lastSlide' | 'prevSlide' | 'nextSlide' | 'endShow';
57
+ /**
58
+ * User-facing action configuration stored on an element.
59
+ * This is a convenience wrapper around the lower-level `PptxAction` that maps
60
+ * to/from OOXML hyperlink/action attributes.
61
+ *
62
+ * @example
63
+ * ```ts
64
+ * const action: ElementAction = {
65
+ * trigger: "click",
66
+ * type: "url",
67
+ * url: "https://example.com",
68
+ * };
69
+ *
70
+ * const jumpToSlide: ElementAction = {
71
+ * trigger: "click",
72
+ * type: "slide",
73
+ * slideIndex: 5,
74
+ * };
75
+ * // => satisfies ElementAction
76
+ * ```
77
+ */
78
+ interface ElementAction {
79
+ /** When the action fires. */
80
+ trigger: 'click' | 'hover';
81
+ /** What kind of action to perform. */
82
+ type: ElementActionType;
83
+ /** External URL (for 'url' type). */
84
+ url?: string;
85
+ /** Zero-based slide index (for 'slide' type). */
86
+ slideIndex?: number;
87
+ }
46
88
  /**
47
89
  * Shared value types used across the entire PPTX editor type system.
48
90
  *
@@ -357,6 +399,8 @@ interface CustomGeometryPath {
357
399
  * and the text rectangle are not lost when a custGeom is edited and saved.
358
400
  */
359
401
  interface CustomGeometryRawData {
402
+ /** Raw `a:avLst` XML content (adjustment value list). */
403
+ avLstXml?: unknown;
360
404
  /** Raw `a:gdLst` XML content (guide list). */
361
405
  gdLstXml?: unknown;
362
406
  /** Raw `a:ahLst` XML content (adjustment handles). */
@@ -497,7 +541,7 @@ interface PptxCustomPathProperties {
497
541
  pathHeight?: number;
498
542
  /** Structured custom geometry paths for editing (maps to a:custGeom/a:pathLst). */
499
543
  customGeometryPaths?: CustomGeometryPath[];
500
- /** Raw a:gdLst/a:ahLst/a:cxnLst/a:rect XML preserved for round-trip serialization. */
544
+ /** Raw adjustment/guide/handle/connection/text-rectangle XML preserved for serialization. */
501
545
  customGeometryRawData?: CustomGeometryRawData;
502
546
  /**
503
547
  * Typed XY adjustment handles parsed from `a:custGeom/a:ahLst/a:ahXY`.
@@ -705,6 +749,12 @@ type PptxTextWarpPreset = 'textNoShape' | 'textPlain' | 'textStop' | 'textTriang
705
749
  *
706
750
  * @module pptx-types/shape-style
707
751
  */
752
+ interface PptxCustomDashSegment {
753
+ /** Dash length as a non-negative percentage in thousandths of one percent. */
754
+ dash: number;
755
+ /** Space length as a non-negative percentage in thousandths of one percent. */
756
+ space: number;
757
+ }
708
758
  /**
709
759
  * Comprehensive visual style for a shape, connector, or image element.
710
760
  *
@@ -937,11 +987,12 @@ interface ShapeStyle {
937
987
  connectorStartConnection?: ConnectorConnectionPoint;
938
988
  /** Connection point for the end of a connector. */
939
989
  connectorEndConnection?: ConnectorConnectionPoint;
940
- /** Custom dash segments array (`a:custDash/a:ds`). Each entry has dash length and space length in EMU. */
941
- customDashSegments?: Array<{
942
- dash: number;
943
- space: number;
944
- }>;
990
+ /** Custom dash pattern, measured relative to line width in thousandths of one percent. */
991
+ customDashSegments?: PptxCustomDashSegment[];
992
+ /** Original `a:ds` payloads retained by index for lossless edits. */
993
+ customDashSegmentXml?: XmlObject[];
994
+ /** Original `a:custDash` payload retained for lossless edits. */
995
+ customDashXml?: XmlObject;
945
996
  /** 3D scene/camera settings from `a:scene3d`. */
946
997
  scene3d?: Pptx3DScene;
947
998
  /** 3D shape extrusion/bevel from `a:sp3d`. */
@@ -1051,6 +1102,8 @@ interface ShapeStyle {
1051
1102
  * ```
1052
1103
  */
1053
1104
  interface TextStyle {
1105
+ /** Original `a:rPr` XML retained by projections that share the shape-text model. */
1106
+ runPropertiesXml?: XmlObject;
1054
1107
  fontFamily?: string;
1055
1108
  fontSize?: number;
1056
1109
  /** When true, renderer should shrink text to fit the shape bounds. */
@@ -1790,9 +1843,99 @@ interface PptxChartAxisLabelFormatting {
1790
1843
  labelAlignment?: 'ctr' | 'l' | 'r';
1791
1844
  /** Category/date label distance, from 0 through 1000 percent. */
1792
1845
  labelOffset?: number;
1846
+ /** Number of category/date labels between rendered labels. */
1847
+ tickLabelSkip?: number;
1848
+ /** Number of category/date tick positions between major tick marks. */
1849
+ tickMarkSkip?: number;
1793
1850
  /** Suppress multi-level category labels (`c:noMultiLvlLbl`). */
1794
1851
  noMultiLevelLabels?: boolean;
1795
1852
  }
1853
+ interface PptxChartPivotFormat {
1854
+ index: number;
1855
+ shapePropertiesXml?: XmlObject | null;
1856
+ markerXml?: XmlObject | null;
1857
+ dataLabelXml?: XmlObject | null;
1858
+ extensionListXml?: XmlObject | null;
1859
+ rawXml?: XmlObject;
1860
+ }
1861
+ /** Editable classic ChartML `c:pivotFmts` collection. */
1862
+ interface PptxChartPivotFormats {
1863
+ formats: PptxChartPivotFormat[];
1864
+ rawXml?: XmlObject;
1865
+ }
1866
+ /** Editable classic ChartML `c:pivotSource` metadata. */
1867
+ interface PptxChartPivotSource {
1868
+ /** Pivot table reference stored as `c:name` text. */
1869
+ name: string;
1870
+ /** Required unsigned format identifier stored in `c:fmtId/@val`. */
1871
+ formatId: number;
1872
+ /** Internal source subtree used to preserve extensions and foreign markup. */
1873
+ rawXml?: XmlObject;
1874
+ }
1875
+ /** Headers and footers used when a classic ChartML chart is printed. */
1876
+ interface PptxChartPrintHeaderFooter {
1877
+ oddHeader?: string;
1878
+ oddFooter?: string;
1879
+ evenHeader?: string;
1880
+ evenFooter?: string;
1881
+ firstHeader?: string;
1882
+ firstFooter?: string;
1883
+ alignWithMargins?: boolean;
1884
+ differentOddEven?: boolean;
1885
+ differentFirst?: boolean;
1886
+ /** Original subtree retained for foreign attributes and extension children. */
1887
+ rawXml?: unknown;
1888
+ }
1889
+ /** Required page margins from ChartML `c:pageMargins`, measured in inches. */
1890
+ interface PptxChartPageMargins {
1891
+ left: number;
1892
+ right: number;
1893
+ top: number;
1894
+ bottom: number;
1895
+ header: number;
1896
+ footer: number;
1897
+ /** Original leaf retained for foreign attributes. */
1898
+ rawXml?: unknown;
1899
+ }
1900
+ /** Printer page configuration from ChartML `c:pageSetup`. */
1901
+ interface PptxChartPageSetup {
1902
+ paperSize?: number;
1903
+ firstPageNumber?: number;
1904
+ orientation?: 'default' | 'portrait' | 'landscape';
1905
+ blackAndWhite?: boolean;
1906
+ draft?: boolean;
1907
+ useFirstPageNumber?: boolean;
1908
+ horizontalDpi?: number;
1909
+ verticalDpi?: number;
1910
+ copies?: number;
1911
+ /** Original leaf retained for foreign attributes. */
1912
+ rawXml?: unknown;
1913
+ }
1914
+ /** Editable `c:printSettings` content from a classic ChartML chart space. */
1915
+ interface PptxChartPrintSettings {
1916
+ headerFooter?: PptxChartPrintHeaderFooter | null;
1917
+ pageMargins?: PptxChartPageMargins | null;
1918
+ pageSetup?: PptxChartPageSetup | null;
1919
+ /** `null` removes the legacy header/footer drawing relationship element. */
1920
+ legacyDrawingHeaderFooterRelationshipId?: string | null;
1921
+ /** Original subtree retained for unknown and extension content. */
1922
+ rawXml?: unknown;
1923
+ }
1924
+ /** Editable classic ChartML `c:protection` settings. */
1925
+ interface PptxChartProtection {
1926
+ /** Prevent editing the chart object. */
1927
+ chartObject?: boolean | null;
1928
+ /** Prevent editing the chart data. */
1929
+ data?: boolean | null;
1930
+ /** Prevent editing chart formatting. */
1931
+ formatting?: boolean | null;
1932
+ /** Prevent selecting chart elements. */
1933
+ selection?: boolean | null;
1934
+ /** Prevent chart user-interface operations. */
1935
+ userInterface?: boolean | null;
1936
+ /** Internal source subtree used to preserve foreign markup during edits. */
1937
+ rawXml?: XmlObject;
1938
+ }
1796
1939
  /**
1797
1940
  * Chart types: chart categories, series data, style metadata, data tables,
1798
1941
  * trendlines, error bars, and the composite `PptxChartData`.
@@ -1948,6 +2091,7 @@ interface PptxChartUpDownBars {
1948
2091
  /** Marker appearance on a chart series or data point. */
1949
2092
  interface PptxChartMarker {
1950
2093
  symbol: PptxChartMarkerSymbol;
2094
+ /** Marker size in points, constrained by ST_MarkerSize to 2 through 72. */
1951
2095
  size?: number;
1952
2096
  spPr?: PptxChartShapeProps;
1953
2097
  }
@@ -1958,6 +2102,8 @@ interface PptxChartDataPoint {
1958
2102
  explosion?: number;
1959
2103
  invertIfNegative?: boolean;
1960
2104
  marker?: PptxChartMarker;
2105
+ /** Render a bubble-chart point with a 3-D appearance. */
2106
+ bubble3D?: boolean;
1961
2107
  }
1962
2108
  /** Schema values accepted by `c:dLblPos`. */
1963
2109
  type PptxChartDataLabelPosition = 'bestFit' | 'b' | 'ctr' | 'inBase' | 'inEnd' | 'l' | 'outEnd' | 'r' | 't';
@@ -2000,6 +2146,12 @@ interface PptxChartAxisFormatting extends PptxChartAxisLabelFormatting {
2000
2146
  axisId?: number;
2001
2147
  /** Cross-axis identifier — the axis this axis crosses. */
2002
2148
  crossAxisId?: number;
2149
+ /** Automatic crossing mode (`c:crosses`). Mutually exclusive with `crossesAt`. */
2150
+ crosses?: 'autoZero' | 'min' | 'max';
2151
+ /** Explicit crossing value (`c:crossesAt`). Units depend on the axis type. */
2152
+ crossesAt?: number;
2153
+ /** Whether a value axis crosses between or at category tick marks. */
2154
+ crossBetween?: 'between' | 'midCat';
2003
2155
  numFmt?: PptxChartAxisNumFmt;
2004
2156
  titleText?: string;
2005
2157
  spPr?: PptxChartShapeProps;
@@ -2017,6 +2169,8 @@ interface PptxChartAxisFormatting extends PptxChartAxisLabelFormatting {
2017
2169
  min?: number;
2018
2170
  /** Maximum axis value override (c:max/@val). */
2019
2171
  max?: number;
2172
+ /** Axis value direction (`c:scaling/c:orientation/@val`). */
2173
+ orientation?: 'minMax' | 'maxMin';
2020
2174
  /** Whether the axis is deleted/hidden (c:delete/@val). */
2021
2175
  deleted?: boolean;
2022
2176
  /**
@@ -2040,12 +2194,69 @@ interface PptxChartAxisFormatting extends PptxChartAxisLabelFormatting {
2040
2194
  majorUnit?: number;
2041
2195
  /** Minor-unit interval between secondary tick marks (c:minorUnit/@val). */
2042
2196
  minorUnit?: number;
2197
+ /** Calendar unit used to interpret date-axis serial values. */
2198
+ baseTimeUnit?: 'days' | 'months' | 'years';
2199
+ majorTimeUnit?: 'days' | 'months' | 'years';
2200
+ minorTimeUnit?: 'days' | 'months' | 'years';
2043
2201
  }
2044
2202
  /** 3D wall or floor element formatting. */
2045
2203
  interface PptxChart3DSurface {
2046
2204
  thickness?: number;
2047
2205
  spPr?: PptxChartShapeProps;
2048
2206
  }
2207
+ /** Office 2016 ChartEx box-and-whisker series layout options. */
2208
+ interface PptxChartBoxWhiskerOptions {
2209
+ quartileMethod?: 'inclusive' | 'exclusive';
2210
+ showMeanLine?: boolean;
2211
+ showMeanMarker?: boolean;
2212
+ /** Show non-outlier (inner) data points. */
2213
+ showInnerPoints?: boolean;
2214
+ showOutlierPoints?: boolean;
2215
+ }
2216
+ /** Office 2016 ChartEx histogram and Pareto series layout options. */
2217
+ interface PptxChartHistogramOptions {
2218
+ /** Maps to `clusteredColumn` for histogram columns or `paretoLine`. */
2219
+ layout?: 'histogram' | 'pareto';
2220
+ /** Exactly one of binSize and binCount is emitted by the ChartEx writer. */
2221
+ binSize?: number;
2222
+ binCount?: number;
2223
+ intervalClosed?: 'l' | 'r';
2224
+ underflow?: number | 'auto';
2225
+ overflow?: number | 'auto';
2226
+ }
2227
+ /** Office 2016 ChartEx waterfall series layout options. */
2228
+ interface PptxChartWaterfallOptions {
2229
+ /** Zero-based data point indexes rendered as absolute subtotal or total bars. */
2230
+ subtotalIndices?: number[];
2231
+ /** Whether connector lines are visible between adjacent bars. */
2232
+ connectorLines?: boolean;
2233
+ }
2234
+ /** Office 2016 ChartEx geographic series dimensions and layout options. */
2235
+ interface PptxChartRegionMapOptions {
2236
+ /** Optional provider entity identifiers aligned with categories and values. */
2237
+ entityIds?: string[];
2238
+ /** Original `cx:pt/@idx` values for category points. */
2239
+ categorySourceIndices?: number[];
2240
+ /** Original `cx:pt/@idx` values for colour-value points. */
2241
+ valueSourceIndices?: number[];
2242
+ /** Original `cx:pt/@idx` values for entity-ID points. */
2243
+ entityIdSourceIndices?: number[];
2244
+ regionLabelLayout?: 'none' | 'bestFitOnly' | 'showAll';
2245
+ projectionType?: 'mercator' | 'miller' | 'robinson' | 'albers';
2246
+ viewedRegionType?: 'dataOnly' | 'postalCode' | 'county' | 'state' | 'countryRegion' | 'countryRegionList' | 'world';
2247
+ cultureLanguage?: string;
2248
+ /** ISO-3166-1 alpha-2 region code. */
2249
+ cultureRegion?: string;
2250
+ attribution?: string;
2251
+ /** Opaque authored provider cache under `cx:geography/cx:geoCache`. */
2252
+ geographyCache?: XmlObject;
2253
+ }
2254
+ /** Layout for parent category labels in a hierarchical ChartEx treemap. */
2255
+ type PptxChartParentLabelLayout = 'none' | 'banner' | 'overlapping';
2256
+ /** Per-series layout options for an Office 2016+ ChartEx treemap. */
2257
+ interface PptxChartTreemapOptions {
2258
+ parentLabelLayout?: PptxChartParentLabelLayout;
2259
+ }
2049
2260
  /**
2050
2261
  * A single data series within a chart.
2051
2262
  *
@@ -2081,6 +2292,11 @@ interface PptxChartSeries {
2081
2292
  * series.
2082
2293
  */
2083
2294
  seriesChartType?: PptxChartType;
2295
+ boxWhiskerOptions?: PptxChartBoxWhiskerOptions;
2296
+ histogramOptions?: PptxChartHistogramOptions;
2297
+ waterfallOptions?: PptxChartWaterfallOptions;
2298
+ regionMapOptions?: PptxChartRegionMapOptions;
2299
+ treemapOptions?: PptxChartTreemapOptions;
2084
2300
  }
2085
2301
  /**
2086
2302
  * Chart-level data-label options (`c:dLbls` directly under a chart-type
@@ -2286,6 +2502,16 @@ interface PptxEmbeddedWorkbookData {
2286
2502
  name: string;
2287
2503
  values: number[];
2288
2504
  }>;
2505
+ /** Whether the workbook uses the 1904 date system. */
2506
+ date1904?: boolean;
2507
+ }
2508
+ /** Raw numeric category cache used by a classic ChartML date axis. */
2509
+ interface PptxChartDateCategories {
2510
+ values: number[];
2511
+ /** False/default uses Excel's 1900 date system; true uses the 1904 system. */
2512
+ date1904?: boolean;
2513
+ /** Number format copied from the numeric category cache. */
2514
+ formatCode?: string;
2289
2515
  }
2290
2516
  /**
2291
2517
  * Complete parsed chart data for a {@link ChartPptxElement}.
@@ -2309,6 +2535,13 @@ interface PptxChartData {
2309
2535
  title?: string;
2310
2536
  chartType: PptxChartType;
2311
2537
  categories: string[];
2538
+ /**
2539
+ * Hierarchical category levels in source XML order for ChartEx hierarchy charts.
2540
+ * Level 0 contains the leaf labels and remains mirrored by {@link categories}
2541
+ * for consumers that only understand a flat category axis.
2542
+ */
2543
+ categoryLevels?: string[][];
2544
+ dateCategories?: PptxChartDateCategories;
2312
2545
  series: PptxChartSeries[];
2313
2546
  /** Chart style/formatting metadata. */
2314
2547
  style?: PptxChartStyle;
@@ -2345,12 +2578,7 @@ interface PptxChartData {
2345
2578
  * The chart still renders using its cached series data; this field
2346
2579
  * is metadata about the data origin, preserved for round-trip fidelity.
2347
2580
  */
2348
- pivotSource?: {
2349
- /** Pivot table reference name, e.g. "[workbook.xlsx]Sheet1!PivotTable1". */
2350
- name: string;
2351
- /** Format identifier from c:fmtId/@val. */
2352
- formatId?: number;
2353
- };
2581
+ pivotSource?: PptxChartPivotSource | null;
2354
2582
  /**
2355
2583
  * Whether only visible cells are plotted (c:plotVisOnly).
2356
2584
  * When `true` (the default), hidden cells are excluded from the chart.
@@ -2373,6 +2601,12 @@ interface PptxChartData {
2373
2601
  * - `"acrossLinear"` — gradient across series
2374
2602
  */
2375
2603
  colorMethod?: 'cycle' | 'withinLinear' | 'acrossLinear';
2604
+ /** Internal source color-style part path used for lossless dirty saves. */
2605
+ colorStylePartPath?: string;
2606
+ /** Internal parsed palette snapshot used to detect actual edits. */
2607
+ colorStyleOriginalPalette?: string[];
2608
+ /** Internal parsed method snapshot used to detect actual edits. */
2609
+ colorStyleOriginalMethod?: 'cycle' | 'withinLinear' | 'acrossLinear';
2376
2610
  /**
2377
2611
  * Pie-of-pie / Bar-of-pie options (`c:ofPieChart`, CT_OfPieChart).
2378
2612
  *
@@ -2398,6 +2632,10 @@ interface PptxChartData {
2398
2632
  * source data, so absence does not produce empty `<c:…/>` placeholders.
2399
2633
  */
2400
2634
  chartChrome?: PptxChartChrome;
2635
+ /** `c:chartSpace/c:printSettings`; `null` removes the container on save. */
2636
+ printSettings?: PptxChartPrintSettings | null;
2637
+ /** `c:chartSpace/c:protection`; `null` removes the container on save. */
2638
+ protection?: PptxChartProtection | null;
2401
2639
  /** Editable manual placement for the title, plot area, and legend. */
2402
2640
  layouts?: PptxChartLayouts;
2403
2641
  /**
@@ -2416,7 +2654,8 @@ interface PptxChartData {
2416
2654
  * for charts whose data originates from a PivotTable. Preserved
2417
2655
  * verbatim for round-trip fidelity.
2418
2656
  */
2419
- pivotFmtsXml?: unknown;
2657
+ /** Typed pivot-chart format persistence; `null` removes `c:pivotFmts`. */
2658
+ pivotFormats?: PptxChartPivotFormats | null;
2420
2659
  /**
2421
2660
  * Color-map override (`c:clrMapOvr`) carrying 12 attributes that
2422
2661
  * remap theme colour roles for this chart only. Preserved as a flat
@@ -2426,7 +2665,7 @@ interface PptxChartData {
2426
2665
  }
2427
2666
  type EffectDagBlendMode = 'darken' | 'lighten' | 'mult' | 'over' | 'screen';
2428
2667
  type EffectDagContainerType = 'sib' | 'tree';
2429
- type EffectDagNode = EffectDagContainer | EffectDagBlend | EffectDagXfrm | EffectDagRelOff | EffectDagBlur | EffectDagPresetShadow | EffectDagRawLeaf;
2668
+ type EffectDagNode = EffectDagContainer | EffectDagBlend | EffectDagXfrm | EffectDagRelOff | EffectDagBlur | EffectDagAlphaOutset | EffectDagPresetShadow | EffectDagRawLeaf;
2430
2669
  interface EffectDagContainer {
2431
2670
  kind: 'cont';
2432
2671
  type: EffectDagContainerType;
@@ -2459,6 +2698,12 @@ interface EffectDagBlur {
2459
2698
  grow?: boolean;
2460
2699
  xml: XmlObject;
2461
2700
  }
2701
+ /** Typed CT_AlphaOutsetEffect with original XML retained for lossless edits. */
2702
+ interface EffectDagAlphaOutset {
2703
+ kind: 'alphaOutset';
2704
+ radiusEmu?: number;
2705
+ xml: XmlObject;
2706
+ }
2462
2707
  /** Typed CT_PresetShadowEffect with colour and extension XML retained verbatim. */
2463
2708
  interface EffectDagPresetShadow {
2464
2709
  kind: 'prstShdw';
@@ -2497,6 +2742,8 @@ interface PptxImageEffects {
2497
2742
  duotone?: {
2498
2743
  color1: string;
2499
2744
  color2: string;
2745
+ /** Original effect XML, retained while the resolved colours are unchanged. */
2746
+ rawXml?: XmlObject;
2500
2747
  };
2501
2748
  /** Grayscale flag. */
2502
2749
  grayscale?: boolean;
@@ -2511,8 +2758,10 @@ interface PptxImageEffects {
2511
2758
  artisticEffect?: string;
2512
2759
  /** Artistic effect radius/amount. */
2513
2760
  artisticRadius?: number;
2514
- /** Alpha modulation fixed overall opacity (0-100, where 100 = fully opaque). */
2761
+ /** Alpha modulation fixed: non-negative percentage (100 means unchanged opacity). */
2515
2762
  alphaModFix?: number;
2763
+ /** Original alpha modulation fixed node, including foreign attributes. */
2764
+ alphaModFixRawXml?: XmlObject;
2516
2765
  /** Bi-level threshold — converts to 1-bit black/white (0-100). */
2517
2766
  biLevel?: number;
2518
2767
  /** Colour change — swap one colour range for another (used for transparency keying). */
@@ -2521,7 +2770,13 @@ interface PptxImageEffects {
2521
2770
  clrTo: string;
2522
2771
  /** Whether the target colour is fully transparent (alpha = 0). */
2523
2772
  clrToTransparent?: boolean;
2773
+ /** Original effect XML, including colour transforms and extensions. */
2774
+ rawXml?: XmlObject;
2524
2775
  };
2776
+ /** Original grayscale node, including extension or foreign attributes. */
2777
+ grayscaleRawXml?: XmlObject;
2778
+ /** Original bi-level node, including extension or foreign attributes. */
2779
+ biLevelRawXml?: XmlObject;
2525
2780
  /**
2526
2781
  * Alpha inverse effect (`a:alphaInv`). Inverts the alpha channel; an optional
2527
2782
  * colour child shifts the inversion baseline.
@@ -2529,11 +2784,17 @@ interface PptxImageEffects {
2529
2784
  alphaInv?: {
2530
2785
  /** Optional baseline colour (hex). */
2531
2786
  color?: string;
2787
+ /** Original effect XML, including colour transforms and foreign attributes. */
2788
+ rawXml?: XmlObject;
2532
2789
  };
2533
2790
  /** Alpha ceiling (`a:alphaCeiling`) — clamps any non-zero alpha to fully opaque. Boolean flag. */
2534
2791
  alphaCeiling?: boolean;
2792
+ /** Original alpha ceiling node, including foreign attributes. */
2793
+ alphaCeilingRawXml?: XmlObject;
2535
2794
  /** Alpha floor (`a:alphaFloor`) — clamps any non-fully-opaque alpha to fully transparent. Boolean flag. */
2536
2795
  alphaFloor?: boolean;
2796
+ /** Original alpha floor node, including foreign attributes. */
2797
+ alphaFloorRawXml?: XmlObject;
2537
2798
  /**
2538
2799
  * Alpha modulate (`a:alphaMod`). The schema requires a single `cont` (effect
2539
2800
  * container) child; we preserve the inner XML opaquely for round-trip.
@@ -2541,11 +2802,17 @@ interface PptxImageEffects {
2541
2802
  alphaMod?: {
2542
2803
  /** Raw opaque XML for the `a:cont` child to preserve on save. */
2543
2804
  contRawXml?: Record<string, unknown>;
2805
+ /** Original effect XML, including foreign attributes. */
2806
+ rawXml?: XmlObject;
2544
2807
  };
2545
2808
  /** Alpha replace (`a:alphaRepl`) — replaces alpha with the given fixed-percent value (0..100). */
2546
2809
  alphaRepl?: number;
2810
+ /** Original alpha replace node, including foreign attributes. */
2811
+ alphaReplRawXml?: XmlObject;
2547
2812
  /** Alpha bi-level (`a:alphaBiLevel`) — threshold (0..100) above which alpha becomes fully opaque. */
2548
2813
  alphaBiLevel?: number;
2814
+ /** Original alpha bi-level node, including foreign attributes. */
2815
+ alphaBiLevelRawXml?: XmlObject;
2549
2816
  /**
2550
2817
  * Colour replace (`a:clrRepl`) — replaces all colour information in an image
2551
2818
  * with the given solid colour. Stores the raw colour child to preserve scheme
@@ -2701,6 +2968,8 @@ type PptxMediaReferenceKind = 'audioCd' | 'wavAudioFile' | 'audioFile' | 'videoF
2701
2968
  interface PptxAudioCdPosition {
2702
2969
  track: number;
2703
2970
  time?: number;
2971
+ /** Original `st` or `end` node, retained for lossless edits. */
2972
+ rawXml?: XmlObject;
2704
2973
  }
2705
2974
  /**
2706
2975
  * A named bookmark within a media clip timeline.
@@ -2777,6 +3046,36 @@ interface MediaCaptionTrack {
2777
3046
  /** Whether this track is the default/active one. */
2778
3047
  isDefault?: boolean;
2779
3048
  }
3049
+ type PptxSmartArtConstraintRelationship = 'self' | 'ch' | 'des';
3050
+ type PptxSmartArtConstraintOperator = 'none' | 'equ' | 'gte' | 'lte';
3051
+ type PptxSmartArtConstraintPointType = 'all' | 'doc' | 'node' | 'norm' | 'nonNorm' | 'asst' | 'nonAsst' | 'parTrans' | 'pres' | 'sibTrans';
3052
+ interface PptxSmartArtConstraintTarget {
3053
+ for?: PptxSmartArtConstraintRelationship;
3054
+ forName?: string;
3055
+ pointType?: PptxSmartArtConstraintPointType;
3056
+ }
3057
+ /** Editable DiagramML CT_Constraint. */
3058
+ interface PptxSmartArtConstraint extends PptxSmartArtConstraintTarget {
3059
+ type: string;
3060
+ referenceType?: string;
3061
+ referenceFor?: PptxSmartArtConstraintRelationship;
3062
+ referenceForName?: string;
3063
+ referencePointType?: PptxSmartArtConstraintPointType;
3064
+ operator?: PptxSmartArtConstraintOperator;
3065
+ value?: number;
3066
+ factor?: number;
3067
+ /** Original constraint retained for foreign attributes and extension content. */
3068
+ rawXml?: XmlObject;
3069
+ }
3070
+ /** Editable DiagramML CT_NumericRule. */
3071
+ interface PptxSmartArtNumericRule extends PptxSmartArtConstraintTarget {
3072
+ type: string;
3073
+ value?: number;
3074
+ factor?: number;
3075
+ max?: number;
3076
+ /** Original rule retained for foreign attributes and extension content. */
3077
+ rawXml?: XmlObject;
3078
+ }
2780
3079
  /** Typed, editable metadata from a DiagramML layout-definition part. */
2781
3080
  interface PptxSmartArtLocalizedText {
2782
3081
  value: string;
@@ -2786,12 +3085,56 @@ interface PptxSmartArtLayoutCategory {
2786
3085
  type: string;
2787
3086
  priority: number;
2788
3087
  }
3088
+ interface PptxSmartArtAlgorithmParameter {
3089
+ type: string;
3090
+ value?: string;
3091
+ }
3092
+ /** Typed DiagramML CT_Algorithm data attached to a layout node. */
3093
+ interface PptxSmartArtLayoutAlgorithm {
3094
+ type: string;
3095
+ revision?: number;
3096
+ parameters?: PptxSmartArtAlgorithmParameter[];
3097
+ }
3098
+ interface PptxSmartArtIteratorAttributes {
3099
+ name?: string;
3100
+ reference?: string;
3101
+ axis?: string[];
3102
+ pointTypes?: string[];
3103
+ hideLastTransition?: boolean[];
3104
+ start?: number[];
3105
+ count?: number[];
3106
+ step?: number[];
3107
+ }
3108
+ interface PptxSmartArtForEach extends PptxSmartArtIteratorAttributes {
3109
+ rawXml?: XmlObject;
3110
+ }
3111
+ interface PptxSmartArtWhen extends PptxSmartArtIteratorAttributes {
3112
+ function: string;
3113
+ argument?: string;
3114
+ operator: string;
3115
+ value: string;
3116
+ rawXml?: XmlObject;
3117
+ }
3118
+ interface PptxSmartArtChoose {
3119
+ name?: string;
3120
+ when: PptxSmartArtWhen[];
3121
+ otherwise?: {
3122
+ name?: string;
3123
+ rawXml?: XmlObject;
3124
+ } | null;
3125
+ rawXml?: XmlObject;
3126
+ }
2789
3127
  /** Identity and ordering metadata from DiagramML CT_LayoutNode. */
2790
3128
  interface PptxSmartArtLayoutNode {
2791
3129
  name?: string;
2792
3130
  styleLabel?: string;
2793
3131
  childOrder?: 'b' | 't';
2794
3132
  moveWith?: string;
3133
+ algorithm?: PptxSmartArtLayoutAlgorithm;
3134
+ forEach?: PptxSmartArtForEach[];
3135
+ choose?: PptxSmartArtChoose[];
3136
+ constraints?: PptxSmartArtConstraint[];
3137
+ rules?: PptxSmartArtNumericRule[];
2795
3138
  children?: PptxSmartArtLayoutNode[];
2796
3139
  }
2797
3140
  /** Metadata and root node from DiagramML CT_DiagramDefinition. */
@@ -2803,6 +3146,8 @@ interface PptxSmartArtLayoutDefinition {
2803
3146
  descriptions?: PptxSmartArtLocalizedText[];
2804
3147
  categories?: PptxSmartArtLayoutCategory[];
2805
3148
  rootNode: PptxSmartArtLayoutNode;
3149
+ /** Original definition retained for constraint evaluation and foreign rules. */
3150
+ rawXml?: XmlObject;
2806
3151
  }
2807
3152
  /**
2808
3153
  * SmartArt node types: per-run text, per-node visual override, and the
@@ -2836,6 +3181,54 @@ interface PptxSmartArtTextRun {
2836
3181
  * round-trip. Untyped XML, hence the loose record shape.
2837
3182
  */
2838
3183
  rPr?: Record<string, unknown>;
3184
+ /** Resolved standard shape-text style derived from {@link rPr}. */
3185
+ style?: TextStyle;
3186
+ /** Raw run XML used to retain unmodelled extension children on save. */
3187
+ rawXml?: Record<string, unknown>;
3188
+ /** Original direct-child order, including unmodelled extension children. */
3189
+ childOrder?: string[];
3190
+ }
3191
+ /** An ordered item within a SmartArt text paragraph. */
3192
+ type PptxSmartArtTextParagraphItem = {
3193
+ kind: 'run';
3194
+ run: PptxSmartArtTextRun;
3195
+ } | {
3196
+ kind: 'break';
3197
+ rPr?: Record<string, unknown>;
3198
+ style?: TextStyle;
3199
+ rawXml?: Record<string, unknown>;
3200
+ childOrder?: string[];
3201
+ } | {
3202
+ kind: 'field';
3203
+ id?: string;
3204
+ fieldType?: string;
3205
+ text: string;
3206
+ rPr?: Record<string, unknown>;
3207
+ style?: TextStyle;
3208
+ pPr?: Record<string, unknown>;
3209
+ rawXml?: Record<string, unknown>;
3210
+ childOrder?: string[];
3211
+ } | {
3212
+ kind: 'tab';
3213
+ rawXml?: Record<string, unknown>;
3214
+ childOrder?: string[];
3215
+ } | {
3216
+ kind: 'raw';
3217
+ name: string;
3218
+ value: unknown;
3219
+ };
3220
+ /** A complete `a:p` paragraph in a SmartArt data-model text body. */
3221
+ interface PptxSmartArtTextParagraph {
3222
+ /** Paragraph properties (`a:pPr`) preserved verbatim. */
3223
+ pPr?: Record<string, unknown>;
3224
+ /** Text children in source order. */
3225
+ items: PptxSmartArtTextParagraphItem[];
3226
+ /** End-paragraph run properties (`a:endParaRPr`) preserved verbatim. */
3227
+ endParaRPr?: Record<string, unknown>;
3228
+ /** Resolved style for the paragraph terminator. */
3229
+ endParaStyle?: TextStyle;
3230
+ /** Raw paragraph XML used to retain unmodelled extension children on save. */
3231
+ rawXml?: Record<string, unknown>;
2839
3232
  }
2840
3233
  /**
2841
3234
  * Per-node visual override for a SmartArt node.
@@ -2905,6 +3298,11 @@ interface PptxSmartArtNode {
2905
3298
  * is not flattened. When {@link text} diverges, the runs are ignored.
2906
3299
  */
2907
3300
  runs?: PptxSmartArtTextRun[];
3301
+ /**
3302
+ * Complete typed paragraph model. Unlike {@link runs}, this retains every
3303
+ * paragraph and the ordered run, field, break, and tab children within it.
3304
+ */
3305
+ paragraphs?: PptxSmartArtTextParagraph[];
2908
3306
  /**
2909
3307
  * Optional per-node visual override (fill / line / font colour, bold /
2910
3308
  * italic). Read at parse time from the point's `spPr` / first-run `rPr`, set
@@ -3065,7 +3463,7 @@ interface PptxSmartArtConnection {
3065
3463
  * // => satisfies PptxSmartArtDrawingShape
3066
3464
  * ```
3067
3465
  */
3068
- interface PptxSmartArtDrawingShape {
3466
+ interface PptxSmartArtDrawingShape extends PptxCustomPathProperties {
3069
3467
  /** Shape ID within the drawing. */
3070
3468
  id: string;
3071
3469
  /** Preset geometry type (e.g. "roundRect", "ellipse"). */
@@ -3089,6 +3487,8 @@ interface PptxSmartArtDrawingShape {
3089
3487
  strokeWidth?: number;
3090
3488
  /** Text content of the shape. */
3091
3489
  text?: string;
3490
+ /** Standard rich-text segments projected from the associated SmartArt node. */
3491
+ textSegments?: TextSegment[];
3092
3492
  /** Font size in points. */
3093
3493
  fontSize?: number;
3094
3494
  /** Font colour (hex). */
@@ -3784,6 +4184,8 @@ interface MediaPptxElement extends PptxElementBase {
3784
4184
  mediaMimeType?: string;
3785
4185
  mediaReferenceKind?: PptxMediaReferenceKind;
3786
4186
  mediaReferenceName?: string;
4187
+ /** Explicit DrawingML `audioFile/@contentType` value when present. */
4188
+ mediaReferenceContentType?: string;
3787
4189
  audioCdStart?: PptxAudioCdPosition;
3788
4190
  audioCdEnd?: PptxAudioCdPosition;
3789
4191
  rawMediaReferenceXml?: XmlObject;
@@ -3907,6 +4309,10 @@ interface ContentPartPptxElement extends PptxElementBase {
3907
4309
  type: 'contentPart';
3908
4310
  /** Ink strokes contained in this content part. */
3909
4311
  inkStrokes?: ContentPartInkStroke[];
4312
+ /** Package path of the related InkML part. */
4313
+ inkPartPath?: string;
4314
+ /** Parsed InkML root retained for unknown-node preservation on dirty save. */
4315
+ inkPartRawXml?: XmlObject;
3910
4316
  }
3911
4317
  /**
3912
4318
  * A Slide Zoom or Section Zoom element (PowerPoint Zoom Object).
@@ -3927,12 +4333,32 @@ interface ContentPartPptxElement extends PptxElementBase {
3927
4333
  */
3928
4334
  interface ZoomPptxElement extends PptxElementBase, PptxImageProperties {
3929
4335
  type: 'zoom';
3930
- /** Type of zoom: slide-level or section-level. */
3931
- zoomType: 'slide' | 'section';
4336
+ /** Type of zoom: slide-level, section-level, or a multi-section summary. */
4337
+ zoomType: 'slide' | 'section' | 'summary';
3932
4338
  /** Zero-based index of the target slide. */
3933
4339
  targetSlideIndex: number;
3934
4340
  /** Section ID for section zoom. */
3935
4341
  targetSectionId?: string;
4342
+ /** Ordered section tiles in a Summary Zoom container. */
4343
+ summaryTargets?: SummaryZoomTarget[];
4344
+ /** Layout mode authored on the Summary Zoom container. */
4345
+ summaryLayout?: 'grid' | 'fixed';
4346
+ }
4347
+ /** A single section tile within a PowerPoint Summary Zoom container. */
4348
+ interface SummaryZoomTarget extends PptxImageProperties {
4349
+ sectionId: string;
4350
+ targetSlideIndex: number;
4351
+ x: number;
4352
+ y: number;
4353
+ width: number;
4354
+ height: number;
4355
+ title?: string;
4356
+ description?: string;
4357
+ offsetFactorX?: number;
4358
+ offsetFactorY?: number;
4359
+ scaleFactorX?: number;
4360
+ scaleFactorY?: number;
4361
+ rawXml?: XmlObject;
3936
4362
  }
3937
4363
  /**
3938
4364
  * A 3D model object embedded via `p16:model3D` inside an
@@ -4579,6 +5005,32 @@ interface PptxElementAnimation {
4579
5005
  /** Whether to stop any currently playing sound (`p:endSnd`). */
4580
5006
  stopSound?: boolean;
4581
5007
  }
5008
+ interface PptxEmbeddedFontDataId {
5009
+ /** Required relationship identifier from `r:id`. */
5010
+ relationshipId?: string | null;
5011
+ /** Original leaf retained for unknown attribute preservation. */
5012
+ rawXml?: XmlObject;
5013
+ }
5014
+ interface PptxEmbeddedFontDescriptor {
5015
+ typeface?: string | null;
5016
+ panose?: string | null;
5017
+ pitchFamily?: string | null;
5018
+ charset?: string | null;
5019
+ rawXml?: XmlObject;
5020
+ }
5021
+ interface PptxEmbeddedFontListEntry {
5022
+ font: PptxEmbeddedFontDescriptor;
5023
+ regular?: PptxEmbeddedFontDataId | null;
5024
+ bold?: PptxEmbeddedFontDataId | null;
5025
+ italic?: PptxEmbeddedFontDataId | null;
5026
+ boldItalic?: PptxEmbeddedFontDataId | null;
5027
+ rawXml?: XmlObject;
5028
+ }
5029
+ interface PptxEmbeddedFontList {
5030
+ fonts: PptxEmbeddedFontListEntry[];
5031
+ /** Original list retained for unknown attribute and child preservation. */
5032
+ rawXml?: XmlObject;
5033
+ }
4582
5034
  /**
4583
5035
  * Metadata types: slide comments, compatibility warnings, tags,
4584
5036
  * custom properties, core/app document properties.
@@ -4733,9 +5185,17 @@ interface PptxTag {
4733
5185
  */
4734
5186
  interface PptxTagCollection {
4735
5187
  /** File path within the PPTX archive. */
4736
- path: string;
5188
+ path?: string;
5189
+ /** Package owner of the tags relationship. New collections default to presentation. */
5190
+ owner?: 'presentation' | 'slide' | 'part';
5191
+ /** Source OPC part that owns the relationship, e.g. ppt/slides/slide1.xml. */
5192
+ sourcePartPath?: string;
5193
+ /** Durable relationship identifier from the owning part. */
5194
+ relationshipId?: string;
4737
5195
  /** Tags in this collection. */
4738
5196
  tags: PptxTag[];
5197
+ /** Parsed tag-list XML retained for unknown-node preservation. */
5198
+ rawXml?: XmlObject;
4739
5199
  }
4740
5200
  /**
4741
5201
  * A custom document property from `docProps/custom.xml`.
@@ -4840,6 +5300,18 @@ interface PptxAppProperties {
4840
5300
  /** Hyperlink base URL. */
4841
5301
  hyperlinkBase?: string;
4842
5302
  }
5303
+ type PptxPrintOutput = 'slides' | 'handouts1' | 'handouts2' | 'handouts3' | 'handouts4' | 'handouts6' | 'handouts9' | 'notes' | 'outline';
5304
+ type PptxPrintColorMode = 'bw' | 'gray' | 'clr';
5305
+ /** PresentationML `CT_PrintProperties` (`p:prnPr`). */
5306
+ interface PptxPresentationPrintProperties {
5307
+ printWhat?: PptxPrintOutput | null;
5308
+ colorMode?: PptxPrintColorMode | null;
5309
+ hiddenSlides?: boolean | null;
5310
+ scaleToFitPaper?: boolean | null;
5311
+ frameSlides?: boolean | null;
5312
+ /** Original subtree retained for unknown attributes and `p:extLst`. */
5313
+ rawXml?: XmlObject;
5314
+ }
4843
5315
  /**
4844
5316
  * Resolved hex values for the 12 theme colour slots.
4845
5317
  *
@@ -5195,6 +5667,11 @@ interface PptxViewScale {
5195
5667
  n: number;
5196
5668
  /** Denominator of the scale percentage (e.g. 100 for 100%). */
5197
5669
  d: number;
5670
+ /** Optional independent vertical scale. When absent, the X scale is used. */
5671
+ sy?: {
5672
+ n: number;
5673
+ d: number;
5674
+ };
5198
5675
  }
5199
5676
  /**
5200
5677
  * Origin point for a view (x, y in twips or EMU).
@@ -5203,6 +5680,16 @@ interface PptxViewOrigin {
5203
5680
  x: number;
5204
5681
  y: number;
5205
5682
  }
5683
+ /** A horizontal or vertical drawing guide in slide coordinates. */
5684
+ interface PptxViewGuide {
5685
+ orientation?: 'horz' | 'vert';
5686
+ position?: number;
5687
+ }
5688
+ /** Positive grid spacing from `p:gridSpacing`. */
5689
+ interface PptxGridSpacing {
5690
+ cx: number;
5691
+ cy: number;
5692
+ }
5206
5693
  /**
5207
5694
  * Restored region dimensions for normal view splitter.
5208
5695
  * Represents `p:restoredLeft` or `p:restoredTop`.
@@ -5244,6 +5731,10 @@ interface PptxCommonSlideViewProperties {
5244
5731
  snapToObjects?: boolean;
5245
5732
  /** Whether drawing guides are shown. */
5246
5733
  showGuides?: boolean;
5734
+ /** Whether the application may vary the scale automatically. */
5735
+ variableScale?: boolean;
5736
+ /** Drawing guides shown in this slide view. */
5737
+ guides?: PptxViewGuide[];
5247
5738
  /** View origin (scroll position). */
5248
5739
  origin?: PptxViewOrigin;
5249
5740
  /** View scale. */
@@ -5271,6 +5762,8 @@ interface PptxViewProperties {
5271
5762
  };
5272
5763
  /** Notes view properties. */
5273
5764
  notesViewPr?: PptxCommonSlideViewProperties;
5765
+ /** Grid spacing in positive DrawingML coordinates. */
5766
+ gridSpacing?: PptxGridSpacing;
5274
5767
  /** Raw XML preserved for lossless round-trip of unparsed attributes. */
5275
5768
  rawXml?: Record<string, unknown>;
5276
5769
  }
@@ -5284,12 +5777,16 @@ interface PptxViewProperties {
5284
5777
  * @see ECMA-376 Part 1, §19.2.1.3 (custDataLst), §19.3.1.6 (custData)
5285
5778
  */
5286
5779
  interface PptxCustomerData {
5287
- /** Resolved part path inside the package (e.g. `ppt/customerData/item1.xml`). */
5288
- id: string;
5780
+ /** Resolved part path inside the package (e.g. `customXml/item1.xml`). */
5781
+ id?: string;
5289
5782
  /** Relationship ID referencing the custom data part. */
5290
- relId: string;
5783
+ relId?: string;
5291
5784
  /** Raw string content of the custom data part (if resolvable). */
5292
5785
  data?: string;
5786
+ /** OPC content type for the custom data part. */
5787
+ contentType?: string;
5788
+ /** Raw `p:custData` XML retained for unknown-node preservation. */
5789
+ rawXml?: XmlObject;
5293
5790
  }
5294
5791
  /**
5295
5792
  * An ActiveX control reference from `p:controls / p:control`.
@@ -5538,11 +6035,13 @@ interface PptxPresentationProperties {
5538
6035
  showSlidesTo?: number;
5539
6036
  /** Whether to show subtitles/captions during presentation mode. */
5540
6037
  showSubtitles?: boolean;
5541
- /** Print settings: slides per page. */
6038
+ /** Typed `p:prnPr` settings. Set to null during save to remove the element. */
6039
+ printProperties?: PptxPresentationPrintProperties | null;
6040
+ /** @deprecated Use `printProperties.printWhat`; retained as a handout compatibility alias. */
5542
6041
  printSlidesPerPage?: number;
5543
- /** Print settings: frame slides. */
6042
+ /** @deprecated Use `printProperties.frameSlides`. */
5544
6043
  printFrameSlides?: boolean;
5545
- /** Print settings: colour mode (from `p:prnPr/@clrMode`). */
6044
+ /** @deprecated Use `printProperties.colorMode`. */
5546
6045
  printColorMode?: 'clr' | 'gray' | 'bw';
5547
6046
  /** Most-recently-used colours from the presentation palette. */
5548
6047
  mruColors?: string[];
@@ -5679,11 +6178,13 @@ interface PptxPhotoAlbum {
5679
6178
  */
5680
6179
  interface PptxKinsoku {
5681
6180
  /** Language code (e.g. "ja-JP", "zh-CN"). */
5682
- lang?: string;
6181
+ lang?: string | null;
5683
6182
  /** Characters that cannot begin a line. */
5684
6183
  invalStChars?: string;
5685
6184
  /** Characters that cannot end a line. */
5686
6185
  invalEndChars?: string;
6186
+ /** Original leaf retained for unknown attribute preservation. */
6187
+ rawXml?: XmlObject;
5687
6188
  }
5688
6189
  /**
5689
6190
  * Root data structure returned by {@link PptxHandlerCore.load}.
@@ -5734,6 +6235,8 @@ interface PptxData {
5734
6235
  isPasswordProtected?: boolean;
5735
6236
  /** Embedded font data (name + binary data URL) extracted from the presentation. */
5736
6237
  embeddedFonts?: PptxEmbeddedFont[];
6238
+ /** Typed `p:embeddedFontLst` package metadata, including unresolved variants. */
6239
+ embeddedFontList?: PptxEmbeddedFontList;
5737
6240
  /** Most-recently-used colour list from presentation properties. */
5738
6241
  mruColors?: string[];
5739
6242
  /** Parsed notes master data if present in the PPTX. */
@@ -5892,6 +6395,30 @@ interface PptxEmbeddedFont {
5892
6395
  originalPartBytes?: Uint8Array;
5893
6396
  }
5894
6397
  //#endregion
6398
+ //#region ../core/dist/SvgExporter-CxE3LpEi.d.ts
6399
+ /**
6400
+ * Headless SVG exporter — converts parsed {@link PptxSlide} data to
6401
+ * SVG XML strings without requiring a browser DOM.
6402
+ *
6403
+ * All output is generated via string concatenation so the exporter
6404
+ * works in any JavaScript runtime (Node, Bun, Deno, Workers, etc.).
6405
+ *
6406
+ * @module converter/SvgExporter
6407
+ */
6408
+ /**
6409
+ * Options controlling SVG export behaviour.
6410
+ */
6411
+ interface SvgExportOptions {
6412
+ /** Include hidden slides when exporting all. Default `false`. */
6413
+ includeHidden?: boolean;
6414
+ /** Slide indices to export (0-based). If omitted, all slides are exported. */
6415
+ slideIndices?: number[];
6416
+ /** Default font family when the element does not specify one. */
6417
+ defaultFontFamily?: string;
6418
+ /** Default font size in points when the element does not specify one. */
6419
+ defaultFontSize?: number;
6420
+ }
6421
+ //#endregion
5895
6422
  //#region ../core/dist/index.d.ts
5896
6423
  /**
5897
6424
  * Built-in theme presets modelled after common PowerPoint themes.
@@ -6065,10 +6592,17 @@ interface ChartSeriesInput {
6065
6592
  name: string;
6066
6593
  values: number[];
6067
6594
  color?: string;
6595
+ boxWhiskerOptions?: PptxChartBoxWhiskerOptions;
6596
+ histogramOptions?: PptxChartHistogramOptions;
6597
+ waterfallOptions?: PptxChartWaterfallOptions;
6598
+ regionMapOptions?: PptxChartRegionMapOptions;
6599
+ treemapOptions?: PptxChartTreemapOptions;
6068
6600
  }
6069
6601
  interface ChartInput {
6070
6602
  series: ChartSeriesInput[];
6071
6603
  categories: string[];
6604
+ /** ChartEx hierarchy levels in leaf-to-root XML order. */
6605
+ categoryLevels?: string[][];
6072
6606
  title?: string;
6073
6607
  hasLegend?: boolean;
6074
6608
  legendPosition?: 't' | 'b' | 'l' | 'r' | 'tr';
@@ -6574,10 +7108,12 @@ interface PptxHandlerSaveOptions {
6574
7108
  slideLayouts?: PptxSlideLayout[];
6575
7109
  /** Updated tag collections to save back to ppt/tags/tag*.xml. */
6576
7110
  tags?: PptxTagCollection[];
7111
+ /** Presentation-level customer data references to author or update. */
7112
+ customerData?: PptxCustomerData[];
6577
7113
  /** Photo album metadata to save back to `p:photoAlbum`. */
6578
7114
  photoAlbum?: PptxPhotoAlbum;
6579
7115
  /** East Asian line-break settings to save back to `p:kinsoku`. */
6580
- kinsoku?: PptxKinsoku;
7116
+ kinsoku?: PptxKinsoku | null;
6581
7117
  /** Write-protection verifier. Set to `null` to remove, `undefined` to preserve existing. */
6582
7118
  modifyVerifier?: PptxModifyVerifier | null;
6583
7119
  /** View properties to save back to ppt/viewProps.xml. */
@@ -6609,6 +7145,8 @@ interface PptxHandlerSaveOptions {
6609
7145
  * preserved (i.e. the default is lossless round-trip).
6610
7146
  */
6611
7147
  embeddedFonts?: PptxEmbeddedFont[];
7148
+ /** Typed embedded-font list metadata. Set to null to remove fonts and relationships. */
7149
+ embeddedFontList?: PptxEmbeddedFontList | null;
6612
7150
  /**
6613
7151
  * OOXML conformance class for the saved output.
6614
7152
  * - `'preserve'` (default): use the same conformance as the loaded file.
@@ -7590,6 +8128,53 @@ type AnimationGroup = 'entrance' | 'emphasis' | 'exit';
7590
8128
  */
7591
8129
  /** Edge / centre that {@link alignElements} can snap a selection to. */
7592
8130
  type AlignEdge = 'left' | 'centerH' | 'right' | 'top' | 'middle' | 'bottom';
8131
+ /**
8132
+ * Text-field placeholder substitution, shared by every binding's text
8133
+ * renderer.
8134
+ *
8135
+ * Pure string logic: resolves OOXML field runs (slide number, date/time,
8136
+ * header/footer, document properties, slide title) into their display text.
8137
+ * Extracted from the React `viewer/utils/text-field-substitution` module so
8138
+ * every binding substitutes identically.
8139
+ */
8140
+ /** Context for substituting field placeholders (slide number, date/time, header/footer, etc.). */
8141
+ interface FieldSubstitutionContext {
8142
+ slideNumber?: number;
8143
+ dateTimeText?: string;
8144
+ /** OOXML date-format pattern from header/footer settings (e.g. "M/d/yyyy"). */
8145
+ dateFormat?: string;
8146
+ /** Footer text from PptxHeaderFooter settings. */
8147
+ footerText?: string;
8148
+ /** Header text from PptxHeaderFooter settings. */
8149
+ headerText?: string;
8150
+ /** Custom document properties for `docproperty` field substitution (keyed by property name). */
8151
+ customProperties?: ReadonlyArray<{
8152
+ name: string;
8153
+ value: string;
8154
+ }>;
8155
+ /** Locale string for date/time formatting (e.g. "en-US"). Falls back to browser default. */
8156
+ locale?: string;
8157
+ /** Title text extracted from the first title placeholder on the slide. */
8158
+ slideTitle?: string;
8159
+ }
8160
+ /**
8161
+ * Changes to apply to textStyle from the advanced panel.
8162
+ * Every key maps 1-to-1 to TextStyle fields.
8163
+ */
8164
+ type TextAdvancedChanges = Partial<Pick<TextStyle, 'characterSpacing' | 'lineSpacing' | 'lineSpacingExactPt' | 'paragraphSpacingBefore' | 'paragraphSpacingAfter' | 'align' | 'vAlign' | 'paragraphIndent' | 'paragraphMarginLeft' | 'textDirection' | 'rtl'>>;
8165
+ /**
8166
+ * Utilities for reading and restoring text selections within the inline text
8167
+ * editor contentEditable, and for applying style updates to a subset of text
8168
+ * segments based on the current selection. Framework-agnostic (uses DOM globals
8169
+ * only; no framework imports).
8170
+ */
8171
+ /** Describes which segments (and offsets within them) are selected. */
8172
+ interface InlineTextSelection {
8173
+ startSegIdx: number;
8174
+ startOffset: number;
8175
+ endSegIdx: number;
8176
+ endOffset: number;
8177
+ }
7593
8178
  /**
7594
8179
  * "Change Case" text mutation (PowerPoint's Aa dropdown: Sentence case, lower,
7595
8180
  * UPPER, Capitalize Each Word, tOGGLE cASE). Unlike `textCaps` (a purely
@@ -7666,6 +8251,20 @@ interface ViewerFontSource {
7666
8251
  }
7667
8252
  declare function parsePresentationSessionId(hash: string): string | null;
7668
8253
  declare function loadPresentationDeck(sessionId: string): Promise<Uint8Array | null>;
8254
+ /**
8255
+ * alignment-guides.ts: pure helpers for the View > H/V Guides feature
8256
+ * (draggable alignment guides), shared across bindings. Framework-free so it
8257
+ * unit-tests in isolation.
8258
+ *
8259
+ * Distinct from `snap-guides.ts`, which computes snap geometry while dragging;
8260
+ * this module owns the persistent guide list CRUD (`Guide` carries an `id`).
8261
+ */
8262
+ /** A single alignment guide, positioned in authored slide pixels. */
8263
+ interface Guide {
8264
+ id: string;
8265
+ axis: 'h' | 'v';
8266
+ position: number;
8267
+ }
7669
8268
  /**
7670
8269
  * Pure, framework-agnostic helpers for freehand ink drawing, shared by every
7671
8270
  * binding. No framework imports, so these can be unit-tested without TestBed.
@@ -7822,6 +8421,18 @@ type DrawTool = 'select' | 'pen' | 'highlighter' | 'eraser';
7822
8421
  interface ViewerState {
7823
8422
  /** Parsed slides (image/media URLs already patched in by the load pipeline). */
7824
8423
  slides: PptxSlide[];
8424
+ /** Presentation sections used to group slides in the thumbnail rail. */
8425
+ sections: PptxSection[];
8426
+ presentationProperties: PptxPresentationProperties;
8427
+ headerFooter: PptxHeaderFooter;
8428
+ coreProperties?: PptxCoreProperties;
8429
+ appProperties?: PptxAppProperties;
8430
+ customProperties: PptxCustomProperty[];
8431
+ customShows: PptxCustomShow[];
8432
+ embeddedFonts: PptxEmbeddedFont[];
8433
+ hasDigitalSignatures: boolean;
8434
+ digitalSignatureCount: number;
8435
+ isPasswordProtected: boolean;
7825
8436
  /** Inherited layout/master elements, separated so interaction can be gated. */
7826
8437
  templateElementsBySlideId: Record<string, PptxElement[]>;
7827
8438
  /** Parsed slide masters and layouts used by the dedicated master canvas. */
@@ -7831,6 +8442,8 @@ interface ViewerState {
7831
8442
  notesCanvasSize?: CanvasSize;
7832
8443
  /** Parsed handout master. */
7833
8444
  handoutMaster?: PptxHandoutMaster;
8445
+ /** Whether the loaded package contains a VBA project. */
8446
+ hasMacros: boolean;
7834
8447
  /** Active master-workspace tab. */
7835
8448
  masterViewTab: MasterViewTab;
7836
8449
  /** Preview layout used by the handout master workspace. */
@@ -7864,6 +8477,18 @@ interface ViewerState {
7864
8477
  selectedElementId: string | null;
7865
8478
  /** All selected top-level element ids; the primary selection is listed last. */
7866
8479
  selectedElementIds: string[];
8480
+ /** Active table cell for cell-scoped inspector formatting. */
8481
+ selectedTableCell: {
8482
+ row: number;
8483
+ column: number;
8484
+ } | null;
8485
+ /** Shift-select range of active table cells, including the anchor. */
8486
+ selectedTableCells: Array<{
8487
+ row: number;
8488
+ column: number;
8489
+ }>;
8490
+ /** Active rich-text range captured from the inline editor. */
8491
+ selectedTextRange: InlineTextSelection | null;
7867
8492
  /** Source element id while the one-shot Format Painter is armed. */
7868
8493
  formatPainterSourceId: string | null;
7869
8494
  /** When true, selection and element mutations target inherited template elements. */
@@ -7894,6 +8519,13 @@ interface ViewerState {
7894
8519
  drawColor: string;
7895
8520
  /** Stroke width (px) for the pen/highlighter tools. */
7896
8521
  drawWidth: number;
8522
+ showGrid: boolean;
8523
+ showRulers: boolean;
8524
+ snapToGrid: boolean;
8525
+ snapToShape: boolean;
8526
+ guides: Guide[];
8527
+ eyedropperActive: boolean;
8528
+ spellCheckEnabled: boolean;
7897
8529
  }
7898
8530
  //#endregion
7899
8531
  //#region src/viewer/editor/editor-animation-actions.d.ts
@@ -7913,6 +8545,19 @@ interface ViewerState {
7913
8545
  interface AnimationActions {
7914
8546
  addAnimation(group: AnimationGroup, preset: PptxAnimationPreset): void;
7915
8547
  removeAnimation(): void;
8548
+ setAnimationTiming(elementId: string, patch: {
8549
+ durationMs?: number;
8550
+ delayMs?: number;
8551
+ trigger?: PptxAnimationTrigger;
8552
+ direction?: PptxAnimationDirection;
8553
+ sequence?: PptxAnimationSequence;
8554
+ timingCurve?: PptxAnimationTimingCurve;
8555
+ repeatCount?: number;
8556
+ repeatMode?: PptxAnimationRepeatMode | 'none';
8557
+ triggerShapeId?: string;
8558
+ }): void;
8559
+ reorderAnimation(elementId: string, direction: 'up' | 'down'): void;
8560
+ moveAnimation(elementId: string, index: number): void;
7916
8561
  }
7917
8562
  //#endregion
7918
8563
  //#region src/viewer/editor/editor-arrange-actions.d.ts
@@ -8012,6 +8657,13 @@ interface InkActions {
8012
8657
  /** The element kinds the Insert ribbon tab can create directly. */
8013
8658
  type InsertKind = 'text' | 'table' | 'shape';
8014
8659
  //#endregion
8660
+ //#region src/viewer/editor/table-editor-mutations.d.ts
8661
+ interface TableCellPosition {
8662
+ row: number;
8663
+ column: number;
8664
+ }
8665
+ type TableStructureAction = 'insertRowAbove' | 'insertRowBelow' | 'deleteRow' | 'insertColumnLeft' | 'insertColumnRight' | 'deleteColumn';
8666
+ //#endregion
8015
8667
  //#region src/viewer/editor/editor-inspector-actions.d.ts
8016
8668
  /**
8017
8669
  * Element-type-aware inspector actions: text vertical-align/wrap/autofit,
@@ -8020,14 +8672,14 @@ type InsertKind = 'text' | 'table' | 'shape';
8020
8672
  * thin `applyToSelected` wrapper around pure builders from `pptx-viewer-shared`
8021
8673
  * (or the local `patchShapeStyle`), mirroring `editor-text-actions.ts`.
8022
8674
  *
8023
- * These extend the base position/size/rotation + flat fill/stroke inspector
8024
- * that `editor-edit-ops.ts` already exposes; see `ui/inspector/` for the
8025
- * per-element-type panels that call these.
8675
+ * The corresponding panels live under `ui/inspector/`.
8026
8676
  */
8027
8677
  interface InspectorActions {
8028
8678
  setTextVerticalAlign(vAlign: NonNullable<TextStyle['vAlign']>): void;
8029
8679
  setTextWrap(wrap: NonNullable<TextStyle['textWrap']>): void;
8030
8680
  setAutoFitMode(mode: NonNullable<TextStyle['autoFitMode']>): void;
8681
+ setTextAdvanced(patch: TextAdvancedChanges): void;
8682
+ setTextStyle(patch: Partial<TextStyle>, selection?: InlineTextSelection | null): void;
8031
8683
  setFillOpacity(opacity: number): void;
8032
8684
  setStrokeOpacity(opacity: number): void;
8033
8685
  setGradientFill(state: GradientState): void;
@@ -8038,14 +8690,39 @@ interface InspectorActions {
8038
8690
  setImageContrast(value: number): void;
8039
8691
  setImageSaturation(value: number): void;
8040
8692
  setImageCrop(edge: 'left' | 'top' | 'right' | 'bottom', value: number): void;
8693
+ setImageEffects(patch: Partial<PptxImageEffects>): void;
8694
+ setElementAction(trigger: 'click' | 'hover', action: ElementAction): void;
8695
+ setChartData(data: PptxChartData): void;
8696
+ setMediaProperties(patch: Partial<MediaPptxElement>): void;
8041
8697
  setTableHeaderRow(enabled: boolean): void;
8042
8698
  setTableBandedRows(enabled: boolean): void;
8043
8699
  setTableCellPadding(padding: number): void;
8700
+ setTableOptions(patch: Partial<PptxTableData>, cellStyle?: Partial<PptxTableCellStyle>): void;
8701
+ setTableCellStyle(row: number, column: number, patch: Partial<PptxTableCellStyle>): void;
8702
+ setTableCellStyles(cells: TableCellPosition[], patch: Partial<PptxTableCellStyle>): void;
8703
+ mutateTableStructure(cell: TableCellPosition, action: TableStructureAction): void;
8704
+ setTableColumnWidth(column: number, percent: number): void;
8705
+ setTableRowHeight(row: number, height: number): void;
8706
+ mergeTableCells(cells: TableCellPosition[]): void;
8707
+ splitTableCell(cell: TableCellPosition): void;
8044
8708
  setSmartArtNodeText(nodeId: string, text: string): void;
8709
+ setSmartArtNodeStyle(nodeId: string, patch: Partial<PptxSmartArtNodeStyle>): void;
8710
+ mutateSmartArtNode(nodeId: string, action: 'add' | 'addChild' | 'remove' | 'promote' | 'demote'): void;
8045
8711
  setSmartArtLayout(layout: SmartArtLayoutType): void;
8046
8712
  setSmartArtColorScheme(scheme: SmartArtColorScheme): void;
8047
8713
  }
8048
8714
  //#endregion
8715
+ //#region src/viewer/editor/editor-section-actions.d.ts
8716
+ /** History-aware slide section actions exposed to the rail and Home ribbon. */
8717
+ interface SectionActions {
8718
+ addSection(name: string, afterSlideIndex?: number): string | null;
8719
+ renameSection(sectionId: string, name: string): void;
8720
+ deleteSection(sectionId: string): void;
8721
+ moveSection(sectionId: string, direction: 'up' | 'down'): void;
8722
+ moveSlidesToSection(slideIndexes: number[], targetSectionId: string): void;
8723
+ toggleSection(sectionId: string): void;
8724
+ }
8725
+ //#endregion
8049
8726
  //#region src/viewer/editor/editor-slide-actions.d.ts
8050
8727
  /**
8051
8728
  * New/duplicate/delete-slide actions for the ribbon's Home > Slides group,
@@ -8127,11 +8804,15 @@ interface GeometryPatch {
8127
8804
  * -> commit) via the shared {@link EditorOps}.
8128
8805
  */
8129
8806
  interface EditActions extends TextActions, ArrangeActions, ClipboardActions, SlideActions, SlideBackgroundActions, TransitionActions, AnimationActions, InspectorActions, InkActions {
8807
+ /** Slide section CRUD and ordering actions. */
8808
+ sections: SectionActions;
8130
8809
  comments: CommentActions;
8131
8810
  toggleFormatPainter(): void;
8132
8811
  setShapeFill(color: string): void;
8133
8812
  setShapeStroke(color: string): void;
8134
8813
  setShapeStrokeWidth(width: number): void;
8814
+ setShapeStyle(patch: Partial<ShapeStyle>): void;
8815
+ setShapeType(shapeType: string): void;
8135
8816
  /** Commit an inspector geometry edit (X/Y/W/H/rotation). */
8136
8817
  setGeometry(patch: GeometryPatch): void;
8137
8818
  insert(kind: InsertKind, shapeType?: ShapePresetType): void;
@@ -8145,6 +8826,12 @@ interface EditActions extends TextActions, ArrangeActions, ClipboardActions, Sli
8145
8826
  insertField(fieldType: string, value?: string): void;
8146
8827
  duplicateSelected(): void;
8147
8828
  deleteSelected(): void;
8829
+ toggleViewOption(option: 'showGrid' | 'showRulers' | 'snapToGrid' | 'snapToShape'): void;
8830
+ addGuide(axis: Guide['axis']): void;
8831
+ activateEyedropper(): void;
8832
+ toggleSpellCheck(): void;
8833
+ replaceSelectedImage(): Promise<void>;
8834
+ resetSelectedImage(): void;
8148
8835
  }
8149
8836
  //#endregion
8150
8837
  //#region src/viewer/editor/editor-find-replace-actions.d.ts
@@ -8204,6 +8891,8 @@ interface InspectorState {
8204
8891
  canShape: boolean;
8205
8892
  canText: boolean;
8206
8893
  isImage: boolean;
8894
+ isChart: boolean;
8895
+ isMedia: boolean;
8207
8896
  isTable: boolean;
8208
8897
  isSmartArt: boolean;
8209
8898
  smartArtData: PptxSmartArtData | undefined;
@@ -8215,6 +8904,9 @@ interface InspectorState {
8215
8904
  fillColor: string | undefined;
8216
8905
  strokeColor: string | undefined;
8217
8906
  strokeWidth: number;
8907
+ shapeStyle: ShapeStyle | undefined;
8908
+ shapeType: string | undefined;
8909
+ isConnector: boolean;
8218
8910
  fillOpacity: number;
8219
8911
  strokeOpacity: number;
8220
8912
  gradientEnabled: boolean;
@@ -8222,16 +8914,61 @@ interface InspectorState {
8222
8914
  vAlign: 'top' | 'middle' | 'bottom';
8223
8915
  textWrap: 'square' | 'none';
8224
8916
  autoFitMode: 'shrink' | 'normal' | 'none';
8917
+ characterSpacing: number;
8918
+ lineSpacing: number;
8919
+ lineSpacingExactPt: number | null;
8920
+ paragraphSpacingBefore: number;
8921
+ paragraphSpacingAfter: number;
8922
+ paragraphIndent: number;
8923
+ paragraphMarginLeft: number;
8924
+ textDirection: 'horizontal' | 'vertical' | 'vertical270' | 'eaVert' | 'wordArtVert' | 'wordArtVertRtl' | 'mongolianVert';
8925
+ textRtl: boolean;
8926
+ textStyle: TextStyle | undefined;
8927
+ selectedTextRange: InlineTextSelection | null;
8225
8928
  imageBrightness: number;
8226
8929
  imageContrast: number;
8227
8930
  imageSaturation: number;
8931
+ imageArtisticEffect: string;
8932
+ imageTransparency: number;
8933
+ imageBiLevel: number;
8934
+ imageDuotone1: string;
8935
+ imageDuotone2: string;
8936
+ imageColorWash?: {
8937
+ color: string;
8938
+ opacity: number;
8939
+ };
8940
+ actionClick?: ElementAction;
8941
+ actionHover?: ElementAction;
8942
+ chartData?: PptxChartData;
8943
+ media?: MediaPptxElement;
8944
+ mediaPreviewUrl?: string;
8945
+ mediaPosterUrl?: string;
8228
8946
  cropLeft: number;
8229
8947
  cropTop: number;
8230
8948
  cropRight: number;
8231
8949
  cropBottom: number;
8232
8950
  tableHeaderRow: boolean;
8233
8951
  tableBandedRows: boolean;
8952
+ tableBandedColumns: boolean;
8953
+ tableLastRow: boolean;
8954
+ tableFirstCol: boolean;
8955
+ tableLastCol: boolean;
8956
+ tableRtl: boolean;
8957
+ tableStyleId: string;
8958
+ tableCellBackground: string;
8959
+ tableCellBorder: string;
8234
8960
  tableCellPadding: number;
8961
+ selectedTableCell: {
8962
+ row: number;
8963
+ column: number;
8964
+ } | null;
8965
+ selectedTableCells: Array<{
8966
+ row: number;
8967
+ column: number;
8968
+ }>;
8969
+ tableCellStyle: PptxTableCellStyle | undefined;
8970
+ tableColumnWidths: number[];
8971
+ tableRowHeights: number[];
8235
8972
  }
8236
8973
  interface Inspector {
8237
8974
  el: HTMLElement;
@@ -8299,6 +9036,8 @@ interface RibbonSelectionState {
8299
9036
  slideCount: number;
8300
9037
  selectedCount?: number;
8301
9038
  formatPainterActive?: boolean;
9039
+ selectedElementId?: string;
9040
+ animations?: readonly PptxElementAnimation[];
8302
9041
  }
8303
9042
  //#endregion
8304
9043
  //#region src/viewer/ui/mobile-action-sheets.d.ts
@@ -8356,6 +9095,8 @@ interface Ribbon {
8356
9095
  /** Reflect the current Draw tab tool/colour/width (store-driven). */
8357
9096
  setDrawState(state: RibbonDrawState): void;
8358
9097
  setTemplateEditing(active: boolean): void;
9098
+ setHasMacros(hasMacros: boolean): void;
9099
+ setSubtitlesVisible(visible: boolean): void;
8359
9100
  openEquationEditor(id: string, omml: Record<string, unknown>): void;
8360
9101
  }
8361
9102
  //#endregion
@@ -8373,11 +9114,19 @@ interface StatusBar {
8373
9114
  setDirty(dirty: boolean): void;
8374
9115
  }
8375
9116
  //#endregion
9117
+ //#region src/viewer/ui/thumbnail-sections.d.ts
9118
+ interface ThumbnailSectionActions {
9119
+ toggle(sectionId: string): void;
9120
+ rename(sectionId: string, name: string): void;
9121
+ delete(sectionId: string): void;
9122
+ move(sectionId: string, direction: 'up' | 'down'): void;
9123
+ }
9124
+ //#endregion
8376
9125
  //#region src/viewer/ui/thumbnails.d.ts
8377
9126
  interface ThumbnailRail {
8378
9127
  el: HTMLElement;
8379
9128
  /** Rebuild the rail for a new slide list (uses `renderStage` per slide). */
8380
- render(slides: PptxSlide[], canvasSize: CanvasSize, renderStage: (slide: PptxSlide, scale: number) => HTMLElement): void;
9129
+ render(slides: PptxSlide[], canvasSize: CanvasSize, renderStage: (slide: PptxSlide, scale: number) => HTMLElement, sections?: readonly PptxSection[], sectionActions?: ThumbnailSectionActions): void;
8381
9130
  /** Highlight the active slide and scroll it into view. */
8382
9131
  setActive(index: number): void;
8383
9132
  /** Show or hide the rail. */
@@ -8484,7 +9233,13 @@ interface EditorController {
8484
9233
  getFindReplaceActions(): FindReplaceActions;
8485
9234
  commitNotes(notes: string, notesSegments?: TextSegment[]): void;
8486
9235
  setHandoutSlidesPerPage(count: number): void;
8487
- save(): Promise<Uint8Array>;
9236
+ updateDocumentProperties(core: PptxCoreProperties, app: PptxAppProperties, custom: PptxCustomProperty[]): void;
9237
+ updatePresentationProperties(value: PptxPresentationProperties): void;
9238
+ updateHeaderFooter(value: PptxHeaderFooter): void;
9239
+ updateCustomShows(value: PptxCustomShow[]): void;
9240
+ save(format?: PptxSaveFormat): Promise<Uint8Array>;
9241
+ downloadAs(format: PptxSaveFormat, fileName?: string): Promise<void>;
9242
+ packageForSharing(fileName?: string): Promise<void>;
8488
9243
  downloadPptx(fileName?: string): Promise<void>;
8489
9244
  destroy(): void;
8490
9245
  }
@@ -8503,6 +9258,8 @@ interface SyncStageParams {
8503
9258
  slideIndex: number;
8504
9259
  /** True only when the live (fullscreen) presentation stage is active. */
8505
9260
  presenting: boolean;
9261
+ /** Presentation-level switch parsed from `p:showPr`. */
9262
+ showWithAnimation?: boolean;
8506
9263
  }
8507
9264
  /**
8508
9265
  * The presentation-mode playback state machine for the vanilla binding.
@@ -8570,6 +9327,7 @@ interface ElementRenderContext {
8570
9327
  readonly colorScheme?: PptxThemeColorScheme;
8571
9328
  /** Parsed `ppt/tableStyles.xml` definitions used by table band/header styling. */
8572
9329
  readonly tableStyleMap?: ParsedTableStyleMap;
9330
+ readonly fieldContext?: FieldSubstitutionContext;
8573
9331
  /** Shared-dictionary translator (`pptx.*` keys). */
8574
9332
  readonly t: Translator;
8575
9333
  /**
@@ -8584,6 +9342,8 @@ interface ElementRenderContext {
8584
9342
  * slideshow behaviour. `false` for the editor canvas and thumbnail rail.
8585
9343
  */
8586
9344
  readonly presenting: boolean;
9345
+ readonly onSmartArtNodeTextChange?: (element: PptxElement, nodeId: string, text: string) => void;
9346
+ readonly onSmartArtNodeFillChange?: (element: PptxElement, nodeId: string, fill: string) => void;
8587
9347
  /** The registry in effect, for renderers that need to inspect it. */
8588
9348
  readonly registry: ElementRendererRegistry;
8589
9349
  /**
@@ -8661,6 +9421,7 @@ interface SlideStageOptions {
8661
9421
  colorScheme?: PptxThemeColorScheme;
8662
9422
  /** Optional parsed table-style definitions for theme-aware table rendering. */
8663
9423
  tableStyleMap?: ParsedTableStyleMap;
9424
+ fieldContext?: FieldSubstitutionContext;
8664
9425
  registry: ElementRendererRegistry;
8665
9426
  t: Translator;
8666
9427
  /** Scale applied via CSS transform (default 1). */
@@ -8673,6 +9434,8 @@ interface SlideStageOptions {
8673
9434
  slides?: readonly PptxSlide[];
8674
9435
  currentSlideIndex?: number;
8675
9436
  onZoomClick?: (targetSlideIndex: number, returnSlideIndex: number) => void;
9437
+ onSmartArtNodeTextChange?: (element: PptxElement, nodeId: string, text: string) => void;
9438
+ onSmartArtNodeFillChange?: (element: PptxElement, nodeId: string, fill: string) => void;
8676
9439
  /**
8677
9440
  * True only for the main (interactive) canvas, never the thumbnail rail.
8678
9441
  * Marks every rendered element (recursively, including group children) with
@@ -8868,6 +9631,12 @@ interface ExportPdfOptions {
8868
9631
  signal?: AbortSignal;
8869
9632
  }
8870
9633
  //#endregion
9634
+ //#region src/viewer/export/export-svg.d.ts
9635
+ /** Export one parsed slide as resolution-independent SVG markup. */
9636
+ declare function exportSlideToSvg(slide: PptxSlide, width: number, height: number, options?: SvgExportOptions): string;
9637
+ /** Export the selected slides in a parsed presentation as SVG markup. */
9638
+ declare function exportAllSlidesToSvg(data: PptxData, options?: SvgExportOptions): string[];
9639
+ //#endregion
8871
9640
  //#region src/viewer/load/source.d.ts
8872
9641
  /**
8873
9642
  * Content sources accepted by the vanilla viewer: raw bytes, a Blob/File, or
@@ -9046,7 +9815,11 @@ interface PptxViewerInstance extends PowerPointViewerAPI {
9046
9815
  canUndo(): boolean;
9047
9816
  canRedo(): boolean;
9048
9817
  /** Serialise the (edited) presentation to `.pptx` bytes and clear dirty. */
9049
- save(): Promise<Uint8Array>;
9818
+ save(format?: PptxSaveFormat): Promise<Uint8Array>;
9819
+ /** Save and download a presentation in a supported OpenXML format. */
9820
+ downloadAs(format: PptxSaveFormat, fileName?: string): Promise<void>;
9821
+ /** Bundle the current presentation and usage notes in a shareable ZIP. */
9822
+ packageForSharing(fileName?: string): Promise<void>;
9050
9823
  /** `save()` + trigger a browser download (default `presentation.pptx`). */
9051
9824
  downloadPptx(fileName?: string): Promise<void>;
9052
9825
  /** Delete the selected element (no-op without a selection). */
@@ -9059,6 +9832,8 @@ interface PptxViewerInstance extends PowerPointViewerAPI {
9059
9832
  * (dynamically imported), so the first call pays a one-time load cost.
9060
9833
  */
9061
9834
  exportSlidePng(index?: number): Promise<void>;
9835
+ /** Copy a slide to the system clipboard as a PNG image. */
9836
+ copySlideAsImage(index?: number): Promise<void>;
9062
9837
  /**
9063
9838
  * Export every slide as a multi-page PDF download (one slide per page).
9064
9839
  * `jspdf` is dynamically imported on first use.
@@ -9148,6 +9923,8 @@ interface ChromeHost {
9148
9923
  redo(): void;
9149
9924
  toggleAutosave(): boolean;
9150
9925
  downloadPptx(): Promise<void>;
9926
+ downloadAs(format: PptxSaveFormat): Promise<void>;
9927
+ packageForSharing(): Promise<void>;
9151
9928
  toggleNotes(): void;
9152
9929
  goToSlide(index: number): void;
9153
9930
  getSlideCount(): number;
@@ -9155,15 +9932,38 @@ interface ChromeHost {
9155
9932
  openPresenterView(): void;
9156
9933
  exitPresentation(): Promise<void>;
9157
9934
  openBroadcast(): void;
9935
+ openShare(): void;
9158
9936
  openAccessibility(): void;
9937
+ openSettings(tab?: 'general' | 'shortcuts'): void;
9938
+ openHeaderFooter(): void;
9939
+ openCompare(): void;
9940
+ openSetUpSlideShow(): void;
9941
+ startRehearsal(): void;
9942
+ toggleSubtitles(): void;
9943
+ openSelectionPane(): void;
9944
+ openSlideSorter(): void;
9945
+ openComments(): void;
9946
+ openHyperlink(): void;
9947
+ openCustomShows(): void;
9948
+ openDocumentProperties(): void;
9949
+ openFontEmbedding(): void;
9950
+ openDigitalSignatures(): void;
9951
+ openPasswordProtection(): void;
9952
+ openVersionHistory(): void;
9159
9953
  toggleTemplateEditing(): void;
9160
9954
  toggleMasterNavigation(): void;
9161
9955
  exportSlidePng(): Promise<void>;
9956
+ copySlideAsImage(): Promise<void>;
9162
9957
  exportPdf(): Promise<void>;
9163
9958
  exportGif(): Promise<void>;
9164
9959
  exportVideo(): Promise<void>;
9165
9960
  print(): Promise<boolean>;
9961
+ openPrintDialog(): void;
9962
+ openFile(): void;
9963
+ openRecentFile(key: string): void;
9964
+ createPresentation(templateId: string): void;
9166
9965
  setTheme(theme: ViewerTheme | undefined): void;
9966
+ applyPresentationTheme(presetId: string): void;
9167
9967
  }
9168
9968
  //#endregion
9169
9969
  //#region src/viewer/export-lifecycle.d.ts
@@ -9171,6 +9971,8 @@ interface ChromeHost {
9171
9971
  interface ViewerExportApi {
9172
9972
  /** Export a single slide as a PNG download. Defaults to the current slide. */
9173
9973
  exportSlidePng(index?: number): Promise<void>;
9974
+ /** Copy a slide to the system clipboard as a PNG image. */
9975
+ copySlideAsImage(index?: number): Promise<void>;
9174
9976
  /** Export every slide as a multi-page PDF download (one slide per page). */
9175
9977
  exportPdf(options?: ExportPdfOptions): Promise<void>;
9176
9978
  /** Export every slide as an animated GIF download (one frame per slide). */
@@ -9193,6 +9995,7 @@ interface ExportLifecycle extends ViewerExportApi {
9193
9995
  declare abstract class ViewerExportHost implements ViewerExportApi {
9194
9996
  protected abstract readonly exporter: ExportLifecycle;
9195
9997
  exportSlidePng(index?: number): Promise<void>;
9998
+ copySlideAsImage(index?: number): Promise<void>;
9196
9999
  exportPdf(options?: ExportPdfOptions): Promise<void>;
9197
10000
  exportGif(options?: ExportGifOptions): Promise<void>;
9198
10001
  exportVideo(options?: ExportVideoOptions): Promise<void>;
@@ -9227,8 +10030,16 @@ declare class PptxViewer extends ViewerExportHost implements PptxViewerInstance,
9227
10030
  private presenterSnapshot;
9228
10031
  private disposePresenterConsole;
9229
10032
  private userFontsStyle;
10033
+ private embedFontsEnabled;
10034
+ private signatureWarningAcknowledged;
10035
+ private detachSignatureWarning;
10036
+ private annotations;
10037
+ private parityWorkflows;
9230
10038
  constructor(container: HTMLElement, options?: PptxViewerOptions);
9231
10039
  loadFile(file: Blob | ArrayBuffer | Uint8Array): Promise<void>;
10040
+ openFile(): void;
10041
+ openRecentFile(key: string): void;
10042
+ createPresentation(templateId: string): void;
9232
10043
  loadUrl(url: string): Promise<void>;
9233
10044
  next: () => void;
9234
10045
  prev: () => void;
@@ -9270,8 +10081,27 @@ declare class PptxViewer extends ViewerExportHost implements PptxViewerInstance,
9270
10081
  /** Expand/collapse the speaker-notes panel; persists for the instance's life. */
9271
10082
  toggleNotes(): void;
9272
10083
  setTheme(theme: ViewerTheme | undefined): void;
10084
+ applyPresentationTheme(presetId: string): void;
9273
10085
  /** Run the shared WCAG checks against the live deck and show the results. */
9274
10086
  openAccessibility(): void;
10087
+ openSettings(tab?: 'general' | 'shortcuts'): void;
10088
+ openSetUpSlideShow(): void;
10089
+ toggleSubtitles(): void;
10090
+ openHeaderFooter(): void;
10091
+ openCompare(): void;
10092
+ openPrintDialog(): void;
10093
+ startRehearsal(): void;
10094
+ openSelectionPane(): void;
10095
+ openSlideSorter(): void;
10096
+ openComments(): void;
10097
+ openHyperlink(): void;
10098
+ openCustomShows(): void;
10099
+ /** Open the document metadata editor backed by the current loaded deck. */
10100
+ openDocumentProperties(): void;
10101
+ openFontEmbedding(): void;
10102
+ openDigitalSignatures(): void;
10103
+ openPasswordProtection(): void;
10104
+ openVersionHistory(): void;
9275
10105
  /** Open a clean audience display while retaining this editor as the presenter surface. */
9276
10106
  openPresenterView(): void;
9277
10107
  private getPresenterChannel;
@@ -9290,8 +10120,10 @@ declare class PptxViewer extends ViewerExportHost implements PptxViewerInstance,
9290
10120
  toggleAutosave(): boolean;
9291
10121
  canUndo: () => boolean;
9292
10122
  canRedo: () => boolean;
9293
- save(): Promise<Uint8Array>;
10123
+ save(format?: PptxSaveFormat): Promise<Uint8Array>;
10124
+ downloadAs(format: PptxSaveFormat, fileName?: string): Promise<void>;
9294
10125
  downloadPptx(fileName?: string): Promise<void>;
10126
+ packageForSharing(fileName?: string): Promise<void>;
9295
10127
  deleteSelected: () => void;
9296
10128
  getSelectedElementId: () => string | null;
9297
10129
  enterPresentation(): Promise<void>;
@@ -9305,6 +10137,7 @@ declare class PptxViewer extends ViewerExportHost implements PptxViewerInstance,
9305
10137
  setAutosaveEnabled(enabled: boolean): void;
9306
10138
  isAutosaveEnabled: () => boolean;
9307
10139
  openBroadcast(): void;
10140
+ openShare(): void;
9308
10141
  destroy(): void;
9309
10142
  private remountChrome;
9310
10143
  }
@@ -9340,5 +10173,5 @@ type TranslationKey = keyof typeof translationsEn;
9340
10173
  */
9341
10174
  declare function keyToLabel(key: string): string;
9342
10175
  //#endregion
9343
- export { type AutosaveRecord, type AutosaveStatus, type CollaborationConfig, type CollaborationRole, type CollaborationTransport, type ConnectionStatus, type CssStyleMap, type ElementRenderContext, type ElementRenderer, type ElementRendererRegistry, type ExportGifOptions, type ExportPdfOptions, type ExportProgress, type ExportVideoOptions, type OpenPrintWindow, type PptxElement, type PptxElementType, type PptxHandler, type PptxSlide, PptxViewer, type PptxViewerCallbacks, type PptxViewerInstance, type PptxViewerOptions, type PptxViewerSource, type PrintOptions, type SlideStageOptions, type TranslationKey, type TranslationMessages, type Translator, type ViewerState, type ViewerTheme, type ViewerThemeColors, type ZoomLevel, applyStyleMap, createDefaultRegistry, createEl, createElementRendererRegistry, createPptxViewer, createSvgEl, createTranslator, defaultCssVars, defaultRadius, defaultThemeColors, getViewerCss, keyToLabel, loadPresentationDeck, parsePresentationSessionId, renderSlideStage, themeToCssVars, translationsEn, vermilionDarkTheme, vermilionLightTheme };
10176
+ export { type AutosaveRecord, type AutosaveStatus, type CollaborationConfig, type CollaborationRole, type CollaborationTransport, type ConnectionStatus, type CssStyleMap, type ElementRenderContext, type ElementRenderer, type ElementRendererRegistry, type ExportGifOptions, type ExportPdfOptions, type ExportProgress, type ExportVideoOptions, type OpenPrintWindow, type PptxElement, type PptxElementType, type PptxHandler, type PptxSlide, PptxViewer, type PptxViewerCallbacks, type PptxViewerInstance, type PptxViewerOptions, type PptxViewerSource, type PrintOptions, type SlideStageOptions, type SvgExportOptions, type TranslationKey, type TranslationMessages, type Translator, type ViewerState, type ViewerTheme, type ViewerThemeColors, type ZoomLevel, applyStyleMap, createDefaultRegistry, createEl, createElementRendererRegistry, createPptxViewer, createSvgEl, createTranslator, defaultCssVars, defaultRadius, defaultThemeColors, exportAllSlidesToSvg, exportSlideToSvg, getViewerCss, keyToLabel, loadPresentationDeck, parsePresentationSessionId, renderSlideStage, themeToCssVars, translationsEn, vermilionDarkTheme, vermilionLightTheme };
9344
10177
  //# sourceMappingURL=index.d.ts.map