pptx-vanilla-viewer 2.0.2 → 2.1.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
@@ -3,7 +3,7 @@ import "jszip";
3
3
  import { ChatTransport, LanguageModel, ToolSet, UIMessage } from "ai";
4
4
  import "pptx-viewer-mcp";
5
5
  import { Options } from "html2canvas-pro";
6
- //#region ../core/dist/text-operations-mlsQMjIC.d.ts
6
+ //#region ../core/dist/text-operations-Dg5-_6uo.d.ts
7
7
  //#region src/core/types/actions.d.ts
8
8
  /**
9
9
  * Action types: hyperlinks, slide jumps, macros, and action buttons.
@@ -1722,6 +1722,32 @@ interface TextStyle {
1722
1722
  textReflectionEndOpacity?: number;
1723
1723
  /** Text reflection offset distance in px. */
1724
1724
  textReflectionOffset?: number;
1725
+ /**
1726
+ * Text reflection fade direction (`a:rPr/a:effectLst/a:reflection/@fadeDir`)
1727
+ * in degrees. Mirrors `ShapeStyle.reflectionFadeDirection`.
1728
+ */
1729
+ textReflectionFadeDirection?: number;
1730
+ /**
1731
+ * Text reflection horizontal scaling (`@sx`), same units as
1732
+ * `ShapeStyle.reflectionScaleX` (1000ths of a percent, e.g. 100000 = 100%).
1733
+ */
1734
+ textReflectionScaleX?: number;
1735
+ /** Text reflection vertical scaling (`@sy`). See `ShapeStyle.reflectionScaleY`. */
1736
+ textReflectionScaleY?: number;
1737
+ /**
1738
+ * Text reflection horizontal skew (`@kx`) in 60000ths of a degree. See
1739
+ * `ShapeStyle.reflectionSkewX`.
1740
+ */
1741
+ textReflectionSkewX?: number;
1742
+ /** Text reflection vertical skew (`@ky`). See `ShapeStyle.reflectionSkewY`. */
1743
+ textReflectionSkewY?: number;
1744
+ /**
1745
+ * Text reflection independent rotation (`@rot`) in degrees. See
1746
+ * `ShapeStyle.reflectionRotation`.
1747
+ */
1748
+ textReflectionRotation?: number;
1749
+ /** Text reflection anchor (`@algn`). See `ShapeStyle.reflectionAlignment`. */
1750
+ textReflectionAlignment?: 'tl' | 't' | 'tr' | 'l' | 'ctr' | 'r' | 'bl' | 'b' | 'br';
1725
1751
  /** 3D extrusion/bevel settings on the text body. */
1726
1752
  text3d?: Text3DStyle;
1727
1753
  /** 3D scene (camera + light rig) settings on the text body (`a:bodyPr/a:scene3d`). */
@@ -5423,6 +5449,21 @@ interface ContentPartInkStroke {
5423
5449
  * variable-width strokes that reflect stylus/pen pressure.
5424
5450
  */
5425
5451
  pressures?: number[];
5452
+ /**
5453
+ * Per-point pen-tilt lean direction (radians), decoded from the source
5454
+ * InkML's `OTx`/`OTy` tilt-offset channels or its `AZIMUTH` channel.
5455
+ *
5456
+ * When present (paired with {@link tiltMagnitudes}), the renderer widens
5457
+ * each point perpendicular to the lean direction, approximating a
5458
+ * calligraphic (chisel-tip) nib. Absent when the source declared no tilt
5459
+ * channel, in which case rendering is unaffected.
5460
+ */
5461
+ tiltAngles?: number[];
5462
+ /**
5463
+ * Per-point pen-tilt strength (0 upright, 1 maximally leaned), paired with
5464
+ * {@link tiltAngles}.
5465
+ */
5466
+ tiltMagnitudes?: number[];
5426
5467
  }
5427
5468
  /**
5428
5469
  * A content-part element wrapped in `mc:AlternateContent`.
@@ -5991,6 +6032,19 @@ interface PptxNativeAnimation {
5991
6032
  scaleZoomContents?: boolean;
5992
6033
  /** Parsed `p:tav` keyframes from `p:tavLst` (CT_TLAnimVariantList). */
5993
6034
  keyframes?: PptxAnimationKeyframe[];
