pptx-angular-viewer 1.1.50 → 1.1.52

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.
@@ -649,6 +649,31 @@ declare function revealedElementStyles(groups: readonly AnimationClickGroup[], s
649
649
  */
650
650
  declare function pendingElementStyles(groups: readonly AnimationClickGroup[], step: number): Map<string, CSSProperties>;
651
651
 
652
+ /**
653
+ * Framework-agnostic helpers for inline (on-canvas) SmartArt node text editing.
654
+ *
655
+ * The actual text mutation lives in `pptx-viewer-core`
656
+ * (`updateSmartArtNodeText`); these helpers cover the pure, binding-independent
657
+ * concerns around it:
658
+ *
659
+ * - `findSmartArtNodeText`: look up a node's current text by id.
660
+ * - `shouldCommitSmartArtNodeText`: decide whether a new value differs from the
661
+ * current one (so a no-op blur does not push a history entry).
662
+ * - `computeInlineEditorRect`: project a node's on-screen bounding box into
663
+ * coordinates relative to the SmartArt container so an HTML editor overlay can
664
+ * be positioned exactly over the node.
665
+ *
666
+ * @module smartart-inline-edit
667
+ */
668
+
669
+ /** A minimal rectangle (DOMRect-compatible) used for overlay positioning. */
670
+ interface InlineEditRect {
671
+ left: number;
672
+ top: number;
673
+ width: number;
674
+ height: number;
675
+ }
676
+
652
677
  /**
653
678
  * Pure geometry helpers for the align / distribute editor operations.
654
679
  *
@@ -994,6 +1019,39 @@ declare function resolveParagraphBullet(firstSegment: TextSegment | undefined):
994
1019
  */
995
1020
  declare function bulletIndentPx(level: number | undefined): number;
996
1021
 
1022
+ /**
1023
+ * notes-utils.ts: framework-agnostic pure helpers for the rich speaker-notes
1024
+ * editor, shared by the React, Vue, and Angular bindings.
1025
+ *
1026
+ * Ported from React's `viewer/components/notes/notes-utils.ts`. Pure TypeScript
1027
+ * (no DOM, no framework imports beyond the core `TextSegment` model), so each
1028
+ * binding consumes one copy: paragraph/segment conversions, plain-text seeding,
1029
+ * normalisation, and the cursor->paragraph index lookup used by list/indent
1030
+ * toolbar actions.
1031
+ *
1032
+ * NOTE: `escapeHtml` is exported for sibling notes modules but intentionally not
1033
+ * re-exported through the notes barrel: the shared `export/print-document`
1034
+ * module already exports a symbol of the same name.
1035
+ */
1036
+
1037
+ /** Inline character-formatting commands handled via `document.execCommand`. */
1038
+ type NotesInlineCommand = 'bold' | 'italic' | 'underline' | 'strikeThrough';
1039
+
1040
+ /**
1041
+ * notes-editor.ts: framework-agnostic DOM command helpers for the rich
1042
+ * speaker-notes contentEditable editor, shared by every binding.
1043
+ *
1044
+ * These wrap the pure paragraph/segment maths in `notes-utils` with the small
1045
+ * amount of (framework-neutral) DOM work the toolbar actions need: reading the
1046
+ * live editor back into segments, applying a list/indent command at the caret,
1047
+ * and inserting a hyperlink at the current selection. The binding owns the
1048
+ * editor element ref, the debounce, and the reactive state; it calls these to
1049
+ * compute the next segments + plain text without duplicating the logic.
1050
+ */
1051
+
1052
+ /** Paragraph-level toolbar commands. */
1053
+ type NotesParagraphCommand = 'bullet' | 'numbered' | 'indent' | 'outdent';
1054
+
997
1055
  /**
998
1056
  * Text-field placeholder substitution, shared by every binding's text
999
1057
  * renderer.
@@ -2822,6 +2880,52 @@ declare class MobileBottomBarComponent {
2822
2880
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileBottomBarComponent, "pptx-mobile-bottom-bar", never, { "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "commentCount": { "alias": "commentCount"; "required": false; "isSignal": true; }; "activeSheet": { "alias": "activeSheet"; "required": false; "isSignal": true; }; }, { "openSlides": "openSlides"; "insert": "insert"; "openFormat": "openFormat"; "openComments": "openComments"; "notes": "notes"; }, never, never, true, never>;
2823
2881
  }
2824
2882
 
2883
+ /** BroadcastChannel name shared between presenter and audience tabs. */
2884
+ declare const PRESENTER_CHANNEL_NAME = "pptx-viewer-presenter";
2885
+ /** Unique origin identifier so we only react to our own messages. */
2886
+ declare const PRESENTER_MSG_ORIGIN = "pptx-viewer-presenter";
2887
+ /** Hash key used to pass the session nonce to the audience tab. */
2888
+ declare const AUDIENCE_NONCE_KEY = "nonce";
2889
+ interface PresenterSlideChangeMessage {
2890
+ origin: typeof PRESENTER_MSG_ORIGIN;
2891
+ type: 'presenter-slide-change';
2892
+ slideIndex: number;
2893
+ sessionId: string;
2894
+ }
2895
+ interface PresenterExitMessage {
2896
+ origin: typeof PRESENTER_MSG_ORIGIN;
2897
+ type: 'presenter-exit';
2898
+ sessionId: string;
2899
+ }
2900
+ type PresenterMessage = PresenterSlideChangeMessage | PresenterExitMessage;
2901
+ /** Type guard for messages arriving on the presenter BroadcastChannel. */
2902
+ declare function isPresenterMessage(data: unknown): data is PresenterMessage;
2903
+ /**
2904
+ * Parse the session nonce from the current page URL hash. Returns null if the
2905
+ * hash is not in the expected `#pptx-audience&nonce=<uuid>` form.
2906
+ */
2907
+ declare function parseAudienceNonce(): string | null;
2908
+ declare class PresenterWindowService {
2909
+ private audienceWindow;
2910
+ private channel;
2911
+ private pollTimer;
2912
+ /** Per-session UUID. Regenerated each time openAudienceWindow is invoked. */
2913
+ private sessionId;
2914
+ private getChannel;
2915
+ isAudienceWindowOpen(): boolean;
2916
+ syncSlideToAudience(slideIndex: number): void;
2917
+ closeAudienceWindow(): void;
2918
+ /**
2919
+ * Open the audience tab. Persists the PPTX bytes (if any) to IndexedDB, then
2920
+ * navigates the placeholder tab to the audience URL. Returns false when the
2921
+ * popup is blocked.
2922
+ */
2923
+ openAudienceWindow(content: ArrayBuffer | Uint8Array | null, currentSlideIndex: number): boolean;
2924
+ private disposeWindow;
2925
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PresenterWindowService, never>;
2926
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<PresenterWindowService>;
2927
+ }
2928
+
2825
2929
  /**
2826
2930
  * Captures the slide at `index` (zero-based) to a PNG `data:` URL. The viewer
2827
2931
  * supplies this: it flips the live stage to `index` and rasterises it.
@@ -3247,6 +3351,22 @@ declare class PowerPointViewerComponent {
3247
3351
  readonly theme: _angular_core.InputSignal<ViewerTheme | undefined>;
3248
3352
  /** Optional real-time collaboration config; when set, connects and shows remote cursors. */
3249
3353
  readonly collaboration: _angular_core.InputSignal<CollaborationConfig | undefined>;
3354
+ /**
3355
+ * Display name for the local user in collaboration/broadcast sessions and
3356
+ * presence avatars. Falls back to "You" (cursors/avatars) and "Presenter"
3357
+ * (broadcast owner) when omitted. Mirrors the React/Vue `authorName` prop.
3358
+ */
3359
+ readonly authorName: _angular_core.InputSignal<string | undefined>;
3360
+ /**
3361
+ * Seed values for the Share dialog's start form (and the broadcast server
3362
+ * URL). Lets the host pre-fill the room id / user name / server URL. Mirrors
3363
+ * the React/Vue `shareDefaults` prop.
3364
+ */
3365
+ readonly shareDefaults: _angular_core.InputSignal<{
3366
+ roomId?: string;
3367
+ userName?: string;
3368
+ serverUrl?: string;
3369
+ } | undefined>;
3250
3370
  /**
3251
3371
  * Host override for the File ▸ Open action. When set, the built-in native
3252
3372
  * file picker is bypassed and this is invoked instead; the host then supplies
@@ -3270,6 +3390,14 @@ declare class PowerPointViewerComponent {
3270
3390
  readonly contentChange: _angular_core.OutputEmitterRef<Uint8Array<ArrayBufferLike>>;
3271
3391
  /** Fired when the user edits document properties in the Info dialog. */
3272
3392
  readonly propertiesChange: _angular_core.OutputEmitterRef<Partial<PptxCoreProperties>>;
3393
+ /**
3394
+ * Fired when a collaboration/broadcast session starts, with the connected
3395
+ * config (role `collaborator` for Share, `owner` for Broadcast). Lets the
3396
+ * host rewrite the URL and publish the deck. Mirrors React/Vue.
3397
+ */
3398
+ readonly startCollaboration: _angular_core.OutputEmitterRef<CollaborationConfig>;
3399
+ /** Fired when the collaboration/broadcast session stops. Mirrors React/Vue. */
3400
+ readonly stopCollaboration: _angular_core.OutputEmitterRef<void>;
3273
3401
  protected readonly loader: LoadContentService;
3274
3402
  private readonly exportSvc;
3275
3403
  protected readonly editor: EditorStateService;
@@ -3279,6 +3407,8 @@ declare class PowerPointViewerComponent {
3279
3407
  protected readonly print: PrintService;
3280
3408
  protected readonly mobile: IsMobileService;
3281
3409
  private readonly smartArt3DSvc;
3410
+ private readonly zoomTarget;
3411
+ protected readonly presenterWindow: PresenterWindowService;
3282
3412
  /** The `<main>` host; used to locate the live `.pptx-ng-canvas-stage`. */
3283
3413
  private readonly mainEl;
3284
3414
  /** True while a PNG/PDF export is in progress (disables the buttons). */
@@ -3321,6 +3451,8 @@ declare class PowerPointViewerComponent {
3321
3451
  protected readonly mobileSheet: _angular_core.WritableSignal<"menu" | "slides" | null>;
3322
3452
  /** Speaker-notes strip visibility. */
3323
3453
  protected readonly showNotes: _angular_core.WritableSignal<boolean>;
3454
+ /** Whether the left slides panel is collapsed (top-bar sidebar toggle). */
3455
+ protected readonly slidesPanelCollapsed: _angular_core.WritableSignal<boolean>;
3324
3456
  /** Find-in-slides bar visibility. */
3325
3457
  protected readonly showFind: _angular_core.WritableSignal<boolean>;
3326
3458
  /** Find-and-replace bar state (edit mode only). */
@@ -3343,6 +3475,11 @@ declare class PowerPointViewerComponent {
3343
3475
  * `canEdit`.
3344
3476
  */
3345
3477
  protected readonly inspectorContent: _angular_core.Signal<"slide" | "element" | "comments" | "accessibility" | "signatures" | "selection" | null>;
3478
+ /**
3479
+ * Whether the right-docked inspector is showing the format panel (element or
3480
+ * slide properties). Drives the top-bar inspector-toggle active state.
3481
+ */
3482
+ protected readonly inspectorPaneOpen: _angular_core.Signal<boolean>;
3346
3483
  /** Inspector content, but null on mobile once the user has swiped it away. */
3347
3484
  protected readonly visibleInspectorKind: _angular_core.Signal<"slide" | "element" | "comments" | "accessibility" | "signatures" | "selection" | null>;
3348
3485
  /** Accessible label for the inspector host, by active content. */
@@ -3376,6 +3513,16 @@ declare class PowerPointViewerComponent {
3376
3513
  protected readonly shareUrl: _angular_core.Signal<string>;
3377
3514
  /** Shareable follow link for the active broadcast. */
3378
3515
  protected readonly broadcastViewerUrl: _angular_core.Signal<string>;
3516
+ /**
3517
+ * Seed values for the Share dialog: the host-supplied {@link shareDefaults},
3518
+ * with `userName` falling back to {@link authorName} (then "You") so the
3519
+ * local user's name pre-fills the form. Mirrors React/Vue.
3520
+ */
3521
+ protected readonly shareDialogDefaults: _angular_core.Signal<{
3522
+ roomId?: string;
3523
+ userName?: string;
3524
+ serverUrl?: string;
3525
+ }>;
3379
3526
  /** Local overrides applied to document properties via the Info dialog. */
3380
3527
  private readonly coreOverride;
3381
3528
  /** Comments on the active slide. */
@@ -3509,9 +3656,14 @@ declare class PowerPointViewerComponent {
3509
3656
  * selection correct when the show closes.
3510
3657
  */
3511
3658
  onPresentationIndexChange(index: number): void;
3659
+ /**
3660
+ * Open a separate audience tab and hand off the deck via the shared
3661
+ * IndexedDB store. Mirrors React's presenter "open audience window".
3662
+ */
3663
+ openAudienceWindow(): void;
3512
3664
  /** Open the presenter (speaker) view: current+next slide, notes, timer. */
3513
3665
  presentPresenter(): void;
3514
- /** Close the presenter view (and any audience overlay it opened). */
3666
+ /** Close the presenter view (and any audience overlay/window it opened). */
3515
3667
  exitPresenter(): void;
3516
3668
  /** Toggle the speaker-notes strip. */
3517
3669
  toggleNotes(): void;
@@ -3565,12 +3717,16 @@ declare class PowerPointViewerComponent {
3565
3717
  /** Receive an eraser hit and delete the targeted ink element. */
3566
3718
  protected onEraserHit(id: string): void;
3567
3719
  /**
3568
- * Activate the native EyeDropper API to pick a colour from the screen.
3720
+ * Activate the eyedropper to pick a colour from the screen. Uses the native
3721
+ * EyeDropper API where available (Chrome/Edge); on Firefox/Safari it falls
3722
+ * back to a one-shot click that samples the slide DOM under the pointer.
3569
3723
  * When a shape/text/connector/image element is selected, applies the colour
3570
- * to its fill. Otherwise copies the colour to the clipboard. No-ops when
3571
- * the EyeDropper API is not available or the user cancels.
3724
+ * to its fill; otherwise copies it to the clipboard. No-ops when the user
3725
+ * cancels (Escape) or nothing paintable is under the pointer.
3572
3726
  */
3573
3727
  protected onToggleEyedropper(): Promise<void>;
3728
+ /** Apply a picked colour to the selected shape's fill, else copy to clipboard. */
3729
+ private applyEyedropperColor;
3574
3730
  /** Append a comment to the active slide (one history entry). */
3575
3731
  onCommentAdd(text: string): void;
3576
3732
  /** Remove a comment from the active slide. */
@@ -3686,7 +3842,7 @@ declare class PowerPointViewerComponent {
3686
3842
  /** Export every slide as a WebM video (3s per slide) via MediaRecorder. */
3687
3843
  exportVideo(): Promise<void>;
3688
3844
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PowerPointViewerComponent, never>;
3689
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PowerPointViewerComponent, "pptx-viewer", never, { "content": { "alias": "content"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "collaboration": { "alias": "collaboration"; "required": false; "isSignal": true; }; "onOpenFile": { "alias": "onOpenFile"; "required": false; "isSignal": true; }; "smartArt3D": { "alias": "smartArt3D"; "required": false; "isSignal": true; }; }, { "activeSlideChange": "activeSlideChange"; "dirtyChange": "dirtyChange"; "contentChange": "contentChange"; "propertiesChange": "propertiesChange"; }, never, never, true, never>;
3845
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PowerPointViewerComponent, "pptx-viewer", never, { "content": { "alias": "content"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "collaboration": { "alias": "collaboration"; "required": false; "isSignal": true; }; "authorName": { "alias": "authorName"; "required": false; "isSignal": true; }; "shareDefaults": { "alias": "shareDefaults"; "required": false; "isSignal": true; }; "onOpenFile": { "alias": "onOpenFile"; "required": false; "isSignal": true; }; "smartArt3D": { "alias": "smartArt3D"; "required": false; "isSignal": true; }; }, { "activeSlideChange": "activeSlideChange"; "dirtyChange": "dirtyChange"; "contentChange": "contentChange"; "propertiesChange": "propertiesChange"; "startCollaboration": "startCollaboration"; "stopCollaboration": "stopCollaboration"; }, never, never, true, never>;
3690
3846
  }
3691
3847
 
3692
3848
  /** The eight resize-handle positions around a selection box. */
@@ -4446,20 +4602,44 @@ interface InlineEditState {
4446
4602
  text: string;
4447
4603
  }
4448
4604
 
4605
+ /**
4606
+ * Pure narrowing and text-layout helpers for SmartArtRendererComponent.
4607
+ * Extracted to keep the component file within the per-file line budget.
4608
+ * Re-imported as class-property function references so Angular template
4609
+ * type-checking continues to work without changes to the template.
4610
+ */
4611
+
4612
+ /** Narrow a RenderedNode to a circle, or undefined. */
4613
+ declare function narrowToCircle(node: RenderedNode): RenderedCircleNode | undefined;
4614
+ /** Narrow a RenderedNode to a polygon, or undefined. */
4615
+ declare function narrowToPolygon(node: RenderedNode): RenderedPolygonNode | undefined;
4616
+ /** Narrow a RenderedNode to a rect, or undefined. */
4617
+ declare function narrowToRect(node: RenderedNode): RenderedRectNode | undefined;
4618
+ /**
4619
+ * Split node text on newlines and compute per-line y offsets (in SVG px)
4620
+ * that centre the block around the node centre y (offset 0). Single-line
4621
+ * text produces one entry with offsetY=0, preserving the existing
4622
+ * dominant-baseline="central" behaviour exactly.
4623
+ */
4624
+ declare function computeTextLines(text: string, fontSize: number): Array<{
4625
+ text: string;
4626
+ offsetY: number;
4627
+ }>;
4628
+
4449
4629
  /**
4450
4630
  * SmartArtRendererComponent: Angular SmartArt renderer.
4451
4631
  *
4452
4632
  * Data path mirrors the Vue `SmartArtRenderer.vue` and the React renderer:
4453
- * 1. **Drawing shapes** (`smartArtData.drawingShapes`) the preferred path
4633
+ * 1. **Drawing shapes** (`smartArtData.drawingShapes`) -- the preferred path
4454
4634
  * when the core extracted per-shape geometry from `ppt/diagrams/drawing*.xml`.
4455
- * 2. **Shared SVG-fallback engine** (`computeSmartArtLayout`) when no drawing
4635
+ * 2. **Shared SVG-fallback engine** (`computeSmartArtLayout`) -- when no drawing
4456
4636
  * shapes exist, the framework-agnostic engine in `pptx-viewer-shared`
4457
4637
  * positions/styles the node tree across all 10 layout families (list /
4458
4638
  * process / cycle / hierarchy / matrix / radial / pyramid / venn / funnel /
4459
4639
  * target), returning `RenderedNode[]` (rect / circle / polygon) +
4460
4640
  * `RenderedConnector[]` view-models. Every binding renders the same
4461
4641
  * geometry; this maps those view-models to SVG exactly as Vue does.
4462
- * 3. **Placeholder** when there is neither data nor any nodes/shapes.
4642
+ * 3. **Placeholder** -- when there is neither data nor any nodes/shapes.
4463
4643
  */
4464
4644
  declare class SmartArtRendererComponent {
4465
4645
  /** The smartArt element to render. Must be `type === 'smartArt'`. */
@@ -4483,6 +4663,8 @@ declare class SmartArtRendererComponent {
4483
4663
  protected readonly editState: _angular_core.WritableSignal<InlineEditState | null>;
4484
4664
  /** The mounted `<textarea>` for the active node edit, if any. */
4485
4665
  private readonly nodeEditor;
4666
+ /** Container div ref used to project hover rects into local coordinates. */
4667
+ private readonly smartartContainer;
4486
4668
  /**
4487
4669
  * Guards against a cancel-triggered DOM-removal blur committing the edit.
4488
4670
  * Set to true before programmatic cancellation; reset to false on each new edit.
@@ -4504,6 +4686,12 @@ declare class SmartArtRendererComponent {
4504
4686
  /** `viewBox` attribute string for the drawing-shapes `<svg>`. */
4505
4687
  readonly svgViewBox: _angular_core.Signal<string>;
4506
4688
  readonly renderedShapes: _angular_core.Signal<RenderedShape[]>;
4689
+ /**
4690
+ * Node id for each drawing shape (index-aligned with `renderedShapes`).
4691
+ * Used to tag `<g>` elements with `data-smartart-node-id` so the 3D
4692
+ * renderer's hit-test overlay can resolve a click to a node.
4693
+ */
4694
+ readonly drawingShapeNodeIds: _angular_core.Signal<(string | undefined)[]>;
4507
4695
  readonly layout: _angular_core.Signal<SmartArtLayoutResult>;
4508
4696
  readonly hasLayout: _angular_core.Signal<boolean>;
4509
4697
  /**
@@ -4514,6 +4702,12 @@ declare class SmartArtRendererComponent {
4514
4702
  readonly a11y: _angular_core.Signal<SmartArtA11y | undefined>;
4515
4703
  /** Map of node id -> accessibility label (for per-node `<title>` lookup). */
4516
4704
  private readonly a11yLabelById;
4705
+ /**
4706
+ * Parsed data-model node id for a rendered node (or `null` when the key does
4707
+ * not map to one). Exposed as a method so the template can use it: Angular
4708
+ * AOT templates can only call component members, not imported functions.
4709
+ */
4710
+ nodeKeyId(node: RenderedNode): string | null;
4517
4711
  /** Resolve the accessibility label for a rendered node (by parsed node id). */
4518
4712
  nodeAriaLabel(node: RenderedNode): string | null;
4519
4713
  /**
@@ -4521,22 +4715,13 @@ declare class SmartArtRendererComponent {
4521
4715
  * Empty between commits so assistive tech only speaks on change.
4522
4716
  */
4523
4717
  readonly liveMessage: _angular_core.WritableSignal<string>;
4524
- /** Narrow a `RenderedNode` to a circle, or `undefined`. */
4525
- asCircle(node: RenderedNode): RenderedCircleNode | undefined;
4526
- /** Narrow a `RenderedNode` to a polygon, or `undefined`. */
4527
- asPolygon(node: RenderedNode): RenderedPolygonNode | undefined;
4528
- /** Narrow a `RenderedNode` to a rect, or `undefined`. */
4529
- asRect(node: RenderedNode): RenderedRectNode | undefined;
4530
- /**
4531
- * Split node text on `\n` and compute per-line y offsets (in SVG px) that
4532
- * centre the block around the node centre y (offset 0). Single-line text
4533
- * produces one entry with offsetY=0, preserving the existing
4534
- * `dominant-baseline="central"` behaviour exactly.
4535
- */
4536
- protected textLines(text: string, fontSize: number): Array<{
4537
- text: string;
4538
- offsetY: number;
4539
- }>;
4718
+ protected readonly hoveredNodeId: _angular_core.WritableSignal<string | null>;
4719
+ protected readonly hoveredNodeRect: _angular_core.WritableSignal<InlineEditRect | null>;
4720
+ /** Narrowing helpers bound as class properties for template type-checking. */
4721
+ protected readonly asCircle: typeof narrowToCircle;
4722
+ protected readonly asPolygon: typeof narrowToPolygon;
4723
+ protected readonly asRect: typeof narrowToRect;
4724
+ protected readonly textLines: typeof computeTextLines;
4540
4725
  /** Double-click a node enters inline edit mode (when editable). */
4541
4726
  onNodeDblClick(event: Event, node: RenderedNode): void;
4542
4727
  /** Enter / F2 on a focused node enters inline edit mode (when editable). */
@@ -4551,6 +4736,11 @@ declare class SmartArtRendererComponent {
4551
4736
  private rawNodeText;
4552
4737
  /** Commit edited text through the shared editor state (one history entry). */
4553
4738
  private applyCommit;
4739
+ protected readonly styleBarStyle: _angular_core.Signal<Record<string, string> | null>;
4740
+ protected onMouseMove(event: MouseEvent): void;
4741
+ protected onMouseLeave(): void;
4742
+ private findNodeEl;
4743
+ protected handleChangeNodeStyle(nodeId: string, fill: string): void;
4554
4744
  readonly isEmpty: _angular_core.Signal<boolean>;
4555
4745
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SmartArtRendererComponent, never>;
4556
4746
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SmartArtRendererComponent, "pptx-smart-art-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -4789,6 +4979,16 @@ interface ZoomViewModel {
4789
4979
  readonly slideLabel: string;
4790
4980
  /** Accessible label for the element. */
4791
4981
  readonly ariaLabel: string;
4982
+ /**
4983
+ * Fallback-thumbnail background colour: the target slide's own background when
4984
+ * known, else a neutral grey. Mirrors React's `ZoomSlideThumbnail`.
4985
+ */
4986
+ readonly thumbnailBackground: string;
4987
+ /**
4988
+ * Friendly section caption for the fallback thumbnail: the target slide's
4989
+ * section name when resolved, else the raw `targetSectionId` (GUID).
4990
+ */
4991
+ readonly sectionCaption: string | undefined;
4792
4992
  }
4793
4993
 
4794
4994
  /**
@@ -4803,9 +5003,15 @@ interface ZoomViewModel {
4803
5003
  * In presentation mode the overlay provides a {@link ZoomNavigationService}, so
4804
5004
  * clicking (or Enter/Space) jumps to the target slide. Outside presentation mode
4805
5005
  * the service is not provided (optional injection yields `null`) and the tile
4806
- * stays a static link, exactly as before. Live target-slide preview rendering is
4807
- * still NOT ported; the `slides` array is not threaded through, so the fallback
4808
- * uses the target slide index rather than the real target background.
5006
+ * stays a static link, exactly as before.
5007
+ *
5008
+ * The fallback thumbnail (no embedded preview image) matches React's
5009
+ * `ZoomSlideThumbnail`: when a {@link ZoomTargetService} is provided (by the
5010
+ * viewer), it looks up the target slide and uses that slide's real background
5011
+ * colour, its own 1-based number, and its friendly section name. A live
5012
+ * mini-rendering of the target slide is intentionally NOT drawn. When the
5013
+ * service is absent the tile keeps the neutral grey / index / section-GUID
5014
+ * fallback.
4809
5015
  *
4810
5016
  * All non-trivial pure computation lives in `zoom-renderer-helpers.ts` (no
4811
5017
  * Angular dependency) so it can be unit-tested without TestBed.
@@ -4815,6 +5021,12 @@ declare class ZoomRendererComponent {
4815
5021
  readonly zIndex: _angular_core.InputSignal<number>;
4816
5022
  readonly mediaDataUrls: _angular_core.InputSignal<Map<string, string>>;
4817
5023
  readonly containerStyle: _angular_core.Signal<StyleMap>;
5024
+ /**
5025
+ * Target-slide lookup, provided by the viewer. `null` in trees that do not
5026
+ * provide it (e.g. isolated component tests), where the fallback thumbnail
5027
+ * stays on the neutral grey / index / section-GUID placeholder.
5028
+ */
5029
+ private readonly zoomTarget;
4818
5030
  readonly vm: _angular_core.Signal<ZoomViewModel>;
4819
5031
  /**
4820
5032
  * Zoom-navigation context, present only inside a running presentation (the
@@ -5347,6 +5559,8 @@ declare class InspectorPanelComponent {
5347
5559
  textColor: string;
5348
5560
  fontSize: number;
5349
5561
  }>;
5562
+ /** Whether the element has lock flags preventing move/select. */
5563
+ protected readonly isLocked: _angular_core.Signal<boolean>;
5350
5564
  /** Whether the element supports shape-style (fill/stroke) editing. */
5351
5565
  protected readonly hasShape: _angular_core.Signal<boolean>;
5352
5566
  /** Whether the element supports text-style editing. */
@@ -5369,6 +5583,8 @@ declare class InspectorPanelComponent {
5369
5583
  * identically.
5370
5584
  */
5371
5585
  protected onSmartArtDataChange(smartArtData: PptxSmartArtData): void;
5586
+ /** Toggle element lock (noMove + noResize + noSelect). */
5587
+ protected onLockToggle(): void;
5372
5588
  /** Commit a partial-element patch from an advanced sub-panel as one history entry. */
5373
5589
  protected onPatch(patch: Partial<PptxElement>): void;
5374
5590
  /** Commit a fully-replaced element (table/chart data editors) as one history entry. */
@@ -5966,18 +6182,38 @@ declare class MobileToolbarComponent {
5966
6182
  declare class NotesPanelComponent {
5967
6183
  /** The active slide whose notes are shown / edited. */
5968
6184
  readonly slide: _angular_core.InputSignal<PptxSlide | undefined>;
5969
- /** Emits the new notes text on commit (change / blur). */
6185
+ /** Emits the new plain-text notes on commit. */
5970
6186
  readonly update: _angular_core.OutputEmitterRef<string>;
5971
- /** Whether the panel body is collapsed (notes hidden). */
5972
6187
  readonly collapsed: _angular_core.WritableSignal<boolean>;
6188
+ protected readonly isRichEnabled: _angular_core.WritableSignal<boolean>;
6189
+ protected readonly showLinkPopover: _angular_core.WritableSignal<boolean>;
6190
+ protected readonly savedSelectionText: _angular_core.WritableSignal<string>;
6191
+ private readonly richEditor;
5973
6192
  private readonly textarea;
5974
- /** The slide id we've already seeded the textarea for. */
6193
+ /** Show the rich surface only when a slide is selected. */
6194
+ protected showRich(): boolean;
6195
+ private draftSegments;
6196
+ private draftText;
5975
6197
  private seededId;
6198
+ private debounceId;
5976
6199
  constructor();
5977
- /** Toggle the collapsed state. */
6200
+ private seedActiveSurface;
6201
+ private emitNow;
6202
+ private scheduleSave;
5978
6203
  toggle(): void;
5979
- /** Commit the edited notes text to the host. */
5980
- onCommit(event: Event): void;
6204
+ onRichInput(): void;
6205
+ inlineCommand(command: NotesInlineCommand): void;
6206
+ paragraphCommand(command: NotesParagraphCommand): void;
6207
+ onRichKeydown(event: KeyboardEvent): void;
6208
+ onEditorClick(event: MouseEvent): void;
6209
+ openLinkPopover(): void;
6210
+ insertLink(link: {
6211
+ url: string;
6212
+ displayText: string;
6213
+ }): void;
6214
+ onPlainCommit(event: Event): void;
6215
+ toggleRich(): void;
6216
+ printNotes(): void;
5981
6217
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NotesPanelComponent, never>;
5982
6218
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NotesPanelComponent, "pptx-notes-panel", never, { "slide": { "alias": "slide"; "required": false; "isSignal": true; }; }, { "update": "update"; }, never, never, true, never>;
5983
6219
  }
@@ -6043,6 +6279,31 @@ declare class EditorToolbarComponent {
6043
6279
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<EditorToolbarComponent, "pptx-editor-toolbar", never, { "slideIndex": { "alias": "slideIndex"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
6044
6280
  }
6045
6281
 
6282
+ declare class StatusBarComponent {
6283
+ readonly slideIndex: _angular_core.InputSignal<number>;
6284
+ readonly slideCount: _angular_core.InputSignal<number>;
6285
+ readonly canEdit: _angular_core.InputSignal<boolean>;
6286
+ readonly dirty: _angular_core.InputSignal<boolean>;
6287
+ readonly notesOpen: _angular_core.InputSignal<boolean>;
6288
+ readonly zoomPercent: _angular_core.InputSignal<number>;
6289
+ /** True when the slide-sorter overlay is open (active-state styling). */
6290
+ readonly sorterActive: _angular_core.InputSignal<boolean>;
6291
+ /** True when the presentation overlay is open (active-state styling). */
6292
+ readonly presenting: _angular_core.InputSignal<boolean>;
6293
+ readonly toggleNotes: _angular_core.OutputEmitterRef<void>;
6294
+ readonly normalView: _angular_core.OutputEmitterRef<void>;
6295
+ readonly openSorter: _angular_core.OutputEmitterRef<void>;
6296
+ readonly slideShow: _angular_core.OutputEmitterRef<void>;
6297
+ readonly zoomIn: _angular_core.OutputEmitterRef<void>;
6298
+ readonly zoomOut: _angular_core.OutputEmitterRef<void>;
6299
+ readonly zoomReset: _angular_core.OutputEmitterRef<void>;
6300
+ /** "Normal" is active when neither the sorter nor the slideshow is showing. */
6301
+ protected isNormal(): boolean;
6302
+ protected min(a: number, b: number): number;
6303
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatusBarComponent, never>;
6304
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatusBarComponent, "pptx-status-bar", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "dirty": { "alias": "dirty"; "required": false; "isSignal": true; }; "notesOpen": { "alias": "notesOpen"; "required": false; "isSignal": true; }; "zoomPercent": { "alias": "zoomPercent"; "required": false; "isSignal": true; }; "sorterActive": { "alias": "sorterActive"; "required": false; "isSignal": true; }; "presenting": { "alias": "presenting"; "required": false; "isSignal": true; }; }, { "toggleNotes": "toggleNotes"; "normalView": "normalView"; "openSorter": "openSorter"; "slideShow": "slideShow"; "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "zoomReset": "zoomReset"; }, never, never, true, never>;
6305
+ }
6306
+
6046
6307
  declare class EditorContextMenuComponent {
6047
6308
  /** Horizontal viewport coordinate (px) of the top-left corner of the menu. */
6048
6309
  readonly x: _angular_core.InputSignal<number>;
@@ -7213,6 +7474,38 @@ interface PresenterNotes {
7213
7474
  */
7214
7475
  declare function resolvePresenterNotes(slide: PptxSlide | undefined): PresenterNotes;
7215
7476
 
7477
+ /**
7478
+ * audience-content-store: IndexedDB-based storage for sharing PPTX content
7479
+ * between the presenter tab and audience tab.
7480
+ *
7481
+ * When the presenter opens an audience window, the PPTX bytes are stored in
7482
+ * IndexedDB. The audience tab retrieves them on load and then cleans up.
7483
+ *
7484
+ * Framework-agnostic port of the React store
7485
+ * (packages/react/src/viewer/hooks/presentation-mode/audience-content-store.ts).
7486
+ * The database, store, and key names are kept identical to React/Vue so the
7487
+ * cross-tab handoff stays wire-compatible regardless of which binding opened
7488
+ * the presenter window or which one renders the audience tab.
7489
+ */
7490
+ /** URL hash that marks the current tab as the audience display. */
7491
+ declare const AUDIENCE_HASH = "#pptx-audience";
7492
+ /** Returns true if the current page was opened as an audience tab. */
7493
+ declare function isAudienceTab(): boolean;
7494
+ /**
7495
+ * Store PPTX content bytes so the audience tab can retrieve them.
7496
+ * Called by the presenter before opening the audience window.
7497
+ */
7498
+ declare function storeAudienceContent(content: ArrayBuffer | Uint8Array): Promise<void>;
7499
+ /**
7500
+ * Load PPTX content bytes stored by the presenter tab.
7501
+ * Returns `null` if nothing is stored.
7502
+ */
7503
+ declare function loadAudienceContent(): Promise<Uint8Array | null>;
7504
+ /**
7505
+ * Remove stored audience content (cleanup).
7506
+ */
7507
+ declare function clearAudienceContent(): Promise<void>;
7508
+
7216
7509
  /**
7217
7510
  * SVG path generators for WordArt text warp presets.
7218
7511
  *
@@ -7289,5 +7582,5 @@ declare function themeStyle(theme: ViewerTheme | undefined): Record<string, stri
7289
7582
  type ClassValue = string | number | false | null | undefined;
7290
7583
  declare function cn(...values: ClassValue[]): string;
7291
7584
 
7292
- export { AccessibilityPanelComponent, AccessibilityService, AdvancedChartEditorComponent, AnimationAuthorPanelComponent, AnimationPanelComponent, AnimationPlaybackService, BroadcastDialogComponent, CURSOR_PALETTE, ChartAxisOptionsComponent, ChartAxisStyleOptionsComponent, ChartComboTypeOptionsComponent, ChartDataEditorComponent, ChartDataLabelOptionsComponent, ChartDatapointOptionsComponent, ChartDisplayOptionsComponent, ChartErrorBarOptionsComponent, ChartMarkerOptionsComponent, ChartRendererComponent, ChartTrendlineOptionsComponent, CollaborationCursorsComponent, CollaborationService, CommentsPanelComponent, CommentsService, ConnectorRendererComponent, ConnectorTextOverlayComponent, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_FILL_COLOR, DEFAULT_PRINT_SETTINGS, DEFAULT_SLIDE_BACKGROUND, DEFAULT_STROKE_COLOR, DEFAULT_TEXT_COLOR, EMBEDDED_FONTS_STYLE_ID, EditorContextMenuComponent, EditorHistory, EditorStateService, EditorToolbarComponent, EffectsPanelComponent, ElementRendererComponent, EmbeddedFontsService, EquationRendererComponent, ExportService, FindBarComponent, FindReplaceBarComponent, GradientPickerComponent, HANDOUT_OPTIONS, HyperlinkDialogComponent, InkRendererComponent, InspectorPanelComponent, IsMobileService, LoadContentService, MobileBottomBarComponent, MobileMenuSheetComponent, MobilePresenterViewComponent, MobileSheetComponent, MobileSlidesSheetComponent, MobileToolbarComponent, ModalDialogComponent, Model3DRendererComponent, NotesPanelComponent, OleRendererComponent, PowerPointViewerComponent, PresentationAnnotationOverlayComponent, PresentationAnnotationsService, PresentationOverlayComponent, PresentationSubtitleBarComponent, PresentationTransitionOverlayComponent, PresenterViewComponent, PrintDialogComponent, PrintService, PrintSettingsPanelComponent, PropertiesDialogComponent, RESIZE_HANDLES, SEVERITY_GROUPS, SEVERITY_LABELS, SLIDE_TRANSITION_KEYFRAMES, SVG_WARP_PRESETS, ShareDialogComponent, SignaturesPanelComponent, SignaturesService, SlideCanvasComponent, SlideSorterOverlayComponent, SlidesPanelComponent, SmartArtRendererComponent, TYPE_LABELS, TableDataEditorComponent, TableRendererComponent, TextAdvancedPanelComponent, VIEWER_THEME, WEBM_MIME_CANDIDATES, ZoomRendererComponent, addCommentToList, advanceStep, applyFindReplacements, applyFormatToElement, applyMove, applyResize, assignUserColor, bringForward, bringToFront, buildBroadcastConfig, buildBroadcastViewerUrl, buildClearHyperlinkPatch, buildClickGroups, buildCollaborationConfig, buildCssGradientFromShapeStyle, buildDuotoneFilter, buildDuotoneFilterId, buildEmbeddedFontStyles, buildFontFaceRule, buildHyperlinkPatch, buildPatternFillCss, buildPrintHtmlDocument as buildPrintDocument, buildPropertiesPatch, buildShareUrl, bulletIndentPx, canStartBroadcast, canStartShare, canUseClipboard, clampCursorPosition, clampGifDimensions, clampNotesFontSize, clampStep, cn, collectAccessibilityIssues, collectElementText, collectSlideText, computeHandoutLayout, computeIsMobile, computeIsTablet, computePageCount, computeSlideIndices, computeTimerProgress, convertOmmlToMathMl, copyFormatFromElement, countAccessibilityIssues, defaultCssVars, defaultRadius, defaultThemeColors, deleteElementsByIds, derivePresenceList, duplicateElementById, durationOf, encodeGif, estimatePageCount, findInSlides, fontMimeForFormat, formatAutoNumber, formatCursorLabel, formatElapsed, formatPropertyDate, formatTime, fpsToFrameIntervalMs, generateBroadcastRoomId, generateCommentId, getContainerStyle, getDuotoneFilterDef, getImageSrc, getPatternSvg, getResolvedShapeClipPath, getResolvedShapeClipPathFor, getShapeFillStrokeStyle, getSlideBackgroundStyle, getSlideTransitionAnimations, getTextBlockStyle, getTextWarp, getWarpCategory, getWarpPath, groupIssuesBySeverity, hasCopyableFormat, hasExistingLink, headerLabel, isInjectableUrl, isPpactionUrl, isSigned, isUrlSafe, isValidRoomId, issueTrackKey, issueTypeLabel, moveElementBy, msToFrameDelayCs, normalizeFontFormat, normalizeSlidesPerPage, ommlToMathml, overallStatus, pendingElementStyles, pickSupportedMimeType, planGifFrames, planVideoSegments, presenceToCursors, provideViewerTheme, recordWebm, removeCommentFromList, renderToCanvas, replaceInSlides, replaceMatch, resizeElement, resolveFontVariant, resolveHyperlinkHref, resolveParagraphBullet, resolvePresenterNotes, resolveTransitionDuration, revealedElementStyles, routeOrthogonalConnector, sanitizeColor, sanitizeSlideIndex, sanitizeUserName, searchSlides, seedBroadcastFields, seedHyperlinkDraft, seedPropertiesDraft, seedShareFields, segmentFrameCount, sendBackward, sendToBack, setElementPosition, shouldUseSvgWarp, signatureCountLabel, signatureKey, signatureTimestamp, signerName, statusKind, statusLabel, themeStyle, themeToCssVars, toggleCommentResolvedInList, updateElementById, validatePrintSettings, validateRoomId, waypointsToPathD, worstStatus };
7293
- export type { AccessibilityIssueGroup, AnimationClickGroup, AnnotationStroke, Box, BroadcastConfig, BroadcastDefaults, CSSProperties, CanvasSize, ClassValue, CollaborationConfig, CollaborationRole, RouterRect as ConnectorObstacle, RouterPoint as ConnectorPoint, ConnectorRouting, CopiedFormat, DocumentProperties, DuotoneFilterDef, EmbeddedFontStyles, FindOptions, FindResult, GifFrame, GifFramePlan, GifPlanOptions, HandoutSlidesPerPage, HyperlinkDraft, NotesSegmentViewModel, ObjectUrlFactory, OverallSignatureStatus, PresentationTool, PresenterNotes, PrintColorMode, PrintHtmlDocumentOptions as PrintDocumentOptions, PrintOrientation, PrintSettings, PrintSlideRange, PrintWhat, PropertiesDraft, RecordWebmOptions, RemoteCursor, SanitizedPresence as RemotePresence, ReplaceResult, ResizeHandle, ResolvedFontVariant, ShareDefaults, ShareFormFields, SignatureStatusKind, SlideTransitionAnimations, StyleMap, TextWarpCssDef, TextWarpDef, TextWarpPathDef, TimerProgress, VideoPlanOptions, VideoSegmentPlan, ViewerTheme, ViewerThemeColors };
7585
+ export { AUDIENCE_HASH, AUDIENCE_NONCE_KEY, AccessibilityPanelComponent, AccessibilityService, AdvancedChartEditorComponent, AnimationAuthorPanelComponent, AnimationPanelComponent, AnimationPlaybackService, BroadcastDialogComponent, CURSOR_PALETTE, ChartAxisOptionsComponent, ChartAxisStyleOptionsComponent, ChartComboTypeOptionsComponent, ChartDataEditorComponent, ChartDataLabelOptionsComponent, ChartDatapointOptionsComponent, ChartDisplayOptionsComponent, ChartErrorBarOptionsComponent, ChartMarkerOptionsComponent, ChartRendererComponent, ChartTrendlineOptionsComponent, CollaborationCursorsComponent, CollaborationService, CommentsPanelComponent, CommentsService, ConnectorRendererComponent, ConnectorTextOverlayComponent, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_FILL_COLOR, DEFAULT_PRINT_SETTINGS, DEFAULT_SLIDE_BACKGROUND, DEFAULT_STROKE_COLOR, DEFAULT_TEXT_COLOR, EMBEDDED_FONTS_STYLE_ID, EditorContextMenuComponent, EditorHistory, EditorStateService, EditorToolbarComponent, EffectsPanelComponent, ElementRendererComponent, EmbeddedFontsService, EquationRendererComponent, ExportService, FindBarComponent, FindReplaceBarComponent, GradientPickerComponent, HANDOUT_OPTIONS, HyperlinkDialogComponent, InkRendererComponent, InspectorPanelComponent, IsMobileService, LoadContentService, MobileBottomBarComponent, MobileMenuSheetComponent, MobilePresenterViewComponent, MobileSheetComponent, MobileSlidesSheetComponent, MobileToolbarComponent, ModalDialogComponent, Model3DRendererComponent, NotesPanelComponent, OleRendererComponent, PRESENTER_CHANNEL_NAME, PRESENTER_MSG_ORIGIN, PowerPointViewerComponent, PresentationAnnotationOverlayComponent, PresentationAnnotationsService, PresentationOverlayComponent, PresentationSubtitleBarComponent, PresentationTransitionOverlayComponent, PresenterViewComponent, PresenterWindowService, PrintDialogComponent, PrintService, PrintSettingsPanelComponent, PropertiesDialogComponent, RESIZE_HANDLES, SEVERITY_GROUPS, SEVERITY_LABELS, SLIDE_TRANSITION_KEYFRAMES, SVG_WARP_PRESETS, ShareDialogComponent, SignaturesPanelComponent, SignaturesService, SlideCanvasComponent, SlideSorterOverlayComponent, SlidesPanelComponent, SmartArtRendererComponent, StatusBarComponent, TYPE_LABELS, TableDataEditorComponent, TableRendererComponent, TextAdvancedPanelComponent, VIEWER_THEME, WEBM_MIME_CANDIDATES, ZoomRendererComponent, addCommentToList, advanceStep, applyFindReplacements, applyFormatToElement, applyMove, applyResize, assignUserColor, bringForward, bringToFront, buildBroadcastConfig, buildBroadcastViewerUrl, buildClearHyperlinkPatch, buildClickGroups, buildCollaborationConfig, buildCssGradientFromShapeStyle, buildDuotoneFilter, buildDuotoneFilterId, buildEmbeddedFontStyles, buildFontFaceRule, buildHyperlinkPatch, buildPatternFillCss, buildPrintHtmlDocument as buildPrintDocument, buildPropertiesPatch, buildShareUrl, bulletIndentPx, canStartBroadcast, canStartShare, canUseClipboard, clampCursorPosition, clampGifDimensions, clampNotesFontSize, clampStep, clearAudienceContent, cn, collectAccessibilityIssues, collectElementText, collectSlideText, computeHandoutLayout, computeIsMobile, computeIsTablet, computePageCount, computeSlideIndices, computeTimerProgress, convertOmmlToMathMl, copyFormatFromElement, countAccessibilityIssues, defaultCssVars, defaultRadius, defaultThemeColors, deleteElementsByIds, derivePresenceList, duplicateElementById, durationOf, encodeGif, estimatePageCount, findInSlides, fontMimeForFormat, formatAutoNumber, formatCursorLabel, formatElapsed, formatPropertyDate, formatTime, fpsToFrameIntervalMs, generateBroadcastRoomId, generateCommentId, getContainerStyle, getDuotoneFilterDef, getImageSrc, getPatternSvg, getResolvedShapeClipPath, getResolvedShapeClipPathFor, getShapeFillStrokeStyle, getSlideBackgroundStyle, getSlideTransitionAnimations, getTextBlockStyle, getTextWarp, getWarpCategory, getWarpPath, groupIssuesBySeverity, hasCopyableFormat, hasExistingLink, headerLabel, isAudienceTab, isInjectableUrl, isPpactionUrl, isPresenterMessage, isSigned, isUrlSafe, isValidRoomId, issueTrackKey, issueTypeLabel, loadAudienceContent, moveElementBy, msToFrameDelayCs, normalizeFontFormat, normalizeSlidesPerPage, ommlToMathml, overallStatus, parseAudienceNonce, pendingElementStyles, pickSupportedMimeType, planGifFrames, planVideoSegments, presenceToCursors, provideViewerTheme, recordWebm, removeCommentFromList, renderToCanvas, replaceInSlides, replaceMatch, resizeElement, resolveFontVariant, resolveHyperlinkHref, resolveParagraphBullet, resolvePresenterNotes, resolveTransitionDuration, revealedElementStyles, routeOrthogonalConnector, sanitizeColor, sanitizeSlideIndex, sanitizeUserName, searchSlides, seedBroadcastFields, seedHyperlinkDraft, seedPropertiesDraft, seedShareFields, segmentFrameCount, sendBackward, sendToBack, setElementPosition, shouldUseSvgWarp, signatureCountLabel, signatureKey, signatureTimestamp, signerName, statusKind, statusLabel, storeAudienceContent, themeStyle, themeToCssVars, toggleCommentResolvedInList, updateElementById, validatePrintSettings, validateRoomId, waypointsToPathD, worstStatus };
7586
+ export type { AccessibilityIssueGroup, AnimationClickGroup, AnnotationStroke, Box, BroadcastConfig, BroadcastDefaults, CSSProperties, CanvasSize, ClassValue, CollaborationConfig, CollaborationRole, RouterRect as ConnectorObstacle, RouterPoint as ConnectorPoint, ConnectorRouting, CopiedFormat, DocumentProperties, DuotoneFilterDef, EmbeddedFontStyles, FindOptions, FindResult, GifFrame, GifFramePlan, GifPlanOptions, HandoutSlidesPerPage, HyperlinkDraft, NotesSegmentViewModel, ObjectUrlFactory, OverallSignatureStatus, PresentationTool, PresenterExitMessage, PresenterMessage, PresenterNotes, PresenterSlideChangeMessage, PrintColorMode, PrintHtmlDocumentOptions as PrintDocumentOptions, PrintOrientation, PrintSettings, PrintSlideRange, PrintWhat, PropertiesDraft, RecordWebmOptions, RemoteCursor, SanitizedPresence as RemotePresence, ReplaceResult, ResizeHandle, ResolvedFontVariant, ShareDefaults, ShareFormFields, SignatureStatusKind, SlideTransitionAnimations, StyleMap, TextWarpCssDef, TextWarpDef, TextWarpPathDef, TimerProgress, VideoPlanOptions, VideoSegmentPlan, ViewerTheme, ViewerThemeColors };