pptx-vanilla-viewer 3.5.0 → 3.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@ import "fast-xml-parser";
2
2
  import "jszip";
3
3
  import { Doc } from "yjs";
4
4
  import "opentype.js";
5
- //#region ../core/dist/text-operations-Ceqe6q6P.d.ts
5
+ //#region ../core/dist/text-operations-BPndGvm9.d.ts
6
6
  //#region src/core/types/actions.d.ts
7
7
  /**
8
8
  * Action types: hyperlinks, slide jumps, macros, and action buttons.
@@ -1550,8 +1550,16 @@ interface TextStyle {
1550
1550
  textOutlineWidth?: number;
1551
1551
  /** Text outline colour as hex string (`a:rPr > a:ln > a:solidFill`). */
1552
1552
  textOutlineColor?: string;
1553
+ /** Text outline dash preset (`a:rPr > a:ln > a:prstDash/@val`), e.g. `dash`; absent for solid. */
1554
+ textOutlineDash?: string;
1553
1555
  /** When true, the text body has no fill (`a:rPr > a:noFill`), producing hollow/outline-only text. */
1554
1556
  textFillNone?: boolean;
1557
+ /**
1558
+ * When true, the run authored an EMPTY `<a:effectLst/>`: an explicit "no
1559
+ * effects" override that blocks an inherited shadow or glow. Kept so a
1560
+ * rewrite re-emits it instead of letting the inherited effect return.
1561
+ */
1562
+ textEffectsExplicitNone?: boolean;
1555
1563
  /** Superscript/subscript baseline shift as percentage (`a:rPr/@baseline`). Positive = super, negative = sub. */
1556
1564
  baseline?: number;
1557
1565
  /** Character spacing in hundredths of a point (`a:rPr/@spc`). */
@@ -1585,6 +1593,25 @@ interface TextStyle {
1585
1593
  textFillPatternForeground?: string;
1586
1594
  /** Text-level pattern background colour. */
1587
1595
  textFillPatternBackground?: string;
1596
+ /**
1597
+ * Raw `a:rPr > a:blipFill` XML, preserved verbatim for round-trip
1598
+ * serialization AND as the input to the image resolution pass that fills
1599
+ * in {@link textFillBlipUrl} (parsing a run's fill happens synchronously,
1600
+ * with no zip/relationship access at that point; resolving the blip to a
1601
+ * displayable URL needs both, so it happens in a later async pass over
1602
+ * the slide's parsed elements, mirroring how a shape's OWN image fill is
1603
+ * resolved). A picture-filled text run (`a:rPr > a:blipFill`) was
1604
+ * documented as handled ("Handles gradient fills, pattern fills, and
1605
+ * image fills on text runs") but never actually parsed, so it silently
1606
+ * fell through to the run's plain `color` and rendered solid black
1607
+ * (COM-verified: `audit-text` slide 13's "PICTURE FILL" run shows the
1608
+ * fill image through the glyphs in PowerPoint).
1609
+ */
1610
+ textFillBlipXml?: XmlObject;
1611
+ /** Resolved displayable URL for {@link textFillBlipXml}, or the archive-relative path when unresolved (lazy decode). */
1612
+ textFillBlipUrl?: string;
1613
+ /** Tiling mode for {@link textFillBlipUrl} (`a:blipFill/a:tile` present -> 'tile', else 'stretch'). */
1614
+ textFillBlipMode?: 'stretch' | 'tile';
1588
1615
  hyperlink?: string;
1589
1616
  /** Relationship ID for the hyperlink (`a:hlinkClick/@r:id`) — preserved for round-trip serialization. */
1590
1617
  hyperlinkRId?: string;
@@ -1670,6 +1697,13 @@ interface TextStyle {
1670
1697
  position: number;
1671
1698
  align: 'l' | 'ctr' | 'r' | 'dec';
1672
1699
  leader?: 'none' | 'dot' | 'hyphen' | 'underscore';
1700
+ /**
1701
+ * True when the source spelled out the schema-default `@algn="l"`, so the
1702
+ * writer re-emits it instead of treating it as an omitted default.
1703
+ */
1704
+ alignAuthored?: boolean;
1705
+ /** True when the source spelled out the schema-default `@leader="none"`. */
1706
+ leaderAuthored?: boolean;
1673
1707
  }>;
1674
1708
  /**
1675
1709
  * True when the paragraph's own `a:pPr` authored an EMPTY `<a:tabLst/>`
@@ -2033,6 +2067,19 @@ interface TextStyle {
2033
2067
  * convention used for {@link bulletInfo} / {@link endParaRunProperties}).
2034
2068
  */
2035
2069
  paragraphDefaultRunPropertiesXml?: XmlObject;
2070
+ /**
2071
+ * The bullet colour / size / typeface children (`a:buClrTx`, `a:buClr`,
2072
+ * `a:buSzTx`, `a:buSzPct`, `a:buSzPts`, `a:buFontTx`, `a:buFont`) a
2073
+ * paragraph authored in its own `<a:pPr>` WITHOUT a bullet type
2074
+ * (`a:buNone` / `a:buChar` / `a:buAutoNum` / `a:buBlip`), captured
2075
+ * verbatim in source order. Such a paragraph restyles an inherited bullet
2076
+ * rather than declaring one, so its {@link BulletInfo} resolves from the
2077
+ * cascade and is (correctly) not written back; without this capture the
2078
+ * paragraph's own override vanished on every rewrite.
2079
+ *
2080
+ * Only meaningful on a paragraph's own authored properties.
2081
+ */
2082
+ paragraphBulletPropertiesXml?: XmlObject;
2036
2083
  }
2037
2084
  /**
2038
2085
  * Structured bullet metadata attached to the first {@link TextSegment}
@@ -3301,6 +3348,26 @@ type PptxChartMarkerSymbol = 'circle' | 'dash' | 'diamond' | 'dot' | 'none' | 'p
3301
3348
  */
3302
3349
  type PptxChartScatterStyle = 'none' | 'line' | 'lineMarker' | 'marker' | 'smooth' | 'smoothMarker';
3303
3350
  /** Shape properties extracted from c:spPr for chart formatting. */
