pptx-angular-viewer 3.1.1 → 3.2.1

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.
@@ -5563,6 +5563,24 @@ declare function sampleColorFromSlide(clientX: number, clientY: number): Eyedrop
5563
5563
  */
5564
5564
  declare function pickColorByClickFallback(): Promise<string | null>;
5565
5565
 
5566
+ /**
5567
+ * Slide-show right-click menu: shared item structure for every binding.
5568
+ *
5569
+ * PowerPoint shows a minimal Next/Previous/See All Slides/Presenter View menu
5570
+ * (plus pointer tools, blank-screen and End Presentation) when you right-click
5571
+ * during a slide show and Options > Advanced > "Show menu on right mouse
5572
+ * click" is on. React built the full menu first (`PresentationContextMenu`);
5573
+ * this module gives Vue/Angular/Svelte/Vanilla the same item order, grouping
5574
+ * and i18n keys instead of each hand-porting React's JSX structure and
5575
+ * drifting. A binding maps `getPresentationContextMenuSections` onto its own
5576
+ * menu component and wires each action id to whatever handler it already
5577
+ * uses for its toolbar's equivalent button; a capability the binding lacks
5578
+ * (e.g. no "See All Slides" grid) is simply left out of `capabilities`, and
5579
+ * the section/item is omitted rather than rendered disabled.
5580
+ */
5581
+ /** One selectable action in the slide-show right-click menu. */
5582
+ type PresentationContextMenuActionId = 'next' | 'previous' | 'seeAllSlides' | 'presenterView' | 'pointerArrow' | 'pointerPen' | 'pointerHighlighter' | 'pointerLaser' | 'eraseInk' | 'blankBlack' | 'blankWhite' | 'endShow';
5583
+
5566
5584
  /**
5567
5585
  * How much elapsed time one fill of the console's progress bar represents.
5568
5586
  *
@@ -6999,6 +7017,15 @@ interface ViewerAdvancedOptions {
6999
7017
  showGrid: boolean;
7000
7018
  snapToGrid: boolean;
7001
7019
  disableHardwareAcceleration: boolean;
7020
+ /**
7021
+ * Force every opt-in interactive 3D scene (SmartArt, bar/line/area/pie/
7022
+ * surface charts) to fall back to its flat 2D rendering, even when the
7023
+ * host has enabled that scene via its own `smartArt3D`/`*Chart3D` prop.
7024
+ * A host opting in says "this deck may want 3D"; this is the viewer
7025
+ * user's own override for when the WebGL scenes it renders are too much
7026
+ * for their machine. See `resolve3DRenderingFlags`.
7027
+ */
7028
+ disable3DRendering: boolean;
7002
7029
  openDocumentsView: OpenDocumentsView;
7003
7030
  slideShowShowMenuOnRightClick: boolean;
7004
7031
  slideShowShowPopupToolbar: boolean;
@@ -7127,6 +7154,17 @@ interface PrintSettings {
7127
7154
  slideRange: PrintSlideRange;
7128
7155
  customRangeFrom: number;
7129
7156
  customRangeTo: number;
7157
+ /**
7158
+ * PowerPoint's Print > "Scale to Fit Paper". `true` (the default, and the
7159
+ * only behavior this printed output ever had before this field existed)
7160
+ * shrinks/grows each slide image to fill its page/cell while preserving
7161
+ * aspect ratio. `false` prints at the slide's native pixel size instead,
7162
+ * which may overflow or under-fill the page, exactly like PowerPoint with
7163
+ * the option off. Optional so existing `Partial<PrintSettings>` literals
7164
+ * across every binding keep compiling; `validatePrintSettings` defaults it
7165
+ * to `true`.
7166
+ */
7167
+ scaleToFit?: boolean;
7130
7168
  }
7131
7169
  /** Default print settings used when the dialog opens. */
7132
7170
  declare const DEFAULT_PRINT_SETTINGS: PrintSettings;
@@ -7162,6 +7200,14 @@ interface PrintHtmlDocumentOptions {
7162
7200
  orientation: PrintOrientation;
7163
7201
  colorFilter: string;
7164
7202
  frameSlides: boolean;
7203
+ /**
7204
+ * PowerPoint's Print > "Scale to Fit Paper". Defaults to `true` (shrink/grow
7205
+ * each slide image to fill its page/cell, the only behavior this printed
7206
+ * output ever had before this option existed). `false` prints images at
7207
+ * their native size instead, which may overflow (clipped by the cell's
7208
+ * `overflow: hidden`) or under-fill the page/cell.
7209
+ */
7210
+ scaleToFit?: boolean;
7165
7211
  }
7166
7212
  /**
7167
7213
  * Assemble the complete printable HTML document string (doctype + head with
@@ -8552,6 +8598,11 @@ declare class EditorStateService {
8552
8598
  */
8553
8599
  private readonly translate;
8554
8600
  private readonly history;
8601
+ /**
8602
+ * Apply File > Options > Advanced > "Maximum number of undos" at runtime.
8603
+ * Trims the past stack immediately if the new limit is smaller.
8604
+ */
8605
+ setHistoryDepth(depth: number): void;
8555
8606
  /**
8556
8607
  * Resolve a translation. Outside an injection context (see {@link translate})
8557
8608
  * falls back to the canonical English dictionary text, then the raw key.
@@ -9010,6 +9061,12 @@ declare class LoadContentService {
9010
9061
  private handler;
9011
9062
  private renderToken;
9012
9063
  private activeBlobUrls;
9064
+ /**
9065
+ * Optional: `inject()` needs an active injection context, which the
9066
+ * colocated unit tests construct this service without. Trust Center >
9067
+ * "Allow external content" reads through this when present.
9068
+ */
9069
+ private readonly optionsService;
9013
9070
  constructor();
9014
9071
  /**
9015
9072
  * Serialise the current (loaded) presentation back to `.pptx` bytes.
@@ -9208,10 +9265,15 @@ declare class PrintService {
9208
9265
  print(rawSettings: PrintSettings, slides: PptxSlide[], activeSlideIndex: number, captureSlide: CaptureSlideFn, slideSize?: Readonly<{
9209
9266
  width: number;
9210
9267
  height: number;
9211
- }>): Promise<boolean>;
9268
+ }>,
9269
+ /** Options > Advanced > "Print hidden slides". Defaults to PowerPoint's own default (excluded). */
9270
+ includeHiddenSlides?: boolean): Promise<boolean>;
9212
9271
  /**
9213
- * Open a print window, write the document, focus, and trigger printing.
9214
- * Returns `false` if the popup was blocked.
9272
+ * Open a print window, write the document, focus, and trigger printing, all
9273
+ * in one synchronous call. Used by the outline/slides paths, which never
9274
+ * `await` before this point so the window is never at risk of being popup
9275
+ * blocked -- no need for the placeholder-then-real-document split `print`'s
9276
+ * notes/handouts branch needs (see `openPendingPrintWindow`/`finishPrintWindow`).
9215
9277
  */
