pptx-angular-viewer 3.3.0 → 3.5.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.
@@ -1,5 +1,5 @@
1
1
  import * as pptx_viewer_core from 'pptx-viewer-core';
2
- import { PptxThemePreset, PptxSlide, PptxElement, ShapeStyle, PptxTextWarpPreset, XmlObject, PptxChartSeries, PptxChartLegendTextStyle, PptxChartData, PptxChartDataLabelPosition, PptxChartType, PptxElementAnimation, PptxAnimationPreset, PptxAnimationSequence, PptxAnimationTrigger, PptxAnimationTimingCurve, PptxAnimationRepeatMode, PptxAnimationDirection, PptxAfterAnimationAction, ParsedTableStyleMap, PptxThemeColorScheme, PptxThemeFontScheme, TablePptxElement, PptxSection, OlePptxElement, TextSegment, TextStyle, PptxTransitionType, PptxSlideTransition, SmartArtLayoutType, SmartArtColorScheme, PptxSmartArtChrome, PptxSmartArtDrawingShape, SmartArtStyle, PptxSmartArtData, PlaceholderDefaults, PptxEmbeddedFont, SmartArtLayout, AccessibilityIssueSeverity, AccessibilityIssue, AccessibilityIssueType, AccessibilityCheckOptions, ElementActionType, InkPptxElement, PptxComment, PptxChartBarDirection, PptxTheme, PptxHandler, PptxData, PptxHeaderFooter, PptxCustomShow, PptxSlideMaster, PptxNotesMaster, PptxHandoutMaster, PptxPresentationProperties, PptxViewProperties, PptxCoreProperties, PptxAppProperties, PptxThemeOption, PptxCustomProperty, PptxTagCollection, ParsedSignature, PptxSaveFormat, PptxTableCell, PptxTableCellStyle, PptxTableRow, PptxTableData, MasterViewTab, SvgExportOptions, PptxGridSpacing, RenderedNode, RenderedCircleNode, RenderedPolygonNode, RenderedRectNode, SmartArtLayoutResult, Model3DPptxElement, ZoomPptxElement, ChartPptxElement, MediaPptxElement, SmartArtPptxElement, PptxAnimationTimelineAnchor, MaterialPresetType, Text3DStyle, BevelPresetType, PptxChartDataLabelOptions, PptxChartAxisType, PptxChartAxisFormatting, PptxChartMarker, PptxChartDataPoint, PptxChartTrendline, PptxChartErrBars, PptxTextStyleLevels, SignatureStatus, ElementAction, PptxImageEffects, MediaBookmark, ColorMapAliasKey, ChartAxisEdit, ChartDataPointLabelEdit, PptxChartLegendPosition, PptxChartStyle, ChartAxisTitleStyleEdit, PptxChartMarkerSymbol, ChartGridlineStyleEdit, PptxSmartArtNode, PptxSmartArtNodeStyle, PptxLayoutPreview, MediaCaptionTrack, PptxMediaType } from 'pptx-viewer-core';
2
+ import { PptxThemePreset, PptxSlide, PptxElement, ShapeStyle, PptxTextWarpPreset, XmlObject, PptxChartSeries, PptxChartLegendTextStyle, PptxChartData, PptxChartDataLabelPosition, PptxChartType, PptxElementAnimation, PptxAnimationPreset, PptxAnimationSequence, PptxAnimationTrigger, PptxAnimationTimingCurve, PptxAnimationRepeatMode, PptxAnimationDirection, PptxAfterAnimationAction, ParsedTableStyleMap, PptxThemeColorScheme, PptxThemeFontScheme, TablePptxElement, PptxSection, OlePptxElement, TextSegment, TextStyle, PptxTransitionType, PptxSlideTransition, SmartArtLayoutType, SmartArtColorScheme, PptxSmartArtChrome, PptxSmartArtDrawingShape, SmartArtStyle, PptxSmartArtData, PlaceholderDefaults, PptxEmbeddedFont, SmartArtLayout, AccessibilityIssueSeverity, AccessibilityIssue, AccessibilityIssueType, AccessibilityCheckOptions, ElementActionType, InkPptxElement, PptxComment, PptxChartBarDirection, MasterViewTab, MediaPptxElement, PptxTheme, PptxHandler, PptxData, PptxModernCommentAuthor, PptxCommentMention, PptxHeaderFooter, PptxCustomShow, PptxSlideMaster, PptxNotesMaster, PptxHandoutMaster, PptxPresentationProperties, PptxViewProperties, PptxCoreProperties, PptxAppProperties, PptxThemeOption, PptxCustomProperty, PptxTagCollection, ParsedSignature, PptxSaveFormat, PptxTableCell, PptxTableCellStyle, PptxTableRow, PptxTableData, SvgExportOptions, PptxGridSpacing, RenderedNode, RenderedCircleNode, RenderedPolygonNode, RenderedRectNode, SmartArtLayoutResult, Model3DPptxElement, ZoomPptxElement, ChartPptxElement, SmartArtPptxElement, PptxAnimationTimelineAnchor, MaterialPresetType, Text3DStyle, BevelPresetType, PptxBar3DShape, PptxChartDataLabelOptions, PptxChartAxisType, PptxChartAxisFormatting, PptxChartMarker, PptxChartDataPoint, PptxChartTrendline, PptxChartErrBars, PptxTextStyleLevels, SignatureStatus, ElementAction, PptxImageEffects, MediaBookmark, ColorMapAliasKey, ChartAxisEdit, ChartDataPointLabelEdit, PptxChartLegendPosition, PptxChartStyle, ChartAxisTitleStyleEdit, PptxChartMarkerSymbol, ChartGridlineStyleEdit, PptxSmartArtNode, PptxSmartArtNodeStyle, PptxLayoutPreview, MediaCaptionTrack, PptxMediaType } from 'pptx-viewer-core';
3
3
  export { GroupResult, SWITCHABLE_LAYOUT_TYPES, UngroupResult, addSmartArtNode, addSmartArtNodeAsChild, chartDataChangeType, chartDataUpdatePoint, demoteSmartArtNode, formatAutoNumberMarker as formatAutoNumber, groupElements, promoteSmartArtNode, removeSmartArtNode, reorderSmartArtNode, switchSmartArtLayout, ungroupElements, updateSmartArtNodeText } from 'pptx-viewer-core';
4
4
  import * as _angular_core from '@angular/core';
5
5
  import { Signal, WritableSignal, OnDestroy, OnInit, AfterViewInit, OnChanges, SimpleChanges, InjectionToken, Provider } from '@angular/core';
@@ -5509,6 +5509,16 @@ declare function buildBroadcastViewerUrl(roomId: string, serverUrl: string, loca
5509
5509
  origin: string;
5510
5510
  pathname: string;
5511
5511
  }): string;
5512
+ /**
5513
+ * Build a shareable join URL for a (non-broadcast) collaboration session.
5514
+ * Identical shape to {@link buildBroadcastViewerUrl}, but under the `room=`
5515
+ * query key Angular's Share dialog uses. Returns just the room id when no
5516
+ * `origin`/`pathname` are available (e.g. non-browser environments).
5517
+ */
5518
+ declare function buildShareUrl(roomId: string, serverUrl: string, location?: {
5519
+ origin: string;
5520
+ pathname: string;
5521
+ }): string;
5512
5522
  /** Whether the runtime exposes a usable async clipboard write API. */
5513
5523
  declare function canUseClipboard(nav: Navigator | undefined): boolean;
5514
5524
 
@@ -6101,10 +6111,11 @@ declare function issueTrackKey(issue: AccessibilityIssue, index: number): string
6101
6111
  * Settings" inspector panel (PowerPoint's Insert > Action dialog).
6102
6112
  *
6103
6113
  * WHY shared: the mapping from `ElementActionType` to a translation key is
6104
- * plain data that every binding's action panel needs verbatim, and the two
6105
- * types that take an extra input (`url`, `slide`) are a rule, not a rendering
6106
- * decision. Keeping the list here means adding a new action kind updates all
6107
- * five bindings at once instead of five hand-typed copies drifting apart.
6114
+ * plain data that every binding's action panel needs verbatim, and the three
6115
+ * types that take an extra input before they can commit (`url`, `slide`,
6116
+ * `customShow`) are a rule, not a rendering decision. Keeping the list here
6117
+ * means adding a new action kind updates all five bindings at once instead of
6118
+ * five hand-typed copies drifting apart.
6108
6119
  *
6109
6120
  * @module render/element-action-options
6110
6121
  */
@@ -6846,6 +6857,59 @@ interface BackstageTemplate {
6846
6857
  }
6847
6858
  declare function formatBackstageSize(bytes: number): string;
6848
6859
 
6860
+ /**
6861
+ * master-view.ts: the framework-neutral rules behind View > Slide Master.
6862
+ *
6863
+ * Every binding had its own copy of "turn the selected master/layout/notes/
6864
+ * handout part into a pseudo-slide the ordinary canvas can paint", and they
6865
+ * had drifted: React and Svelte painted a layout without its master's artwork
6866
+ * behind it, React keyed its pseudo-slide so the save path could never match
6867
+ * it, Angular dropped every edit made on the Slides tab, and Vue offered no
6868
+ * edit at all. The decisions live here instead, and each binding maps the
6869
+ * returned descriptors onto its own state container.
6870
+ *
6871
+ * @module render/master-view
6872
+ */
6873
+
6874
+ /** Which part the master view is currently pointed at. */
6875
+ interface MasterViewTarget {
6876
+ tab: MasterViewTab;
6877
+ masterIndex: number;
6878
+ /** `null` selects the master itself rather than one of its layouts. */
6879
+ layoutIndex: number | null;
6880
+ }
6881
+
6882
+ /**
6883
+ * master-view-crud.ts: the decision layer behind PowerPoint's Slide Master
6884
+ * view sidebar commands (Insert/Duplicate/Delete/Rename Layout and Slide
6885
+ * Master).
6886
+ *
6887
+ * Splits into two pure-ish pieces:
6888
+ * - {@link masterViewCrudActions}: a synchronous, framework-neutral
6889
+ * descriptor of which buttons a binding's sidebar should show, enabled or
6890
+ * disabled, so no binding re-derives PowerPoint's "can't delete the last
6891
+ * master" / "can't delete a layout slides still use" rules itself.
6892
+ * - {@link applyMasterViewCrudAction}: the async bridge to
6893
+ * `pptx-viewer-core`'s `master-layout-crud` module (which performs the
6894
+ * actual ZIP surgery), returning the master-view selection a binding
6895
+ * should move to afterwards (the new layout/master it just created, or the
6896
+ * owning master after a delete).
6897
+ *
6898
+ * @module render/master-view-crud
6899
+ */
6900
+
6901
+ /** One Slide Master view sidebar command. */
6902
+ type MasterViewCrudActionId = 'addLayout' | 'duplicateLayout' | 'deleteLayout' | 'renameLayout' | 'addMaster' | 'duplicateMaster' | 'deleteMaster' | 'renameMaster';
6903
+ /** A framework-neutral descriptor for one sidebar button. */
6904
+ interface MasterViewCrudAction {
6905
+ id: MasterViewCrudActionId;
6906
+ /** i18n key for the button label (`pptx.masterView.<id>`). */
6907
+ labelKey: string;
6908
+ enabled: boolean;
6909
+ /** i18n key explaining why the button is disabled, set only when it is. */
6910
+ disabledReasonKey?: string;
6911
+ }
6912
+
6849
6913
  /** Framework-neutral virtual-list range used by every thumbnail sidebar. */