3351
+ /**
3352
+ * A render-ready gradient fill from a chart `c:spPr/a:gradFill` (chart area,
3353
+ * plot area or series). Positions are 0..100; a linear gradient's `angle` is
3354
+ * in degrees clockwise from left-to-right (`a:lin/@ang`); a radial (`a:path`)
3355
+ * gradient centres on `focalPoint` (0..1 fractions of the box), the middle
3356
+ * when absent.
3357
+ */
3358
+ interface PptxChartGradientFill {
3359
+ type: 'linear' | 'radial';
3360
+ stops: Array<{
3361
+ color: string;
3362
+ position: number;
3363
+ opacity?: number;
3364
+ }>;
3365
+ angle?: number;
3366
+ focalPoint?: {
3367
+ x: number;
3368
+ y: number;
3369
+ };
3370
+ }
3304
3371
  interface PptxChartShapeProps {
3305
3372
  fillColor?: string;
3306
3373
  strokeColor?: string;
@@ -3626,6 +3693,12 @@ interface PptxChartSeries {
3626
3693
  */
3627
3694
  idx?: number;
3628
3695
  values: number[];
3696
+ /**
3697
+ * Series gradient fill (`c:ser/c:spPr/a:gradFill`), painted on every mark
3698
+ * of the series that has no per-point override. Render-only: the series'
3699
+ * own `c:spPr` round-trips untouched.
3700
+ */
3701
+ gradientFill?: PptxChartGradientFill;
3629
3702
  /**
3630
3703
  * Per-series x values from `c:ser/c:xVal` (scatter and bubble series only).
3631
3704
  *
@@ -3800,6 +3873,12 @@ interface PptxChartFilteredSeries {
3800
3873
  * and `c:dLblPos`.
3801
3874
  */
3802
3875
  interface PptxChartDataLabelOptions {
3876
+ /** Label box fill/outline (`c:dLbls/c:spPr`), see `chart-data-label-box.ts`. */
3877
+ labelShape?: PptxChartShapeProps;
3878
+ /** Callout geometry of the label box (`c15:spPr/a:prstGeom/@prst`, e.g. `wedgeRectCallout`). */
3879
+ calloutShape?: string;
3880
+ /** The chart15 extension's `c15:showLeaderLines`, which wins for a moved label's leader line. */
3881
+ extLeaderLines?: boolean;
3803
3882
  /** Show the numeric value (`c:showVal`). */
3804
3883
  showValue?: boolean;
3805
3884
  /** Show the category name (`c:showCatName`). */
@@ -3925,6 +4004,10 @@ interface PptxChartStyle {
3925
4004
  chartAreaFill?: string;
3926
4005
  /** Plot-area fill from `c:plotArea/c:spPr`. See {@link chartAreaFill}. */
3927
4006
  plotAreaFill?: string;
4007
+ /** Chart-area gradient (`c:chartSpace/c:spPr/a:gradFill`); wins over {@link chartAreaFill}. */
4008
+ chartAreaGradient?: PptxChartGradientFill;
4009
+ /** Plot-area gradient (`c:plotArea/c:spPr/a:gradFill`); wins over {@link plotAreaFill}. */
4010
+ plotAreaGradient?: PptxChartGradientFill;
3928
4011
  /** Whether data labels are shown. */
3929
4012
  hasDataLabels?: boolean;
3930
4013
  /** Chart-level data-label content/position options (when `hasDataLabels`). */
@@ -7803,7 +7886,15 @@ type PptxAnimationTimingCurve = 'ease' | 'ease-in' | 'ease-out' | 'linear';
7803
7886
  /** Repeat mode for animations. */
7804
7887
  type PptxAnimationRepeatMode = 'untilNextClick' | 'untilEndOfSlide';
7805
7888
  /** Animation trigger type from OOXML `p:cTn`. */
7806
- type PptxAnimationTrigger = 'onClick' | 'onShapeClick' | 'onHover' | 'afterPrevious' | 'withPrevious' | 'afterDelay';
7889
+ type PptxAnimationTrigger = 'onClick' | 'onShapeClick' | 'onHover' | 'afterPrevious' | 'withPrevious' | 'afterDelay' |
7890
+ /**
7891
+ * Starts when a media element's playback reaches a named bookmark
7892
+ * (PowerPoint's "Trigger > On Bookmark"). The media element is
7893
+ * {@link PptxElementAnimation.triggerShapeId} and the bookmark
7894
+ * {@link PptxElementAnimation.triggerBookmark}; saved as an interactive
7895
+ * sequence gated on `p:cond evt="onMediaBookmark"` with a `p14:bmkTgt`.
7896
+ */
7897
+ 'onMediaBookmark';
7807
7898
  /**
7808
7899
  * Native animation kind. The historic shape-targeted preset animations are
7809
7900
  * implicitly the default kind (`undefined`). Media animations (`p:audio`,
@@ -7956,8 +8047,13 @@ interface PptxNativeAnimation {
7956
8047
  target?: PptxAnimationTarget;
7957
8048
  /** Trigger type. */
7958
8049
  trigger?: PptxAnimationTrigger;
7959
- /** Shape ID that triggers this animation when clicked (interactive sequence). */
8050
+ /**
8051
+ * Shape ID that triggers this animation: the clicked shape of an
8052
+ * interactive sequence, or the media element of an `onMediaBookmark` one.
8053
+ */
7960
8054
  triggerShapeId?: string;
8055
+ /** Bookmark name an `onMediaBookmark` interactive sequence waits for. */
8056
+ triggerBookmark?: string;
7961
8057
  /** Whether this effect belongs to an OOXML `interactiveSeq`. */
7962
8058
  interactiveSequence?: boolean;
7963
8059
  /** Whether `p:endSync/p:rtn[@val="all"]` makes that sequence replayable. */
@@ -8456,12 +8552,15 @@ interface PptxAttributeAnimation {
8456
8552
  /**
8457
8553
  * `p:anim/@_p14:bounceEnd` (Office 2010 `p14` extension attribute,
8458
8554
  * MS-OI29500), normalized to a 0-1 fraction of this behaviour's own
8459
- * duration. PowerPoint's Fly In "Bounce End" effect option writes this on
8460
- * the position-ramp `p:anim` node(s): the fraction of the duration at
8461
- * which the primary travel completes, with the remainder spent bouncing
8462
- * and settling at the final value. Mirrored verbatim by PowerPoint onto
8463
- * the enclosing `p:cTn/@_p14:presetBounceEnd`. Absent for every animation
8464
- * that doesn't use this effect option (the overwhelming majority).
8555
+ * duration. PowerPoint's "Bounce End" effect option (COM:
8556
+ * `Effect.Timing.BounceEnd` + `BounceEndIntensity`) writes this on the
8557
+ * position-ramp `p:anim` node(s): the share of the duration spent
8558
+ * BOUNCING at the end. Measured from PowerPoint's own CreateVideo frames,
8559
+ * the travel completes at `1 - bounceEnd` and the rest is a damped
8560
+ * oscillation about the final value (see shared's `animation-bounce-end`).
8561
+ * Mirrored verbatim by PowerPoint onto the enclosing
8562
+ * `p:cTn/@_p14:presetBounceEnd`. Absent for every animation that doesn't
8563
+ * use this effect option (the overwhelming majority).
8465
8564
  */
8466
8565
  bounceEnd?: number;
8467
8566
  }
@@ -8639,9 +8738,24 @@ interface PptxElementAnimation {
8639
8738
  durationMs?: number;
8640
8739
  delayMs?: number;
8641
8740
  order?: number;
8741
+ /**
8742
+ * The {@link order} the loader derived from the slide's `p:timing` tree for
8743
+ * an entry whose `pptx:editorMeta` record authored no `@order`. The tree
8744
+ * already expresses that position (and every load re-derives it), so the
8745
+ * writer omits `@order` while `order` still equals this value; a reorder
8746
+ * changes `order` and the attribute is written again. Load-time bookkeeping
8747
+ * only; never set it by hand.
8748
+ */
8749
+ orderFromTimeline?: number;
8642
8750
  trigger?: PptxAnimationTrigger;
8643
- /** Shape ID that triggers this animation when clicked (interactive sequence). */
8751
+ /**
8752
+ * Shape ID that triggers this animation: the shape clicked for
8753
+ * `onShapeClick`, or the media element whose bookmark fires it for
8754
+ * `onMediaBookmark`.
8755
+ */
8644
8756
  triggerShapeId?: string;
8757
+ /** Bookmark name (`p14:bmk/@name`) an `onMediaBookmark` trigger waits for. */
8758
+ triggerBookmark?: string;
8645
8759
  timingCurve?: PptxAnimationTimingCurve;
8646
8760
  repeatCount?: number;
8647
8761
  repeatMode?: PptxAnimationRepeatMode;
@@ -10407,7 +10521,7 @@ interface PptxEmbeddedFont {
10407
10521
  originalPartBytes?: Uint8Array;
10408
10522
  }
10409
10523
  //#endregion
10410
- //#region ../core/dist/index-CRVpXD8D.d.ts
10524
+ //#region ../core/dist/index-CjOJmc6X.d.ts
10411
10525
  //#region src/core/types/theme-presets.d.ts
10412
10526
  /**
10413
10527
  * A complete theme preset that can be applied to a presentation.
@@ -11910,6 +12024,8 @@ interface AccessibilityIssue {
11910
12024
  message: string;
11911
12025
  suggestion: string;
11912
12026
  }
12027
+ /** Supported merge shape operations (matching PowerPoint's Merge Shapes menu). */
12028
+ type MergeShapeOperation = 'union' | 'intersect' | 'subtract' | 'fragment' | 'combine';
11913
12029
  //#endregion
11914
12030
  //#region ../shared/dist/index-BbHsvey8.d.ts
11915
12031
  //#region src/theme/types.d.ts
@@ -13518,6 +13634,31 @@ declare function loadPresentationDeck(sessionId: string): Promise<Uint8Array | n
13518
13634
  //#region src/render/presentation-blackboard.d.ts
13519
13635
  /** Blackout state, as carried by {@link PresentationSnapshot}. */
13520
13636
  type PresentationBlackout = PresentationSnapshot['blackout'];
13637
+ /** A logical editor command produced by one key press. */
13638
+ type EditorKeyActionName = 'undo' | 'redo' | 'copy' | 'cut' | 'paste' | 'duplicate' | 'delete' | 'selectAll' | 'group' | 'ungroup' | 'nudge' | 'prevSlide' | 'nextSlide' | 'escape' | 'find' | 'findReplace' | 'toggleShortcuts' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify' | 'increaseFontSize' | 'decreaseFontSize' | 'copyFormat' | 'pasteFormat' | 'newSlide' | 'hyperlink' | 'clearFormatting' | 'cycleSelectionNext' | 'cycleSelectionPrev' | 'pasteSpecial';
13639
+ //#endregion
13640
+ //#region src/render/merge-shapes/merge-shapes-menu.d.ts
13641
+ /** The right-click command id for each operation. */
13642
+ type MergeShapesCommandId = 'merge-union' | 'merge-combine' | 'merge-fragment' | 'merge-intersect' | 'merge-subtract';
13643
+ /** Every command a canvas context menu can offer, in no particular order. */
13644
+ type ContextMenuCommandId = 'copy' | 'cut' | 'paste' | 'duplicate' | 'edit-text' | 'edit-points' | 'bring-forward' | 'send-backward' | 'bring-front' | 'send-back' | 'ai-ask' | 'ai-fix' | 'comment' | 'hyperlink' | 'table-insert-row-above' | 'table-insert-row-below' | 'table-delete-row' | 'table-insert-col-left' | 'table-insert-col-right' | 'table-delete-col' | 'table-merge-selected' | 'table-merge-right' | 'table-merge-down' | 'table-split' | 'group' | 'ungroup' | 'crop' | MergeShapesCommandId | 'save-as-picture' | 'edit-alt-text' | 'size-and-position' | 'format-shape' | 'delete';
13645
+ //#endregion
13646
+ //#region src/render/canvas-context-menu-commands.d.ts
13647
+ /**
13648
+ * The right-click menu for the empty slide canvas (no element under the
13649
+ * cursor), as distinct from {@link ./context-menu-commands}'s per-element menu.
13650
+ *
13651
+ * Right-clicking empty canvas used to do nothing at all in every binding: React
13652
+ * and Vue both bailed out early (`getElementIdFromEvent` returns `null`, so the
13653
+ * handler just returns) rather than opening a menu, and the other three never
13654
+ * wired a handler for it either. PowerPoint offers Paste, Layout, Reset,
13655
+ * Format Background and view toggles (Grid and Guides, Ruler) from this menu;
13656
+ * this module is the one list every binding renders instead of five omissions.
13657
+ *
13658
+ * @module render/canvas-context-menu-commands
13659
+ */
13660
+ /** Every command the empty-canvas context menu can offer, in no particular order. */
13661
+ type CanvasContextMenuCommandId = 'paste' | 'layout' | 'reset-slide' | 'format-background' | 'grid-and-guides' | 'ruler';
13521
13662
  //#endregion
13522
13663
  //#region src/render/paste-special.d.ts
13523
13664
  /** The four paste formats PowerPoint's Paste Options / Paste Special offer. */
@@ -13674,6 +13815,21 @@ interface AutosaveRecord {
13674
13815
  timestamp: number;
13675
13816
  size: number;
13676
13817
  }
13818
+ type BackstagePage = 'home' | 'new' | 'open' | 'info' | 'save' | 'saveAs' | 'print' | 'share' | 'export' | 'close' | 'account' | 'options';
13819
+ //#endregion
13820
+ //#region src/render/backstage-cards.d.ts
13821
+ /**
13822
+ * Every action card the File-tab backstage can show, keyed by the operation it
13823
+ * triggers rather than by its wording.
13824
+ *
13825
+ * The five bindings used to hardcode a title and a body string each, which made
13826
+ * the whole backstage untranslatable and let the copy drift: the same card
13827
+ * carried four different descriptions depending on which binding you opened it
13828
+ * in. Both halves now live here as a dictionary key plus an English fallback,
13829
+ * so a wording change lands everywhere at once and a translator only has to
13830
+ * translate it once.
13831
+ */
13832
+ type BackstageCardId = 'protect' | 'inspect' | 'embedFonts' | 'signatures' | 'versionHistory' | 'saveAsPptx' | 'saveAsPpsx' | 'saveAsPptm' | 'saveAsPpt' | 'pdf' | 'png' | 'video' | 'gif' | 'json' | 'copyImage' | 'print' | 'share';
13677
13833
  //#endregion
13678
13834
  //#region src/render/master-view-crud.d.ts
13679
13835
  /** One Slide Master view sidebar command. */
@@ -13724,11 +13880,145 @@ interface AccountAuthConfig {
13724
13880
  * whole control cluster (zoom in/out/fit, prev/next) rather than each button
13725
13881
  * in it, matching how hosts actually want to hide/keep them as a unit.
13726
13882
  */
13727
- type ToolbarButtonId = 'share' | 'broadcast' | 'export' | 'undo' | 'redo' | 'record' | 'notes' | 'fullscreen' | 'zoom' | 'navigation';
13883
+ type ToolbarButtonId = 'share' | 'broadcast' | 'export' | 'undo' | 'redo' | 'record' | 'notes' | 'fullscreen' | 'zoom' | 'navigation' | 'mergeShapes' | 'crop';
13728
13884
  /** A top-level ribbon tab. `record` intentionally shares its id with the quick-access Record button above: both surface the same recording feature, so hiding one hides the other. */
13729
13885
  type ToolbarTabId = 'file' | 'home' | 'insert' | 'draw' | 'design' | 'transitions' | 'animations' | 'slideShow' | 'record' | 'review' | 'view' | 'help';
13730
13886
  type ToolbarActionId = ToolbarButtonId | ToolbarTabId;
13887
+ //#endregion
13888
+ //#region src/render/options/viewer-options.d.ts
13889
+ /**
13890
+ * Full PowerPoint "File > Options" parity model.
13891
+ *
13892
+ * Groups mirror the ten categories of PowerPoint's Options dialog. Values are
13893
+ * flat primitives per group so the dialog panes can be rendered generically
13894
+ * from `VIEWER_OPTIONS_SCHEMA` in every binding. The legacy six-toggle
13895
+ * `ViewerPreferences` surface stays supported via the mapping helpers below.
13896
+ */
13897
+ type ScreenTipStyle = 'descriptions' | 'plain' | 'off';
13898
+ type DisplayOptimization = 'appearance' | 'compatibility';
13899
+ type ImageResolutionPreset = 'highFidelity' | 'ppi330' | 'ppi220' | 'ppi150' | 'ppi96';
13900
+ type OpenDocumentsView = 'savedView' | 'normal' | 'outline' | 'slideSorter' | 'notes';
13901
+ type DefaultExportFormat = 'pptx' | 'pdf' | 'png';
13731
13902
  type QuickAccessPosition = 'above' | 'below';
13903
+ type FeedbackSoundScheme = 'modern' | 'classic';
13904
+ type OptionsPrintWhat = 'slides' | 'handouts' | 'notes' | 'outline';
13905
+ type OptionsPrintColorMode = 'color' | 'grayscale' | 'blackAndWhite';
13906
+ interface ViewerGeneralOptions {
13907
+ displayOptimization: DisplayOptimization;
13908
+ showMiniToolbar: boolean;
13909
+ enableLivePreview: boolean;
13910
+ collapseRibbonAutomatically: boolean;
13911
+ collapseSearchByDefault: boolean;
13912
+ screenTipStyle: ScreenTipStyle;
13913
+ userName: string;
13914
+ userInitials: string;
13915
+ showStartScreen: boolean;
13916
+ /**
13917
+ * Lets the user hand a local font file to the viewer so decks authored
13918
+ * with a font the browser lacks render with the real face.
13919
+ *
13920
+ * Off by default. The registration reads a file the user picks and adds it
13921
+ * to the page's font set for the session, which is a capability a host
13922
+ * embedding the viewer should opt into rather than inherit.
13923
+ */
13924
+ enableCustomFontUpload: boolean;
13925
+ }
13926
+ interface ViewerProofingOptions {
13927
+ autoCorrectTwoInitialCapitals: boolean;
13928
+ autoCorrectCapitalizeFirstLetter: boolean;
13929
+ autoCorrectCapitalizeDayNames: boolean;
13930
+ autoCorrectSmartQuotes: boolean;
13931
+ autoCorrectHyphensToDash: boolean;
13932
+ autoCorrectFractions: boolean;
13933
+ autoCorrectOrdinals: boolean;
13934
+ ignoreUppercase: boolean;
13935
+ ignoreWordsWithNumbers: boolean;
13936
+ ignoreInternetAddresses: boolean;
13937
+ flagRepeatedWords: boolean;
13938
+ checkSpellingAsYouType: boolean;
13939
+ hideSpellingErrors: boolean;
13940
+ }
13941
+ /**
13942
+ * File > Options > Save.
13943
+ *
13944
+ * Font embedding deliberately has NO entry here. It is owned by the File >
13945
+ * Fonts panel, whose toggle is the one the save path reads (see
13946
+ * `render/font-embedding`: `describeFontEmbedding` decides the toggle's start
13947
+ * position and whether it can do anything at all, `embeddedFontSaveOptions`
13948
+ * turns it into the `PptxHandler.save()` slice). This group used to carry a
13949
+ * second `embedFonts` boolean, plus an `embedAllFontCharacters` companion, and
13950
+ * neither was read by anything: the pane moved a switch that changed no saved
13951
+ * byte, while the panel next door moved the real one. Two switches for one
13952
+ * setting, one of them lying, is worse than one switch in a less
13953
+ * PowerPoint-shaped place.
13954
+ */
13955
+ interface ViewerSaveOptions {
13956
+ autoSave: boolean;
13957
+ autoRecoverIntervalMinutes: number;
13958
+ keepLastAutoRecoveredVersion: boolean;
13959
+ defaultExportFormat: DefaultExportFormat;
13960
+ cacheRetentionDays: number;
13961
+ clearCacheOnClose: boolean;
13962
+ }
13963
+ interface ViewerAccessibilityOptions {
13964
+ showAccessibilityStatus: boolean;
13965
+ feedbackWithSound: boolean;
13966
+ soundScheme: FeedbackSoundScheme;
13967
+ showShortcutKeysInScreenTips: boolean;
13968
+ reducedMotion: boolean;
13969
+ }
13970
+ interface ViewerAdvancedOptions {
13971
+ autoSelectEntireWord: boolean;
13972
+ allowTextDragAndDrop: boolean;
13973
+ maximumUndoSteps: number;
13974
+ useSmartCutAndPaste: boolean;
13975
+ showPasteOptionsButton: boolean;
13976
+ imageDefaultResolution: ImageResolutionPreset;
13977
+ doNotCompressImages: boolean;
13978
+ chartPropertiesFollowDataPoint: boolean;
13979
+ recentPresentationsCount: number;
13980
+ showVerticalRuler: boolean;
13981
+ showGrid: boolean;
13982
+ snapToGrid: boolean;
13983
+ disableHardwareAcceleration: boolean;
13984
+ /**
13985
+ * Force every opt-in interactive 3D scene (SmartArt, bar/line/area/pie/
13986
+ * surface charts) to fall back to its flat 2D rendering, even when the
13987
+ * host has enabled that scene via its own `smartArt3D`/`*Chart3D` prop.
13988
+ * A host opting in says "this deck may want 3D"; this is the viewer
13989
+ * user's own override for when the WebGL scenes it renders are too much
13990
+ * for their machine. See `resolve3DRenderingFlags`.
13991
+ */
13992
+ disable3DRendering: boolean;
13993
+ /**
13994
+ * `p:animEffect/@filter="pixelate"` defaults to snapping the element to
13995
+ * its end state (`cutIn`/`cutOut`), matching PowerPoint's own behaviour
13996
+ * (COM `CreateVideo` frame-diffing shows PowerPoint performs no animation
13997
+ * at all for this filter value). This turns on the blocky mosaic reveal
13998
+ * this renderer can build instead, for a viewer that would rather show
13999
+ * something animating than PowerPoint's own instant swap. See
14000
+ * `resolveFilterEffect` in `animation-filter-effects.ts` and
14001
+ * `docs/guide/visual-effects.md`.
14002
+ */
14003
+ pixelateMosaicAnimation: boolean;
14004
+ openDocumentsView: OpenDocumentsView;
14005
+ slideShowShowMenuOnRightClick: boolean;
14006
+ slideShowShowPopupToolbar: boolean;
14007
+ slideShowPromptKeepInkAnnotations: boolean;
14008
+ slideShowEndWithBlackSlide: boolean;
14009
+ printInBackground: boolean;
14010
+ printHighQuality: boolean;
14011
+ printUseMostRecentSettings: boolean;
14012
+ printWhat: OptionsPrintWhat;
14013
+ printColorMode: OptionsPrintColorMode;
14014
+ printHiddenSlides: boolean;
14015
+ printScaleToFit: boolean;
14016
+ printFrameSlides: boolean;
14017
+ }
14018
+ interface ViewerRibbonOptions {
14019
+ /** Ribbon tabs unticked in Customize Ribbon. The File tab can never be hidden. */
14020
+ hiddenTabIds: ToolbarTabId[];
14021
+ }
13732
14022
  interface ViewerQuickAccessOptions {
13733
14023
  visible: boolean;
13734
14024
  position: QuickAccessPosition;
@@ -13736,6 +14026,23 @@ interface ViewerQuickAccessOptions {
13736
14026
  /** Ordered ids from `QUICK_ACCESS_COMMAND_CATALOG`. */
13737
14027
  commandIds: string[];
13738
14028
  }
14029
+ interface ViewerTrustOptions {
14030
+ openInProtectedView: boolean;
14031
+ allowExternalContent: boolean;
14032
+ confirmExternalHyperlinks: boolean;
14033
+ }
14034
+ interface ViewerOptions {
14035
+ general: ViewerGeneralOptions;
14036
+ proofing: ViewerProofingOptions;
14037
+ save: ViewerSaveOptions;
14038
+ accessibility: ViewerAccessibilityOptions;
14039
+ advanced: ViewerAdvancedOptions;
14040
+ ribbon: ViewerRibbonOptions;
14041
+ quickAccess: ViewerQuickAccessOptions;
14042
+ trust: ViewerTrustOptions;
14043
+ }
14044
+ type ViewerOptionsGroupId = keyof ViewerOptions;
14045
+ type ViewerOptionPrimitive = boolean | number | string;
13739
14046
  //#endregion
13740
14047
  //#region src/export/handout-layout.d.ts
13741
14048
  /**
@@ -13779,6 +14086,315 @@ interface PrintSettings {
13779
14086
  */
13780
14087
  scaleToFit?: boolean;
13781
14088
  }
14089
+ /** Every command the Edit Points right-click menu can offer. */
14090
+ type EditPointsCommandId = 'add-point' | 'delete-point' | 'delete-segment' | 'open-path' | 'close-path' | 'smooth-point' | 'straight-point' | 'corner-point' | 'straight-segment' | 'curved-segment' | 'exit';
14091
+ //#endregion
14092
+ //#region src/render/edit-points/freeform-tool-geometry.d.ts
14093
+ /** The two click-to-place drawing tools. */
14094
+ type FreeformToolKind = 'freeformShape' | 'curve';
14095
+ //#endregion
14096
+ //#region src/render/options/viewer-options-controls.d.ts
14097
+ /**
14098
+ * Control/section/tab descriptor types for the File > Options schema, plus
14099
+ * the terse constructors the tab-definition modules build panes with.
14100
+ */
14101
+ type ViewerOptionsTabId = 'general' | 'proofing' | 'save' | 'language' | 'accessibility' | 'advanced' | 'ribbon' | 'quickAccess' | 'addIns' | 'trust';
14102
+ //#endregion
14103
+ //#region src/render/customization/customization-types.d.ts
14104
+ /** Keys of an options group whose value is a primitive (not an array). */
14105
+ type PrimitiveKeys<T> = { [K in keyof T]: T[K] extends ViewerOptionPrimitive ? K : never; }[keyof T] & string;
14106
+ /**
14107
+ * One File > Options setting, addressed as `<group>.<key>`, for example
14108
+ * `general.userName` or `advanced.showGrid`. The union is derived from the
14109
+ * `ViewerOptions` model itself, so a typo is a compile error.
14110
+ */
14111
+ type OptionsSettingId = { [G in ViewerOptionsGroupId]: `${G}.${PrimitiveKeys<ViewerOptions[G]>}`; }[ViewerOptionsGroupId];
14112
+ /**
14113
+ * A File > Options page: the ten PowerPoint categories plus `ai`, the AI
14114
+ * assistant page a binding adds when the host configured an assistant.
14115
+ */
14116
+ type OptionsPageId = ViewerOptionsTabId | 'ai';
14117
+ /**
14118
+ * One section of an Options page, addressed as `<page>.<section>`, for
14119
+ * example `general.personalize` or `advanced.print`. The full list is
14120
+ * `OPTIONS_SECTION_IDS` (derived from the schema at runtime).
14121
+ */
14122
+ type OptionsSectionId = `${ViewerOptionsTabId}.${string}`;
14123
+ /** Values a host forces onto settings. */
14124
+ type OptionsSettingValues = Partial<Record<OptionsSettingId, ViewerOptionPrimitive>>;
14125
+ /** Ribbon and toolbar customisation. */
14126
+ interface RibbonCustomization {
14127
+ /** Ribbon tabs to remove (the File tab included, unlike Customize Ribbon). */
14128
+ hiddenTabs?: readonly ToolbarTabId[];
14129
+ /** Top-level toolbar buttons / control clusters to remove. */
14130
+ hiddenButtons?: readonly ToolbarButtonId[];
14131
+ }
14132
+ /** File > Options (the Settings dialog) customisation. */
14133
+ interface OptionsCustomization {
14134
+ /** Whole pages to remove from the dialog's category rail. */
14135
+ hiddenPages?: readonly OptionsPageId[];
14136
+ /** Sections (`<page>.<section>`) to remove from their page. */
14137
+ hiddenSections?: readonly OptionsSectionId[];
14138
+ /** Individual settings (`<group>.<key>`) to remove wherever they appear. */
14139
+ hiddenSettings?: readonly OptionsSettingId[];
14140
+ /**
14141
+ * Settings pinned to a fixed value. The value is forced into the options
14142
+ * store, user edits to it are ignored, and the control renders read-only.
14143
+ * Add the id to `hiddenSettings` too to lock it invisibly.
14144
+ */
14145
+ locked?: OptionsSettingValues;
14146
+ /**
14147
+ * Host defaults: the value a setting starts at when the user has not saved
14148
+ * a choice of their own. "Reset" returns to these, not to the built-ins.
14149
+ */
14150
+ defaults?: OptionsSettingValues;
14151
+ }
14152
+ /** File tab (backstage) customisation. */
14153
+ interface BackstageCustomization {
14154
+ /** Navigation entries (pages) to remove from the File tab. */
14155
+ hiddenPages?: readonly BackstagePage[];
14156
+ /** Action cards to remove from the pages that show them. */
14157
+ hiddenCards?: readonly BackstageCardId[];
14158
+ }
14159
+ /** Right-click menu customisation. */
14160
+ interface ContextMenuCustomization {
14161
+ /** Entries to remove from the element (right-click on a shape) menu. */
14162
+ hiddenElementCommands?: readonly ContextMenuCommandId[];
14163
+ /** Entries to remove from the empty-canvas menu. */
14164
+ hiddenCanvasCommands?: readonly CanvasContextMenuCommandId[];
14165
+ /**
14166
+ * Entries to remove from the Edit Points menu (right-click a vertex or a
14167
+ * segment while editing a shape's points).
14168
+ */
14169
+ hiddenEditPointsCommands?: readonly EditPointsCommandId[];
14170
+ /** Remove the element context menu entirely. */
14171
+ disableElementMenu?: boolean;
14172
+ /** Remove the empty-canvas context menu entirely. */
14173
+ disableCanvasMenu?: boolean;
14174
+ }
14175
+ /**
14176
+ * A shortcut chord in the form `Mod+Shift+D`: modifiers `Mod` (Ctrl on
14177
+ * Windows/Linux, Cmd on macOS), `Ctrl`, `Meta`, `Alt`, `Shift`, joined by `+`,
14178
+ * followed by a `KeyboardEvent.key` value (`D`, `Delete`, `ArrowLeft`, `F2`).
14179
+ */
14180
+ type ShortcutChord = string;
14181
+ /** Editor keyboard-shortcut customisation. */
14182
+ interface KeyboardCustomization {
14183
+ /** Turn every editor shortcut off (the host owns the keyboard). */
14184
+ disableAll?: boolean;
14185
+ /** Editor commands whose shortcut is turned off. */
14186
+ disabled?: readonly EditorKeyActionName[];
14187
+ /**
14188
+ * Replacement chords per command. A remapped command no longer answers to
14189
+ * its built-in chord; it answers to the chord(s) given here instead.
14190
+ */
14191
+ remap?: Partial<Record<EditorKeyActionName, ShortcutChord | readonly ShortcutChord[]>>;
14192
+ }
14193
+ /**
14194
+ * Chrome regions a host can remove. Each id maps onto one region in every
14195
+ * binding; see `VIEWER_PANEL_IDS` for the catalogue.
14196
+ */
14197
+ type ViewerPanelId = 'statusBar' | 'slidesPane' | 'inspector' | 'notes' | 'quickAccessToolbar' | 'titleBar';
14198
+ /** Feature areas that can be switched off as a whole. */
14199
+ type ViewerFeatureId = 'ai' | 'collaboration' | 'comments' | 'presentMode' | 'editPoints';
14200
+ /**
14201
+ * The click-to-place drawing tools of Insert > Shapes > Lines: Freeform:
14202
+ * Shape and Curve.
14203
+ */
14204
+ type ViewerDrawingToolId = FreeformToolKind;
14205
+ /** Dialogs (and the entry points that open them) a host can remove. */
14206
+ type ViewerDialogId = 'options' | 'share' | 'broadcast' | 'print' | 'export';
14207
+ /** Export formats offered by the File > Export page. */
14208
+ type ViewerExportFormatId = 'pdf' | 'png' | 'video' | 'gif' | 'json' | 'copyImage';
14209
+ /**
14210
+ * The whole customisation object. Every field is optional; omitted fields hide
14211
+ * nothing and lock nothing.
14212
+ */
14213
+ interface ViewerCustomization {
14214
+ ribbon?: RibbonCustomization;
14215
+ options?: OptionsCustomization;
14216
+ backstage?: BackstageCustomization;
14217
+ contextMenu?: ContextMenuCustomization;
14218
+ keyboard?: KeyboardCustomization;
14219
+ /** Chrome regions to remove (`true` hides). */
14220
+ hiddenPanels?: readonly ViewerPanelId[];
14221
+ /** Feature areas to switch off (their buttons, menus, pages and panels). */
14222
+ disabledFeatures?: readonly ViewerFeatureId[];
14223
+ /** Dialogs to remove, along with every entry point that opens them. */
14224
+ hiddenDialogs?: readonly ViewerDialogId[];
14225
+ /** Export formats to remove from File > Export. */
14226
+ hiddenExportFormats?: readonly ViewerExportFormatId[];
14227
+ /** Drawing tools to remove from the Insert > Shapes gallery. */
14228
+ hiddenDrawingTools?: readonly ViewerDrawingToolId[];
14229
+ }
14230
+ //#endregion
14231
+ //#region src/render/options/viewer-options-constraints.d.ts
14232
+ /** Locks and host defaults, both keyed `<group>.<key>`. */
14233
+ interface ViewerOptionsConstraints {
14234
+ locked?: OptionsSettingValues;
14235
+ defaults?: OptionsSettingValues;
14236
+ }
14237
+ //#endregion
14238
+ //#region src/render/options/viewer-options-store.d.ts
14239
+ /**
14240
+ * Framework-neutral store behind the File > Options dialog.
14241
+ *
14242
+ * Holds a `ViewerOptions` snapshot, notifies subscribers on change, and
14243
+ * persists a sparse diff into the shared `pptx-viewer-prefs` localStorage
14244
+ * entry so choices survive reloads in every binding.
14245
+ */
14246
+ type ViewerOptionsListener = (options: ViewerOptions) => void;
14247
+ interface ViewerOptionsStore {
14248
+ getOptions(): ViewerOptions;
14249
+ /** Replace the whole snapshot (e.g. hydrating from a host prop). */
14250
+ setOptions(next: ViewerOptions): void;
14251
+ /** Set one primitive value; ignores unknown keys and mismatched types. */
14252
+ setValue(group: ViewerOptionsGroupId, key: string, value: ViewerOptionPrimitive): void;
14253
+ getValue(group: ViewerOptionsGroupId, key: string): ViewerOptionPrimitive | undefined;
14254
+ /** Toggle a ribbon tab's visibility. The File tab is always kept visible. */
14255
+ setRibbonTabHidden(tabId: ToolbarTabId, hidden: boolean): void;
14256
+ setQuickAccessCommands(commandIds: readonly string[]): void;
14257
+ /** Reset every option (or one tab-group) back to defaults. */
14258
+ reset(group?: ViewerOptionsGroupId): void;
14259
+ subscribe(listener: ViewerOptionsListener): () => void;
14260
+ /**
14261
+ * Subscribe to ONE projection of the options, woken only when that
14262
+ * projection changes.
14263
+ *
14264
+ * `subscribe` above wakes on every option change, which in a binding means
14265
+ * the whole options consumer re-renders because the user toggled something
14266
+ * unrelated. A ribbon control that reads `ribbon.hiddenTabIds` should not
14267
+ * care that an autosave interval moved (issue #145).
14268
+ *
14269
+ * IMPORTANT for array/object slices: every write here deep-clones the whole
14270
+ * options object (`cloneViewerOptions`), so a nested array is a NEW array
14271
+ * after ANY change, even one that did not touch it. Under the default
14272
+ * `Object.is` such a selector would fire on every write and buy nothing.
14273
+ * Pass a value equality for those, e.g. the shared `sameArray`.
14274
+ */
14275
+ subscribeSelector<T>(selector: (options: ViewerOptions) => T, listener: (value: T, previous: T) => void, isEqual?: (a: T, b: T) => boolean): () => void;
14276
+ /**
14277
+ * Apply several option writes as ONE notification, so a multi-field
14278
+ * operation costs a single render instead of one per field.
14279
+ */
14280
+ batch(write: () => void): void;
14281
+ /**
14282
+ * Apply host constraints (see `ViewerOptionsConstraints`): `locked` values
14283
+ * are forced in and every later write to them is ignored; `defaults`
14284
+ * replace the built-in defaults for settings the user never saved, and
14285
+ * become what `reset` returns to. Replaces any previous constraints.
14286
+ */
14287
+ setConstraints(constraints: ViewerOptionsConstraints): void;
14288
+ /** True when the host locked `<group>.<key>`. */
14289
+ isLocked(group: ViewerOptionsGroupId, key: string): boolean;
14290
+ }
14291
+ //#endregion
14292
+ //#region src/render/customization/customization-catalog.d.ts
14293
+ declare const RIBBON_TAB_IDS: readonly ToolbarTabId[];
14294
+ declare const TOOLBAR_BUTTON_IDS: readonly ["share", "broadcast", "export", "undo", "redo", "record", "notes", "fullscreen", "zoom", "navigation", "mergeShapes", "crop"];
14295
+ declare const OPTIONS_PAGE_IDS: readonly OptionsPageId[];
14296
+ declare const OPTIONS_SECTION_IDS: readonly OptionsSectionId[];
14297
+ declare const OPTIONS_SETTING_IDS: readonly OptionsSettingId[];
14298
+ declare const BACKSTAGE_PAGE_IDS: readonly BackstagePage[];
14299
+ declare const BACKSTAGE_CARD_IDS: readonly BackstageCardId[];
14300
+ declare const ELEMENT_CONTEXT_MENU_COMMAND_IDS: readonly ["copy", "cut", "paste", "duplicate", "edit-text", "edit-points", "bring-forward", "send-backward", "bring-front", "send-back", "ai-ask", "ai-fix", "comment", "hyperlink", "table-insert-row-above", "table-insert-row-below", "table-delete-row", "table-insert-col-left", "table-insert-col-right", "table-delete-col", "table-merge-selected", "table-merge-right", "table-merge-down", "table-split", "group", "ungroup", "crop", "merge-union", "merge-combine", "merge-fragment", "merge-intersect", "merge-subtract", "save-as-picture", "edit-alt-text", "size-and-position", "format-shape", "delete"];
14301
+ declare const CANVAS_CONTEXT_MENU_COMMAND_IDS: readonly ["paste", "layout", "reset-slide", "format-background", "grid-and-guides", "ruler"];
14302
+ declare const EDITOR_SHORTCUT_ACTION_IDS: readonly ["undo", "redo", "copy", "cut", "paste", "duplicate", "delete", "selectAll", "group", "ungroup", "nudge", "prevSlide", "nextSlide", "escape", "find", "findReplace", "toggleShortcuts", "alignLeft", "alignCenter", "alignRight", "alignJustify", "increaseFontSize", "decreaseFontSize", "copyFormat", "pasteFormat", "newSlide", "hyperlink", "clearFormatting", "cycleSelectionNext", "cycleSelectionPrev", "pasteSpecial"];
14303
+ declare const VIEWER_PANEL_IDS: readonly ["statusBar", "slidesPane", "inspector", "notes", "quickAccessToolbar", "titleBar"];
14304
+ declare const VIEWER_FEATURE_IDS: readonly ["ai", "collaboration", "comments", "presentMode", "editPoints"];
14305
+ declare const VIEWER_DIALOG_IDS: readonly ["options", "share", "broadcast", "print", "export"];
14306
+ declare const VIEWER_EXPORT_FORMAT_IDS: readonly ["pdf", "png", "video", "gif", "json", "copyImage"];
14307
+ //#endregion
14308
+ //#region src/render/customization/customization-keymap.d.ts
14309
+ /** A parsed `Mod+Shift+D` chord. */
14310
+ interface ParsedShortcutChord {
14311
+ key: string;
14312
+ mod: boolean;
14313
+ ctrl: boolean;
14314
+ meta: boolean;
14315
+ alt: boolean;
14316
+ shift: boolean;
14317
+ }
14318
+ /** The normalised keyboard slice of a resolved customisation. */
14319
+ interface ResolvedKeyboardCustomization {
14320
+ disableAll: boolean;
14321
+ disabled: ReadonlySet<EditorKeyActionName>;
14322
+ remap: ReadonlyMap<EditorKeyActionName, readonly ParsedShortcutChord[]>;
14323
+ }
14324
+ //#endregion
14325
+ //#region src/render/customization/customization-resolve.d.ts
14326
+ /** The normalised, set-based view of a customisation. Treat as immutable. */
14327
+ interface ResolvedCustomization {
14328
+ hiddenActions: ReadonlySet<ToolbarActionId>;
14329
+ hiddenOptionsPages: ReadonlySet<OptionsPageId>;
14330
+ hiddenOptionsSections: ReadonlySet<OptionsSectionId>;
14331
+ hiddenSettings: ReadonlySet<OptionsSettingId>;
14332
+ lockedSettings: OptionsSettingValues;
14333
+ defaultSettings: OptionsSettingValues;
14334
+ hiddenBackstagePages: ReadonlySet<BackstagePage>;
14335
+ hiddenBackstageCards: ReadonlySet<BackstageCardId>;
14336
+ hiddenElementCommands: ReadonlySet<ContextMenuCommandId>;
14337
+ hiddenCanvasCommands: ReadonlySet<CanvasContextMenuCommandId>;
14338
+ hiddenEditPointsCommands: ReadonlySet<EditPointsCommandId>;
14339
+ hiddenDrawingTools: ReadonlySet<ViewerDrawingToolId>;
14340
+ elementMenuEnabled: boolean;
14341
+ canvasMenuEnabled: boolean;
14342
+ hiddenPanels: ReadonlySet<ViewerPanelId>;
14343
+ disabledFeatures: ReadonlySet<ViewerFeatureId>;
14344
+ hiddenDialogs: ReadonlySet<ViewerDialogId>;
14345
+ keyboard: ResolvedKeyboardCustomization;
14346
+ }
14347
+ //#endregion
14348
+ //#region src/render/customization/customization-controller.d.ts
14349
+ /** The imperative methods every binding's component handle exposes. */
14350
+ interface ViewerCustomizationApi {
14351
+ /** The current customisation object (a snapshot; do not mutate). */
14352
+ getCustomization(): ViewerCustomization;
14353
+ /** Replace the whole customisation. */
14354
+ setCustomization(next: ViewerCustomization): void;
14355
+ /** Merge a partial customisation (see `mergeCustomization`). */
14356
+ updateCustomization(patch: ViewerCustomization): void;
14357
+ /** Drop every customisation, back to the stock UI. */
14358
+ resetCustomization(): void;
14359
+ hideRibbonTab(tab: ToolbarTabId): void;
14360
+ showRibbonTab(tab: ToolbarTabId): void;
14361
+ hideToolbarButton(button: ToolbarButtonId): void;
14362
+ showToolbarButton(button: ToolbarButtonId): void;
14363
+ hideOptionsPage(page: OptionsPageId): void;
14364
+ showOptionsPage(page: OptionsPageId): void;
14365
+ hideOptionsSection(section: OptionsSectionId): void;
14366
+ showOptionsSection(section: OptionsSectionId): void;
14367
+ hideSetting(setting: OptionsSettingId): void;
14368
+ showSetting(setting: OptionsSettingId): void;
14369
+ /** Pin a setting to `value`; `hidden` also removes it from the dialog. */
14370
+ lockSetting(setting: OptionsSettingId, value: ViewerOptionPrimitive, hidden?: boolean): void;
14371
+ unlockSetting(setting: OptionsSettingId): void;
14372
+ /** Set (or with `undefined`, clear) the host default for a setting. */
14373
+ setSettingDefault(setting: OptionsSettingId, value: ViewerOptionPrimitive | undefined): void;
14374
+ hideBackstagePage(page: BackstagePage): void;
14375
+ showBackstagePage(page: BackstagePage): void;
14376
+ hideBackstageCard(card: BackstageCardId): void;
14377
+ showBackstageCard(card: BackstageCardId): void;
14378
+ hideContextMenuCommand(command: ContextMenuCommandId): void;
14379
+ showContextMenuCommand(command: ContextMenuCommandId): void;
14380
+ hideCanvasContextMenuCommand(command: CanvasContextMenuCommandId): void;
14381
+ showCanvasContextMenuCommand(command: CanvasContextMenuCommandId): void;
14382
+ disableShortcut(action: EditorKeyActionName): void;
14383
+ enableShortcut(action: EditorKeyActionName): void;
14384
+ /** Move a command onto new chord(s); `undefined` restores the built-in chord. */
14385
+ remapShortcut(action: EditorKeyActionName, chords: ShortcutChord | readonly ShortcutChord[] | undefined): void;
14386
+ setPanelVisible(panel: ViewerPanelId, visible: boolean): void;
14387
+ setFeatureEnabled(feature: ViewerFeatureId, enabled: boolean): void;
14388
+ setDialogAvailable(dialog: ViewerDialogId, available: boolean): void;
14389
+ }
14390
+ interface ViewerCustomizationController {
14391
+ /** The helper methods, ready to spread onto a component handle. */
14392
+ readonly api: ViewerCustomizationApi;
14393
+ /** The normalised view the render sites read. Stable until the next change. */
14394
+ getResolved(): ResolvedCustomization;
14395
+ /** Subscribe to every change; returns the unsubscribe function. */
14396
+ subscribe(listener: () => void): () => void;
14397
+ }
13782
14398
  //#endregion
13783
14399
  //#region src/render/inline-text-commit.d.ts
13784
14400
  /**
@@ -13878,6 +14494,31 @@ interface ViewportFitOptions {
13878
14494
  maxFitScale?: number | null;
13879
14495
  }
13880
14496
  //#endregion
14497
+ //#region src/render/picture-crop/crop-geometry.d.ts
14498
+ /** An axis-aligned rectangle in slide pixels. */
14499
+ interface CropRect {
14500
+ x: number;
14501
+ y: number;
14502
+ width: number;
14503
+ height: number;
14504
+ }
14505
+ /** The four `a:srcRect` insets as fractions of the image (negative pads). */
14506
+ interface CropInsets {
14507
+ cropLeft: number;
14508
+ cropTop: number;
14509
+ cropRight: number;
14510
+ cropBottom: number;
14511
+ }
14512
+ /** What a crop edit writes back onto the picture element. */
14513
+ type CropElementUpdate = CropInsets & CropRect;
14514
+ /** The snapshot a crop session restores on cancel. */
14515
+ interface CropSession {
14516
+ elementId: string;
14517
+ original: CropElementUpdate;
14518
+ /** Insets the picture did not carry at all (no `a:srcRect` opinion). */
14519
+ absentInsets: readonly (keyof CropInsets)[];
14520
+ }
14521
+ //#endregion
13881
14522
  //#region src/web-components/select-value.d.ts
13882
14523
  /** Public DOM shape used by all bindings; the element is not a native select. */
13883
14524
  interface PptxUiSelectElement extends HTMLElement {
@@ -13937,5 +14578,5 @@ interface TransitionOverlayParams {
13937
14578
  */
13938
14579
  declare function playTransitionOverlay(params: TransitionOverlayParams): () => void;
13939
14580
  //#endregion
13940
- export { RANDOM_ELIGIBLE_TYPES as $, PptxSmartArtData as $n, savedPresentationFileName as $t, FieldSubstitutionContext as A, PptxComment as An, canInteractWithElement as At, MobileSheetKey as B, PptxEmbeddedFont as Bn, loadPresentationDeck as Bt, ElementAnimationState as C, PptxAnimationRepeatMode as Cn, ViewerMode as Ct, ExternalCollaborationAwareness as D, PptxAnimationTrigger as Dn, WHEEL_SPOKE_COUNTS as Dt, ElementUpdateOptions as E, PptxAnimationTimingCurve as En, ViewportFitPadding as Et, InlineTextEditSnapshot as F, PptxCustomProperty as Fn, getP14TransitionAnimations as Ft, PPTX_OPEN_ACCEPT as G, PptxModernCommentAuthor as Gn, rememberSessionDeck as Gt, P14_TRANSITION_KEYFRAMES as H, PptxHeaderFooter as Hn, overlayInlineTextSnapshot as Ht, InlineTextSelection as I, PptxCustomShow as In, getSessionTabId as It, PowerPointViewerAPI as J, PptxPresentationProperties as Jn, resolveOrientation as Jt, PRESENTATION_OPEN_EXTENSIONS as K, PptxModifyVerifier as Kn, resolveDirection as Kt, InsertChartKind as L, PptxData as Ln, getSlideTransitionAnimations as Lt, Guide as M, PptxCommentMention as Mn, describeCollaborationShellState as Mt, INSTANT as N, PptxCompatibilityWarning as Nn, forgetSessionDeck as Nt, ExternalCollaborationSession as O, PptxAppProperties as On, ZoomNavigationTarget as Ot, InlineListReadResult as P, PptxCoreProperties as Pn, getCinematicTransitionAnimations as Pt, PrintSettings as Q, PptxSlideTransition as Qn, restoreSessionDeck as Qt, MasterViewCrudAction as R, PptxElement as Rn, isLegacyBinaryPresentation as Rt, EASE as S, PptxAnimationPreset as Sn, ViewerFontSource as St, ElementUpdate as T, PptxAnimationTimelineAnchor as Tn, ViewportFitOptions as Tt, P14_TRANSITION_KEYFRAMES_2 as U, PptxImageEffects as Un, parsePresentationSessionId as Ut, ModifyPasswordCheckResult as V, PptxHandoutMaster as Vn, loadSessionDeck as Vt, P14_TRANSITION_KEYFRAMES_ALL as W, PptxLayoutPreview as Wn, presentationBaseName as Wt, PresentationPointerTool as X, PptxSlide as Xn, resolveTransitionDurationMs as Xt, PresentationBlackout as Y, PptxSection as Yn, resolveSlideTransition as Yt, PresentationSnapshot as Z, PptxSlideMaster as Zn, resolveWheelSpokeCount as Zt, CompatibilityWarningToast as _, OleObjectType as _n, TextSegment as _r, SlideTransitionAnimations as _t, AnimationGroup as a, defaultThemeColors as an, PptxTheme as ar, RulerUnit as at, DEFAULT_MORPH_DURATION_MS as b, PptxAfterAnimationAction as bn, TextAdvancedChanges as bt, CanvasSize as c, vermilionLightTheme as cn, PptxThemeFontScheme as cr, SLIDE_TRANSITION_KEYFRAMES_CSS as ct, CollabLoadOrigin as d, PptxHandlerSaveOptions as dn, PptxViewProperties as dr, SessionDeck as dt, ThemeCatalogEntry as en, PptxSmartArtNodeStyle as er, ReadOnlyRecommendation as et, CollaborationConfig as f, PptxSaveFormat as fn, ShapeStyle as fr, ShapePresetType as ft, CollaborationTransport as g, MediaPptxElement as gn, TablePptxElement as gr, SlideTemplateId as gt, CollaborationShellState as h, MasterViewTab as hn, SmartArtLayoutType as hr, SlideSizeRescaleMode as ht, AlignEdge as i, defaultRadius as in, PptxTextStyleLevels as ir, RibbonTransitionDraft as it, GradientState as j, PptxCommentAuthor as jn, createImageElementFromFile as jt, ExternalCollaborationSnapshot as k, PptxChartData as kn, buildInlineTextCommitPatch as kt, ChangeCaseMode as l, AccessibilityIssue as ln, PptxThemeOption as lr, SanitizedPresence as lt, CollaborationRole as m, ElementAction as mn, SmartArtLayout as mr, SlideSizeEmu as mt, playTransitionOverlay as n, ViewerThemeColors as nn, PptxTableData as nr, ResolvedDirection as nt, AutosaveRecord as o, themeToCssVars as on, PptxThemeColorRef as or, RunProgramNotice as ot, CollaborationLivePatcher as p, SvgExportOptions as pn, SmartArtColorScheme as pr, ShareDefaults as pt, PasteSpecialFormat as q, PptxNotesMaster as qn, resolveDirection8 as qt, AccountAuthConfig as r, defaultCssVars as rn, PptxTagCollection as rr, ResolvedDirection8 as rt, CINEMATIC_TRANSITION_KEYFRAMES as s, vermilionDarkTheme as sn, PptxThemeColorScheme as sr, SLIDE_TRANSITION_KEYFRAMES as st, TransitionOverlayParams as t, ViewerTheme as tn, PptxTableCellStyle as tr, RemoteCursor as tt, ChartPartRef as u, PptxHandler as un, PptxTransitionType as ur, SavedPresentationFormat as ut, ConnectionStatus as v, OlePptxElement as vn, TextStyle as vr, StrokeToInkElementOpts as vt, ElementClipboardPayload as w, PptxAnimationSequence as wn, ViewerQuickAccessOptions as wt, DEFAULT_TRANSITION_DURATION_MS as x, PptxAnimationDirection as xn, ToolbarActionId as xt, CssStyleMap as y, ParsedTableStyleMap as yn, XmlObject as yr, TRANSITION_SPEED_DURATION_MS as yt, MasterViewCrudActionId as z, PptxElementAnimation as zn, isSupportedPresentationFile as zt };
13941
- //# sourceMappingURL=transition-overlay-55c8XGkf.d.ts.map
14581
+ export { KeyboardCustomization as $, AccessibilityIssue as $n, PptxThemeFontScheme as $r, VIEWER_DIALOG_IDS as $t, CssStyleMap as A, loadPresentationDeck as An, PptxElementAnimation as Ar, RibbonCustomization as At, ElementUpdateOptions as B, resolveTransitionDurationMs as Bn, PptxSection as Br, ShareDefaults as Bt, CollaborationTransport as C, forgetSessionDeck as Cn, PptxCommentMention as Cr, RANDOM_ELIGIBLE_TYPES as Ct, ContextMenuCustomization as D, getSlideTransitionAnimations as Dn, PptxCustomShow as Dr, ResolvedCustomization as Dt, ContextMenuCommandId as E, getSessionTabId as En, PptxCustomProperty as Er, RemoteCursor as Et, ELEMENT_CONTEXT_MENU_COMMAND_IDS as F, rememberSessionDeck as Fn, PptxLayoutPreview as Fr, SLIDE_TRANSITION_KEYFRAMES_CSS as Ft, FreeformToolKind as G, ViewerTheme as Gn, PptxSmartArtNodeStyle as Gr, SlideTransitionAnimations as Gt, ExternalCollaborationSession as H, restoreSessionDeck as Hn, PptxSlideMaster as Hr, SlideSizeEmu as Ht, EditorKeyActionName as I, resolveDirection as In, PptxModernCommentAuthor as Ir, SanitizedPresence as It, INSTANT as J, defaultRadius as Jn, PptxTagCollection as Jr, TRANSITION_SPEED_DURATION_MS as Jt, GradientState as K, ViewerThemeColors as Kn, PptxTableCellStyle as Kr, StrokeToInkElementOpts as Kt, ElementAnimationState as L, resolveDirection8 as Ln, PptxModifyVerifier as Lr, SavedPresentationFormat as Lt, DEFAULT_TRANSITION_DURATION_MS as M, overlayInlineTextSnapshot as Mn, PptxHandoutMaster as Mr, RulerUnit as Mt, EASE as N, parsePresentationSessionId as Nn, PptxHeaderFooter as Nr, RunProgramNotice as Nt, CropElementUpdate as O, isLegacyBinaryPresentation as On, PptxData as Or, ResolvedDirection as Ot, EDITOR_SHORTCUT_ACTION_IDS as P, presentationBaseName as Pn, PptxImageEffects as Pr, SLIDE_TRANSITION_KEYFRAMES as Pt, InsertChartKind as Q, vermilionLightTheme as Qn, PptxThemeColorScheme as Qr, ToolbarTabId as Qt, ElementClipboardPayload as R, resolveOrientation as Rn, PptxNotesMaster as Rr, SessionDeck as Rt, CollaborationShellState as S, describeCollaborationShellState as Sn, PptxCommentAuthor as Sr, PrintSettings as St, ConnectionStatus as T, getP14TransitionAnimations as Tn, PptxCoreProperties as Tr, ReadOnlyRecommendation as Tt, ExternalCollaborationSnapshot as U, savedPresentationFileName as Un, PptxSlideTransition as Ur, SlideSizeRescaleMode as Ut, ExternalCollaborationAwareness as V, resolveWheelSpokeCount as Vn, PptxSlide as Vr, ShortcutChord as Vt, FieldSubstitutionContext as W, ThemeCatalogEntry as Wn, PptxSmartArtData as Wr, SlideTemplateId as Wt, InlineTextEditSnapshot as X, themeToCssVars as Xn, PptxTheme as Xr, ToolbarActionId as Xt, InlineListReadResult as Y, defaultThemeColors as Yn, PptxTextStyleLevels as Yr, TextAdvancedChanges as Yt, InlineTextSelection as Z, vermilionDarkTheme as Zn, PptxThemeColorRef as Zr, ToolbarButtonId as Zt, ChartPartRef as _, WHEEL_SPOKE_COUNTS as _n, PptxAnimationTimingCurve as _r, PasteSpecialFormat as _t, AnimationGroup as a, SmartArtLayout as ai, ViewerCustomizationController as an, ElementAction as ar, OPTIONS_SECTION_IDS as at, CollaborationLivePatcher as b, canInteractWithElement as bn, PptxChartData as br, PresentationPointerTool as bt, BACKSTAGE_PAGE_IDS as c, TextSegment as ci, ViewerFeatureId as cn, OleObjectType as cr, OptionsPageId as ct, BackstagePage as d, ViewerOptionPrimitive as dn, PptxAfterAnimationAction as dr, OptionsSettingValues as dt, PptxThemeOption as ei, VIEWER_EXPORT_FORMAT_IDS as en, MergeShapeOperation as er, MasterViewCrudAction as et, CANVAS_CONTEXT_MENU_COMMAND_IDS as f, ViewerOptionsStore as fn, PptxAnimationDirection as fr, P14_TRANSITION_KEYFRAMES as ft, ChangeCaseMode as g, ViewportFitPadding as gn, PptxAnimationTimelineAnchor as gr, PRESENTATION_OPEN_EXTENSIONS as gt, CanvasSize as h, ViewportFitOptions as hn, PptxAnimationSequence as hr, PPTX_OPEN_ACCEPT as ht, AlignEdge as i, SmartArtColorScheme as ii, ViewerCustomizationApi as in, SvgExportOptions as ir, OPTIONS_PAGE_IDS as it, DEFAULT_MORPH_DURATION_MS as j, loadSessionDeck as jn, PptxEmbeddedFont as jr, RibbonTransitionDraft as jt, CropSession as k, isSupportedPresentationFile as kn, PptxElement as kr, ResolvedDirection8 as kt, BackstageCardId as l, TextStyle as li, ViewerFontSource as ln, OlePptxElement as lr, OptionsSectionId as lt, CanvasContextMenuCommandId as m, ViewerQuickAccessOptions as mn, PptxAnimationRepeatMode as mr, P14_TRANSITION_KEYFRAMES_ALL as mt, playTransitionOverlay as n, PptxViewProperties as ni, VIEWER_PANEL_IDS as nn, PptxHandlerSaveOptions as nr, MobileSheetKey as nt, AutosaveRecord as o, SmartArtLayoutType as oi, ViewerDialogId as on, MasterViewTab as or, OPTIONS_SETTING_IDS as ot, CINEMATIC_TRANSITION_KEYFRAMES as p, ViewerPanelId as pn, PptxAnimationPreset as pr, P14_TRANSITION_KEYFRAMES_2 as pt, Guide as q, defaultCssVars as qn, PptxTableData as qr, TOOLBAR_BUTTON_IDS as qt, AccountAuthConfig as r, ShapeStyle as ri, ViewerCustomization as rn, PptxSaveFormat as rr, ModifyPasswordCheckResult as rt, BACKSTAGE_CARD_IDS as s, TablePptxElement as si, ViewerExportFormatId as sn, MediaPptxElement as sr, OptionsCustomization as st, TransitionOverlayParams as t, PptxTransitionType as ti, VIEWER_FEATURE_IDS as tn, PptxHandler as tr, MasterViewCrudActionId as tt, BackstageCustomization as u, XmlObject as ui, ViewerMode as un, ParsedTableStyleMap as ur, OptionsSettingId as ut, CollabLoadOrigin as v, ZoomNavigationTarget as vn, PptxAnimationTrigger as vr, PowerPointViewerAPI as vt, CompatibilityWarningToast as w, getCinematicTransitionAnimations as wn, PptxCompatibilityWarning as wr, RIBBON_TAB_IDS as wt, CollaborationRole as x, createImageElementFromFile as xn, PptxComment as xr, PresentationSnapshot as xt, CollaborationConfig as y, buildInlineTextCommitPatch as yn, PptxAppProperties as yr, PresentationBlackout as yt, ElementUpdate as z, resolveSlideTransition as zn, PptxPresentationProperties as zr, ShapePresetType as zt };
14582
+ //# sourceMappingURL=transition-overlay-ydBEO9eL.d.ts.map