pptx-angular-viewer 1.17.1 → 1.26.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,8 +1,8 @@
1
- import * as _angular_core from '@angular/core';
2
- import { Signal, WritableSignal, OnDestroy, OnInit, OnChanges, SimpleChanges, InjectionToken, Provider } from '@angular/core';
3
1
  import * as pptx_viewer_core from 'pptx-viewer-core';
4
- import { PptxSlide, PptxElement, ShapeStyle, PptxTextWarpPreset, XmlObject, PptxChartSeries, PptxChartData, PptxElementAnimation, PptxAnimationPreset, PptxAnimationDirection, PptxAnimationRepeatMode, PptxAnimationSequence, PptxAnimationTimingCurve, PptxAnimationTrigger, TablePptxElement, OlePptxElement, TextSegment, TextStyle, PptxTransitionType, SmartArtColorScheme, PptxSmartArtChrome, PptxSmartArtDrawingShape, SmartArtStyle, PptxSmartArtData, PptxEmbeddedFont, SmartArtLayout, AccessibilityIssueSeverity, AccessibilityIssue, AccessibilityIssueType, AccessibilityCheckOptions, InkPptxElement, PptxComment, PptxChartType, PptxTheme, PptxSlideMaster, PptxCoreProperties, PptxCustomProperty, PptxHeaderFooter, ParsedSignature, PptxTableCell, PptxTableCellStyle, PptxTableRow, PptxTableData, PptxCustomShow, PptxPresentationProperties, PptxThemePreset, Model3DPptxElement, ZoomPptxElement, PptxSlideTransition, ChartPptxElement, SmartArtPptxElement, PptxChartDataLabelOptions, PptxChartAxisType, PptxChartAxisFormatting, PptxChartDataPoint, PptxChartTrendline, PptxChartErrBars, SignatureStatus, ChartAxisEdit, ChartDataPointLabelEdit, PptxChartLegendPosition, PptxChartStyle, ChartAxisTitleStyleEdit, ChartGridlineStyleEdit, PptxChartMarkerSymbol, PptxSmartArtNode, SmartArtLayoutType, PptxSmartArtNodeStyle, MediaCaptionTrack, MediaPptxElement, PptxMediaType } from 'pptx-viewer-core';
2
+ import { PptxSlide, PptxElement, ShapeStyle, PptxTextWarpPreset, XmlObject, PptxChartSeries, PptxChartData, PptxElementAnimation, PptxAnimationPreset, PptxAnimationDirection, PptxAnimationRepeatMode, PptxAnimationSequence, PptxAnimationTimingCurve, PptxAnimationTrigger, TablePptxElement, PptxSection, OlePptxElement, TextSegment, TextStyle, PptxTransitionType, SmartArtColorScheme, PptxSmartArtChrome, PptxSmartArtDrawingShape, SmartArtStyle, PptxSmartArtData, PptxEmbeddedFont, SmartArtLayout, AccessibilityIssueSeverity, AccessibilityIssue, AccessibilityIssueType, AccessibilityCheckOptions, InkPptxElement, PptxComment, PptxChartType, PptxHeaderFooter, PptxTheme, PptxSlideMaster, PptxNotesMaster, PptxHandoutMaster, PptxPresentationProperties, PptxCoreProperties, PptxCustomProperty, ParsedSignature, PptxSaveFormat, PptxTableCell, PptxTableCellStyle, PptxTableRow, PptxTableData, PptxCustomShow, PptxThemePreset, PptxThemeColorScheme, PptxThemeFontScheme, MasterViewTab, Model3DPptxElement, ZoomPptxElement, PptxSlideTransition, ChartPptxElement, MediaPptxElement, SmartArtPptxElement, PptxChartDataLabelOptions, PptxChartAxisType, PptxChartAxisFormatting, PptxChartDataPoint, PptxChartTrendline, PptxChartErrBars, SvgExportOptions, PptxData, SignatureStatus, ElementActionType, ElementAction, PptxImageEffects, MediaBookmark, ColorMapAliasKey, ChartAxisEdit, ChartDataPointLabelEdit, PptxChartLegendPosition, PptxChartStyle, ChartAxisTitleStyleEdit, ChartGridlineStyleEdit, PptxChartMarkerSymbol, PptxSmartArtNode, SmartArtLayoutType, PptxSmartArtNodeStyle, MediaCaptionTrack, PptxMediaType } from 'pptx-viewer-core';
5
3
  export { SWITCHABLE_LAYOUT_TYPES, addSmartArtNode, addSmartArtNodeAsChild, chartDataAddCategory, chartDataAddSeries, chartDataChangeType, chartDataRemoveCategory, chartDataRemoveSeries, chartDataUpdatePoint, demoteSmartArtNode, promoteSmartArtNode, removeSmartArtNode, reorderSmartArtNode, switchSmartArtLayout, updateSmartArtNodeText } from 'pptx-viewer-core';
4
+ import * as _angular_core from '@angular/core';
5
+ import { Signal, WritableSignal, OnDestroy, OnInit, OnChanges, SimpleChanges, InjectionToken, Provider } from '@angular/core';
6
6
  import * as pptx_angular_viewer from 'pptx-angular-viewer';
7
7
  import { TranslateService } from '@ngx-translate/core';
8
8
  import { Options } from 'html2canvas-pro';
@@ -254,10 +254,12 @@ type CollaborationRole = 'owner' | 'collaborator' | 'viewer';
254
254
  * any signaling server, which makes this mode usable from static hosting.
255
255
  */
256
256
  type CollaborationTransport = 'websocket' | 'webrtc';
257
+ /** How the local user entered a collaboration session. */
258
+ type CollaborationSessionIntent = 'create' | 'join';
257
259
  /**
258
260
  * Real-time collaboration configuration.
259
261
  *
260
- * The same shape is accepted by the React, Vue, and Angular bindings.
262
+ * The same shape is accepted by every framework binding.
261
263
  */
