pptx-angular-viewer 1.11.0 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pptx-angular-viewer",
3
- "version": "1.11.0",
3
+ "version": "1.12.0",
4
4
  "description": "Angular PowerPoint viewer and editor component: render, edit, and export PPTX slides in the browser.",
5
5
  "keywords": [
6
6
  "angular",
@@ -46,7 +46,7 @@
46
46
  "html2canvas-pro": "^2.0.4",
47
47
  "jspdf": "^4.2.1",
48
48
  "jszip": "^3.10.1",
49
- "pptx-viewer-core": "^1.2.4",
49
+ "pptx-viewer-core": "^1.2.5",
50
50
  "tslib": "^2.8.1"
51
51
  },
52
52
  "peerDependencies": {
@@ -111,6 +111,26 @@ declare function themeToCssVars(theme: ViewerTheme | undefined, omitDefaults?: b
111
111
  */
112
112
  declare function defaultCssVars(): Record<string, string>;
113
113
 
114
+ /**
115
+ * Built-in "vermilion" theme presets.
116
+ *
117
+ * These mirror the pptx-viewer brand used on the documentation site:
118
+ * a warm paper canvas in light mode, a dimmed presenter room in dark
119
+ * mode, and the vermilion accent in both. Pass one to the viewer's
120
+ * `theme` prop (React/Vue) or `provideViewerTheme` (Angular), or spread
121
+ * the color objects to derive your own variant.
122
+ */
123
+ /** Light "paper" palette: a projection screen in a bright room. */
124
+ declare const vermilionLightColors: ViewerThemeColors;
125
+ /** Dark "presenter" palette: the presenter room with the lights down. */
126
+ declare const vermilionDarkColors: ViewerThemeColors;
127
+ /** Shared border-radius for the vermilion presets (slightly sharper than the default). */
128
+ declare const vermilionRadius = "0.375rem";
129
+ /** Light vermilion theme, ready for the viewer's `theme` prop. */
130
+ declare const vermilionLightTheme: ViewerTheme;
131
+ /** Dark vermilion theme, ready for the viewer's `theme` prop. */
132
+ declare const vermilionDarkTheme: ViewerTheme;
133
+
114
134
  /**
115
135
  * Framework-agnostic public types shared by the viewer bindings.
116
136
  *
@@ -587,6 +607,42 @@ interface ChartOption<V> {
587
607
  * @module chart-view-model
588
608
  */
589
609
 
610
+ /** Min/max/span of a value axis. */
611
+ interface ValueRange {
612
+ min: number;
613
+ max: number;
614
+ span: number;
615
+ /** When true, the range is log-scaled (min/max are data-space power-of-base bounds, span is in log-space). */
616
+ logScale?: boolean;
617
+ /** Logarithmic base (e.g. 10, 2, Math.E). Only meaningful when logScale is true. */
618
+ logBase?: number;
619
+ }
620
+ /**
621
+ * Reference to an interactive chart sub-part, carried by the primitives that
622
+ * represent data marks (bars, dots, slices, series lines). Bindings use it to
623
+ * make marks clickable/draggable in edit mode and to sync selection with the
624
+ * chart inspector; primitives without a `part` stay purely decorative.
625
+ */
626
+ interface ChartPartRef {
627
+ /** 'dataPoint' targets one (series, category) cell; 'series' the whole series. */
628
+ role: 'dataPoint' | 'series';
629
+ seriesIndex: number;
630
+ /** Category/point index. Absent when the primitive spans the whole series. */
631
+ pointIndex?: number;
632
+ }
633
+ /**
634
+ * Vertical drag-to-value context, present on cartesian view-models whose data
635
+ * marks can be dragged vertically to change their value (clustered bar, line,
636
+ * scatter, bubble). `secondarySeriesIndexes` lists series plotted against
637
+ * `secondaryRange` instead of `range`.
638
+ */
639
+ interface ChartValueDrag {
640
+ range: ValueRange;
641
+ secondaryRange?: ValueRange;
642
+ secondarySeriesIndexes?: number[];
643
+ plotTop: number;
644
+ plotBottom: number;
645
+ }
590
646
  interface SvgRect {
591
647
  kind: 'rect';
592
648
  x: number;
@@ -596,6 +652,7 @@ interface SvgRect {
596
652
  fill: string;
597
653
  rx?: number;
598
654
  opacity?: number;
655
+ part?: ChartPartRef;
599
656
  }
600
657
  interface SvgPath {
601
658
  kind: 'path';
@@ -604,6 +661,7 @@ interface SvgPath {
604
661
  stroke?: string;
605
662
  strokeWidth?: number;
606
663
  opacity?: number;
664
+ part?: ChartPartRef;
607
665
  }
608
666
  interface SvgPolyline {
609
667
  kind: 'polyline';
@@ -612,6 +670,7 @@ interface SvgPolyline {
612
670
  strokeWidth: number;
613
671
  fill: string;
614
672
  opacity?: number;
673
+ part?: ChartPartRef;
615
674
  }
616
675
  interface SvgCircle {
617
676
  kind: 'circle';
@@ -620,6 +679,7 @@ interface SvgCircle {
620
679
  r: number;
621
680
  fill: string;
622
681
  opacity?: number;
682
+ part?: ChartPartRef;
623
683
  }
624
684
  interface SvgLine {
625
685
  kind: 'line';
@@ -654,6 +714,7 @@ interface SvgPolygon {
654
714
  strokeWidth: number;
655
715
  opacity?: number;
656
716
  dashArray?: string;
717
+ part?: ChartPartRef;
657
718
  }
658
719
  interface SvgAreaGradient {
659
720
  kind: 'areaGradient';
@@ -700,6 +761,12 @@ interface ChartViewModel {
700
761
  * is set). Already appended to `primitives`; surfaced separately for projectors.
701
762
  */
702
763
  dataTable?: SvgPrimitive[];
764
+ /**
765
+ * Present when the chart's data marks support vertical drag-to-value editing
766
+ * (clustered bar / line / scatter / bubble). Absent for stacked, polar, and
767
+ * hierarchical kinds, where a vertical drag has no single-value meaning.
768
+ */
769
+ valueDrag?: ChartValueDrag;
703
770
  }
704
771
 
705
772
  /**
@@ -3000,7 +3067,6 @@ declare class EditorStateService {
3000
3067
  private zOrder;
3001
3068
  private commit;
3002
3069
  private syncHistory;
3003
- private clone;
3004
3070
  private newId;
3005
3071
  private idCounter;
3006
3072
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EditorStateService, never>;
@@ -3838,11 +3904,22 @@ declare class ViewerCustomShowsService {
3838
3904
  readonly activeId: _angular_core.WritableSignal<string | null>;
3839
3905
  /** Active-slide index of the host viewer (bound from the component). */
3840
3906
  private activeSlideIndex;
3841
- /** Wire the host's active-slide-index accessor (called once from the constructor). */
3842
- bind(activeSlideIndex: () => number): void;
3907
+ /**
3908
+ * The viewer's LIVE (edited) slides accessor, bound from the component. The
3909
+ * presentation overlay must reflect in-session edits (inserted media, moved
3910
+ * shapes, etc.), so it reads these rather than the pristine loaded deck
3911
+ * (`loader.slides()`), mirroring React/Vue where present mode shows the
3912
+ * working set. Defaults to the loaded slides until bound.
3913
+ */
3914
+ private liveSlides;
3915
+ /** Wire the host's active-slide-index + live-slides accessors (called once from the constructor). */
3916
+ bind(accessors: {
3917
+ activeSlideIndex: () => number;
3918
+ liveSlides: () => readonly PptxSlide[];
3919
+ }): void;
3843
3920
  /** Custom shows mapped to the core shape consumed by set-up-slide-show. */
3844
3921
  readonly pptxCustomShows: _angular_core.Signal<PptxCustomShow[]>;
3845
- /** Slides shown in presentation mode: the active custom show, else the full deck. */
3922
+ /** Slides shown in presentation mode: the active custom show, else the full (live) deck. */
3846
3923
  readonly presentationSlides: _angular_core.Signal<PptxSlide[]>;
3847
3924
  /** Start index into {@link presentationSlides}: first slide of a custom show, else the active slide. */
3848
3925
  readonly presentationStartIndex: _angular_core.Signal<number>;
@@ -4225,6 +4302,14 @@ declare class ViewerInspectorPanelService {
4225
4302
  readonly activePanel: _angular_core.WritableSignal<InspectorToolPanel | null>;
4226
4303
  /** True once the user swiped the inspector away on mobile (until reopened). */
4227
4304
  readonly mobileInspectorHidden: _angular_core.WritableSignal<boolean>;
4305
+ /**
4306
+ * True once the user has explicitly closed the format (element/slide)
4307
+ * panel via the ribbon toggle - independent of selection, mirroring
4308
+ * React's/Vue's own open/closed toggle state. Never affects the explicit
4309
+ * tool panels (comments/accessibility/signatures/selection), which show
4310
+ * regardless of this flag.
4311
+ */
4312
+ readonly formatPanelClosed: _angular_core.WritableSignal<boolean>;
4228
4313
  /**
4229
4314
  * Swipe-to-dismiss drag for the inspector host. The host docks in-flow below
4230
4315
  * the canvas on mobile (same keyboard-reachability reason as the notes
@@ -4243,6 +4328,12 @@ declare class ViewerInspectorPanelService {
4243
4328
  * `canEdit`.
4244
4329
  */
4245
4330
  readonly inspectorContent: _angular_core.Signal<InspectorContent>;
4331
+ /**
4332
+ * `inspectorContent`, but the format (element/slide) view collapses to
4333
+ * `null` once the user has explicitly closed it via the ribbon toggle.
4334
+ * Explicit tool panels (comments/accessibility/etc.) are untouched.
4335
+ */
4336
+ private readonly formatPanelContent;
4246
4337
  /**
4247
4338
  * Whether the right-docked inspector is showing the format panel (element or
4248
4339
  * slide properties). Drives the top-bar inspector-toggle active state.
@@ -4254,6 +4345,13 @@ declare class ViewerInspectorPanelService {
4254
4345
  readonly inspectorLabel: _angular_core.Signal<"" | "pptx.toolbar.comments" | "pptx.accessibility.title" | "pptx.viewer.digitalSignatures" | "pptx.selectionPane.title" | "pptx.viewer.elementProperties" | "pptx.viewer.slideProperties">;
4255
4346
  /** Toggle a right-docked tool panel (clicking the active one closes it). */
4256
4347
  togglePanel(panel: InspectorToolPanel): void;
4348
+ /**
4349
+ * Ribbon "toggle inspector" action: if a tool panel is active, return to
4350
+ * the format (element/slide) view; otherwise toggle the format view's
4351
+ * open/closed state, matching React's and Vue's independent open/close
4352
+ * toggle (closing/opening is not tied to selection changes).
4353
+ */
4354
+ toggleFormatPanel(): void;
4257
4355
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerInspectorPanelService, never>;
4258
4356
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ViewerInspectorPanelService>;
4259
4357
  }
@@ -4352,7 +4450,11 @@ declare class ViewerPresentationModeService {
4352
4450
  /** Wire the host accessors (called once from the component constructor). */
4353
4451
  bind(host: PresentationModeHost): void;
4354
4452
  private requireHost;
4355
- /** Open the fullscreen presentation overlay from the current slide. */
4453
+ /**
4454
+ * Open the presentation overlay from the current slide. The overlay itself
4455
+ * (`PresentationOverlayComponent`) requests real browser fullscreen once it
4456
+ * mounts as a result of `presenting` flipping true.
4457
+ */
4356
4458
  present(): void;
4357
4459
  /**
4358
4460
  * Map a presentation-overlay index back to the full-deck `activeSlideIndex`.
@@ -4922,6 +5024,12 @@ declare class SlideCanvasComponent {
4922
5024
  * e2e selectors from matching multiple elements.
4923
5025
  */
4924
5026
  readonly interactive: _angular_core.InputSignal<boolean>;
5027
+ /**
5028
+ * True only for the live presentation stage: slide-content media autoplays.
5029
+ * Left false for thumbnails, the sorter and the editor canvas so their media
5030
+ * stays quiet (the template layer never autoplays regardless).
5031
+ */
5032
+ readonly presenting: _angular_core.InputSignal<boolean>;
4925
5033
  /** Ids of currently-selected elements (drawn with a selection outline). */
4926
5034
  readonly selectedIds: _angular_core.InputSignal<readonly string[]>;
4927
5035
  /** Id of the element currently being text-edited inline (or null). */
@@ -5135,7 +5243,7 @@ declare class SlideCanvasComponent {
5135
5243
  readonly vRulerTicks: _angular_core.Signal<readonly RulerTick[]>;
5136
5244
  readonly stageStyle: _angular_core.Signal<StyleMap>;
5137
5245
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlideCanvasComponent, never>;
5138
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlideCanvasComponent, "pptx-slide-canvas", never, { "slide": { "alias": "slide"; "required": false; "isSignal": true; }; "canvasSize": { "alias": "canvasSize"; "required": true; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "zoom": { "alias": "zoom"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showRulers": { "alias": "showRulers"; "required": false; "isSignal": true; }; "showGuides": { "alias": "showGuides"; "required": false; "isSignal": true; }; "snapToGrid": { "alias": "snapToGrid"; "required": false; "isSignal": true; }; "snapToGuides": { "alias": "snapToGuides"; "required": false; "isSignal": true; }; "autoFit": { "alias": "autoFit"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "selectedIds": { "alias": "selectedIds"; "required": false; "isSignal": true; }; "editingId": { "alias": "editingId"; "required": false; "isSignal": true; }; "editTemplateMode": { "alias": "editTemplateMode"; "required": false; "isSignal": true; }; "templateElements": { "alias": "templateElements"; "required": false; "isSignal": true; }; "drawTool": { "alias": "drawTool"; "required": false; "isSignal": true; }; "drawColor": { "alias": "drawColor"; "required": false; "isSignal": true; }; "drawWidth": { "alias": "drawWidth"; "required": false; "isSignal": true; }; }, { "elementSelect": "elementSelect"; "backgroundClick": "backgroundClick"; "transformStart": "transformStart"; "transformUpdate": "transformUpdate"; "contextMenu": "contextMenu"; "textEditStart": "textEditStart"; "textCommit": "textCommit"; "textCancel": "textCancel"; "textFormat": "textFormat"; "rotateUpdate": "rotateUpdate"; "marqueeSelect": "marqueeSelect"; "inkStrokeComplete": "inkStrokeComplete"; "eraserHit": "eraserHit"; "cellCommit": "cellCommit"; "tableChange": "tableChange"; }, never, never, true, never>;
5246
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlideCanvasComponent, "pptx-slide-canvas", never, { "slide": { "alias": "slide"; "required": false; "isSignal": true; }; "canvasSize": { "alias": "canvasSize"; "required": true; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "zoom": { "alias": "zoom"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showRulers": { "alias": "showRulers"; "required": false; "isSignal": true; }; "showGuides": { "alias": "showGuides"; "required": false; "isSignal": true; }; "snapToGrid": { "alias": "snapToGrid"; "required": false; "isSignal": true; }; "snapToGuides": { "alias": "snapToGuides"; "required": false; "isSignal": true; }; "autoFit": { "alias": "autoFit"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "presenting": { "alias": "presenting"; "required": false; "isSignal": true; }; "selectedIds": { "alias": "selectedIds"; "required": false; "isSignal": true; }; "editingId": { "alias": "editingId"; "required": false; "isSignal": true; }; "editTemplateMode": { "alias": "editTemplateMode"; "required": false; "isSignal": true; }; "templateElements": { "alias": "templateElements"; "required": false; "isSignal": true; }; "drawTool": { "alias": "drawTool"; "required": false; "isSignal": true; }; "drawColor": { "alias": "drawColor"; "required": false; "isSignal": true; }; "drawWidth": { "alias": "drawWidth"; "required": false; "isSignal": true; }; }, { "elementSelect": "elementSelect"; "backgroundClick": "backgroundClick"; "transformStart": "transformStart"; "transformUpdate": "transformUpdate"; "contextMenu": "contextMenu"; "textEditStart": "textEditStart"; "textCommit": "textCommit"; "textCancel": "textCancel"; "textFormat": "textFormat"; "rotateUpdate": "rotateUpdate"; "marqueeSelect": "marqueeSelect"; "inkStrokeComplete": "inkStrokeComplete"; "eraserHit": "eraserHit"; "cellCommit": "cellCommit"; "tableChange": "tableChange"; }, never, never, true, never>;
5139
5247
  }
5140
5248
 
5141
5249
  /**
@@ -5331,6 +5439,12 @@ declare class ElementRendererComponent {
5331
5439
  * separate lightweight renderer).
5332
5440
  */
5333
5441
  readonly interactive: _angular_core.InputSignal<boolean>;
5442
+ /**
5443
+ * True only on the live presentation stage; threaded to the media renderer so
5444
+ * a slide's media autoplays when the slide becomes active (and to group
5445
+ * children so nested media autoplays too). False everywhere else.
5446
+ */
5447
+ readonly presenting: _angular_core.InputSignal<boolean>;
5334
5448
  /** Whether inline editing (e.g. table-cell text input) is enabled. */
5335
5449
  readonly editable: _angular_core.InputSignal<boolean>;
5336
5450
  /**
@@ -5395,7 +5509,7 @@ declare class ElementRendererComponent {
5395
5509
  readonly hasText: _angular_core.Signal<boolean>;
5396
5510
  readonly placeholderLabel: _angular_core.Signal<string>;
5397
5511
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ElementRendererComponent, never>;
5398
- 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; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "fieldContext": { "alias": "fieldContext"; "required": false; "isSignal": true; }; "editTemplateMode": { "alias": "editTemplateMode"; "required": false; "isSignal": true; }; }, { "cellCommit": "cellCommit"; "tableChange": "tableChange"; }, never, never, true, never>;
5512
+ 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; }; "presenting": { "alias": "presenting"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "fieldContext": { "alias": "fieldContext"; "required": false; "isSignal": true; }; "editTemplateMode": { "alias": "editTemplateMode"; "required": false; "isSignal": true; }; }, { "cellCommit": "cellCommit"; "tableChange": "tableChange"; }, never, never, true, never>;
5399
5513
  }
5400
5514
 
5401
5515
  /**
@@ -5877,6 +5991,13 @@ declare class OleRendererComponent {
5877
5991
  * when no rows are available.
5878
5992
  */
5879
5993
  readonly infoTitle: _angular_core.Signal<string>;
5994
+ /**
5995
+ * Open the recovered embedded payload in a new browser tab. Routes through
5996
+ * the shared {@link openUrlInNewTab} helper, which converts the `data:` URL to
5997
+ * a Blob object URL first: browsers silently refuse to navigate a new
5998
+ * top-level tab straight to a `data:` URL.
5999
+ */
6000
+ openEmbedded(): void;
5880
6001
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<OleRendererComponent, never>;
5881
6002
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<OleRendererComponent, "pptx-ole-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5882
6003
  }
@@ -6272,6 +6393,17 @@ declare class PresentationAnnotationsService {
6272
6393
  * Horizontal swipe → left → next, right → previous
6273
6394
  *
6274
6395
  * Click on the overlay body → advance to next visible slide.
6396
+ *
6397
+ * Fullscreen (mirrors the React `usePresentationMode` / Vue `PresentationMode.vue`
6398
+ * behavior, on top of the CSS-fixed full-viewport overlay above): the real
6399
+ * Fullscreen API is requested on this component's root element once it mounts,
6400
+ * and released again on destroy, so the browser chrome (address bar, etc.) gets
6401
+ * out of the way on mobile the same way it does for React/Vue. A
6402
+ * `fullscreenchange` listener syncs back to `closed` when fullscreen is exited
6403
+ * from outside this component's own close/Escape handling (browser UI, the
6404
+ * Android back gesture, etc.). Environments without Fullscreen API support
6405
+ * (iOS Safari's partial support, `jsdom` in tests) degrade silently to the
6406
+ * plain CSS overlay.
6275
6407
  */
6276
6408
  declare class PresentationOverlayComponent implements OnInit {
6277
6409
  readonly slides: _angular_core.InputSignal<PptxSlide[]>;
@@ -6309,8 +6441,19 @@ declare class PresentationOverlayComponent implements OnInit {
6309
6441
  protected readonly subtitlesVisible: _angular_core.WritableSignal<boolean>;
6310
6442
  /** The slide stage root; animation styles are applied to its elements. */
6311
6443
  private readonly stageRef;
6312
- /** The overlay root; the shared touch-gesture recogniser attaches here. */
6444
+ /**
6445
+ * The overlay root; the shared touch-gesture recogniser attaches here, and
6446
+ * it is the element the real Fullscreen API is requested on (see
6447
+ * {@link setupFullscreen}).
6448
+ */
6313
6449
  private readonly rootRef;
6450
+ /**
6451
+ * Guards against handling the same exit twice: e.g. Escape both reaches our
6452
+ * own `keydown` handler AND causes the browser to natively exit fullscreen
6453
+ * (firing `fullscreenchange`), or the close button's `click` and `touchend`
6454
+ * both fire for one tap.
6455
+ */
6456
+ private closing;
6314
6457
  constructor();
6315
6458
  /**
6316
6459
  * Imperatively apply animation reveal / pending CSS to the slide's element
@@ -6349,6 +6492,24 @@ declare class PresentationOverlayComponent implements OnInit {
6349
6492
  * (afterNextRender) and is torn down on destroy.
6350
6493
  */
6351
6494
  private setupTouchGestures;
6495
+ /**
6496
+ * Request real fullscreen on the overlay root once it mounts, and release
6497
+ * it again when the overlay is destroyed (`presenting` flips back to
6498
+ * false, closing this `@if` block). Mirrors Vue's `onMounted` /
6499
+ * `onBeforeUnmount` pair on its own overlay root; feature-detected so
6500
+ * unsupported environments just keep the CSS overlay.
6501
+ */
6502
+ private setupFullscreen;
6503
+ /**
6504
+ * Sync back to `closed` when fullscreen is exited from OUTSIDE this
6505
+ * component's own close/Escape handling: the browser's native Esc handling
6506
+ * can beat (or replace) our `keydown` listener, and mobile back
6507
+ * gestures/browser-UI exits never reach it at all. Without this, `presenting`
6508
+ * would stay stuck true while the app has silently fallen back to the plain
6509
+ * CSS overlay. `emitClosed()` is itself guarded against double-firing, so it
6510
+ * is safe if our own close flow *also* triggers this event.
6511
+ */
6512
+ protected onFullscreenChange(): void;
6352
6513
  ngOnInit(): void;
6353
6514
  onWindowResize(): void;
6354
6515
  private snapViewport;
@@ -8399,7 +8560,7 @@ declare class SetUpSlideShowDialogComponent {
8399
8560
  /** Working copy of the properties; seeded from `properties` on open. */
8400
8561
  readonly draft: _angular_core.WritableSignal<PptxPresentationProperties>;
8401
8562
  readonly showType: _angular_core.Signal<"presented" | "browsed" | "kiosk">;
8402
- readonly showSlidesMode: _angular_core.Signal<"all" | "customShow" | "range">;
8563
+ readonly showSlidesMode: _angular_core.Signal<"range" | "all" | "customShow">;
8403
8564
  constructor();
8404
8565
  /** Merge a partial patch into the current draft. */
8405
8566
  update(patch: Partial<PptxPresentationProperties>): void;
@@ -8423,7 +8584,7 @@ declare class ShowSlidesFieldsetComponent {
8423
8584
  /** Current slide-show properties draft. */
8424
8585
  readonly draft: _angular_core.InputSignal<PptxPresentationProperties>;
8425
8586
  /** Derived active mode (falls back to 'all' upstream). */
8426
- readonly showSlidesMode: _angular_core.InputSignal<"all" | "customShow" | "range">;
8587
+ readonly showSlidesMode: _angular_core.InputSignal<"range" | "all" | "customShow">;
8427
8588
  /** Total number of slides in the deck (clamps the range inputs). */
8428
8589
  readonly slideCount: _angular_core.InputSignal<number>;
8429
8590
  /** Named custom shows defined by the deck (may be empty). */
@@ -9394,5 +9555,5 @@ type TranslationKey = keyof typeof translationsEn;
9394
9555
  */
9395
9556
  declare function keyToLabel(key: string): string;
9396
9557
 
9397
- 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, ComparePanelComponent, 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, TEMPLATES as EQUATION_TEMPLATES, EditorContextMenuComponent, EditorHistory, EditorStateService, EditorToolbarComponent, EffectsPanelComponent, ElementRendererComponent, EmbeddedFontsService, EncryptedFileDialogComponent, EquationEditorDialogComponent, EquationRendererComponent, EquationTemplateGalleryComponent, ExportService, FindBarComponent, FindReplaceBarComponent, FontEmbeddingListComponent, FontEmbeddingPanelComponent, GradientPickerComponent, HANDOUT_OPTIONS, HyperlinkDialogComponent, InkRendererComponent, InspectorPanelComponent, IsMobileService, KeepAnnotationsDialogComponent, LoadContentService, MobileBottomBarComponent, MobileMenuSheetComponent, MobilePresenterViewComponent, MobileSheetComponent, MobileSlidesSheetComponent, MobileToolbarComponent, ModalDialogComponent, Model3DRendererComponent, NotesPanelComponent, OleRendererComponent, PRESENTER_CHANNEL_NAME, PRESENTER_MSG_ORIGIN, PasswordProtectionDialogComponent, PasswordStrengthMeterComponent, PowerPointViewerComponent, PresentationAnnotationOverlayComponent, PresentationAnnotationsService, PresentationOverlayComponent, PresentationSubtitleBarComponent, PresentationTransitionOverlayComponent, PresenterViewComponent, PresenterWindowService, PrintDialogComponent, PrintService, PrintSettingsPanelComponent, PropertiesDialogComponent, RESIZE_HANDLES, SEVERITY_GROUPS, SEVERITY_LABELS, SLIDE_TRANSITION_KEYFRAMES, SVG_WARP_PRESETS, SetUpSlideShowDialogComponent, ShareDialogComponent, ShortcutPanelComponent, ShowOptionsFieldsetComponent, ShowSlidesFieldsetComponent, SignatureStrippedDialogComponent, SignaturesPanelComponent, SignaturesService, SlideCanvasComponent, SlideDiffChangesComponent, SlideDiffRowComponent, SlideDiffThumbnailsComponent, SlideSorterOverlayComponent, SlidesPanelComponent, SmartArtRendererComponent, StatusBarComponent, TYPE_LABELS, TableCellAdvancedFillComponent, TableCellFormattingComponent, TableDataEditorComponent, TablePropertiesComponent, TableRendererComponent, TableResizeOverlayComponent, TableSelectionService, TextAdvancedPanelComponent, VIEWER_THEME, VersionHistoryPanelComponent, ViewerCompareService, ViewerDialogsService, ViewerExtraDialogsComponent, WEBM_MIME_CANDIDATES, ZoomRendererComponent, addCommentToList, advanceStep, annotationMapToInkInserts, applyAcceptedDiff, applyFindReplacements, applyFormatToElement, applyMove, applyResize, assignUserColor, bringForward, bringToFront, buildBroadcastConfig, buildBroadcastViewerUrl, buildClearHyperlinkPatch, buildClickGroups, buildCollaborationConfig, buildCssGradientFromShapeStyle, buildDuotoneFilter, buildDuotoneFilterId, buildEmbeddedFontStyles, buildEquationElement, buildEquationSegment, buildFontFaceRule, buildHyperlinkPatch, buildPatternFillCss, buildPrintHtmlDocument as buildPrintDocument, buildPropertiesPatch, buildShareUrl, bulletIndentPx, canStartBroadcast, canStartShare, canUseClipboard, changeCountLabel, changeIcon, checkFontAvailable, clampCursorPosition, clampGifDimensions, clampNotesFontSize, clampStep, clearAudienceContent, cn, collectAccessibilityIssues, collectElementText, collectSlideText, collectUsedFontFamilies, computeHandoutLayout, computeIsMobile, computeIsTablet, computePageCount, computeSlideIndices, computeTimerProgress, convertOmmlToMathMl, copyFormatFromElement, countAccessibilityIssues, countAnnotationStrokes, defaultCssVars, defaultRadius, defaultThemeColors, deleteElementsByIds, deleteVersion as deleteRecoveryVersion, derivePresenceList, duplicateElementById, durationOf, encodeGif, estimatePageCount, findInSlides, fontMimeForFormat, formatAutoNumber, formatCursorLabel, formatElapsed, formatFileSize, formatPropertyDate, formatTime, fpsToFrameIntervalMs, generateBroadcastRoomId, generateCommentId, getContainerStyle, getDuotoneFilterDef, getImageSrc, getPasswordStrength, getPatternSvg, getVersions as getRecoveryVersions, getResolvedShapeClipPath, getResolvedShapeClipPathFor, getShapeFillStrokeStyle, getSlideBackgroundStyle, getSlideTransitionAnimations, getTextBlockStyle, getTextWarp, getWarpCategory, getWarpPath, groupIssuesBySeverity, hasCopyableFormat, hasExistingLink, headerLabel, isAudienceTab, isInjectableUrl, isPpactionUrl, isPresenterMessage, isSigned, isUrlSafe, isValidRoomId, issueTrackKey, issueTypeLabel, keyToLabel, latexToMathml, 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, scanAvailableFonts, searchSlides, seedBroadcastFields, seedHyperlinkDraft, seedPropertiesDraft, seedShareFields, segmentFrameCount, sendBackward, sendToBack, setElementPosition, shouldUseSvgWarp, signatureCountLabel, signatureKey, signatureTimestamp, signerName, statusLabel as slideDiffStatusLabel, slideNumberOf, statusKind, statusLabel$1 as statusLabel, storeAudienceContent, themeStyle, themeToCssVars, toggleCommentResolvedInList, translationsEn, updateElementById, validatePassword, validatePrintSettings, validateRoomId, waypointsToPathD, worstStatus };
9558
+ 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, ComparePanelComponent, 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, TEMPLATES as EQUATION_TEMPLATES, EditorContextMenuComponent, EditorHistory, EditorStateService, EditorToolbarComponent, EffectsPanelComponent, ElementRendererComponent, EmbeddedFontsService, EncryptedFileDialogComponent, EquationEditorDialogComponent, EquationRendererComponent, EquationTemplateGalleryComponent, ExportService, FindBarComponent, FindReplaceBarComponent, FontEmbeddingListComponent, FontEmbeddingPanelComponent, GradientPickerComponent, HANDOUT_OPTIONS, HyperlinkDialogComponent, InkRendererComponent, InspectorPanelComponent, IsMobileService, KeepAnnotationsDialogComponent, LoadContentService, MobileBottomBarComponent, MobileMenuSheetComponent, MobilePresenterViewComponent, MobileSheetComponent, MobileSlidesSheetComponent, MobileToolbarComponent, ModalDialogComponent, Model3DRendererComponent, NotesPanelComponent, OleRendererComponent, PRESENTER_CHANNEL_NAME, PRESENTER_MSG_ORIGIN, PasswordProtectionDialogComponent, PasswordStrengthMeterComponent, PowerPointViewerComponent, PresentationAnnotationOverlayComponent, PresentationAnnotationsService, PresentationOverlayComponent, PresentationSubtitleBarComponent, PresentationTransitionOverlayComponent, PresenterViewComponent, PresenterWindowService, PrintDialogComponent, PrintService, PrintSettingsPanelComponent, PropertiesDialogComponent, RESIZE_HANDLES, SEVERITY_GROUPS, SEVERITY_LABELS, SLIDE_TRANSITION_KEYFRAMES, SVG_WARP_PRESETS, SetUpSlideShowDialogComponent, ShareDialogComponent, ShortcutPanelComponent, ShowOptionsFieldsetComponent, ShowSlidesFieldsetComponent, SignatureStrippedDialogComponent, SignaturesPanelComponent, SignaturesService, SlideCanvasComponent, SlideDiffChangesComponent, SlideDiffRowComponent, SlideDiffThumbnailsComponent, SlideSorterOverlayComponent, SlidesPanelComponent, SmartArtRendererComponent, StatusBarComponent, TYPE_LABELS, TableCellAdvancedFillComponent, TableCellFormattingComponent, TableDataEditorComponent, TablePropertiesComponent, TableRendererComponent, TableResizeOverlayComponent, TableSelectionService, TextAdvancedPanelComponent, VIEWER_THEME, VersionHistoryPanelComponent, ViewerCompareService, ViewerDialogsService, ViewerExtraDialogsComponent, WEBM_MIME_CANDIDATES, ZoomRendererComponent, addCommentToList, advanceStep, annotationMapToInkInserts, applyAcceptedDiff, applyFindReplacements, applyFormatToElement, applyMove, applyResize, assignUserColor, bringForward, bringToFront, buildBroadcastConfig, buildBroadcastViewerUrl, buildClearHyperlinkPatch, buildClickGroups, buildCollaborationConfig, buildCssGradientFromShapeStyle, buildDuotoneFilter, buildDuotoneFilterId, buildEmbeddedFontStyles, buildEquationElement, buildEquationSegment, buildFontFaceRule, buildHyperlinkPatch, buildPatternFillCss, buildPrintHtmlDocument as buildPrintDocument, buildPropertiesPatch, buildShareUrl, bulletIndentPx, canStartBroadcast, canStartShare, canUseClipboard, changeCountLabel, changeIcon, checkFontAvailable, clampCursorPosition, clampGifDimensions, clampNotesFontSize, clampStep, clearAudienceContent, cn, collectAccessibilityIssues, collectElementText, collectSlideText, collectUsedFontFamilies, computeHandoutLayout, computeIsMobile, computeIsTablet, computePageCount, computeSlideIndices, computeTimerProgress, convertOmmlToMathMl, copyFormatFromElement, countAccessibilityIssues, countAnnotationStrokes, defaultCssVars, defaultRadius, defaultThemeColors, deleteElementsByIds, deleteVersion as deleteRecoveryVersion, derivePresenceList, duplicateElementById, durationOf, encodeGif, estimatePageCount, findInSlides, fontMimeForFormat, formatAutoNumber, formatCursorLabel, formatElapsed, formatFileSize, formatPropertyDate, formatTime, fpsToFrameIntervalMs, generateBroadcastRoomId, generateCommentId, getContainerStyle, getDuotoneFilterDef, getImageSrc, getPasswordStrength, getPatternSvg, getVersions as getRecoveryVersions, getResolvedShapeClipPath, getResolvedShapeClipPathFor, getShapeFillStrokeStyle, getSlideBackgroundStyle, getSlideTransitionAnimations, getTextBlockStyle, getTextWarp, getWarpCategory, getWarpPath, groupIssuesBySeverity, hasCopyableFormat, hasExistingLink, headerLabel, isAudienceTab, isInjectableUrl, isPpactionUrl, isPresenterMessage, isSigned, isUrlSafe, isValidRoomId, issueTrackKey, issueTypeLabel, keyToLabel, latexToMathml, 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, scanAvailableFonts, searchSlides, seedBroadcastFields, seedHyperlinkDraft, seedPropertiesDraft, seedShareFields, segmentFrameCount, sendBackward, sendToBack, setElementPosition, shouldUseSvgWarp, signatureCountLabel, signatureKey, signatureTimestamp, signerName, statusLabel as slideDiffStatusLabel, slideNumberOf, statusKind, statusLabel$1 as statusLabel, storeAudienceContent, themeStyle, themeToCssVars, toggleCommentResolvedInList, translationsEn, updateElementById, validatePassword, validatePrintSettings, validateRoomId, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, waypointsToPathD, worstStatus };
9398
9559
  export type { AccessibilityIssueGroup, AnimationClickGroup, AnnotationInkInsert, AnnotationStroke, Box, BroadcastConfig, BroadcastDefaults, CSSProperties, CanvasSize, ClassValue, CollaborationConfig, CollaborationRole, RouterRect as ConnectorObstacle, RouterPoint as ConnectorPoint, ConnectorRouting, CopiedFormat, DocumentProperties, DuotoneFilterDef, EmbeddedFontStyles, EquationTemplate, FindOptions, FindResult, GifFrame, GifFramePlan, GifPlanOptions, HandoutSlidesPerPage, HyperlinkDraft, NotesSegmentViewModel, ObjectUrlFactory, OverallSignatureStatus, PowerPointViewerAPI, PresentationTool, PresenterExitMessage, PresenterMessage, PresenterNotes, PresenterSlideChangeMessage, PrintColorMode, PrintHtmlDocumentOptions as PrintDocumentOptions, PrintOrientation, PrintSettings, PrintSlideRange, PrintWhat, PropertiesDraft, RecordWebmOptions, RecoveryVersion, RemoteCursor, SanitizedPresence as RemotePresence, ReplaceResult, ResizeHandle, ResolvedFontVariant, ShareDefaults, ShareFormFields, SignatureStatusKind, SlideTransitionAnimations, StyleMap, TableCellSelection, TextWarpCssDef, TextWarpDef, TextWarpPathDef, TimerProgress, TranslationKey, VideoPlanOptions, VideoSegmentPlan, ViewerMode, ViewerTheme, ViewerThemeColors };