9216
9278
  private _open;
9217
9279
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PrintService, never>;
@@ -9695,6 +9757,8 @@ declare class ViewerCanvasEditingService {
9695
9757
  private readonly dialogs;
9696
9758
  private readonly formatPainter;
9697
9759
  private readonly collab;
9760
+ /** Options > Proofing > AutoCorrect, applied to committed inline-edit text. */
9761
+ private readonly viewerOpts;
9698
9762
  /** Id of the element being inline text-edited, or null. */
9699
9763
  readonly editingId: _angular_core.WritableSignal<string | null>;
9700
9764
  /** Open editor context-menu position (client coords), or null. */
@@ -9861,6 +9925,7 @@ interface CollaborationSessionHost {
9861
9925
  }
9862
9926
  declare class ViewerCollaborationSessionService {
9863
9927
  private readonly collab;
9928
+ private readonly viewerOpts;
9864
9929
  /** Share (collaboration) dialog visibility. */
9865
9930
  readonly showShare: _angular_core.WritableSignal<boolean>;
9866
9931
  /** Broadcast dialog visibility. */
@@ -10123,6 +10188,14 @@ interface ExportHost {
10123
10188
  readonly mergedSlides: () => readonly PptxSlide[];
10124
10189
  /** Resolve the live slide-stage element, or `undefined` when not mounted. */
10125
10190
  readonly resolveStage: () => HTMLElement | undefined;
10191
+ /**
10192
+ * File > Options > Advanced > "Image Size and Quality"
10193
+ * (`resolveImageResolutionScale`), read fresh for every PNG/PDF capture.
10194
+ * Not applied to GIF/video (those intentionally stay at their own fixed
10195
+ * capture resolution). Defaults to 2 (the pre-existing hardcoded value)
10196
+ * when omitted.
10197
+ */
10198
+ readonly imageExportScale?: () => number;
10126
10199
  }
10127
10200
  declare class ViewerExportService {
10128
10201
  private readonly exportSvc;
@@ -10156,7 +10229,13 @@ declare class ViewerExportService {
10156
10229
  exportGif(): Promise<void>;
10157
10230
  /** Export every slide as a WebM video (3s per slide) via MediaRecorder. */
10158
10231
  exportVideo(): Promise<void>;
10159
- onPrint(settings: PrintSettings): Promise<void>;
10232
+ /**
10233
+ * `includeHiddenSlides`: Options > Advanced > "Print hidden slides".
10234
+ * `highQuality`: Options > Advanced > "High quality" raster scale for the
10235
+ * notes/handouts fallback path, composed on top of the host's own Image
10236
+ * Size/Quality scale.
10237
+ */
10238
+ onPrint(settings: PrintSettings, includeHiddenSlides?: boolean, highQuality?: boolean): Promise<void>;
10160
10239
  onCancelExport(): void;
10161
10240
  /**
10162
10241
  * Open the progress modal and arm a fresh `AbortController` for an export.
@@ -10169,7 +10248,12 @@ declare class ViewerExportService {
10169
10248
  * per-slide progress and bailing out cooperatively when `abortSignal.aborted`.
10170
10249
  */
10171
10250
  private captureSlideCanvases;
10172
- /** Flip the live stage to `index`, let it settle, and capture it to a PNG data URL. */
10251
+ /**
10252
+ * Flip the live stage to `index`, let it settle, and capture it to a PNG
10253
+ * data URL. `scale` defaults to the host's own Image Size/Quality scale
10254
+ * (matching PNG/PDF export); the print notes/handouts path passes a higher
10255
+ * value when Options > Advanced > "High quality" is on.
10256
+ */
10173
10257
  private captureSlideDataUrl;
10174
10258
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerExportService, never>;
10175
10259
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ViewerExportService>;
@@ -10190,6 +10274,12 @@ interface FileIOHost {
10190
10274
  * encrypted OLE2 container instead of a plain ZIP.
10191
10275
  */
10192
10276
  readonly saveIntent: () => DeckSaveIntent;
10277
+ /**
10278
+ * Options > Accessibility > "feedback with sound", and Options > Save >
10279
+ * "keep the last AutoRecover version": run once a Save/Save-As download
10280
+ * actually completes.
10281
+ */
10282
+ readonly afterSuccessfulSave: (format: PptxSaveFormat) => void;
10193
10283
  }
10194
10284
  declare class ViewerFileIOService {
10195
10285
  private readonly loader;
@@ -10228,8 +10318,6 @@ declare class ViewerFileIOService {
10228
10318
  * `sourceName` (the host `fileName` input) seeds the download filename.
10229
10319
  */
10230
10320
  exportJson(sourceName?: string | null): void;
10231
- /** Bundle the presentation and its usage notes in a shareable ZIP archive. */
10232
- packageForSharing(): Promise<void>;
10233
10321
  /**
10234
10322
  * File ▸ Open: host override (`onOpenFile` input) takes precedence; otherwise
10235
10323
  * a built-in native picker loads the chosen presentation in place.
@@ -10519,6 +10607,15 @@ declare class ViewerOptionsService {
10519
10607
  historyDepth(): number;
10520
10608
  /** AutoRecover cadence in seconds for the autosave engine. */
10521
10609
  autosaveIntervalSeconds(): number;
10610
+ /**
10611
+ * Raster-scale multiplier for PNG/PDF export and copy-slide-as-image.
10612
+ * Multiplied against the pre-existing 2x baseline (not used outright) so
10613
+ * the default "High fidelity" preset (raw multiplier 1) keeps today's
10614
+ * export quality instead of silently downgrading it; the explicit ppi
10615
+ * presets still scale proportionally from that baseline. Mirrors the
10616
+ * vanilla/vue/svelte bindings.
10617
+ */
10618
+ imageExportScale(): number;
10522
10619
  /** Print-dialog seed; `undefined` keeps the dialog's own recents. */
10523
10620
  printDefaults(): Partial<PrintSettings> | undefined;
10524
10621
  /** Option-driven CSS classes for the viewer root (`pptx-ng-*` prefixed). */
@@ -10541,6 +10638,17 @@ declare class ViewerOptionsService {
10541
10638
  * snapshot from the shared IndexedDB store. Resolves with the purge count.
10542
10639
  */
10543
10640
  clearCache(): Promise<number>;
10641
+ /**
10642
+ * Options > Save > "keep the last AutoRecover version": whether a
10643
+ * successful `.pptx` save should discard the AutoRecover snapshot for the
10644
+ * deck just saved (PowerPoint's default: the real file already has the
10645
+ * work, so the snapshot is stale unless the user asked to keep it).
10646
+ */
10647
+ shouldDiscardAutosaveOnSave(): boolean;
10648
+ /** Options > Save > "clear cache on close": whether to wipe snapshots now. */
10649
+ shouldClearCacheOnClose(): boolean;
10650
+ /** Options > Save > "cache retention": prune snapshots older than N days. */
10651
+ pruneExpiredCache(): Promise<void>;
10544
10652
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerOptionsService, never>;
10545
10653
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ViewerOptionsService>;
10546
10654
  }
@@ -10973,12 +11081,46 @@ declare class PowerPointViewerComponent implements PowerPointViewerAPI {
10973
11081
  private readonly encryptedNotice;
10974
11082
  /** The `<main>` host; used to locate the live `.pptx-ng-canvas-stage`. */
10975
11083
  private readonly mainEl;
11084
+ /**
11085
+ * Whether the CURRENT document's Protected View lock was lifted via the
11086
+ * banner's "Enable Editing" button this session. A document the host
11087
+ * opened read-only (`canEditInput()` false) never shows the banner, so
11088
+ * there is nothing to dismiss for it; reset to `false` whenever a new
11089
+ * presentation finishes loading (see the `loader.slides()` effect below),
11090
+ * so re-opening (or opening another) file starts protected again,
11091
+ * mirroring PowerPoint's own per-document banner.
11092
+ */
11093
+ protected readonly protectedViewDismissed: _angular_core.WritableSignal<boolean>;
10976
11094
  /**
10977
11095
  * Effective edit permission: the host's `canEdit` input gated by Trust
10978
11096
  * Center > "Open presentations in Protected View", which forces the deck
10979
- * read-only while enabled (File > Options wiring, mirrors PowerPoint).
11097
+ * read-only while enabled (File > Options wiring, mirrors PowerPoint),
11098
+ * unless the user has lifted it via `enableEditing()` for this document.
10980
11099
  */
10981
11100
  protected readonly canEdit: _angular_core.Signal<boolean>;
11101
+ /** Whether the Protected View banner should show: host allows editing, the option still blocks it, and the user hasn't dismissed it yet. */
11102
+ protected readonly protectedViewActive: _angular_core.Signal<boolean>;
11103
+ /** Lift Protected View's read-only lock for the current document (File > Options > Trust Center). */
11104
+ protected enableEditing(): void;
11105
+ /**
11106
+ * Toolbar/ribbon ids to hide: the host's own `hiddenActions` input, UNIONED
11107
+ * with File > Options > Customize Ribbon's `ribbon.hiddenTabIds` (see
11108
+ * {@link mergeHiddenActions}). Every chrome component downstream (ribbon,
11109
+ * title bar, mobile toolbar/menu, status bar) must see BOTH, or ticking a
11110
+ * tab off in Customize Ribbon changes what the pane displays without
11111
+ * changing what actually renders.
11112
+ */
11113
+ protected readonly effectiveHiddenActions: _angular_core.Signal<ToolbarActionId[]>;
11114
+ /**
11115
+ * File > Options > Quick Access Toolbar > Position "Below the Ribbon": the
11116
+ * configured commands beyond the dedicated Save/Undo/Redo trio (which stay
11117
+ * in the title bar regardless of position), or `null` when the strip has
11118
+ * nothing to show there (hidden, `above`, or no extra commands configured).
11119
+ * {@link TitleBarComponent} independently suppresses its own inline strip
11120
+ * under the identical {@link resolveBelowRibbonQuickAccess} condition, so
11121
+ * the commands render in exactly one place.
11122
+ */
11123
+ protected readonly belowRibbonQuickAccess: _angular_core.Signal<ViewerQuickAccessOptions | null>;
10982
11124
  protected readonly activeSlideIndex: _angular_core.WritableSignal<number>;
10983
11125
  /**
10984
11126
  * True in an audience display once the presenter ended the session and the
@@ -11354,6 +11496,11 @@ declare class PowerPointViewerComponent implements PowerPointViewerAPI {
11354
11496
  color: string;
11355
11497
  width: number;
11356
11498
  }): void;
11499
+ /**
11500
+ * Comment/reply author: the host `authorName` input wins, otherwise fall
11501
+ * back to Options > General > "User name" before the generic "You".
11502
+ */
11503
+ private commentAuthorName;
11357
11504
  /** Append a comment to the active slide (one history entry). */
11358
11505
  onCommentAdd(text: string): void;
11359
11506
  /** Remove a comment from the active slide. */
@@ -11383,6 +11530,8 @@ declare class PowerPointViewerComponent implements PowerPointViewerAPI {
11383
11530
  * is delegated to {@link ViewerKeyboardService}.
11384
11531
  */
11385
11532
  onKeyDown(event: KeyboardEvent): void;
11533
+ /** Options > Save > "clear cache on close": wipe recovery snapshots when the tab closes. */
11534
+ protected clearCacheOnUnload(): void;
11386
11535
  /** Resolve the live slide-stage element within `<main>`. */
11387
11536
  private stageElement;
11388
11537
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PowerPointViewerComponent, never>;
@@ -11715,6 +11864,7 @@ declare class ViewerCompareService {
11715
11864
  private readonly svc;
11716
11865
  private readonly editor;
11717
11866
  private readonly translate;
11867
+ private readonly optionsService;
11718
11868
  /**
11719
11869
  * Open a `.pptx` picker and diff it against the current deck, opening the
11720
11870
  * compare panel with the result. Invoked from the ribbon.
@@ -12431,7 +12581,6 @@ declare class RibbonComponent {
12431
12581
  readonly save: _angular_core.OutputEmitterRef<void>;
12432
12582
  readonly savePpsx: _angular_core.OutputEmitterRef<void>;
12433
12583
  readonly savePptm: _angular_core.OutputEmitterRef<void>;
12434
- readonly packageForSharing: _angular_core.OutputEmitterRef<void>;
12435
12584
  /** Emitted when the user toggles the slides panel from the top bar. */
12436
12585
  readonly toggleSidebar: _angular_core.OutputEmitterRef<void>;
12437
12586
  /** Emitted when the user clicks the AI assistant Sparkles toggle. */
@@ -12530,7 +12679,7 @@ declare class RibbonComponent {
12530
12679
  /** Forward the Review proofing toggle to the viewer-owned live state. */
12531
12680
  protected setSpellCheck(enabled: boolean): void;
12532
12681
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonComponent, never>;
12533
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonComponent, "pptx-ribbon", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "zoomPercent": { "alias": "zoomPercent"; "required": false; "isSignal": true; }; "formatPainterActive": { "alias": "formatPainterActive"; "required": false; "isSignal": true; }; "canActivateFormatPainter": { "alias": "canActivateFormatPainter"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "hasMacros": { "alias": "hasMacros"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showRulers": { "alias": "showRulers"; "required": false; "isSignal": true; }; "showGuides": { "alias": "showGuides"; "required": false; "isSignal": true; }; "snapToGrid": { "alias": "snapToGrid"; "required": false; "isSignal": true; }; "snapToShape": { "alias": "snapToShape"; "required": false; "isSignal": true; }; "eyedropperActive": { "alias": "eyedropperActive"; "required": false; "isSignal": true; }; "themeGalleryOpen": { "alias": "themeGalleryOpen"; "required": false; "isSignal": true; }; "sidebarCollapsed": { "alias": "sidebarCollapsed"; "required": false; "isSignal": true; }; "inspectorOpen": { "alias": "inspectorOpen"; "required": false; "isSignal": true; }; "commentsOpen": { "alias": "commentsOpen"; "required": false; "isSignal": true; }; "commentCount": { "alias": "commentCount"; "required": false; "isSignal": true; }; "findOpen": { "alias": "findOpen"; "required": false; "isSignal": true; }; "collabConnected": { "alias": "collabConnected"; "required": false; "isSignal": true; }; "connectedCount": { "alias": "connectedCount"; "required": false; "isSignal": true; }; "spellCheckEnabled": { "alias": "spellCheckEnabled"; "required": false; "isSignal": true; }; "showSubtitles": { "alias": "showSubtitles"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; "aiEnabled": { "alias": "aiEnabled"; "required": false; "isSignal": true; }; "aiPanelOpen": { "alias": "aiPanelOpen"; "required": false; "isSignal": true; }; "accountAuth": { "alias": "accountAuth"; "required": false; "isSignal": true; }; "activeSlideHidden": { "alias": "activeSlideHidden"; "required": false; "isSignal": true; }; }, { "prev": "prev"; "next": "next"; "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "zoomReset": "zoomReset"; "find": "find"; "present": "present"; "presenter": "presenter"; "record": "record"; "presentFromBeginning": "presentFromBeginning"; "rehearseTimings": "rehearseTimings"; "toggleSubtitles": "toggleSubtitles"; "openSubtitleSettings": "openSubtitleSettings"; "recordFromBeginning": "recordFromBeginning"; "recordFromCurrent": "recordFromCurrent"; "spellCheckChange": "spellCheckChange"; "share": "share"; "broadcast": "broadcast"; "openFile": "openFile"; "openRecentFile": "openRecentFile"; "createPresentation": "createPresentation"; "save": "save"; "savePpsx": "savePpsx"; "savePptm": "savePptm"; "packageForSharing": "packageForSharing"; "toggleSidebar": "toggleSidebar"; "toggleAiPanel": "toggleAiPanel"; "signatures": "signatures"; "info": "info"; "print": "print"; "comments": "comments"; "a11y": "a11y"; "shortcuts": "shortcuts"; "versionHistory": "versionHistory"; "passwordProtection": "passwordProtection"; "fontEmbedding": "fontEmbedding"; "link": "link"; "openSorter": "openSorter"; "openReadingView": "openReadingView"; "openOutlineView": "openOutlineView"; "openMasterView": "openMasterView"; "toggleNotes": "toggleNotes"; "toggleFormatPainter": "toggleFormatPainter"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "exportJson": "exportJson"; "copySlideAsImage": "copySlideAsImage"; "replace": "replace"; "toggleInspector": "toggleInspector"; "drawToolChange": "drawToolChange"; "toggleThemeGallery": "toggleThemeGallery"; "editTheme": "editTheme"; "openSlideSize": "openSlideSize"; "toggleGrid": "toggleGrid"; "toggleRulers": "toggleRulers"; "toggleGuides": "toggleGuides"; "toggleSelectionPane": "toggleSelectionPane"; "openCustomShows": "openCustomShows"; "toggleSnapToGrid": "toggleSnapToGrid"; "toggleSnapToShape": "toggleSnapToShape"; "addGuide": "addGuide"; "zoomToFit": "zoomToFit"; "toggleEyedropper": "toggleEyedropper"; "openSmartArtDialog": "openSmartArtDialog"; "openTemplateGallery": "openTemplateGallery"; "openEquationDialog": "openEquationDialog"; "openSetUpSlideShow": "openSetUpSlideShow"; "toggleHideSlide": "toggleHideSlide"; "openCompare": "openCompare"; "openPassword": "openPassword"; "openFontEmbedding": "openFontEmbedding"; "openVersionHistory": "openVersionHistory"; "openShortcuts": "openShortcuts"; "openSettings": "openSettings"; }, never, never, true, never>;
12682
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonComponent, "pptx-ribbon", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "zoomPercent": { "alias": "zoomPercent"; "required": false; "isSignal": true; }; "formatPainterActive": { "alias": "formatPainterActive"; "required": false; "isSignal": true; }; "canActivateFormatPainter": { "alias": "canActivateFormatPainter"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "hasMacros": { "alias": "hasMacros"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showRulers": { "alias": "showRulers"; "required": false; "isSignal": true; }; "showGuides": { "alias": "showGuides"; "required": false; "isSignal": true; }; "snapToGrid": { "alias": "snapToGrid"; "required": false; "isSignal": true; }; "snapToShape": { "alias": "snapToShape"; "required": false; "isSignal": true; }; "eyedropperActive": { "alias": "eyedropperActive"; "required": false; "isSignal": true; }; "themeGalleryOpen": { "alias": "themeGalleryOpen"; "required": false; "isSignal": true; }; "sidebarCollapsed": { "alias": "sidebarCollapsed"; "required": false; "isSignal": true; }; "inspectorOpen": { "alias": "inspectorOpen"; "required": false; "isSignal": true; }; "commentsOpen": { "alias": "commentsOpen"; "required": false; "isSignal": true; }; "commentCount": { "alias": "commentCount"; "required": false; "isSignal": true; }; "findOpen": { "alias": "findOpen"; "required": false; "isSignal": true; }; "collabConnected": { "alias": "collabConnected"; "required": false; "isSignal": true; }; "connectedCount": { "alias": "connectedCount"; "required": false; "isSignal": true; }; "spellCheckEnabled": { "alias": "spellCheckEnabled"; "required": false; "isSignal": true; }; "showSubtitles": { "alias": "showSubtitles"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; "aiEnabled": { "alias": "aiEnabled"; "required": false; "isSignal": true; }; "aiPanelOpen": { "alias": "aiPanelOpen"; "required": false; "isSignal": true; }; "accountAuth": { "alias": "accountAuth"; "required": false; "isSignal": true; }; "activeSlideHidden": { "alias": "activeSlideHidden"; "required": false; "isSignal": true; }; }, { "prev": "prev"; "next": "next"; "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "zoomReset": "zoomReset"; "find": "find"; "present": "present"; "presenter": "presenter"; "record": "record"; "presentFromBeginning": "presentFromBeginning"; "rehearseTimings": "rehearseTimings"; "toggleSubtitles": "toggleSubtitles"; "openSubtitleSettings": "openSubtitleSettings"; "recordFromBeginning": "recordFromBeginning"; "recordFromCurrent": "recordFromCurrent"; "spellCheckChange": "spellCheckChange"; "share": "share"; "broadcast": "broadcast"; "openFile": "openFile"; "openRecentFile": "openRecentFile"; "createPresentation": "createPresentation"; "save": "save"; "savePpsx": "savePpsx"; "savePptm": "savePptm"; "toggleSidebar": "toggleSidebar"; "toggleAiPanel": "toggleAiPanel"; "signatures": "signatures"; "info": "info"; "print": "print"; "comments": "comments"; "a11y": "a11y"; "shortcuts": "shortcuts"; "versionHistory": "versionHistory"; "passwordProtection": "passwordProtection"; "fontEmbedding": "fontEmbedding"; "link": "link"; "openSorter": "openSorter"; "openReadingView": "openReadingView"; "openOutlineView": "openOutlineView"; "openMasterView": "openMasterView"; "toggleNotes": "toggleNotes"; "toggleFormatPainter": "toggleFormatPainter"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "exportJson": "exportJson"; "copySlideAsImage": "copySlideAsImage"; "replace": "replace"; "toggleInspector": "toggleInspector"; "drawToolChange": "drawToolChange"; "toggleThemeGallery": "toggleThemeGallery"; "editTheme": "editTheme"; "openSlideSize": "openSlideSize"; "toggleGrid": "toggleGrid"; "toggleRulers": "toggleRulers"; "toggleGuides": "toggleGuides"; "toggleSelectionPane": "toggleSelectionPane"; "openCustomShows": "openCustomShows"; "toggleSnapToGrid": "toggleSnapToGrid"; "toggleSnapToShape": "toggleSnapToShape"; "addGuide": "addGuide"; "zoomToFit": "zoomToFit"; "toggleEyedropper": "toggleEyedropper"; "openSmartArtDialog": "openSmartArtDialog"; "openTemplateGallery": "openTemplateGallery"; "openEquationDialog": "openEquationDialog"; "openSetUpSlideShow": "openSetUpSlideShow"; "toggleHideSlide": "toggleHideSlide"; "openCompare": "openCompare"; "openPassword": "openPassword"; "openFontEmbedding": "openFontEmbedding"; "openVersionHistory": "openVersionHistory"; "openShortcuts": "openShortcuts"; "openSettings": "openSettings"; }, never, never, true, never>;
12534
12683
  }
12535
12684
 
12536
12685
  /** The eight resize-handle positions around a selection box. */
@@ -13024,6 +13173,8 @@ declare class SlideCanvasComponent implements SlideContext {
13024
13173
  */
13025
13174
  private readonly fieldContextSvc;
13026
13175
  readonly fieldContext: _angular_core.Signal<FieldSubstitutionContext | undefined>;
13176
+ /** Options > Proofing > AutoCorrect, applied to committed inline-edit text. */
13177
+ private readonly viewerOpts;
13027
13178
  /**
13028
13179
  * Obstacle rects (absolute slide coords) for connector A* routing: every
13029
13180
  * non-connector element with a positive footprint. Bent connectors detour
@@ -13499,6 +13650,12 @@ declare class ElementRendererComponent {
13499
13650
  */
13500
13651
  private readonly playback;
13501
13652
  private readonly translate;
13653
+ /**
13654
+ * Optional so this renderer still works outside a `PowerPointViewerComponent`
13655
+ * host (thumbnails, export): a text-run hyperlink click is then never
13656
+ * confirmed, matching the option's own default meaning ("not configured").
13657
+ */
13658
+ private readonly viewerOpts;
13502
13659
  readonly smartArt3D: _angular_core.Signal<boolean>;
13503
13660
  /**
13504
13661
  * Whether the Selection Pane has hidden this element. Drives the empty first
@@ -13688,6 +13845,13 @@ declare class ElementRendererComponent {
13688
13845
  * sub-animations, otherwise the whole box just fades as one.
13689
13846
  */
13690
13847
  readonly textBuildSpecs: _angular_core.Signal<(TextBuildSpec<StyleMap> | undefined)[]>;
13848
+ /**
13849
+ * Trust Center > "Confirm before opening external hyperlinks" gate for a
13850
+ * text-run hyperlink (`<a class="pptx-ng-link">`). The anchor's own `href` /
13851
+ * `target="_blank"` still does the actual navigation; this only vetoes it
13852
+ * via `preventDefault()` when the user declines the prompt.
13853
+ */
13854
+ protected onHyperlinkClick(event: MouseEvent, href: string): void;
13691
13855
  /** Whole-paragraph text, for the paragraph-level build wrapper. */
13692
13856
  protected paragraphText(para: Paragraph): string;
13693
13857
  /** Style for one build piece, merged over the run's own style. */
@@ -15261,6 +15425,14 @@ interface PresentationInputDeps {
15261
15425
  showAllSlides: () => void;
15262
15426
  /** End the show; the component guards against double-closing. */
15263
15427
  requestClose: () => void;
15428
+ /**
15429
+ * Trust Center > "Confirm before opening external hyperlinks" gate for an
15430
+ * on-slide action click (`a:hlinkClick`) that resolves to an external URL.
15431
+ * Return `true` to allow the navigation, `false` to block it. Omitted (or
15432
+ * absent) means "always allow", matching `shouldConfirmExternalHyperlink`
15433
+ * with the option off.
15434
+ */
15435
+ confirmExternalHyperlink?: (href: string) => boolean;
15264
15436
  }
15265
15437
  declare class PresentationInputController {
15266
15438
  private readonly deps;
@@ -15282,6 +15454,12 @@ declare class PresentationInputController {
15282
15454
  /**
15283
15455
  * Run any on-slide action under the pointer, and report what the click left
15284
15456
  * for the show: only `'advance'` reaches {@link advanceFromClick}.
15457
+ *
15458
+ * Reimplements `handlePresentationStageClick`'s classify-then-run in two
15459
+ * steps (rather than calling it directly) so an `openUrl` intent can be
15460
+ * gated by Trust Center > "Confirm before opening external hyperlinks"
15461
+ * before the navigation actually runs. A declined confirmation still
15462
+ * consumes the click (PowerPoint does not also advance the slide).
15285
15463
  */
15286
15464
  private handleActionClick;
15287
15465
  /**
@@ -15319,6 +15497,12 @@ declare class PresentationInputController {
15319
15497
  */
15320
15498
  declare class PresentationOverlayComponent implements OnInit {
15321
15499
  protected readonly presenterWindow: PresenterWindowService;
15500
+ /**
15501
+ * Optional so this overlay still renders in isolation (Storybook-style
15502
+ * usage, tests): outside a `PowerPointViewerComponent` host that provides
15503
+ * it, external-hyperlink clicks are simply never confirmed.
15504
+ */
15505
+ private readonly viewerOpts;
15322
15506
  readonly slides: _angular_core.InputSignal<PptxSlide[]>;
15323
15507
  readonly canvasSize: _angular_core.InputSignal<CanvasSize>;
15324
15508
  readonly mediaDataUrls: _angular_core.InputSignal<Map<string, string>>;
@@ -15354,6 +15538,13 @@ declare class PresentationOverlayComponent implements OnInit {
15354
15538
  readonly endWithBlackSlide: _angular_core.InputSignal<boolean>;
15355
15539
  /** Whether presenter view is up (tints the toolbar's presenter-view toggle). */
15356
15540
  readonly presenterMode: _angular_core.InputSignal<boolean>;
15541
+ /**
15542
+ * File > Options > Advanced > "Show menu on right mouse click". Off swallows
15543
+ * right-click entirely (no browser menu either), matching React/Vue.
15544
+ */
15545
+ readonly showMenuOnRightClick: _angular_core.InputSignal<boolean>;
15546
+ /** File > Options > Advanced > "Show popup toolbar" while presenting. */
15547
+ readonly showPopupToolbar: _angular_core.InputSignal<boolean>;
15357
15548
  readonly indexChange: _angular_core.OutputEmitterRef<number>;
15358
15549
  readonly closed: _angular_core.OutputEmitterRef<void>;
15359
15550
  /** Live-caption preference; driven by the host's ribbon, not by show chrome. */
@@ -15386,6 +15577,11 @@ declare class PresentationOverlayComponent implements OnInit {
15386
15577
  protected readonly input: PresentationInputController;
15387
15578
  /** Whether PowerPoint's "See All Slides" navigator is up (Ctrl+S). */
15388
15579
  protected readonly allSlidesOpen: _angular_core.WritableSignal<boolean>;
15580
+ /** Slide-show right-click menu position, or null when closed. */
15581
+ protected readonly contextMenuState: _angular_core.WritableSignal<{
15582
+ x: number;
15583
+ y: number;
15584
+ } | null>;
15389
15585
  /** Template aliases for the navigator's state. */
15390
15586
  protected readonly currentIndex: _angular_core.WritableSignal<number>;
15391
15587
  protected readonly endOfShow: _angular_core.WritableSignal<boolean>;
@@ -15501,6 +15697,17 @@ declare class PresentationOverlayComponent implements OnInit {
15501
15697
  */
15502
15698
  onKeyDown(event: KeyboardEvent): void;
15503
15699
  protected onBodyClick(event: MouseEvent): void;
15700
+ /**
15701
+ * Options > Advanced > "Show menu on right mouse click": right-click opens
15702
+ * a minimal Next/Previous/End Show menu (plus pointer tools, See All
15703
+ * Slides, presenter view and the black/white blank screen); off swallows
15704
+ * the click entirely, matching React/Vue.
15705
+ */
15706
+ protected onStageContextMenu(event: MouseEvent): void;
15707
+ /** Route a chosen context-menu action onto this overlay's own handlers. */
15708
+ protected onContextMenuAction(id: PresentationContextMenuActionId): void;
15709
+ /** Set (or clear) the whole-screen blank, mirroring the keyboard B/W shortcuts. */
15710
+ private setBlankScreen;
15504
15711
  /** Click on the end screen: exit the show, like PowerPoint's "click to exit". */
15505
15712
  protected onEndScreenClick(event: MouseEvent): void;
15506
15713
  /** The show toolbar's end button: same exit path as Escape / the close button. */
@@ -15519,7 +15726,7 @@ declare class PresentationOverlayComponent implements OnInit {
15519
15726
  private runChromeAction;
15520
15727
  private emitClosed;
15521
15728
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PresentationOverlayComponent, never>;
15522
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PresentationOverlayComponent, "pptx-presentation-overlay", never, { "slides": { "alias": "slides"; "required": true; "isSignal": true; }; "canvasSize": { "alias": "canvasSize"; "required": true; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "startIndex": { "alias": "startIndex"; "required": false; "isSignal": true; }; "activeCustomShow": { "alias": "activeCustomShow"; "required": false; "isSignal": true; }; "showWithAnimation": { "alias": "showWithAnimation"; "required": false; "isSignal": true; }; "useTimings": { "alias": "useTimings"; "required": false; "isSignal": true; }; "subtitlesVisible": { "alias": "subtitlesVisible"; "required": false; "isSignal": true; }; "sessionEnded": { "alias": "sessionEnded"; "required": false; "isSignal": true; }; "endWithBlackSlide": { "alias": "endWithBlackSlide"; "required": false; "isSignal": true; }; "presenterMode": { "alias": "presenterMode"; "required": false; "isSignal": true; }; }, { "indexChange": "indexChange"; "closed": "closed"; "subtitlesChange": "subtitlesChange"; "presenterViewToggle": "presenterViewToggle"; "annotationsExit": "annotationsExit"; }, never, never, true, never>;
15729
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PresentationOverlayComponent, "pptx-presentation-overlay", never, { "slides": { "alias": "slides"; "required": true; "isSignal": true; }; "canvasSize": { "alias": "canvasSize"; "required": true; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "startIndex": { "alias": "startIndex"; "required": false; "isSignal": true; }; "activeCustomShow": { "alias": "activeCustomShow"; "required": false; "isSignal": true; }; "showWithAnimation": { "alias": "showWithAnimation"; "required": false; "isSignal": true; }; "useTimings": { "alias": "useTimings"; "required": false; "isSignal": true; }; "subtitlesVisible": { "alias": "subtitlesVisible"; "required": false; "isSignal": true; }; "sessionEnded": { "alias": "sessionEnded"; "required": false; "isSignal": true; }; "endWithBlackSlide": { "alias": "endWithBlackSlide"; "required": false; "isSignal": true; }; "presenterMode": { "alias": "presenterMode"; "required": false; "isSignal": true; }; "showMenuOnRightClick": { "alias": "showMenuOnRightClick"; "required": false; "isSignal": true; }; "showPopupToolbar": { "alias": "showPopupToolbar"; "required": false; "isSignal": true; }; }, { "indexChange": "indexChange"; "closed": "closed"; "subtitlesChange": "subtitlesChange"; "presenterViewToggle": "presenterViewToggle"; "annotationsExit": "annotationsExit"; }, never, never, true, never>;
15523
15730
  }
15524
15731
 
15525
15732
  /**
@@ -16552,8 +16759,16 @@ declare class ChartDataEditorComponent {
16552
16759
  private readonly translate;
16553
16760
  /** Canvas <-> inspector chart-part selection bridge (viewer-scoped, optional). */
16554
16761
  private readonly partSelection;
16762
+ /** File > Options access (viewer-scoped, optional for standalone unit tests). */
16763
+ private readonly viewerOpts;
16555
16764
  private readonly host;
16556
16765
  private readonly injector;
16766
+ /**
16767
+ * File > Options > Advanced > "Properties follow chart data point for
16768
+ * current workbook". Falls back to PowerPoint's own default (`true`) when
16769
+ * the service is unavailable (standalone unit tests).
16770
+ */
16771
+ private followDataPoint;
16557
16772
  /** The chart element being edited. */
16558
16773
  readonly element: _angular_core.InputSignal<ChartPptxElement>;
16559
16774
  /** Whether editing is enabled (read-only mode when false). */
@@ -18377,6 +18592,10 @@ declare class ViewerExtraDialogsComponent {
18377
18592
  protected readonly editor: EditorStateService;
18378
18593
  protected readonly loader: LoadContentService;
18379
18594
  private readonly fonts;
18595
+ private readonly smartArt3D;
18596
+ private readonly collab;
18597
+ /** Real runtime availability for the Options > Add-ins pane; see {@link resolveViewerExtraAddinStatus}. */
18598
+ protected readonly addinStatus: _angular_core.Signal<ViewerAddinStatus>;
18380
18599
  /** Distinct font families used across the editable deck. */
18381
18600
  protected readonly usedFontFamilies: _angular_core.Signal<string[]>;
18382
18601
  /** Families backed by an embedded @font-face rule. */
@@ -18888,7 +19107,7 @@ declare class AccountPageComponent {
18888
19107
  readonly accountAuth: _angular_core.InputSignal<AccountAuthConfig | undefined>;
18889
19108
  private readonly translate;
18890
19109
  protected readonly swatches: readonly string[];
18891
- protected readonly version = "3.1.0";
19110
+ protected readonly version = "3.2.0";
18892
19111
  protected readonly profile: _angular_core.WritableSignal<ViewerProfile>;
18893
19112
  protected readonly initial: _angular_core.Signal<string>;
18894
19113
  protected readonly usage: _angular_core.WritableSignal<LocalStorageUsageSummary | null>;
@@ -19002,6 +19221,12 @@ declare class PrintDialogComponent {
19002
19221
  readonly defaultSlidesPerPage: _angular_core.InputSignal<number | undefined>;
19003
19222
  /** Default frame-slides from presentation properties. */
19004
19223
  readonly defaultFrameSlides: _angular_core.InputSignal<boolean | undefined>;
19224
+ /**
19225
+ * File > Options > Advanced > Print seed (`ViewerOptionsService.printDefaults`).
19226
+ * `undefined` (Options > "Use the most recently used print settings") leaves
19227
+ * `printWhat`/`colorMode`/`frameSlides` at their hardcoded defaults below.
19228
+ */
19229
+ readonly defaultSettings: _angular_core.InputSignal<Partial<PrintSettings> | undefined>;
19005
19230
  /** Emits the resolved, validated settings when the user clicks Print. */
19006
19231
  readonly print: _angular_core.OutputEmitterRef<PrintSettings>;
19007
19232
  /** Emits when the dialog is dismissed (Cancel / Escape / backdrop). */
@@ -19028,7 +19253,7 @@ declare class PrintDialogComponent {
19028
19253
  onBackdropClick(event: MouseEvent): void;
19029
19254
  onKeydown(event: KeyboardEvent): void;
19030
19255
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PrintDialogComponent, never>;
19031
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PrintDialogComponent, "pptx-print-dialog", never, { "slides": { "alias": "slides"; "required": true; "isSignal": true; }; "activeSlideIndex": { "alias": "activeSlideIndex"; "required": true; "isSignal": true; }; "defaultSlidesPerPage": { "alias": "defaultSlidesPerPage"; "required": false; "isSignal": true; }; "defaultFrameSlides": { "alias": "defaultFrameSlides"; "required": false; "isSignal": true; }; }, { "print": "print"; "cancel": "cancel"; }, never, never, true, never>;
19256
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PrintDialogComponent, "pptx-print-dialog", never, { "slides": { "alias": "slides"; "required": true; "isSignal": true; }; "activeSlideIndex": { "alias": "activeSlideIndex"; "required": true; "isSignal": true; }; "defaultSlidesPerPage": { "alias": "defaultSlidesPerPage"; "required": false; "isSignal": true; }; "defaultFrameSlides": { "alias": "defaultFrameSlides"; "required": false; "isSignal": true; }; "defaultSettings": { "alias": "defaultSettings"; "required": false; "isSignal": true; }; }, { "print": "print"; "cancel": "cancel"; }, never, never, true, never>;
19032
19257
  }
19033
19258
 
19034
19259
  declare class PrintSettingsPanelComponent {
@@ -19205,6 +19430,12 @@ declare class PresentationToolbarComponent {
19205
19430
  readonly presentationStartTime: _angular_core.InputSignal<number | null>;
19206
19431
  /** Whether presenter view is currently up (tints the toggle). */
19207
19432
  readonly presenterMode: _angular_core.InputSignal<boolean>;
19433
+ /**
19434
+ * File > Options > Advanced > "Show popup toolbar" (default true). When
19435
+ * `false`, `mousemove` never auto-reveals the bar; `toggleVisible`
19436
+ * (PowerPoint's Ctrl+H) still works.
19437
+ */
19438
+ readonly popupToolbarEnabled: _angular_core.InputSignal<boolean>;
19208
19439
  /** Step the show by one slide (`-1` back, `1` forward). */
19209
19440
  readonly move: _angular_core.OutputEmitterRef<1 | -1>;
19210
19441
  /** Leave the show. */
@@ -19287,7 +19518,7 @@ declare class PresentationToolbarComponent {
19287
19518
  private selectTool;
19288
19519
  private togglePalette;
19289
19520
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PresentationToolbarComponent, never>;
19290
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PresentationToolbarComponent, "pptx-presentation-toolbar", never, { "currentSlideIndex": { "alias": "currentSlideIndex"; "required": true; "isSignal": true; }; "totalSlides": { "alias": "totalSlides"; "required": true; "isSignal": true; }; "presentationStartTime": { "alias": "presentationStartTime"; "required": false; "isSignal": true; }; "presenterMode": { "alias": "presenterMode"; "required": false; "isSignal": true; }; }, { "move": "move"; "endPresentation": "endPresentation"; "presenterViewToggle": "presenterViewToggle"; }, never, never, true, never>;
19521
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PresentationToolbarComponent, "pptx-presentation-toolbar", never, { "currentSlideIndex": { "alias": "currentSlideIndex"; "required": true; "isSignal": true; }; "totalSlides": { "alias": "totalSlides"; "required": true; "isSignal": true; }; "presentationStartTime": { "alias": "presentationStartTime"; "required": false; "isSignal": true; }; "presenterMode": { "alias": "presenterMode"; "required": false; "isSignal": true; }; "popupToolbarEnabled": { "alias": "popupToolbarEnabled"; "required": false; "isSignal": true; }; }, { "move": "move"; "endPresentation": "endPresentation"; "presenterViewToggle": "presenterViewToggle"; }, never, never, true, never>;
19291
19522
  }
19292
19523
 
19293
19524
  /**
@@ -20099,7 +20330,7 @@ declare function addCategory(element: ChartPptxElement): ChartPptxElement;
20099
20330
  * const updated = removeCategory(el, 2);
20100
20331
  * ```
20101
20332
  */
20102
- declare function removeCategory(element: ChartPptxElement, catIndex: number): ChartPptxElement;
20333
+ declare function removeCategory(element: ChartPptxElement, catIndex: number, followDataPoint?: boolean): ChartPptxElement;
20103
20334
  /**
20104
20335
  * Update a single numeric value in a chart series, returning a new
20105
20336
  * `ChartPptxElement`.
@@ -20732,6 +20963,8 @@ declare class RibbonFileSectionComponent {
20732
20963
  readonly hasMacros: _angular_core.InputSignal<boolean>;
20733
20964
  /** Toolbar buttons the host wants hidden (drops the Export nav entry/page). */
20734
20965
  readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
20966
+ /** File > Options > Advanced > "Quickly access this number of Recent Documents". */
20967
+ readonly recentPresentationsCount: _angular_core.InputSignal<number | undefined>;
20735
20968
  /** Optional sign-in hook point for the Account page. Absent/disabled by default. */
20736
20969
  readonly accountAuth: _angular_core.InputSignal<AccountAuthConfig | undefined>;
20737
20970
  readonly close: _angular_core.OutputEmitterRef<void>;
@@ -20741,7 +20974,6 @@ declare class RibbonFileSectionComponent {
20741
20974
  readonly save: _angular_core.OutputEmitterRef<void>;
20742
20975
  readonly savePpsx: _angular_core.OutputEmitterRef<void>;
20743
20976
  readonly savePptm: _angular_core.OutputEmitterRef<void>;
20744
- readonly packageForSharing: _angular_core.OutputEmitterRef<void>;
20745
20977
  readonly exportPng: _angular_core.OutputEmitterRef<void>;
20746
20978
  readonly exportPdf: _angular_core.OutputEmitterRef<void>;
20747
20979
  readonly exportGif: _angular_core.OutputEmitterRef<void>;
@@ -20801,7 +21033,7 @@ declare class RibbonFileSectionComponent {
20801
21033
  */
20802
21034
  private pageActions;
20803
21035
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonFileSectionComponent, never>;
20804
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonFileSectionComponent, "pptx-ribbon-file-section", never, { "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "hasMacros": { "alias": "hasMacros"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; "accountAuth": { "alias": "accountAuth"; "required": false; "isSignal": true; }; }, { "close": "close"; "createPresentation": "createPresentation"; "openFile": "openFile"; "openRecentFile": "openRecentFile"; "save": "save"; "savePpsx": "savePpsx"; "savePptm": "savePptm"; "packageForSharing": "packageForSharing"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "exportJson": "exportJson"; "copySlideAsImage": "copySlideAsImage"; "print": "print"; "info": "info"; "signatures": "signatures"; "replace": "replace"; "openPassword": "openPassword"; "openFontEmbedding": "openFontEmbedding"; "openVersionHistory": "openVersionHistory"; "share": "share"; "options": "options"; }, never, never, true, never>;
21036
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonFileSectionComponent, "pptx-ribbon-file-section", never, { "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "hasMacros": { "alias": "hasMacros"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; "recentPresentationsCount": { "alias": "recentPresentationsCount"; "required": false; "isSignal": true; }; "accountAuth": { "alias": "accountAuth"; "required": false; "isSignal": true; }; }, { "close": "close"; "createPresentation": "createPresentation"; "openFile": "openFile"; "openRecentFile": "openRecentFile"; "save": "save"; "savePpsx": "savePpsx"; "savePptm": "savePptm"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "exportJson": "exportJson"; "copySlideAsImage": "copySlideAsImage"; "print": "print"; "info": "info"; "signatures": "signatures"; "replace": "replace"; "openPassword": "openPassword"; "openFontEmbedding": "openFontEmbedding"; "openVersionHistory": "openVersionHistory"; "share": "share"; "options": "options"; }, never, never, true, never>;
20805
21037
  }
20806
21038
 
20807
21039
  declare class RibbonFontControlsComponent {
@@ -22027,6 +22259,12 @@ declare class TitleBarComponent {
22027
22259
  * remainder means those buttons carry real icons rather than a letter glyph.
22028
22260
  */
22029
22261
  protected readonly extraQat: _angular_core.Signal<ViewerQuickAccessOptions>;
22262
+ /**
22263
+ * Whether the below-ribbon strip is the one rendering the configured extra
22264
+ * commands right now, so this component's OWN inline strip stands down
22265
+ * instead of showing the same commands twice.
22266
+ */
22267
+ protected readonly belowRibbonActive: _angular_core.Signal<boolean>;
22030
22268
  /**
22031
22269
  * Route a Quick Access press: keep the dedicated save/undo/redo outputs
22032
22270
  * (existing host wiring, `hiddenActions` gating) and forward everything