262
264
  interface CollaborationConfig {
263
265
  /** Unique identifier for the collaboration room (alphanumeric, hyphens, underscores). */
@@ -285,6 +287,13 @@ interface CollaborationConfig {
285
287
  authToken?: string;
286
288
  /** Role in the session; defaults to `'collaborator'`. */
287
289
  role?: CollaborationRole;
290
+ /**
291
+ * Whether this client created the room or joined an existing room. Providers
292
+ * do not use this value, but hosts can use it to avoid publishing local file
293
+ * bytes when handling a join request. Omitted values retain the legacy
294
+ * create-session behaviour.
295
+ */
296
+ sessionIntent?: CollaborationSessionIntent;
288
297
  /**
289
298
  * Elected-writer write-back callback (Area 3 of the C3 hardening plan).
290
299
  *
@@ -442,6 +451,44 @@ declare function buildPatternFillCss(style: ShapeStyle | undefined): {
442
451
  /** A neutral CSS map (framework `CSSProperties` are structurally compatible). */
443
452
  type CssStyleMap = Record<string, string | number>;
444
453
 
454
+ /**
455
+ * Visual effects composable — pure CSS computation for OOXML shape/image effects.
456
+ *
457
+ * Mirrors the React `pptx-viewer` effect layer (shape-visual-style.ts +
458
+ * color-core.ts + effect-dag-filters.ts) without any React/Vue runtime
459
+ * dependency. Everything here is a pure function so it can be unit-tested
460
+ * without mounting a component, then wired into `element-style.ts` /
461
+ * `ElementRenderer.vue` by the integrator.
462
+ *
463
+ * It covers, for shapes/connectors/images:
464
+ * - **Outer shadow** → CSS `box-shadow`
465
+ * - **Inner shadow** → CSS `inset` `box-shadow`
466
+ * - **Multi-layer shadow** → comma-joined `box-shadow` (from `shadows[]`)
467
+ * - **Outer glow** → CSS `filter: drop-shadow(...)` (simple path) and
468
+ * optional layered `box-shadow` (high-fidelity path)
469
+ * - **Soft edges / blur** → CSS `filter: blur(...)`
470
+ * - **Reflection** → Chromium `-webkit-box-reflect`
471
+ * - **Effect DAG** → CSS `filter` (grayscale/biLevel/lum/hsl/tint…),
472
+ * `opacity`, `mix-blend-mode`, + optional duotone
473
+ * `<filter>` SVG markup (high-fidelity path)
474
+ *
475
+ * Units/precedence match the React implementation: spatial values are already
476
+ * in px on `ShapeStyle` (pre-converted from EMU by core), angles are degrees,
477
+ * alpha is 0–1. The EMU constants are re-exported from core for callers that
478
+ * need to convert raw values themselves.
479
+ *
480
+ * @module viewer/composables/visual-effects
481
+ */
482
+
483
+ /** Resolved parameters for a line-level (`a:ln`) outer shadow. */
484
+ interface LineShadowParams {
485
+ offsetX: number;
486
+ offsetY: number;
487
+ blur: number;
488
+ color: string;
489
+ opacity: number;
490
+ }
491
+
445
492
  /**
446
493
  * Text warp / WordArt logic — Vue port of the React
447
494
  * `viewer/utils/warp-path-generators.ts` + `text-warp-classifier.ts`.
@@ -627,6 +674,8 @@ interface ValueRange {
627
674
  logScale?: boolean;
628
675
  /** Logarithmic base (e.g. 10, 2, Math.E). Only meaningful when logScale is true. */
629
676
  logBase?: number;
677
+ /** Whether values increase from top to bottom. */
678
+ reverseOrder?: boolean;
630
679
  }
631
680
  /** Compute a Y-axis range that always includes zero. */
632
681
  declare function computeValueRange(series: ReadonlyArray<PptxChartSeries>): ValueRange;
@@ -755,6 +804,7 @@ interface SvgText {
755
804
  fill: string;
756
805
  textAnchor: 'start' | 'middle' | 'end';
757
806
  fontWeight?: 'normal' | 'bold';
807
+ fontFamily?: string;
758
808
  dominantBaseline?: string;
759
809
  opacity?: number;
760
810
  /** Optional SVG transform (e.g. `rotate(-90, x, y)` for a vertical axis title). */
@@ -872,7 +922,7 @@ interface ScatterDot {
872
922
  cx: number;
873
923
  cy: number;
874
924
  }
875
- declare function computeScatterDots(values: ReadonlyArray<number>, maxXIndex: number, layout: PlotLayout, range: ValueRange): ScatterDot[];
925
+ declare function computeScatterDots(values: ReadonlyArray<number>, maxXIndex: number, layout: PlotLayout, range: ValueRange, xValues?: ReadonlyArray<number>): ScatterDot[];
876
926
  /**
877
927
  * Radius of a bubble given its size value, the max size in the chart, and a
878
928
  * median radius derived from the plot area. Mirrors `renderBubbleChart` in
@@ -895,6 +945,9 @@ declare function resolveChartKind(chartType: string): SupportedChartKind | 'unsu
895
945
  declare function buildChartViewModel(element: PptxElement): ChartViewModel;
896
946
  declare function buildFallbackViewModel(width: number, height: number, label: string): ChartViewModel;
897
947
 
948
+ /** Build a bar + line combo chart, including independently scaled secondary series. */
949
+ declare function buildComboViewModel(element: PptxElement, chartData: PptxChartData, categoryLabels: ReadonlyArray<string>): ChartViewModel;
950
+
898
951
  /**
899
952
  * View-model builders for combo and stock chart kinds.
900
953
  *
@@ -920,23 +973,6 @@ declare function buildFallbackViewModel(width: number, height: number, label: st
920
973
  * @module chart-combo-stock
921
974
  */
922
975
 
923
- /**
924
- * Build a `ChartViewModel` for a combo chart (bar + line overlay).
925
- *
926
- * Convention (mirrors the React renderer):
927
- * - `chartData.series[0]` → rendered as clustered bar columns
928
- * - `chartData.series[1…N]` → rendered as line series with dot markers
929
- *
930
- * A single shared value-axis range is computed across ALL series so that the
931
- * bar and line series share the same Y scale. The category-axis tick style is
932
- * "bar" (evenly spaced groups with no extra edge padding).
933
- *
934
- * @param element - The chart element providing width/height.
935
- * @param chartData - Parsed chart data including series and style.
936
- * @param categoryLabels - Ordered category axis labels.
937
- * @returns A fully assembled `ChartViewModel` ready for the template.
938
- */
939
- declare function buildComboViewModel(element: PptxElement, chartData: PptxChartData, categoryLabels: ReadonlyArray<string>): ChartViewModel;
940
976
  /**
941
977
  * Build a `ChartViewModel` for a stock (HLC / OHLC) candlestick chart.
942
978
  *
@@ -1045,6 +1081,19 @@ declare function normalizeValue(value: number, min: number, max: number): number
1045
1081
  */
1046
1082
  declare function buildRegionMapViewModel(element: PptxElement, chartData: PptxChartData, categoryLabels: ReadonlyArray<string>): ChartViewModel;
1047
1083
 
1084
+ interface ErrorBarRenderOptions {
1085
+ /** Source point indexes in display order after category/date-axis filtering. */
1086
+ sourceIndices?: ReadonlyArray<number>;
1087
+ /** Exact display X positions for reordered category/date points. */
1088
+ xPositions?: ReadonlyArray<number>;
1089
+ /** Per-series Y ranges, used by secondary-axis combo series. */
1090
+ seriesRanges?: ReadonlyArray<ValueRange | undefined>;
1091
+ /** Per-series category mapping mode for mixed bar/line charts. */
1092
+ seriesModes?: ReadonlyArray<'line' | 'bar' | undefined>;
1093
+ }
1094
+ /** Build X- and Y-direction ChartML error-bar primitives for cartesian series. */
1095
+ declare function computeErrorBarPrimitives(chartData: PptxChartData, catCount: number, layout: PlotLayout, range: ValueRange, mode?: 'line' | 'bar', options?: ErrorBarRenderOptions): SvgPrimitive[];
1096
+
1048
1097
  /**
1049
1098
  * chart-overlays.ts — chart overlay depth for Angular pptx-angular-viewer.
1050
1099
  *
@@ -1105,21 +1154,6 @@ declare function computeRSquared(xVals: number[], yVals: number[], evalFn: (x: n
1105
1154
  * @param colorPalette Optional resolved palette (same as passed to `seriesColor`).
1106
1155
  */
1107
1156
  declare function computeTrendlinePrimitives(chartData: PptxChartData, catCount: number, layout: PlotLayout, range: ValueRange, mode?: 'line' | 'bar', colorPalette?: readonly string[]): SvgPrimitive[];
1108
- /**
1109
- * Build `SvgPrimitive[]` for all Y-direction error bars in `chartData`.
1110
- * Produces stem + cap `SvgLine` pairs for each data point.
1111
- * X-direction error bars are intentionally skipped (not supported in PPTX
1112
- * bar/line charts displayed here).
1113
- *
1114
- * Mirrors `renderErrorBars` in chart-overlay-lines.tsx (React).
1115
- *
1116
- * @param chartData Full parsed chart data.
1117
- * @param catCount Number of categories.
1118
- * @param layout Plot-area bounding box.
1119
- * @param range Value-axis range.
1120
- * @param mode `'bar'` or `'line'` — controls x-pixel mapping.
1121
- */
1122
- declare function computeErrorBarPrimitives(chartData: PptxChartData, catCount: number, layout: PlotLayout, range: ValueRange, mode?: 'line' | 'bar'): SvgPrimitive[];
1123
1157
  /**
1124
1158
  * Build `SvgText[]` for the X and Y axis titles.
1125
1159
  *
@@ -1624,8 +1658,6 @@ declare function ungroupElements(elements: readonly PptxElement[], groupId: stri
1624
1658
  * framework's CSS type).
1625
1659
  *
1626
1660
  * Precedence (highest first): image fill -> gradient -> pattern -> solid colour.
1627
- * Pattern fills currently approximate to their background colour (the SVG
1628
- * pattern preset renderer is a separate concern).
1629
1661
  */
1630
1662
 
1631
1663
  /** Default slide stage colour when a slide carries no usable background. */
@@ -1909,6 +1941,35 @@ declare class EditorHistory<T> {
1909
1941
  clear(): void;
1910
1942
  }
1911
1943
 
1944
+ /**
1945
+ * section-operations: Pure array-transformation functions for slide sections.
1946
+ *
1947
+ * Framework-agnostic (no framework imports). Each transform takes the current
1948
+ * `sections` and `slides` arrays and returns a NEW `{ sections, slides }` pair;
1949
+ * the inputs are never mutated. The React `useSectionOperations` hook and the
1950
+ * Vue `useSectionOperations` composable both wire their reactive state through
1951
+ * these transforms so the immutable section algorithms live in one place.
1952
+ *
1953
+ * Section ids are OOXML GUID-like strings. `addSection` generates one via the
1954
+ * supplied `idGenerator` (default {@link generateSectionId}), keeping the
1955
+ * transform overridable yet self-contained, matching the neighbouring shared
1956
+ * editor modules.
1957
+ */
1958
+
1959
+ /** Minimum section metadata needed to build sidebar groups. */
1960
+ interface SectionGroupDescriptor {
1961
+ id: string;
1962
+ name: string;
1963
+ collapsed?: boolean;
1964
+ color?: string;
1965
+ }
1966
+ /** A declared section paired with its slides, or the trailing ungrouped slides. */
1967
+ interface SectionSlideGroup<TSection extends SectionGroupDescriptor = PptxSection> {
1968
+ section: TSection | undefined;
1969
+ slides: PptxSlide[];
1970
+ slideIndexes: number[];
1971
+ }
1972
+
1912
1973
  /**
1913
1974
  * ole-actions.ts - framework-agnostic helpers for the OLE download/open UI.
1914
1975
  *
@@ -2075,6 +2136,15 @@ interface ParagraphBulletResult {
2075
2136
  fontFamily?: string;
2076
2137
  sizePts?: number;
2077
2138
  sizePercent?: number;
2139
+ picture?: PictureBulletMarker;
2140
+ }
2141
+ /** Framework-neutral picture-bullet source, sizing, and accessible fallback. */
2142
+ interface PictureBulletMarker {
2143
+ src?: string;
2144
+ sizePx: number;
2145
+ fallbackMarker: string;
2146
+ accessibleLabel: string;
2147
+ imageRelId?: string;
2078
2148
  }
2079
2149
  /**
2080
2150
  * Resolve the bullet marker for the first segment of a paragraph.
@@ -2085,7 +2155,7 @@ interface ParagraphBulletResult {
2085
2155
  * bullets the 1-based sequence index is `autoNumStartAt` (default 1) plus the
2086
2156
  * 0-based `paragraphIndex`.
2087
2157
  */
2088
- declare function resolveParagraphBullet(firstSegment: TextSegment | undefined): ParagraphBulletResult | undefined;
2158
+ declare function resolveParagraphBullet(firstSegment: TextSegment | undefined, baseFontSize?: number): ParagraphBulletResult | undefined;
2089
2159
  /**
2090
2160
  * Return the left-indent in pixels for the given 0-based list nesting level
2091
2161
  * (OOXML `a:p/@lvl`). `undefined`/negative is treated as level 0. Used as a
@@ -3126,6 +3196,17 @@ interface ResolvedFontVariant {
3126
3196
  /** Object URL minted for this variant (must be revoked on cleanup). */
3127
3197
  objectUrl?: string;
3128
3198
  }
3199
+ /**
3200
+ * A font supplied by the host application. The package never ships fonts:
3201
+ * applications provide a licensed URL, data URL, or blob URL for their users.
3202
+ */
3203
+ interface ViewerFontSource {
3204
+ family: string;
3205
+ src: string;
3206
+ format?: 'truetype' | 'opentype' | 'woff' | 'woff2';
3207
+ weight?: string | number;
3208
+ style?: 'normal' | 'italic';
3209
+ }
3129
3210
  /**
3130
3211
  * Factory the (impure) object-URL minting is delegated to, so the resolution
3131
3212
  * logic stays pure and testable. The binding supplies a real implementation
@@ -3308,6 +3389,44 @@ declare function clampNotesFontSize(size: number): number;
3308
3389
  /** Format a Date as a locale time string (HH:MM:SS). */
3309
3390
  declare function formatTime(date: Date): string;
3310
3391
 
3392
+ interface PresentationSnapshot {
3393
+ slideIndex: number;
3394
+ buildStep: number;
3395
+ sequence: number;
3396
+ blackout: 'none' | 'black' | 'white';
3397
+ paused: boolean;
3398
+ elapsedMs: number;
3399
+ zoom?: PresentationZoomState;
3400
+ pointer?: PresentationPointerState;
3401
+ inkStrokes?: PresentationInkStroke[];
3402
+ caption?: string;
3403
+ subtitlesVisible?: boolean;
3404
+ }
3405
+ interface PresentationZoomState {
3406
+ scale: number;
3407
+ originX: number;
3408
+ originY: number;
3409
+ }
3410
+ type PresentationPointerTool = 'none' | 'laser' | 'pen' | 'highlighter' | 'eraser';
3411
+ interface PresentationPointerState {
3412
+ tool: PresentationPointerTool;
3413
+ x: number;
3414
+ y: number;
3415
+ color: string;
3416
+ }
3417
+ interface PresentationInkPoint {
3418
+ x: number;
3419
+ y: number;
3420
+ }
3421
+ interface PresentationInkStroke {
3422
+ id: string;
3423
+ slideIndex: number;
3424
+ tool: 'pen' | 'highlighter';
3425
+ color: string;
3426
+ width: number;
3427
+ points: PresentationInkPoint[];
3428
+ }
3429
+
3311
3430
  /**
3312
3431
  * smart-art-presets.ts: the SmartArt insert-gallery catalogue, shared across
3313
3432
  * bindings. Pure data + types; consumed by each binding's insert dialog and
@@ -3528,6 +3647,41 @@ interface StrokeToInkElementOpts {
3528
3647
  */
3529
3648
  declare function strokeToInkElement(opts: StrokeToInkElementOpts): InkPptxElement | null;
3530
3649
 
3650
+ /**
3651
+ * Ink rendering utilities for pressure-sensitive strokes and replay animation.
3652
+ *
3653
+ * Pressure sensitivity is approximated by splitting an SVG path into short
3654
+ * sub-segments, each rendered as a filled circle at that point's coordinates.
3655
+ * The radius of each circle varies according to the corresponding entry in the
3656
+ * `inkWidths` array.
3657
+ *
3658
+ * Replay animation uses SVG `stroke-dasharray` / `stroke-dashoffset` to
3659
+ * progressively reveal each stroke with a sequential delay.
3660
+ *
3661
+ * Framework-agnostic: only imports core types, so every binding (React, Vue,
3662
+ * Angular) consumes one copy instead of duplicating the maths.
3663
+ *
3664
+ * @module ink-rendering
3665
+ */
3666
+
3667
+ /**
3668
+ * CSS properties for a single ink stroke's replay animation.
3669
+ */
3670
+ interface InkStrokeAnimationStyle {
3671
+ /** Estimated path length for stroke-dasharray. */
3672
+ pathLength: number;
3673
+ /** Animation delay for this stroke. */
3674
+ animationDelay: string;
3675
+ /** Animation duration for this stroke. */
3676
+ animationDuration: string;
3677
+ /** The CSS animation shorthand value. */
3678
+ animation: string;
3679
+ /** Initial stroke-dasharray value. */
3680
+ strokeDasharray: string;
3681
+ /** Initial stroke-dashoffset value. */
3682
+ strokeDashoffset: string;
3683
+ }
3684
+
3531
3685
  /**
3532
3686
  * Pure helper logic for mobile chrome state, shared by every binding.
3533
3687
  *
@@ -3704,6 +3858,35 @@ interface InsertChartTypeOption {
3704
3858
  label: string;
3705
3859
  }
3706
3860
 
3861
+ type MediaTrimHandle = 'start' | 'end';
3862
+ interface MediaTimelineGeometry {
3863
+ startPercent: number;
3864
+ endPercent: number;
3865
+ playheadPercent: number;
3866
+ }
3867
+ interface MediaTrimRange {
3868
+ trimStartMs: number;
3869
+ trimEndMs: number;
3870
+ }
3871
+
3872
+ interface SummaryZoomTileView {
3873
+ key: string;
3874
+ sectionId: string;
3875
+ targetSlideIndex: number;
3876
+ label: string;
3877
+ slideLabel: string;
3878
+ imageSrc?: string;
3879
+ backgroundColor: string;
3880
+ style: Record<string, string>;
3881
+ ariaLabel: string;
3882
+ }
3883
+ interface SummaryZoomView {
3884
+ layout: 'grid' | 'fixed';
3885
+ containerStyle: Record<string, string>;
3886
+ tiles: SummaryZoomTileView[];
3887
+ ariaLabel: string;
3888
+ }
3889
+
3707
3890
  /**
3708
3891
  * Command-search data for the PowerPoint-style "Tell me what you want to do"
3709
3892
  * search bar. Provides searchable command entries grouped by category, each
@@ -3721,6 +3904,113 @@ interface CommandSearchEntry {
3721
3904
  category: 'format' | 'insert' | 'view' | 'slideShow' | 'design' | 'arrange';
3722
3905
  }
3723
3906
 
3907
+ type BackstagePage = 'home' | 'new' | 'open' | 'info' | 'save' | 'saveAs' | 'print' | 'share' | 'export' | 'close' | 'account' | 'options';
3908
+ interface BackstageRecentFile {
3909
+ key: string;
3910
+ name: string;
3911
+ location: string;
3912
+ timestamp: number;
3913
+ size: number;
3914
+ }
3915
+ interface BackstageTemplate {
3916
+ id: string;
3917
+ name: string;
3918
+ description: string;
3919
+ preview: string;
3920
+ }
3921
+ declare function formatBackstageDate(timestamp: number, now?: number): string;
3922
+ declare function formatBackstageSize(bytes: number): string;
3923
+
3924
+ /** Framework-neutral virtual-list range used by every thumbnail sidebar. */
3925
+ interface VirtualizedRange {
3926
+ startIndex: number;
3927
+ endIndex: number;
3928
+ totalHeight: number;
3929
+ offsetY: number;
3930
+ visibleRange: {
3931
+ start: number;
3932
+ end: number;
3933
+ };
3934
+ }
3935
+
3936
+ /** Framework-neutral viewer preferences surfaced by Settings dialogs. */
3937
+ interface ViewerPreferences {
3938
+ autoSave: boolean;
3939
+ spellCheck: boolean;
3940
+ showGrid: boolean;
3941
+ showRulers: boolean;
3942
+ snapToGrid: boolean;
3943
+ reducedMotion: boolean;
3944
+ }
3945
+ type ViewerSettings = ViewerPreferences;
3946
+ interface ShortcutReferenceItem {
3947
+ actionKey: string;
3948
+ shortcut: string;
3949
+ }
3950
+ declare const SHORTCUT_REFERENCE_ITEMS: readonly ShortcutReferenceItem[];
3951
+ interface ViewerPreferenceToggle {
3952
+ key: keyof ViewerPreferences;
3953
+ labelKey: string;
3954
+ }
3955
+
3956
+ interface SpeechAlternative {
3957
+ readonly transcript: string;
3958
+ readonly confidence: number;
3959
+ }
3960
+ interface SpeechResult {
3961
+ readonly isFinal: boolean;
3962
+ readonly length: number;
3963
+ readonly [index: number]: SpeechAlternative;
3964
+ }
3965
+ interface SpeechResultList {
3966
+ readonly length: number;
3967
+ readonly [index: number]: SpeechResult;
3968
+ }
3969
+ interface SpeechRecognitionEventLite {
3970
+ readonly resultIndex: number;
3971
+ readonly results: SpeechResultList;
3972
+ }
3973
+ interface SpeechRecognitionLite extends EventTarget {
3974
+ continuous: boolean;
3975
+ interimResults: boolean;
3976
+ lang: string;
3977
+ onresult: ((event: SpeechRecognitionEventLite) => void) | null;
3978
+ onerror: ((event: Event) => void) | null;
3979
+ onend: (() => void) | null;
3980
+ start(): void;
3981
+ stop(): void;
3982
+ }
3983
+ type SpeechRecognitionCtor = new () => SpeechRecognitionLite;
3984
+ type SpeechSupportState = 'unknown' | 'supported' | 'unsupported';
3985
+ declare function mergeCaptionResults(resultIndex: number, results: SpeechResultList): string;
3986
+ declare function getSpeechRecognitionCtor(): SpeechRecognitionCtor | null;
3987
+ declare function captionDisplayText(supportState: SpeechSupportState, captionText: string, fallbackNotSupported: string, fallbackListening: string): string;
3988
+
3989
+ /**
3990
+ * Toolbar action / ribbon-tab visibility: a single, framework-agnostic
3991
+ * catalogue of every top-level toolbar button and ribbon tab a host app can
3992
+ * independently hide. Each binding exposes a `hiddenActions?: ToolbarActionId[]`
3993
+ * prop, threads it down to the relevant render sites, and gates them with
3994
+ * `isActionHidden`. Default (`undefined` / `[]`) hides nothing, matching
3995
+ * today's always-visible behaviour.
3996
+ *
3997
+ * `TOOLBAR_TABS` is also the canonical ribbon-tab list/order, replacing the
3998
+ * copy hand-duplicated in each binding (React's `TOOLBAR_SECTIONS`, Vue's
3999
+ * `ribbon-constants.ts`, Angular's `RIBBON_TABS`, etc.) so the tab set can't
4000
+ * drift between bindings. Per-tab icons stay in each binding (icon libraries
4001
+ * differ per framework); only id + i18n key + order are shared here.
4002
+ */
4003
+ /**
4004
+ * A single toolbar button/control that can be hidden independently of the
4005
+ * ribbon tab it may also appear inside. `zoom` and `navigation` each cover a
4006
+ * whole control cluster (zoom in/out/fit, prev/next) rather than each button
4007
+ * in it, matching how hosts actually want to hide/keep them as a unit.
4008
+ */
4009
+ type ToolbarButtonId = 'share' | 'broadcast' | 'export' | 'undo' | 'redo' | 'record' | 'notes' | 'fullscreen' | 'zoom' | 'navigation';
4010
+ /** A top-level ribbon tab. `record` intentionally shares its id with the quick-access Record button above: both surface the same recording feature, so hiding one hides the other. */
4011
+ type ToolbarTabId = 'file' | 'home' | 'insert' | 'draw' | 'design' | 'transitions' | 'animations' | 'slideShow' | 'record' | 'review' | 'view' | 'help';
4012
+ type ToolbarActionId = ToolbarButtonId | ToolbarTabId;
4013
+
3724
4014
  /**
3725
4015
  * Minimal GIF89a encoder (pure JS, no external dependency) plus pure
3726
4016
  * frame-planning helpers — shared by the React, Vue, and Angular bindings.
@@ -4012,6 +4302,22 @@ declare function fpsToFrameIntervalMs(fps: number): number;
4012
4302
  */
4013
4303
  declare function segmentFrameCount(durationMs: number, fps: number): number;
4014
4304
 
4305
+ /**
4306
+ * Thin re-export shim → vendored `pptx-viewer-shared` (`render/embedded-fonts`).
4307
+ *
4308
+ * The pure embedded-font `@font-face` assembly (URL/format validation, XOR
4309
+ * de-obfuscation fallback, resolved-variant -> stylesheet/family-list build)
4310
+ * was extracted to shared and is consumed by every binding. This shim preserves
4311
+ * the historical Angular import surface.
4312
+ *
4313
+ * `EMBEDDED_FONTS_STYLE_ID` stays Angular-local: it is the DOM id of the managed
4314
+ * `<style>` element this binding injects, and is intentionally distinct from the
4315
+ * React binding's id.
4316
+ */
4317
+
4318
+ /** DOM id of the managed `<style>` element the service injects into `<head>`. */
4319
+ declare const EMBEDDED_FONTS_STYLE_ID = "pptx-angular-embedded-fonts";
4320
+
4015
4321
  declare class AccessibilityService {
4016
4322
  /** Parsed slides of the current presentation. */
4017
4323
  readonly slides: _angular_core.WritableSignal<PptxSlide[]>;
@@ -4258,7 +4564,17 @@ declare class CollaborationService {
4258
4564
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<CollaborationService>;
4259
4565
  }
4260
4566
 
4567
+ interface EditorSectionOperations {
4568
+ add(afterSlideIndex: number, name: string): void;
4569
+ rename(sectionId: string, name: string): void;
4570
+ delete(sectionId: string): void;
4571
+ move(sectionId: string, direction: 'up' | 'down'): void;
4572
+ moveSlides(slideIndexes: number[], targetSectionId: string): void;
4573
+ toggle(sectionId: string): void;
4574
+ }
4575
+
4261
4576
  declare class EditorStateService {
4577
+ private readonly loader;
4262
4578
  /**
4263
4579
  * Optional: `inject()` requires an active Angular injection context, which
4264
4580
  * plain `new EditorStateService()` calls (used throughout this service's
@@ -4275,6 +4591,10 @@ declare class EditorStateService {
4275
4591
  private t;
4276
4592
  /** The editable slide deck (a clone of the loaded presentation). */
4277
4593
  readonly slides: _angular_core.WritableSignal<readonly PptxSlide[]>;
4594
+ readonly sections: _angular_core.WritableSignal<readonly PptxSection[]>;
4595
+ readonly headerFooter: _angular_core.WritableSignal<PptxHeaderFooter>;
4596
+ readonly sectionGroups: _angular_core.Signal<SectionSlideGroup<PptxSection>[]>;
4597
+ readonly sectionOps: EditorSectionOperations;
4278
4598
  /** Ids of the currently selected elements (on the active slide). */
4279
4599
  readonly selectedIds: _angular_core.WritableSignal<readonly string[]>;
4280
4600
  /** Whether the deck has unsaved edits. */
@@ -4308,7 +4628,7 @@ declare class EditorStateService {
4308
4628
  * elements move into {@link templateElementsBySlideId}, rendered as a separate
4309
4629
  * layer and re-merged on save.
4310
4630
  */
4311
- setSlides(slides: readonly PptxSlide[]): void;
4631
+ setSlides(slides: readonly PptxSlide[], sections?: readonly PptxSection[], headerFooter?: PptxHeaderFooter): void;
4312
4632
  /** Current editable (template-free) slides as a fresh (cloned) array. */
4313
4633
  snapshot(): readonly PptxSlide[];
4314
4634
  /**
@@ -4328,6 +4648,8 @@ declare class EditorStateService {
4328
4648
  private captureSnapshot;
4329
4649
  /** Restore both the deck and the template store from a snapshot. */
4330
4650
  private restoreSnapshot;
4651
+ /** Replace presentation-level header/footer settings as one undoable edit. */
4652
+ updateHeaderFooter(next: PptxHeaderFooter): void;
4331
4653
  /** The template (master/layout) elements separated out of a slide, by id. */
4332
4654
  private templatesForSlide;
4333
4655
  /** Replace a slide's template-element list (drops the entry when empty). */
@@ -4398,6 +4720,8 @@ declare class EditorStateService {
4398
4720
  duplicateSlide(index: number): void;
4399
4721
  /** Reorder a slide from `from` to `to` (records history). */
4400
4722
  moveSlide(from: number, to: number): void;
4723
+ addSection(afterSlideIndex: number): void;
4724
+ private commitSections;
4401
4725
  private renumber;
4402
4726
  private zOrder;
4403
4727
  private commit;
@@ -4545,6 +4869,14 @@ declare class LoadContentService {
4545
4869
  readonly themeColorMap: _angular_core.WritableSignal<Record<string, string> | undefined>;
4546
4870
  /** Slide masters (for placeholder/background resolution). */
4547
4871
  readonly slideMasters: _angular_core.WritableSignal<PptxSlideMaster[]>;
4872
+ /** Notes master, including its editable element tree. */
4873
+ readonly notesMaster: _angular_core.WritableSignal<PptxNotesMaster | undefined>;
4874
+ /** Handout master, including its editable element tree. */
4875
+ readonly handoutMaster: _angular_core.WritableSignal<PptxHandoutMaster | undefined>;
4876
+ readonly sections: _angular_core.WritableSignal<PptxSection[]>;
4877
+ readonly presentationProperties: _angular_core.WritableSignal<PptxPresentationProperties>;
4878
+ /** Whether the loaded package contains a VBA project. */
4879
+ readonly hasMacros: _angular_core.WritableSignal<boolean>;
4548
4880
  /** Archive-path → displayable URL map for media + poster frames. */
4549
4881
  readonly mediaDataUrls: _angular_core.WritableSignal<Map<string, string>>;
4550
4882
  /** Embedded font data (name + binary) extracted from the presentation. */
@@ -4579,7 +4911,7 @@ declare class LoadContentService {
4579
4911
  * Serialise an explicit set of slides back to `.pptx` bytes (e.g. the
4580
4912
  * editor's edited deck) using the loaded presentation's handler.
4581
4913
  */
4582
- saveSlides(slides: readonly PptxSlide[]): Promise<Uint8Array>;
4914
+ saveSlides(slides: readonly PptxSlide[], outputFormat?: PptxSaveFormat, sections?: readonly PptxSection[]): Promise<Uint8Array>;
4583
4915
  /** Parse the supplied `.pptx` bytes into the reactive signals. */
4584
4916
  load(raw: Uint8Array | ArrayBuffer | null | undefined): Promise<void>;
4585
4917
  private disposeHandler;
@@ -4650,14 +4982,17 @@ declare function isPresenterMessage(data: unknown): data is PresenterMessage;
4650
4982
  */
4651
4983
  declare function parseAudienceNonce(): string | null;
4652
4984
  declare class PresenterWindowService {
4985
+ readonly snapshot: _angular_core.WritableSignal<PresentationSnapshot>;
4653
4986
  private audienceWindow;
4654
4987
  private channel;
4655
4988
  private pollTimer;
4989
+ private readyListener;
4656
4990
  /** Per-session UUID. Regenerated each time openAudienceWindow is invoked. */
4657
4991
  private sessionId;
4658
4992
  private getChannel;
4659
4993
  isAudienceWindowOpen(): boolean;
4660
4994
  syncSlideToAudience(slideIndex: number): void;
4995
+ updateSnapshot(patch: Partial<PresentationSnapshot>): void;
4661
4996
  closeAudienceWindow(): void;
4662
4997
  /**
4663
4998
  * Open the audience tab. Persists the PPTX bytes (if any) to IndexedDB, then
@@ -4665,6 +5000,8 @@ declare class PresenterWindowService {
4665
5000
  * popup is blocked.
4666
5001
  */
4667
5002
  openAudienceWindow(content: ArrayBuffer | Uint8Array | null, currentSlideIndex: number): boolean;
5003
+ /** Connect an audience tab to the presenter channel and announce readiness. */
5004
+ connectAudience(onSlide: (index: number) => void, onExit: () => void): () => void;
4668
5005
  private disposeWindow;
4669
5006
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PresenterWindowService, never>;
4670
5007
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<PresenterWindowService>;
@@ -4697,13 +5034,16 @@ declare class PrintService {
4697
5034
  * 2. Build the printable HTML (capturing slides as needed).
4698
5035
  * 3. Open a print window and trigger `window.print()`.
4699
5036
  *
4700
- * The outline path needs no rasterisation. All other modes call
4701
- * `captureSlide` once per slide (sequentially) and skip slides that fail.
5037
+ * Outline and full-page slides need no rasterisation. Notes and handouts
5038
+ * call `captureSlide` sequentially and skip slides that fail.
4702
5039
  *
4703
5040
  * @returns `true` if a print window was opened, `false` if blocked (popup
4704
5041
  * blocker) or there was nothing to print.
4705
5042
  */
4706
- print(rawSettings: PrintSettings, slides: PptxSlide[], activeSlideIndex: number, captureSlide: CaptureSlideFn): Promise<boolean>;
5043
+ print(rawSettings: PrintSettings, slides: PptxSlide[], activeSlideIndex: number, captureSlide: CaptureSlideFn, slideSize?: Readonly<{
5044
+ width: number;
5045
+ height: number;
5046
+ }>): Promise<boolean>;
4707
5047
  /**
4708
5048
  * Open a print window, write the document, focus, and trigger printing.
4709
5049
  * Returns `false` if the popup was blocked.
@@ -5388,6 +5728,10 @@ declare class ViewerDialogsService {
5388
5728
  readonly showVersionHistory: _angular_core.WritableSignal<boolean>;
5389
5729
  /** Keyboard-shortcuts help overlay visibility. */
5390
5730
  readonly showShortcuts: _angular_core.WritableSignal<boolean>;
5731
+ /** Viewer/editor preferences dialog visibility. */
5732
+ readonly showSettings: _angular_core.WritableSignal<boolean>;
5733
+ /** Presentation header/footer editor visibility. */
5734
+ readonly showHeaderFooter: _angular_core.WritableSignal<boolean>;
5391
5735
  /** Keep-annotations dialog visibility. */
5392
5736
  readonly showKeepAnnotations: _angular_core.WritableSignal<boolean>;
5393
5737
  /** Total ink annotation stroke count carried into the prompt. */
@@ -5469,6 +5813,8 @@ declare class ViewerExportService {
5469
5813
  private requireHost;
5470
5814
  /** Export the current slide as a PNG download. */
5471
5815
  exportPng(): Promise<void>;
5816
+ /** Copy the current slide to the system clipboard as a PNG image. */
5817
+ copySlideAsImage(): Promise<void>;
5472
5818
  /**
5473
5819
  * Export every slide to a multi-page PDF. Each slide is made the live stage,
5474
5820
  * given a render tick to settle, captured to a canvas, then the original
@@ -5479,16 +5825,13 @@ declare class ViewerExportService {
5479
5825
  exportGif(): Promise<void>;
5480
5826
  /** Export every slide as a WebM video (3s per slide) via MediaRecorder. */
5481
5827
  exportVideo(): Promise<void>;
5482
- /** Run a print job for the chosen settings, rasterising each slide off the live stage. */
5483
5828
  onPrint(settings: PrintSettings): Promise<void>;
5484
- /** User pressed Cancel: abort the loop and close the modal. */
5485
5829
  onCancelExport(): void;
5486
5830
  /**
5487
5831
  * Open the progress modal and arm a fresh `AbortController` for an export.
5488
5832
  * Returns the controller whose `signal` the capture loop checks per slide.
5489
5833
  */
5490
5834
  private beginExport;
5491
- /** Tear down the progress modal + export-in-flight state. */
5492
5835
  private endExport;
5493
5836
  /**
5494
5837
  * Render every slide to a canvas (each made the live stage in turn), reporting
@@ -5507,6 +5850,7 @@ interface FileIOHost {
5507
5850
  readonly content: () => Uint8Array | ArrayBuffer | null;
5508
5851
  readonly onOpenFile: () => (() => void) | undefined;
5509
5852
  readonly slides: () => readonly PptxSlide[];
5853
+ readonly sections: () => readonly PptxSection[];
5510
5854
  readonly templateElementsBySlideId: () => TemplateElementsBySlideId;
5511
5855
  readonly emitContentChange: (bytes: Uint8Array) => void;
5512
5856
  }
@@ -5537,7 +5881,12 @@ declare class ViewerFileIOService {
5537
5881
  * Surfaced on the mobile toolbar so saving is reachable without the desktop
5538
5882
  * ribbon's File tab.
5539
5883
  */
5884
+ saveAs(format: PptxSaveFormat): Promise<void>;
5540
5885
  saveAsPptx(): Promise<void>;
5886
+ saveAsPpsx(): Promise<void>;
5887
+ saveAsPptm(): Promise<void>;
5888
+ /** Bundle the presentation and its usage notes in a shareable ZIP archive. */
5889
+ packageForSharing(): Promise<void>;
5541
5890
  /**
5542
5891
  * File ▸ Open: host override (`onOpenFile` input) takes precedence; otherwise
5543
5892
  * a built-in native picker loads the chosen presentation in place.
@@ -5830,6 +6179,7 @@ interface PresentationModeHost {
5830
6179
  readonly sourceContent: () => Uint8Array | ArrayBuffer | null;
5831
6180
  readonly canEdit: () => boolean;
5832
6181
  readonly promptKeepAnnotations: (map: SlideAnnotationMap) => void;
6182
+ readonly applyRehearsalTimings: (timings: Record<number, number>) => void;
5833
6183
  }
5834
6184
  declare class ViewerPresentationModeService {
5835
6185
  private readonly loader;
@@ -5841,6 +6191,16 @@ declare class ViewerPresentationModeService {
5841
6191
  readonly presentingPresenter: _angular_core.WritableSignal<boolean>;
5842
6192
  /** Epoch ms when presenter view started (drives the elapsed timer). */
5843
6193
  readonly presenterStartTime: _angular_core.WritableSignal<number | null>;
6194
+ readonly rehearsing: _angular_core.WritableSignal<boolean>;
6195
+ readonly rehearsalPaused: _angular_core.WritableSignal<boolean>;
6196
+ readonly showRehearsalSummary: _angular_core.WritableSignal<boolean>;
6197
+ readonly rehearsalStartedAt: _angular_core.WritableSignal<number | null>;
6198
+ readonly slideStartedAt: _angular_core.WritableSignal<number | null>;
6199
+ readonly recordedTimings: _angular_core.WritableSignal<Record<number, number>>;
6200
+ /** Live subtitle preference shared by the ribbon and presentation overlay. */
6201
+ readonly subtitlesVisible: _angular_core.WritableSignal<boolean>;
6202
+ private pauseStartedAt;
6203
+ private pausedOnSlideMs;
5844
6204
  private host;
5845
6205
  /** Wire the host accessors (called once from the component constructor). */
5846
6206
  bind(host: PresentationModeHost): void;
@@ -5851,6 +6211,12 @@ declare class ViewerPresentationModeService {
5851
6211
  * mounts as a result of `presenting` flipping true.
5852
6212
  */
5853
6213
  present(): void;
6214
+ presentFromBeginning(): void;
6215
+ presentFromCurrent(): void;
6216
+ toggleSubtitles(): void;
6217
+ startRehearsalFromBeginning(): void;
6218
+ startRehearsalFromCurrent(): void;
6219
+ private startRehearsal;
5854
6220
  /**
5855
6221
  * Map a presentation-overlay index back to the full-deck `activeSlideIndex`.
5856
6222
  * The overlay's index is relative to the (possibly custom-show-filtered)
@@ -5858,6 +6224,11 @@ declare class ViewerPresentationModeService {
5858
6224
  * correct when the show closes.
5859
6225
  */
5860
6226
  onPresentationIndexChange(index: number): void;
6227
+ toggleRehearsalPause(): void;
6228
+ closePresentation(): void;
6229
+ saveRehearsalTimings(): void;
6230
+ dismissRehearsalSummary(): void;
6231
+ private recordCurrentSlide;
5861
6232
  /**
5862
6233
  * Open a separate audience tab and hand off the deck via the shared
5863
6234
  * IndexedDB store. Mirrors React's presenter "open audience window".
@@ -5891,6 +6262,7 @@ declare class ViewerThemeGalleryService {
5891
6262
  * baseline.
5892
6263
  */
5893
6264
  applyThemePreset(preset: PptxThemePreset): void;
6265
+ applyCustomTheme(colorScheme: PptxThemeColorScheme, fontScheme: PptxThemeFontScheme, name: string): void;
5894
6266
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerThemeGalleryService, never>;
5895
6267
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ViewerThemeGalleryService>;
5896
6268
  }
@@ -5926,6 +6298,8 @@ declare class ViewerZoomService {
5926
6298
  declare class PowerPointViewerComponent {
5927
6299
  /** PowerPoint content as Uint8Array (or ArrayBuffer). */
5928
6300
  readonly content: _angular_core.InputSignal<ArrayBuffer | Uint8Array<ArrayBufferLike> | null>;
6301
+ /** Licensed fonts supplied by the host application. No fonts are bundled. */
6302
+ readonly fontsInput: _angular_core.InputSignal<ViewerFontSource[]>;
5929
6303
  /** Whether editing actions are enabled. (Editor chrome not yet ported.) */
5930
6304
  readonly canEdit: _angular_core.InputSignal<boolean>;
5931
6305
  /** Optional class applied to the root element. */
@@ -5977,6 +6351,12 @@ declare class PowerPointViewerComponent {
5977
6351
  * back to the SVG SmartArt renderer. Default `false`.
5978
6352
  */
5979
6353
  readonly smartArt3D: _angular_core.InputSignal<boolean>;
6354
+ /**
6355
+ * Toolbar buttons and ribbon tabs the host wants hidden (share, broadcast,
6356
+ * export, undo, redo, record, notes, fullscreen, zoom, navigation, or any
6357
+ * ribbon tab id). Default `[]` hides nothing, matching prior behaviour.
6358
+ */
6359
+ readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
5980
6360
  /** Fired when the active slide changes. */
5981
6361
  readonly activeSlideChange: _angular_core.OutputEmitterRef<number>;
5982
6362
  /** Fired when the unsaved-changes flag toggles. */
@@ -6012,6 +6392,7 @@ declare class PowerPointViewerComponent {
6012
6392
  private readonly smartArt3DSvc;
6013
6393
  private readonly zoomTarget;
6014
6394
  protected readonly presenterWindow: PresenterWindowService;
6395
+ private readonly destroyRef;
6015
6396
  protected readonly dialogs: ViewerDialogsService;
6016
6397
  private readonly compareSvc;
6017
6398
  protected readonly xport: ViewerExportService;
@@ -6055,6 +6436,11 @@ declare class PowerPointViewerComponent {
6055
6436
  protected readonly rootStyle: _angular_core.Signal<Record<string, string>>;
6056
6437
  /** Slide-sorter grid overlay visibility. */
6057
6438
  protected readonly showSorter: _angular_core.WritableSignal<boolean>;
6439
+ /** Full-canvas master editor visibility and active target. */
6440
+ protected readonly showMasterView: _angular_core.WritableSignal<boolean>;
6441
+ protected readonly masterViewTab: _angular_core.WritableSignal<MasterViewTab>;
6442
+ protected readonly activeMasterIndex: _angular_core.WritableSignal<number>;
6443
+ protected readonly activeLayoutIndex: _angular_core.WritableSignal<number | null>;
6058
6444
  /** Whether the left slides panel is collapsed (top-bar sidebar toggle). */
6059
6445
  protected readonly slidesPanelCollapsed: _angular_core.WritableSignal<boolean>;
6060
6446
  /** Whether periodic autosave is enabled (title-bar AutoSave toggle; default on). */
@@ -6082,6 +6468,19 @@ declare class PowerPointViewerComponent {
6082
6468
  protected readonly showGuides: _angular_core.WritableSignal<boolean>;
6083
6469
  /** Whether snap-to-grid is active on the editor canvas. */
6084
6470
  protected readonly snapToGrid: _angular_core.WritableSignal<boolean>;
6471
+ /** Whether elements snap to nearby element edges and centres. */
6472
+ protected readonly snapToShape: _angular_core.WritableSignal<boolean>;
6473
+ /** Monotonic command consumed by the active canvas to add a ruler guide. */
6474
+ protected readonly guideCommand: _angular_core.WritableSignal<{
6475
+ id: number;
6476
+ axis: "x" | "y";
6477
+ } | null>;
6478
+ /** Whether browser spell-check is active in the inline text editor. */
6479
+ protected readonly spellCheck: _angular_core.WritableSignal<boolean>;
6480
+ /** User override that suppresses viewer animations and transitions. */
6481
+ protected readonly reducedMotion: _angular_core.WritableSignal<boolean>;
6482
+ /** Snapshot consumed by the settings dialog. */
6483
+ protected readonly viewerSettings: _angular_core.Signal<ViewerPreferences>;
6085
6484
  /** Whether the Insert SmartArt gallery dialog is open. */
6086
6485
  protected readonly showSmartArtInsert: _angular_core.WritableSignal<boolean>;
6087
6486
  /**
@@ -6099,8 +6498,17 @@ declare class PowerPointViewerComponent {
6099
6498
  * When editing, this serialises the editor's edited deck so changes persist.
6100
6499
  */
6101
6500
  getContent(): Promise<Uint8Array>;
6501
+ protected openMasterView(): void;
6502
+ protected closeMasterView(): void;
6503
+ protected selectMasterTab(tab: MasterViewTab): void;
6504
+ protected setMasterBackground(backgroundColor: string): void;
6505
+ protected setHandoutSlidesPerPage(slidesPerPage: number): void;
6506
+ protected updateNotesMaster(master: PptxNotesMaster): void;
6507
+ protected updateHandoutMaster(master: PptxHandoutMaster): void;
6102
6508
  goTo(index: number): void;
6103
6509
  goPrev(): void;
6510
+ protected onCreatePresentation(templateId: string): void;
6511
+ protected onOpenRecentFile(key: string): void;
6104
6512
  goNext(): void;
6105
6513
  /** Undo the last editing action. No-op when nothing to undo. */
6106
6514
  undo(): void;
@@ -6182,8 +6590,11 @@ declare class PowerPointViewerComponent {
6182
6590
  private serializeForAutosave;
6183
6591
  /** Review ▸ Compare: pick a `.pptx` and diff it against the current deck. */
6184
6592
  protected onOpenCompare(): void;
6593
+ protected addGuide(axis: 'x' | 'y'): void;
6185
6594
  /** Swap the deck for a restored version-history snapshot. */
6186
6595
  protected onRestoreVersion(bytes: Uint8Array): void;
6596
+ /** Apply Settings dialog changes to the live editor state. */
6597
+ protected onSettingsChange(settings: ViewerSettings): void;
6187
6598
  /**
6188
6599
  * Mobile "Format" slot: surface the inspector for the current selection. The
6189
6600
  * inspector renders inline (below the canvas) whenever an element is selected
@@ -6219,7 +6630,7 @@ declare class PowerPointViewerComponent {
6219
6630
  /** Resolve the live slide-stage element within `<main>`. */
6220
6631
  private stageElement;
6221
6632
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PowerPointViewerComponent, never>;
6222
- 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; }; "filePath": { "alias": "filePath"; "required": false; "isSignal": true; }; "fileName": { "alias": "fileName"; "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"; "modeChange": "modeChange"; "zoomChange": "zoomChange"; "selectionChange": "selectionChange"; "slideCountChange": "slideCountChange"; "startCollaboration": "startCollaboration"; "stopCollaboration": "stopCollaboration"; }, never, never, true, never>;
6633
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PowerPointViewerComponent, "pptx-viewer", never, { "content": { "alias": "content"; "required": false; "isSignal": true; }; "fontsInput": { "alias": "fonts"; "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; }; "filePath": { "alias": "filePath"; "required": false; "isSignal": true; }; "fileName": { "alias": "fileName"; "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; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; }, { "activeSlideChange": "activeSlideChange"; "dirtyChange": "dirtyChange"; "contentChange": "contentChange"; "propertiesChange": "propertiesChange"; "modeChange": "modeChange"; "zoomChange": "zoomChange"; "selectionChange": "selectionChange"; "slideCountChange": "slideCountChange"; "startCollaboration": "startCollaboration"; "stopCollaboration": "stopCollaboration"; }, never, never, true, never>;
6223
6634
  }
6224
6635
 
6225
6636
  /** The eight resize-handle positions around a selection box. */
@@ -6309,6 +6720,8 @@ declare class RulerGuidesService {
6309
6720
  private requireHost;
6310
6721
  /** True while an existing or just-created guide is being dragged. */
6311
6722
  isDragging(): boolean;
6723
+ /** Add a centered guide from the View ribbon without starting a drag gesture. */
6724
+ addGuide(axis: RulerGuide['axis']): void;
6312
6725
  /** Begin dragging an existing guide. Called from the guide handle pointerdown. */
6313
6726
  onGuidePointerDown(event: PointerEvent, id: string, axis: RulerGuide['axis']): void;
6314
6727
  /** Remove a guide (called on guide handle double-click). */
@@ -6405,6 +6818,15 @@ declare class SlideCanvasComponent implements SlideContext {
6405
6818
  * Combines with edge-alignment snapping.
6406
6819
  */
6407
6820
  readonly snapToGrid: _angular_core.InputSignal<boolean>;
6821
+ /** Whether moving elements snap to other element edges and centres. */
6822
+ readonly snapToShape: _angular_core.InputSignal<boolean>;
6823
+ /** Imperative toolbar request to add a centered user guide. */
6824
+ readonly guideCommand: _angular_core.InputSignal<{
6825
+ id: number;
6826
+ axis: "x" | "y";
6827
+ } | null>;
6828
+ /** Whether the inline text editor uses the browser spell checker. */
6829
+ readonly spellCheck: _angular_core.InputSignal<boolean>;
6408
6830
  /**
6409
6831
  * When true, snap elements to user-created ruler guides during move.
6410
6832
  */
@@ -6547,6 +6969,7 @@ declare class SlideCanvasComponent implements SlideContext {
6547
6969
  private seededEditId;
6548
6970
  /** Last-tap timestamp + element id, for synthetic double-tap detection on touch. */
6549
6971
  private lastTap;
6972
+ private lastGuideCommandId;
6550
6973
  constructor();
6551
6974
  readonly elements: _angular_core.Signal<PptxElement[]>;
6552
6975
  /**
@@ -6635,6 +7058,8 @@ declare class SlideCanvasComponent implements SlideContext {
6635
7058
  onContextMenu(event: MouseEvent): void;
6636
7059
  onHandlePointerDown(event: PointerEvent, handle: ResizeHandle): void;
6637
7060
  onRotatePointerDown(event: PointerEvent): void;
7061
+ onResizeHandleKeydown(event: KeyboardEvent, handle: ResizeHandle): void;
7062
+ onRotateHandleKeydown(event: KeyboardEvent): void;
6638
7063
  onPointerMove(event: PointerEvent): void;
6639
7064
  onPointerUp(): void;
6640
7065
  readonly wrapperStyle: _angular_core.Signal<StyleMap>;
@@ -6658,33 +7083,9 @@ declare class SlideCanvasComponent implements SlideContext {
6658
7083
  readonly vRulerTicks: _angular_core.Signal<readonly RulerTick[]>;
6659
7084
  readonly stageStyle: _angular_core.Signal<StyleMap>;
6660
7085
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlideCanvasComponent, never>;
6661
- 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>;
7086
+ 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; }; "snapToShape": { "alias": "snapToShape"; "required": false; "isSignal": true; }; "guideCommand": { "alias": "guideCommand"; "required": false; "isSignal": true; }; "spellCheck": { "alias": "spellCheck"; "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>;
6662
7087
  }
6663
7088
 
6664
- /**
6665
- * Pure (Angular-free) helpers for the `<a:clrChange>` colour-change image
6666
- * effect. Kept out of the component so they can be unit-tested without TestBed
6667
- * or a DOM, mirroring `model3d-renderer-helpers.ts`.
6668
- */
6669
- /** Parsed `<a:clrChange>` parameters needed to drive the chroma-key. */
6670
- interface ClrChangeParams {
6671
- clrFrom: string;
6672
- clrTo: string;
6673
- /** Whether the target colour becomes fully transparent (alpha = 0). */
6674
- clrToTransparent: boolean;
6675
- /** Match tolerance percentage (0-100). */
6676
- tolerance: number;
6677
- }
6678
- /**
6679
- * Extract the colour-change effect from an element, or `undefined` when the
6680
- * element carries no `imageEffects.clrChange` (or its `clrFrom` is empty).
6681
- *
6682
- * `clrFrom` is the source colour that must be present for the effect to do
6683
- * anything, so a blank `clrFrom` is treated as "no effect" (matching React,
6684
- * where the `clrChange` branch only fires when a valid effect object exists).
6685
- */
6686
- declare function getClrChangeParams(el: PptxElement): ClrChangeParams | undefined;
6687
-
6688
7089
  /**
6689
7090
  * Text-warp (WordArt) descriptor resolver for the Angular viewer.
6690
7091
  *
@@ -6814,6 +7215,8 @@ interface Paragraph {
6814
7215
  runs: TextRun[];
6815
7216
  /** Bullet / number marker text, when this paragraph is a list item. */
6816
7217
  bulletMarker?: string;
7218
+ /** Resolved picture marker, or metadata for its accessible glyph fallback. */
7219
+ bulletPicture?: PictureBulletMarker;
6817
7220
  /** `[ngStyle]` map for the bullet marker (colour / font). */
6818
7221
  bulletStyle: StyleMap;
6819
7222
  /** Left indent in px derived from the paragraph outline level. */
@@ -6907,14 +7310,6 @@ declare class ElementRendererComponent {
6907
7310
  readonly containerStyle: _angular_core.Signal<StyleMap>;
6908
7311
  readonly shapeContainerStyle: _angular_core.Signal<StyleMap>;
6909
7312
  readonly textStyle: _angular_core.Signal<StyleMap>;
6910
- readonly imageSrc: _angular_core.Signal<string | undefined>;
6911
- /**
6912
- * Parsed `<a:clrChange>` colour-change effect for this element, or
6913
- * `undefined` when it carries none. When present the image / media branch
6914
- * renders via {@link ColorChangedImageComponent} (offscreen-canvas chroma
6915
- * key) instead of a plain `<img>`.
6916
- */
6917
- readonly clrChangeParams: _angular_core.Signal<ClrChangeParams | undefined>;
6918
7313
  /** Text-warp (WordArt) descriptor for the element, if any. */
6919
7314
  readonly textWarp: _angular_core.Signal<pptx_angular_viewer.TextWarpDef | undefined>;
6920
7315
  /** Only the SVG-textPath warp variant (for the `<svg>` overlay branch). */
@@ -6957,7 +7352,8 @@ declare class ElementRendererComponent {
6957
7352
  * Compound (double/triple) lines render as parallel strands and line caps map
6958
7353
  * from `a:ln/@cap`; both derive from the shared connector geometry.
6959
7354
  *
6960
- * Not yet ported (TODO): line shadows/glow.
7355
+ * Line shadows use an SVG drop-shadow filter and line glow uses the shared
7356
+ * CSS filter builder, matching the other framework bindings.
6961
7357
  */
6962
7358
  declare class ConnectorRendererComponent {
6963
7359
  readonly element: _angular_core.InputSignal<PptxElement>;
@@ -6971,6 +7367,11 @@ declare class ConnectorRendererComponent {
6971
7367
  /** All derived geometry, recomputed on every input change. */
6972
7368
  readonly geo: _angular_core.Signal<ConnectorGeometry>;
6973
7369
  readonly viewBox: _angular_core.Signal<string>;
7370
+ private readonly shapeStyle;
7371
+ readonly lineShadow: _angular_core.Signal<LineShadowParams | undefined>;
7372
+ readonly lineGlow: _angular_core.Signal<string | undefined>;
7373
+ readonly shadowFilterId: _angular_core.Signal<string>;
7374
+ readonly wrapperStyle: _angular_core.Signal<string>;
6974
7375
  /**
6975
7376
  * Parallel strokes for compound (double/triple) line styles. A single line
6976
7377
  * yields one strand at offset 0. Each strand carries its own width and is
@@ -6990,6 +7391,7 @@ interface ConnectorStrand {
6990
7391
  key: number;
6991
7392
  width: number;
6992
7393
  transform: string | null;
7394
+ shadowFilter: string | null;
6993
7395
  markerStart: string | null;
6994
7396
  markerEnd: string | null;
6995
7397
  }
@@ -7514,8 +7916,9 @@ declare function buildInkContainerStyle(element: PptxElement, zIndex: number): S
7514
7916
  * radii follow the per-point pressure, matching React's `renderInk`. Strokes
7515
7917
  * without pressure variation degrade to a plain constant-width `<path>`.
7516
7918
  *
7517
- * Not ported (TODO): ink replay animation and the
7518
- * highlighter/eraser tool blend modes.
7919
+ * Presentation mode progressively replays constant-width paths using the
7920
+ * shared dash-offset timing model. Pressure circles remain static because SVG
7921
+ * dash replay only applies to paths.
7519
7922
  *
7520
7923
  * All non-trivial pure computation lives in `ink-renderer-helpers.ts` (no
7521
7924
  * Angular dependency) so it can be unit-tested without TestBed.
@@ -7524,11 +7927,14 @@ declare class InkRendererComponent {
7524
7927
  readonly element: _angular_core.InputSignal<PptxElement>;
7525
7928
  readonly zIndex: _angular_core.InputSignal<number>;
7526
7929
  readonly mediaDataUrls: _angular_core.InputSignal<Map<string, string>>;
7930
+ readonly replay: _angular_core.InputSignal<boolean>;
7931
+ readonly replayKeyframes = "@keyframes pptx-ink-replay {\n from { stroke-dashoffset: var(--ink-path-length); }\n to { stroke-dashoffset: 0; }\n}";
7527
7932
  readonly containerStyle: _angular_core.Signal<StyleMap>;
7528
7933
  readonly strokes: _angular_core.Signal<InkStroke[]>;
7934
+ readonly replayStyles: _angular_core.Signal<InkStrokeAnimationStyle[]>;
7529
7935
  readonly viewBox: _angular_core.Signal<string>;
7530
7936
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<InkRendererComponent, never>;
7531
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<InkRendererComponent, "pptx-ink-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
7937
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InkRendererComponent, "pptx-ink-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "replay": { "alias": "replay"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
7532
7938
  }
7533
7939
 
7534
7940
  /**
@@ -7806,7 +8212,7 @@ interface ZoomViewModel {
7806
8212
  /** Zero-based target slide index. */
7807
8213
  readonly targetSlideIndex: number;
7808
8214
  /** Zoom type string used as the badge label source and data attribute. */
7809
- readonly zoomType: 'slide' | 'section';
8215
+ readonly zoomType: 'slide' | 'section' | 'summary';
7810
8216
  /** Optional section identifier for section zooms. */
7811
8217
  readonly targetSectionId: string | undefined;
7812
8218
  /** Human-readable badge text ("Slide Zoom" / "Section Zoom"). */
@@ -7890,6 +8296,7 @@ declare class ZoomRendererComponent {
7890
8296
  */
7891
8297
  private readonly zoomTarget;
7892
8298
  readonly vm: _angular_core.Signal<ZoomViewModel>;
8299
+ readonly summaryView: _angular_core.Signal<SummaryZoomView | undefined>;
7893
8300
  /**
7894
8301
  * Zoom-navigation context, present only inside a running presentation (the
7895
8302
  * overlay provides it). `null` in the editor tree, where the tile stays
@@ -7900,6 +8307,7 @@ declare class ZoomRendererComponent {
7900
8307
  protected readonly interactive: _angular_core.Signal<boolean>;
7901
8308
  /** Navigate to the zoom target; no-op when the tile is not interactive. */
7902
8309
  private activate;
8310
+ protected activateSummary(event: Event, target: number): void;
7903
8311
  protected onClick(event: MouseEvent): void;
7904
8312
  protected onKeydown(event: KeyboardEvent): void;
7905
8313
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZoomRendererComponent, never>;
@@ -7910,6 +8318,7 @@ declare class AnimationPlaybackService {
7910
8318
  private readonly destroyRef;
7911
8319
  /** The current slide's animations, in document/timeline order. */
7912
8320
  private readonly animations;
8321
+ private readonly showWithAnimation;
7913
8322
  /**
7914
8323
  * Externally-controlled playback step (e.g. derived from a parent click
7915
8324
  * counter). `undefined` means there is no external driver. The internal
@@ -7948,7 +8357,7 @@ declare class AnimationPlaybackService {
7948
8357
  private rafHandle;
7949
8358
  constructor();
7950
8359
  /** Feed the current slide's animation list. Resets manual control. */
7951
- setAnimations(animations: readonly PptxElementAnimation[] | undefined): void;
8360
+ setAnimations(animations: readonly PptxElementAnimation[] | undefined, showWithAnimation?: boolean): void;
7952
8361
  /** Update the external playback index (parent-driven build counter). */
7953
8362
  setExternalIndex(index: number | undefined): void;
7954
8363
  /**
@@ -8154,12 +8563,16 @@ declare class PresentationAnnotationsService {
8154
8563
  * plain CSS overlay.
8155
8564
  */
8156
8565
  declare class PresentationOverlayComponent implements OnInit {
8566
+ protected readonly presenterWindow: PresenterWindowService;
8157
8567
  readonly slides: _angular_core.InputSignal<PptxSlide[]>;
8158
8568
  readonly canvasSize: _angular_core.InputSignal<CanvasSize>;
8159
8569
  readonly mediaDataUrls: _angular_core.InputSignal<Map<string, string>>;
8160
8570
  readonly startIndex: _angular_core.InputSignal<number>;
8571
+ readonly showWithAnimation: _angular_core.InputSignal<boolean | undefined>;
8572
+ readonly subtitlesVisible: _angular_core.InputSignal<boolean>;
8161
8573
  readonly indexChange: _angular_core.OutputEmitterRef<number>;
8162
8574
  readonly closed: _angular_core.OutputEmitterRef<void>;
8575
+ readonly subtitlesChange: _angular_core.OutputEmitterRef<boolean>;
8163
8576
  /**
8164
8577
  * Fired just before `closed` when the show carries ink annotations, so the
8165
8578
  * host can offer the keep/discard prompt (mirrors React's exit flow).
@@ -8167,6 +8580,7 @@ declare class PresentationOverlayComponent implements OnInit {
8167
8580
  readonly annotationsExit: _angular_core.OutputEmitterRef<SlideAnnotationMap>;
8168
8581
  /** Zero-based index into `slides()`. */
8169
8582
  protected readonly currentIndex: _angular_core.WritableSignal<number>;
8583
+ private readonly syncExternalIndex;
8170
8584
  /**
8171
8585
  * Active slide-transition animation: the outgoing slide + the incoming
8172
8586
  * slide's transition, played over the new slide. Cleared on completion.
@@ -8185,8 +8599,6 @@ declare class PresentationOverlayComponent implements OnInit {
8185
8599
  * target slide on click. Descendants resolve this same instance.
8186
8600
  */
8187
8601
  private readonly zoomNavigation;
8188
- /** Whether the live-caption bar is shown. */
8189
- protected readonly subtitlesVisible: _angular_core.WritableSignal<boolean>;
8190
8602
  /** The slide stage root; animation styles are applied to its elements. */
8191
8603
  private readonly stageRef;
8192
8604
  /**
@@ -8291,7 +8703,7 @@ declare class PresentationOverlayComponent implements OnInit {
8291
8703
  private goToSlide;
8292
8704
  private emitClosed;
8293
8705
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PresentationOverlayComponent, never>;
8294
- 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; }; }, { "indexChange": "indexChange"; "closed": "closed"; "annotationsExit": "annotationsExit"; }, never, never, true, never>;
8706
+ 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; }; "showWithAnimation": { "alias": "showWithAnimation"; "required": false; "isSignal": true; }; "subtitlesVisible": { "alias": "subtitlesVisible"; "required": false; "isSignal": true; }; }, { "indexChange": "indexChange"; "closed": "closed"; "subtitlesChange": "subtitlesChange"; "annotationsExit": "annotationsExit"; }, never, never, true, never>;
8295
8707
  }
8296
8708
 
8297
8709
  /**
@@ -8393,6 +8805,8 @@ declare class InspectorPanelComponent {
8393
8805
  readonly element: _angular_core.InputSignal<PptxElement>;
8394
8806
  /** Zero-based index of the active slide. */
8395
8807
  readonly slideIndex: _angular_core.InputSignal<number>;
8808
+ /** Whether mutation controls in the inspector are enabled. */
8809
+ readonly canEdit: _angular_core.InputSignal<boolean>;
8396
8810
  protected readonly editor: EditorStateService;
8397
8811
  /** Reactive viewport / pointer flags (drives the bottom-sheet layout). */
8398
8812
  protected readonly mobile: IsMobileService;
@@ -8443,6 +8857,8 @@ declare class InspectorPanelComponent {
8443
8857
  protected readonly tableEl: _angular_core.Signal<TablePptxElement | undefined>;
8444
8858
  /** The selected element narrowed to a chart, or undefined. */
8445
8859
  protected readonly chartEl: _angular_core.Signal<ChartPptxElement | undefined>;
8860
+ protected readonly imageEl: _angular_core.Signal<PptxElement | undefined>;
8861
+ protected readonly mediaEl: _angular_core.Signal<MediaPptxElement | undefined>;
8446
8862
  /** The selected element narrowed to SmartArt, or undefined. */
8447
8863
  protected readonly smartArtEl: _angular_core.Signal<SmartArtPptxElement | undefined>;
8448
8864
  /** The selected SmartArt element's data model, or undefined. */
@@ -8462,6 +8878,7 @@ declare class InspectorPanelComponent {
8462
8878
  protected onElementReplace(updated: PptxElement): void;
8463
8879
  /** The active slide's element-animation list (animations live on the slide). */
8464
8880
  protected readonly slideAnimations: _angular_core.Signal<readonly PptxElementAnimation[]>;
8881
+ protected readonly slideElements: _angular_core.Signal<readonly PptxElement[]>;
8465
8882
  /** Commit an updated slide-level animation list as one history entry. */
8466
8883
  protected onAnimationsChange(animations: PptxElementAnimation[]): void;
8467
8884
  protected onPositionChange(event: Event, axis: 'x' | 'y'): void;
@@ -8476,7 +8893,7 @@ declare class InspectorPanelComponent {
8476
8893
  protected onItalicToggle(): void;
8477
8894
  protected onUnderlineToggle(): void;
8478
8895
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<InspectorPanelComponent, never>;
8479
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<InspectorPanelComponent, "pptx-inspector-panel", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "slideIndex": { "alias": "slideIndex"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
8896
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InspectorPanelComponent, "pptx-inspector-panel", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "slideIndex": { "alias": "slideIndex"; "required": true; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
8480
8897
  }
8481
8898
 
8482
8899
  declare class GradientPickerComponent {
@@ -8547,7 +8964,7 @@ declare class TextAdvancedPanelComponent {
8547
8964
  protected readonly elementKey: _angular_core.Signal<string>;
8548
8965
  /** Exposed option arrays for the template. */
8549
8966
  protected readonly alignOptions: [NonNullable<"center" | "left" | "right" | "justify" | "justLow" | "dist" | "thaiDist" | undefined>, string][];
8550
- protected readonly vAlignOptions: [NonNullable<"top" | "middle" | "bottom" | undefined>, string][];
8967
+ protected readonly vAlignOptions: [NonNullable<"top" | "bottom" | "middle" | undefined>, string][];
8551
8968
  protected readonly textDirectionOptions: [NonNullable<"eaVert" | "wordArtVert" | "wordArtVertRtl" | "mongolianVert" | "horizontal" | "vertical" | "vertical270" | undefined>, string][];
8552
8969
  protected alignLabel(align: NonNullable<TextStyle['align']>): string;
8553
8970
  protected onAlignChange(align: NonNullable<TextStyle['align']>): void;
@@ -9079,6 +9496,8 @@ declare class AnimationAuthorPanelComponent {
9079
9496
  * emits the entire array.
9080
9497
  */
9081
9498
  readonly animations: _angular_core.InputSignal<readonly PptxElementAnimation[]>;
9499
+ /** Every element on the active slide, including elements with no animation. */
9500
+ readonly slideElements: _angular_core.InputSignal<readonly PptxElement[]>;
9082
9501
  /**
9083
9502
  * Whether editing controls are enabled. When `false` all selects/inputs are
9084
9503
  * disabled. Defaults to `true`.
@@ -9155,21 +9574,13 @@ declare class AnimationAuthorPanelComponent {
9155
9574
  /** Human-readable order label (1-based, e.g. "2 of 4"). */
9156
9575
  protected readonly orderLabel: _angular_core.Signal<any>;
9157
9576
  /**
9158
- * Elements on the slide excluding the selected element, used to populate
9159
- * the trigger-shape selector. The slide's elements are not available in this
9160
- * component's inputs, so the orchestrator must pass them in via
9161
- * `[animations]` indirectly; here we surface only what we have access to.
9162
- *
9163
- * NOTE: The trigger-shape dropdown is limited to element ids because this
9164
- * panel does not receive the full slide element list. The orchestrator can
9165
- * replace this with a richer element label by wrapping the component or
9166
- * projecting content. This matches the React implementation which used
9167
- * `activeSlide.elements`.
9577
+ * Every other element on the active slide, including elements that do not
9578
+ * yet have an animation entry. Used by the on-shape-click trigger picker.
9168
9579
  */
9169
- protected readonly otherElements: _angular_core.Signal<{
9170
- id: string;
9171
- }[]>;
9580
+ protected readonly otherElements: _angular_core.Signal<PptxElement[]>;
9581
+ protected elementLabel(element: PptxElement): string;
9172
9582
  private emit;
9583
+ protected onPreview(): void;
9173
9584
  protected onEntranceChange(event: Event): void;
9174
9585
  protected onExitChange(event: Event): void;
9175
9586
  protected onEmphasisChange(event: Event): void;
@@ -9186,21 +9597,22 @@ declare class AnimationAuthorPanelComponent {
9186
9597
  protected onMoveDown(): void;
9187
9598
  protected onRemove(): void;
9188
9599
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnimationAuthorPanelComponent, never>;
9189
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnimationAuthorPanelComponent, "pptx-animation-author-panel", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "slideIndex": { "alias": "slideIndex"; "required": true; "isSignal": true; }; "animations": { "alias": "animations"; "required": true; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, { "animationsChange": "animationsChange"; }, never, never, true, never>;
9600
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnimationAuthorPanelComponent, "pptx-animation-author-panel", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "slideIndex": { "alias": "slideIndex"; "required": true; "isSignal": true; }; "animations": { "alias": "animations"; "required": true; "isSignal": true; }; "slideElements": { "alias": "slideElements"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, { "animationsChange": "animationsChange"; }, never, never, true, never>;
9190
9601
  }
9191
9602
 
9192
9603
  /** Descriptor for a single menu row. */
9193
- interface MenuRow {
9604
+ interface MobileMenuRow {
9194
9605
  key: string;
9195
9606
  labelKey: string;
9196
9607
  sublabelKey?: string;
9197
- /** SVG path data (24 × 24 view-box). */
9608
+ /** SVG path data (24 x 24 view-box). */
9198
9609
  svgPath: string;
9199
9610
  disabled?: boolean;
9200
9611
  active?: boolean;
9201
9612
  danger?: boolean;
9202
9613
  emit: () => void;
9203
9614
  }
9615
+
9204
9616
  declare class MobileMenuSheetComponent {
9205
9617
  /** Whether the sheet is visible. */
9206
9618
  readonly open: _angular_core.InputSignal<boolean>;
@@ -9212,6 +9624,8 @@ declare class MobileMenuSheetComponent {
9212
9624
  readonly showNotes: _angular_core.InputSignal<boolean>;
9213
9625
  /** Whether editor-only actions (find-replace etc.) are available. */
9214
9626
  readonly canEdit: _angular_core.InputSignal<boolean>;
9627
+ /** Toolbar buttons the host wants hidden ('notes' drops the row, 'export' drops all four export rows). */
9628
+ readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
9215
9629
  /** Sheet dismissed (backdrop tap, swipe, or Escape). */
9216
9630
  readonly closed: _angular_core.OutputEmitterRef<void>;
9217
9631
  /** Open the find-in-slides bar. */
@@ -9238,14 +9652,14 @@ declare class MobileMenuSheetComponent {
9238
9652
  readonly exportVideo: _angular_core.OutputEmitterRef<void>;
9239
9653
  /** Open the print dialog. */
9240
9654
  readonly print: _angular_core.OutputEmitterRef<void>;
9241
- readonly rows: _angular_core.Signal<MenuRow[]>;
9655
+ readonly rows: _angular_core.Signal<MobileMenuRow[]>;
9242
9656
  /**
9243
9657
  * Emit the row's action and close the sheet so the user returns to the
9244
9658
  * presentation immediately.
9245
9659
  */
9246
- onRowClick(row: MenuRow): void;
9660
+ onRowClick(row: MobileMenuRow): void;
9247
9661
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MobileMenuSheetComponent, never>;
9248
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileMenuSheetComponent, "pptx-mobile-menu-sheet", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "showNotes": { "alias": "showNotes"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "openFind": "openFind"; "openSorter": "openSorter"; "toggleNotes": "toggleNotes"; "insertText": "insertText"; "present": "present"; "openFile": "openFile"; "savePptx": "savePptx"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "print": "print"; }, never, never, true, never>;
9662
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileMenuSheetComponent, "pptx-mobile-menu-sheet", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "showNotes": { "alias": "showNotes"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "openFind": "openFind"; "openSorter": "openSorter"; "toggleNotes": "toggleNotes"; "insertText": "insertText"; "present": "present"; "openFile": "openFile"; "savePptx": "savePptx"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "print": "print"; }, never, never, true, never>;
9249
9663
  }
9250
9664
 
9251
9665
  declare class MobileSlidesSheetComponent {
@@ -9278,6 +9692,8 @@ declare class MobileSlidesSheetComponent {
9278
9692
  }
9279
9693
 
9280
9694
  declare class MobileSheetComponent {
9695
+ private readonly panel;
9696
+ private releaseFocus;
9281
9697
  /** Controls whether the sheet is visible. */
9282
9698
  readonly open: _angular_core.InputSignal<boolean>;
9283
9699
  /** Optional header text displayed above the body. */
@@ -9298,7 +9714,7 @@ declare class MobileSheetComponent {
9298
9714
  /** Whether a drag is in progress (suppresses CSS transition during drag). */
9299
9715
  readonly isDragging: _angular_core.WritableSignal<boolean>;
9300
9716
  readonly panelStyle: _angular_core.Signal<Record<string, string>>;
9301
- onDocumentKeydown(event: KeyboardEvent): void;
9717
+ constructor();
9302
9718
  onPointerDown(event: PointerEvent): void;
9303
9719
  onPointerMove(event: PointerEvent): void;
9304
9720
  onPointerUp(event: PointerEvent): void;
@@ -9306,6 +9722,22 @@ declare class MobileSheetComponent {
9306
9722
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileSheetComponent, "pptx-mobile-sheet", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "heightFraction": { "alias": "heightFraction"; "required": false; "isSignal": true; }; "fullScreen": { "alias": "fullScreen"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*"], true, never>;
9307
9723
  }
9308
9724
 
9725
+ /**
9726
+ * toolbar-visibility.ts: thin per-component wrapper around the shared
9727
+ * `isActionHidden` helper (see `pptx-viewer-shared`'s `render/toolbar-actions`)
9728
+ * so templates can gate a button/tab with a single `toolbar.isHidden('id')`
9729
+ * call instead of repeating `isActionHidden(id, hiddenActions())` everywhere.
9730
+ *
9731
+ * Mirrors how other pure shared helpers are consumed in this package: assigned
9732
+ * straight onto the component as a `protected readonly` field (see
9733
+ * `ribbon-file-section.component.ts`'s `protected readonly date = formatBackstageDate;`).
9734
+ */
9735
+
9736
+ interface ToolbarVisibility {
9737
+ /** True when `id` is present in the host's `hiddenActions` list. */
9738
+ isHidden(id: ToolbarActionId): boolean;
9739
+ }
9740
+
9309
9741
  declare class MobileToolbarComponent {
9310
9742
  /** Whether the undo action is available. */
9311
9743
  readonly canUndo: _angular_core.InputSignal<boolean>;
@@ -9317,6 +9749,8 @@ declare class MobileToolbarComponent {
9317
9749
  readonly canEdit: _angular_core.InputSignal<boolean>;
9318
9750
  /** Whether the mobile-menu sheet is currently open (highlights the button). */
9319
9751
  readonly menuOpen: _angular_core.InputSignal<boolean>;
9752
+ /** Toolbar buttons the host wants hidden (gates Undo/Redo independently). */
9753
+ readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
9320
9754
  /** User tapped the Menu (hamburger) button. */
9321
9755
  readonly toggleMenu: _angular_core.OutputEmitterRef<void>;
9322
9756
  /** User tapped Undo. */
@@ -9327,8 +9761,9 @@ declare class MobileToolbarComponent {
9327
9761
  readonly save: _angular_core.OutputEmitterRef<void>;
9328
9762
  /** User tapped Present. */
9329
9763
  readonly present: _angular_core.OutputEmitterRef<void>;
9764
+ protected readonly toolbar: ToolbarVisibility;
9330
9765
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MobileToolbarComponent, never>;
9331
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileToolbarComponent, "pptx-mobile-toolbar", never, { "canUndo": { "alias": "canUndo"; "required": false; "isSignal": true; }; "canRedo": { "alias": "canRedo"; "required": false; "isSignal": true; }; "canPresent": { "alias": "canPresent"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "menuOpen": { "alias": "menuOpen"; "required": false; "isSignal": true; }; }, { "toggleMenu": "toggleMenu"; "undo": "undo"; "redo": "redo"; "save": "save"; "present": "present"; }, never, never, true, never>;
9766
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileToolbarComponent, "pptx-mobile-toolbar", never, { "canUndo": { "alias": "canUndo"; "required": false; "isSignal": true; }; "canRedo": { "alias": "canRedo"; "required": false; "isSignal": true; }; "canPresent": { "alias": "canPresent"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "menuOpen": { "alias": "menuOpen"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; }, { "toggleMenu": "toggleMenu"; "undo": "undo"; "redo": "redo"; "save": "save"; "present": "present"; }, never, never, true, never>;
9332
9767
  }
9333
9768
 
9334
9769
  declare class NotesPanelComponent {
@@ -9410,17 +9845,35 @@ declare class SlidesPanelComponent {
9410
9845
  /** Emits the zero-based index of the card the user clicked. */
9411
9846
  readonly select: _angular_core.OutputEmitterRef<number>;
9412
9847
  protected readonly editor: EditorStateService;
9848
+ private readonly translate;
9849
+ private readonly scrollViewport;
9850
+ private readonly scrollTop;
9851
+ private readonly viewportHeight;
9413
9852
  /** Zoom level that fits the full canvas width into THUMB_W pixels. */
9414
9853
  readonly thumbZoom: _angular_core.Signal<number>;
9415
9854
  /** Pixel height of the clipping box (aspect-correct). */
9416
9855
  readonly thumbH: _angular_core.Signal<number>;
9417
9856
  /** ngStyle object for the thumbnail clipping box. */
9418
9857
  readonly clipStyle: _angular_core.Signal<Record<string, string>>;
9858
+ readonly itemHeight: _angular_core.Signal<number>;
9859
+ readonly shouldVirtualize: _angular_core.Signal<boolean>;
9860
+ readonly virtualRange: _angular_core.Signal<VirtualizedRange>;
9861
+ readonly renderedSlides: _angular_core.Signal<{
9862
+ slide: pptx_viewer_core.PptxSlide;
9863
+ index: number;
9864
+ section: pptx_viewer_core.PptxSection | undefined;
9865
+ sectionStart: boolean;
9866
+ }[]>;
9867
+ constructor();
9868
+ onScroll(): void;
9869
+ private syncViewport;
9419
9870
  onDuplicate(index: number): void;
9420
9871
  onDelete(index: number): void;
9421
9872
  onMoveUp(index: number): void;
9422
9873
  onMoveDown(index: number): void;
9423
9874
  onAddSlide(): void;
9875
+ onRenameSection(sectionId: string, currentName: string): void;
9876
+ sectionIndex(sectionId: string): number;
9424
9877
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlidesPanelComponent, never>;
9425
9878
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlidesPanelComponent, "pptx-slides-panel", never, { "canvasSize": { "alias": "canvasSize"; "required": true; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; }, { "select": "select"; }, never, never, true, never>;
9426
9879
  }
@@ -9454,6 +9907,8 @@ declare class StatusBarComponent {
9454
9907
  readonly sorterActive: _angular_core.InputSignal<boolean>;
9455
9908
  /** True when the presentation overlay is open (active-state styling). */
9456
9909
  readonly presenting: _angular_core.InputSignal<boolean>;
9910
+ /** Toolbar buttons the host wants hidden (notes/fullscreen/zoom independently). */
9911
+ readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
9457
9912
  readonly toggleNotes: _angular_core.OutputEmitterRef<void>;
9458
9913
  readonly normalView: _angular_core.OutputEmitterRef<void>;
9459
9914
  readonly openSorter: _angular_core.OutputEmitterRef<void>;
@@ -9462,6 +9917,7 @@ declare class StatusBarComponent {
9462
9917
  readonly zoomOut: _angular_core.OutputEmitterRef<void>;
9463
9918
  readonly zoomReset: _angular_core.OutputEmitterRef<void>;
9464
9919
  private readonly translate;
9920
+ protected readonly toolbar: ToolbarVisibility;
9465
9921
  /** "Normal" is active when neither the sorter nor the slideshow is showing. */
9466
9922
  protected isNormal(): boolean;
9467
9923
  protected min(a: number, b: number): number;
@@ -9476,7 +9932,7 @@ declare class StatusBarComponent {
9476
9932
  /** Relative age label for a saved timestamp ("just now" / "N min ago"). */
9477
9933
  private formatAutosaveAge;
9478
9934
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatusBarComponent, never>;
9479
- 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; }; "autosaveStatus": { "alias": "autosaveStatus"; "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>;
9935
+ 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; }; "autosaveStatus": { "alias": "autosaveStatus"; "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; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; }, { "toggleNotes": "toggleNotes"; "normalView": "normalView"; "openSorter": "openSorter"; "slideShow": "slideShow"; "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "zoomReset": "zoomReset"; }, never, never, true, never>;
9480
9936
  }
9481
9937
 
9482
9938
  declare class EditorContextMenuComponent {
@@ -9531,6 +9987,13 @@ declare class EditorContextMenuComponent {
9531
9987
  }
9532
9988
 
9533
9989
  declare class ExportService {
9990
+ private static readonly PRESENTATION_MIME;
9991
+ /** Build a resolution-independent SVG string directly from slide data. */
9992
+ exportSlideToSvg(slide: PptxSlide, width: number, height: number, options?: SvgExportOptions): string;
9993
+ /** Build an SVG Blob directly from slide data. */
9994
+ exportSlideToSvgBlob(slide: PptxSlide, width: number, height: number, options?: SvgExportOptions): Blob;
9995
+ /** Build SVG strings for all selected slides in a parsed presentation. */
9996
+ exportAllSlidesToSvg(data: PptxData, options?: SvgExportOptions): string[];
9534
9997
  /**
9535
9998
  * Trigger a browser download of serialized `.pptx` bytes.
9536
9999
  *
@@ -9538,6 +10001,8 @@ declare class ExportService {
9538
10001
  * @param fileName - Suggested download file name (unsafe chars are stripped).
9539
10002
  */
9540
10003
  savePptx(bytes: Uint8Array, fileName: string): void;
10004
+ /** Download serialized presentation bytes using the matching package MIME type. */
10005
+ savePresentation(bytes: Uint8Array, fileName: string, format: PptxSaveFormat): void;
9541
10006
  /**
9542
10007
  * Rasterize a single DOM element to PNG and trigger a browser download.
9543
10008
  *
@@ -9546,6 +10011,8 @@ declare class ExportService {
9546
10011
  * @param scale - Device-pixel ratio multiplier (default 2 for sharp output).
9547
10012
  */
9548
10013
  exportElementToPng(el: HTMLElement, fileName: string, scale?: number): Promise<void>;
10014
+ /** Rasterize an element and copy it to the system clipboard as a PNG image. */
10015
+ copyElementAsPng(el: HTMLElement, scale?: number): Promise<void>;
9549
10016
  /**
9550
10017
  * Rasterize a single element to a canvas (passthrough to html2canvas-pro).
9551
10018
  * Capture each slide's canvas *while that slide is the live DOM*: the
@@ -9590,6 +10057,21 @@ declare class ExportService {
9590
10057
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ExportService>;
9591
10058
  }
9592
10059
 
10060
+ /**
10061
+ * Canvas Export Utilities for the Angular viewer.
10062
+ *
10063
+ * Provides a safe wrapper around html2canvas that resolves modern CSS colour
10064
+ * functions (oklch, oklab, lch, lab, color()) into rgb()/hex before rendering,
10065
+ * then applies the full CSS preprocessing pipeline (backdrop-filter,
10066
+ * mix-blend-mode, 3D transforms, unsupported features).
10067
+ *
10068
+ * The pure colour-normalisation passes and the CSS preprocessing now live once
10069
+ * in `pptx-viewer-shared` (`export/canvas-color-fix`, `export/css-preprocessing`),
10070
+ * inlined here at build time via `../internal/shared-src`. Only the thin
10071
+ * `renderToCanvas` wrapper that imports `html2canvas-pro` stays local; `_testing`
10072
+ * is re-exported so the colocated unit tests keep their historical import path.
10073
+ */
10074
+
9593
10075
  /**
9594
10076
  * A drop-in replacement for `html2canvas(element, options)` that first
9595
10077
  * resolves any oklch / oklab / lch / lab / color() values in the cloned
@@ -9881,6 +10363,8 @@ declare class EmbeddedFontsService {
9881
10363
  */
9882
10364
  readonly fontFamilies: _angular_core.WritableSignal<string[]>;
9883
10365
  private styleEl;
10366
+ private embeddedCss;
10367
+ private userCss;
9884
10368
  /** Object URLs minted on the most recent `setFonts`; revoked when superseded. */
9885
10369
  private liveObjectUrls;
9886
10370
  /** Mints a Blob object URL for de-obfuscated font bytes (impure side effect). */
@@ -9894,6 +10378,8 @@ declare class EmbeddedFontsService {
9894
10378
  * leak across re-parses. Pass an empty list (or `null`) to clear everything.
9895
10379
  */
9896
10380
  setFonts(fonts: readonly PptxEmbeddedFont[] | null | undefined): void;
10381
+ /** Replace the licensed font sources supplied by the host application. */
10382
+ setHostFonts(fonts: readonly ViewerFontSource[] | null | undefined): void;
9897
10383
  /**
9898
10384
  * Remove the injected `<style>` element, revoke all live object URLs, and
9899
10385
  * reset the signals. Called automatically on destroy; safe to call manually.
@@ -9907,22 +10393,6 @@ declare class EmbeddedFontsService {
9907
10393
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<EmbeddedFontsService>;
9908
10394
  }
9909
10395
 
9910
- /**
9911
- * Thin re-export shim → vendored `pptx-viewer-shared` (`render/embedded-fonts`).
9912
- *
9913
- * The pure embedded-font `@font-face` assembly (URL/format validation, XOR
9914
- * de-obfuscation fallback, resolved-variant -> stylesheet/family-list build)
9915
- * was extracted to shared and is consumed by every binding. This shim preserves
9916
- * the historical Angular import surface.
9917
- *
9918
- * `EMBEDDED_FONTS_STYLE_ID` stays Angular-local: it is the DOM id of the managed
9919
- * `<style>` element this binding injects, and is intentionally distinct from the
9920
- * React binding's id.
9921
- */
9922
-
9923
- /** DOM id of the managed `<style>` element the service injects into `<head>`. */
9924
- declare const EMBEDDED_FONTS_STYLE_ID = "pptx-angular-embedded-fonts";
9925
-
9926
10396
  /** A single rendered playback step (one click group). */
9927
10397
  interface AnimationStepView {
9928
10398
  /** 1-based step number for display. */
@@ -9952,6 +10422,220 @@ declare class AnimationPanelComponent {
9952
10422
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnimationPanelComponent, "pptx-animation-panel", never, { "groups": { "alias": "groups"; "required": true; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "isPlaying": { "alias": "isPlaying"; "required": false; "isSignal": true; }; }, { "playRequested": "playRequested"; "pauseRequested": "pauseRequested"; "stepRequested": "stepRequested"; "resetRequested": "resetRequested"; "seek": "seek"; }, never, never, true, never>;
9953
10423
  }
9954
10424
 
10425
+ declare class ActionSettingsPanelComponent {
10426
+ readonly element: _angular_core.InputSignal<PptxElement>;
10427
+ readonly slideCount: _angular_core.InputSignal<number>;
10428
+ readonly patch: _angular_core.OutputEmitterRef<Partial<PptxElement>>;
10429
+ protected readonly triggers: readonly ["click", "hover"];
10430
+ protected readonly actionTypes: readonly {
10431
+ value: ElementActionType;
10432
+ key: string;
10433
+ }[];
10434
+ private readonly clickAction;
10435
+ private readonly hoverAction;
10436
+ protected actionFor(trigger: 'click' | 'hover'): ElementAction | undefined;
10437
+ private update;
10438
+ protected onType(event: Event, trigger: 'click' | 'hover'): void;
10439
+ protected onUrl(event: Event, trigger: 'click' | 'hover'): void;
10440
+ protected onSlide(event: Event, trigger: 'click' | 'hover'): void;
10441
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ActionSettingsPanelComponent, never>;
10442
+ 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>;
10443
+ }
10444
+
10445
+ type ImageElement = PptxElement & {
10446
+ altText?: string;
10447
+ imageEffects?: PptxImageEffects;
10448
+ };
10449
+ declare class ImagePropertiesPanelComponent {
10450
+ readonly element: _angular_core.InputSignal<PptxElement>;
10451
+ readonly patch: _angular_core.OutputEmitterRef<Partial<PptxElement>>;
10452
+ protected readonly image: _angular_core.Signal<ImageElement>;
10453
+ protected readonly effects: _angular_core.Signal<PptxImageEffects>;
10454
+ 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%)"]];
10455
+ protected readonly sliders: readonly [{
10456
+ readonly key: "brightness";
10457
+ readonly label: "pptx.imageAdjustments.brightness";
10458
+ readonly min: -100;
10459
+ readonly max: 100;
10460
+ }, {
10461
+ readonly key: "contrast";
10462
+ readonly label: "pptx.imageAdjustments.contrast";
10463
+ readonly min: -100;
10464
+ readonly max: 100;
10465
+ }, {
10466
+ readonly key: "saturation";
10467
+ readonly label: "pptx.image.saturation";
10468
+ readonly min: -100;
10469
+ readonly max: 100;
10470
+ }, {
10471
+ readonly key: "alphaModFix";
10472
+ readonly label: "pptx.imageAdjustments.transparency";
10473
+ readonly min: 0;
10474
+ readonly max: 100;
10475
+ }, {
10476
+ readonly key: "biLevel";
10477
+ readonly label: "pptx.imageAdjustments.biLevelThreshold";
10478
+ readonly min: 0;
10479
+ readonly max: 100;
10480
+ }];
10481
+ static supports(element: PptxElement): boolean;
10482
+ protected effectValue(key: keyof PptxImageEffects): number;
10483
+ private updateEffects;
10484
+ protected onAltText(event: Event): void;
10485
+ protected onEffectNumber(key: keyof PptxImageEffects, event: Event): void;
10486
+ protected onGrayscale(event: Event): void;
10487
+ protected onArtistic(event: Event): void;
10488
+ protected onDuotone(event: Event, key: 'color1' | 'color2'): void;
10489
+ protected clearDuotone(): void;
10490
+ protected reset(): void;
10491
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ImagePropertiesPanelComponent, never>;
10492
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ImagePropertiesPanelComponent, "pptx-image-properties-panel", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; }, { "patch": "patch"; }, never, never, true, never>;
10493
+ }
10494
+
10495
+ declare class MediaPropertiesPanelComponent {
10496
+ readonly element: _angular_core.InputSignal<MediaPptxElement>;
10497
+ readonly canEdit: _angular_core.InputSignal<boolean>;
10498
+ readonly patch: _angular_core.OutputEmitterRef<Partial<PptxElement>>;
10499
+ private readonly loader;
10500
+ protected readonly media: _angular_core.Signal<MediaPptxElement>;
10501
+ protected readonly mediaDataUrls: _angular_core.Signal<Map<any, any>>;
10502
+ protected readonly speeds: readonly [0.25, 0.5, 0.75, 1, 1.25, 1.5, 2, 3, 4];
10503
+ protected readonly volumePercent: _angular_core.Signal<number>;
10504
+ protected readonly toggles: _angular_core.Signal<readonly [{
10505
+ readonly key: "autoPlay";
10506
+ readonly label: "pptx.media.startAutomatically";
10507
+ readonly value: boolean;
10508
+ }, {
10509
+ readonly key: "loop";
10510
+ readonly label: "pptx.media.loop";
10511
+ readonly value: boolean;
10512
+ }, {
10513
+ readonly key: "playAcrossSlides";
10514
+ readonly label: "pptx.media.playAcrossSlides";
10515
+ readonly value: boolean;
10516
+ }, {
10517
+ readonly key: "fullScreen";
10518
+ readonly label: "pptx.media.fullScreen";
10519
+ readonly value: boolean;
10520
+ }, {
10521
+ readonly key: "hideWhenNotPlaying";
10522
+ readonly label: "pptx.media.hideWhenNotPlaying";
10523
+ readonly value: boolean;
10524
+ }]>;
10525
+ protected numberPatch(key: keyof MediaPptxElement, event: Event): void;
10526
+ protected volumeChange(event: Event): void;
10527
+ protected booleanPatch(key: keyof MediaPptxElement, event: Event): void;
10528
+ protected addBookmark(): void;
10529
+ protected removeBookmark(index: number): void;
10530
+ protected updateBookmark(index: number, key: keyof MediaBookmark, event: Event): void;
10531
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MediaPropertiesPanelComponent, never>;
10532
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MediaPropertiesPanelComponent, "pptx-media-properties-panel", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, { "patch": "patch"; }, never, never, true, never>;
10533
+ }
10534
+
10535
+ declare class HeaderFooterDialogComponent {
10536
+ readonly open: _angular_core.InputSignal<boolean>;
10537
+ readonly value: _angular_core.InputSignal<PptxHeaderFooter>;
10538
+ readonly save: _angular_core.OutputEmitterRef<PptxHeaderFooter>;
10539
+ readonly close: _angular_core.OutputEmitterRef<void>;
10540
+ protected readonly draft: _angular_core.WritableSignal<PptxHeaderFooter>;
10541
+ constructor();
10542
+ protected setFlag(key: keyof PptxHeaderFooter, event: Event): void;
10543
+ protected setText(key: keyof PptxHeaderFooter, event: Event): void;
10544
+ protected apply(): void;
10545
+ protected closeFromBackdrop(event: MouseEvent): void;
10546
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderFooterDialogComponent, never>;
10547
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<HeaderFooterDialogComponent, "pptx-header-footer-dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "save": "save"; "close": "close"; }, never, never, true, never>;
10548
+ }
10549
+
10550
+ declare class MediaPreviewComponent {
10551
+ readonly element: _angular_core.InputSignal<MediaPptxElement>;
10552
+ readonly mediaDataUrls: _angular_core.InputSignal<Map<string, string>>;
10553
+ readonly canEdit: _angular_core.InputSignal<boolean>;
10554
+ readonly patch: _angular_core.OutputEmitterRef<Partial<PptxElement>>;
10555
+ private readonly mediaEl;
10556
+ protected readonly currentTime: _angular_core.WritableSignal<number>;
10557
+ protected readonly liveDuration: _angular_core.WritableSignal<number>;
10558
+ protected readonly isPlaying: _angular_core.WritableSignal<boolean>;
10559
+ protected readonly source: _angular_core.Signal<string | undefined>;
10560
+ protected readonly duration: _angular_core.Signal<number>;
10561
+ protected readonly timeLabel: _angular_core.Signal<string>;
10562
+ protected readonly durationLabel: _angular_core.Signal<string>;
10563
+ private readonly liveWidth;
10564
+ private readonly liveHeight;
10565
+ protected readonly resolution: _angular_core.Signal<string | undefined>;
10566
+ protected readonly fileName: _angular_core.Signal<string>;
10567
+ protected syncTime(): void;
10568
+ protected syncDuration(): void;
10569
+ protected togglePlay(): void;
10570
+ protected seekTo(time: number): void;
10571
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MediaPreviewComponent, never>;
10572
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MediaPreviewComponent, "pptx-media-preview", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, { "patch": "patch"; }, never, never, true, never>;
10573
+ }
10574
+
10575
+ declare class MediaTrimTimelineComponent {
10576
+ readonly duration: _angular_core.InputSignal<number>;
10577
+ readonly trimStartMs: _angular_core.InputSignal<number>;
10578
+ readonly trimEndMs: _angular_core.InputSignal<number>;
10579
+ readonly currentTime: _angular_core.InputSignal<number>;
10580
+ readonly bookmarks: _angular_core.InputSignal<MediaBookmark[]>;
10581
+ readonly canEdit: _angular_core.InputSignal<boolean>;
10582
+ readonly trimChange: _angular_core.OutputEmitterRef<MediaTrimRange>;
10583
+ readonly seek: _angular_core.OutputEmitterRef<number>;
10584
+ private readonly bar;
10585
+ private readonly dragging;
10586
+ protected readonly geometry: _angular_core.Signal<MediaTimelineGeometry>;
10587
+ protected readonly startLabel: _angular_core.Signal<string>;
10588
+ protected readonly endLabel: _angular_core.Signal<string>;
10589
+ protected beginDrag(handle: MediaTrimHandle, event: PointerEvent): void;
10590
+ protected continueDrag(event: PointerEvent): void;
10591
+ protected endDrag(): void;
10592
+ protected seekFromClick(event: MouseEvent): void;
10593
+ protected seekBookmark(bookmark: MediaBookmark, event: MouseEvent): void;
10594
+ protected bookmarkPercent(bookmark: MediaBookmark): number;
10595
+ private timeFromPointer;
10596
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MediaTrimTimelineComponent, never>;
10597
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<MediaTrimTimelineComponent, "pptx-media-trim-timeline", never, { "duration": { "alias": "duration"; "required": true; "isSignal": true; }; "trimStartMs": { "alias": "trimStartMs"; "required": false; "isSignal": true; }; "trimEndMs": { "alias": "trimEndMs"; "required": false; "isSignal": true; }; "currentTime": { "alias": "currentTime"; "required": false; "isSignal": true; }; "bookmarks": { "alias": "bookmarks"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, { "trimChange": "trimChange"; "seek": "seek"; }, never, never, true, never>;
10598
+ }
10599
+
10600
+ declare class SlideThemeOverridePanelComponent {
10601
+ readonly slide: _angular_core.InputSignal<PptxSlide>;
10602
+ readonly theme: _angular_core.InputSignal<PptxTheme | undefined>;
10603
+ readonly patch: _angular_core.OutputEmitterRef<Partial<PptxSlide>>;
10604
+ protected readonly aliases: readonly ["bg1", "tx1", "bg2", "tx2", "accent1", "accent2", "accent3", "accent4", "accent5", "accent6", "hlink", "folHlink"];
10605
+ protected readonly slots: readonly ["dk1", "lt1", "dk2", "lt2", "accent1", "accent2", "accent3", "accent4", "accent5", "accent6", "hlink", "folHlink"];
10606
+ protected readonly labels: Record<"accent1" | "accent2" | "accent3" | "accent4" | "accent5" | "accent6" | "hlink" | "folHlink" | "tx1" | "tx2" | "bg1" | "bg2", string>;
10607
+ protected readonly active: _angular_core.Signal<boolean>;
10608
+ protected current(alias: ColorMapAliasKey): string;
10609
+ protected slotColor(slot: string): string | undefined;
10610
+ private emitOverride;
10611
+ protected toggle(event: Event): void;
10612
+ protected change(alias: ColorMapAliasKey, event: Event): void;
10613
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlideThemeOverridePanelComponent, never>;
10614
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlideThemeOverridePanelComponent, "pptx-slide-theme-override-panel", never, { "slide": { "alias": "slide"; "required": true; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; }, { "patch": "patch"; }, never, never, true, never>;
10615
+ }
10616
+
10617
+ interface CustomThemeEdit {
10618
+ colorScheme: PptxThemeColorScheme;
10619
+ fontScheme: PptxThemeFontScheme;
10620
+ name: string;
10621
+ }
10622
+ declare class ThemeEditorFieldsComponent {
10623
+ readonly theme: _angular_core.InputSignal<PptxTheme | undefined>;
10624
+ readonly applyTheme: _angular_core.OutputEmitterRef<CustomThemeEdit>;
10625
+ readonly slots: Array<keyof PptxThemeColorScheme>;
10626
+ readonly colors: _angular_core.WritableSignal<PptxThemeColorScheme>;
10627
+ readonly name: _angular_core.WritableSignal<string>;
10628
+ readonly majorFont: _angular_core.WritableSignal<string>;
10629
+ readonly minorFont: _angular_core.WritableSignal<string>;
10630
+ ngOnInit(): void;
10631
+ protected value(event: Event): string;
10632
+ protected color(slot: keyof PptxThemeColorScheme): string;
10633
+ protected setColor(slot: keyof PptxThemeColorScheme, event: Event): void;
10634
+ protected apply(): void;
10635
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemeEditorFieldsComponent, never>;
10636
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThemeEditorFieldsComponent, "pptx-theme-editor-fields", never, { "theme": { "alias": "theme"; "required": false; "isSignal": true; }; }, { "applyTheme": "applyTheme"; }, never, never, true, never>;
10637
+ }
10638
+
9955
10639
  /** A positioned cursor view-model used by the template. */
9956
10640
  interface PositionedCursor {
9957
10641
  clientId: number | string;
@@ -9971,6 +10655,8 @@ declare class CollaborationCursorsComponent {
9971
10655
  }
9972
10656
 
9973
10657
  declare class ModalDialogComponent {
10658
+ private readonly panel;
10659
+ private releaseFocus;
9974
10660
  /** Whether the dialog is visible. */
9975
10661
  readonly open: _angular_core.InputSignal<boolean>;
9976
10662
  /** Optional heading shown in the header bar. */
@@ -9984,8 +10670,7 @@ declare class ModalDialogComponent {
9984
10670
  * mobile breakpoint. See {@link modalPanelClass}.
9985
10671
  */
9986
10672
  protected readonly panelClass: _angular_core.Signal<string>;
9987
- /** Close on `Escape`, regardless of where focus currently sits. */
9988
- onDocumentKeydown(event: KeyboardEvent): void;
10673
+ constructor();
9989
10674
  requestClose(): void;
9990
10675
  /**
9991
10676
  * Backdrop clicks close the dialog; clicks bubbling up from the panel are
@@ -10139,7 +10824,10 @@ declare class ShareDialogComponent {
10139
10824
  readonly roomId: _angular_core.WritableSignal<string>;
10140
10825
  readonly userName: _angular_core.WritableSignal<string>;
10141
10826
  readonly serverUrl: _angular_core.WritableSignal<string>;
10827
+ readonly invitation: _angular_core.WritableSignal<string>;
10828
+ readonly mode: _angular_core.WritableSignal<"create" | "join">;
10142
10829
  readonly copied: _angular_core.WritableSignal<boolean>;
10830
+ readonly pendingConfig: _angular_core.Signal<CollaborationConfig | null>;
10143
10831
  readonly canStart: _angular_core.Signal<boolean>;
10144
10832
  /** Blank server URL selects the serverless peer-to-peer (webrtc) transport. */
10145
10833
  readonly isP2p: _angular_core.Signal<boolean>;
@@ -10250,8 +10938,12 @@ declare class ViewerExtraDialogsComponent {
10250
10938
  readonly filePath: _angular_core.InputSignal<string | undefined>;
10251
10939
  /** Custom shows offered in the set-up-slide-show "show slides" fieldset. */
10252
10940
  readonly customShows: _angular_core.InputSignal<PptxCustomShow[]>;
10941
+ /** Live viewer preferences surfaced by the settings dialog. */
10942
+ readonly settings: _angular_core.InputSignal<ViewerPreferences>;
10253
10943
  /** Fired with a restored `.pptx` version's bytes; the host swaps the deck. */
10254
10944
  readonly restoreContent: _angular_core.OutputEmitterRef<Uint8Array<ArrayBufferLike>>;
10945
+ /** Fired whenever a settings toggle changes. */
10946
+ readonly settingsChange: _angular_core.OutputEmitterRef<ViewerPreferences>;
10255
10947
  protected readonly svc: ViewerDialogsService;
10256
10948
  protected readonly compare: ViewerCompareService;
10257
10949
  protected readonly editor: EditorStateService;
@@ -10286,7 +10978,7 @@ declare class ViewerExtraDialogsComponent {
10286
10978
  /** Clear any save password. */
10287
10979
  onRemovePassword(): void;
10288
10980
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerExtraDialogsComponent, never>;
10289
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ViewerExtraDialogsComponent, "pptx-viewer-extra-dialogs", never, { "activeSlideIndex": { "alias": "activeSlideIndex"; "required": false; "isSignal": true; }; "selectedElementId": { "alias": "selectedElementId"; "required": false; "isSignal": true; }; "filePath": { "alias": "filePath"; "required": false; "isSignal": true; }; "customShows": { "alias": "customShows"; "required": false; "isSignal": true; }; }, { "restoreContent": "restoreContent"; }, never, never, true, never>;
10981
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ViewerExtraDialogsComponent, "pptx-viewer-extra-dialogs", never, { "activeSlideIndex": { "alias": "activeSlideIndex"; "required": false; "isSignal": true; }; "selectedElementId": { "alias": "selectedElementId"; "required": false; "isSignal": true; }; "filePath": { "alias": "filePath"; "required": false; "isSignal": true; }; "customShows": { "alias": "customShows"; "required": false; "isSignal": true; }; "settings": { "alias": "settings"; "required": true; "isSignal": true; }; }, { "restoreContent": "restoreContent"; "settingsChange": "settingsChange"; }, never, never, true, never>;
10290
10982
  }
10291
10983
 
10292
10984
  declare class EquationEditorDialogComponent {
@@ -10367,7 +11059,7 @@ declare class SetUpSlideShowDialogComponent {
10367
11059
  readonly close: _angular_core.OutputEmitterRef<void>;
10368
11060
  /** Working copy of the properties; seeded from `properties` on open. */
10369
11061
  readonly draft: _angular_core.WritableSignal<PptxPresentationProperties>;
10370
- readonly showType: _angular_core.Signal<"presented" | "browsed" | "kiosk">;
11062
+ readonly showType: _angular_core.Signal<"kiosk" | "presented" | "browsed">;
10371
11063
  readonly showSlidesMode: _angular_core.Signal<"range" | "all" | "customShow">;
10372
11064
  constructor();
10373
11065
  /** Merge a partial patch into the current draft. */
@@ -10672,11 +11364,24 @@ declare class ShortcutPanelComponent {
10672
11364
  /** Fired when the Close button is clicked. */
10673
11365
  readonly close: _angular_core.OutputEmitterRef<void>;
10674
11366
  /** Static shortcut reference rows. */
10675
- protected readonly items: pptx_angular_viewer.ShortcutReferenceItem[];
11367
+ protected readonly items: readonly pptx_angular_viewer.ShortcutReferenceItem[];
10676
11368
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShortcutPanelComponent, never>;
10677
11369
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ShortcutPanelComponent, "pptx-shortcut-panel", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "close": "close"; }, never, never, true, never>;
10678
11370
  }
10679
11371
 
11372
+ declare class SettingsDialogComponent {
11373
+ readonly open: _angular_core.InputSignal<boolean>;
11374
+ readonly settings: _angular_core.InputSignal<ViewerPreferences>;
11375
+ readonly settingsChange: _angular_core.OutputEmitterRef<ViewerPreferences>;
11376
+ readonly close: _angular_core.OutputEmitterRef<void>;
11377
+ protected readonly activeTab: _angular_core.WritableSignal<"general" | "shortcuts">;
11378
+ protected readonly specs: readonly ViewerPreferenceToggle[];
11379
+ protected readonly shortcuts: readonly pptx_angular_viewer.ShortcutReferenceItem[];
11380
+ protected toggle(key: keyof ViewerSettings): void;
11381
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SettingsDialogComponent, never>;
11382
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SettingsDialogComponent, "pptx-settings-dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "settings": { "alias": "settings"; "required": true; "isSignal": true; }; }, { "settingsChange": "settingsChange"; "close": "close"; }, never, never, true, never>;
11383
+ }
11384
+
10680
11385
  declare class KeepAnnotationsDialogComponent {
10681
11386
  /** Whether the dialog is visible. */
10682
11387
  readonly open: _angular_core.InputSignal<boolean>;
@@ -11016,6 +11721,7 @@ declare class PresentationTransitionOverlayComponent {
11016
11721
  * - `closeAudienceWindow` : request closing the audience display window
11017
11722
  */
11018
11723
  declare class PresenterViewComponent {
11724
+ protected readonly presenterWindow: PresenterWindowService;
11019
11725
  protected readonly NOTES_FONT_SIZE_MIN = 10;
11020
11726
  protected readonly NOTES_FONT_SIZE_MAX = 32;
11021
11727
  readonly slides: _angular_core.InputSignal<PptxSlide[]>;
@@ -11029,6 +11735,7 @@ declare class PresenterViewComponent {
11029
11735
  readonly exit: _angular_core.OutputEmitterRef<void>;
11030
11736
  readonly openAudienceWindow: _angular_core.OutputEmitterRef<void>;
11031
11737
  readonly closeAudienceWindow: _angular_core.OutputEmitterRef<void>;
11738
+ readonly navigateToSlide: _angular_core.OutputEmitterRef<number>;
11032
11739
  /** Live wall-clock (epoch ms), advanced once per second. */
11033
11740
  private readonly now;
11034
11741
  /** Speaker-notes font size (px), clamped to the allowed range. */
@@ -11055,7 +11762,7 @@ declare class PresenterViewComponent {
11055
11762
  protected onToggleAudienceWindow(): void;
11056
11763
  private withTemplate;
11057
11764
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PresenterViewComponent, never>;
11058
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PresenterViewComponent, "pptx-presenter-view", never, { "slides": { "alias": "slides"; "required": true; "isSignal": true; }; "currentSlideIndex": { "alias": "currentSlideIndex"; "required": true; "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"; }, never, never, true, never>;
11765
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PresenterViewComponent, "pptx-presenter-view", never, { "slides": { "alias": "slides"; "required": true; "isSignal": true; }; "currentSlideIndex": { "alias": "currentSlideIndex"; "required": true; "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>;
11059
11766
  }
11060
11767
 
11061
11768
  /**
@@ -11199,16 +11906,16 @@ declare function isAudienceTab(): boolean;
11199
11906
  * Store PPTX content bytes so the audience tab can retrieve them.
11200
11907
  * Called by the presenter before opening the audience window.
11201
11908
  */
11202
- declare function storeAudienceContent(content: ArrayBuffer | Uint8Array): Promise<void>;
11909
+ declare function storeAudienceContent(content: ArrayBuffer | Uint8Array, sessionId?: string): Promise<void>;
11203
11910
  /**
11204
11911
  * Load PPTX content bytes stored by the presenter tab.
11205
11912
  * Returns `null` if nothing is stored.
11206
11913
  */
11207
- declare function loadAudienceContent(): Promise<Uint8Array | null>;
11914
+ declare function loadAudienceContent(sessionId?: string): Promise<Uint8Array | null>;
11208
11915
  /**
11209
11916
  * Remove stored audience content (cleanup).
11210
11917
  */
11211
- declare function clearAudienceContent(): Promise<void>;
11918
+ declare function clearAudienceContent(sessionId?: string): Promise<void>;
11212
11919
 
11213
11920
  /**
11214
11921
  * SVG path generators for WordArt text warp presets.
@@ -12185,12 +12892,22 @@ declare class RibbonDrawSectionComponent {
12185
12892
  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>;
12186
12893
  }
12187
12894
 
12188
- /** Ribbon tab identifiers (mirrors React `TOOLBAR_SECTIONS`). */
12189
- type RibbonTab = 'file' | 'home' | 'insert' | 'text' | 'draw' | 'arrange' | 'design' | 'transitions' | 'animations' | 'slideShow' | 'record' | 'review' | 'view' | 'help';
12190
- interface TabDef {
12191
- id: RibbonTab;
12192
- labelKey: string;
12193
- }
12895
+ /**
12896
+ * ribbon-types.ts: shared ribbon-tab id type used by {@link RibbonComponent},
12897
+ * {@link RibbonTabListComponent}, and {@link RibbonContentComponent}. Kept in
12898
+ * its own file (rather than declared in one of those components) so none of
12899
+ * them has to import a type from a sibling that also imports it, mirroring
12900
+ * the Svelte binding's `ribbon/ribbon-types.ts`.
12901
+ */
12902
+
12903
+ /**
12904
+ * Ribbon tab identifiers. Includes 'text' and 'arrange' on top of the shared
12905
+ * {@link ToolbarTabId} catalogue: two extra content-only tabs that don't get
12906
+ * their own tab-bar button (no `TOOLBAR_TABS` entry) but are still reachable
12907
+ * as `@switch` cases.
12908
+ */
12909
+ type RibbonTab = ToolbarTabId | 'text' | 'arrange';
12910
+
12194
12911
  declare class RibbonComponent {
12195
12912
  readonly slideIndex: _angular_core.InputSignal<number>;
12196
12913
  readonly slideCount: _angular_core.InputSignal<number>;
@@ -12201,6 +12918,7 @@ declare class RibbonComponent {
12201
12918
  readonly formatPainterActive: _angular_core.InputSignal<boolean>;
12202
12919
  readonly canActivateFormatPainter: _angular_core.InputSignal<boolean>;
12203
12920
  readonly exporting: _angular_core.InputSignal<boolean>;
12921
+ readonly hasMacros: _angular_core.InputSignal<boolean>;
12204
12922
  /** Current visibility state of the grid overlay (for active-state styling). */
12205
12923
  readonly showGrid: _angular_core.InputSignal<boolean>;
12206
12924
  /** Current visibility state of rulers (for active-state styling). */
@@ -12209,6 +12927,7 @@ declare class RibbonComponent {
12209
12927
  readonly showGuides: _angular_core.InputSignal<boolean>;
12210
12928
  /** Current state of snap-to-grid (for active-state styling). */
12211
12929
  readonly snapToGrid: _angular_core.InputSignal<boolean>;
12930
+ readonly snapToShape: _angular_core.InputSignal<boolean>;
12212
12931
  /** Current state of eyedropper tool (for active-state styling). */
12213
12932
  readonly eyedropperActive: _angular_core.InputSignal<boolean>;
12214
12933
  /** Current visibility state of the theme gallery overlay (for active-state styling). */
@@ -12227,6 +12946,11 @@ declare class RibbonComponent {
12227
12946
  readonly collabConnected: _angular_core.InputSignal<boolean>;
12228
12947
  /** Connected collaborator count (Share button label). */
12229
12948
  readonly connectedCount: _angular_core.InputSignal<number>;
12949
+ /** Current live proofing state shown by the Review ribbon command. */
12950
+ readonly spellCheckEnabled: _angular_core.InputSignal<boolean>;
12951
+ readonly showSubtitles: _angular_core.InputSignal<boolean>;
12952
+ /** Toolbar buttons/tabs the host wants hidden. Default `[]` hides nothing. */
12953
+ readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
12230
12954
  readonly prev: _angular_core.OutputEmitterRef<void>;
12231
12955
  readonly next: _angular_core.OutputEmitterRef<void>;
12232
12956
  readonly zoomIn: _angular_core.OutputEmitterRef<void>;
@@ -12237,11 +12961,23 @@ declare class RibbonComponent {
12237
12961
  readonly presenter: _angular_core.OutputEmitterRef<void>;
12238
12962
  /** Emitted by the tab-row Record button (starts a slide-show run-through). */
12239
12963
  readonly record: _angular_core.OutputEmitterRef<void>;
12964
+ readonly presentFromBeginning: _angular_core.OutputEmitterRef<void>;
12965
+ readonly rehearseTimings: _angular_core.OutputEmitterRef<void>;
12966
+ readonly toggleSubtitles: _angular_core.OutputEmitterRef<void>;
12967
+ readonly openSubtitleSettings: _angular_core.OutputEmitterRef<void>;
12968
+ readonly recordFromBeginning: _angular_core.OutputEmitterRef<void>;
12969
+ readonly recordFromCurrent: _angular_core.OutputEmitterRef<void>;
12970
+ readonly spellCheckChange: _angular_core.OutputEmitterRef<boolean>;
12240
12971
  readonly share: _angular_core.OutputEmitterRef<void>;
12241
12972
  readonly broadcast: _angular_core.OutputEmitterRef<void>;
12242
12973
  readonly openFile: _angular_core.OutputEmitterRef<void>;
12974
+ readonly openRecentFile: _angular_core.OutputEmitterRef<string>;
12975
+ readonly createPresentation: _angular_core.OutputEmitterRef<string>;
12243
12976
  /** Emitted when the user clicks "Save" in the File tab (saves as .pptx). */
12244
12977
  readonly save: _angular_core.OutputEmitterRef<void>;
12978
+ readonly savePpsx: _angular_core.OutputEmitterRef<void>;
12979
+ readonly savePptm: _angular_core.OutputEmitterRef<void>;
12980
+ readonly packageForSharing: _angular_core.OutputEmitterRef<void>;
12245
12981
  /** Emitted when the user toggles the slides panel from the top bar. */
12246
12982
  readonly toggleSidebar: _angular_core.OutputEmitterRef<void>;
12247
12983
  /** Emitted when the user opens the Digital Signatures panel from the File tab. */
@@ -12252,29 +12988,20 @@ declare class RibbonComponent {
12252
12988
  readonly a11y: _angular_core.OutputEmitterRef<void>;
12253
12989
  readonly link: _angular_core.OutputEmitterRef<void>;
12254
12990
  readonly openSorter: _angular_core.OutputEmitterRef<void>;
12991
+ readonly openMasterView: _angular_core.OutputEmitterRef<void>;
12255
12992
  readonly toggleNotes: _angular_core.OutputEmitterRef<void>;
12256
12993
  readonly toggleFormatPainter: _angular_core.OutputEmitterRef<void>;
12257
12994
  readonly exportPng: _angular_core.OutputEmitterRef<void>;
12258
12995
  readonly exportPdf: _angular_core.OutputEmitterRef<void>;
12259
12996
  readonly exportGif: _angular_core.OutputEmitterRef<void>;
12260
12997
  readonly exportVideo: _angular_core.OutputEmitterRef<void>;
12998
+ readonly copySlideAsImage: _angular_core.OutputEmitterRef<void>;
12261
12999
  readonly replace: _angular_core.OutputEmitterRef<void>;
12262
- /**
12263
- * Emitted by Design / Transitions / Animations tabs when the user wants to
12264
- * open the right-docked Inspector panel (Format Background, Transitions full
12265
- * options, Animation Panel). The parent component decides what to show.
12266
- */
13000
+ /** Design/Transitions/Animations tabs want the right-docked Inspector panel opened. */
12267
13001
  readonly toggleInspector: _angular_core.OutputEmitterRef<void>;
12268
- /**
12269
- * Emitted whenever the Draw tab tool state changes (tool / colour / width).
12270
- * The parent may connect this to an annotation / ink layer when available.
12271
- * Currently UI-only; no freehand-draw back-end exists in the Angular port.
12272
- */
13002
+ /** Draw tab tool state changed (tool/colour/width); UI-only, no ink back-end yet. */
12273
13003
  readonly drawToolChange: _angular_core.OutputEmitterRef<DrawToolState>;
12274
- /**
12275
- * Emitted when the user clicks "Browse Themes" in the Design tab.
12276
- * The parent toggles the theme-gallery overlay.
12277
- */
13004
+ /** Emitted when the user clicks "Browse Themes" in the Design tab. */
12278
13005
  readonly toggleThemeGallery: _angular_core.OutputEmitterRef<void>;
12279
13006
  /** Emitted when the user toggles the grid overlay in the View tab. */
12280
13007
  readonly toggleGrid: _angular_core.OutputEmitterRef<void>;
@@ -12288,13 +13015,12 @@ declare class RibbonComponent {
12288
13015
  readonly openCustomShows: _angular_core.OutputEmitterRef<void>;
12289
13016
  /** Emitted when the user toggles snap-to-grid in the View tab. */
12290
13017
  readonly toggleSnapToGrid: _angular_core.OutputEmitterRef<void>;
13018
+ readonly toggleSnapToShape: _angular_core.OutputEmitterRef<void>;
13019
+ readonly addGuide: _angular_core.OutputEmitterRef<"x" | "y">;
13020
+ readonly zoomToFit: _angular_core.OutputEmitterRef<void>;
12291
13021
  /** Emitted when the user activates the eyedropper in the View tab. */
12292
13022
  readonly toggleEyedropper: _angular_core.OutputEmitterRef<void>;
12293
- /**
12294
- * Emitted when the user clicks "SmartArt" in the Insert tab. The host opens
12295
- * the Insert SmartArt gallery dialog and performs the actual insert, so the
12296
- * ribbon stays free of the dialog state and node-building logic.
12297
- */
13023
+ /** "SmartArt" in the Insert tab; the host opens the gallery dialog and does the insert. */
12298
13024
  readonly openSmartArtDialog: _angular_core.OutputEmitterRef<void>;
12299
13025
  /** Emitted when the user clicks "Equation" in the Insert tab (opens the editor). */
12300
13026
  readonly openEquationDialog: _angular_core.OutputEmitterRef<void>;
@@ -12310,43 +13036,30 @@ declare class RibbonComponent {
12310
13036
  readonly openVersionHistory: _angular_core.OutputEmitterRef<void>;
12311
13037
  /** Emitted when the user clicks "Shortcuts" in the Help tab. */
12312
13038
  readonly openShortcuts: _angular_core.OutputEmitterRef<void>;
13039
+ /** Emitted when the user opens viewer preferences from the Help tab. */
13040
+ readonly openSettings: _angular_core.OutputEmitterRef<void>;
12313
13041
  /** Emitted when a shape is inserted from the Drawing group. */
12314
13042
  readonly shapeInsert: _angular_core.OutputEmitterRef<string>;
12315
13043
  /** Emitted when the user reorders an element layer (up/down). */
12316
13044
  readonly moveLayer: _angular_core.OutputEmitterRef<string>;
12317
13045
  /** Emitted when the user moves an element to front/back. */
12318
13046
  readonly moveLayerToEdge: _angular_core.OutputEmitterRef<string>;
12319
- protected readonly tabs: readonly TabDef[];
12320
- /** Shared class tokens for the tab-row Record button. */
12321
- protected readonly tra: {
12322
- readonly record: "inline-flex items-center gap-1.5 px-2.5 py-1 mr-1 rounded-sm text-[11px] font-medium text-foreground hover:bg-accent/60 transition-colors whitespace-nowrap";
12323
- readonly recordDot: "w-2 h-2 rounded-full bg-red-600 shrink-0";
12324
- };
12325
13047
  protected readonly activeTab: _angular_core.WritableSignal<RibbonTab>;
12326
13048
  /** Ribbon content expanded (true) vs collapsed to just the tab bar (false). */
12327
13049
  protected readonly ribbonExpanded: _angular_core.WritableSignal<boolean>;
12328
- /** The chart type currently chosen in the Insert tab dropdown. */
12329
- protected readonly newChartType: _angular_core.WritableSignal<PptxChartType>;
12330
- /** Active drawing tool (UI state only; no ink back-end yet). */
12331
- protected readonly activeTool: _angular_core.WritableSignal<DrawTool>;
12332
- /** Drawing pen colour (UI state only). */
12333
- protected readonly drawingColor: _angular_core.WritableSignal<string>;
12334
- /** Drawing stroke width in pixels (UI state only). */
12335
- protected readonly drawingWidth: _angular_core.WritableSignal<number>;
12336
- /** The transition type currently selected in the ribbon gallery. */
12337
- protected readonly selectedTransition: _angular_core.WritableSignal<PptxTransitionType>;
12338
- /** Transition duration in seconds (round-trips through the UI input). */
12339
- protected readonly transitionDurationSec: _angular_core.WritableSignal<number>;
12340
- /** Sync the draw-tool signals with a Draw-tab change and re-broadcast it. */
12341
- protected onDrawChange(state: DrawToolState): void;
13050
+ /** Route both File Options and Review Language to the real Settings dialog. */
13051
+ protected requestSettings(): void;
13052
+ /** Forward the Review proofing toggle to the viewer-owned live state. */
13053
+ protected setSpellCheck(enabled: boolean): void;
12342
13054
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonComponent, never>;
12343
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonComponent, "pptx-ribbon", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "zoomPercent": { "alias": "zoomPercent"; "required": false; "isSignal": true; }; "formatPainterActive": { "alias": "formatPainterActive"; "required": false; "isSignal": true; }; "canActivateFormatPainter": { "alias": "canActivateFormatPainter"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "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; }; "eyedropperActive": { "alias": "eyedropperActive"; "required": false; "isSignal": true; }; "themeGalleryOpen": { "alias": "themeGalleryOpen"; "required": false; "isSignal": true; }; "sidebarCollapsed": { "alias": "sidebarCollapsed"; "required": false; "isSignal": true; }; "inspectorOpen": { "alias": "inspectorOpen"; "required": false; "isSignal": true; }; "commentsOpen": { "alias": "commentsOpen"; "required": false; "isSignal": true; }; "commentCount": { "alias": "commentCount"; "required": false; "isSignal": true; }; "findOpen": { "alias": "findOpen"; "required": false; "isSignal": true; }; "collabConnected": { "alias": "collabConnected"; "required": false; "isSignal": true; }; "connectedCount": { "alias": "connectedCount"; "required": false; "isSignal": true; }; }, { "prev": "prev"; "next": "next"; "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "zoomReset": "zoomReset"; "find": "find"; "present": "present"; "presenter": "presenter"; "record": "record"; "share": "share"; "broadcast": "broadcast"; "openFile": "openFile"; "save": "save"; "toggleSidebar": "toggleSidebar"; "signatures": "signatures"; "info": "info"; "print": "print"; "comments": "comments"; "a11y": "a11y"; "link": "link"; "openSorter": "openSorter"; "toggleNotes": "toggleNotes"; "toggleFormatPainter": "toggleFormatPainter"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "replace": "replace"; "toggleInspector": "toggleInspector"; "drawToolChange": "drawToolChange"; "toggleThemeGallery": "toggleThemeGallery"; "toggleGrid": "toggleGrid"; "toggleRulers": "toggleRulers"; "toggleGuides": "toggleGuides"; "toggleSelectionPane": "toggleSelectionPane"; "openCustomShows": "openCustomShows"; "toggleSnapToGrid": "toggleSnapToGrid"; "toggleEyedropper": "toggleEyedropper"; "openSmartArtDialog": "openSmartArtDialog"; "openEquationDialog": "openEquationDialog"; "openSetUpSlideShow": "openSetUpSlideShow"; "openCompare": "openCompare"; "openPassword": "openPassword"; "openFontEmbedding": "openFontEmbedding"; "openVersionHistory": "openVersionHistory"; "openShortcuts": "openShortcuts"; "shapeInsert": "shapeInsert"; "moveLayer": "moveLayer"; "moveLayerToEdge": "moveLayerToEdge"; }, never, never, true, never>;
13055
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonComponent, "pptx-ribbon", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "zoomPercent": { "alias": "zoomPercent"; "required": false; "isSignal": true; }; "formatPainterActive": { "alias": "formatPainterActive"; "required": false; "isSignal": true; }; "canActivateFormatPainter": { "alias": "canActivateFormatPainter"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "hasMacros": { "alias": "hasMacros"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showRulers": { "alias": "showRulers"; "required": false; "isSignal": true; }; "showGuides": { "alias": "showGuides"; "required": false; "isSignal": true; }; "snapToGrid": { "alias": "snapToGrid"; "required": false; "isSignal": true; }; "snapToShape": { "alias": "snapToShape"; "required": false; "isSignal": true; }; "eyedropperActive": { "alias": "eyedropperActive"; "required": false; "isSignal": true; }; "themeGalleryOpen": { "alias": "themeGalleryOpen"; "required": false; "isSignal": true; }; "sidebarCollapsed": { "alias": "sidebarCollapsed"; "required": false; "isSignal": true; }; "inspectorOpen": { "alias": "inspectorOpen"; "required": false; "isSignal": true; }; "commentsOpen": { "alias": "commentsOpen"; "required": false; "isSignal": true; }; "commentCount": { "alias": "commentCount"; "required": false; "isSignal": true; }; "findOpen": { "alias": "findOpen"; "required": false; "isSignal": true; }; "collabConnected": { "alias": "collabConnected"; "required": false; "isSignal": true; }; "connectedCount": { "alias": "connectedCount"; "required": false; "isSignal": true; }; "spellCheckEnabled": { "alias": "spellCheckEnabled"; "required": false; "isSignal": true; }; "showSubtitles": { "alias": "showSubtitles"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; }, { "prev": "prev"; "next": "next"; "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "zoomReset": "zoomReset"; "find": "find"; "present": "present"; "presenter": "presenter"; "record": "record"; "presentFromBeginning": "presentFromBeginning"; "rehearseTimings": "rehearseTimings"; "toggleSubtitles": "toggleSubtitles"; "openSubtitleSettings": "openSubtitleSettings"; "recordFromBeginning": "recordFromBeginning"; "recordFromCurrent": "recordFromCurrent"; "spellCheckChange": "spellCheckChange"; "share": "share"; "broadcast": "broadcast"; "openFile": "openFile"; "openRecentFile": "openRecentFile"; "createPresentation": "createPresentation"; "save": "save"; "savePpsx": "savePpsx"; "savePptm": "savePptm"; "packageForSharing": "packageForSharing"; "toggleSidebar": "toggleSidebar"; "signatures": "signatures"; "info": "info"; "print": "print"; "comments": "comments"; "a11y": "a11y"; "link": "link"; "openSorter": "openSorter"; "openMasterView": "openMasterView"; "toggleNotes": "toggleNotes"; "toggleFormatPainter": "toggleFormatPainter"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "copySlideAsImage": "copySlideAsImage"; "replace": "replace"; "toggleInspector": "toggleInspector"; "drawToolChange": "drawToolChange"; "toggleThemeGallery": "toggleThemeGallery"; "toggleGrid": "toggleGrid"; "toggleRulers": "toggleRulers"; "toggleGuides": "toggleGuides"; "toggleSelectionPane": "toggleSelectionPane"; "openCustomShows": "openCustomShows"; "toggleSnapToGrid": "toggleSnapToGrid"; "toggleSnapToShape": "toggleSnapToShape"; "addGuide": "addGuide"; "zoomToFit": "zoomToFit"; "toggleEyedropper": "toggleEyedropper"; "openSmartArtDialog": "openSmartArtDialog"; "openEquationDialog": "openEquationDialog"; "openSetUpSlideShow": "openSetUpSlideShow"; "openCompare": "openCompare"; "openPassword": "openPassword"; "openFontEmbedding": "openFontEmbedding"; "openVersionHistory": "openVersionHistory"; "openShortcuts": "openShortcuts"; "openSettings": "openSettings"; "shapeInsert": "shapeInsert"; "moveLayer": "moveLayer"; "moveLayerToEdge": "moveLayerToEdge"; }, never, never, true, never>;
12344
13056
  }
12345
13057
 
12346
13058
  declare class RibbonAnimationsSectionComponent {
12347
13059
  private readonly editor;
12348
13060
  readonly slideIndex: _angular_core.InputSignal<number>;
12349
13061
  readonly selectedElement: _angular_core.InputSignal<PptxElement | null>;
13062
+ readonly canEdit: _angular_core.InputSignal<boolean>;
12350
13063
  readonly present: _angular_core.OutputEmitterRef<void>;
12351
13064
  readonly toggleInspector: _angular_core.OutputEmitterRef<void>;
12352
13065
  protected readonly entrancePresets: readonly {
@@ -12365,6 +13078,7 @@ declare class RibbonAnimationsSectionComponent {
12365
13078
  labelKey: string;
12366
13079
  }[];
12367
13080
  protected hasSel(): boolean;
13081
+ protected canAuthor(): boolean;
12368
13082
  /**
12369
13083
  * Add an animation preset to the selected element on the active slide.
12370
13084
  * Delegates to the immutable helpers in animation-author-helpers.ts and
@@ -12374,7 +13088,7 @@ declare class RibbonAnimationsSectionComponent {
12374
13088
  /** Remove all animations from the selected element. */
12375
13089
  protected removeAnim(): void;
12376
13090
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonAnimationsSectionComponent, never>;
12377
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonAnimationsSectionComponent, "pptx-ribbon-animations-section", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; }, { "present": "present"; "toggleInspector": "toggleInspector"; }, never, never, true, never>;
13091
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonAnimationsSectionComponent, "pptx-ribbon-animations-section", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, { "present": "present"; "toggleInspector": "toggleInspector"; }, never, never, true, never>;
12378
13092
  }
12379
13093
 
12380
13094
  declare class RibbonArrangeSectionComponent {
@@ -12437,15 +13151,34 @@ declare class RibbonEditingSectionComponent {
12437
13151
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonEditingSectionComponent, "pptx-ribbon-editing-section", never, {}, { "toggleFindReplace": "toggleFindReplace"; "selectAll": "selectAll"; }, never, never, true, never>;
12438
13152
  }
12439
13153
 
13154
+ interface BackstageAction {
13155
+ title: string;
13156
+ body: string;
13157
+ icon: string;
13158
+ event: {
13159
+ emit: () => void;
13160
+ };
13161
+ }
12440
13162
  declare class RibbonFileSectionComponent {
13163
+ readonly fileName: _angular_core.InputSignal<string | undefined>;
12441
13164
  readonly slideCount: _angular_core.InputSignal<number>;
12442
13165
  readonly exporting: _angular_core.InputSignal<boolean>;
13166
+ readonly hasMacros: _angular_core.InputSignal<boolean>;
13167
+ /** Toolbar buttons the host wants hidden (drops the Export nav entry/page). */
13168
+ readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
13169
+ readonly close: _angular_core.OutputEmitterRef<void>;
13170
+ readonly createPresentation: _angular_core.OutputEmitterRef<string>;
12443
13171
  readonly openFile: _angular_core.OutputEmitterRef<void>;
13172
+ readonly openRecentFile: _angular_core.OutputEmitterRef<string>;
12444
13173
  readonly save: _angular_core.OutputEmitterRef<void>;
13174
+ readonly savePpsx: _angular_core.OutputEmitterRef<void>;
13175
+ readonly savePptm: _angular_core.OutputEmitterRef<void>;
13176
+ readonly packageForSharing: _angular_core.OutputEmitterRef<void>;
12445
13177
  readonly exportPng: _angular_core.OutputEmitterRef<void>;
12446
13178
  readonly exportPdf: _angular_core.OutputEmitterRef<void>;
12447
13179
  readonly exportGif: _angular_core.OutputEmitterRef<void>;
12448
13180
  readonly exportVideo: _angular_core.OutputEmitterRef<void>;
13181
+ readonly copySlideAsImage: _angular_core.OutputEmitterRef<void>;
12449
13182
  readonly print: _angular_core.OutputEmitterRef<void>;
12450
13183
  readonly info: _angular_core.OutputEmitterRef<void>;
12451
13184
  readonly signatures: _angular_core.OutputEmitterRef<void>;
@@ -12453,8 +13186,38 @@ declare class RibbonFileSectionComponent {
12453
13186
  readonly openPassword: _angular_core.OutputEmitterRef<void>;
12454
13187
  readonly openFontEmbedding: _angular_core.OutputEmitterRef<void>;
12455
13188
  readonly openVersionHistory: _angular_core.OutputEmitterRef<void>;
13189
+ readonly share: _angular_core.OutputEmitterRef<void>;
13190
+ readonly options: _angular_core.OutputEmitterRef<void>;
13191
+ protected readonly templates: readonly BackstageTemplate[];
13192
+ protected readonly mainNav: _angular_core.Signal<readonly {
13193
+ id: BackstagePage;
13194
+ label: string;
13195
+ group?: "footer";
13196
+ }[]>;
13197
+ protected readonly footerNav: {
13198
+ id: BackstagePage;
13199
+ label: string;
13200
+ group?: "footer";
13201
+ }[];
13202
+ protected readonly page: _angular_core.WritableSignal<BackstagePage>;
13203
+ protected readonly query: _angular_core.WritableSignal<string>;
13204
+ protected readonly recent: _angular_core.WritableSignal<BackstageRecentFile[]>;
13205
+ protected readonly title: _angular_core.Signal<string>;
13206
+ protected readonly visibleRecent: _angular_core.Signal<BackstageRecentFile[]>;
13207
+ protected readonly date: typeof formatBackstageDate;
13208
+ protected readonly size: typeof formatBackstageSize;
13209
+ protected readonly actions: _angular_core.Signal<BackstageAction[]>;
13210
+ constructor();
13211
+ protected selectPage(id: BackstagePage): void;
13212
+ protected run(event: {
13213
+ emit: () => void;
13214
+ }): void;
13215
+ protected create(templateId: string): void;
13216
+ protected openRecent(key: string): void;
13217
+ private action;
13218
+ private pageActions;
12456
13219
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonFileSectionComponent, never>;
12457
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonFileSectionComponent, "pptx-ribbon-file-section", never, { "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; }, { "openFile": "openFile"; "save": "save"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "print": "print"; "info": "info"; "signatures": "signatures"; "replace": "replace"; "openPassword": "openPassword"; "openFontEmbedding": "openFontEmbedding"; "openVersionHistory": "openVersionHistory"; }, never, never, true, never>;
13220
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonFileSectionComponent, "pptx-ribbon-file-section", never, { "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "hasMacros": { "alias": "hasMacros"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; }, { "close": "close"; "createPresentation": "createPresentation"; "openFile": "openFile"; "openRecentFile": "openRecentFile"; "save": "save"; "savePpsx": "savePpsx"; "savePptm": "savePptm"; "packageForSharing": "packageForSharing"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "copySlideAsImage": "copySlideAsImage"; "print": "print"; "info": "info"; "signatures": "signatures"; "replace": "replace"; "openPassword": "openPassword"; "openFontEmbedding": "openFontEmbedding"; "openVersionHistory": "openVersionHistory"; "share": "share"; "options": "options"; }, never, never, true, never>;
12458
13221
  }
12459
13222
 
12460
13223
  declare class RibbonFontControlsComponent {
@@ -12511,14 +13274,13 @@ declare class RibbonHomeSectionComponent {
12511
13274
  readonly findReplace: _angular_core.OutputEmitterRef<void>;
12512
13275
  readonly applyLayout: _angular_core.OutputEmitterRef<string>;
12513
13276
  readonly resetSlide: _angular_core.OutputEmitterRef<void>;
12514
- readonly addSection: _angular_core.OutputEmitterRef<void>;
12515
13277
  protected hasSel(): boolean;
12516
13278
  protected copy(): void;
12517
13279
  protected cut(): void;
12518
13280
  protected paste(): void;
12519
13281
  protected onSelectAll(): void;
12520
13282
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonHomeSectionComponent, never>;
12521
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonHomeSectionComponent, "pptx-ribbon-home-section", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "formatPainterActive": { "alias": "formatPainterActive"; "required": false; "isSignal": true; }; "canActivateFormatPainter": { "alias": "canActivateFormatPainter"; "required": false; "isSignal": true; }; }, { "toggleFormatPainter": "toggleFormatPainter"; "findReplace": "findReplace"; "applyLayout": "applyLayout"; "resetSlide": "resetSlide"; "addSection": "addSection"; }, never, never, true, never>;
13283
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonHomeSectionComponent, "pptx-ribbon-home-section", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "formatPainterActive": { "alias": "formatPainterActive"; "required": false; "isSignal": true; }; "canActivateFormatPainter": { "alias": "canActivateFormatPainter"; "required": false; "isSignal": true; }; }, { "toggleFormatPainter": "toggleFormatPainter"; "findReplace": "findReplace"; "applyLayout": "applyLayout"; "resetSlide": "resetSlide"; }, never, never, true, never>;
12522
13284
  }
12523
13285
 
12524
13286
  declare class RibbonInsertFieldsComponent {
@@ -12621,6 +13383,8 @@ declare class RibbonPrimaryRowComponent {
12621
13383
  readonly inspectorOpen: _angular_core.InputSignal<boolean>;
12622
13384
  readonly commentsOpen: _angular_core.InputSignal<boolean>;
12623
13385
  readonly commentCount: _angular_core.InputSignal<number>;
13386
+ /** Toolbar buttons the host wants hidden (gates Broadcast + the export overflow items). */
13387
+ readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
12624
13388
  readonly toggleSidebar: _angular_core.OutputEmitterRef<void>;
12625
13389
  readonly toggleComments: _angular_core.OutputEmitterRef<void>;
12626
13390
  readonly present: _angular_core.OutputEmitterRef<void>;
@@ -12638,39 +13402,50 @@ declare class RibbonPrimaryRowComponent {
12638
13402
  readonly save: _angular_core.OutputEmitterRef<void>;
12639
13403
  protected readonly presentMenuOpen: _angular_core.WritableSignal<boolean>;
12640
13404
  protected readonly overflowOpen: _angular_core.WritableSignal<boolean>;
12641
- /** Overflow menu items (mirrors React's File/overflow actions that exist here). */
12642
- protected readonly overflowItems: ReadonlyArray<{
13405
+ protected readonly toolbar: ToolbarVisibility;
13406
+ protected readonly overflowItems: _angular_core.Signal<readonly {
12643
13407
  key: string;
12644
13408
  labelKey: string;
12645
13409
  needsSlides?: boolean;
12646
- }>;
13410
+ }[]>;
12647
13411
  protected onOverflow(key: string): void;
12648
13412
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonPrimaryRowComponent, never>;
12649
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonPrimaryRowComponent, "pptx-ribbon-primary-row", never, { "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "sidebarCollapsed": { "alias": "sidebarCollapsed"; "required": false; "isSignal": true; }; "inspectorOpen": { "alias": "inspectorOpen"; "required": false; "isSignal": true; }; "commentsOpen": { "alias": "commentsOpen"; "required": false; "isSignal": true; }; "commentCount": { "alias": "commentCount"; "required": false; "isSignal": true; }; }, { "toggleSidebar": "toggleSidebar"; "toggleComments": "toggleComments"; "present": "present"; "presenter": "presenter"; "broadcast": "broadcast"; "openCustomShows": "openCustomShows"; "toggleInspector": "toggleInspector"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "print": "print"; "info": "info"; "a11y": "a11y"; "save": "save"; }, never, never, true, never>;
13413
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonPrimaryRowComponent, "pptx-ribbon-primary-row", never, { "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "sidebarCollapsed": { "alias": "sidebarCollapsed"; "required": false; "isSignal": true; }; "inspectorOpen": { "alias": "inspectorOpen"; "required": false; "isSignal": true; }; "commentsOpen": { "alias": "commentsOpen"; "required": false; "isSignal": true; }; "commentCount": { "alias": "commentCount"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; }, { "toggleSidebar": "toggleSidebar"; "toggleComments": "toggleComments"; "present": "present"; "presenter": "presenter"; "broadcast": "broadcast"; "openCustomShows": "openCustomShows"; "toggleInspector": "toggleInspector"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "print": "print"; "info": "info"; "a11y": "a11y"; "save": "save"; }, never, never, true, never>;
12650
13414
  }
12651
13415
 
12652
13416
  declare class RibbonReviewSectionComponent {
12653
13417
  private readonly editor;
13418
+ readonly spellCheckEnabled: _angular_core.InputSignal<boolean>;
13419
+ readonly canEdit: _angular_core.InputSignal<boolean>;
12654
13420
  readonly comments: _angular_core.OutputEmitterRef<void>;
12655
- readonly spelling: _angular_core.OutputEmitterRef<void>;
13421
+ readonly spellCheckChange: _angular_core.OutputEmitterRef<boolean>;
12656
13422
  readonly a11y: _angular_core.OutputEmitterRef<void>;
12657
13423
  readonly openCompare: _angular_core.OutputEmitterRef<void>;
12658
13424
  readonly language: _angular_core.OutputEmitterRef<void>;
12659
13425
  readonly link: _angular_core.OutputEmitterRef<void>;
12660
13426
  protected hasSel(): boolean;
12661
13427
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonReviewSectionComponent, never>;
12662
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonReviewSectionComponent, "pptx-ribbon-review-section", never, {}, { "comments": "comments"; "spelling": "spelling"; "a11y": "a11y"; "openCompare": "openCompare"; "language": "language"; "link": "link"; }, never, never, true, never>;
13428
+ 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>;
12663
13429
  }
12664
13430
 
12665
13431
  declare class RibbonSlideshowSectionComponent {
12666
13432
  readonly slideCount: _angular_core.InputSignal<number>;
12667
- readonly present: _angular_core.OutputEmitterRef<void>;
13433
+ readonly showSubtitles: _angular_core.InputSignal<boolean>;
13434
+ /** Toolbar buttons the host wants hidden (gates Broadcast). */
13435
+ readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
13436
+ readonly presentFromBeginning: _angular_core.OutputEmitterRef<void>;
13437
+ readonly presentFromCurrent: _angular_core.OutputEmitterRef<void>;
12668
13438
  readonly presenter: _angular_core.OutputEmitterRef<void>;
12669
13439
  readonly broadcast: _angular_core.OutputEmitterRef<void>;
12670
13440
  readonly openCustomShows: _angular_core.OutputEmitterRef<void>;
12671
13441
  readonly openSetUpSlideShow: _angular_core.OutputEmitterRef<void>;
13442
+ readonly rehearseTimings: _angular_core.OutputEmitterRef<void>;
13443
+ readonly record: _angular_core.OutputEmitterRef<void>;
13444
+ readonly toggleSubtitles: _angular_core.OutputEmitterRef<void>;
13445
+ readonly openSubtitleSettings: _angular_core.OutputEmitterRef<void>;
13446
+ protected readonly toolbar: ToolbarVisibility;
12672
13447
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonSlideshowSectionComponent, never>;
12673
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonSlideshowSectionComponent, "pptx-ribbon-slideshow-section", never, { "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; }, { "present": "present"; "presenter": "presenter"; "broadcast": "broadcast"; "openCustomShows": "openCustomShows"; "openSetUpSlideShow": "openSetUpSlideShow"; }, never, never, true, never>;
13448
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonSlideshowSectionComponent, "pptx-ribbon-slideshow-section", never, { "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "showSubtitles": { "alias": "showSubtitles"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; }, { "presentFromBeginning": "presentFromBeginning"; "presentFromCurrent": "presentFromCurrent"; "presenter": "presenter"; "broadcast": "broadcast"; "openCustomShows": "openCustomShows"; "openSetUpSlideShow": "openSetUpSlideShow"; "rehearseTimings": "rehearseTimings"; "record": "record"; "toggleSubtitles": "toggleSubtitles"; "openSubtitleSettings": "openSubtitleSettings"; }, never, never, true, never>;
12674
13449
  }
12675
13450
 
12676
13451
  /** The selection's text style, or null when the element carries no text props. */
@@ -12717,19 +13492,24 @@ declare class RibbonViewSectionComponent {
12717
13492
  readonly showRulers: _angular_core.InputSignal<boolean>;
12718
13493
  readonly showGuides: _angular_core.InputSignal<boolean>;
12719
13494
  readonly snapToGrid: _angular_core.InputSignal<boolean>;
13495
+ readonly snapToShape: _angular_core.InputSignal<boolean>;
12720
13496
  readonly eyedropperActive: _angular_core.InputSignal<boolean>;
12721
13497
  readonly openSorter: _angular_core.OutputEmitterRef<void>;
12722
13498
  readonly toggleNotes: _angular_core.OutputEmitterRef<void>;
12723
13499
  readonly print: _angular_core.OutputEmitterRef<void>;
12724
13500
  readonly openShortcuts: _angular_core.OutputEmitterRef<void>;
13501
+ readonly openMasterView: _angular_core.OutputEmitterRef<void>;
12725
13502
  readonly toggleGrid: _angular_core.OutputEmitterRef<void>;
12726
13503
  readonly toggleRulers: _angular_core.OutputEmitterRef<void>;
12727
13504
  readonly toggleGuides: _angular_core.OutputEmitterRef<void>;
12728
13505
  readonly toggleSelectionPane: _angular_core.OutputEmitterRef<void>;
12729
13506
  readonly toggleSnapToGrid: _angular_core.OutputEmitterRef<void>;
13507
+ readonly toggleSnapToShape: _angular_core.OutputEmitterRef<void>;
13508
+ readonly addGuide: _angular_core.OutputEmitterRef<"x" | "y">;
13509
+ readonly zoomToFit: _angular_core.OutputEmitterRef<void>;
12730
13510
  readonly toggleEyedropper: _angular_core.OutputEmitterRef<void>;
12731
13511
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonViewSectionComponent, never>;
12732
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonViewSectionComponent, "pptx-ribbon-view-section", never, { "canEdit": { "alias": "canEdit"; "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; }; "eyedropperActive": { "alias": "eyedropperActive"; "required": false; "isSignal": true; }; }, { "openSorter": "openSorter"; "toggleNotes": "toggleNotes"; "print": "print"; "openShortcuts": "openShortcuts"; "toggleGrid": "toggleGrid"; "toggleRulers": "toggleRulers"; "toggleGuides": "toggleGuides"; "toggleSelectionPane": "toggleSelectionPane"; "toggleSnapToGrid": "toggleSnapToGrid"; "toggleEyedropper": "toggleEyedropper"; }, never, never, true, never>;
13512
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonViewSectionComponent, "pptx-ribbon-view-section", never, { "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showRulers": { "alias": "showRulers"; "required": false; "isSignal": true; }; "showGuides": { "alias": "showGuides"; "required": false; "isSignal": true; }; "snapToGrid": { "alias": "snapToGrid"; "required": false; "isSignal": true; }; "snapToShape": { "alias": "snapToShape"; "required": false; "isSignal": true; }; "eyedropperActive": { "alias": "eyedropperActive"; "required": false; "isSignal": true; }; }, { "openSorter": "openSorter"; "toggleNotes": "toggleNotes"; "print": "print"; "openShortcuts": "openShortcuts"; "openMasterView": "openMasterView"; "toggleGrid": "toggleGrid"; "toggleRulers": "toggleRulers"; "toggleGuides": "toggleGuides"; "toggleSelectionPane": "toggleSelectionPane"; "toggleSnapToGrid": "toggleSnapToGrid"; "toggleSnapToShape": "toggleSnapToShape"; "addGuide": "addGuide"; "zoomToFit": "zoomToFit"; "toggleEyedropper": "toggleEyedropper"; }, never, never, true, never>;
12733
13513
  }
12734
13514
 
12735
13515
  /**
@@ -12799,95 +13579,6 @@ declare function prevVisibleIndex(current: number, slides: readonly PptxSlide[])
12799
13579
  */
12800
13580
  declare function fitZoom(canvasW: number, canvasH: number, vw: number, vh: number): number;
12801
13581
 
12802
- /**
12803
- * presentation-subtitle-helpers.ts: Pure helpers for the subtitle/caption bar.
12804
- *
12805
- * Isolates all text-segment logic so it can be unit-tested without DOM or
12806
- * Angular dependencies.
12807
- *
12808
- * Ported from React:
12809
- * packages/react/src/viewer/components/PresentationSubtitleBar.tsx
12810
- */
12811
- /**
12812
- * A single speech recognition alternative (best-guess transcript + confidence).
12813
- * Matches the shape of the Web Speech API `SpeechRecognitionAlternative`.
12814
- */
12815
- interface SpeechAlternative {
12816
- readonly transcript: string;
12817
- readonly confidence: number;
12818
- }
12819
- /**
12820
- * One result from the recognition engine: array of alternatives plus a
12821
- * `isFinal` flag that indicates whether this result is stable (true) or
12822
- * still being refined (false, i.e. interim).
12823
- */
12824
- interface SpeechResult {
12825
- readonly isFinal: boolean;
12826
- readonly length: number;
12827
- readonly [index: number]: SpeechAlternative;
12828
- }
12829
- /**
12830
- * The list of all results accumulated in a recognition session.
12831
- */
12832
- interface SpeechResultList {
12833
- readonly length: number;
12834
- readonly [index: number]: SpeechResult;
12835
- }
12836
- /**
12837
- * Subset of `SpeechRecognitionEvent`: just what we need.
12838
- */
12839
- interface SpeechRecognitionEventLite {
12840
- readonly resultIndex: number;
12841
- readonly results: SpeechResultList;
12842
- }
12843
- /**
12844
- * Structural interface matching the Web Speech API `SpeechRecognition` object.
12845
- * Kept minimal so we only depend on what we actually use.
12846
- */
12847
- interface SpeechRecognitionLite extends EventTarget {
12848
- continuous: boolean;
12849
- interimResults: boolean;
12850
- lang: string;
12851
- onresult: ((event: SpeechRecognitionEventLite) => void) | null;
12852
- onerror: ((event: Event) => void) | null;
12853
- onend: (() => void) | null;
12854
- start: () => void;
12855
- stop: () => void;
12856
- }
12857
- /** Constructor signature for the speech recognition object. */
12858
- type SpeechRecognitionCtor = new () => SpeechRecognitionLite;
12859
- /**
12860
- * Merge the results from a `SpeechRecognitionEventLite` (starting at
12861
- * `resultIndex`) into a single caption string.
12862
- *
12863
- * Final results form the stable prefix; interim results form the unstable
12864
- * suffix. Both are joined and the combined string is trimmed.
12865
- *
12866
- * @param event The recognition event from `onresult`.
12867
- * @param resultIndex `event.resultIndex`: the first new result index.
12868
- * @param results `event.results`: the full results list.
12869
- * @returns The merged caption string, or `''` if nothing recognised.
12870
- */
12871
- declare function mergeCaptionResults(resultIndex: number, results: SpeechResultList): string;
12872
- /**
12873
- * Attempt to obtain the `SpeechRecognition` constructor from `globalThis`
12874
- * (browser `window`). Returns `null` when unavailable (SSR / unsupported
12875
- * browsers / Firefox without the flag enabled).
12876
- *
12877
- * Checks both the standard and the webkit-prefixed name.
12878
- */
12879
- declare function getSpeechRecognitionCtor(): SpeechRecognitionCtor | null;
12880
- /** Possible support states for the Web Speech API in this environment. */
12881
- type SpeechSupportState = 'unknown' | 'supported' | 'unsupported';
12882
- /**
12883
- * Compute the text to display in the caption bar.
12884
- *
12885
- * - When the API is unsupported, returns `fallbackNotSupported`.
12886
- * - When supported but no text has been captured yet, returns `fallbackListening`.
12887
- * - Otherwise returns the captured text.
12888
- */
12889
- declare function captionDisplayText(supportState: SpeechSupportState, captionText: string, fallbackNotSupported: string, fallbackListening: string): string;
12890
-
12891
13582
  /**
12892
13583
  * touch-gestures.ts: thin Angular adapter over the framework-agnostic
12893
13584
  * `createTouchGestureRecognizer` from `pptx-viewer-shared`.
@@ -12960,21 +13651,6 @@ interface SwipeDismissDrag {
12960
13651
  */
12961
13652
  declare function createSwipeDismissDrag(onDismiss: () => void): SwipeDismissDrag;
12962
13653
 
12963
- /**
12964
- * shortcut-reference.ts: Keyboard shortcut cheat-sheet data.
12965
- *
12966
- * Angular copy of the React constant `SHORTCUT_REFERENCE_ITEMS` from
12967
- * `packages/react/src/viewer/constants/toolbar.ts`. Kept as a tiny, purely
12968
- * declarative data module so the `pptx-shortcut-panel` component stays thin.
12969
- * Entries are copied verbatim from the React source and must stay in sync.
12970
- */
12971
- /** A single row in the keyboard-shortcut reference list. */
12972
- interface ShortcutReferenceItem {
12973
- actionKey: string;
12974
- shortcut: string;
12975
- }
12976
- declare const SHORTCUT_REFERENCE_ITEMS: ShortcutReferenceItem[];
12977
-
12978
13654
  /**
12979
13655
  * collaboration-providers.ts: transport factories for the Angular
12980
13656
  * collaboration service.
@@ -13085,6 +13761,30 @@ declare class WriteBackScheduler {
13085
13761
  cancel(): void;
13086
13762
  }
13087
13763
 
13764
+ /**
13765
+ * Pure (Angular-free) helpers for the `<a:clrChange>` colour-change image
13766
+ * effect. Kept out of the component so they can be unit-tested without TestBed
13767
+ * or a DOM, mirroring `model3d-renderer-helpers.ts`.
13768
+ */
13769
+ /** Parsed `<a:clrChange>` parameters needed to drive the chroma-key. */
13770
+ interface ClrChangeParams {
13771
+ clrFrom: string;
13772
+ clrTo: string;
13773
+ /** Whether the target colour becomes fully transparent (alpha = 0). */
13774
+ clrToTransparent: boolean;
13775
+ /** Match tolerance percentage (0-100). */
13776
+ tolerance: number;
13777
+ }
13778
+ /**
13779
+ * Extract the colour-change effect from an element, or `undefined` when the
13780
+ * element carries no `imageEffects.clrChange` (or its `clrFrom` is empty).
13781
+ *
13782
+ * `clrFrom` is the source colour that must be present for the effect to do
13783
+ * anything, so a blank `clrFrom` is treated as "no effect" (matching React,
13784
+ * where the `clrChange` branch only fires when a valid effect object exists).
13785
+ */
13786
+ declare function getClrChangeParams(el: PptxElement): ClrChangeParams | undefined;
13787
+
13088
13788
  /**
13089
13789
  * Pure helpers for {@link MediaRendererComponent}, mirroring React's
13090
13790
  * `media-render.tsx` / `media-persistent-audio.tsx`. Kept TestBed-free so the
@@ -13446,18 +14146,21 @@ declare class ThemeGalleryComponent {
13446
14146
  * Matches `PptxTheme.name`.
13447
14147
  */
13448
14148
  readonly activeName: _angular_core.InputSignal<string | undefined>;
14149
+ readonly theme: _angular_core.InputSignal<PptxTheme | undefined>;
13449
14150
  /** Emitted when the user confirms a selection. */
13450
14151
  readonly applyTheme: _angular_core.OutputEmitterRef<PptxThemePreset>;
14152
+ readonly applyCustomTheme: _angular_core.OutputEmitterRef<CustomThemeEdit>;
13451
14153
  /** Emitted when the user cancels (backdrop click, Close button, Cancel button). */
13452
14154
  readonly close: _angular_core.OutputEmitterRef<void>;
13453
14155
  protected readonly presets: readonly PptxThemePreset[];
13454
14156
  /** The currently highlighted (not yet applied) preset, or null. */
13455
14157
  protected readonly selected: _angular_core.WritableSignal<PptxThemePreset | null>;
14158
+ protected readonly customizing: _angular_core.WritableSignal<boolean>;
13456
14159
  protected selectPreset(preset: PptxThemePreset): void;
13457
14160
  protected applySelected(): void;
13458
14161
  protected onBackdropClick(event: MouseEvent): void;
13459
14162
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemeGalleryComponent, never>;
13460
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThemeGalleryComponent, "pptx-theme-gallery", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "activeName": { "alias": "activeName"; "required": false; "isSignal": true; }; }, { "applyTheme": "applyTheme"; "close": "close"; }, never, never, true, never>;
14163
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThemeGalleryComponent, "pptx-theme-gallery", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "activeName": { "alias": "activeName"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; }, { "applyTheme": "applyTheme"; "applyCustomTheme": "applyCustomTheme"; "close": "close"; }, never, never, true, never>;
13461
14164
  }
13462
14165
 
13463
14166
  /**
@@ -13502,6 +14205,8 @@ declare class TitleBarComponent {
13502
14205
  readonly redoLabel: _angular_core.InputSignal<string | undefined>;
13503
14206
  /** Whether the Find & Replace panel is open (search-button active state). */
13504
14207
  readonly findReplaceOpen: _angular_core.InputSignal<boolean>;
14208
+ /** Toolbar buttons the host wants hidden (gates Undo/Redo independently). */
14209
+ readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
13505
14210
  readonly toggleAutosave: _angular_core.OutputEmitterRef<void>;
13506
14211
  readonly save: _angular_core.OutputEmitterRef<void>;
13507
14212
  readonly undo: _angular_core.OutputEmitterRef<void>;
@@ -13535,6 +14240,7 @@ declare class TitleBarComponent {
13535
14240
  readonly rightSpacer: "flex items-center justify-end gap-1 shrink-0";
13536
14241
  };
13537
14242
  protected readonly defaultFileKey = "pptx.titleBar.defaultFileName";
14243
+ protected readonly toolbar: ToolbarVisibility;
13538
14244
  protected readonly searchQuery: _angular_core.WritableSignal<string>;
13539
14245
  protected readonly searchFocused: _angular_core.WritableSignal<boolean>;
13540
14246
  protected readonly commandResults: _angular_core.Signal<CommandSearchEntry[]>;
@@ -13547,7 +14253,7 @@ declare class TitleBarComponent {
13547
14253
  protected onSearchBlur(): void;
13548
14254
  protected onSearchKeyDown(event: KeyboardEvent): void;
13549
14255
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TitleBarComponent, never>;
13550
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TitleBarComponent, "pptx-title-bar", never, { "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "isDirty": { "alias": "isDirty"; "required": false; "isSignal": true; }; "autosaveStatus": { "alias": "autosaveStatus"; "required": false; "isSignal": true; }; "autosaveEnabled": { "alias": "autosaveEnabled"; "required": false; "isSignal": true; }; "canUndo": { "alias": "canUndo"; "required": false; "isSignal": true; }; "canRedo": { "alias": "canRedo"; "required": false; "isSignal": true; }; "undoLabel": { "alias": "undoLabel"; "required": false; "isSignal": true; }; "redoLabel": { "alias": "redoLabel"; "required": false; "isSignal": true; }; "findReplaceOpen": { "alias": "findReplaceOpen"; "required": false; "isSignal": true; }; }, { "toggleAutosave": "toggleAutosave"; "save": "save"; "undo": "undo"; "redo": "redo"; "toggleFindReplace": "toggleFindReplace"; "commandSearch": "commandSearch"; }, never, never, true, never>;
14256
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TitleBarComponent, "pptx-title-bar", never, { "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "isDirty": { "alias": "isDirty"; "required": false; "isSignal": true; }; "autosaveStatus": { "alias": "autosaveStatus"; "required": false; "isSignal": true; }; "autosaveEnabled": { "alias": "autosaveEnabled"; "required": false; "isSignal": true; }; "canUndo": { "alias": "canUndo"; "required": false; "isSignal": true; }; "canRedo": { "alias": "canRedo"; "required": false; "isSignal": true; }; "undoLabel": { "alias": "undoLabel"; "required": false; "isSignal": true; }; "redoLabel": { "alias": "redoLabel"; "required": false; "isSignal": true; }; "findReplaceOpen": { "alias": "findReplaceOpen"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; }, { "toggleAutosave": "toggleAutosave"; "save": "save"; "undo": "undo"; "redo": "redo"; "toggleFindReplace": "toggleFindReplace"; "commandSearch": "commandSearch"; }, never, never, true, never>;
13551
14257
  }
13552
14258
 
13553
14259
  /**
@@ -13657,5 +14363,5 @@ declare const SEQUENCE_OPTIONS: ReadonlyArray<{
13657
14363
  labelKey: string;
13658
14364
  }>;
13659
14365
 
13660
- export { ALIGN_OPTIONS, AUDIENCE_HASH, AUDIENCE_NONCE_KEY, AccessibilityPanelComponent, AccessibilityService, AdvancedChartEditorComponent, AnimationAuthorPanelComponent, AnimationPanelComponent, AnimationPlaybackService, AutosaveService, BroadcastDialogComponent, CHART_EDITOR_STYLES, CURSOR_PALETTE, CanvasFitService, ChartAxisOptionsComponent, ChartAxisStyleOptionsComponent, ChartComboTypeOptionsComponent, ChartDataEditorComponent, ChartDataLabelOptionsComponent, ChartDatapointOptionsComponent, ChartDisplayOptionsComponent, ChartElementViewComponent, ChartErrorBarOptionsComponent, ChartMarkerOptionsComponent, ChartPartSelectionService, ChartPrimitivesComponent, ChartRendererComponent, ChartTrendlineOptionsComponent, CollaborationCursorsComponent, CollaborationService, ColorChangedImageComponent, CommentsPanelComponent, CommentsService, ComparePanelComponent, ConnectorRendererComponent, ConnectorTextOverlayComponent, CustomShowsComponent, DATA_TABLE_HEADER_H, DATA_TABLE_KEY_W, DATA_TABLE_PADDING, DATA_TABLE_ROW_H, 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_PRINT_SETTINGS, DEFAULT_SLIDE_BACKGROUND, DEFAULT_STROKE_COLOR, DEFAULT_STYLE, DEFAULT_TABLE_ROW_HEIGHT, DEFAULT_TEXT_COLOR, DIRECTIONAL_PRESETS, DIRECTION_OPTIONS, 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, GradientPickerComponent, HANDOUT_OPTIONS, HyperlinkDialogComponent, InkDrawingService, InkRendererComponent, InsertSmartArtDialogComponent, InspectorPanelComponent, IsMobileService, KeepAnnotationsDialogComponent, LONG_PRESS_DURATION_MS, LONG_PRESS_MOVE_TOLERANCE_PX, LoadContentService, LocalPresencePublisher, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, MediaRendererComponent, MobileBottomBarComponent, MobileMenuSheetComponent, MobilePresenterViewComponent, MobileSheetComponent, MobileSlidesSheetComponent, MobileToolbarComponent, ModalDialogComponent, Model3DRendererComponent, NotesPanelComponent, NotesToolbarComponent, OleRendererComponent, PRESENTER_CHANNEL_NAME, PRESENTER_MSG_ORIGIN, PasswordProtectionDialogComponent, PasswordStrengthMeterComponent, PowerPointViewerComponent, PresentationAnnotationOverlayComponent, PresentationAnnotationsService, PresentationOverlayComponent, PresentationSubtitleBarComponent, PresentationTransitionOverlayComponent, PresenterViewComponent, PresenterWindowService, PrintDialogComponent, PrintService, PrintSettingsPanelComponent, PropertiesDialogComponent, REPEAT_MODE_OPTIONS, RESIZE_HANDLES, RULER_THICKNESS, RemoteSelectionOverlayComponent, RibbonAnimationsSectionComponent, RibbonArrangeSectionComponent, RibbonColorPopoverComponent, RibbonComponent, RibbonDesignSectionComponent, RibbonDrawSectionComponent, RibbonDrawingGroupComponent, RibbonEditingSectionComponent, RibbonFileSectionComponent, RibbonFontControlsComponent, RibbonHomeSectionComponent, RibbonInsertFieldsComponent, RibbonInsertSectionComponent, RibbonParagraphControlsComponent, RibbonPrimaryRowComponent, RibbonReviewSectionComponent, RibbonSlideshowSectionComponent, RibbonTransitionsSectionComponent, RibbonViewSectionComponent, RulerGuidesService, SEQUENCE_OPTIONS, SEVERITY_GROUPS, SEVERITY_LABELS, SHORTCUT_REFERENCE_ITEMS, SLIDE_PX_PER_INCH, 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, ShareDialogComponent, ShortcutPanelComponent, ShowOptionsFieldsetComponent, ShowSlidesFieldsetComponent, SignatureStrippedDialogComponent, SignaturesPanelComponent, SignaturesService, SlideCanvasComponent, SlideDiffChangesComponent, SlideDiffRowComponent, SlideDiffThumbnailsComponent, SlideSorterOverlayComponent, SlidesPanelComponent, SmartArt3DRendererComponent, SmartArt3DService, SmartArtPreviewComponent, SmartArtPropertiesComponent, SmartArtRendererComponent, StatusBarComponent, TABLE_STRUCTURE_TOGGLES, TEXT_DIRECTION_OPTIONS, TIMING_CURVE_OPTIONS, TRIGGER_OPTIONS, TYPE_LABELS, TableCellAdvancedFillComponent, TableCellFormattingComponent, TableDataEditorComponent, TablePropertiesComponent, TableRendererComponent, TableResizeOverlayComponent, TableSelectionService, TextAdvancedPanelComponent, ThemeGalleryComponent, TitleBarComponent, 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, ZoomNavigationService, ZoomRendererComponent, ZoomTargetService, addCategory, addCommentToList, addGradientStopPatch, addItem, addSeries, addSubItem, advanceStep, alignPatch, animationFor, annotationMapToInkInserts, applyAcceptedDiff, applyAnimationPreset, applyFindReplacements, applyFormatToElement, applyMove, applyResize, applyTableStylePreset, asMediaElement, assignUserColor, attachTouchGestures, beginNodeEdit, boolFromEvent, bringForward, bringToFront, buildBarActions, buildBroadcastConfig, buildBroadcastViewerUrl, buildCategoryLabels, buildCellParagraphs, buildChartViewModel, buildChromeStyle, buildClearHyperlinkPatch, buildClickGroups, buildColStyles, buildCollaborationConfig, buildComboViewModel, buildCssGradientFromShapeStyle, buildDuotoneFilter, buildDuotoneFilterId, buildEmbeddedFontStyles, buildEquationElement, buildEquationSegment, buildFallbackViewModel, buildFontFaceRule, buildGradientFillCss, buildGridlinesAndLabels, buildHyperlinkPatch, buildInkContainerStyle, buildInkStrokes, buildLegend, buildModel3DContainerStyle, buildModel3DViewModel, buildOleActionModel, buildOleInfoRows, buildPatternFillCss, buildPrintHtmlDocument as buildPrintDocument, buildPropertiesPatch, buildRegionMapViewModel, buildSaveSlides, buildShareUrl, buildSmartArtInsertElement, buildSmartArtNodes, buildStockViewModel, buildSurfaceViewModel, buildTableViewModel, buildTreemapViewModel, buildTrimFragment, buildWaterfallViewModel, buildZeroLine, buildZoomContainerStyle, buildZoomViewModel, bulletIndentPx, canAddTopLevelNode, canRemoveTopLevelNode, canStartBroadcast, canStartShare, canUseClipboard, captionDisplayText, cellRunStyle, cellStyleToStyleMap, cellTdStyle, changeCountLabel, changeIcon, characterSpacingPatch, checkFontAvailable, clampCursorPosition, clampGifDimensions, clampIndex, clampNotesFontSize, clampScale, clampStep, clearAudienceContent, cn, collectAccessibilityIssues, collectElementText, collectSlideText, collectUsedFontFamilies, columnWidthStyle, commitNodeText, computeAlign, computeAxisTitlePrimitives, computeBarRects, computeBubbleRadius, computeCornerHandle, computeDataTablePrimitives, computeDistribute, computeDrawingViewBox, computeErrorBarPrimitives, computeHandleBoxes, computeHandoutLayout, computeIsMobile, computeIsTablet, computeLinePoints, computeLinearRegression, computePageCount, computePieLayout, computePieSlicePath, computePieSlices, computePlotLayout, computeRSquared, computeRadarPoints, computeScatterDots, computeSelectionBoxes, computeSingleSelected, computeSlideIndices, computeSnap, computeStackedBarRects, computeStackedValueRange, computeTextLines, computeTimerProgress, computeTrendlinePrimitives, computeValueRange, convertOmmlToMathMl, copyFormatFromElement, countAccessibilityIssues, countAnnotationStrokes, 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, estimatePageCount, evenColumnWidths, evenRowHeights, exitPresentationFullscreen, extractPathPoints, eyedropperAvailable, fillColorOf, findInSlides, findOwningSlideIndex, findSlideIndexByElementId, fitPolynomial, fitZoom, fontMimeForFormat, fontSizeOf, formatAutoNumber, formatAxisValue, formatBytes, formatCursorLabel, formatElapsed, formatFileSize, formatPropertyDate, formatTime, fpsToFrameIntervalMs, generateBroadcastRoomId, generateCommentId, generateCustomShowId, generatePressureCircles, generateRulerTicks, getClrChangeParams, getContainerStyle, getDuotoneFilterDef, getImageSrc, getOleAriaLabel, getOleBadgeLabel, getOleDisplayName, getOleDownloadFileName, getOleTypeColor, getOleTypeLabel, getPasswordStrength, getPatternSvg, getPlaceholderStyle, getVersions as getRecoveryVersions, getResolvedShapeClipPath, getResolvedShapeClipPathFor, getShapeFillStrokeStyle, getSlideBackgroundStyle, getSlideTransitionAnimations, getSmartArtNodeBounds, getSpeechRecognitionCtor, getTextBlockStyle, getTextWarp, getTouchDistance, getWarpCategory, getWarpPath, gradientStateFromStyle, gradientStateOf, gradientStatePatch, gridColumns, groupElements, groupIssuesBySeverity, hasAnimation, hasCopyableFormat, hasExistingLink, hasExitedFullscreen, hasGradientFill, hasPressureVariation, headerLabel, inkViewBox, insertColumn, insertRow, interpolateWidth, isAudienceTab, isBold, isBrowserOpenableMime, isChildNode, isElementInteractive, isInjectableUrl, isItalic, isPpactionUrl, isPresenterMessage, isSigned, isTextElement, isUnderline, isUrlSafe, isValidRoomId, isViewportBackgroundPressTarget, isZoomActivationKey, issueTrackKey, issueTypeLabel, keyToLabel, latexToMathml, linePointsToSvgString, lineSpacingPatch, loadAudienceContent, mergeCaptionResults, mergeDown, mergeRight, mergeSelection, moveElementBy, moveNodeDown, moveNodeUp, msToFrameDelayCs, narrowToCircle, narrowToPolygon, narrowToRect, newChartElement, newEquationElement, 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, pendingElementStyles, pickColorByClickFallback, pickSupportedMimeType, planGifFrames, planVideoSegments, pointsToSvgPathD, presenceToCursors, presetByLayout, presetsForCategory, pressuresToWidths, prevVisibleIndex, projectDrawingShapes, promoteNode, provideViewerTheme, radarAngle, radarRingPoints, recordWebm, redistributeColumnWidth, removeAnimation, removeCategory, removeColumn, removeCommentFromList, removeElementAnimation, removeGradientStopPatch, removeNode, removeRow, removeSeries, renderToCanvas, reorderAnimationDown, reorderAnimationUp, replaceInSlides, replaceMatch, requestPresentationFullscreen, resizeElement, resolveCaptionTracks, resolveChartKind, resolveFontVariant, resolveHyperlinkHref, resolveInteractiveElementId, resolveMediaSrc, resolveOleType, resolveParagraphBullet, resolvePresenterNotes, resolveRegionCode, resolvePalette as resolveSmartArtPalette, resolveTransitionDuration, revealedElementStyles, routeOrthogonalConnector, rowStyle, sampleColorFromSlide, sanitizeColor, sanitizeSlideIndex, sanitizeUserName, scanAvailableFonts, searchSlides, seedBroadcastFields, seedHyperlinkDraft, seedPropertiesDraft, seedShareFields, segmentFrameCount, selectValue, sendBackward, sendToBack, sequentialColorScale, serializeWriteBack, seriesColor, setAnimationEmphasis, setAnimationEntrance, setAnimationExit, setAxis, setAxisLogScale, setAxisTitleStyle, setCategoryLabel, setCellText, setColorScheme, setDataLabels, setDataPointExplosion, setDataPointFill, setDataPointLabel, setDelay, setDirection, setDuration, setElementPosition, setGridlineStyle, setLayout, setLegend, setNodeStyle, setNodeText, setRepeatCount, setRepeatMode, setSequence, setSeriesChartType, setSeriesColor, setSeriesErrorBars, setSeriesMarker, setSeriesName, setSeriesTrendline, setSeriesValue, setStyle, setTimingCurve, setTitle, setTrigger, setTriggerShapeId, shapeStylePatch, sheetAfterNavigate, shouldUseSvgWarp, showDirectionPicker, showsTemplateAffordance, signatureCountLabel, signatureKey, signatureTimestamp, signerName, statusLabel as slideDiffStatusLabel, slideNumberOf, smartArtNodes, paletteColour as smartArtPaletteColour, snapToGridStep, splitCursorCell, splitMergedCell, statusKind, statusLabel$1 as statusLabel, storeAudienceContent, stringFromEvent, strokeColorOf, strokeToInkElement, styleShadowFilter, textAdvancedPatch, textAdvancedStateFromStyle, textAdvancedStateOf, textColorOf, textDirectionPatch, textStyleOf, textStylePatch, themeStyle, themeToCssVars, thumbnailHeight, thumbnailZoom, toggleCommentResolvedInList, toggleNodeBold, toggleNodeItalic, toggleSheet, topLevelNodeCount, transformSelectedTextCase, translationsEn, ungroupElements, updateElementById, updateGlowPatch, updateGradientStopPatch, updateInnerShadowPatch, updateOuterShadowPatch, updateReflectionPatch, vAlignPatch, validatePassword, validatePrintSettings, validateRoomId, valueToY, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, waypointsToPathD, worstStatus, zoomTargetSlideIndex };
13661
- export type { AccessibilityIssueGroup, ActionDescriptor, AlignBox, AlignMode, AnimationClickGroup, AnimationGroup, AnnotationInkInsert, AnnotationStroke, AttachTouchGesturesConfig, AwarenessLike, BarRect, Box, 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, DestroyableYDoc, DiagonalBorderInfo, DistributeMode, DocumentProperties, DrawingViewBox, DuotoneFilterDef, EffectsState, EmbeddedFontStyles, EquationTemplate, EyedropperResult, FindOptions, FindResult, GifFrame, GifFramePlan, GifPlanOptions, GlowState, GradientState, GradientStop$1 as GradientStop, GroupResult, HandleBox, HandoutSlidesPerPage, HyperlinkDraft, InkPoint, InkStroke, InlineEditState, InnerShadowState, LegendEntry, LinePoint, LinearFit, LocalIdentity, MobileSheetKey, Model3DViewModel, NodeEditBox, NotesSegmentViewModel, ObjectUrlFactory, OleActionModel, OleInfoRow, OuterShadowState, OverallSignatureStatus, PartitionedSlides, PathPoint, PieSliceGeometry, PlotLayout, PlotLayoutOptions, PositionUpdate, PowerPointViewerAPI, PresentationTool, PresenterExitMessage, PresenterMessage, PresenterNotes, PresenterSlideChangeMessage, PressureCircle, PrintColorMode, PrintHtmlDocumentOptions as PrintDocumentOptions, PrintOrientation, PrintSettings, PrintSlideRange, PrintWhat, PropertiesDraft, ProviderBundle, ProviderLike, RadarPoint, RecordWebmOptions, RecoveryVersion, ReflectionState, RemoteCursor, SanitizedPresence as RemotePresence, RenderedShape, ReplaceResult, ResizeHandle, ResolvedCaptionTrack, ResolvedFontVariant, ResolvedOleType, RulerTick, ScatterDot, SelectionBox, ShapeStyleChanges, ShareDefaults, ShareFormFields, ShortcutReferenceItem, SignatureStatusKind, SlideTransitionAnimations, SmartArtInsertEvent, SmartArtNodeBounds, SnapBox, SnapGuide, SnapResult, SoftEdgeState, SpeechAlternative, SpeechRecognitionCtor, SpeechRecognitionEventLite, SpeechRecognitionLite, SpeechResult, SpeechResultList, SpeechSupportState, StrokeToInkElementOpts, StyleMap, SupportedChartKind, SvgAreaGradient, SvgCircle, SvgLine, SvgPath, SvgPolygon, SvgPolyline, SvgPrimitive, SvgRect, SvgText, SwipeDismissDrag, TableBooleanFlag, TableCellSelection, TableCellViewModel, TableRowViewModel, TemplateElementsBySlideId, TextAdvancedChanges, TextAdvancedState, TextStyleChanges, TextWarpCssDef, TextWarpDef, TextWarpPathDef, TimerProgress, TouchGestureCallbacks, TranslationKey, UngroupResult, ValueRange, VideoPlanOptions, VideoSegmentPlan, ViewerMode, ViewerTheme, ViewerThemeColors, ZoomViewModel };
14366
+ export { ALIGN_OPTIONS, AUDIENCE_HASH, AUDIENCE_NONCE_KEY, AccessibilityPanelComponent, AccessibilityService, ActionSettingsPanelComponent, AdvancedChartEditorComponent, AnimationAuthorPanelComponent, AnimationPanelComponent, AnimationPlaybackService, AutosaveService, BroadcastDialogComponent, CHART_EDITOR_STYLES, CURSOR_PALETTE, CanvasFitService, ChartAxisOptionsComponent, ChartAxisStyleOptionsComponent, ChartComboTypeOptionsComponent, ChartDataEditorComponent, ChartDataLabelOptionsComponent, ChartDatapointOptionsComponent, ChartDisplayOptionsComponent, ChartElementViewComponent, ChartErrorBarOptionsComponent, ChartMarkerOptionsComponent, ChartPartSelectionService, ChartPrimitivesComponent, ChartRendererComponent, ChartTrendlineOptionsComponent, CollaborationCursorsComponent, CollaborationService, ColorChangedImageComponent, CommentsPanelComponent, CommentsService, ComparePanelComponent, ConnectorRendererComponent, ConnectorTextOverlayComponent, CustomShowsComponent, DATA_TABLE_HEADER_H, DATA_TABLE_KEY_W, DATA_TABLE_PADDING, DATA_TABLE_ROW_H, 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_PRINT_SETTINGS, DEFAULT_SLIDE_BACKGROUND, DEFAULT_STROKE_COLOR, DEFAULT_STYLE, DEFAULT_TABLE_ROW_HEIGHT, DEFAULT_TEXT_COLOR, DIRECTIONAL_PRESETS, DIRECTION_OPTIONS, 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, GradientPickerComponent, HANDOUT_OPTIONS, HeaderFooterDialogComponent, HyperlinkDialogComponent, ImagePropertiesPanelComponent, InkDrawingService, InkRendererComponent, InsertSmartArtDialogComponent, InspectorPanelComponent, IsMobileService, KeepAnnotationsDialogComponent, LONG_PRESS_DURATION_MS, LONG_PRESS_MOVE_TOLERANCE_PX, LoadContentService, LocalPresencePublisher, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, MediaPreviewComponent, MediaPropertiesPanelComponent, MediaRendererComponent, MediaTrimTimelineComponent, MobileBottomBarComponent, MobileMenuSheetComponent, MobilePresenterViewComponent, MobileSheetComponent, MobileSlidesSheetComponent, MobileToolbarComponent, ModalDialogComponent, Model3DRendererComponent, NotesPanelComponent, NotesToolbarComponent, OleRendererComponent, PRESENTER_CHANNEL_NAME, PRESENTER_MSG_ORIGIN, PasswordProtectionDialogComponent, PasswordStrengthMeterComponent, PowerPointViewerComponent, PresentationAnnotationOverlayComponent, PresentationAnnotationsService, PresentationOverlayComponent, PresentationSubtitleBarComponent, PresentationTransitionOverlayComponent, PresenterViewComponent, PresenterWindowService, PrintDialogComponent, PrintService, PrintSettingsPanelComponent, PropertiesDialogComponent, REPEAT_MODE_OPTIONS, RESIZE_HANDLES, RULER_THICKNESS, RemoteSelectionOverlayComponent, RibbonAnimationsSectionComponent, RibbonArrangeSectionComponent, RibbonColorPopoverComponent, RibbonComponent, RibbonDesignSectionComponent, RibbonDrawSectionComponent, RibbonDrawingGroupComponent, RibbonEditingSectionComponent, RibbonFileSectionComponent, RibbonFontControlsComponent, RibbonHomeSectionComponent, RibbonInsertFieldsComponent, RibbonInsertSectionComponent, RibbonParagraphControlsComponent, RibbonPrimaryRowComponent, RibbonReviewSectionComponent, RibbonSlideshowSectionComponent, RibbonTransitionsSectionComponent, RibbonViewSectionComponent, RulerGuidesService, SEQUENCE_OPTIONS, SEVERITY_GROUPS, SEVERITY_LABELS, SHORTCUT_REFERENCE_ITEMS, SLIDE_PX_PER_INCH, 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, SettingsDialogComponent, ShareDialogComponent, ShortcutPanelComponent, ShowOptionsFieldsetComponent, ShowSlidesFieldsetComponent, SignatureStrippedDialogComponent, SignaturesPanelComponent, SignaturesService, SlideCanvasComponent, SlideDiffChangesComponent, SlideDiffRowComponent, SlideDiffThumbnailsComponent, SlideSorterOverlayComponent, SlideThemeOverridePanelComponent, SlidesPanelComponent, SmartArt3DRendererComponent, SmartArt3DService, SmartArtPreviewComponent, SmartArtPropertiesComponent, SmartArtRendererComponent, StatusBarComponent, TABLE_STRUCTURE_TOGGLES, TEXT_DIRECTION_OPTIONS, TIMING_CURVE_OPTIONS, TRIGGER_OPTIONS, TYPE_LABELS, TableCellAdvancedFillComponent, TableCellFormattingComponent, TableDataEditorComponent, TablePropertiesComponent, TableRendererComponent, TableResizeOverlayComponent, TableSelectionService, TextAdvancedPanelComponent, ThemeEditorFieldsComponent, ThemeGalleryComponent, TitleBarComponent, 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, ZoomNavigationService, ZoomRendererComponent, ZoomTargetService, addCategory, addCommentToList, addGradientStopPatch, addItem, addSeries, addSubItem, advanceStep, alignPatch, animationFor, annotationMapToInkInserts, applyAcceptedDiff, applyAnimationPreset, applyFindReplacements, applyFormatToElement, applyMove, applyResize, applyTableStylePreset, asMediaElement, assignUserColor, attachTouchGestures, beginNodeEdit, boolFromEvent, bringForward, bringToFront, buildBarActions, buildBroadcastConfig, buildBroadcastViewerUrl, buildCategoryLabels, buildCellParagraphs, buildChartViewModel, buildChromeStyle, buildClearHyperlinkPatch, buildClickGroups, buildColStyles, buildCollaborationConfig, buildComboViewModel, buildCssGradientFromShapeStyle, buildDuotoneFilter, buildDuotoneFilterId, buildEmbeddedFontStyles, buildEquationElement, buildEquationSegment, buildFallbackViewModel, buildFontFaceRule, buildGradientFillCss, buildGridlinesAndLabels, buildHyperlinkPatch, buildInkContainerStyle, buildInkStrokes, buildLegend, buildModel3DContainerStyle, buildModel3DViewModel, buildOleActionModel, buildOleInfoRows, buildPatternFillCss, buildPrintHtmlDocument as buildPrintDocument, buildPropertiesPatch, buildRegionMapViewModel, buildSaveSlides, buildShareUrl, buildSmartArtInsertElement, buildSmartArtNodes, buildStockViewModel, buildSurfaceViewModel, buildTableViewModel, buildTreemapViewModel, buildTrimFragment, buildWaterfallViewModel, buildZeroLine, buildZoomContainerStyle, buildZoomViewModel, bulletIndentPx, canAddTopLevelNode, canRemoveTopLevelNode, canStartBroadcast, canStartShare, canUseClipboard, captionDisplayText, cellRunStyle, cellStyleToStyleMap, cellTdStyle, changeCountLabel, changeIcon, characterSpacingPatch, checkFontAvailable, clampCursorPosition, clampGifDimensions, clampIndex, clampNotesFontSize, clampScale, clampStep, clearAudienceContent, cn, collectAccessibilityIssues, collectElementText, collectSlideText, collectUsedFontFamilies, columnWidthStyle, commitNodeText, computeAlign, computeAxisTitlePrimitives, computeBarRects, computeBubbleRadius, computeCornerHandle, computeDataTablePrimitives, computeDistribute, computeDrawingViewBox, computeErrorBarPrimitives, computeHandleBoxes, computeHandoutLayout, computeIsMobile, computeIsTablet, computeLinePoints, computeLinearRegression, computePageCount, computePieLayout, computePieSlicePath, computePieSlices, computePlotLayout, computeRSquared, computeRadarPoints, computeScatterDots, computeSelectionBoxes, computeSingleSelected, computeSlideIndices, computeSnap, computeStackedBarRects, computeStackedValueRange, computeTextLines, computeTimerProgress, computeTrendlinePrimitives, computeValueRange, convertOmmlToMathMl, copyFormatFromElement, countAccessibilityIssues, countAnnotationStrokes, 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, estimatePageCount, evenColumnWidths, evenRowHeights, exitPresentationFullscreen, extractPathPoints, eyedropperAvailable, fillColorOf, findInSlides, findOwningSlideIndex, findSlideIndexByElementId, fitPolynomial, fitZoom, fontMimeForFormat, fontSizeOf, formatAutoNumber, formatAxisValue, formatBytes, formatCursorLabel, formatElapsed, formatFileSize, formatPropertyDate, formatTime, fpsToFrameIntervalMs, generateBroadcastRoomId, generateCommentId, generateCustomShowId, generatePressureCircles, generateRulerTicks, getClrChangeParams, getContainerStyle, getDuotoneFilterDef, getImageSrc, getOleAriaLabel, getOleBadgeLabel, getOleDisplayName, getOleDownloadFileName, getOleTypeColor, getOleTypeLabel, getPasswordStrength, getPatternSvg, getPlaceholderStyle, getVersions as getRecoveryVersions, getResolvedShapeClipPath, getResolvedShapeClipPathFor, getShapeFillStrokeStyle, getSlideBackgroundStyle, getSlideTransitionAnimations, getSmartArtNodeBounds, getSpeechRecognitionCtor, getTextBlockStyle, getTextWarp, getTouchDistance, getWarpCategory, getWarpPath, gradientStateFromStyle, gradientStateOf, gradientStatePatch, gridColumns, groupElements, groupIssuesBySeverity, hasAnimation, hasCopyableFormat, hasExistingLink, hasExitedFullscreen, hasGradientFill, hasPressureVariation, headerLabel, inkViewBox, insertColumn, insertRow, interpolateWidth, isAudienceTab, isBold, isBrowserOpenableMime, isChildNode, isElementInteractive, isInjectableUrl, isItalic, isPpactionUrl, isPresenterMessage, isSigned, isTextElement, isUnderline, isUrlSafe, isValidRoomId, isViewportBackgroundPressTarget, isZoomActivationKey, issueTrackKey, issueTypeLabel, keyToLabel, latexToMathml, linePointsToSvgString, lineSpacingPatch, loadAudienceContent, mergeCaptionResults, mergeDown, mergeRight, mergeSelection, moveElementBy, moveNodeDown, moveNodeUp, msToFrameDelayCs, narrowToCircle, narrowToPolygon, narrowToRect, newChartElement, newEquationElement, 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, pendingElementStyles, pickColorByClickFallback, pickSupportedMimeType, planGifFrames, planVideoSegments, pointsToSvgPathD, presenceToCursors, presetByLayout, presetsForCategory, pressuresToWidths, prevVisibleIndex, projectDrawingShapes, promoteNode, provideViewerTheme, radarAngle, radarRingPoints, recordWebm, redistributeColumnWidth, removeAnimation, removeCategory, removeColumn, removeCommentFromList, removeElementAnimation, removeGradientStopPatch, removeNode, removeRow, removeSeries, renderToCanvas, reorderAnimationDown, reorderAnimationUp, replaceInSlides, replaceMatch, requestPresentationFullscreen, resizeElement, resolveCaptionTracks, resolveChartKind, resolveFontVariant, resolveHyperlinkHref, resolveInteractiveElementId, resolveMediaSrc, resolveOleType, resolveParagraphBullet, resolvePresenterNotes, resolveRegionCode, resolvePalette as resolveSmartArtPalette, resolveTransitionDuration, revealedElementStyles, routeOrthogonalConnector, rowStyle, sampleColorFromSlide, sanitizeColor, sanitizeSlideIndex, sanitizeUserName, scanAvailableFonts, searchSlides, seedBroadcastFields, seedHyperlinkDraft, seedPropertiesDraft, seedShareFields, segmentFrameCount, selectValue, sendBackward, sendToBack, sequentialColorScale, serializeWriteBack, seriesColor, setAnimationEmphasis, setAnimationEntrance, setAnimationExit, setAxis, setAxisLogScale, setAxisTitleStyle, setCategoryLabel, setCellText, setColorScheme, setDataLabels, setDataPointExplosion, setDataPointFill, setDataPointLabel, setDelay, setDirection, setDuration, setElementPosition, setGridlineStyle, setLayout, setLegend, setNodeStyle, setNodeText, setRepeatCount, setRepeatMode, setSequence, setSeriesChartType, setSeriesColor, setSeriesErrorBars, setSeriesMarker, setSeriesName, setSeriesTrendline, setSeriesValue, setStyle, setTimingCurve, setTitle, setTrigger, setTriggerShapeId, shapeStylePatch, sheetAfterNavigate, shouldUseSvgWarp, showDirectionPicker, showsTemplateAffordance, signatureCountLabel, signatureKey, signatureTimestamp, signerName, statusLabel as slideDiffStatusLabel, slideNumberOf, smartArtNodes, paletteColour as smartArtPaletteColour, snapToGridStep, splitCursorCell, splitMergedCell, statusKind, statusLabel$1 as statusLabel, storeAudienceContent, stringFromEvent, strokeColorOf, strokeToInkElement, styleShadowFilter, textAdvancedPatch, textAdvancedStateFromStyle, textAdvancedStateOf, textColorOf, textDirectionPatch, textStyleOf, textStylePatch, themeStyle, themeToCssVars, thumbnailHeight, thumbnailZoom, toggleCommentResolvedInList, toggleNodeBold, toggleNodeItalic, toggleSheet, topLevelNodeCount, transformSelectedTextCase, translationsEn, ungroupElements, updateElementById, updateGlowPatch, updateGradientStopPatch, updateInnerShadowPatch, updateOuterShadowPatch, updateReflectionPatch, vAlignPatch, validatePassword, validatePrintSettings, validateRoomId, valueToY, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, waypointsToPathD, worstStatus, zoomTargetSlideIndex };
14367
+ export type { AccessibilityIssueGroup, ActionDescriptor, AlignBox, AlignMode, AnimationClickGroup, AnimationGroup, AnnotationInkInsert, AnnotationStroke, AttachTouchGesturesConfig, AwarenessLike, BarRect, Box, 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, EffectsState, EmbeddedFontStyles, EquationTemplate, EyedropperResult, FindOptions, FindResult, GifFrame, GifFramePlan, GifPlanOptions, GlowState, GradientState, GradientStop$1 as GradientStop, GroupResult, HandleBox, HandoutSlidesPerPage, HyperlinkDraft, InkPoint, InkStroke, InlineEditState, InnerShadowState, LegendEntry, LinePoint, LinearFit, LocalIdentity, MobileSheetKey, Model3DViewModel, NodeEditBox, NotesSegmentViewModel, ObjectUrlFactory, OleActionModel, OleInfoRow, OuterShadowState, OverallSignatureStatus, PartitionedSlides, PathPoint, PieSliceGeometry, PlotLayout, PlotLayoutOptions, PositionUpdate, PowerPointViewerAPI, PresentationTool, PresenterExitMessage, PresenterMessage, PresenterNotes, PresenterSlideChangeMessage, PressureCircle, PrintColorMode, PrintHtmlDocumentOptions as PrintDocumentOptions, PrintOrientation, PrintSettings, PrintSlideRange, PrintWhat, PropertiesDraft, ProviderBundle, ProviderLike, RadarPoint, RecordWebmOptions, RecoveryVersion, ReflectionState, RemoteCursor, SanitizedPresence as RemotePresence, RenderedShape, ReplaceResult, ResizeHandle, ResolvedCaptionTrack, ResolvedFontVariant, ResolvedOleType, RulerTick, ScatterDot, SelectionBox, ShapeStyleChanges, ShareDefaults, ShareFormFields, ShortcutReferenceItem, SignatureStatusKind, SlideTransitionAnimations, SmartArtInsertEvent, SmartArtNodeBounds, SnapBox, SnapGuide, SnapResult, SoftEdgeState, SpeechAlternative, SpeechRecognitionCtor, SpeechRecognitionEventLite, SpeechRecognitionLite, SpeechResult, SpeechResultList, SpeechSupportState, StrokeToInkElementOpts, StyleMap, SupportedChartKind, SvgAreaGradient, SvgCircle, SvgLine, SvgPath, SvgPolygon, SvgPolyline, SvgPrimitive, SvgRect, SvgText, SwipeDismissDrag, TableBooleanFlag, TableCellSelection, TableCellViewModel, TableRowViewModel, TemplateElementsBySlideId, TextAdvancedChanges, TextAdvancedState, TextStyleChanges, TextWarpCssDef, TextWarpDef, TextWarpPathDef, TimerProgress, ToolbarActionId, TouchGestureCallbacks, TranslationKey, UngroupResult, ValueRange, VideoPlanOptions, VideoSegmentPlan, ViewerMode, ViewerSettings, ViewerTheme, ViewerThemeColors, ZoomViewModel };