6850
6914
  interface VirtualizedRange {
6851
6915
  startIndex: number;
@@ -6978,6 +7042,13 @@ interface ShowOrderCustomShow {
6978
7042
  readonly slideRIds?: readonly string[];
6979
7043
  readonly slideIds?: readonly string[];
6980
7044
  }
7045
+ /** A `p:showPr/p:sldRg` custom range, resolved to 0-based deck indexes. */
7046
+ interface AuthoredSlideRange {
7047
+ /** First slide of the range, 0-based, inclusive. */
7048
+ readonly fromIndex: number;
7049
+ /** Last slide of the range, 0-based, inclusive. */
7050
+ readonly toIndex: number;
7051
+ }
6981
7052
 
6982
7053
  /** Everything a binding needs to mark one tile. Inert when the slide is visible. */
6983
7054
  interface HiddenSlideCue {
@@ -7303,11 +7374,12 @@ declare function computeHandoutLayout(slideIndices: number[], slidesPerPage: Han
7303
7374
  *
7304
7375
  * No DOM side effects and no `window.print()`: everything is deterministic and
7305
7376
  * the binding writes the returned HTML string into a print window. The handout
7306
- * grid geometry lives in `handout-layout`; this module reuses it.
7307
- *
7308
- * ng-packagr constraint honoured here (the Angular binding inlines this source
7309
- * and compiles it through ng-packagr): NO `String.prototype.replaceAll`
7310
- * (`escapeHtml` uses `.split(x).join(y)` instead).
7377
+ * grid geometry lives in `handout-layout`; this module reuses it. Handout
7378
+ * master "chrome" (background/header/footer/date/page-number/positioned slide
7379
+ * rects) is resolved by `handout-master-chrome.ts` and painted by
7380
+ * `handout-chrome-html.ts`; escaping helpers live in `html-escape.ts` (both
7381
+ * split out to keep this file under this repo's per-file LOC guideline and to
7382
+ * avoid a circular import between the two).
7311
7383
  */
7312
7384
 
7313
7385
  /** What to print. */
@@ -7489,6 +7561,128 @@ interface ViewerOptionsStore {
7489
7561
  batch(write: () => void): void;
7490
7562
  }
7491
7563
 
7564
+ /**
7565
+ * Data-driven placeholder icon primitives for `ole` (embedded object)
7566
+ * elements: the Excel grid, Word document, PDF, Visio diagram, MathType
7567
+ * `f(x)`, and generic linked-objects glyphs.
7568
+ *
7569
+ * Extracted from the identical `rect`/`line`/`text` builders + `ICONS` table
7570
+ * that Svelte's `render/ole-view.ts` and Vanilla's
7571
+ * `render/elements/ole-icons.ts` both hand-rolled byte-for-byte (down to the
7572
+ * shape coordinates). Every binding's OLE renderer maps `OleIconShape[]` onto
7573
+ * its own `<rect>`/`<line>`/`<text>` (or `createSvgEl`) primitives; only the
7574
+ * DOM/JSX emission stays per binding.
7575
+ */
7576
+
7577
+ /** One primitive of a data-driven placeholder icon. */
7578
+ interface OleIconShape {
7579
+ tag: 'rect' | 'line' | 'text';
7580
+ attrs: Record<string, string | number>;
7581
+ /** Text content, only present when `tag === 'text'`. */
7582
+ text?: string;
7583
+ }
7584
+
7585
+ /**
7586
+ * Cross-slide ("play across slides") audio registration.
7587
+ *
7588
+ * PowerPoint keeps background audio marked `playAcrossSlides` playing when
7589
+ * the show advances, but a slide-local `<audio>` dies with its slide's DOM.
7590
+ * {@link registerCrossSlideAudio} hands the track to the shared
7591
+ * `media-persistent-audio` manager (a hidden document-level element that
7592
+ * survives slide unmount) at the moment presentation-mode autoplay would
7593
+ * have started the slide-local copy.
7594
+ *
7595
+ * Vue, Angular, Svelte and Vanilla each carried a byte-identical copy of this
7596
+ * function; this is the one copy, sitting next to {@link mediaPlaybackAttributes}
7597
+ * in `media-playback.ts` as the task that named it expected, split into its
7598
+ * own sibling module purely to keep `media-playback.ts` under the file-size
7599
+ * cap.
7600
+ */
7601
+
7602
+ /**
7603
+ * Register a `playAcrossSlides` audio element with the shared persistent-audio
7604
+ * manager, using the same resolved source, loop, volume and trim start the
7605
+ * slide-local element would have used. Returns true when the persistent
7606
+ * (document-level) element owns playback, in which case the slide-local media
7607
+ * node must stay silent or the track doubles. Idempotent per element id
7608
+ * (the manager no-ops a re-register), so re-entering the owning slide does not
7609
+ * restart the track.
7610
+ */
7611
+ declare function registerCrossSlideAudio(element: MediaPptxElement, src: string | undefined): boolean;
7612
+
7613
+ /** Grouping needs an editable deck and at least two selected elements. */
7614
+ declare function canGroupSelection(canEdit: boolean, selectedCount: number): boolean;
7615
+ /** Ungrouping needs an editable deck and a selection that IS a group. */
7616
+ declare function canUngroupSelection(canEdit: boolean, element: PptxElement | null): boolean;
7617
+ /** An outline width only exists on an element that carries shape properties. */
7618
+ declare function canSetStrokeWidth(canEdit: boolean, element: PptxElement | null): boolean;
7619
+ /** The stroke width to show for a selection, defaulted for a shape without one. */
7620
+ declare function strokeWidthOf(element: PptxElement | null): number;
7621
+
7622
+ /**
7623
+ * slide-size-rescale.ts: what happens to a deck's content when Design > Slide
7624
+ * Size changes the canvas dimensions.
7625
+ *
7626
+ * PowerPoint offers two responses when a slide-size change no longer matches
7627
+ * the existing content's aspect ratio:
7628
+ * - "Maximize": scale content up to fill the new size (by the LARGER of the
7629
+ * two axis ratios), which can push content outside the new slide bounds.
7630
+ * - "Ensure Fit": scale content down to fit inside the new size (by the
7631
+ * SMALLER of the two axis ratios), which can leave margins.
7632
+ *
7633
+ * Both scale uniformly (one factor, not independent X/Y stretch) and both
7634
+ * centre the scaled content in the new canvas, which is why every element's
7635
+ * position is re-derived from the same `(scale, offsetX, offsetY)` triple
7636
+ * rather than each axis being handled independently.
7637
+ *
7638
+ * Framework-agnostic: no React, Vue, Angular, Svelte or DOM imports.
7639
+ */
7640
+
7641
+ type SlideSizeRescaleMode = 'maximize' | 'ensureFit';
7642
+
7643
+ type ReadOnlyRecommendationKind = 'modifyVerifier' | 'markedFinal' | null;
7644
+ interface ReadOnlyRecommendation {
7645
+ readonly kind: ReadOnlyRecommendationKind;
7646
+ /** i18n key for the banner/toast a binding shows for this recommendation. */
7647
+ readonly messageKey: string;
7648
+ /** Whether a binding's "read-only" toggle should default to on. */
7649
+ readonly defaultReadOnly: boolean;
7650
+ }
7651
+
7652
+ interface CompatibilityWarningToast {
7653
+ /** Stable per-code id, since toasts are deduped by code (see module docs). */
7654
+ readonly id: string;
7655
+ readonly code: string;
7656
+ readonly severity: 'info' | 'warning';
7657
+ readonly messageKey: string;
7658
+ /** `{{code}}` for the generic fallback key; `undefined` for a mapped code. */
7659
+ readonly params?: Readonly<Record<string, string>>;
7660
+ }
7661
+
7662
+ /**
7663
+ * Inspector option lists + pure patch builders for the three OOXML chart
7664
+ * subtype flags parsed/serialized in this wave: bar3D column/bar shape
7665
+ * (`c:bar3DChart/c:shape`), radar chart style (`c:radarChart/c:radarStyle`),
7666
+ * and surface wireframe (`c:surfaceChart|surface3DChart/c:wireframe`).
7667
+ *
7668
+ * Each `*_OPTIONS` list is `{ value, labelKey }` for a picker control, in the
7669
+ * order PowerPoint itself lists them; each `*Patch` function is a pure
7670
+ * decision function returning the minimal `Partial<PptxChartData>` patch an
7671
+ * inspector commits back onto the loaded chart data, following this repo's
7672
+ * "shared decides, binding only maps" shape (CLAUDE.md Rule 2: a shared
7673
+ * decision function, five thin bindings). No binding-specific code lives
7674
+ * here; a binding only renders `*_OPTIONS` as a picker and calls the matching
7675
+ * patch function on selection.
7676
+ *
7677
+ * @module chart-subtype-options
7678
+ */
7679
+
7680
+ /** One inspector picker entry: the OOXML value plus its i18n label key. */
7681
+ interface ChartSubtypeOption<T extends string> {
7682
+ value: T;
7683
+ labelKey: string;
7684
+ }
7685
+
7492
7686
  /**
7493
7687
  * Minimal GIF89a encoder (pure JS, no external dependency) plus pure
7494
7688
  * frame-planning helpers — shared by the React, Vue, and Angular bindings.
@@ -8077,6 +8271,121 @@ interface PptxAiChatStore {
8077
8271
  }): Promise<void>;
8078
8272
  }
8079
8273
 
8274
+ /** One tool invocation captured with its full technical detail. */
8275
+ interface AiLogToolCall {
8276
+ toolName: string;
8277
+ toolCallId: string;
8278
+ state: string;
8279
+ input: unknown;
8280
+ output: unknown;
8281
+ errorText?: string;
8282
+ }
8283
+ /** One message: its role, concatenated prose, and any tool calls it made. */
8284
+ interface AiLogMessage {
8285
+ role: string;
8286
+ text: string;
8287
+ toolCalls: AiLogToolCall[];
8288
+ }
8289
+ /** One chat conversation in export form. */
8290
+ interface AiLogChat {
8291
+ id: string;
8292
+ title: string;
8293
+ deckId?: string;
8294
+ createdAt: number;
8295
+ updatedAt: number;
8296
+ createdAtIso: string;
8297
+ updatedAtIso: string;
8298
+ messageCount: number;
8299
+ messages: AiLogMessage[];
8300
+ }
8301
+ /** Top-level detailed export document. */
8302
+ interface AiLogExport {
8303
+ format: 'pptx-ai-chat-log';
8304
+ version: 1;
8305
+ exportedAt: string;
8306
+ /** Whether tool inputs/outputs are included (see `detailed` option). */
8307
+ detailed: boolean;
8308
+ chatCount: number;
8309
+ chats: AiLogChat[];
8310
+ }
8311
+ /** Options controlling how the export document is built. */
8312
+ interface BuildChatLogOptions {
8313
+ /** Include tool-call inputs/outputs. Default `true`. When false, tool calls
8314
+ * still list name + state but omit the (potentially large) payloads. */
8315
+ detailed?: boolean;
8316
+ /** Epoch ms stamped as `exportedAt`. Default `Date.now()`. */
8317
+ now?: number;
8318
+ }
8319
+ /** Build the detailed export document from already-loaded chats (pure). */
8320
+ declare function buildChatLogExport(chats: readonly PptxAiStoredChat[], options?: BuildChatLogOptions): AiLogExport;
8321
+ /** Render the same detailed export as a human-readable Markdown transcript. */
8322
+ declare function buildChatLogMarkdown(doc: AiLogExport): string;
8323
+ /** Load every stored chat (newest first) in full detail from a store. */
8324
+ declare function collectStoredChats(store?: PptxAiChatStore): Promise<PptxAiStoredChat[]>;
8325
+ /** File format to export. */
8326
+ type AiLogFormat = 'json' | 'markdown';
8327
+ /** Metadata controlling {@link exportAiChatLogs}'s output. */
8328
+ interface ExportAiChatLogsMeta {
8329
+ /** `'json'` (default) or `'markdown'`. */
8330
+ format?: AiLogFormat;
8331
+ /** Include tool inputs/outputs. Default `true`. */
8332
+ detailed?: boolean;
8333
+ /** Epoch ms for the filename + `exportedAt`. Default `Date.now()`. */
8334
+ now?: number;
8335
+ }
8336
+
8337
+ /**
8338
+ * Pure helpers that turn the live canvas selection into AI "focused targets"
8339
+ * (the slides / elements the assistant should scope its work to) and into the
8340
+ * short chip labels shown in the AI panel.
8341
+ *
8342
+ * Shared by each binding's AI bridge (so `getFocusedTargets` reflects live
8343
+ * selection) and by the panel's focus chips / canvas highlight overlay, so all
8344
+ * five agree on what "the current focus" is and on the two-table merge
8345
+ * shortcut.
8346
+ */
8347
+
8348
+ /** The selection inputs the focus derivation reads. */
8349
+ interface FocusSelectionInput {
8350
+ activeSlideIndex: number;
8351
+ selectedElementIds: readonly string[];
8352
+ selectedElementId: string | null;
8353
+ }
8354
+ /** One element ring to draw on the canvas: an explicit pick or a live-tool focus. */
8355
+ interface AiCanvasHighlight {
8356
+ slideIndex: number;
8357
+ elementId: string;
8358
+ /** `pick` = persistent user pick; `active` = transient AI-is-working ring. */
8359
+ variant: 'pick' | 'active';
8360
+ }
8361
+ /**
8362
+ * Derive focused targets from the live selection: one `element` target per
8363
+ * selected element on the active slide, or a single whole-`slide` target when
8364
+ * nothing is selected. Order and multiplicity are preserved (multi-select and
8365
+ * tables included) so callers can detect e.g. "exactly two tables".
8366
+ */
8367
+ declare function computeFocusTargets(input: FocusSelectionInput): PptxAiFocusedTarget[];
8368
+ /** A renderable focus chip. `title` carries the full element id for hover. */
8369
+ interface FocusChip {
8370
+ key: string;
8371
+ label: string;
8372
+ title: string;
8373
+ }
8374
+ /**
8375
+ * Build display chips for the given targets. Slide targets read `Slide N`;
8376
+ * element targets read `<Type> <n>` (a friendly short label, full id on hover),
8377
+ * or `<Type> (missing)` when the element is no longer on the slide.
8378
+ */
8379
+ declare function focusTargetChips(targets: readonly PptxAiFocusedTarget[], slides: readonly PptxSlide[]): FocusChip[];
8380
+ /** Whether the focus is exactly two table elements (drives the merge action). */
8381
+ declare function isTwoTableFocus(targets: readonly PptxAiFocusedTarget[], slides: readonly PptxSlide[]): false | {
8382
+ slideIndex: number;
8383
+ elementIdA: string;
8384
+ elementIdB: string;
8385
+ };
8386
+ /** Build the directive that fires `merge_tables` without a confirmation round-trip. */
8387
+ declare function mergeTablesDirective(slideIndex: number, elementIdA: string, elementIdB: string): string;
8388
+
8080
8389
  /**
8081
8390
  * Framework-agnostic helpers that flatten an AI SDK `UIMessage` into the small
8082
8391
  * set of parts a chat panel actually renders: assistant/user text and tool-call
@@ -8200,56 +8509,6 @@ declare class AccessibilityService {
8200
8509
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<AccessibilityService>;
8201
8510
  }
8202
8511
 
8203
- /**
8204
- * Pure helpers that turn the live canvas selection into AI "focused targets"
8205
- * (the slides / elements the assistant should scope its work to) and into the
8206
- * short chip labels shown in the AI panel. Angular replica of React's
8207
- * `hooks/ai/focus-targets.ts`; kept in-binding (rather than in shared) because
8208
- * it is a tiny pure helper and the shared package is consumed read-only here.
8209
- *
8210
- * Shared by {@link AiPanelStore} (so `getFocusedTargets` reflects live
8211
- * selection) and by the focus-chip bar, so both agree on "the current focus".
8212
- */
8213
-
8214
- /** The selection inputs the focus derivation reads. */
8215
- interface FocusSelectionInput {
8216
- activeSlideIndex: number;
8217
- selectedElementIds: readonly string[];
8218
- selectedElementId: string | null;
8219
- }
8220
- /** One element ring to draw on the canvas: an explicit pick or a live-tool focus. */
8221
- interface AiCanvasHighlight {
8222
- slideIndex: number;
8223
- elementId: string;
8224
- /** `pick` = persistent user pick; `active` = transient AI-is-working ring. */
8225
- variant: 'pick' | 'active';
8226
- }
8227
- /**
8228
- * Derive focused targets from the live selection: one `element` target per
8229
- * selected element on the active slide, or a single whole-`slide` target when
8230
- * nothing is selected. Order and multiplicity are preserved (multi-select and
8231
- * tables included) so callers can detect e.g. "exactly two tables".
8232
- */
8233
- declare function computeFocusTargets(input: FocusSelectionInput): PptxAiFocusedTarget[];
8234
- /** A renderable focus chip. `title` carries the full element id for hover. */
8235
- interface FocusChip {
8236
- key: string;
8237
- label: string;
8238
- title: string;
8239
- }
8240
- /**
8241
- * Build display chips for the given targets. Slide targets read `Slide N`;
8242
- * element targets read `<Type> <n>` (a friendly short label, full id on hover),
8243
- * or `<Type> (missing)` when the element is no longer on the slide.
8244
- */
8245
- declare function focusTargetChips(targets: readonly PptxAiFocusedTarget[], slides: readonly PptxSlide[]): FocusChip[];
8246
- /** Whether the focus is exactly two table elements (drives the merge action). */
8247
- declare function isTwoTableFocus(targets: readonly PptxAiFocusedTarget[], slides: readonly PptxSlide[]): false | {
8248
- slideIndex: number;
8249
- elementIdA: string;
8250
- elementIdB: string;
8251
- };
8252
-
8253
8512
  /** Live selection accessors the store reads to derive the follow-selection focus. */
8254
8513
  interface AiPanelSelectionAccessors {
8255
8514
  activeSlideIndex(): number;
@@ -8752,6 +9011,55 @@ declare class CollaborationService {
8752
9011
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<CollaborationService>;
8753
9012
  }
8754
9013
 
9014
+ /** The trimmed text plus the mention spans an add/reply submit carries. */
9015
+ interface CommentSubmission {
9016
+ text: string;
9017
+ mentions: PptxCommentMention[];
9018
+ }
9019
+ declare class CommentsPanelComponent {
9020
+ /** The active slide's comments (already filtered to the active slide). */
9021
+ readonly comments: _angular_core.InputSignal<PptxComment[]>;
9022
+ private readonly translate;
9023
+ /** Display name shown in the compose label ("Commenting as …"). */
9024
+ readonly authorName: _angular_core.InputSignal<string>;
9025
+ /** Office 2021 modern comment authors, for the `@`-mention typeahead. */
9026
+ readonly modernCommentAuthors: _angular_core.InputSignal<readonly PptxModernCommentAuthor[]>;
9027
+ /** Emits the trimmed comment text (+ mentions) the user wants to add. */
9028
+ readonly add: _angular_core.OutputEmitterRef<CommentSubmission>;
9029
+ /** Emits the id of a comment the user wants to remove. */
9030
+ readonly remove: _angular_core.OutputEmitterRef<string>;
9031
+ /** Emits the id of a comment whose resolved flag should toggle. */
9032
+ readonly resolve: _angular_core.OutputEmitterRef<string>;
9033
+ /** Emits the parent comment id + trimmed text (+ mentions) of a threaded reply. */
9034
+ readonly reply: _angular_core.OutputEmitterRef<{
9035
+ parentId: string;
9036
+ } & CommentSubmission>;
9037
+ /** Current text typed into the compose textarea. */
9038
+ readonly draft: _angular_core.WritableSignal<string>;
9039
+ /** `@`-mentions recorded in {@link draft} so far. */
9040
+ readonly draftMentions: _angular_core.WritableSignal<PptxCommentMention[]>;
9041
+ /** Whether the draft has non-whitespace content (enables the submit button). */
9042
+ readonly canAdd: _angular_core.Signal<boolean>;
9043
+ /** Id of the comment whose reply composer is open (one at a time). */
9044
+ readonly replyingTo: _angular_core.WritableSignal<string | null>;
9045
+ /** Current text typed into the open reply composer. */
9046
+ readonly replyDraft: _angular_core.WritableSignal<string>;
9047
+ /** `@`-mentions recorded in {@link replyDraft} so far. */
9048
+ readonly replyMentions: _angular_core.WritableSignal<PptxCommentMention[]>;
9049
+ /** Whether the reply draft has content (enables the reply submit button). */
9050
+ readonly canReply: _angular_core.Signal<boolean>;
9051
+ submit(event: Event): void;
9052
+ /** Localized reply-composer placeholder ("Reply to <author>..."). */
9053
+ replyPlaceholder(comment: PptxComment): string;
9054
+ /** Open the reply composer under `parentId` (closing any other composer). */
9055
+ startReply(parentId: string): void;
9056
+ cancelReply(): void;
9057
+ submitReply(parentId: string): void;
9058
+ formatTimestamp(value: string | undefined): string;
9059
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CommentsPanelComponent, never>;
9060
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CommentsPanelComponent, "pptx-comments-panel", never, { "comments": { "alias": "comments"; "required": false; "isSignal": true; }; "authorName": { "alias": "authorName"; "required": false; "isSignal": true; }; "modernCommentAuthors": { "alias": "modernCommentAuthors"; "required": false; "isSignal": true; }; }, { "add": "add"; "remove": "remove"; "resolve": "resolve"; "reply": "reply"; }, never, never, true, never>;
9061
+ }
9062
+
8755
9063
  interface EditorSectionOperations {
8756
9064
  add(afterSlideIndex: number, name: string): void;
8757
9065
  rename(sectionId: string, name: string): void;
@@ -8856,7 +9164,6 @@ declare class EditorStateService {
8856
9164
  selectAll(slideIndex: number): void;
8857
9165
  isSelected(id: string): boolean;
8858
9166
  moveSelectedBy(slideIndex: number, dx: number, dy: number): void;
8859
- nudgeSelected(slideIndex: number, dirX: number, dirY: number): void;
8860
9167
  setPosition(slideIndex: number, id: string, x: number, y: number): void;
8861
9168
  resize(slideIndex: number, id: string, width: number, height: number): void;
8862
9169
  updateElement(slideIndex: number, id: string, patch: Partial<PptxElement>): void;
@@ -9216,6 +9523,11 @@ declare class LoadContentService {
9216
9523
  * than silently dropped.
9217
9524
  */
9218
9525
  readonly tagCollections: _angular_core.WritableSignal<PptxTagCollection[]>;
9526
+ /**
9527
+ * Office 2021 modern comment authors (`ppt/commentAuthors/`, p188), the
9528
+ * candidate list the comment panel's `@`-mention typeahead matches against.
9529
+ */
9530
+ readonly modernCommentAuthors: _angular_core.WritableSignal<PptxModernCommentAuthor[]>;
9219
9531
  /** Header/footer settings (footer/header/date-time text + format) for field substitution. */
9220
9532
  readonly headerFooter: _angular_core.WritableSignal<PptxHeaderFooter | undefined>;
9221
9533
  /** Whether the presentation contains digital signatures. */
@@ -9274,12 +9586,61 @@ declare class LoadContentService {
9274
9586
  * change is visible to consumers; callers mark the editor dirty.
9275
9587
  */
9276
9588
  setPresentationTheme(themePath: string, applyToAllMasters: boolean): Promise<void>;
9589
+ /**
9590
+ * Adopt a new handler + fully-resolved `PptxData` from a Slide Master view
9591
+ * CRUD action (`applyMasterViewCrudAction`'s insert/duplicate/delete/rename
9592
+ * layout or master). Unlike {@link setPresentationTheme}, those functions
9593
+ * perform ZIP surgery and reload through a FRESH `PptxHandler` (see
9594
+ * `master-layout-crud`'s module doc) rather than mutating this one in
9595
+ * place, so the loaded handler itself must be swapped, not just the
9596
+ * derived signals.
9597
+ *
9598
+ * Media Blob URLs are left untouched: the slide array's own image
9599
+ * references are unaffected by a master/layout CRUD action, and a newly
9600
+ * inserted layout carries no images at all.
9601
+ */
9602
+ adoptMasterViewData(handler: PptxHandler, data: PptxData): void;
9277
9603
  private disposeHandler;
9278
9604
  private revokeBlobUrls;
9279
9605
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoadContentService, never>;
9280
9606
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<LoadContentService>;
9281
9607
  }
9282
9608
 
9609
+ declare class LoadNoticesService {
9610
+ /** Optional so isolated service tests and stubbed injectors keep working. */
9611
+ private readonly loader;
9612
+ /** Whether the loaded deck recommends opening read-only, and why. */
9613
+ readonly recommendation: _angular_core.Signal<ReadOnlyRecommendation>;
9614
+ /** Whether the banner has been hidden ("Edit anyway" or "Dismiss") this load. */
9615
+ private readonly bannerHidden;
9616
+ /** Whether "Edit anyway" has lifted the recommendation's editing lock this load. */
9617
+ private readonly lockLifted;
9618
+ /** Whether the read-only banner should render. */
9619
+ readonly bannerActive: _angular_core.Signal<boolean>;
9620
+ /**
9621
+ * Whether the recommendation is still actively locking editing. Gates the
9622
+ * host viewer's `canEdit`, the same way the Protected View lock does.
9623
+ */
9624
+ readonly lockActive: _angular_core.Signal<boolean>;
9625
+ /** "Edit anyway": lifts the recommendation's lock and hides the banner. */
9626
+ editAnyway(): void;
9627
+ /** "Dismiss": hides the banner but leaves any lock in place. */
9628
+ dismissBanner(): void;
9629
+ /** Deck-level plus every slide's compatibility warnings, deduped by code. */
9630
+ readonly toasts: _angular_core.Signal<CompatibilityWarningToast[]>;
9631
+ private readonly dismissedToastIds;
9632
+ /** {@link toasts} with per-toast / dismiss-all dismissals applied. */
9633
+ readonly visibleToasts: _angular_core.Signal<CompatibilityWarningToast[]>;
9634
+ /** Dismiss one toast by id. */
9635
+ dismissToast(id: string): void;
9636
+ /** Dismiss every currently-visible toast. */
9637
+ dismissAllToasts(): void;
9638
+ /** Reset both notices' dismissed/lifted state for a newly loaded deck. */
9639
+ resetForLoad(): void;
9640
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoadNoticesService, never>;
9641
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<LoadNoticesService>;
9642
+ }
9643
+
9283
9644
  /** Which mobile sheet/panel is currently active (highlights its button). */
9284
9645
  type MobileBarSheet = 'slides' | 'inspector' | 'comments' | 'notes' | null;
9285
9646
  /** Internal action descriptor used to build the bar. */
@@ -9441,7 +9802,14 @@ declare class PrintService {
9441
9802
  height: number;
9442
9803
  }>,
9443
9804
  /** Options > Advanced > "Print hidden slides". Defaults to PowerPoint's own default (excluded). */
9444
- includeHiddenSlides?: boolean): Promise<boolean>;
9805
+ includeHiddenSlides?: boolean,
9806
+ /**
9807
+ * The deck's handout master, consumed for its background, header/footer/
9808
+ * date/page-number placeholders, and (when authored) positioned slide
9809
+ * rects, in the `handouts` print mode. Optional and defaulted to
9810
+ * `undefined` so existing callers keep printing the bare grid.
9811
+ */
9812
+ handoutMaster?: PptxHandoutMaster): Promise<boolean>;
9445
9813
  /**
9446
9814
  * Open a print window, write the document, focus, and trigger printing, all
9447
9815
  * in one synchronous call. Used by the outline/slides paths, which never
@@ -9454,6 +9822,25 @@ declare class PrintService {
9454
9822
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<PrintService>;
9455
9823
  }
9456
9824
 
9825
+ declare class RecentColorsService {
9826
+ private readonly loader;
9827
+ /** Most-recently-used colours, most-recent-first, `#RRGGBB` uppercase. */
9828
+ readonly recent: _angular_core.WritableSignal<string[]>;
9829
+ /** Seed the row from the deck's own `p:clrMru`. Call once per load. */
9830
+ seed(data: Pick<PptxData, 'mruColors'> | undefined): void;
9831
+ /**
9832
+ * Record a newly-picked colour: moves it to the front of {@link recent},
9833
+ * and writes it straight into the loaded deck's `presentationProperties`
9834
+ * (`p:clrMru`), NOT through `EditorStateService`'s undo history: which
9835
+ * colours are "recent" is picker chrome, not an undoable document edit
9836
+ * (the same reasoning `PowerPointViewerComponent` already applies to the
9837
+ * grid/snap/guides toggles).
9838
+ */
9839
+ push(hex: string): void;
9840
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RecentColorsService, never>;
9841
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<RecentColorsService>;
9842
+ }
9843
+
9457
9844
  /**
9458
9845
  * Duotone SVG `<filter>` descriptor for Angular templates.
9459
9846
  *
@@ -10218,10 +10605,50 @@ declare class ViewerCustomShowsService {
10218
10605
  */
10219
10606
  readonly presentationStartIndex: _angular_core.Signal<number>;
10220
10607
  /**
10221
- * The slide a show should OPEN on: the first slide the active custom show
10222
- * visits, else the active slide. Read once, when the show starts.
10608
+ * The slide a show should OPEN on: the active slide when the show (the
10609
+ * active custom show plus the deck's authored `p:showPr/p:sldRg` range, if
10610
+ * any) includes it, else the closest show slide at or after it, else the
10611
+ * show's own first slide. Read once, when the show starts.
10612
+ *
10613
+ * This is "From Current Slide" / the status-bar "Slide show" button /
10614
+ * `setMode('present')`. A deck authored `p:sldRg st="2" end="3"` used to
10615
+ * open on the editor's active slide unconditionally, which put a slide the
10616
+ * author took out of the show on screen first.
10617
+ */
10618
+ showEntryIndex(authoredRange?: AuthoredSlideRange | null): number;
10619
+ /**
10620
+ * The show's own first slide ("From Beginning" / F5), honouring the active
10621
+ * custom show and the deck's authored range the same way {@link showEntryIndex}
10622
+ * does. Unlike `showEntryIndex`, this ignores the current active slide
10623
+ * entirely: PowerPoint's "From Beginning" always opens the show's first
10624
+ * slide, even when the editor is parked somewhere else in (or outside) it.
10625
+ */
10626
+ showFirstIndex(authoredRange?: AuthoredSlideRange | null): number;
10627
+ /**
10628
+ * The show a running `ppaction://customshow?id=<id>[&return=true]` action
10629
+ * left pending: the show + slide to restore once the SUB-show it switched
10630
+ * to runs off its end (PowerPoint's "Resume last slide viewed after showing
10631
+ * this custom show"). `null` when no such action is in flight.
10632
+ */
10633
+ private readonly pendingReturn;
10634
+ /**
10635
+ * Run `ppaction://customshow?id=<id>[&return=true]`: switch the active
10636
+ * custom show to `customShowId` (an id naming no surviving show is a
10637
+ * no-op, returning `null`) and resolve the deck index its show should open
10638
+ * on. When `returnAfter` is true, remembers the origin show + slide so
10639
+ * {@link consumeReturnAfterOnEnd} can restore it once the sub-show ends.
10640
+ *
10641
+ * @returns The deck index to navigate to, or `null` for an unresolvable id.
10642
+ */
10643
+ runCustomShow(customShowId: string, returnAfter: boolean): number | null;
10644
+ /**
10645
+ * The running show just reached its end (`endOfShowChange` from the
10646
+ * overlay). If a `runCustomShow(..., returnAfter: true)` is pending,
10647
+ * restores the origin show and reports the origin slide to navigate back
10648
+ * to; otherwise a no-op (`null`), leaving the ordinary end-of-show screen
10649
+ * up.
10223
10650
  */
10224
- showEntryIndex(): number;
10651
+ consumeReturnAfterOnEnd(): number | null;
10225
10652
  /**
10226
10653
  * Adopt the loaded deck's authored show selection.
10227
10654
  *
@@ -10827,17 +11254,6 @@ declare class ViewerOptionsService {
10827
11254
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ViewerOptionsService>;
10828
11255
  }
10829
11256
 
10830
- /**
10831
- * presentation-annotations-helpers.ts: Pure geometry helpers for presentation
10832
- * ink annotations (pen, highlighter, eraser, laser).
10833
- *
10834
- * Ported from React:
10835
- * packages/react/src/viewer/components/PresentationAnnotationOverlay.tsx
10836
- * packages/react/src/viewer/hooks/usePresentationAnnotations.ts
10837
- *
10838
- * No Angular dependencies; all functions are pure so they can be unit-tested
10839
- * without TestBed.
10840
- */
10841
11257
  /** A single {x, y} coordinate in slide-space pixels. */
10842
11258
  interface AnnotationPoint {
10843
11259
  x: number;
@@ -10873,6 +11289,8 @@ interface PresentationModeHost {
10873
11289
  readonly canEdit: () => boolean;
10874
11290
  readonly promptKeepAnnotations: (map: SlideAnnotationMap) => void;
10875
11291
  readonly applyRehearsalTimings: (timings: Record<number, number>) => void;
11292
+ /** The deck's authored `p:showPr/p:sldRg` range, or null for the whole deck. */
11293
+ readonly authoredRange: () => AuthoredSlideRange | null;
10876
11294
  }
10877
11295
  declare class ViewerPresentationModeService {
10878
11296
  private readonly presenterWindow;
@@ -10898,11 +11316,25 @@ declare class ViewerPresentationModeService {
10898
11316
  bind(host: PresentationModeHost): void;
10899
11317
  private requireHost;
10900
11318
  /**
10901
- * Open the presentation overlay from the current slide. The overlay itself
11319
+ * Open the presentation overlay at `startIndex`, deselecting first so no
11320
+ * edit chrome (selection outline / resize + rotate "Adjust shape" handles)
11321
+ * leaks over the slideshow. The overlay itself
10902
11322
  * (`PresentationOverlayComponent`) requests real browser fullscreen once it
10903
11323
  * mounts as a result of `presenting` flipping true.
10904
11324
  */
11325
+ private openShow;
11326
+ /**
11327
+ * Open the presentation overlay from the current slide ("From Current
11328
+ * Slide", the status-bar "Slide show" button, `setMode('present')`). Opens
11329
+ * on the active slide when the show (active custom show + the deck's
11330
+ * authored `p:showPr/p:sldRg` range) includes it, else the closest show
11331
+ * slide at or after it, else the show's own first slide.
11332
+ */
10905
11333
  present(): void;
11334
+ /**
11335
+ * "From Beginning" / F5: always opens the show's own first slide, ignoring
11336
+ * where the editor is currently parked.
11337
+ */
10906
11338
  presentFromBeginning(): void;
10907
11339
  presentFromCurrent(): void;
10908
11340
  toggleSubtitles(): void;
@@ -11210,6 +11642,7 @@ declare class PowerPointViewerComponent implements PowerPointViewerAPI {
11210
11642
  /** Fired when the collaboration/broadcast session stops. Mirrors React/Vue. */
11211
11643
  readonly stopCollaboration: _angular_core.OutputEmitterRef<void>;
11212
11644
  protected readonly loader: LoadContentService;
11645
+ protected readonly loadNotices: LoadNoticesService;
11213
11646
  protected readonly editor: EditorStateService;
11214
11647
  private readonly fonts;
11215
11648
  private readonly googleWebfonts;
@@ -11234,6 +11667,14 @@ declare class PowerPointViewerComponent implements PowerPointViewerAPI {
11234
11667
  protected readonly xport: ViewerExportService;
11235
11668
  protected readonly findReplace: ViewerFindReplaceService;
11236
11669
  protected readonly customShowsCtl: ViewerCustomShowsService;
11670
+ protected readonly recentColors: RecentColorsService;
11671
+ /**
11672
+ * The `p:showPr/p:sldRg` slide-range restriction, when the deck is authored
11673
+ * to open into a range (`showSlidesMode === 'range'`) rather than the whole
11674
+ * deck or a custom show. Fed to the presentation overlay's navigator
11675
+ * alongside `activeCustomShow` so a running show honours it.
11676
+ */
11677
+ protected readonly presentationAuthoredRange: _angular_core.Signal<AuthoredSlideRange | null>;
11237
11678
  protected readonly session: ViewerCollaborationSessionService;
11238
11679
  protected readonly formatPainter: ViewerFormatPainterService;
11239
11680
  private readonly keyboard;
@@ -11268,9 +11709,11 @@ declare class PowerPointViewerComponent implements PowerPointViewerAPI {
11268
11709
  protected readonly protectedViewDismissed: _angular_core.WritableSignal<boolean>;
11269
11710
  /**
11270
11711
  * Effective edit permission: the host's `canEdit` input gated by Trust
11271
- * Center > "Open presentations in Protected View", which forces the deck
11272
- * read-only while enabled (File > Options wiring, mirrors PowerPoint),
11273
- * unless the user has lifted it via `enableEditing()` for this document.
11712
+ * Center > "Open presentations in Protected View" (forces the deck
11713
+ * read-only while enabled, mirrors PowerPoint, unless the user has lifted
11714
+ * it via `enableEditing()` for this document) and by the deck's own
11715
+ * read-only recommendation (`p:modifyVerifier` / "Mark as Final"; lifted by
11716
+ * the read-only banner's "Edit anyway", see {@link LoadNoticesService}).
11274
11717
  */
11275
11718
  protected readonly canEdit: _angular_core.Signal<boolean>;
11276
11719
  /** Whether the Protected View banner should show: host allows editing, the option still blocks it, and the user hasn't dismissed it yet. */
@@ -11480,6 +11923,42 @@ declare class PowerPointViewerComponent implements PowerPointViewerAPI {
11480
11923
  protected openMasterView(): void;
11481
11924
  protected closeMasterView(): void;
11482
11925
  protected selectMasterTab(tab: MasterViewTab): void;
11926
+ /**
11927
+ * `ppaction://customshow?id=<id>[&return=true]` clicked during a running
11928
+ * show: switch to the named custom show and open its resolved entry slide.
11929
+ * An id naming no surviving show is a no-op (`resolveCustomShowEntry`
11930
+ * returns `null`).
11931
+ */
11932
+ protected onPresentationCustomShow(event: {
11933
+ customShowId: string;
11934
+ returnAfter: boolean;
11935
+ }): void;
11936
+ /**
11937
+ * The presentation overlay's end-of-show flag changed. Only relevant on the
11938
+ * rising edge: if a `ppaction://customshow ... &return=true` is pending,
11939
+ * restore the origin show and slide instead of leaving the black end
11940
+ * screen up (`syncFromHost`'s host-forced jump clears it once the new
11941
+ * index lands).
11942
+ */
11943
+ protected onPresentationEndOfShow(isEnd: boolean): void;
11944
+ /** The Slide Master view sidebar's current selection, in `master-view-crud`'s shape. */
11945
+ protected readonly masterViewTarget: _angular_core.Signal<MasterViewTarget>;
11946
+ /** The Insert/Duplicate/Delete/Rename Layout+Master sidebar commands for the current selection. */
11947
+ protected readonly masterViewCrudActionsList: _angular_core.Signal<MasterViewCrudAction[]>;
11948
+ /**
11949
+ * Run one Slide Master view sidebar CRUD command.
11950
+ *
11951
+ * rename* prompts for a name first (`window.prompt`, matching the pattern
11952
+ * `SlidesPanelComponent`'s section-rename already uses); every command then
11953
+ * runs through `applyMasterViewCrudAction` and, on success, adopts the
11954
+ * returned handler + data through `LoadContentService.adoptMasterViewData`
11955
+ * (that helper reloads through a FRESH `PptxHandler`, so it cannot be
11956
+ * applied as a plain signal patch) and moves the sidebar selection to the
11957
+ * returned target. A failure is surfaced with `window.alert`: Angular has
11958
+ * no generic toast/notice channel for an arbitrary action failure (the
11959
+ * compat-toast stack is load-diagnostics only).
11960
+ */
11961
+ protected onMasterViewCrudAction(id: MasterViewCrudActionId): Promise<void>;
11483
11962
  /**
11484
11963
  * Format Background for whichever master-view part is selected.
11485
11964
  *
@@ -11676,17 +12155,26 @@ declare class PowerPointViewerComponent implements PowerPointViewerAPI {
11676
12155
  * back to Options > General > "User name" before the generic "You".
11677
12156
  */
11678
12157
  private commentAuthorName;
11679
- /** Append a comment to the active slide (one history entry). */
11680
- onCommentAdd(text: string): void;
12158
+ /**
12159
+ * Append a comment to the active slide (one history entry).
12160
+ *
12161
+ * `addCommentToList` (shared) has no `mentions` parameter, so the `@`-mention
12162
+ * spans the typeahead recorded are patched onto the newly-appended comment
12163
+ * (the array's last element) here, rather than in the shared helper.
12164
+ */
12165
+ onCommentAdd(submission: CommentSubmission): void;
11681
12166
  /** Remove a comment from the active slide. */
11682
12167
  onCommentRemove(id: string): void;
11683
12168
  /** Toggle a comment's resolved flag on the active slide. */
11684
12169
  onCommentResolve(id: string): void;
11685
- /** Append a threaded reply under a top-level comment on the active slide. */
12170
+ /**
12171
+ * Append a threaded reply under a top-level comment on the active slide.
12172
+ * See {@link onCommentAdd}: `mentions` is patched on afterwards, since
12173
+ * `replyToCommentInList` (shared) has no `mentions` parameter.
12174
+ */
11686
12175
  onCommentReply(event: {
11687
12176
  parentId: string;
11688
- text: string;
11689
- }): void;
12177
+ } & CommentSubmission): void;
11690
12178
  /**
11691
12179
  * Insert a new SmartArt element built from the dialog's chosen preset + item
11692
12180
  * texts. The element id is left empty so `EditorStateService.addElement`
@@ -11933,17 +12421,17 @@ declare class FieldContextService {
11933
12421
  declare const GOOGLE_WEBFONTS_LINK_ID = "pptx-angular-google-fonts";
11934
12422
  declare class GoogleWebfontsService {
11935
12423
  private linkEl;
11936
- /** Tags in-flight probes; only the newest `sync` may apply its result. */
12424
+ /** Tags in-flight resolutions; only the newest `sync` may apply its result. */
11937
12425
  private syncToken;
11938
12426
  constructor();
11939
12427
  /**
11940
12428
  * Resolve which referenced families need a Google Fonts fetch for this
11941
- * deck and sync the managed `<link>` element once the probe settles.
12429
+ * deck and sync the managed `<link>` element once the resolution settles.
11942
12430
  * Pass empty slides / fonts (e.g. before a load) to remove it.
11943
12431
  */
11944
12432
  sync(slides: readonly PptxSlide[], embeddedFonts: readonly PptxEmbeddedFont[]): void;
11945
12433
  /**
11946
- * Remove the injected `<link>` element and invalidate in-flight probes.
12434
+ * Remove the injected `<link>` element and invalidate in-flight resolutions.
11947
12435
  * Called automatically on destroy; safe to call manually.
11948
12436
  */
11949
12437
  dispose(): void;
@@ -12103,6 +12591,7 @@ declare class ViewerKeyboardService {
12103
12591
  private readonly dialogs;
12104
12592
  private readonly formatPainter;
12105
12593
  private readonly findReplace;
12594
+ private readonly presentationMode;
12106
12595
  private host;
12107
12596
  /** Wire the host accessors (called once from the component constructor). */
12108
12597
  bind(host: KeyboardHost): void;
@@ -12225,7 +12714,7 @@ declare class ZoomTargetService {
12225
12714
  * `PowerPointViewerComponent`'s children (ribbon, slide canvas, inspector,
12226
12715
  * dialogs, ...) rely on via `inject()`.
12227
12716
  */
12228
- declare const POWER_POINT_VIEWER_PROVIDERS: readonly [typeof LoadContentService, typeof ExportService, typeof EditorStateService, typeof ChartPartSelectionService, typeof TableSelectionService, typeof EmbeddedFontsService, typeof GoogleWebfontsService, typeof CollaborationService, typeof CustomFontsService, typeof AccessibilityService, typeof AutosaveService, typeof AutosaveRecoveryService, typeof PrintService, typeof IsMobileService, typeof SmartArt3DService, typeof SurfaceChart3DService, typeof BarChart3DService, typeof LineChart3DService, typeof AreaChart3DService, typeof PieChart3DService, typeof FieldContextService, typeof ZoomTargetService, typeof AiPanelStore, typeof ViewerDialogsService, typeof ViewerCompareService, typeof ViewerExportService, typeof ViewerFindReplaceService, typeof ViewerCustomShowsService, typeof ViewerCollaborationSessionService, typeof ViewerCanvasEditingService, typeof ViewerCollabCursorService, typeof ViewerDocumentPropertiesService, typeof ViewerFileIOService, typeof ViewerFormatPainterService, typeof ViewerInspectorPanelService, typeof ViewerKeyboardService, typeof ViewerMobileSheetService, typeof ViewerOptionsService, typeof ViewerPresentationModeService, typeof ViewerThemeGalleryService, typeof ViewerTouchGesturesService, typeof ViewerZoomService];
12717
+ declare const POWER_POINT_VIEWER_PROVIDERS: readonly [typeof LoadContentService, typeof LoadNoticesService, typeof ExportService, typeof EditorStateService, typeof ChartPartSelectionService, typeof TableSelectionService, typeof EmbeddedFontsService, typeof GoogleWebfontsService, typeof CollaborationService, typeof CustomFontsService, typeof AccessibilityService, typeof AutosaveService, typeof AutosaveRecoveryService, typeof PrintService, typeof IsMobileService, typeof SmartArt3DService, typeof SurfaceChart3DService, typeof BarChart3DService, typeof LineChart3DService, typeof AreaChart3DService, typeof PieChart3DService, typeof FieldContextService, typeof RecentColorsService, typeof ZoomTargetService, typeof AiPanelStore, typeof ViewerDialogsService, typeof ViewerCompareService, typeof ViewerExportService, typeof ViewerFindReplaceService, typeof ViewerCustomShowsService, typeof ViewerCollaborationSessionService, typeof ViewerCanvasEditingService, typeof ViewerCollabCursorService, typeof ViewerDocumentPropertiesService, typeof ViewerFileIOService, typeof ViewerFormatPainterService, typeof ViewerInspectorPanelService, typeof ViewerKeyboardService, typeof ViewerMobileSheetService, typeof ViewerOptionsService, typeof ViewerPresentationModeService, typeof ViewerThemeGalleryService, typeof ViewerTouchGesturesService, typeof ViewerZoomService];
12229
12718
 
12230
12719
  /** Lifecycle of the AI session bootstrap. */
12231
12720
  type AiChatInitState = 'checking' | 'unavailable' | 'ready' | 'error';
@@ -12490,69 +12979,10 @@ declare class AiHistoryMenuComponent {
12490
12979
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AiHistoryMenuComponent, "pptx-ai-history-menu", never, { "canClear": { "alias": "canClear"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12491
12980
  }
12492
12981
 
12493
- /** One tool invocation captured with its full technical detail. */
12494
- interface AiLogToolCall {
12495
- toolName: string;
12496
- toolCallId: string;
12497
- state: string;
12498
- input: unknown;
12499
- output: unknown;
12500
- errorText?: string;
12501
- }
12502
- /** One message: its role, concatenated prose, and any tool calls it made. */
12503
- interface AiLogMessage {
12504
- role: string;
12505
- text: string;
12506
- toolCalls: AiLogToolCall[];
12507
- }
12508
- /** One chat conversation in export form. */
12509
- interface AiLogChat {
12510
- id: string;
12511
- title: string;
12512
- deckId?: string;
12513
- createdAt: number;
12514
- updatedAt: number;
12515
- createdAtIso: string;
12516
- updatedAtIso: string;
12517
- messageCount: number;
12518
- messages: AiLogMessage[];
12519
- }
12520
- /** Top-level detailed export document. */
12521
- interface AiLogExport {
12522
- format: 'pptx-ai-chat-log';
12523
- version: 1;
12524
- exportedAt: string;
12525
- /** Whether tool inputs/outputs are included (see `detailed` option). */
12526
- detailed: boolean;
12527
- chatCount: number;
12528
- chats: AiLogChat[];
12529
- }
12530
- /** Options controlling how the export document is built. */
12531
- interface BuildChatLogOptions {
12532
- /** Include tool-call inputs/outputs. Default `true`. When false, tool calls
12533
- * still list name + state but omit the (potentially large) payloads. */
12534
- detailed?: boolean;
12535
- /** Epoch ms stamped as `exportedAt`. Default `Date.now()`. */
12536
- now?: number;
12537
- }
12538
- /** Build the detailed export document from already-loaded chats (pure). */
12539
- declare function buildChatLogExport(chats: readonly PptxAiStoredChat[], options?: BuildChatLogOptions): AiLogExport;
12540
- /** Render the same detailed export as a human-readable Markdown transcript. */
12541
- declare function buildChatLogMarkdown(doc: AiLogExport): string;
12542
- /** Load every stored chat (newest first) in full detail from a store. */
12543
- declare function collectStoredChats(store: PptxAiChatStore): Promise<PptxAiStoredChat[]>;
12544
- /** File format to download. */
12545
- type AiLogFormat = 'json' | 'markdown';
12546
12982
  /** Options for {@link exportAiChatLogs}. */
12547
- interface ExportAiChatLogsOptions {
12983
+ interface ExportAiChatLogsOptions extends ExportAiChatLogsMeta {
12548
12984
  /** Store to read from. Defaults to the shared `createChatHistoryStore()`. */
12549
12985
  store?: PptxAiChatStore;
12550
- /** `'json'` (default) or `'markdown'`. */
12551
- format?: AiLogFormat;
12552
- /** Include tool inputs/outputs. Default `true`. */
12553
- detailed?: boolean;
12554
- /** Epoch ms for the filename + `exportedAt`. Default `Date.now()`. */
12555
- now?: number;
12556
12986
  }
12557
12987
  /**
12558
12988
  * Read all stored chats and trigger a browser download of the detailed log.
@@ -12680,9 +13110,16 @@ declare class RibbonDrawSectionComponent {
12680
13110
  readonly drawingColor: _angular_core.InputSignal<string>;
12681
13111
  readonly drawingWidth: _angular_core.InputSignal<number>;
12682
13112
  readonly drawToolChange: _angular_core.OutputEmitterRef<DrawToolState>;
13113
+ /** Optional: absent in a standalone unit test with no viewer-level DI tree. */
13114
+ private readonly recentColors;
12683
13115
  protected readonly drawTools: readonly DrawToolDef[];
12684
13116
  protected selectTool(tool: DrawTool$1): void;
12685
13117
  protected onColorInput(event: Event): void;
13118
+ /**
13119
+ * Record the committed (native `change`, not the live-preview `input`)
13120
+ * pen colour into the shared "Recent colours" list.
13121
+ */
13122
+ protected onColorCommit(event: Event): void;
12686
13123
  protected onWidthInput(event: Event): void;
12687
13124
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonDrawSectionComponent, never>;
12688
13125
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonDrawSectionComponent, "pptx-ribbon-draw-section", never, { "activeTool": { "alias": "activeTool"; "required": false; "isSignal": true; }; "drawingColor": { "alias": "drawingColor"; "required": false; "isSignal": true; }; "drawingWidth": { "alias": "drawingWidth"; "required": false; "isSignal": true; }; }, { "drawToolChange": "drawToolChange"; }, never, never, true, never>;
@@ -14092,6 +14529,18 @@ declare class ElementRendererComponent {
14092
14529
  readonly isImageLike: _angular_core.Signal<boolean>;
14093
14530
  readonly paragraphs: _angular_core.Signal<Paragraph[]>;
14094
14531
  readonly hasText: _angular_core.Signal<boolean>;
14532
+ /**
14533
+ * An empty inherited placeholder's greyed-out hint ("Click to add title"),
14534
+ * or null when it should not be shown. `editable` is only ever set true on
14535
+ * the live editing canvas (Present Mode leaves it at its `false` default,
14536
+ * and the thumbnail rail passes it explicitly false), matching shared's
14537
+ * `'edit'`-only surface: PowerPoint never prints, presents or thumbnails
14538
+ * this authoring hint.
14539
+ */
14540
+ readonly placeholderPrompt: _angular_core.Signal<{
14541
+ text: string;
14542
+ style: StyleMap;
14543
+ } | null>;
14095
14544
  readonly placeholderLabel: _angular_core.Signal<any>;
14096
14545
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ElementRendererComponent, never>;
14097
14546
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ElementRendererComponent, "pptx-element-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "obstacles": { "alias": "obstacles"; "required": false; "isSignal": true; }; "canvasWidth": { "alias": "canvasWidth"; "required": false; "isSignal": true; }; "canvasHeight": { "alias": "canvasHeight"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "marked": { "alias": "marked"; "required": false; "isSignal": true; }; "exposeElementId": { "alias": "exposeElementId"; "required": false; "isSignal": true; }; "presenting": { "alias": "presenting"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "fieldContext": { "alias": "fieldContext"; "required": false; "isSignal": true; }; "slideElements": { "alias": "slideElements"; "required": false; "isSignal": true; }; "editTemplateMode": { "alias": "editTemplateMode"; "required": false; "isSignal": true; }; "parentGroupFill": { "alias": "parentGroupFill"; "required": false; "isSignal": true; }; "editingElementId": { "alias": "editingElementId"; "required": false; "isSignal": true; }; }, { "cellCommit": "cellCommit"; "tableChange": "tableChange"; }, never, never, true, never>;
@@ -14887,6 +15336,14 @@ declare class OleRendererComponent {
14887
15336
  readonly ariaLabel: _angular_core.Signal<string>;
14888
15337
  /** Border + background style for the placeholder box. */
14889
15338
  readonly placeholderStyle: _angular_core.Signal<StyleMap>;
15339
+ /**
15340
+ * Data-driven `rect`/`line`/`text` primitives for the placeholder icon,
15341
+ * shared with every other binding's OLE renderer so the icon glyphs
15342
+ * (Excel grid, Word lines, PDF box, Visio diagram, MathType `f(x)`,
15343
+ * generic linked-object) cannot drift apart. The template maps each
15344
+ * primitive onto its own SVG element.
15345
+ */
15346
+ readonly iconShapes: _angular_core.Signal<OleIconShape[]>;
14890
15347
  /**
14891
15348
  * Download / Open action model derived from the recovered embedded payload.
14892
15349
  * When the input is not an OLE element, every action is disabled.
@@ -14910,6 +15367,13 @@ declare class OleRendererComponent {
14910
15367
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<OleRendererComponent, "pptx-ole-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
14911
15368
  }
14912
15369
 
15370
+ /**
15371
+ * Pure helpers for `Model3DRendererComponent`.
15372
+ *
15373
+ * All functions are framework-agnostic (no Angular dependency) so they can be
15374
+ * unit-tested without TestBed, following the same pattern as
15375
+ * `connector-path.ts`.
15376
+ */
14913
15377
  /** Narrowed view-model derived from a `Model3DPptxElement`. */
14914
15378
  interface Model3DViewModel {
14915
15379
  /** Resolved model element, or undefined when the element is not a model3d. */
@@ -14930,14 +15394,12 @@ declare function buildModel3DViewModel(element: PptxElement): Model3DViewModel;
14930
15394
  declare function buildModel3DContainerStyle(element: PptxElement, zIndex: number): StyleMap;
14931
15395
  /**
14932
15396
  * Derive an object (blob) URL for the GLTF/GLB loader from the element's
14933
- * base64 `modelData` data URL.
14934
- *
14935
- * Reuses the core `parseDataUrlToBytes` helper (no hand-rolled base64) and
14936
- * wraps the bytes in a `Blob` typed with `modelMimeType` (falling back to
14937
- * `model/gltf-binary`). Returns `undefined` when the element is not a model3d,
14938
- * has no `modelData`, or the data URL cannot be parsed: the caller then shows
14939
- * the poster fallback. The returned URL is owned by the caller, which must
14940
- * `URL.revokeObjectURL` it on teardown.
15397
+ * base64 `modelData` data URL. Delegates to shared's `modelDataToBlobUrl`
15398
+ * (reuses core's `parseDataUrlToBytes`, no hand-rolled base64); this wrapper
15399
+ * only narrows `element` to `Model3DPptxElement` first. Returns `undefined`
15400
+ * when the element is not a model3d, has no `modelData`, or the data URL
15401
+ * cannot be parsed: the caller then shows the poster fallback. The returned
15402
+ * URL is owned by the caller, which must `URL.revokeObjectURL` it on teardown.
14941
15403
  */
14942
15404
  declare function deriveModel3DBlobUrl(element: PptxElement): string | undefined;
14943
15405
 
@@ -15380,6 +15842,15 @@ declare class PresentationAnnotationsService {
15380
15842
  * Exported separately so they can be unit-tested without TestBed.
15381
15843
  */
15382
15844
 
15845
+ /**
15846
+ * The `p:showPr/p:sldRg` range restriction, when the deck is authored to open
15847
+ * into a slide range (`p:showPr/@showSlidesMode == 'range'`). Every navigation
15848
+ * helper below forwards it to `resolveShowSlideIndexes` alongside
15849
+ * {@link ActiveShow}, so a range restriction is applied the same way a custom
15850
+ * show's membership is: as a filter on the show's slide order, not a
15851
+ * pre-filtered slide array.
15852
+ */
15853
+ type AuthoredRange = AuthoredSlideRange | null | undefined;
15383
15854
  /**
15384
15855
  * The running custom show, when one is active. Every navigation helper below
15385
15856
  * takes it and forwards it to `resolveShowSlideIndexes`, because "which slide
@@ -15446,13 +15917,13 @@ declare function clampIndex(index: number, count: number): number;
15446
15917
  * slides. Kept as a named export because the overlay's tests and the navigator
15447
15918
  * read better in terms of "next visible slide" than raw index lists.
15448
15919
  */
15449
- declare function nextVisibleIndex(current: number, slides: readonly PptxSlide[], activeShow?: ActiveShow): number;
15920
+ declare function nextVisibleIndex(current: number, slides: readonly PptxSlide[], activeShow?: ActiveShow, authoredRange?: AuthoredRange): number;
15450
15921
  /**
15451
15922
  * Return the previous visible (non-hidden) slide index before `current`.
15452
15923
  * Returns `current` when no earlier visible slide exists: PowerPoint never
15453
15924
  * wraps backward off the first slide.
15454
15925
  */
15455
- declare function prevVisibleIndex(current: number, slides: readonly PptxSlide[], activeShow?: ActiveShow): number;
15926
+ declare function prevVisibleIndex(current: number, slides: readonly PptxSlide[], activeShow?: ActiveShow, authoredRange?: AuthoredRange): number;
15456
15927
  /**
15457
15928
  * Compute the zoom level that fits a canvas of `canvasW × canvasH` pixels
15458
15929
  * into a viewport of `vw × vh` pixels, preserving aspect ratio.
@@ -15468,11 +15939,11 @@ declare function fitZoom(canvasW: number, canvasH: number, vw: number, vh: numbe
15468
15939
  * the last slide ends the show. Callers use this to tell "there is a next
15469
15940
  * slide" from "we just wrapped".
15470
15941
  */
15471
- declare function hasVisibleSlideAfter(current: number, slides: readonly PptxSlide[], activeShow?: ActiveShow): boolean;
15942
+ declare function hasVisibleSlideAfter(current: number, slides: readonly PptxSlide[], activeShow?: ActiveShow, authoredRange?: AuthoredRange): boolean;
15472
15943
  /** The show's first visible slide (Home), or 0 for an empty deck. */
15473
- declare function firstVisibleIndex(slides: readonly PptxSlide[], activeShow?: ActiveShow): number;
15944
+ declare function firstVisibleIndex(slides: readonly PptxSlide[], activeShow?: ActiveShow, authoredRange?: AuthoredRange): number;
15474
15945
  /** The show's last visible slide (End), or 0 for an empty deck. */
15475
- declare function lastVisibleIndex(slides: readonly PptxSlide[], activeShow?: ActiveShow): number;
15946
+ declare function lastVisibleIndex(slides: readonly PptxSlide[], activeShow?: ActiveShow, authoredRange?: AuthoredRange): number;
15476
15947
  /**
15477
15948
  * Style record centring the scaled slide stage in the viewport.
15478
15949
  *
@@ -15506,6 +15977,12 @@ interface ShowNavigatorDeps {
15506
15977
  * space never has to be translated.
15507
15978
  */
15508
15979
  activeCustomShow?: () => ActiveShow;
15980
+ /**
15981
+ * The `p:showPr/p:sldRg` range, when the deck opens into a range rather than
15982
+ * the whole deck or a custom show. Applied like `activeCustomShow`: a filter
15983
+ * on the navigable order, not a pre-filtered slide array.
15984
+ */
15985
+ authoredRange?: () => AuthoredRange;
15509
15986
  /** The slide at the CURRENT index (a computed over `currentIndex`). */
15510
15987
  currentSlide: () => PptxSlide | undefined;
15511
15988
  showWithAnimation: () => boolean | undefined;
@@ -15516,39 +15993,42 @@ interface ShowNavigatorDeps {
15516
15993
  /** Ask the host to end the show; the host guards against double-closing. */
15517
15994
  requestClose: () => void;
15518
15995
  /**
15519
- * File > Options > Advanced > "End with black slide". PowerPoint's default
15520
- * is ON: running past the last slide raises a black "End of slide show"
15521
- * screen and only the NEXT forward input ends the show. Turning it off ends
15522
- * the show immediately instead. Undefined means the PowerPoint default.
15996
+ * File > Options > Advanced > "End with black slide". PowerPoint's default is
15997
+ * ON: running past the last slide raises a black end screen and only the NEXT
15998
+ * forward input ends the show; off ends the show immediately instead.
15523
15999
  */
15524
16000
  endWithBlackSlide?: () => boolean | undefined;
16001
+ /**
16002
+ * Set Up Slide Show > "Loop continuously until 'Esc'": wraps to the show's
16003
+ * first slide instead of raising the end screen (or exiting).
16004
+ */
16005
+ loopContinuously?: () => boolean | undefined;
15525
16006
  }
15526
16007
  declare class PresentationShowNavigator {
15527
16008
  private readonly deps;
15528
16009
  /** Zero-based index into `slides()`. */
15529
16010
  readonly currentIndex: _angular_core.WritableSignal<number>;
15530
16011
  /**
15531
- * True once the show has run past its last slide and the black "End of slide
15532
- * show" screen is up. It MUST be surfaced: while it is up the next input
15533
- * either goes nowhere (backward) or ends the show (forward), so a deck that
15534
- * kept painting its last slide looked stuck and swallowed every advance.
16012
+ * True once the show has run past its last slide and the black end screen is
16013
+ * up: while it is up the next input either goes nowhere (backward) or ends
16014
+ * the show (forward), so a stuck deck must surface this rather than swallow
16015
+ * every advance.
15535
16016
  */
15536
16017
  readonly endOfShow: _angular_core.WritableSignal<boolean>;
15537
16018
  /** Active slide-transition animation, or null when none is playing. */
15538
16019
  readonly activeTransition: _angular_core.WritableSignal<ActiveSlideTransition | null>;
15539
16020
  /**
15540
- * Set just before a BACKWARD slide change so the host's slide effect seeds the
16021
+ * Set just before a BACKWARD change so the host's slide effect seeds the
15541
16022
  * incoming slide as fully built. Read-and-cleared via
15542
16023
  * {@link takePendingCompletedEntry}.
15543
16024
  */
15544
16025
  private pendingCompletedEntry;
15545
16026
  /** Pending `p:transition/@advTm` auto-advance timer for the current slide. */
15546
16027
  private autoAdvanceTimer;
16028
+ /** Deck index before each committed change; backs {@link goToLastViewed}. */
16029
+ private previousIndex;
15547
16030
  constructor(deps: ShowNavigatorDeps);
15548
- /**
15549
- * Consume the "entered backward" flag. The host's per-slide effect asks once
15550
- * per slide change, so this both reads and clears it.
15551
- */
16031
+ /** Consume the "entered backward" flag: reads and clears it in one call. */
15552
16032
  takePendingCompletedEntry(): boolean;
15553
16033
  /**
15554
16034
  * Adopt an index pushed in by the host (its `startIndex` input, which an
@@ -15557,30 +16037,29 @@ declare class PresentationShowNavigator {
15557
16037
  */
15558
16038
  syncFromHost(requestedIndex: number): void;
15559
16039
  /**
15560
- * (Re)arm PowerPoint's "Advance slide: After <n>" timer, cancelling whatever
15561
- * was pending. Always cancelling first is load-bearing: a manual advance must
15562
- * never leave a stale timer running that then skips the slide the presenter
15563
- * just moved to.
16040
+ * Jump back to the slide the show was on immediately before the current one
16041
+ * (`ppaction://hlinkshowjump?jump=lastslideviewed`). A no-op before any
16042
+ * navigation has happened yet.
16043
+ */
16044
+ goToLastViewed(): void;
16045
+ /**
16046
+ * (Re)arm PowerPoint's "Advance slide: After <n>" timer, always cancelling
16047
+ * whatever was pending first: a manual advance must never leave a stale
16048
+ * timer running that skips the slide the presenter just moved to.
15564
16049
  */
15565
16050
  armAutoAdvance(delayMs: number | undefined): void;
15566
16051
  /** Cancel any pending timed auto-advance (also called on teardown). */
15567
16052
  clearAutoAdvance(): void;
15568
16053
  navigate(direction: ShowDirection): void;
15569
16054
  /**
15570
- * Jump directly to `index` (clamped to the slide range). Used by zoom tiles
15571
- * and by on-slide Action Settings (`ppaction://hlinksldjump`).
15572
- *
15573
- * A jump ENTERS the target slide, so PowerPoint plays that slide's
15574
- * transition exactly as a forward step does. Committing with `null` here is
15575
- * why a deck navigated by clicking its own on-slide links showed no morph at
15576
- * all while the same transition played fine on PageDown.
16055
+ * Jump directly to `index` (clamped). Used by zoom tiles and by on-slide
16056
+ * Action Settings (`ppaction://hlinksldjump`); ENTERS the target slide, so
16057
+ * PowerPoint plays its transition exactly as a forward step does.
15577
16058
  */
15578
16059
  goToSlide(index: number): void;
15579
16060
  /**
15580
16061
  * The single place a slide change becomes visible: set the transition, move
15581
- * the index, retarget the annotation layer, and tell the host. Both entry
15582
- * points share it so a change to one can never silently skip a step in the
15583
- * other (they had drifted apart as four repeated statements before).
16062
+ * the index, retarget the annotation layer, and tell the host.
15584
16063
  */
15585
16064
  private commit;
15586
16065
  }
@@ -15631,6 +16110,13 @@ interface PresentationInputDeps {
15631
16110
  * with the option off.
15632
16111
  */
15633
16112
  confirmExternalHyperlink?: (href: string) => boolean;
16113
+ /**
16114
+ * `ppaction://customshow?id=<id>[&return=true]`: run the named custom show.
16115
+ * The host resolves `customShowId` against its own custom-show registry (an
16116
+ * id naming no surviving show is a no-op) and, when `returnAfter` is true,
16117
+ * restores the origin show + slide once the sub-show runs off its end.
16118
+ */
16119
+ runCustomShow?: (customShowId: string, returnAfter: boolean) => void;
15634
16120
  }
15635
16121
  declare class PresentationInputController {
15636
16122
  private readonly deps;
@@ -15712,6 +16198,15 @@ declare class PresentationOverlayComponent implements OnInit {
15712
16198
  * hidden slides inside a show are still skipped.
15713
16199
  */
15714
16200
  readonly activeCustomShow: _angular_core.InputSignal<ShowOrderCustomShow | null>;
16201
+ /**
16202
+ * The `p:showPr/p:sldRg` slide-range restriction, when the deck is authored
16203
+ * to open into a range (`p:showPr/@showSlidesMode == 'range'`) rather than
16204
+ * the whole deck or a custom show. Applied the same way `activeCustomShow`
16205
+ * is: a filter on the navigable order, not a pre-filtered slide array.
16206
+ */
16207
+ readonly authoredRange: _angular_core.InputSignal<AuthoredSlideRange | null>;
16208
+ /** Set Up Slide Show > "Loop continuously until 'Esc'". */
16209
+ readonly loopContinuously: _angular_core.InputSignal<boolean>;
15715
16210
  readonly showWithAnimation: _angular_core.InputSignal<boolean | undefined>;
15716
16211
  /**
15717
16212
  * Whether authored slide timings (`p:transition/@advTm`) advance the show on
@@ -15757,6 +16252,24 @@ declare class PresentationOverlayComponent implements OnInit {
15757
16252
  * host can offer the keep/discard prompt (mirrors React's exit flow).
15758
16253
  */
15759
16254
  readonly annotationsExit: _angular_core.OutputEmitterRef<SlideAnnotationMap>;
16255
+ /**
16256
+ * `ppaction://customshow?id=<id>[&return=true]`: the host resolves the id
16257
+ * against its own custom-show registry (this overlay only knows the
16258
+ * CURRENTLY active show's membership, via `activeCustomShow`) and, when
16259
+ * `returnAfter` is true, restores the origin show + slide once the
16260
+ * sub-show runs off its end (see `endOfShowChange` below).
16261
+ */
16262
+ readonly customShowRequest: _angular_core.OutputEmitterRef<{
16263
+ customShowId: string;
16264
+ returnAfter: boolean;
16265
+ }>;
16266
+ /**
16267
+ * Mirrors the navigator's `endOfShow` flag. The host listens for this to
16268
+ * implement `ppaction://customshow`'s "return after": ending the show while
16269
+ * a return is pending means restore the origin instead of raising the
16270
+ * black end screen (which `syncFromHost`'s host-forced jump then clears).
16271
+ */
16272
+ readonly endOfShowChange: _angular_core.OutputEmitterRef<boolean>;
15760
16273
  /** PowerPoint's Ctrl+M: hide ink markup without discarding the strokes. */
15761
16274
  protected readonly inkMarkupVisible: _angular_core.WritableSignal<boolean>;
15762
16275
  /** Click-stepped element-animation playback for the current slide. */
@@ -15924,7 +16437,7 @@ declare class PresentationOverlayComponent implements OnInit {
15924
16437
  private runChromeAction;
15925
16438
  private emitClosed;
15926
16439
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PresentationOverlayComponent, never>;
15927
- 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>;
16440
+ 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; }; "authoredRange": { "alias": "authoredRange"; "required": false; "isSignal": true; }; "loopContinuously": { "alias": "loopContinuously"; "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"; "customShowRequest": "customShowRequest"; "endOfShowChange": "endOfShowChange"; }, never, never, true, never>;
15928
16441
  }
15929
16442
 
15930
16443
  /**
@@ -16135,6 +16648,8 @@ declare class InspectorPanelComponent {
16135
16648
  protected readonly editor: EditorStateService;
16136
16649
  /** Reactive viewport / pointer flags (drives the bottom-sheet layout). */
16137
16650
  protected readonly mobile: IsMobileService;
16651
+ /** "Recent colours" row backing the fill/stroke/text colour pickers below. */
16652
+ protected readonly recentColors: RecentColorsService;
16138
16653
  /**
16139
16654
  * Root class list: gains the `is-mobile` modifier under the mobile
16140
16655
  * breakpoint so the panel becomes a full-width, touch-sized bottom sheet.
@@ -16218,8 +16733,17 @@ declare class InspectorPanelComponent {
16218
16733
  protected onRotationChange(event: Event): void;
16219
16734
  protected onOpacityChange(event: Event): void;
16220
16735
  protected onFillColorChange(event: Event): void;
16736
+ /** Recent-colours row pick: commits through the same path as the native picker. */
16737
+ protected onFillColorPick(color: string): void;
16738
+ private commitFillColor;
16221
16739
  protected onStrokeColorChange(event: Event): void;
16740
+ /** Recent-colours row pick: commits through the same path as the native picker. */
16741
+ protected onStrokeColorPick(color: string): void;
16742
+ private commitStrokeColor;
16222
16743
  protected onTextColorChange(event: Event): void;
16744
+ /** Recent-colours row pick: commits through the same path as the native picker. */
16745
+ protected onTextColorPick(color: string): void;
16746
+ private commitTextColor;
16223
16747
  protected onFontSizeChange(event: Event): void;
16224
16748
  protected onBoldToggle(): void;
16225
16749
  protected onItalicToggle(): void;
@@ -16261,14 +16785,15 @@ declare class SlideDefaultInspectorComponent {
16261
16785
  readonly selectedElement: _angular_core.InputSignal<PptxElement | null>;
16262
16786
  /** The active slide's comments (host-owned; history-aware writes stay there). */
16263
16787
  readonly comments: _angular_core.InputSignal<PptxComment[]>;
16788
+ /** Office 2021 modern comment authors, for the `@`-mention typeahead. */
16789
+ readonly modernCommentAuthors: _angular_core.InputSignal<readonly PptxModernCommentAuthor[]>;
16264
16790
  /** Re-emitted comments-panel events (the host owns the comment writes). */
16265
- readonly commentAdd: _angular_core.OutputEmitterRef<string>;
16791
+ readonly commentAdd: _angular_core.OutputEmitterRef<CommentSubmission>;
16266
16792
  readonly commentRemove: _angular_core.OutputEmitterRef<string>;
16267
16793
  readonly commentResolve: _angular_core.OutputEmitterRef<string>;
16268
16794
  readonly commentReply: _angular_core.OutputEmitterRef<{
16269
16795
  parentId: string;
16270
- text: string;
16271
- }>;
16796
+ } & CommentSubmission>;
16272
16797
  protected readonly editor: EditorStateService;
16273
16798
  protected readonly canvasEditing: ViewerCanvasEditingService;
16274
16799
  protected readonly inspectorPanel: ViewerInspectorPanelService;
@@ -16283,7 +16808,7 @@ declare class SlideDefaultInspectorComponent {
16283
16808
  */
16284
16809
  protected readonly layerRows: _angular_core.Signal<LayerRow[]>;
16285
16810
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlideDefaultInspectorComponent, never>;
16286
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlideDefaultInspectorComponent, "pptx-slide-default-inspector", never, { "slideIndex": { "alias": "slideIndex"; "required": true; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "comments": { "alias": "comments"; "required": false; "isSignal": true; }; }, { "commentAdd": "commentAdd"; "commentRemove": "commentRemove"; "commentResolve": "commentResolve"; "commentReply": "commentReply"; }, never, never, true, never>;
16811
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlideDefaultInspectorComponent, "pptx-slide-default-inspector", never, { "slideIndex": { "alias": "slideIndex"; "required": true; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "comments": { "alias": "comments"; "required": false; "isSignal": true; }; "modernCommentAuthors": { "alias": "modernCommentAuthors"; "required": false; "isSignal": true; }; }, { "commentAdd": "commentAdd"; "commentRemove": "commentRemove"; "commentResolve": "commentResolve"; "commentReply": "commentReply"; }, never, never, true, never>;
16287
16812
  }
16288
16813
 
16289
16814
  declare class PresentationPropertiesPanelComponent {
@@ -16342,17 +16867,36 @@ declare class SlideSizeCardComponent {
16342
16867
  readonly canEdit: _angular_core.InputSignal<boolean>;
16343
16868
  private readonly loader;
16344
16869
  private readonly editor;
16870
+ private readonly translate;
16345
16871
  protected readonly CUSTOM_PRESET_VALUE = "";
16346
16872
  protected readonly presets: readonly SlideSizePreset[];
16347
16873
  protected readonly orientations: readonly SlideSizeOrientation[];
16348
16874
  protected readonly size: _angular_core.WritableSignal<pptx_angular_viewer.CanvasSize>;
16349
16875
  protected readonly selection: _angular_core.Signal<SlideSizeSelectionDescriptor>;
16350
16876
  protected readonly selectedPresetValue: _angular_core.Signal<string>;
16877
+ /**
16878
+ * A confirmed size that differs from the current one and has at least one
16879
+ * element to rescale, awaiting the user's Maximize/Ensure-Fit choice. `null`
16880
+ * once answered (or when no prompt was needed) so the inline prompt hides.
16881
+ */
16882
+ protected readonly pendingResize: _angular_core.WritableSignal<SlideSizeEmu | null>;
16351
16883
  protected onPresetChange(event: Event): void;
16352
16884
  protected onOrientation(orientation: SlideSizeOrientation): void;
16353
16885
  protected onChange(event: Event, dim: 'width' | 'height'): void;
16354
- /** Commit an EMU size and the canvas size it implies, together. */
16886
+ /**
16887
+ * PowerPoint's Maximize/Ensure-Fit prompt: choosing a mode rescales every
16888
+ * slide's elements (one undoable history entry via
16889
+ * `EditorStateService.applyReplacement`) before the new size itself commits.
16890
+ */
16891
+ protected onRescaleChoice(pending: SlideSizeEmu, mode: SlideSizeRescaleMode): void;
16892
+ /**
16893
+ * Commit a confirmed size, prompting first (PowerPoint's Maximize/Ensure
16894
+ * Fit) when it differs from the current size AND the deck has at least one
16895
+ * element anywhere to rescale; an empty deck commits directly, as before.
16896
+ */
16355
16897
  private apply;
16898
+ /** Commit an EMU size and the canvas size it implies, together. */
16899
+ private commit;
16356
16900
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlideSizeCardComponent, never>;
16357
16901
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlideSizeCardComponent, "pptx-slide-size-card", never, { "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
16358
16902
  }
@@ -16412,6 +16956,8 @@ declare class SlideBackgroundCardComponent {
16412
16956
  private readonly editor;
16413
16957
  private readonly loader;
16414
16958
  private readonly translate;
16959
+ /** Optional: absent in a standalone unit test with no viewer-level DI tree. */
16960
+ private readonly recentColors;
16415
16961
  protected readonly imageAccept = "image/png,image/jpeg,image/gif,image/webp,image/svg+xml";
16416
16962
  protected readonly slide: _angular_core.Signal<PptxSlide | undefined>;
16417
16963
  /** Stable per-slide key so the colour input reseeds only on slide change. */
@@ -16549,6 +17095,8 @@ declare class GradientPickerComponent {
16549
17095
  * EditorStateService.updateElement(slideIndex, element().id, patch).
16550
17096
  */
16551
17097
  readonly patch: _angular_core.OutputEmitterRef<Partial<PptxElement>>;
17098
+ /** Optional: absent in a standalone unit test with no viewer-level DI tree. */
17099
+ private readonly recentColors;
16552
17100
  /** Derived gradient state from the current element. */
16553
17101
  protected readonly state: _angular_core.Signal<GradientState>;
16554
17102
  /** CSS gradient string for the preview strip. */
@@ -16573,12 +17121,19 @@ declare class EffectsPanelComponent {
16573
17121
  * The orchestrator should call EditorStateService.updateElement(slideIndex, element().id, patch).
16574
17122
  */
16575
17123
  readonly patch: _angular_core.OutputEmitterRef<Partial<PptxElement>>;
17124
+ /** Optional: absent in a standalone unit test with no viewer-level DI tree. */
17125
+ private readonly recentColors;
16576
17126
  /** Derived EffectsState from the current element. */
16577
17127
  protected readonly state: _angular_core.Signal<EffectsState>;
16578
17128
  /** Stable key for keying inputs to the current element (prevents caret-reset). */
16579
17129
  protected readonly elementKey: _angular_core.Signal<string>;
16580
17130
  protected onOuterShadowToggle(event: Event): void;
16581
17131
  protected onOuterShadowField(field: 'color' | 'opacity' | 'blur' | 'angle' | 'distance', event: Event): void;
17132
+ /**
17133
+ * `a:outerShdw@rotWithShape`: whether the shadow rotates along with the
17134
+ * shape. PowerPoint defaults to `true` when the attribute is absent.
17135
+ */
17136
+ protected onOuterShadowRotateWithShapeToggle(event: Event): void;
16582
17137
  protected onInnerShadowToggle(event: Event): void;
16583
17138
  protected onInnerShadowField(field: 'color' | 'opacity' | 'blur' | 'offsetX' | 'offsetY', event: Event): void;
16584
17139
  protected onGlowToggle(event: Event): void;
@@ -16632,6 +17187,8 @@ declare class Text3DPanelComponent {
16632
17187
  readonly element: _angular_core.InputSignal<PptxElement>;
16633
17188
  /** A partial-element patch for the orchestrator to commit (one history entry). */
16634
17189
  readonly patch: _angular_core.OutputEmitterRef<Partial<PptxElement>>;
17190
+ /** Optional: absent in a standalone unit test with no viewer-level DI tree. */
17191
+ private readonly recentColors;
16635
17192
  protected readonly materialPresets: readonly {
16636
17193
  value: MaterialPresetType | "";
16637
17194
  label: string;
@@ -16816,6 +17373,8 @@ declare class TableCellFormattingComponent {
16816
17373
  /** Emits the fully-updated element after any edit. */
16817
17374
  readonly elementChange: _angular_core.OutputEmitterRef<TablePptxElement>;
16818
17375
  private readonly selection;
17376
+ /** Optional: absent in a standalone unit test with no viewer-level DI tree. */
17377
+ private readonly recentColors;
16819
17378
  protected readonly textToggles: ReadonlyArray<{
16820
17379
  key: 'bold' | 'italic' | 'underline';
16821
17380
  label: string;
@@ -16843,6 +17402,11 @@ declare class TableCellFormattingComponent {
16843
17402
  protected widthOf(key: NumKey): number;
16844
17403
  protected toggle(key: 'bold' | 'italic' | 'underline'): void;
16845
17404
  protected onColor(key: ColorKey, event: Event): void;
17405
+ /**
17406
+ * Record the committed (native `change`, not the live-preview `input`)
17407
+ * colour into the shared "Recent colours" list.
17408
+ */
17409
+ protected pushRecentColor(event: Event): void;
16846
17410
  protected onNumber(key: NumKey, event: Event): void;
16847
17411
  /** Merge a style patch into the selected cell and emit the updated element. */
16848
17412
  protected updateStyle(patch: Partial<PptxTableCellStyle>): void;
@@ -16876,6 +17440,8 @@ declare class TableCellAdvancedFillComponent {
16876
17440
  readonly canEdit: _angular_core.InputSignal<boolean>;
16877
17441
  /** Emits a partial style patch to merge into the cell. */
16878
17442
  readonly styleChange: _angular_core.OutputEmitterRef<Partial<PptxTableCellStyle>>;
17443
+ /** Optional: absent in a standalone unit test with no viewer-level DI tree. */
17444
+ private readonly recentColors;
16879
17445
  protected readonly fillModes: {
16880
17446
  value: "image" | "none" | "solid" | "gradient" | "pattern";
16881
17447
  i18nKey: string;
@@ -16912,6 +17478,11 @@ declare class TableCellAdvancedFillComponent {
16912
17478
  protected onPatternFg(event: Event): void;
16913
17479
  protected onPatternBg(event: Event): void;
16914
17480
  protected onMargin(key: 'marginTop' | 'marginBottom' | 'marginLeft' | 'marginRight', event: Event): void;
17481
+ /**
17482
+ * Record the committed (native `change`, not the live-preview `input`)
17483
+ * colour into the shared "Recent colours" list.
17484
+ */
17485
+ protected pushRecentColor(event: Event): void;
16915
17486
  private updateStop;
16916
17487
  private emitGradient;
16917
17488
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableCellAdvancedFillComponent, never>;
@@ -16961,6 +17532,8 @@ declare class ChartDataEditorComponent {
16961
17532
  private readonly viewerOpts;
16962
17533
  private readonly host;
16963
17534
  private readonly injector;
17535
+ /** Optional: absent in a standalone unit test with no viewer-level DI tree. */
17536
+ private readonly recentColors;
16964
17537
  /**
16965
17538
  * File > Options > Advanced > "Properties follow chart data point for
16966
17539
  * current workbook". Falls back to PowerPoint's own default (`true`) when
@@ -17000,6 +17573,11 @@ declare class ChartDataEditorComponent {
17000
17573
  protected onAddSeries(): void;
17001
17574
  protected onRemoveLastSeries(): void;
17002
17575
  protected onRemoveSeries(seriesIndex: number): void;
17576
+ /**
17577
+ * Record the committed (native `change`, not the live-preview `input`)
17578
+ * series colour into the shared "Recent colours" list.
17579
+ */
17580
+ protected pushRecentColor(event: Event): void;
17003
17581
  protected onAddCategory(): void;
17004
17582
  protected onRemoveLastCategory(): void;
17005
17583
  protected onRemoveCategory(catIndex: number): void;
@@ -17042,12 +17620,29 @@ declare class ChartDisplayOptionsComponent {
17042
17620
  readonly canEdit: _angular_core.InputSignal<boolean>;
17043
17621
  readonly elementChange: _angular_core.OutputEmitterRef<ChartPptxElement>;
17044
17622
  protected readonly legendPositions: readonly ChartOption<string>[];
17623
+ protected readonly bar3DShapeOptions: readonly ChartSubtypeOption<PptxBar3DShape>[];
17624
+ protected readonly radarStyleOptions: readonly ChartSubtypeOption<NonNullable<"marker" | "standard" | "filled" | undefined>>[];
17625
+ protected readonly surfaceWireframeOptions: readonly ChartSubtypeOption<"true" | "false">[];
17045
17626
  protected readonly style: _angular_core.Signal<pptx_viewer_core.PptxChartStyle>;
17627
+ protected readonly chartData: _angular_core.Signal<PptxChartData | undefined>;
17628
+ protected readonly isBar3D: _angular_core.Signal<boolean>;
17629
+ protected readonly isRadar: _angular_core.Signal<boolean>;
17630
+ protected readonly isSurface: _angular_core.Signal<boolean>;
17631
+ /**
17632
+ * Read from the primary value axis's `majorGridlines`, matching what the
17633
+ * cartesian renderer actually draws; `style.hasGridlines` alone is a legacy
17634
+ * field the renderer never reads, so wiring the checkbox straight to it
17635
+ * silently did nothing (see `chart-gridlines-toggle.ts` in shared).
17636
+ */
17637
+ protected readonly gridlinesShown: _angular_core.Signal<boolean>;
17046
17638
  protected onToggleTitle(event: Event): void;
17047
17639
  protected onToggleLegend(event: Event): void;
17048
17640
  protected onLegendPosition(event: Event): void;
17049
17641
  protected onToggleGridlines(event: Event): void;
17050
17642
  protected onToggleDataLabels(event: Event): void;
17643
+ protected onBar3DShape(event: Event): void;
17644
+ protected onRadarStyle(event: Event): void;
17645
+ protected onSurfaceWireframe(event: Event): void;
17051
17646
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartDisplayOptionsComponent, never>;
17052
17647
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartDisplayOptionsComponent, "pptx-chart-display-options", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, { "elementChange": "elementChange"; }, never, never, true, never>;
17053
17648
  }
@@ -17111,11 +17706,19 @@ declare class ChartAxisStyleOptionsComponent {
17111
17706
  readonly element: _angular_core.InputSignal<ChartPptxElement>;
17112
17707
  readonly canEdit: _angular_core.InputSignal<boolean>;
17113
17708
  readonly elementChange: _angular_core.OutputEmitterRef<ChartPptxElement>;
17709
+ /** Optional: absent in a standalone unit test with no viewer-level DI tree. */
17710
+ private readonly recentColors;
17114
17711
  protected readonly dashOptions: readonly ChartOption<ChartGridlineDashValue>[];
17115
17712
  protected readonly gridlineKinds: readonly ["major", "minor"];
17713
+ /**
17714
+ * Record the committed (native `change`, not the live-preview `input`)
17715
+ * colour into the shared "Recent colours" list.
17716
+ */
17717
+ protected pushRecentColor(event: Event): void;
17116
17718
  protected readonly rows: _angular_core.Signal<AxisRow[]>;
17117
17719
  protected gridlineEnabled(axis: PptxChartAxisFormatting, which: 'major' | 'minor'): boolean;
17118
17720
  protected gridlineSpPr(axis: PptxChartAxisFormatting, which: 'major' | 'minor'): pptx_viewer_core.PptxChartShapeProps | undefined;
17721
+ protected gridDash(axis: PptxChartAxisFormatting, which: 'major' | 'minor'): string;
17119
17722
  protected onLogScale(axisType: PptxChartAxisType, axis: PptxChartAxisFormatting, event: Event): void;
17120
17723
  protected onLogBase(axisType: PptxChartAxisType, event: Event): void;
17121
17724
  protected onTitleFont(axisType: PptxChartAxisType, event: Event): void;
@@ -17134,7 +17737,14 @@ declare class ChartMarkerOptionsComponent {
17134
17737
  readonly canEdit: _angular_core.InputSignal<boolean>;
17135
17738
  readonly elementChange: _angular_core.OutputEmitterRef<ChartPptxElement>;
17136
17739
  protected readonly symbolOptions: readonly ChartOption<ChartMarkerSymbolValue>[];
17740
+ /** Optional: absent in a standalone unit test with no viewer-level DI tree. */
17741
+ private readonly recentColors;
17137
17742
  protected readonly series: _angular_core.Signal<PptxChartSeries[]>;
17743
+ /**
17744
+ * Record the committed (native `change`, not the live-preview `input`)
17745
+ * colour into the shared "Recent colours" list.
17746
+ */
17747
+ protected pushRecentColor(event: Event): void;
17138
17748
  protected readonly supported: _angular_core.Signal<boolean>;
17139
17749
  protected onSymbol(index: number, event: Event): void;
17140
17750
  protected onSize(index: number, event: Event): void;
@@ -17160,7 +17770,14 @@ declare class ChartDatapointMarkerOptionsComponent {
17160
17770
  readonly canEdit: _angular_core.InputSignal<boolean>;
17161
17771
  readonly elementChange: _angular_core.OutputEmitterRef<ChartPptxElement>;
17162
17772
  protected readonly symbolOptions: ChartOption<ChartMarkerSymbolValue>[];
17773
+ /** Optional: absent in a standalone unit test with no viewer-level DI tree. */
17774
+ private readonly recentColors;
17163
17775
  private readonly seriesIndex;
17776
+ /**
17777
+ * Record the committed (native `change`, not the live-preview `input`)
17778
+ * colour into the shared "Recent colours" list.
17779
+ */
17780
+ protected pushRecentColor(event: Event): void;
17164
17781
  protected readonly series: _angular_core.Signal<PptxChartSeries[]>;
17165
17782
  protected readonly categories: _angular_core.Signal<string[]>;
17166
17783
  /** Clamp the picker: removing a series must not strand the index past the end. */
@@ -18031,47 +18648,6 @@ declare class CommentMarkersOverlayComponent {
18031
18648
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CommentMarkersOverlayComponent, "pptx-comment-markers-overlay", never, { "comments": { "alias": "comments"; "required": false; "isSignal": true; }; "canvasSize": { "alias": "canvasSize"; "required": true; "isSignal": true; }; }, { "markerClick": "markerClick"; }, never, never, true, never>;
18032
18649
  }
18033
18650
 
18034
- declare class CommentsPanelComponent {
18035
- /** The active slide's comments (already filtered to the active slide). */
18036
- readonly comments: _angular_core.InputSignal<PptxComment[]>;
18037
- private readonly translate;
18038
- /** Display name shown in the compose label ("Commenting as …"). */
18039
- readonly authorName: _angular_core.InputSignal<string>;
18040
- /** Emits the trimmed comment text the user wants to add. */
18041
- readonly add: _angular_core.OutputEmitterRef<string>;
18042
- /** Emits the id of a comment the user wants to remove. */
18043
- readonly remove: _angular_core.OutputEmitterRef<string>;
18044
- /** Emits the id of a comment whose resolved flag should toggle. */
18045
- readonly resolve: _angular_core.OutputEmitterRef<string>;
18046
- /** Emits the parent comment id + trimmed text of a threaded reply. */
18047
- readonly reply: _angular_core.OutputEmitterRef<{
18048
- parentId: string;
18049
- text: string;
18050
- }>;
18051
- /** Current text typed into the compose textarea. */
18052
- readonly draft: _angular_core.WritableSignal<string>;
18053
- /** Whether the draft has non-whitespace content (enables the submit button). */
18054
- readonly canAdd: _angular_core.Signal<boolean>;
18055
- /** Id of the comment whose reply composer is open (one at a time). */
18056
- readonly replyingTo: _angular_core.WritableSignal<string | null>;
18057
- /** Current text typed into the open reply composer. */
18058
- readonly replyDraft: _angular_core.WritableSignal<string>;
18059
- /** Whether the reply draft has content (enables the reply submit button). */
18060
- readonly canReply: _angular_core.Signal<boolean>;
18061
- onDraftInput(event: Event): void;
18062
- submit(event: Event): void;
18063
- /** Localized reply-composer placeholder ("Reply to <author>..."). */
18064
- replyPlaceholder(comment: PptxComment): string;
18065
- /** Open the reply composer under `parentId` (closing any other composer). */
18066
- startReply(parentId: string): void;
18067
- cancelReply(): void;
18068
- onReplyInput(event: Event): void;
18069
- submitReply(parentId: string): void;
18070
- formatTimestamp(value: string | undefined): string;
18071
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<CommentsPanelComponent, never>;
18072
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CommentsPanelComponent, "pptx-comments-panel", never, { "comments": { "alias": "comments"; "required": false; "isSignal": true; }; "authorName": { "alias": "authorName"; "required": false; "isSignal": true; }; }, { "add": "add"; "remove": "remove"; "resolve": "resolve"; "reply": "reply"; }, never, never, true, never>;
18073
- }
18074
-
18075
18651
  declare class CommentsService {
18076
18652
  /**
18077
18653
  * The active slide's comments (the deck slice for `activeSlideIndex`).
@@ -18286,10 +18862,15 @@ declare class ActionSettingsPanelComponent {
18286
18862
  protected actionFor(trigger: Trigger): ElementAction | undefined;
18287
18863
  /** The action type this trigger's controls should render right now. */
18288
18864
  protected typeFor(trigger: Trigger): ElementActionType;
18865
+ /** `data.customShows`, for the `customShow` type's target `<select>`. */
18866
+ private readonly loader;
18867
+ protected readonly customShows: _angular_core.Signal<readonly PptxCustomShow[]>;
18289
18868
  private update;
18290
18869
  protected onType(event: Event, trigger: Trigger): void;
18291
- protected onUrl(event: Event, trigger: Trigger): void;
18292
- protected onSlide(event: Event, trigger: Trigger): void;
18870
+ protected onUrl(url: string, trigger: Trigger): void;
18871
+ protected onSlide(oneBasedSlide: number, trigger: Trigger): void;
18872
+ protected onCustomShow(customShowId: string, trigger: Trigger): void;
18873
+ protected onReturnAfter(returnAfter: boolean, trigger: Trigger): void;
18293
18874
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ActionSettingsPanelComponent, never>;
18294
18875
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ActionSettingsPanelComponent, "pptx-action-settings-panel", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; }, { "patch": "patch"; }, never, never, true, never>;
18295
18876
  }
@@ -18301,6 +18882,8 @@ type ImageElement = PptxElement & {
18301
18882
  declare class ImagePropertiesPanelComponent {
18302
18883
  readonly element: _angular_core.InputSignal<PptxElement>;
18303
18884
  readonly patch: _angular_core.OutputEmitterRef<Partial<PptxElement>>;
18885
+ /** Optional: absent in a standalone unit test with no viewer-level DI tree. */
18886
+ private readonly recentColors;
18304
18887
  protected readonly image: _angular_core.Signal<ImageElement>;
18305
18888
  protected readonly effects: _angular_core.Signal<PptxImageEffects>;
18306
18889
  protected readonly artisticEffects: readonly [readonly ["none", "pptx.image.effectNone", ""], readonly ["blur", "pptx.image.effectBlur", "blur(4px)"], readonly ["grayscale", "pptx.image.effectGrayscale", "grayscale(100%)"], readonly ["sepia", "pptx.image.effectSepia", "sepia(100%)"], readonly ["pencilSketch", "pptx.image.effectPencilSketch", "grayscale(100%) contrast(150%) brightness(80%)"], readonly ["lineDrawing", "pptx.image.effectLineDrawing", "grayscale(100%) contrast(150%)"], readonly ["watercolorSponge", "pptx.image.effectWatercolor", "saturate(150%) blur(1px)"], readonly ["paintStrokes", "pptx.image.effectPaintStrokes", "blur(3px) saturate(140%)"], readonly ["glow_edges", "pptx.image.effectGlowEdges", "contrast(180%) invert(5%) brightness(110%)"], readonly ["glowDiffused", "pptx.image.effectGlowDiffused", "blur(3px) brightness(120%)"], readonly ["cement", "pptx.image.effectCement", "contrast(200%) brightness(60%)"], readonly ["photocopy", "pptx.image.effectPhotocopy", "grayscale(100%) contrast(200%) brightness(120%)"], readonly ["filmGrain", "pptx.image.effectFilmGrain", "contrast(110%) brightness(105%)"], readonly ["mosaic", "pptx.image.effectMosaic", "blur(8px) contrast(105%)"], readonly ["chalkSketch", "pptx.image.effectChalk", "grayscale(80%) contrast(140%) brightness(110%)"], readonly ["marker", "pptx.image.effectMarker", "contrast(130%) saturate(130%)"], readonly ["cutout", "pptx.image.effectCutout", "contrast(300%) brightness(120%)"], readonly ["pastelsSmooth", "pptx.image.effectPastels", "blur(4px) saturate(120%)"], readonly ["paint", "pptx.image.effectPaint", "blur(3px) saturate(160%) contrast(110%)"], readonly ["plasticWrap", "pptx.image.effectPlasticWrap", "contrast(150%) brightness(115%) saturate(80%)"], readonly ["lightScreen", "pptx.image.effectLightScreen", "brightness(130%) contrast(80%)"], readonly ["sharpen", "pptx.image.effectSharpen", "contrast(160%) brightness(105%)"], readonly ["texturizer", "pptx.image.effectTexturizer", "contrast(110%) brightness(105%)"], readonly ["crisscrossEtching", "pptx.image.effectCrisscross", "grayscale(60%) contrast(120%)"]];
@@ -18625,12 +19208,12 @@ declare class PropertiesDialogComponent {
18625
19208
  * share-helpers.ts: Share dialog helpers for the Angular viewer.
18626
19209
  *
18627
19210
  * The shared subset (ShareFormFields / ShareDefaults / seedShareFields /
18628
- * canStartShare) is re-exported from `pptx-viewer-shared` (`render/share-form`).
18629
- * Two helpers stay local because they diverge from the shared builders:
18630
- * - `buildCollaborationConfig` validates with `canStartShare` (non-blank room)
18631
- * and emits a config WITHOUT `role`/`sessionIntent`, unlike the shared
18632
- * `buildShareConfig` (which is `buildCreateCollaborationConfig`).
18633
- * - `buildShareUrl` is Angular-only (no other binding builds a share link).
19211
+ * canStartShare / buildShareUrl) is re-exported from `pptx-viewer-shared`
19212
+ * (`render/share-form`, `render/broadcast-helpers`). One helper stays local
19213
+ * because it diverges from the shared builders: `buildCollaborationConfig`
19214
+ * validates with `canStartShare` (non-blank room) and emits a config WITHOUT
19215
+ * `role`/`sessionIntent`, unlike the shared `buildShareConfig` (which is
19216
+ * `buildCreateCollaborationConfig`).
18634
19217
  *
18635
19218
  * No `any`; all regexes use the `/u` flag; no `String.prototype.replaceAll`,
18636
19219
  * no regex named-capture-groups (ng-packagr lib-target constraints).
@@ -18642,14 +19225,6 @@ declare class PropertiesDialogComponent {
18642
19225
  * `transport: 'webrtc'`; otherwise the default websocket transport is used.
18643
19226
  */
18644
19227
  declare function buildCollaborationConfig(fields: ShareFormFields): CollaborationConfig | null;
18645
- /**
18646
- * Build a shareable join URL for a session. Returns just the room id when no
18647
- * `origin`/`pathname` are available (e.g. non-browser environments).
18648
- */
18649
- declare function buildShareUrl(roomId: string, serverUrl: string, location?: {
18650
- origin: string;
18651
- pathname: string;
18652
- }): string;
18653
19228
 
18654
19229
  declare class ShareDialogComponent {
18655
19230
  /** Whether the dialog is visible. */
@@ -19305,7 +19880,7 @@ declare class AccountPageComponent {
19305
19880
  readonly accountAuth: _angular_core.InputSignal<AccountAuthConfig | undefined>;
19306
19881
  private readonly translate;
19307
19882
  protected readonly swatches: readonly string[];
19308
- protected readonly version = "3.2.3";
19883
+ protected readonly version = "3.4.0";
19309
19884
  protected readonly profile: _angular_core.WritableSignal<ViewerProfile>;
19310
19885
  protected readonly initial: _angular_core.Signal<string>;
19311
19886
  protected readonly usage: _angular_core.WritableSignal<LocalStorageUsageSummary | null>;
@@ -19922,6 +20497,12 @@ declare class PresenterViewComponent {
19922
20497
  * forward press lands on is the show's next member, not `index + 1`.
19923
20498
  */
19924
20499
  readonly activeCustomShow: _angular_core.InputSignal<ShowOrderCustomShow | null>;
20500
+ /**
20501
+ * The deck's authored `p:showPr/p:sldRg` slide-range restriction, or null
20502
+ * for the whole deck. The next-slide preview must honour it the same way it
20503
+ * honours {@link activeCustomShow}.
20504
+ */
20505
+ readonly authoredRange: _angular_core.InputSignal<AuthoredSlideRange | null>;
19925
20506
  readonly canvasSize: _angular_core.InputSignal<CanvasSize>;
19926
20507
  readonly templateElements: _angular_core.InputSignal<readonly PptxElement[]>;
19927
20508
  readonly mediaDataUrls: _angular_core.InputSignal<Map<string, string>>;
@@ -19996,7 +20577,7 @@ declare class PresenterViewComponent {
19996
20577
  protected onSwapDisplays(): void;
19997
20578
  private withTemplate;
19998
20579
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PresenterViewComponent, never>;
19999
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PresenterViewComponent, "pptx-presenter-view", never, { "slides": { "alias": "slides"; "required": true; "isSignal": true; }; "currentSlideIndex": { "alias": "currentSlideIndex"; "required": true; "isSignal": true; }; "activeCustomShow": { "alias": "activeCustomShow"; "required": false; "isSignal": true; }; "canvasSize": { "alias": "canvasSize"; "required": true; "isSignal": true; }; "templateElements": { "alias": "templateElements"; "required": false; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "presentationStartTime": { "alias": "presentationStartTime"; "required": false; "isSignal": true; }; "isAudienceWindowOpen": { "alias": "isAudienceWindowOpen"; "required": false; "isSignal": true; }; }, { "movePresentationSlide": "movePresentationSlide"; "exit": "exit"; "openAudienceWindow": "openAudienceWindow"; "closeAudienceWindow": "closeAudienceWindow"; "navigateToSlide": "navigateToSlide"; }, never, never, true, never>;
20580
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PresenterViewComponent, "pptx-presenter-view", never, { "slides": { "alias": "slides"; "required": true; "isSignal": true; }; "currentSlideIndex": { "alias": "currentSlideIndex"; "required": true; "isSignal": true; }; "activeCustomShow": { "alias": "activeCustomShow"; "required": false; "isSignal": true; }; "authoredRange": { "alias": "authoredRange"; "required": false; "isSignal": true; }; "canvasSize": { "alias": "canvasSize"; "required": true; "isSignal": true; }; "templateElements": { "alias": "templateElements"; "required": false; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "presentationStartTime": { "alias": "presentationStartTime"; "required": false; "isSignal": true; }; "isAudienceWindowOpen": { "alias": "isAudienceWindowOpen"; "required": false; "isSignal": true; }; }, { "movePresentationSlide": "movePresentationSlide"; "exit": "exit"; "openAudienceWindow": "openAudienceWindow"; "closeAudienceWindow": "closeAudienceWindow"; "navigateToSlide": "navigateToSlide"; }, never, never, true, never>;
20000
20581
  }
20001
20582
 
20002
20583
  /**
@@ -20025,6 +20606,12 @@ declare class MobilePresenterViewComponent {
20025
20606
  * forward press lands on is the show's next member, not `index + 1`.
20026
20607
  */
20027
20608
  readonly activeCustomShow: _angular_core.InputSignal<ShowOrderCustomShow | null>;
20609
+ /**
20610
+ * The deck's authored `p:showPr/p:sldRg` slide-range restriction, or null
20611
+ * for the whole deck. The next-slide preview must honour it the same way it
20612
+ * honours {@link activeCustomShow}.
20613
+ */
20614
+ readonly authoredRange: _angular_core.InputSignal<AuthoredSlideRange | null>;
20028
20615
  readonly canvasSize: _angular_core.InputSignal<CanvasSize>;
20029
20616
  readonly templateElements: _angular_core.InputSignal<readonly PptxElement[]>;
20030
20617
  readonly mediaDataUrls: _angular_core.InputSignal<Map<string, string>>;
@@ -20050,7 +20637,7 @@ declare class MobilePresenterViewComponent {
20050
20637
  }>;
20051
20638
  private withTemplate;
20052
20639
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MobilePresenterViewComponent, never>;
20053
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobilePresenterViewComponent, "pptx-mobile-presenter-view", never, { "slides": { "alias": "slides"; "required": true; "isSignal": true; }; "currentSlideIndex": { "alias": "currentSlideIndex"; "required": true; "isSignal": true; }; "activeCustomShow": { "alias": "activeCustomShow"; "required": false; "isSignal": true; }; "canvasSize": { "alias": "canvasSize"; "required": true; "isSignal": true; }; "templateElements": { "alias": "templateElements"; "required": false; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "presentationStartTime": { "alias": "presentationStartTime"; "required": false; "isSignal": true; }; }, { "movePresentationSlide": "movePresentationSlide"; "exit": "exit"; }, never, never, true, never>;
20640
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobilePresenterViewComponent, "pptx-mobile-presenter-view", never, { "slides": { "alias": "slides"; "required": true; "isSignal": true; }; "currentSlideIndex": { "alias": "currentSlideIndex"; "required": true; "isSignal": true; }; "activeCustomShow": { "alias": "activeCustomShow"; "required": false; "isSignal": true; }; "authoredRange": { "alias": "authoredRange"; "required": false; "isSignal": true; }; "canvasSize": { "alias": "canvasSize"; "required": true; "isSignal": true; }; "templateElements": { "alias": "templateElements"; "required": false; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "presentationStartTime": { "alias": "presentationStartTime"; "required": false; "isSignal": true; }; }, { "movePresentationSlide": "movePresentationSlide"; "exit": "exit"; }, never, never, true, never>;
20054
20641
  }
20055
20642
 
20056
20643
  /**
@@ -20864,6 +21451,8 @@ declare class SmartArtPropertiesComponent {
20864
21451
  readonly canEdit: _angular_core.InputSignal<boolean>;
20865
21452
  /** Emits a complete new data model after any edit. */
20866
21453
  readonly smartArtDataChange: _angular_core.OutputEmitterRef<PptxSmartArtData>;
21454
+ /** Optional: absent in a standalone unit test with no viewer-level DI tree. */
21455
+ private readonly recentColors;
20867
21456
  protected readonly layoutTypes: readonly SmartArtLayoutType[];
20868
21457
  protected readonly colorSchemes: readonly SmartArtColorScheme[];
20869
21458
  protected readonly styleOptions: readonly SmartArtStyle[];
@@ -21094,6 +21683,9 @@ declare class RibbonColorPopoverComponent {
21094
21683
  readonly titleKey: _angular_core.InputSignal<string>;
21095
21684
  readonly swatchAriaKey: _angular_core.InputSignal<string>;
21096
21685
  readonly pick: _angular_core.OutputEmitterRef<string>;
21686
+ protected readonly recentColors: RecentColorsService;
21687
+ /** Every commit through this popover both fires `pick` and records the colour as recently used. */
21688
+ protected onPick(color: string): void;
21097
21689
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonColorPopoverComponent, never>;
21098
21690
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonColorPopoverComponent, "pptx-ribbon-color-popover", never, { "current": { "alias": "current"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "titleKey": { "alias": "titleKey"; "required": false; "isSignal": true; }; "swatchAriaKey": { "alias": "swatchAriaKey"; "required": false; "isSignal": true; }; }, { "pick": "pick"; }, never, ["*"], true, never>;
21099
21691
  }
@@ -21257,7 +21849,7 @@ declare class RibbonFontControlsComponent {
21257
21849
  * grouping and de-duplication now come from `pptx-viewer-shared`.
21258
21850
  */
21259
21851
  protected readonly fontGroups: _angular_core.Signal<FontCatalogGroup[]>;
21260
- protected readonly fontSizes: number[];
21852
+ protected readonly fontSizes: readonly number[];
21261
21853
  protected readonly fontColorPresets: string[];
21262
21854
  protected readonly highlightColorPresets: string[];
21263
21855
  protected readonly charSpacingOptions: {
@@ -21596,14 +22188,6 @@ declare class RibbonReviewSectionComponent {
21596
22188
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonReviewSectionComponent, "pptx-ribbon-review-section", never, { "spellCheckEnabled": { "alias": "spellCheckEnabled"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, { "comments": "comments"; "spellCheckChange": "spellCheckChange"; "a11y": "a11y"; "openCompare": "openCompare"; "language": "language"; "link": "link"; }, never, never, true, never>;
21597
22189
  }
21598
22190
 
21599
- /** Grouping needs an editable deck and at least two selected elements. */
21600
- declare function canGroupSelection(canEdit: boolean, selectedCount: number): boolean;
21601
- /** Ungrouping needs an editable deck and a selection that IS a group. */
21602
- declare function canUngroupSelection(canEdit: boolean, element: PptxElement | null): boolean;
21603
- /** An outline width only exists on an element that carries shape properties. */
21604
- declare function canSetStrokeWidth(canEdit: boolean, element: PptxElement | null): boolean;
21605
- /** The stroke width to show for a selection, defaulted for a shape without one. */
21606
- declare function strokeWidthOf(element: PptxElement | null): number;
21607
22191
  declare class RibbonShapeExtrasComponent {
21608
22192
  protected readonly editor: EditorStateService;
21609
22193
  readonly slideIndex: _angular_core.InputSignal<number>;
@@ -21965,19 +22549,6 @@ declare function asMediaElement(el: PptxElement): MediaPptxElement | undefined;
21965
22549
  * Mirrors React's `element.mediaData ?? mediaDataUrls.get(mediaPath)`.
21966
22550
  */
21967
22551
  declare function resolveMediaSrc(el: MediaPptxElement, mediaDataUrls: Map<string, string>): string | undefined;
21968
- /**
21969
- * Register a `playAcrossSlides` audio element with the shared persistent-audio
21970
- * manager, using the same resolved source, loop, volume and trim start the
21971
- * slide-local element would have used. PowerPoint keeps such background audio
21972
- * playing when the show advances, but the slide-local `<audio>` dies with its
21973
- * slide's DOM; the manager's hidden document-level element survives it.
21974
- *
21975
- * Returns true when the persistent element owns playback, in which case the
21976
- * slide-local media node must stay silent or the track doubles. Idempotent per
21977
- * element id (the manager no-ops a re-register), so re-entering the owning
21978
- * slide does not restart the track.
21979
- */
21980
- declare function registerCrossSlideAudio(element: MediaPptxElement, src: string | undefined): boolean;
21981
22552
  /**
21982
22553
  * Build a media-fragment URI component (`#t=start,end`) for trimmed media.
21983
22554
  * Times are stored in milliseconds; the fragment uses seconds. Mirrors React's
@@ -22577,6 +23148,6 @@ declare function thumbnailHeight(canvasW: number, canvasH: number, thumbW: numbe
22577
23148
  */
22578
23149
  declare function gridColumns(containerW: number, thumbW: number, gap: number, maxCols: number): number;
22579
23150
 
22580
- export { AFTER_ANIMATION_VALUES, ALIGN_OPTIONS, ANIMATION_PRESET_CATEGORIES, AUDIENCE_HASH, AUDIENCE_NONCE_KEY, AVATAR_COLOR_SWATCHES, AXIS_LABEL_COLOR, AccessibilityPanelComponent, AccessibilityService, AccountPageComponent, ActionSettingsPanelComponent, AdvancedChartEditorComponent, AiChangeOverlayComponent, AiChatPanelComponent, AiChatService, AiComposerComponent, AiFocusBarComponent, AiFocusHighlightOverlayComponent, AiHistoryMenuComponent, AiHistoryService, AiMessageListComponent, AiPanelStore, AiProposalCardComponent, AiSettingsSectionComponent, AiToolCallCardComponent, AnimationAuthorPanelComponent, AnimationPanelComponent, AnimationPlaybackService, AutosaveRecoveryDialogComponent, AutosaveService, BroadcastDialogComponent, CHART_EDITOR_STYLES, CURSOR_PALETTE, CanvasFitService, ChartAxisOptionsComponent, ChartAxisStyleOptionsComponent, ChartComboTypeOptionsComponent, ChartDataEditorComponent, ChartDataLabelOptionsComponent, ChartDatapointMarkerOptionsComponent, ChartDatapointOptionsComponent, ChartDisplayOptionsComponent, ChartElementViewComponent, ChartErrorBarOptionsComponent, ChartMarkerOptionsComponent, ChartPartSelectionService, ChartPrimitivesComponent, ChartRendererComponent, ChartTrendlineOptionsComponent, ChartTypeSelectorComponent, CollaborationCursorsComponent, CollaborationService, ColorChangedImageComponent, CommentMarkersOverlayComponent, CommentsPanelComponent, CommentsService, ComparePanelComponent, ConnectorRendererComponent, ConnectorTextOverlayComponent, CustomShowsComponent, DEFAULT_BOUNDS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_COLOR_SCHEME, DEFAULT_FILL_COLOR, DEFAULT_LAYOUT, DEFAULT_PALETTE$1 as DEFAULT_PALETTE, DEFAULT_PATTERN_FILL_PRESET, DEFAULT_PRINT_SETTINGS, DEFAULT_SLIDE_BACKGROUND, DEFAULT_STROKE_COLOR, DEFAULT_STYLE, DEFAULT_TABLE_ROW_HEIGHT, DEFAULT_TEXT_COLOR, DEFAULT_VIEWER_PROFILE, DIRECTIONAL_PRESETS, DIRECTION_OPTIONS, DocumentPropertiesCardComponent, EMBEDDED_FONTS_STYLE_ID, EMPHASIS_PRESETS, ENTRANCE_PRESETS, TEMPLATES as EQUATION_TEMPLATES, EXIT_PRESETS, EditorContextMenuComponent, EditorHistory, EditorStateService, EditorToolbarComponent, EffectsPanelComponent, ElementRendererComponent, EmbeddedFontsService, EncryptedFileDialogComponent, EquationEditorDialogComponent, EquationRendererComponent, EquationTemplateGalleryComponent, ExportProgressModalComponent, ExportService, FieldContextService, FindBarComponent, FindReplaceBarComponent, FollowModeBarComponent, FontEmbeddingListComponent, FontEmbeddingPanelComponent, GALLERY_THEME_PRESETS, GOOGLE_WEBFONTS_LINK_ID, GRIDLINE_COLOR, GoogleWebfontsService, GradientPickerComponent, HANDOUT_OPTIONS, HeaderFooterDialogComponent, HyperlinkDialogComponent, ImagePropertiesPanelComponent, InkDrawingService, InkRendererComponent, InsertSmartArtDialogComponent, InspectorPaneHeaderComponent, InspectorPanelComponent, IsMobileService, KeepAnnotationsDialogComponent, LOCALE_CATALOG, LONG_PRESS_DURATION_MS, LONG_PRESS_MOVE_TOLERANCE_PX, LoadContentService, LocalPresencePublisher, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, MOTION_PATH_COLUMNS, MediaPreviewComponent, MediaPropertiesPanelComponent, MediaRendererComponent, MediaTrimTimelineComponent, MobileBottomBarComponent, MobileMenuSheetComponent, MobilePresenterViewComponent, MobileSheetComponent, MobileSlidesSheetComponent, MobileToolbarComponent, ModalDialogComponent, Model3DRendererComponent, NotesHandoutCardComponent, NotesPanelComponent, NotesToolbarComponent, OleRendererComponent, OutlineViewOverlayComponent, POWER_POINT_VIEWER_PROVIDERS, PPTX_OPEN_ACCEPT, PRESENTATION_OPEN_EXTENSIONS, PRESENTER_CHANNEL_NAME, PRESENTER_MSG_ORIGIN, PRESENTER_TIMER_SEGMENT_MS, PX_PER_CM, PX_PER_INCH, PasswordProtectionDialogComponent, PasswordStrengthMeterComponent, PowerPointViewerComponent, PresentToolbarAutoHide, PresentationAnnotationOverlayComponent, PresentationAnnotationsService, PresentationOverlayComponent, PresentationPropertiesPanelComponent, PresentationSettingsCardComponent, PresentationSubtitleBarComponent, PresentationToolbarComponent, PresentationTransitionOverlayComponent, PresenterViewComponent, PresenterWindowService, PrintDialogComponent, PrintService, PrintSettingsPanelComponent, PropertiesDialogComponent, REPEAT_MODE_OPTIONS, RESIZE_HANDLES, RULER_FONT_SIZE, RULER_THICKNESS, ReadingViewOverlayComponent, RemoteSelectionOverlayComponent, RibbonAnimationGalleryComponent, RibbonAnimationsSectionComponent, RibbonArrangeSectionComponent, RibbonColorPopoverComponent, RibbonComponent, RibbonDesignSectionComponent, RibbonDrawSectionComponent, RibbonDrawingGroupComponent, RibbonEditingSectionComponent, RibbonFileSectionComponent, RibbonFontControlsComponent, RibbonHomeSectionComponent, RibbonHyperlinkButtonComponent, RibbonInsertFieldsComponent, RibbonInsertSectionComponent, RibbonMotionPathGalleryComponent, RibbonParagraphControlsComponent, RibbonPrimaryRowComponent, RibbonReviewSectionComponent, RibbonShapeExtrasComponent, RibbonSlideshowSectionComponent, RibbonTransitionsSectionComponent, RibbonViewSectionComponent, RulerGuidesService, SEQUENCE_OPTIONS, SEVERITY_GROUPS, SEVERITY_LABELS, SHORTCUT_REFERENCE_ITEMS, SLIDE_TRANSITION_KEYFRAMES, DEFAULT_PALETTE as SMARTART_DEFAULT_PALETTE, PALETTES as SMARTART_PALETTES, SMART_ART_COLOR_SCHEMES, SMART_ART_STYLE_OPTIONS, SUB_ITEM_LABEL, SVG_WARP_PRESETS, SWIPE_MAX_VERTICAL_PX, SWIPE_THRESHOLD_PX, SelectionPaneComponent, SetUpSlideShowDialogComponent, SettingsAppearanceTabComponent, SettingsDialogComponent, SettingsLanguageTabComponent, ShareDialogComponent, ShortcutPanelComponent, ShowOptionsFieldsetComponent, ShowSlidesFieldsetComponent, SignatureStrippedDialogComponent, SignaturesPanelComponent, SignaturesService, SlideBackgroundCardComponent, SlideCanvasComponent, SlideDefaultInspectorComponent, SlideDiffChangesComponent, SlideDiffRowComponent, SlideDiffThumbnailsComponent, SlideSizeCardComponent, SlideSorterOverlayComponent, SlideThemeOverridePanelComponent, SlideTransitionCardComponent, SlidesPanelComponent, SmartArt3DRendererComponent, SmartArt3DService, SmartArtPreviewComponent, SmartArtPropertiesComponent, SmartArtRendererComponent, StatusBarComponent, TABLE_STRUCTURE_TOGGLES, TEXT_3D_BOTTOM_BEVEL_KEYS, TEXT_3D_TOP_BEVEL_KEYS, TEXT_DIRECTION_OPTIONS, THEME_CATALOG, TIMING_CURVE_OPTIONS, TRIGGER_OPTIONS, TYPE_LABELS, TableCellAdvancedFillComponent, TableCellFormattingComponent, TableDataEditorComponent, TablePropertiesComponent, TableRendererComponent, TableResizeOverlayComponent, TableSelectionService, TagsCardComponent, Text3DBevelSectionComponent, Text3DPanelComponent, TextAdvancedPanelComponent, ThemeEditorFieldsComponent, ThemeGalleryComponent, ThemeSelectorCardComponent, TitleBarComponent, TitleBarSearchComponent, TransitionDirectionPickerComponent, TransitionPreviewComponent, VALIGN_OPTIONS, VIEWER_THEME, VersionHistoryPanelComponent, ViewerCanvasEditingService, ViewerCollabCursorService, ViewerCollaborationSessionService, ViewerCompareService, ViewerCustomShowsService, ViewerDialogsService, ViewerDocumentPropertiesService, ViewerExportService, ViewerExtraDialogsComponent, ViewerFileIOService, ViewerFindReplaceService, ViewerFormatPainterService, ViewerInspectorPanelService, ViewerKeyboardService, ViewerMobileSheetService, ViewerPresentationModeService, ViewerThemeGalleryService, ViewerTouchGesturesService, ViewerZoomService, WEBM_MIME_CANDIDATES, WriteBackScheduler, ZERO_LINE_COLOR, ZoomNavigationService, ZoomRendererComponent, ZoomTargetService, addCategory, addCommentToList, addGradientStopPatch, addItem, addSeries, addSubItem, advanceStep, affordanceElements, aiToggleVisible, alignPatch, animationFor, animationPresetLabelKey, annotationMapToInkInserts, applyAcceptedDiff, applyAnimationPreset, applyFindReplacements, applyFormatToElement, applyMove, applyResize, asMediaElement, assignUserColor, attachShowVisibilityPause, attachTouchGestures, axisTickValues, beginNodeEdit, bevelSizePatch, boolFromEvent, bringForward, bringToFront, buildBarActions, buildBroadcastConfig, buildBroadcastViewerUrl, buildCategoryLabels, buildCellParagraphs, buildChartViewModel, buildChatLogExport, buildChatLogMarkdown, buildChromeStyle, buildClearHyperlinkPatch, buildClickGroups, buildColStyles, buildCollaborationConfig, buildComboViewModel, buildCssGradientFromShapeStyle, buildDuotoneFilter, buildDuotoneFilterId, buildEmbeddedFontStyles, buildEquationElement, buildEquationSegment, buildFallbackViewModel, buildFontFaceRule, buildGradientFillCss, buildGridlinesAndLabels, buildHyperlinkPatch, buildInkContainerStyle, buildInkStrokes, buildLegend, buildMarkTooltip, buildModel3DContainerStyle, buildModel3DViewModel, buildOleActionModel, buildOleInfoRows, buildPatternFillCss, buildPieViewModel, buildPrintHtmlDocument as buildPrintDocument, buildPropertiesPatch, buildRadarViewModel, buildRegionMapViewModel, buildSaveSlides, buildShareUrl, buildSmartArtInsertElement, buildSmartArtNodes, buildStockViewModel, buildSurfaceViewModel, buildTableViewModel, buildTreemapViewModel, buildTrimFragment, buildWaterfallViewModel, buildZeroLine, buildZoomContainerStyle, buildZoomViewModel, bulletIndentPx, canAddTopLevelNode, canGroupSelection, canRemoveTopLevelNode, canSetStrokeWidth, canStartBroadcast, canStartShare, canUngroupSelection, canUseClipboard, captionDisplayText, cellRunStyle, cellStyleToStyleMap, cellTdStyle, changeCountLabel, changeIcon, characterSpacingPatch, chartPreserveAspectRatio, checkFontAvailable, clampCursorPosition, clampGifDimensions, clampIndex, clampNotesFontSize, clampScale, clampStep, clearAllLocalViewerData, clearAudienceContent, cn, collectAccessibilityIssues, collectElementText, collectSlideText, collectStoredChats, collectUsedFontFamilies, columnWidthStyle, commitNodeText, computeAlign, computeAxisTitlePrimitives, computeBarRects, computeBubbleRadius, computeCornerHandle, computeDistribute, computeDrawingViewBox, computeErrorBarPrimitives, computeFocusTargets, computeGridSpacingPx, computeHandleBoxes, computeHandoutLayout, computeIsMobile, computeIsTablet, computeLinePoints, computeLinearRegression, computePageCount, computePieLayout, computePieSlicePath, computePieSlices, computePlotLayout, computeRSquared, computeRadarPoints, computeResizeHandleBoxes, computeRotateHandleBox, computeScatterDots, computeScatterXDomain, computeSelectionBoxes, computeSingleSelected, computeSlideIndices, computeSnap, computeStackedBarRects, computeStackedValueRange, computeTrendlinePrimitives, computeValueRange, convertOmmlToMathMl, copyFormatFromElement, countAccessibilityIssues, countAnnotationStrokes, createAngularAiBridge, createCustomShow, createSwipeDismissDrag, createWebrtcBundle, createWebsocketBundle, cssObjectToStyleMap, currentColorScheme, currentLayout, currentStyle, defaultCssVars, defaultRadius, defaultThemeColors, deleteElementsByIds, deleteVersion as deleteRecoveryVersion, demoteNode, deriveModel3DBlobUrl, derivePresenceList, describeSmartArtBounds, disableGlowPatch, disableInnerShadowPatch, disableOuterShadowPatch, disableReflectionPatch, disableSoftEdgePatch, duplicateElementById, durationOf, effectsStateOf, enableGlowPatch, enableInnerShadowPatch, enableOuterShadowPatch, enableReflectionPatch, enableSoftEdgePatch, encodeGif, endShowMediaCleanup, estimatePageCount, exitPresentationFullscreen, exportAiChatLogs, extractPathPoints, eyedropperAvailable, fillColorOf, findInSlides, findOwningSlideIndex, findSlideIndexByElementId, firstVisibleIndex, fitPolynomial, fitZoom, focusTargetChips, fontMimeForFormat, fontSizeOf, forgetSessionDeck, formatAxisValue, formatBytes, formatCursorLabel, formatElapsed, formatFileSize, formatPropertyDate, formatTime, fpsToFrameIntervalMs, generateBroadcastRoomId, generateCommentId, generateCustomShowId, generatePressureCircles, generateTicks, getClrChangeParams, getContainerStyle, getDuotoneFilterDef, getEffectSoundState, getImageSrc, getLocalStorageUsageSummary, getOleAriaLabel, getOleBadgeLabel, getOleDisplayName, getOleDownloadFileName, getOleTypeColor, getOleTypeLabel, getPasswordStrength, getPatternSvg, getPlaceholderStyle, getVersions as getRecoveryVersions, getResolvedShapeClipPath, getResolvedShapeClipPathFor, getSessionTabId, getShapeFillStrokeStyle, getSlideBackgroundStyle, getSlideTransitionAnimations, getSmartArtNodeBounds, getSpeechRecognitionCtor, getTextBlockStyle, getTextWarp, getTouchDistance, getWarpCategory, getWarpPath, gradientStateFromStyle, gradientStateOf, gradientStatePatch, gridColumns, groupIssuesBySeverity, hasAnimation, hasCopyableFormat, hasExistingLink, hasExitedFullscreen, hasGradientFill, hasPressureVariation, hasVisibleSlideAfter, headerLabel, imageDimensions, inkViewBox, insertTableElementColumn as insertColumn, insertTableElementRow as insertRow, interpolateWidth, isAudienceTab, isBold, isBrowserOpenableMime, isChildNode, isElementInteractive, isInjectableUrl, isItalic, isLegacyBinaryPresentation, isPpactionUrl, isPresenterMessage, isSigned, isSupportedPresentationFile, isTextElement, isTwoTableFocus, isUnderline, isUrlSafe, isValidRoomId, isViewportBackgroundPressTarget, isZoomActivationKey, issueTrackKey, issueTypeLabel, keyToLabel, lastVisibleIndex, latexToMathml, layoutConnectorPaints, layoutNodeLabels, linePointsToSvgString, lineSpacingPatch, loadAudienceContent, loadSessionDeck, mediaFallbackFor, mediaSurfaceFor, mergeCaptionResults, mergeDown, mergeRight, mergeSelection, moveElementBy, moveNodeDown, moveNodeUp, msToFrameDelayCs, narrowToCircle, narrowToPolygon, narrowToRect, newChartElement, newEquationElement, newPresetShapeElement, newShapeElement, newSmartArtElement, newTableElement, newTextElement, nextVisibleIndex, nodeBold, nodeEditBox, nodeFillColor, nodeFontColor, nodeIdFromKey, nodeItalic, nodeStyle, normalizeFontFormat, normalizeSlidesPerPage, normalizeValue, numFromEvent, ommlToMathml, ooxmlDashToCssBorderStyle, openNativeEyeDropper, overallStatus, paletteColor, parseAudienceNonce, parseNodeTextarea, partitionSlides, patchChartData, patchChartStyle, patchTableData, patchTextStyle, patternPresetOptions, pendingElementStyles, pickColorByClickFallback, pickFile, pickSupportedMimeType, planGifFrames, planVideoSegments, pointsToSvgPathD, presenceToCursors, presentationBaseName, presentationStageStyle, presenterTimerProgress, presetByLayout, presetsForCategory, pressuresToWidths, prevVisibleIndex, projectDrawingShapes, promoteNode, provideViewerTheme, radarAngle, radarRingPoints, readAsDataUrl, recordWebm, registerCrossSlideAudio, rememberSessionDeck, removeAnimation, removeCategory, removeTableElementColumn as removeColumn, removeCommentFromList, removeElementAnimation, removeGradientStopPatch, removeNode, removeTableElementRow as removeRow, removeSeries, renderToCanvas, reorderAnimationDown, reorderAnimationUp, replaceInSlides, replaceMatch, requestPresentationFullscreen, resizeElement, resolveCaptionTracks, resolveChartKind, resolveFontVariant, resolveHyperlinkHref, resolveInteractiveElementId, resolveMediaSrc, resolveOleType, resolveParagraphBullet, resolvePresenterNotes, resolveProfileInitial, resolveRegionCode, resolveSlideAutoAdvanceMs, resolvePalette as resolveSmartArtPalette, resolveThemeCatalogEntry, resolveTransitionDuration, restoreSessionDeck, revealedElementStyles, routeOrthogonalConnector, rowStyle, rulerDragToGuidePosition, rulerHighlight, rulerStripTicks, sampleColorFromSlide, sanitizeColor, sanitizeSlideIndex, sanitizeUserName, saveViewerProfile, savedPresentationFileName, scanAvailableFonts, searchSlides, seedBroadcastFields, seedHyperlinkDraft, seedPropertiesDraft, seedShareFields, segmentFrameCount, selectValue, sendBackward, sendToBack, sequentialColorScale, serializeWriteBack, seriesColor, setAfterAnimation, setAfterAnimationColor, setAnimationEmphasis, setAnimationEntrance, setAnimationExit, setAxis, setAxisLogScale, setAxisTitleStyle, setCategoryLabel, setCellText, setColorScheme, setDataLabels, setDataPointExplosion, setDataPointFill, setDataPointLabel, setDataPointMarker, setDelay, setDirection, setDuration, setEffectSound, setElementPosition, setGridlineStyle, setLayout, setLegend, setNodeStyle, setNodeText, setRepeatCount, setRepeatMode, setSequence, setSeriesChartType, setSeriesColor, setSeriesErrorBars, setSeriesMarker, setSeriesName, setSeriesTrendline, setSeriesValue, setStyle, setTimingCurve, setTitle, setTrigger, setTriggerShapeId, shapeStylePatch, sheetAfterNavigate, shouldBlockClickAdvance, shouldUseSvgWarp, showDirectionPicker, showsTemplateAffordance, signatureCountLabel, signatureKey, signatureTimestamp, signerName, statusLabel as slideDiffStatusLabel, slideNumberOf, slidesWithReappliedLayout, smartArtNodes, paletteColour as smartArtPaletteColour, snapToGridStep, splitCursorCell, splitMergedCell, statusKind, statusLabel$1 as statusLabel, storeAudienceContent, stringFromEvent, strokeColorOf, strokeToInkElement, strokeWidthOf, styleShadowFilter, surfaceColor, textAdvancedPatch, textAdvancedStateFromStyle, textAdvancedStateOf, textColorOf, textDirectionPatch, textStyleOf, textStylePatch, themeStyle, themeToCssVars, thumbnailHeight, thumbnailZoom, toggleCommentResolvedInList, toggleNodeBold, toggleNodeItalic, toggleSheet, topLevelNodeCount, transformSelectedTextCase, translationsEn, updateElementById, updateGlowPatch, updateGradientStopPatch, updateInnerShadowPatch, updateOuterShadowPatch, updateReflectionPatch, vAlignPatch, validatePassword, validatePrintSettings, validateRoomId, valueToY, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, waypointsToPathD, withManualLayouts, worstStatus, zoomTargetSlideIndex };
22581
- export type { AccessibilityIssueGroup, AccountAuthConfig, ActionDescriptor, ActiveShow, AiCanvasHighlight, AiChatInitState, AiHistoryInitDeps, AiLogChat, AiLogExport, AiLogFormat, AiLogMessage, AiPanelSelectionAccessors, AlignBox, AlignMode, AnimationClickGroup, AnimationGroup, AnimationPresetCategory, AnimationPresetEntry, AnimationPresetPick, AnnotationInkInsert, AnnotationStroke, AttachTouchGesturesConfig, AwarenessLike, BarRect, Box, BridgeDeps, BroadcastConfig, BroadcastDefaults, CSSProperties, CanvasSize, CellCoord, CellParagraph, CellTextRun, ChartPartRef, ChartPartSelection, ChartValueDrag, ChartViewModel, ClassValue, ClrChangeParams, CollaborationConfig, CollaborationRole, RouterRect as ConnectorObstacle, RouterPoint as ConnectorPoint, ConnectorRouting, CopiedFormat, CornerHandleBox, CustomShow, CustomThemeEdit, DestroyableYDoc, DiagonalBorderInfo, DistributeMode, DocumentProperties, DrawingViewBox, DuotoneFilterDef, EffectSoundState, EffectsState, EmbeddedFontStyles, EquationTemplate, EyedropperResult, FindOptions, FindResult, FocusChip, FocusSelectionInput, GifFrame, GifFramePlan, GifPlanOptions, GlowState, GradientState, GradientStop$1 as GradientStop, HandleBox, HandoutSlidesPerPage, HyperlinkDraft, InkPoint, InkStroke, InlineEditState, InnerShadowState, LegendEntry, LinePoint, LinearFit, LocalIdentity, LocalStorageUsageSummary, LocaleCatalogEntry, MobileSheetKey, Model3DViewModel, MotionPathColumn, MotionPathEntry, NodeEditBox, NotesSegmentViewModel, ObjectUrlFactory, OleActionModel, OleInfoRow, OuterShadowState, OutlineCommit, OverallSignatureStatus, PartitionedSlides, PathPoint, PieSliceGeometry, PieSliceOptions, PlotLayout, PlotLayoutOptions, PositionUpdate, PowerPointViewerAPI, PptxAiBridge, PptxAiConfig, PptxAiConnection, PptxAiContextStrategy, PptxAiElementUpdate, PptxAiToolName, PptxAiUIMessage, PptxAiWritePolicy, PresentToolbarAction, PresentationTool, PresenterExitMessage, PresenterMessage, PresenterNotes, PresenterSlideChangeMessage, PresenterTimerProgress, PressureCircle, PrintColorMode, PrintHtmlDocumentOptions as PrintDocumentOptions, PrintOrientation, PrintSettings, PrintSlideRange, PrintWhat, PropertiesDraft, ProposalView, ProviderBundle, ProviderLike, RadarPoint, RecordWebmOptions, RecoveryVersion, ReflectionState, RemoteCursor, SanitizedPresence as RemotePresence, RenderedShape, ReplaceResult, ResizeHandle, ResolvedCaptionTrack, ResolvedFontVariant, ResolvedOleType, RulerUnit, SavedPresentationFormat, ScatterDot, ScatterXDomain, SelectionBox, SessionDeck, ShapeStyleChanges, ShareDefaults$1 as ShareDefaults, ShareFormFields, ShortcutReferenceItem, SignatureStatusKind, SlideInspectorTab, SlideTransitionAnimations, SmartArtInsertEvent, SmartArtNodeBounds, SnapBox, SnapGuide, SnapResult, SoftEdgeState, SpeechAlternative, SpeechRecognitionCtor, SpeechRecognitionEventLite, SpeechRecognitionLite, SpeechResult, SpeechResultList, SpeechSupportState, StagedProposal, StrokeToInkElementOpts, StyleMap, SupportedChartKind, SvgAreaGradient, SvgCircle, SvgLine, SvgPath, SvgPolygon, SvgPolyline, SvgPrimitive, SvgRect, SvgText, SwipeDismissDrag, TableBooleanFlag, TableCellSelection, TableCellViewModel, TableRowViewModel, TemplateElementsBySlideId, Text3DBevelKeys, TextAdvancedChanges, TextAdvancedState, TextStyleChanges, TextWarpCssDef, TextWarpDef, TextWarpPathDef, ThemeCatalogEntry, Tick, ToolbarActionId, TouchGestureCallbacks, TranslationKey, ValueRange, VideoPlanOptions, VideoSegmentPlan, ViewerMode, ViewerProfile, ViewerSettings, ViewerTheme, ViewerThemeColors, ZoomTranslate, ZoomViewModel };
23151
+ export { AFTER_ANIMATION_VALUES, ALIGN_OPTIONS, ANIMATION_PRESET_CATEGORIES, AUDIENCE_HASH, AUDIENCE_NONCE_KEY, AVATAR_COLOR_SWATCHES, AXIS_LABEL_COLOR, AccessibilityPanelComponent, AccessibilityService, AccountPageComponent, ActionSettingsPanelComponent, AdvancedChartEditorComponent, AiChangeOverlayComponent, AiChatPanelComponent, AiChatService, AiComposerComponent, AiFocusBarComponent, AiFocusHighlightOverlayComponent, AiHistoryMenuComponent, AiHistoryService, AiMessageListComponent, AiPanelStore, AiProposalCardComponent, AiSettingsSectionComponent, AiToolCallCardComponent, AnimationAuthorPanelComponent, AnimationPanelComponent, AnimationPlaybackService, AutosaveRecoveryDialogComponent, AutosaveService, BroadcastDialogComponent, CHART_EDITOR_STYLES, CURSOR_PALETTE, CanvasFitService, ChartAxisOptionsComponent, ChartAxisStyleOptionsComponent, ChartComboTypeOptionsComponent, ChartDataEditorComponent, ChartDataLabelOptionsComponent, ChartDatapointMarkerOptionsComponent, ChartDatapointOptionsComponent, ChartDisplayOptionsComponent, ChartElementViewComponent, ChartErrorBarOptionsComponent, ChartMarkerOptionsComponent, ChartPartSelectionService, ChartPrimitivesComponent, ChartRendererComponent, ChartTrendlineOptionsComponent, ChartTypeSelectorComponent, CollaborationCursorsComponent, CollaborationService, ColorChangedImageComponent, CommentMarkersOverlayComponent, CommentsPanelComponent, CommentsService, ComparePanelComponent, ConnectorRendererComponent, ConnectorTextOverlayComponent, CustomShowsComponent, DEFAULT_BOUNDS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_COLOR_SCHEME, DEFAULT_FILL_COLOR, DEFAULT_LAYOUT, DEFAULT_PALETTE$1 as DEFAULT_PALETTE, DEFAULT_PATTERN_FILL_PRESET, DEFAULT_PRINT_SETTINGS, DEFAULT_SLIDE_BACKGROUND, DEFAULT_STROKE_COLOR, DEFAULT_STYLE, DEFAULT_TABLE_ROW_HEIGHT, DEFAULT_TEXT_COLOR, DEFAULT_VIEWER_PROFILE, DIRECTIONAL_PRESETS, DIRECTION_OPTIONS, DocumentPropertiesCardComponent, EMBEDDED_FONTS_STYLE_ID, EMPHASIS_PRESETS, ENTRANCE_PRESETS, TEMPLATES as EQUATION_TEMPLATES, EXIT_PRESETS, EditorContextMenuComponent, EditorHistory, EditorStateService, EditorToolbarComponent, EffectsPanelComponent, ElementRendererComponent, EmbeddedFontsService, EncryptedFileDialogComponent, EquationEditorDialogComponent, EquationRendererComponent, EquationTemplateGalleryComponent, ExportProgressModalComponent, ExportService, FieldContextService, FindBarComponent, FindReplaceBarComponent, FollowModeBarComponent, FontEmbeddingListComponent, FontEmbeddingPanelComponent, GALLERY_THEME_PRESETS, GOOGLE_WEBFONTS_LINK_ID, GRIDLINE_COLOR, GoogleWebfontsService, GradientPickerComponent, HANDOUT_OPTIONS, HeaderFooterDialogComponent, HyperlinkDialogComponent, ImagePropertiesPanelComponent, InkDrawingService, InkRendererComponent, InsertSmartArtDialogComponent, InspectorPaneHeaderComponent, InspectorPanelComponent, IsMobileService, KeepAnnotationsDialogComponent, LOCALE_CATALOG, LONG_PRESS_DURATION_MS, LONG_PRESS_MOVE_TOLERANCE_PX, LoadContentService, LocalPresencePublisher, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, MOTION_PATH_COLUMNS, MediaPreviewComponent, MediaPropertiesPanelComponent, MediaRendererComponent, MediaTrimTimelineComponent, MobileBottomBarComponent, MobileMenuSheetComponent, MobilePresenterViewComponent, MobileSheetComponent, MobileSlidesSheetComponent, MobileToolbarComponent, ModalDialogComponent, Model3DRendererComponent, NotesHandoutCardComponent, NotesPanelComponent, NotesToolbarComponent, OleRendererComponent, OutlineViewOverlayComponent, POWER_POINT_VIEWER_PROVIDERS, PPTX_OPEN_ACCEPT, PRESENTATION_OPEN_EXTENSIONS, PRESENTER_CHANNEL_NAME, PRESENTER_MSG_ORIGIN, PRESENTER_TIMER_SEGMENT_MS, PX_PER_CM, PX_PER_INCH, PasswordProtectionDialogComponent, PasswordStrengthMeterComponent, PowerPointViewerComponent, PresentToolbarAutoHide, PresentationAnnotationOverlayComponent, PresentationAnnotationsService, PresentationOverlayComponent, PresentationPropertiesPanelComponent, PresentationSettingsCardComponent, PresentationSubtitleBarComponent, PresentationToolbarComponent, PresentationTransitionOverlayComponent, PresenterViewComponent, PresenterWindowService, PrintDialogComponent, PrintService, PrintSettingsPanelComponent, PropertiesDialogComponent, REPEAT_MODE_OPTIONS, RESIZE_HANDLES, RULER_FONT_SIZE, RULER_THICKNESS, ReadingViewOverlayComponent, RemoteSelectionOverlayComponent, RibbonAnimationGalleryComponent, RibbonAnimationsSectionComponent, RibbonArrangeSectionComponent, RibbonColorPopoverComponent, RibbonComponent, RibbonDesignSectionComponent, RibbonDrawSectionComponent, RibbonDrawingGroupComponent, RibbonEditingSectionComponent, RibbonFileSectionComponent, RibbonFontControlsComponent, RibbonHomeSectionComponent, RibbonHyperlinkButtonComponent, RibbonInsertFieldsComponent, RibbonInsertSectionComponent, RibbonMotionPathGalleryComponent, RibbonParagraphControlsComponent, RibbonPrimaryRowComponent, RibbonReviewSectionComponent, RibbonShapeExtrasComponent, RibbonSlideshowSectionComponent, RibbonTransitionsSectionComponent, RibbonViewSectionComponent, RulerGuidesService, SEQUENCE_OPTIONS, SEVERITY_GROUPS, SEVERITY_LABELS, SHORTCUT_REFERENCE_ITEMS, SLIDE_TRANSITION_KEYFRAMES, DEFAULT_PALETTE as SMARTART_DEFAULT_PALETTE, PALETTES as SMARTART_PALETTES, SMART_ART_COLOR_SCHEMES, SMART_ART_STYLE_OPTIONS, SUB_ITEM_LABEL, SVG_WARP_PRESETS, SWIPE_MAX_VERTICAL_PX, SWIPE_THRESHOLD_PX, SelectionPaneComponent, SetUpSlideShowDialogComponent, SettingsAppearanceTabComponent, SettingsDialogComponent, SettingsLanguageTabComponent, ShareDialogComponent, ShortcutPanelComponent, ShowOptionsFieldsetComponent, ShowSlidesFieldsetComponent, SignatureStrippedDialogComponent, SignaturesPanelComponent, SignaturesService, SlideBackgroundCardComponent, SlideCanvasComponent, SlideDefaultInspectorComponent, SlideDiffChangesComponent, SlideDiffRowComponent, SlideDiffThumbnailsComponent, SlideSizeCardComponent, SlideSorterOverlayComponent, SlideThemeOverridePanelComponent, SlideTransitionCardComponent, SlidesPanelComponent, SmartArt3DRendererComponent, SmartArt3DService, SmartArtPreviewComponent, SmartArtPropertiesComponent, SmartArtRendererComponent, StatusBarComponent, TABLE_STRUCTURE_TOGGLES, TEXT_3D_BOTTOM_BEVEL_KEYS, TEXT_3D_TOP_BEVEL_KEYS, TEXT_DIRECTION_OPTIONS, THEME_CATALOG, TIMING_CURVE_OPTIONS, TRIGGER_OPTIONS, TYPE_LABELS, TableCellAdvancedFillComponent, TableCellFormattingComponent, TableDataEditorComponent, TablePropertiesComponent, TableRendererComponent, TableResizeOverlayComponent, TableSelectionService, TagsCardComponent, Text3DBevelSectionComponent, Text3DPanelComponent, TextAdvancedPanelComponent, ThemeEditorFieldsComponent, ThemeGalleryComponent, ThemeSelectorCardComponent, TitleBarComponent, TitleBarSearchComponent, TransitionDirectionPickerComponent, TransitionPreviewComponent, VALIGN_OPTIONS, VIEWER_THEME, VersionHistoryPanelComponent, ViewerCanvasEditingService, ViewerCollabCursorService, ViewerCollaborationSessionService, ViewerCompareService, ViewerCustomShowsService, ViewerDialogsService, ViewerDocumentPropertiesService, ViewerExportService, ViewerExtraDialogsComponent, ViewerFileIOService, ViewerFindReplaceService, ViewerFormatPainterService, ViewerInspectorPanelService, ViewerKeyboardService, ViewerMobileSheetService, ViewerPresentationModeService, ViewerThemeGalleryService, ViewerTouchGesturesService, ViewerZoomService, WEBM_MIME_CANDIDATES, WriteBackScheduler, ZERO_LINE_COLOR, ZoomNavigationService, ZoomRendererComponent, ZoomTargetService, addCategory, addCommentToList, addGradientStopPatch, addItem, addSeries, addSubItem, advanceStep, affordanceElements, aiToggleVisible, alignPatch, animationFor, animationPresetLabelKey, annotationMapToInkInserts, applyAcceptedDiff, applyAnimationPreset, applyFindReplacements, applyFormatToElement, applyMove, applyResize, asMediaElement, assignUserColor, attachShowVisibilityPause, attachTouchGestures, axisTickValues, beginNodeEdit, bevelSizePatch, boolFromEvent, bringForward, bringToFront, buildBarActions, buildBroadcastConfig, buildBroadcastViewerUrl, buildCategoryLabels, buildCellParagraphs, buildChartViewModel, buildChatLogExport, buildChatLogMarkdown, buildChromeStyle, buildClearHyperlinkPatch, buildClickGroups, buildColStyles, buildCollaborationConfig, buildComboViewModel, buildCssGradientFromShapeStyle, buildDuotoneFilter, buildDuotoneFilterId, buildEmbeddedFontStyles, buildEquationElement, buildEquationSegment, buildFallbackViewModel, buildFontFaceRule, buildGradientFillCss, buildGridlinesAndLabels, buildHyperlinkPatch, buildInkContainerStyle, buildInkStrokes, buildLegend, buildMarkTooltip, buildModel3DContainerStyle, buildModel3DViewModel, buildOleActionModel, buildOleInfoRows, buildPatternFillCss, buildPieViewModel, buildPrintHtmlDocument as buildPrintDocument, buildPropertiesPatch, buildRadarViewModel, buildRegionMapViewModel, buildSaveSlides, buildShareUrl, buildSmartArtInsertElement, buildSmartArtNodes, buildStockViewModel, buildSurfaceViewModel, buildTableViewModel, buildTreemapViewModel, buildTrimFragment, buildWaterfallViewModel, buildZeroLine, buildZoomContainerStyle, buildZoomViewModel, bulletIndentPx, canAddTopLevelNode, canGroupSelection, canRemoveTopLevelNode, canSetStrokeWidth, canStartBroadcast, canStartShare, canUngroupSelection, canUseClipboard, captionDisplayText, cellRunStyle, cellStyleToStyleMap, cellTdStyle, changeCountLabel, changeIcon, characterSpacingPatch, chartPreserveAspectRatio, checkFontAvailable, clampCursorPosition, clampGifDimensions, clampIndex, clampNotesFontSize, clampScale, clampStep, clearAllLocalViewerData, clearAudienceContent, cn, collectAccessibilityIssues, collectElementText, collectSlideText, collectStoredChats, collectUsedFontFamilies, columnWidthStyle, commitNodeText, computeAlign, computeAxisTitlePrimitives, computeBarRects, computeBubbleRadius, computeCornerHandle, computeDistribute, computeDrawingViewBox, computeErrorBarPrimitives, computeFocusTargets, computeGridSpacingPx, computeHandleBoxes, computeHandoutLayout, computeIsMobile, computeIsTablet, computeLinePoints, computeLinearRegression, computePageCount, computePieLayout, computePieSlicePath, computePieSlices, computePlotLayout, computeRSquared, computeRadarPoints, computeResizeHandleBoxes, computeRotateHandleBox, computeScatterDots, computeScatterXDomain, computeSelectionBoxes, computeSingleSelected, computeSlideIndices, computeSnap, computeStackedBarRects, computeStackedValueRange, computeTrendlinePrimitives, computeValueRange, convertOmmlToMathMl, copyFormatFromElement, countAccessibilityIssues, countAnnotationStrokes, createAngularAiBridge, createCustomShow, createSwipeDismissDrag, createWebrtcBundle, createWebsocketBundle, cssObjectToStyleMap, currentColorScheme, currentLayout, currentStyle, defaultCssVars, defaultRadius, defaultThemeColors, deleteElementsByIds, deleteVersion as deleteRecoveryVersion, demoteNode, deriveModel3DBlobUrl, derivePresenceList, describeSmartArtBounds, disableGlowPatch, disableInnerShadowPatch, disableOuterShadowPatch, disableReflectionPatch, disableSoftEdgePatch, duplicateElementById, durationOf, effectsStateOf, enableGlowPatch, enableInnerShadowPatch, enableOuterShadowPatch, enableReflectionPatch, enableSoftEdgePatch, encodeGif, endShowMediaCleanup, estimatePageCount, exitPresentationFullscreen, exportAiChatLogs, extractPathPoints, eyedropperAvailable, fillColorOf, findInSlides, findOwningSlideIndex, findSlideIndexByElementId, firstVisibleIndex, fitPolynomial, fitZoom, focusTargetChips, fontMimeForFormat, fontSizeOf, forgetSessionDeck, formatAxisValue, formatBytes, formatCursorLabel, formatElapsed, formatFileSize, formatPropertyDate, formatTime, fpsToFrameIntervalMs, generateBroadcastRoomId, generateCommentId, generateCustomShowId, generatePressureCircles, generateTicks, getClrChangeParams, getContainerStyle, getDuotoneFilterDef, getEffectSoundState, getImageSrc, getLocalStorageUsageSummary, getOleAriaLabel, getOleBadgeLabel, getOleDisplayName, getOleDownloadFileName, getOleTypeColor, getOleTypeLabel, getPasswordStrength, getPatternSvg, getPlaceholderStyle, getVersions as getRecoveryVersions, getResolvedShapeClipPath, getResolvedShapeClipPathFor, getSessionTabId, getShapeFillStrokeStyle, getSlideBackgroundStyle, getSlideTransitionAnimations, getSmartArtNodeBounds, getSpeechRecognitionCtor, getTextBlockStyle, getTextWarp, getTouchDistance, getWarpCategory, getWarpPath, gradientStateFromStyle, gradientStateOf, gradientStatePatch, gridColumns, groupIssuesBySeverity, hasAnimation, hasCopyableFormat, hasExistingLink, hasExitedFullscreen, hasGradientFill, hasPressureVariation, hasVisibleSlideAfter, headerLabel, imageDimensions, inkViewBox, insertTableElementColumn as insertColumn, insertTableElementRow as insertRow, interpolateWidth, isAudienceTab, isBold, isBrowserOpenableMime, isChildNode, isElementInteractive, isInjectableUrl, isItalic, isLegacyBinaryPresentation, isPpactionUrl, isPresenterMessage, isSigned, isSupportedPresentationFile, isTextElement, isTwoTableFocus, isUnderline, isUrlSafe, isValidRoomId, isViewportBackgroundPressTarget, isZoomActivationKey, issueTrackKey, issueTypeLabel, keyToLabel, lastVisibleIndex, latexToMathml, layoutConnectorPaints, layoutNodeLabels, linePointsToSvgString, lineSpacingPatch, loadAudienceContent, loadSessionDeck, mediaFallbackFor, mediaSurfaceFor, mergeCaptionResults, mergeDown, mergeRight, mergeSelection, mergeTablesDirective, moveElementBy, moveNodeDown, moveNodeUp, msToFrameDelayCs, narrowToCircle, narrowToPolygon, narrowToRect, newChartElement, newEquationElement, newPresetShapeElement, newShapeElement, newSmartArtElement, newTableElement, newTextElement, nextVisibleIndex, nodeBold, nodeEditBox, nodeFillColor, nodeFontColor, nodeIdFromKey, nodeItalic, nodeStyle, normalizeFontFormat, normalizeSlidesPerPage, normalizeValue, numFromEvent, ommlToMathml, ooxmlDashToCssBorderStyle, openNativeEyeDropper, overallStatus, paletteColor, parseAudienceNonce, parseNodeTextarea, partitionSlides, patchChartData, patchChartStyle, patchTableData, patchTextStyle, patternPresetOptions, pendingElementStyles, pickColorByClickFallback, pickFile, pickSupportedMimeType, planGifFrames, planVideoSegments, pointsToSvgPathD, presenceToCursors, presentationBaseName, presentationStageStyle, presenterTimerProgress, presetByLayout, presetsForCategory, pressuresToWidths, prevVisibleIndex, projectDrawingShapes, promoteNode, provideViewerTheme, radarAngle, radarRingPoints, readAsDataUrl, recordWebm, registerCrossSlideAudio, rememberSessionDeck, removeAnimation, removeCategory, removeTableElementColumn as removeColumn, removeCommentFromList, removeElementAnimation, removeGradientStopPatch, removeNode, removeTableElementRow as removeRow, removeSeries, renderToCanvas, reorderAnimationDown, reorderAnimationUp, replaceInSlides, replaceMatch, requestPresentationFullscreen, resizeElement, resolveCaptionTracks, resolveChartKind, resolveFontVariant, resolveHyperlinkHref, resolveInteractiveElementId, resolveMediaSrc, resolveOleType, resolveParagraphBullet, resolvePresenterNotes, resolveProfileInitial, resolveRegionCode, resolveSlideAutoAdvanceMs, resolvePalette as resolveSmartArtPalette, resolveThemeCatalogEntry, resolveTransitionDuration, restoreSessionDeck, revealedElementStyles, routeOrthogonalConnector, rowStyle, rulerDragToGuidePosition, rulerHighlight, rulerStripTicks, sampleColorFromSlide, sanitizeColor, sanitizeSlideIndex, sanitizeUserName, saveViewerProfile, savedPresentationFileName, scanAvailableFonts, searchSlides, seedBroadcastFields, seedHyperlinkDraft, seedPropertiesDraft, seedShareFields, segmentFrameCount, selectValue, sendBackward, sendToBack, sequentialColorScale, serializeWriteBack, seriesColor, setAfterAnimation, setAfterAnimationColor, setAnimationEmphasis, setAnimationEntrance, setAnimationExit, setAxis, setAxisLogScale, setAxisTitleStyle, setCategoryLabel, setCellText, setColorScheme, setDataLabels, setDataPointExplosion, setDataPointFill, setDataPointLabel, setDataPointMarker, setDelay, setDirection, setDuration, setEffectSound, setElementPosition, setGridlineStyle, setLayout, setLegend, setNodeStyle, setNodeText, setRepeatCount, setRepeatMode, setSequence, setSeriesChartType, setSeriesColor, setSeriesErrorBars, setSeriesMarker, setSeriesName, setSeriesTrendline, setSeriesValue, setStyle, setTimingCurve, setTitle, setTrigger, setTriggerShapeId, shapeStylePatch, sheetAfterNavigate, shouldBlockClickAdvance, shouldUseSvgWarp, showDirectionPicker, showsTemplateAffordance, signatureCountLabel, signatureKey, signatureTimestamp, signerName, statusLabel as slideDiffStatusLabel, slideNumberOf, slidesWithReappliedLayout, smartArtNodes, paletteColour as smartArtPaletteColour, snapToGridStep, splitCursorCell, splitMergedCell, statusKind, statusLabel$1 as statusLabel, storeAudienceContent, stringFromEvent, strokeColorOf, strokeToInkElement, strokeWidthOf, styleShadowFilter, surfaceColor, textAdvancedPatch, textAdvancedStateFromStyle, textAdvancedStateOf, textColorOf, textDirectionPatch, textStyleOf, textStylePatch, themeStyle, themeToCssVars, thumbnailHeight, thumbnailZoom, toggleCommentResolvedInList, toggleNodeBold, toggleNodeItalic, toggleSheet, topLevelNodeCount, transformSelectedTextCase, translationsEn, updateElementById, updateGlowPatch, updateGradientStopPatch, updateInnerShadowPatch, updateOuterShadowPatch, updateReflectionPatch, vAlignPatch, validatePassword, validatePrintSettings, validateRoomId, valueToY, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, waypointsToPathD, withManualLayouts, worstStatus, zoomTargetSlideIndex };
23152
+ export type { AccessibilityIssueGroup, AccountAuthConfig, ActionDescriptor, ActiveShow, AiCanvasHighlight, AiChatInitState, AiHistoryInitDeps, AiLogChat, AiLogExport, AiLogFormat, AiLogMessage, AiPanelSelectionAccessors, AlignBox, AlignMode, AnimationClickGroup, AnimationGroup, AnimationPresetCategory, AnimationPresetEntry, AnimationPresetPick, AnnotationInkInsert, AnnotationStroke, AttachTouchGesturesConfig, AuthoredRange, AwarenessLike, BarRect, Box, BridgeDeps, BroadcastConfig, BroadcastDefaults, CSSProperties, CanvasSize, CellCoord, CellParagraph, CellTextRun, ChartPartRef, ChartPartSelection, ChartValueDrag, ChartViewModel, ClassValue, ClrChangeParams, CollaborationConfig, CollaborationRole, RouterRect as ConnectorObstacle, RouterPoint as ConnectorPoint, ConnectorRouting, CopiedFormat, CornerHandleBox, CustomShow, CustomThemeEdit, DestroyableYDoc, DiagonalBorderInfo, DistributeMode, DocumentProperties, DrawingViewBox, DuotoneFilterDef, EffectSoundState, EffectsState, EmbeddedFontStyles, EquationTemplate, EyedropperResult, FindOptions, FindResult, FocusChip, FocusSelectionInput, GifFrame, GifFramePlan, GifPlanOptions, GlowState, GradientState, GradientStop$1 as GradientStop, HandleBox, HandoutSlidesPerPage, HyperlinkDraft, InkPoint, InkStroke, InlineEditState, InnerShadowState, LegendEntry, LinePoint, LinearFit, LocalIdentity, LocalStorageUsageSummary, LocaleCatalogEntry, MobileSheetKey, Model3DViewModel, MotionPathColumn, MotionPathEntry, NodeEditBox, NotesSegmentViewModel, ObjectUrlFactory, OleActionModel, OleInfoRow, OuterShadowState, OutlineCommit, OverallSignatureStatus, PartitionedSlides, PathPoint, PieSliceGeometry, PieSliceOptions, PlotLayout, PlotLayoutOptions, PositionUpdate, PowerPointViewerAPI, PptxAiBridge, PptxAiConfig, PptxAiConnection, PptxAiContextStrategy, PptxAiElementUpdate, PptxAiToolName, PptxAiUIMessage, PptxAiWritePolicy, PresentToolbarAction, PresentationTool, PresenterExitMessage, PresenterMessage, PresenterNotes, PresenterSlideChangeMessage, PresenterTimerProgress, PressureCircle, PrintColorMode, PrintHtmlDocumentOptions as PrintDocumentOptions, PrintOrientation, PrintSettings, PrintSlideRange, PrintWhat, PropertiesDraft, ProposalView, ProviderBundle, ProviderLike, RadarPoint, RecordWebmOptions, RecoveryVersion, ReflectionState, RemoteCursor, SanitizedPresence as RemotePresence, RenderedShape, ReplaceResult, ResizeHandle, ResolvedCaptionTrack, ResolvedFontVariant, ResolvedOleType, RulerUnit, SavedPresentationFormat, ScatterDot, ScatterXDomain, SelectionBox, SessionDeck, ShapeStyleChanges, ShareDefaults$1 as ShareDefaults, ShareFormFields, ShortcutReferenceItem, SignatureStatusKind, SlideInspectorTab, SlideTransitionAnimations, SmartArtInsertEvent, SmartArtNodeBounds, SnapBox, SnapGuide, SnapResult, SoftEdgeState, SpeechAlternative, SpeechRecognitionCtor, SpeechRecognitionEventLite, SpeechRecognitionLite, SpeechResult, SpeechResultList, SpeechSupportState, StagedProposal, StrokeToInkElementOpts, StyleMap, SupportedChartKind, SvgAreaGradient, SvgCircle, SvgLine, SvgPath, SvgPolygon, SvgPolyline, SvgPrimitive, SvgRect, SvgText, SwipeDismissDrag, TableBooleanFlag, TableCellSelection, TableCellViewModel, TableRowViewModel, TemplateElementsBySlideId, Text3DBevelKeys, TextAdvancedChanges, TextAdvancedState, TextStyleChanges, TextWarpCssDef, TextWarpDef, TextWarpPathDef, ThemeCatalogEntry, Tick, ToolbarActionId, TouchGestureCallbacks, TranslationKey, ValueRange, VideoPlanOptions, VideoSegmentPlan, ViewerMode, ViewerProfile, ViewerSettings, ViewerTheme, ViewerThemeColors, ZoomTranslate, ZoomViewModel };
22582
23153
  //# sourceMappingURL=pptx-angular-viewer.d.ts.map