6035
+ /**
6036
+ * The attribute {@link keyframes} drives, from the SAME node's
6037
+ * `p:cBhvr/p:attrNameLst/p:attrName` (ECMA-376 S19.5.4). `p:tavLst` is
6038
+ * schema-generic: without this, playback could see a numeric ramp but not
6039
+ * know whether it targeted opacity, position, colour, or something with
6040
+ * no CSS mapping. Lowercased and trimmed; common values seen in the wild
6041
+ * (and written by this codebase's own animation writer) include
6042
+ * `"style.opacity"`, `"style.color"`, `"style.visibility"`, `"fillcolor"`,
6043
+ * `"stroke.color"`, `"r"` (rotation, only meaningful on `p:animRot`), and
6044
+ * `"ppt_x"` / `"ppt_y"` (position, normally driven via `p:animMotion`
6045
+ * instead). Absent when the behaviour carries no `p:attrNameLst`.
6046
+ */
6047
+ attrName?: string;
5994
6048
  /** Repeat count (e.g. `2`, `Infinity` for indefinite). */
5995
6049
  repeatCount?: number;
5996
6050
  /** Whether the animation plays in reverse after completion. */
@@ -6092,6 +6146,17 @@ interface PptxNativeAnimation {
6092
6146
  textTarget?: PptxTextAnimationTarget;
6093
6147
  /** Whether this animation is inside an exclusive container (`p:excl`). */
6094
6148
  exclusive?: boolean;
6149
+ /**
6150
+ * Identifies which `p:excl` container this animation belongs to, when
6151
+ * {@link exclusive} is set. ECMA-376 S19.5.24 CT_TLExclusiveTimeNode: at
6152
+ * most one direct child of an exclusive container may be active at a
6153
+ * time, so starting one child stops any other currently-playing child of
6154
+ * the SAME container. Two different `p:excl` containers on the same slide
6155
+ * are independent groups; this id (assigned per container encountered
6156
+ * during parsing, stable only within one parse's animation list) lets
6157
+ * playback tell them apart. Absent when {@link exclusive} is unset.
6158
+ */
6159
+ exclGroupId?: number;
6095
6160
  /** Command type from `p:cmd` (@_type: call/evt/verb). */
6096
6161
  commandType?: string;
6097
6162
  /** Command string from `p:cmd` (@_cmd). */
@@ -6375,6 +6440,52 @@ interface PptxElementAnimation {
6375
6440
  soundPath?: string;
6376
6441
  /** Whether to stop any currently playing sound (`p:endSnd`). */
6377
6442
  stopSound?: boolean;
6443
+ /**
6444
+ * Pending, not-yet-embedded sound chosen in the authoring UI, as a
6445
+ * `data:audio/...;base64,...` URL. Mirrors the `imageData` /
6446
+ * `mediaData` pending-embed convention used elsewhere in the typed model:
6447
+ * on save, the writer converts this to real bytes under `ppt/media/`,
6448
+ * mints a relationship, and replaces this field with the resolved
6449
+ * {@link soundRId} / {@link soundPath}. Cleared once embedded.
6450
+ */
6451
+ soundData?: string;
6452
+ /**
6453
+ * Display name for the chosen sound (e.g. the uploaded file's name),
6454
+ * shown by the authoring UI's sound picker. Purely cosmetic; has no
6455
+ * OOXML equivalent and is not required for playback.
6456
+ */
6457
+ soundFileName?: string;
6458
+ }
6459
+ /**
6460
+ * A read-only anchor representing one of the deck's own effect groups: a
6461
+ * top-level click group (`p:par` under `p:timing`'s main sequence) that this
6462
+ * app did not author, so it is never exposed as an editable
6463
+ * {@link PptxElementAnimation}.
6464
+ *
6465
+ * The authoring UI merges these anchors alongside `PptxSlide.animations` to
6466
+ * render the FULL animation sequence (editor-authored and deck-native
6467
+ * effects together) and lets an editor-authored entry be dragged to any
6468
+ * position relative to them. `order` is the anchor's position among ALL
6469
+ * top-level click groups (editor-owned and native) at load time, in the same
6470
+ * numbering space as {@link PptxElementAnimation.order}, so the two
6471
+ * populations sort into one coherent timeline.
6472
+ *
6473
+ * Anchors are never written back: on save, an untouched anchor's own click
6474
+ * group is repositioned (if an editor-authored effect was dragged past it)
6475
+ * but never mutated, so the deck's own effect stays byte-identical apart
6476
+ * from its position in the sequence.
6477
+ */
6478
+ interface PptxAnimationTimelineAnchor {
6479
+ /**
6480
+ * Position of this group among all top-level click groups in the main
6481
+ * animation sequence at load time (dense, shared with editor entries'
6482
+ * `order`).
6483
+ */
6484
+ order: number;
6485
+ /** Shape id(s) this group's effects target, for a readable UI label. */
6486
+ targetIds: string[];
6487
+ /** Effect preset classes present in the group (entr/exit/emph/path). */
6488
+ presetClasses: Array<'entr' | 'exit' | 'emph' | 'path'>;
6378
6489
  }
6379
6490
  //#endregion
6380
6491
  //#region src/core/types/embedded-font.d.ts
@@ -7078,8 +7189,19 @@ interface PptxSlideTransition {
7078
7189
  soundLoop?: boolean;
7079
7190
  /** Resolved transition sound media path within the package. */
7080
7191
  soundPath?: string;
7081
- /** Human-readable sound file name (extracted from soundPath). */
7192
+ /** Human-readable sound file name (extracted from soundPath, or set by the
7193
+ * UI when a new file is picked, before it has a soundPath at all). */
7082
7194
  soundFileName?: string;
7195
+ /**
7196
+ * A newly-picked local sound file awaiting embedding, as a `data:` URL.
7197
+ * Set by the transitions ribbon's Sound picker (`applyTransitionSoundFile`
7198
+ * in `pptx-viewer-shared`) when the user chooses a file that is not yet
7199
+ * part of the package; mirrors `imageData`/`mediaData` on picture and media
7200
+ * elements. The save pipeline (`embedTransitionSound`) writes the bytes to
7201
+ * `ppt/media/`, mints a relationship, sets `soundRId`/`soundPath`, and
7202
+ * clears this field so a later save does not re-embed the same bytes.
7203
+ */
7204
+ soundData?: string;
7083
7205
  /**
7084
7206
  * When true, the transition stops the currently-playing sound (OOXML `p:sndAc/p:endSnd`).
7085
7207
  * Mutually exclusive with `soundRId`/`soundPath` (which use `p:stSnd`).
@@ -7353,17 +7475,29 @@ interface PptxSlide {
7353
7475
  backgroundPattern?: PptxSlideBackgroundPattern;
7354
7476
  /**
7355
7477
  * `<p:bgPr/@shadeToTitle>`: boolean flag instructing the renderer to
7356
- * shade the background toward the title placeholder colour. Captured
7357
- * for lossless round-trip only; no renderer applies the visual effect.
7358
- * Documented as a known no-op in `docs/guide/limitations.md` (legacy
7359
- * PowerPoint 97-2003 hint, not observed in any real-world corpus file
7360
- * and not settable from any modern PowerPoint UI).
7478
+ * shade the background gradient toward the title placeholder's text
7479
+ * colour. Parsed and round-tripped here on the core model; the actual
7480
+ * visual effect is applied by `pptx-viewer-shared`'s
7481
+ * `getSlideBackgroundStyle` (see `render/background-shade-to-title.ts`),
7482
+ * consumed by all five bindings, not by core itself. That module's
7483
+ * docstring explains the approximation: no published ECMA-376 or
7484
+ * MS-ODRAWXML text documents the exact legacy blend. Legacy PowerPoint
7485
+ * 97-2003 hint, not observed in any real-world corpus file this project
7486
+ * has collected and not settable from any modern PowerPoint UI; see
7487
+ * `docs/guide/limitations.md`.
7361
7488
  *
7362
7489
  * ECMA-376 §19.3.1.2 (CT_BackgroundProperties).
7363
7490
  */
7364
7491
  backgroundShadeToTitle?: boolean;
7365
7492
  transition?: PptxSlideTransition;
7366
7493
  animations?: PptxElementAnimation[];
7494
+ /**
7495
+ * Read-only anchors for the deck's own (non-editor-authored) effect
7496
+ * groups, merged with `animations` by the authoring UI so drag-to-reorder
7497
+ * can target any position in the full sequence. See
7498
+ * {@link PptxAnimationTimelineAnchor}.
7499
+ */
7500
+ animationTimelineAnchors?: PptxAnimationTimelineAnchor[];
7367
7501
  /** Native OOXML animation data parsed from `p:timing`. */
7368
7502
  nativeAnimations?: PptxNativeAnimation[];
7369
7503
  /** Preserved raw `p:timing` XML for lossless round-trip of native animations. */
@@ -7916,7 +8050,7 @@ interface PptxEmbeddedFont {
7916
8050
  originalPartBytes?: Uint8Array;
7917
8051
  }
7918
8052
  //#endregion
7919
- //#region ../core/dist/index-DNZI4fvG.d.ts
8053
+ //#region ../core/dist/index-Cwwrmmqf.d.ts
7920
8054
  //#region src/core/types/theme-presets.d.ts
7921
8055
  /**
7922
8056
  * A complete theme preset that can be applied to a presentation.
@@ -8756,12 +8890,25 @@ interface IPptxHandlerRuntimeFactory {
8756
8890
  */
8757
8891
  /** Supported encryption algorithms. */
8758
8892
  type EncryptionAlgorithm = 'AES128' | 'AES256';
8893
+ /**
8894
+ * Which OOXML encryption scheme to write when creating a password-protected
8895
+ * file. Real PowerPoint can write and open either scheme; this library
8896
+ * defaults to 'agile' (Office 2010+), matching PowerPoint's own default.
8897
+ */
8898
+ type EncryptionScheme = 'agile' | 'standard';
8759
8899
  /** Encryption options for creating encrypted files. */
8760
8900
  interface EncryptionOptions {
8761
8901
  /** The encryption algorithm to use (defaults to AES256). */
8762
8902
  algorithm?: EncryptionAlgorithm;
8763
8903
  /** Number of hash iterations for key derivation (defaults to 100000). Lower values speed up tests. */
8764
8904
  spinCount?: number;
8905
+ /**
8906
+ * Which encryption scheme to write (defaults to 'agile'). 'standard'
8907
+ * writes the ECMA-376 Standard scheme (Office 2007-compatible: a single
8908
+ * password-derived AES-CBC key with a zero IV over the whole package),
8909
+ * mirroring the scheme this library already knows how to decrypt.
8910
+ */
8911
+ encryptionScheme?: EncryptionScheme;
8765
8912
  }
8766
8913
  //#endregion
8767
8914
  //#region src/core/PptxHandlerCore.d.ts
@@ -10084,6 +10231,15 @@ interface Guide {
10084
10231
  interface InkPoint {
10085
10232
  x: number;
10086
10233
  y: number;
10234
+ /**
10235
+ * Pointer pressure at this point, from `PointerEvent.pressure` (0..1).
10236
+ * Optional: a binding that has not wired pressure capture simply omits
10237
+ * it, and {@link strokeToInkElement} falls back to
10238
+ * {@link DEFAULT_POINTER_PRESSURE}, the constant value mice and other
10239
+ * non-pressure-aware devices report, which reads as "no real pressure
10240
+ * data".
10241
+ */
10242
+ pressure?: number;
10087
10243
  }
10088
10244
  /** Options for {@link strokeToInkElement}. */
10089
10245
  interface StrokeToInkElementOpts {
@@ -10124,10 +10280,13 @@ interface GradientState {
10124
10280
  /**
10125
10281
  * Dropdown ids for the insert-chart menu. Distinct from `PptxChartType`
10126
10282
  * because PowerPoint offers Column (vertical) and Bar (horizontal) as two
10127
- * entries over the same underlying `'bar'` chart type. The six ChartEx ids
10128
- * (`histogram` through `regionMap`) map one-to-one onto their chart type.
10283
+ * entries over the same underlying `'bar'` chart type, and because `'pareto'`
10284
+ * has no `PptxChartType` of its own: it is a dropdown entry that resolves to
10285
+ * `type: 'histogram'` (see docs/guide/limitations.md's ChartEx row) with a
10286
+ * frequency-plus-cumulative-percentage default shape. The other six ChartEx
10287
+ * ids (`histogram` through `regionMap`) map one-to-one onto their chart type.
10129
10288
  */
10130
- type InsertChartKind = 'column' | 'bar' | 'line' | 'pie' | 'doughnut' | 'area' | 'scatter' | 'histogram' | 'funnel' | 'treemap' | 'sunburst' | 'boxWhisker' | 'regionMap';
10289
+ type InsertChartKind = 'column' | 'bar' | 'line' | 'pie' | 'doughnut' | 'area' | 'scatter' | 'histogram' | 'pareto' | 'funnel' | 'treemap' | 'sunburst' | 'boxWhisker' | 'regionMap';
10131
10290
  /** In-memory clipboard payload stored when an element is copied or cut. */
10132
10291
  interface ElementClipboardPayload {
10133
10292
  element: PptxElement;
@@ -10354,6 +10513,34 @@ interface ElementRenderContext {
10354
10513
  * when the option is unset.
10355
10514
  */
10356
10515
  readonly surfaceChart3D: boolean;
10516
+ /**
10517
+ * Opt-in flag: render `bar3D` charts as an interactive, camera-orbitable
10518
+ * Three.js box-mesh scene instead of the flat SVG oblique-projection
10519
+ * illusion (see `PptxViewerOptions.barChart3D`). Defaults to `false` when
10520
+ * the option is unset.
10521
+ */
10522
+ readonly barChart3D: boolean;
10523
+ /**
10524
+ * Opt-in flag: render `line3D` charts as an interactive, camera-orbitable
10525
+ * Three.js tube-path scene instead of the flat SVG oblique-projection
10526
+ * illusion (see `PptxViewerOptions.lineChart3D`). Defaults to `false` when
10527
+ * the option is unset.
10528
+ */
10529
+ readonly lineChart3D: boolean;
10530
+ /**
10531
+ * Opt-in flag: render `area3D` charts as an interactive, camera-orbitable
10532
+ * Three.js tube-path + ribbon-fill scene instead of the flat SVG
10533
+ * oblique-projection illusion (see `PptxViewerOptions.areaChart3D`).
10534
+ * Defaults to `false` when the option is unset.
10535
+ */
10536
+ readonly areaChart3D: boolean;
10537
+ /**
10538
+ * Opt-in flag: render `pie3D` charts as an interactive, camera-orbitable
10539
+ * Three.js wedge-mesh scene instead of the flat SVG oblique-projection
10540
+ * illusion (see `PptxViewerOptions.pieChart3D`). Defaults to `false` when
10541
+ * the option is unset.
10542
+ */
10543
+ readonly pieChart3D: boolean;
10357
10544
  /**
10358
10545
  * True only for the live presentation stage (real Fullscreen API active):
10359
10546
  * media renderers use this to autoplay once mounted, matching PowerPoint's
@@ -10511,6 +10698,26 @@ interface SlideStageOptions {
10511
10698
  * `PptxViewerOptions.surfaceChart3D`.
10512
10699
  */
10513
10700
  surfaceChart3D?: boolean;
10701
+ /**
10702
+ * Opt-in interactive WebGL bar3D-chart renderer flag; see
10703
+ * `PptxViewerOptions.barChart3D`.
10704
+ */
10705
+ barChart3D?: boolean;
10706
+ /**
10707
+ * Opt-in interactive WebGL line3D-chart renderer flag; see
10708
+ * `PptxViewerOptions.lineChart3D`.
10709
+ */
10710
+ lineChart3D?: boolean;
10711
+ /**
10712
+ * Opt-in interactive WebGL area3D-chart renderer flag; see
10713
+ * `PptxViewerOptions.areaChart3D`.
10714
+ */
10715
+ areaChart3D?: boolean;
10716
+ /**
10717
+ * Opt-in interactive WebGL pie3D-chart renderer flag; see
10718
+ * `PptxViewerOptions.pieChart3D`.
10719
+ */
10720
+ pieChart3D?: boolean;
10514
10721
  /** True only for the live presentation stage; see `ElementRenderContext.presenting`. */
10515
10722
  presenting?: boolean;
10516
10723
  /** Full deck and active index used by presentation Zoom elements. */
@@ -10813,6 +11020,8 @@ interface AnimationTimingPatch {
10813
11020
  repeatCount?: number;
10814
11021
  repeatMode?: PptxAnimationRepeatMode | 'none';
10815
11022
  triggerShapeId?: string;
11023
+ afterAnimation?: PptxAfterAnimationAction;
11024
+ afterAnimationColor?: string;
10816
11025
  }
10817
11026
  interface AnimationActions {
10818
11027
  addAnimation(group: AnimationGroup, preset: PptxAnimationPreset): void;
@@ -10835,6 +11044,14 @@ interface AnimationActions {
10835
11044
  /** Replace the selected element's raw path (canvas end-handle drag commit). */
10836
11045
  setMotionPathData(path: string): void;
10837
11046
  setAnimationTiming(elementId: string, patch: AnimationTimingPatch): void;
11047
+ /**
11048
+ * Stage a newly-picked effect sound file (a pending `data:` URL, embedded
11049
+ * on save), or clear the sound entirely when `pick` is `undefined`.
11050
+ */
11051
+ setAnimationSound(elementId: string, pick: {
11052
+ dataUrl: string;
11053
+ fileName?: string;
11054
+ } | undefined): void;
10838
11055
  reorderAnimation(elementId: string, direction: 'up' | 'down'): void;
10839
11056
  moveAnimation(elementId: string, index: number): void;
10840
11057
  }
@@ -10965,10 +11182,13 @@ interface InkActions {
10965
11182
  */
10966
11183
  commitStroke(stroke: StrokeToInkElementOpts): void;
10967
11184
  /**
10968
- * Remove the ink element with `id` from the current slide (Draw tab's
10969
- * eraser tool). Returns `true` when an ink element was found and removed;
10970
- * `false` for a missing id, a non-ink element, or a read-only viewer (safe
10971
- * to call from a generic stage hit-test without a pre-check).
11185
+ * Remove the ink/contentPart element with `id` from the current slide
11186
+ * (Draw tab's eraser tool). `contentPart` is included because ink saved
11187
+ * via the Draw tab reloads in that shape, so it must stay erasable after a
11188
+ * save/reload round-trip. Returns `true` when a matching element was found
11189
+ * and removed; `false` for a missing id, an unrelated element, or a
11190
+ * read-only viewer (safe to call from a generic stage hit-test without a
11191
+ * pre-check).
10972
11192
  */
10973
11193
  eraseInkElement(id: string): boolean;
10974
11194
  }
@@ -11026,6 +11246,8 @@ interface InspectorActions {
11026
11246
  setElementAction(trigger: 'click' | 'hover', action: ElementAction): void;
11027
11247
  /** Set the selection's accessibility description (inspector Alt Text field). */
11028
11248
  setAltText(text: string): void;
11249
+ /** Set the selected OLE element's Object Name (`p:oleObj/@name`). */
11250
+ setOleName(name: string): void;
11029
11251
  setChartData(data: PptxChartData): void;
11030
11252
  setMediaProperties(patch: Partial<MediaPptxElement>): void;
11031
11253
  setTableHeaderRow(enabled: boolean): void;
@@ -11159,6 +11381,13 @@ interface TransitionActions {
11159
11381
  * comes from the shared `ribbonTransitionTargets`.
11160
11382
  */
11161
11383
  applyTransitionDraft(draft: RibbonTransitionDraft, applyToAll: boolean): void;
11384
+ /**
11385
+ * Merge a raw partial change onto the ACTIVE slide's transition, for
11386
+ * controls that write a single field outside the ribbon draft (currently
11387
+ * the Sound picker: a freshly-picked file's `soundData` has no equivalent
11388
+ * in {@link RibbonTransitionDraft}).
11389
+ */
11390
+ applyTransitionChange(changes: Partial<PptxSlideTransition>): void;
11162
11391
  }
11163
11392
  //#endregion
11164
11393
  //#region src/viewer/editor/editor-edit-ops.d.ts
@@ -11264,6 +11493,8 @@ interface InspectorState {
11264
11493
  oleObjectType: OleObjectType | undefined;
11265
11494
  oleFileName: string | undefined;
11266
11495
  oleIsLinked: boolean;
11496
+ /** The OLE object's author-assigned name (`p:oleObj/@name`), if any. */
11497
+ oleName: string | undefined;
11267
11498
  x: number;
11268
11499
  y: number;
11269
11500
  width: number;
@@ -11563,6 +11794,14 @@ interface RibbonTransitionHandlers {
11563
11794
  readDraft(): RibbonTransitionDraft;
11564
11795
  /** Commit the tab's whole draft, onto the active slide or every slide. */
11565
11796
  applyDraft(draft: RibbonTransitionDraft, applyToAll: boolean): void;
11797
+ /** The ACTIVE slide's raw transition, for fields the draft does not carry (the Sound picker). */
11798
+ readTransition(): PptxSlideTransition | undefined;
11799
+ /**
11800
+ * Merge a raw partial change onto the active slide's transition. Used by
11801
+ * the Sound picker: a freshly-picked file's `soundData` has no equivalent
11802
+ * in {@link RibbonTransitionDraft}.
11803
+ */
11804
+ applyChange(changes: Partial<PptxSlideTransition>): void;
11566
11805
  }
11567
11806
  /**
11568
11807
  * Design tab handler: swap the viewer chrome's `ViewerTheme` (the shared
@@ -11649,6 +11888,8 @@ interface RibbonSelectionState {
11649
11888
  formatPainterActive?: boolean;
11650
11889
  selectedElementId?: string;
11651
11890
  animations?: readonly PptxElementAnimation[];
11891
+ /** Read-only anchors for the active slide's deck-native effect groups. */
11892
+ animationTimelineAnchors?: readonly PptxAnimationTimelineAnchor[];
11652
11893
  /** Available slide layouts for the Slides group's New Slide / Layout menus. */
11653
11894
  layouts?: readonly LayoutOption[];
11654
11895
  /** Artwork for the layout gallery thumbnails, keyed by layout path. */
@@ -12668,6 +12909,55 @@ interface PptxViewerOptions extends PptxViewerCallbacks {
12668
12909
  * Vue/React/Angular/Svelte bindings).
12669
12910
  */
12670
12911
  surfaceChart3D?: boolean;
12912
+ /**
12913
+ * Opt in to the interactive Three.js bar3D-chart renderer (default
12914
+ * `false`). When `true`, `bar3D` charts render as camera-orbitable real
12915
+ * box meshes (drag to rotate, scroll to zoom) instead of the flat SVG
12916
+ * oblique-projection illusion. Chart marks are not selectable/draggable in
12917
+ * this mode. `three` is an optional peer dependency, lazily imported only
12918
+ * when this is `true`; when it is unavailable, the chart has no plottable
12919
+ * grid, or it is a horizontal 3-D Bar, the SVG renderer is used instead.
12920
+ * Set once at construction (no runtime setter, mirroring the
12921
+ * Vue/React/Angular/Svelte bindings).
12922
+ */
12923
+ barChart3D?: boolean;
12924
+ /**
12925
+ * Opt in to the interactive Three.js line3D-chart renderer (default
12926
+ * `false`). When `true`, `line3D` charts render as camera-orbitable real
12927
+ * tube-path meshes, one per depth ("series") plane (drag to rotate, scroll
12928
+ * to zoom), instead of the flat SVG oblique-projection illusion. Chart
12929
+ * marks are not selectable/draggable in this mode. `three` is an optional
12930
+ * peer dependency, lazily imported only when this is `true`; when it is
12931
+ * unavailable or the chart has no plottable grid, the SVG renderer is used
12932
+ * instead. Set once at construction (no runtime setter, mirroring the
12933
+ * Vue/React/Angular/Svelte bindings).
12934
+ */
12935
+ lineChart3D?: boolean;
12936
+ /**
12937
+ * Opt in to the interactive Three.js area3D-chart renderer (default
12938
+ * `false`). When `true`, `area3D` charts render as camera-orbitable real
12939
+ * tube-path meshes plus a filled ribbon mesh per series, one per depth
12940
+ * ("series") plane (drag to rotate, scroll to zoom), instead of the flat
12941
+ * SVG oblique-projection illusion. Chart marks are not selectable/draggable
12942
+ * in this mode. `three` is an optional peer dependency, lazily imported
12943
+ * only when this is `true`; when it is unavailable or the chart has no
12944
+ * plottable grid, the SVG renderer is used instead. Set once at
12945
+ * construction (no runtime setter, mirroring the Vue/React/Angular/Svelte
12946
+ * bindings).
12947
+ */
12948
+ areaChart3D?: boolean;
12949
+ /**
12950
+ * Opt in to the interactive Three.js pie3D-chart renderer (default
12951
+ * `false`). When `true`, `pie3D` charts render as camera-orbitable real
12952
+ * wedge meshes (drag to rotate, scroll to zoom) instead of the flat SVG
12953
+ * oblique-projection illusion. Chart marks are not selectable/draggable in
12954
+ * this mode. `three` is an optional peer dependency, lazily imported only
12955
+ * when this is `true`; when it is unavailable or the chart has no
12956
+ * plottable series, the SVG renderer is used instead. Set once at
12957
+ * construction (no runtime setter, mirroring the
12958
+ * Vue/React/Angular/Svelte bindings).
12959
+ */
12960
+ pieChart3D?: boolean;
12671
12961
  /**
12672
12962
  * Whether this application PERMITS recovery autosave (`@default true`).
12673
12963
  *