pptx-angular-viewer 1.18.0 → 1.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as pptx_viewer_core from 'pptx-viewer-core';
2
- import { 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, PptxNotesMaster, PptxHandoutMaster, PptxCoreProperties, PptxCustomProperty, PptxHeaderFooter, ParsedSignature, PptxTableCell, PptxTableCellStyle, PptxTableRow, PptxTableData, PptxCustomShow, PptxPresentationProperties, PptxThemePreset, MasterViewTab, 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';
3
3
  export { SWITCHABLE_LAYOUT_TYPES, addSmartArtNode, addSmartArtNodeAsChild, chartDataAddCategory, chartDataAddSeries, chartDataChangeType, chartDataRemoveCategory, chartDataRemoveSeries, chartDataUpdatePoint, demoteSmartArtNode, promoteSmartArtNode, removeSmartArtNode, reorderSmartArtNode, switchSmartArtLayout, updateSmartArtNodeText } from 'pptx-viewer-core';
4
4
  import * as _angular_core from '@angular/core';
5
5
  import { Signal, WritableSignal, OnDestroy, OnInit, OnChanges, SimpleChanges, InjectionToken, Provider } from '@angular/core';
@@ -133,6 +133,25 @@ declare const vermilionLightTheme: ViewerTheme;
133
133
  /** Dark vermilion theme, ready for the viewer's `theme` prop. */
134
134
  declare const vermilionDarkTheme: ViewerTheme;
135
135
 
136
+ /** One selectable entry in the viewer chrome's built-in theme picker (File > Options > Appearance). */
137
+ interface ThemeCatalogEntry {
138
+ /** Stable identifier persisted to storage and passed to `onThemeChange`. */
139
+ key: string;
140
+ /** `pptx.*` translation key for the entry's display label. */
141
+ labelKey: string;
142
+ /** The theme to apply, or `undefined` to reset to the built-in default. */
143
+ theme: ViewerTheme | undefined;
144
+ }
145
+ /**
146
+ * Built-in theme choices offered by File > Options > Appearance when a host
147
+ * doesn't supply its own `availableThemes`. Keep this list short: it's meant
148
+ * as a sensible out-of-the-box picker, not a full theme gallery. Hosts that
149
+ * want more (or fewer) choices pass their own `availableThemes` prop.
150
+ */
151
+ declare const THEME_CATALOG: readonly ThemeCatalogEntry[];
152
+ /** Look up a catalog entry by key, falling back to `undefined` (the built-in default) if not found. */
153
+ declare function resolveThemeCatalogEntry(key: string | undefined, catalog?: readonly ThemeCatalogEntry[]): ViewerTheme | undefined;
154
+
136
155
  /**
137
156
  * Framework-agnostic public types shared by the viewer bindings.
138
157
  *
@@ -674,6 +693,8 @@ interface ValueRange {
674
693
  logScale?: boolean;
675
694
  /** Logarithmic base (e.g. 10, 2, Math.E). Only meaningful when logScale is true. */
676
695
  logBase?: number;
696
+ /** Whether values increase from top to bottom. */
697
+ reverseOrder?: boolean;
677
698
  }
678
699
  /** Compute a Y-axis range that always includes zero. */
679
700
  declare function computeValueRange(series: ReadonlyArray<PptxChartSeries>): ValueRange;
@@ -802,6 +823,7 @@ interface SvgText {
802
823
  fill: string;
803
824
  textAnchor: 'start' | 'middle' | 'end';
804
825
  fontWeight?: 'normal' | 'bold';
826
+ fontFamily?: string;
805
827
  dominantBaseline?: string;
806
828
  opacity?: number;
807
829
  /** Optional SVG transform (e.g. `rotate(-90, x, y)` for a vertical axis title). */
@@ -919,7 +941,7 @@ interface ScatterDot {
919
941
  cx: number;
920
942
  cy: number;
921
943
  }
922
- declare function computeScatterDots(values: ReadonlyArray<number>, maxXIndex: number, layout: PlotLayout, range: ValueRange): ScatterDot[];
944
+ declare function computeScatterDots(values: ReadonlyArray<number>, maxXIndex: number, layout: PlotLayout, range: ValueRange, xValues?: ReadonlyArray<number>): ScatterDot[];
923
945
  /**
924
946
  * Radius of a bubble given its size value, the max size in the chart, and a
925
947
  * median radius derived from the plot area. Mirrors `renderBubbleChart` in
@@ -942,6 +964,9 @@ declare function resolveChartKind(chartType: string): SupportedChartKind | 'unsu
942
964
  declare function buildChartViewModel(element: PptxElement): ChartViewModel;
943
965
  declare function buildFallbackViewModel(width: number, height: number, label: string): ChartViewModel;
944
966
 
967
+ /** Build a bar + line combo chart, including independently scaled secondary series. */
968
+ declare function buildComboViewModel(element: PptxElement, chartData: PptxChartData, categoryLabels: ReadonlyArray<string>): ChartViewModel;
969
+
945
970
  /**
946
971
  * View-model builders for combo and stock chart kinds.
947
972
  *
@@ -967,23 +992,6 @@ declare function buildFallbackViewModel(width: number, height: number, label: st
967
992
  * @module chart-combo-stock
968
993
  */
969
994
 
970
- /**
971
- * Build a `ChartViewModel` for a combo chart (bar + line overlay).
972
- *
973
- * Convention (mirrors the React renderer):
974
- * - `chartData.series[0]` → rendered as clustered bar columns
975
- * - `chartData.series[1…N]` → rendered as line series with dot markers
976
- *
977
- * A single shared value-axis range is computed across ALL series so that the
978
- * bar and line series share the same Y scale. The category-axis tick style is
979
- * "bar" (evenly spaced groups with no extra edge padding).
980
- *
981
- * @param element - The chart element providing width/height.
982
- * @param chartData - Parsed chart data including series and style.
983
- * @param categoryLabels - Ordered category axis labels.
984
- * @returns A fully assembled `ChartViewModel` ready for the template.
985
- */
986
- declare function buildComboViewModel(element: PptxElement, chartData: PptxChartData, categoryLabels: ReadonlyArray<string>): ChartViewModel;
987
995
  /**
988
996
  * Build a `ChartViewModel` for a stock (HLC / OHLC) candlestick chart.
989
997
  *
@@ -1092,6 +1100,19 @@ declare function normalizeValue(value: number, min: number, max: number): number
1092
1100
  */
1093
1101
  declare function buildRegionMapViewModel(element: PptxElement, chartData: PptxChartData, categoryLabels: ReadonlyArray<string>): ChartViewModel;
1094
1102
 
1103
+ interface ErrorBarRenderOptions {
1104
+ /** Source point indexes in display order after category/date-axis filtering. */
1105
+ sourceIndices?: ReadonlyArray<number>;
1106
+ /** Exact display X positions for reordered category/date points. */
1107
+ xPositions?: ReadonlyArray<number>;
1108
+ /** Per-series Y ranges, used by secondary-axis combo series. */
1109
+ seriesRanges?: ReadonlyArray<ValueRange | undefined>;
1110
+ /** Per-series category mapping mode for mixed bar/line charts. */
1111
+ seriesModes?: ReadonlyArray<'line' | 'bar' | undefined>;
1112
+ }
1113
+ /** Build X- and Y-direction ChartML error-bar primitives for cartesian series. */
1114
+ declare function computeErrorBarPrimitives(chartData: PptxChartData, catCount: number, layout: PlotLayout, range: ValueRange, mode?: 'line' | 'bar', options?: ErrorBarRenderOptions): SvgPrimitive[];
1115
+
1095
1116
  /**
1096
1117
  * chart-overlays.ts — chart overlay depth for Angular pptx-angular-viewer.
1097
1118
  *
@@ -1152,21 +1173,6 @@ declare function computeRSquared(xVals: number[], yVals: number[], evalFn: (x: n
1152
1173
  * @param colorPalette Optional resolved palette (same as passed to `seriesColor`).
1153
1174
  */
1154
1175
  declare function computeTrendlinePrimitives(chartData: PptxChartData, catCount: number, layout: PlotLayout, range: ValueRange, mode?: 'line' | 'bar', colorPalette?: readonly string[]): SvgPrimitive[];
1155
- /**
1156
- * Build `SvgPrimitive[]` for all Y-direction error bars in `chartData`.
1157
- * Produces stem + cap `SvgLine` pairs for each data point.
1158
- * X-direction error bars are intentionally skipped (not supported in PPTX
1159
- * bar/line charts displayed here).
1160
- *
1161
- * Mirrors `renderErrorBars` in chart-overlay-lines.tsx (React).
1162
- *
1163
- * @param chartData Full parsed chart data.
1164
- * @param catCount Number of categories.
1165
- * @param layout Plot-area bounding box.
1166
- * @param range Value-axis range.
1167
- * @param mode `'bar'` or `'line'` — controls x-pixel mapping.
1168
- */
1169
- declare function computeErrorBarPrimitives(chartData: PptxChartData, catCount: number, layout: PlotLayout, range: ValueRange, mode?: 'line' | 'bar'): SvgPrimitive[];
1170
1176
  /**
1171
1177
  * Build `SvgText[]` for the X and Y axis titles.
1172
1178
  *
@@ -1671,8 +1677,6 @@ declare function ungroupElements(elements: readonly PptxElement[], groupId: stri
1671
1677
  * framework's CSS type).
1672
1678
  *
1673
1679
  * Precedence (highest first): image fill -> gradient -> pattern -> solid colour.
1674
- * Pattern fills currently approximate to their background colour (the SVG
1675
- * pattern preset renderer is a separate concern).
1676
1680
  */
1677
1681
 
1678
1682
  /** Default slide stage colour when a slide carries no usable background. */
@@ -1956,6 +1960,35 @@ declare class EditorHistory<T> {
1956
1960
  clear(): void;
1957
1961
  }
1958
1962
 
1963
+ /**
1964
+ * section-operations: Pure array-transformation functions for slide sections.
1965
+ *
1966
+ * Framework-agnostic (no framework imports). Each transform takes the current
1967
+ * `sections` and `slides` arrays and returns a NEW `{ sections, slides }` pair;
1968
+ * the inputs are never mutated. The React `useSectionOperations` hook and the
1969
+ * Vue `useSectionOperations` composable both wire their reactive state through
1970
+ * these transforms so the immutable section algorithms live in one place.
1971
+ *
1972
+ * Section ids are OOXML GUID-like strings. `addSection` generates one via the
1973
+ * supplied `idGenerator` (default {@link generateSectionId}), keeping the
1974
+ * transform overridable yet self-contained, matching the neighbouring shared
1975
+ * editor modules.
1976
+ */
1977
+
1978
+ /** Minimum section metadata needed to build sidebar groups. */
1979
+ interface SectionGroupDescriptor {
1980
+ id: string;
1981
+ name: string;
1982
+ collapsed?: boolean;
1983
+ color?: string;
1984
+ }
1985
+ /** A declared section paired with its slides, or the trailing ungrouped slides. */
1986
+ interface SectionSlideGroup<TSection extends SectionGroupDescriptor = PptxSection> {
1987
+ section: TSection | undefined;
1988
+ slides: PptxSlide[];
1989
+ slideIndexes: number[];
1990
+ }
1991
+
1959
1992
  /**
1960
1993
  * ole-actions.ts - framework-agnostic helpers for the OLE download/open UI.
1961
1994
  *
@@ -2122,6 +2155,15 @@ interface ParagraphBulletResult {
2122
2155
  fontFamily?: string;
2123
2156
  sizePts?: number;
2124
2157
  sizePercent?: number;
2158
+ picture?: PictureBulletMarker;
2159
+ }
2160
+ /** Framework-neutral picture-bullet source, sizing, and accessible fallback. */
2161
+ interface PictureBulletMarker {
2162
+ src?: string;
2163
+ sizePx: number;
2164
+ fallbackMarker: string;
2165
+ accessibleLabel: string;
2166
+ imageRelId?: string;
2125
2167
  }
2126
2168
  /**
2127
2169
  * Resolve the bullet marker for the first segment of a paragraph.
@@ -2132,7 +2174,7 @@ interface ParagraphBulletResult {
2132
2174
  * bullets the 1-based sequence index is `autoNumStartAt` (default 1) plus the
2133
2175
  * 0-based `paragraphIndex`.
2134
2176
  */
2135
- declare function resolveParagraphBullet(firstSegment: TextSegment | undefined): ParagraphBulletResult | undefined;
2177
+ declare function resolveParagraphBullet(firstSegment: TextSegment | undefined, baseFontSize?: number): ParagraphBulletResult | undefined;
2136
2178
  /**
2137
2179
  * Return the left-indent in pixels for the given 0-based list nesting level
2138
2180
  * (OOXML `a:p/@lvl`). `undefined`/negative is treated as level 0. Used as a
@@ -3835,6 +3877,35 @@ interface InsertChartTypeOption {
3835
3877
  label: string;
3836
3878
  }
3837
3879
 
3880
+ type MediaTrimHandle = 'start' | 'end';
3881
+ interface MediaTimelineGeometry {
3882
+ startPercent: number;
3883
+ endPercent: number;
3884
+ playheadPercent: number;
3885
+ }
3886
+ interface MediaTrimRange {
3887
+ trimStartMs: number;
3888
+ trimEndMs: number;
3889
+ }
3890
+
3891
+ interface SummaryZoomTileView {
3892
+ key: string;
3893
+ sectionId: string;
3894
+ targetSlideIndex: number;
3895
+ label: string;
3896
+ slideLabel: string;
3897
+ imageSrc?: string;
3898
+ backgroundColor: string;
3899
+ style: Record<string, string>;
3900
+ ariaLabel: string;
3901
+ }
3902
+ interface SummaryZoomView {
3903
+ layout: 'grid' | 'fixed';
3904
+ containerStyle: Record<string, string>;
3905
+ tiles: SummaryZoomTileView[];
3906
+ ariaLabel: string;
3907
+ }
3908
+
3838
3909
  /**
3839
3910
  * Command-search data for the PowerPoint-style "Tell me what you want to do"
3840
3911
  * search bar. Provides searchable command entries grouped by category, each
@@ -3852,6 +3923,158 @@ interface CommandSearchEntry {
3852
3923
  category: 'format' | 'insert' | 'view' | 'slideShow' | 'design' | 'arrange';
3853
3924
  }
3854
3925
 
3926
+ type BackstagePage = 'home' | 'new' | 'open' | 'info' | 'save' | 'saveAs' | 'print' | 'share' | 'export' | 'close' | 'account' | 'options';
3927
+ interface BackstageRecentFile {
3928
+ key: string;
3929
+ name: string;
3930
+ location: string;
3931
+ timestamp: number;
3932
+ size: number;
3933
+ }
3934
+ interface BackstageTemplate {
3935
+ id: string;
3936
+ name: string;
3937
+ description: string;
3938
+ preview: string;
3939
+ }
3940
+ declare function formatBackstageDate(timestamp: number, now?: number): string;
3941
+ declare function formatBackstageSize(bytes: number): string;
3942
+
3943
+ /** Framework-neutral virtual-list range used by every thumbnail sidebar. */
3944
+ interface VirtualizedRange {
3945
+ startIndex: number;
3946
+ endIndex: number;
3947
+ totalHeight: number;
3948
+ offsetY: number;
3949
+ visibleRange: {
3950
+ start: number;
3951
+ end: number;
3952
+ };
3953
+ }
3954
+
3955
+ /** Framework-neutral viewer preferences surfaced by Settings dialogs. */
3956
+ interface ViewerPreferences {
3957
+ autoSave: boolean;
3958
+ spellCheck: boolean;
3959
+ showGrid: boolean;
3960
+ showRulers: boolean;
3961
+ snapToGrid: boolean;
3962
+ reducedMotion: boolean;
3963
+ }
3964
+ type ViewerSettings = ViewerPreferences;
3965
+ interface ShortcutReferenceItem {
3966
+ actionKey: string;
3967
+ shortcut: string;
3968
+ }
3969
+ declare const SHORTCUT_REFERENCE_ITEMS: readonly ShortcutReferenceItem[];
3970
+ interface ViewerPreferenceToggle {
3971
+ key: keyof ViewerPreferences;
3972
+ labelKey: string;
3973
+ }
3974
+
3975
+ interface SpeechAlternative {
3976
+ readonly transcript: string;
3977
+ readonly confidence: number;
3978
+ }
3979
+ interface SpeechResult {
3980
+ readonly isFinal: boolean;
3981
+ readonly length: number;
3982
+ readonly [index: number]: SpeechAlternative;
3983
+ }
3984
+ interface SpeechResultList {
3985
+ readonly length: number;
3986
+ readonly [index: number]: SpeechResult;
3987
+ }
3988
+ interface SpeechRecognitionEventLite {
3989
+ readonly resultIndex: number;
3990
+ readonly results: SpeechResultList;
3991
+ }
3992
+ interface SpeechRecognitionLite extends EventTarget {
3993
+ continuous: boolean;
3994
+ interimResults: boolean;
3995
+ lang: string;
3996
+ onresult: ((event: SpeechRecognitionEventLite) => void) | null;
3997
+ onerror: ((event: Event) => void) | null;
3998
+ onend: (() => void) | null;
3999
+ start(): void;
4000
+ stop(): void;
4001
+ }
4002
+ type SpeechRecognitionCtor = new () => SpeechRecognitionLite;
4003
+ type SpeechSupportState = 'unknown' | 'supported' | 'unsupported';
4004
+ declare function mergeCaptionResults(resultIndex: number, results: SpeechResultList): string;
4005
+ declare function getSpeechRecognitionCtor(): SpeechRecognitionCtor | null;
4006
+ declare function captionDisplayText(supportState: SpeechSupportState, captionText: string, fallbackNotSupported: string, fallbackListening: string): string;
4007
+
4008
+ /** Local-only display profile shown in File > Account. Never sent anywhere; purely cosmetic. */
4009
+ interface ViewerProfile {
4010
+ displayName: string;
4011
+ /** CSS color for the avatar bubble background, e.g. `'#c2431f'`. */
4012
+ avatarColor: string;
4013
+ /** Single character shown in the avatar bubble. Derived from `displayName` when omitted. */
4014
+ initial?: string;
4015
+ }
4016
+ declare const DEFAULT_VIEWER_PROFILE: ViewerProfile;
4017
+ /** Suggested avatar color swatches for the Account profile editor. */
4018
+ declare const AVATAR_COLOR_SWATCHES: readonly string[];
4019
+ /** Derive the avatar-bubble initial from a profile, falling back to `'?'` for an empty name. */
4020
+ declare function resolveProfileInitial(profile: ViewerProfile): string;
4021
+ /**
4022
+ * Optional hook point for hosts that want to wire a real sign-in flow into
4023
+ * File > Account. Disabled by default: the Account page renders nothing
4024
+ * extra unless a host explicitly opts in by passing `enabled: true`.
4025
+ * See docs/guide for wiring instructions.
4026
+ */
4027
+ interface AccountAuthConfig {
4028
+ enabled: boolean;
4029
+ onSignIn: () => void;
4030
+ signedInUser?: {
4031
+ name: string;
4032
+ email?: string;
4033
+ avatarUrl?: string;
4034
+ };
4035
+ }
4036
+ interface LocalStorageUsageSummary {
4037
+ /** Number of presentations with a local autosave/recovery snapshot. */
4038
+ presentationCount: number;
4039
+ /** Total bytes across every stored snapshot. */
4040
+ totalBytes: number;
4041
+ }
4042
+ /** Summarize local (IndexedDB) storage usage for the Account > Storage & Privacy panel. */
4043
+ declare function getLocalStorageUsageSummary(): Promise<LocalStorageUsageSummary>;
4044
+ /**
4045
+ * Delete every locally stored presentation/recovery snapshot and persisted
4046
+ * viewer preference (theme/locale/profile). Irreversible; callers should
4047
+ * confirm with the user before invoking this.
4048
+ */
4049
+ declare function clearAllLocalViewerData(): Promise<void>;
4050
+ /** Persist an updated profile via the shared viewer-prefs store. */
4051
+ declare function saveViewerProfile(profile: ViewerProfile): void;
4052
+
4053
+ /**
4054
+ * Toolbar action / ribbon-tab visibility: a single, framework-agnostic
4055
+ * catalogue of every top-level toolbar button and ribbon tab a host app can
4056
+ * independently hide. Each binding exposes a `hiddenActions?: ToolbarActionId[]`
4057
+ * prop, threads it down to the relevant render sites, and gates them with
4058
+ * `isActionHidden`. Default (`undefined` / `[]`) hides nothing, matching
4059
+ * today's always-visible behaviour.
4060
+ *
4061
+ * `TOOLBAR_TABS` is also the canonical ribbon-tab list/order, replacing the
4062
+ * copy hand-duplicated in each binding (React's `TOOLBAR_SECTIONS`, Vue's
4063
+ * `ribbon-constants.ts`, Angular's `RIBBON_TABS`, etc.) so the tab set can't
4064
+ * drift between bindings. Per-tab icons stay in each binding (icon libraries
4065
+ * differ per framework); only id + i18n key + order are shared here.
4066
+ */
4067
+ /**
4068
+ * A single toolbar button/control that can be hidden independently of the
4069
+ * ribbon tab it may also appear inside. `zoom` and `navigation` each cover a
4070
+ * whole control cluster (zoom in/out/fit, prev/next) rather than each button
4071
+ * in it, matching how hosts actually want to hide/keep them as a unit.
4072
+ */
4073
+ type ToolbarButtonId = 'share' | 'broadcast' | 'export' | 'undo' | 'redo' | 'record' | 'notes' | 'fullscreen' | 'zoom' | 'navigation';
4074
+ /** 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. */
4075
+ type ToolbarTabId = 'file' | 'home' | 'insert' | 'draw' | 'design' | 'transitions' | 'animations' | 'slideShow' | 'record' | 'review' | 'view' | 'help';
4076
+ type ToolbarActionId = ToolbarButtonId | ToolbarTabId;
4077
+
3855
4078
  /**
3856
4079
  * Minimal GIF89a encoder (pure JS, no external dependency) plus pure
3857
4080
  * frame-planning helpers — shared by the React, Vue, and Angular bindings.
@@ -4159,6 +4382,47 @@ declare function segmentFrameCount(durationMs: number, fps: number): number;
4159
4382
  /** DOM id of the managed `<style>` element the service injects into `<head>`. */
4160
4383
  declare const EMBEDDED_FONTS_STYLE_ID = "pptx-angular-embedded-fonts";
4161
4384
 
4385
+ /**
4386
+ * The canonical English UI-string dictionary for pptx-viewer. None of the
4387
+ * React/Vue/Angular binding packages ship translations themselves - each
4388
+ * only calls its framework's translation function (react-i18next's `t()`,
4389
+ * vue-i18n's `t()`, ngx-translate's `TranslateService`/`translate` pipe)
4390
+ * against dotted `pptx.*` keys. The host app supplies the dictionary; this
4391
+ * module is that dictionary for the demos, shared so all three stay in sync
4392
+ * instead of drifting into three separate copies.
4393
+ */
4394
+ declare const translationsEn: Record<string, string>;
4395
+ /**
4396
+ * Every key in the English dictionary. A new locale dictionary typed as
4397
+ * `Record<TranslationKey, string>` gets a compile error for any key it's
4398
+ * missing or misspells, so translation contributions stay complete without a
4399
+ * separate parity test.
4400
+ */
4401
+ type TranslationKey = keyof typeof translationsEn;
4402
+ /**
4403
+ * Convert a dotted translation key to a human-readable label when no
4404
+ * explicit dictionary entry exists yet. Takes the last segment and converts
4405
+ * camelCase to Title Case, e.g. "pptx.slideSorter.zoomIn" -> "Zoom In".
4406
+ */
4407
+ declare function keyToLabel(key: string): string;
4408
+
4409
+ /** One selectable entry in the viewer chrome's built-in language picker (File > Options > Language). */
4410
+ interface LocaleCatalogEntry {
4411
+ /** BCP-47-ish locale code, e.g. `'en'`, `'fr'`. Matches `pptx-viewer-locales`' exports. */
4412
+ code: string;
4413
+ /** English display name, used before a translation dictionary for the target locale is loaded. */
4414
+ label: string;
4415
+ /** The locale's own name for itself, e.g. `'Français'` for `fr`. */
4416
+ nativeLabel: string;
4417
+ }
4418
+ /**
4419
+ * Built-in language choices offered by File > Options > Language when a host
4420
+ * doesn't supply its own `availableLocales`. Mirrors the locales shipped by
4421
+ * the optional `pptx-viewer-locales` package (English needs no dictionary,
4422
+ * it's the viewer's own baseline).
4423
+ */
4424
+ declare const LOCALE_CATALOG: readonly LocaleCatalogEntry[];
4425
+
4162
4426
  declare class AccessibilityService {
4163
4427
  /** Parsed slides of the current presentation. */
4164
4428
  readonly slides: _angular_core.WritableSignal<PptxSlide[]>;
@@ -4405,7 +4669,17 @@ declare class CollaborationService {
4405
4669
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<CollaborationService>;
4406
4670
  }
4407
4671
 
4672
+ interface EditorSectionOperations {
4673
+ add(afterSlideIndex: number, name: string): void;
4674
+ rename(sectionId: string, name: string): void;
4675
+ delete(sectionId: string): void;
4676
+ move(sectionId: string, direction: 'up' | 'down'): void;
4677
+ moveSlides(slideIndexes: number[], targetSectionId: string): void;
4678
+ toggle(sectionId: string): void;
4679
+ }
4680
+
4408
4681
  declare class EditorStateService {
4682
+ private readonly loader;
4409
4683
  /**
4410
4684
  * Optional: `inject()` requires an active Angular injection context, which
4411
4685
  * plain `new EditorStateService()` calls (used throughout this service's
@@ -4422,6 +4696,10 @@ declare class EditorStateService {
4422
4696
  private t;
4423
4697
  /** The editable slide deck (a clone of the loaded presentation). */
4424
4698
  readonly slides: _angular_core.WritableSignal<readonly PptxSlide[]>;
4699
+ readonly sections: _angular_core.WritableSignal<readonly PptxSection[]>;
4700
+ readonly headerFooter: _angular_core.WritableSignal<PptxHeaderFooter>;
4701
+ readonly sectionGroups: _angular_core.Signal<SectionSlideGroup<PptxSection>[]>;
4702
+ readonly sectionOps: EditorSectionOperations;
4425
4703
  /** Ids of the currently selected elements (on the active slide). */
4426
4704
  readonly selectedIds: _angular_core.WritableSignal<readonly string[]>;
4427
4705
  /** Whether the deck has unsaved edits. */
@@ -4455,7 +4733,7 @@ declare class EditorStateService {
4455
4733
  * elements move into {@link templateElementsBySlideId}, rendered as a separate
4456
4734
  * layer and re-merged on save.
4457
4735
  */
4458
- setSlides(slides: readonly PptxSlide[]): void;
4736
+ setSlides(slides: readonly PptxSlide[], sections?: readonly PptxSection[], headerFooter?: PptxHeaderFooter): void;
4459
4737
  /** Current editable (template-free) slides as a fresh (cloned) array. */
4460
4738
  snapshot(): readonly PptxSlide[];
4461
4739
  /**
@@ -4475,6 +4753,8 @@ declare class EditorStateService {
4475
4753
  private captureSnapshot;
4476
4754
  /** Restore both the deck and the template store from a snapshot. */
4477
4755
  private restoreSnapshot;
4756
+ /** Replace presentation-level header/footer settings as one undoable edit. */
4757
+ updateHeaderFooter(next: PptxHeaderFooter): void;
4478
4758
  /** The template (master/layout) elements separated out of a slide, by id. */
4479
4759
  private templatesForSlide;
4480
4760
  /** Replace a slide's template-element list (drops the entry when empty). */
@@ -4545,6 +4825,8 @@ declare class EditorStateService {
4545
4825
  duplicateSlide(index: number): void;
4546
4826
  /** Reorder a slide from `from` to `to` (records history). */
4547
4827
  moveSlide(from: number, to: number): void;
4828
+ addSection(afterSlideIndex: number): void;
4829
+ private commitSections;
4548
4830
  private renumber;
4549
4831
  private zOrder;
4550
4832
  private commit;
@@ -4696,6 +4978,10 @@ declare class LoadContentService {
4696
4978
  readonly notesMaster: _angular_core.WritableSignal<PptxNotesMaster | undefined>;
4697
4979
  /** Handout master, including its editable element tree. */
4698
4980
  readonly handoutMaster: _angular_core.WritableSignal<PptxHandoutMaster | undefined>;
4981
+ readonly sections: _angular_core.WritableSignal<PptxSection[]>;
4982
+ readonly presentationProperties: _angular_core.WritableSignal<PptxPresentationProperties>;
4983
+ /** Whether the loaded package contains a VBA project. */
4984
+ readonly hasMacros: _angular_core.WritableSignal<boolean>;
4699
4985
  /** Archive-path → displayable URL map for media + poster frames. */
4700
4986
  readonly mediaDataUrls: _angular_core.WritableSignal<Map<string, string>>;
4701
4987
  /** Embedded font data (name + binary) extracted from the presentation. */
@@ -4730,7 +5016,7 @@ declare class LoadContentService {
4730
5016
  * Serialise an explicit set of slides back to `.pptx` bytes (e.g. the
4731
5017
  * editor's edited deck) using the loaded presentation's handler.
4732
5018
  */
4733
- saveSlides(slides: readonly PptxSlide[]): Promise<Uint8Array>;
5019
+ saveSlides(slides: readonly PptxSlide[], outputFormat?: PptxSaveFormat, sections?: readonly PptxSection[]): Promise<Uint8Array>;
4734
5020
  /** Parse the supplied `.pptx` bytes into the reactive signals. */
4735
5021
  load(raw: Uint8Array | ArrayBuffer | null | undefined): Promise<void>;
4736
5022
  private disposeHandler;
@@ -4853,13 +5139,16 @@ declare class PrintService {
4853
5139
  * 2. Build the printable HTML (capturing slides as needed).
4854
5140
  * 3. Open a print window and trigger `window.print()`.
4855
5141
  *
4856
- * The outline path needs no rasterisation. All other modes call
4857
- * `captureSlide` once per slide (sequentially) and skip slides that fail.
5142
+ * Outline and full-page slides need no rasterisation. Notes and handouts
5143
+ * call `captureSlide` sequentially and skip slides that fail.
4858
5144
  *
4859
5145
  * @returns `true` if a print window was opened, `false` if blocked (popup
4860
5146
  * blocker) or there was nothing to print.
4861
5147
  */
4862
- print(rawSettings: PrintSettings, slides: PptxSlide[], activeSlideIndex: number, captureSlide: CaptureSlideFn): Promise<boolean>;
5148
+ print(rawSettings: PrintSettings, slides: PptxSlide[], activeSlideIndex: number, captureSlide: CaptureSlideFn, slideSize?: Readonly<{
5149
+ width: number;
5150
+ height: number;
5151
+ }>): Promise<boolean>;
4863
5152
  /**
4864
5153
  * Open a print window, write the document, focus, and trigger printing.
4865
5154
  * Returns `false` if the popup was blocked.
@@ -5544,6 +5833,10 @@ declare class ViewerDialogsService {
5544
5833
  readonly showVersionHistory: _angular_core.WritableSignal<boolean>;
5545
5834
  /** Keyboard-shortcuts help overlay visibility. */
5546
5835
  readonly showShortcuts: _angular_core.WritableSignal<boolean>;
5836
+ /** Viewer/editor preferences dialog visibility. */
5837
+ readonly showSettings: _angular_core.WritableSignal<boolean>;
5838
+ /** Presentation header/footer editor visibility. */
5839
+ readonly showHeaderFooter: _angular_core.WritableSignal<boolean>;
5547
5840
  /** Keep-annotations dialog visibility. */
5548
5841
  readonly showKeepAnnotations: _angular_core.WritableSignal<boolean>;
5549
5842
  /** Total ink annotation stroke count carried into the prompt. */
@@ -5625,6 +5918,8 @@ declare class ViewerExportService {
5625
5918
  private requireHost;
5626
5919
  /** Export the current slide as a PNG download. */
5627
5920
  exportPng(): Promise<void>;
5921
+ /** Copy the current slide to the system clipboard as a PNG image. */
5922
+ copySlideAsImage(): Promise<void>;
5628
5923
  /**
5629
5924
  * Export every slide to a multi-page PDF. Each slide is made the live stage,
5630
5925
  * given a render tick to settle, captured to a canvas, then the original
@@ -5635,16 +5930,13 @@ declare class ViewerExportService {
5635
5930
  exportGif(): Promise<void>;
5636
5931
  /** Export every slide as a WebM video (3s per slide) via MediaRecorder. */
5637
5932
  exportVideo(): Promise<void>;
5638
- /** Run a print job for the chosen settings, rasterising each slide off the live stage. */
5639
5933
  onPrint(settings: PrintSettings): Promise<void>;
5640
- /** User pressed Cancel: abort the loop and close the modal. */
5641
5934
  onCancelExport(): void;
5642
5935
  /**
5643
5936
  * Open the progress modal and arm a fresh `AbortController` for an export.
5644
5937
  * Returns the controller whose `signal` the capture loop checks per slide.
5645
5938
  */
5646
5939
  private beginExport;
5647
- /** Tear down the progress modal + export-in-flight state. */
5648
5940
  private endExport;
5649
5941
  /**
5650
5942
  * Render every slide to a canvas (each made the live stage in turn), reporting
@@ -5663,6 +5955,7 @@ interface FileIOHost {
5663
5955
  readonly content: () => Uint8Array | ArrayBuffer | null;
5664
5956
  readonly onOpenFile: () => (() => void) | undefined;
5665
5957
  readonly slides: () => readonly PptxSlide[];
5958
+ readonly sections: () => readonly PptxSection[];
5666
5959
  readonly templateElementsBySlideId: () => TemplateElementsBySlideId;
5667
5960
  readonly emitContentChange: (bytes: Uint8Array) => void;
5668
5961
  }
@@ -5693,7 +5986,12 @@ declare class ViewerFileIOService {
5693
5986
  * Surfaced on the mobile toolbar so saving is reachable without the desktop
5694
5987
  * ribbon's File tab.
5695
5988
  */
5989
+ saveAs(format: PptxSaveFormat): Promise<void>;
5696
5990
  saveAsPptx(): Promise<void>;
5991
+ saveAsPpsx(): Promise<void>;
5992
+ saveAsPptm(): Promise<void>;
5993
+ /** Bundle the presentation and its usage notes in a shareable ZIP archive. */
5994
+ packageForSharing(): Promise<void>;
5697
5995
  /**
5698
5996
  * File ▸ Open: host override (`onOpenFile` input) takes precedence; otherwise
5699
5997
  * a built-in native picker loads the chosen presentation in place.
@@ -6004,6 +6302,8 @@ declare class ViewerPresentationModeService {
6004
6302
  readonly rehearsalStartedAt: _angular_core.WritableSignal<number | null>;
6005
6303
  readonly slideStartedAt: _angular_core.WritableSignal<number | null>;
6006
6304
  readonly recordedTimings: _angular_core.WritableSignal<Record<number, number>>;
6305
+ /** Live subtitle preference shared by the ribbon and presentation overlay. */
6306
+ readonly subtitlesVisible: _angular_core.WritableSignal<boolean>;
6007
6307
  private pauseStartedAt;
6008
6308
  private pausedOnSlideMs;
6009
6309
  private host;
@@ -6016,7 +6316,12 @@ declare class ViewerPresentationModeService {
6016
6316
  * mounts as a result of `presenting` flipping true.
6017
6317
  */
6018
6318
  present(): void;
6019
- startRehearsal(): void;
6319
+ presentFromBeginning(): void;
6320
+ presentFromCurrent(): void;
6321
+ toggleSubtitles(): void;
6322
+ startRehearsalFromBeginning(): void;
6323
+ startRehearsalFromCurrent(): void;
6324
+ private startRehearsal;
6020
6325
  /**
6021
6326
  * Map a presentation-overlay index back to the full-deck `activeSlideIndex`.
6022
6327
  * The overlay's index is relative to the (possibly custom-show-filtered)
@@ -6062,6 +6367,7 @@ declare class ViewerThemeGalleryService {
6062
6367
  * baseline.
6063
6368
  */
6064
6369
  applyThemePreset(preset: PptxThemePreset): void;
6370
+ applyCustomTheme(colorScheme: PptxThemeColorScheme, fontScheme: PptxThemeFontScheme, name: string): void;
6065
6371
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerThemeGalleryService, never>;
6066
6372
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ViewerThemeGalleryService>;
6067
6373
  }
@@ -6103,8 +6409,40 @@ declare class PowerPointViewerComponent {
6103
6409
  readonly canEdit: _angular_core.InputSignal<boolean>;
6104
6410
  /** Optional class applied to the root element. */
6105
6411
  readonly class: _angular_core.InputSignal<string>;
6106
- /** Theme configuration for customising the viewer's appearance. */
6412
+ /** Theme configuration for customising the viewer's appearance. Always wins over a File > Options > Appearance selection; see {@link defaultThemeKey}. */
6107
6413
  readonly theme: _angular_core.InputSignal<ViewerTheme | undefined>;
6414
+ /**
6415
+ * Initial File > Options > Appearance selection (a `THEME_CATALOG`, or
6416
+ * `availableThemes`, key) applied when no stored `pptx-viewer-prefs`
6417
+ * preference exists yet. Has no effect once the host supplies an explicit
6418
+ * {@link theme}, which always wins.
6419
+ */
6420
+ readonly defaultThemeKey: _angular_core.InputSignal<string | undefined>;
6421
+ /** Theme choices offered by File > Options > Appearance. Defaults to the built-in `THEME_CATALOG` (4 entries). */
6422
+ readonly availableThemes: _angular_core.InputSignal<readonly ThemeCatalogEntry[] | undefined>;
6423
+ /**
6424
+ * Host hook for File > Options > Appearance selections. When supplied, the
6425
+ * host owns persisting the choice (e.g. into a user profile) and the
6426
+ * viewer never touches `localStorage`. When omitted, the viewer falls back
6427
+ * to the `pptx-viewer-prefs` `localStorage` entry. Mirrors the
6428
+ * {@link onOpenFile} opt-in convention.
6429
+ */
6430
+ readonly onThemeChange: _angular_core.InputSignal<((key: string) => void) | undefined>;
6431
+ /**
6432
+ * Initial File > Options > Language selection applied when no stored
6433
+ * `pptx-viewer-prefs` preference exists yet.
6434
+ */
6435
+ readonly defaultLocale: _angular_core.InputSignal<string | undefined>;
6436
+ /**
6437
+ * Locale choices offered by File > Options > Language. Defaults to every
6438
+ * language `TranslateService.getLangs()` reports registered, mapped
6439
+ * through `LOCALE_CATALOG` for display labels.
6440
+ */
6441
+ readonly availableLocales: _angular_core.InputSignal<readonly LocaleCatalogEntry[] | undefined>;
6442
+ /** Host hook for File > Options > Language selections; see {@link onThemeChange}. */
6443
+ readonly onLocaleChange: _angular_core.InputSignal<((code: string) => void) | undefined>;
6444
+ /** Optional sign-in hook point for File > Account. Absent/disabled by default: no visible change unless a host opts in with `enabled: true`. */
6445
+ readonly accountAuth: _angular_core.InputSignal<AccountAuthConfig | undefined>;
6108
6446
  /**
6109
6447
  * Host file path/identifier keying the version-history store. When omitted
6110
6448
  * the version-history panel shows its empty state. Mirrors React's
@@ -6150,6 +6488,12 @@ declare class PowerPointViewerComponent {
6150
6488
  * back to the SVG SmartArt renderer. Default `false`.
6151
6489
  */
6152
6490
  readonly smartArt3D: _angular_core.InputSignal<boolean>;
6491
+ /**
6492
+ * Toolbar buttons and ribbon tabs the host wants hidden (share, broadcast,
6493
+ * export, undo, redo, record, notes, fullscreen, zoom, navigation, or any
6494
+ * ribbon tab id). Default `[]` hides nothing, matching prior behaviour.
6495
+ */
6496
+ readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
6153
6497
  /** Fired when the active slide changes. */
6154
6498
  readonly activeSlideChange: _angular_core.OutputEmitterRef<number>;
6155
6499
  /** Fired when the unsaved-changes flag toggles. */
@@ -6204,6 +6548,7 @@ declare class PowerPointViewerComponent {
6204
6548
  protected readonly canvasEditing: ViewerCanvasEditingService;
6205
6549
  protected readonly collabCursor: ViewerCollabCursorService;
6206
6550
  protected readonly docProperties: ViewerDocumentPropertiesService;
6551
+ private readonly translateService;
6207
6552
  /** Handle on the secondary-dialog host (keep-annotations prompt). */
6208
6553
  private readonly extraDialogs;
6209
6554
  /** Surface the encrypted-file notice dialog alongside the inline fallback. */
@@ -6226,6 +6571,29 @@ declare class PowerPointViewerComponent {
6226
6571
  protected readonly activeSlide: _angular_core.Signal<PptxSlide>;
6227
6572
  /** Inherited template (master/layout) elements for the active slide, when editing. */
6228
6573
  protected readonly activeTemplateElements: _angular_core.Signal<readonly PptxElement[]>;
6574
+ /**
6575
+ * Selected `THEME_CATALOG` (or `availableThemes`) key, driving File >
6576
+ * Options > Appearance. Seeded once from {@link defaultThemeKey} or the
6577
+ * stored `pptx-viewer-prefs` preference; see {@link selectThemeKey}.
6578
+ */
6579
+ protected readonly themeKey: _angular_core.WritableSignal<string>;
6580
+ /**
6581
+ * Active locale code, driving File > Options > Language. Seeded once from
6582
+ * {@link defaultLocale} or the stored `pptx-viewer-prefs` preference; see
6583
+ * {@link selectLocale}.
6584
+ */
6585
+ protected readonly localeCode: _angular_core.WritableSignal<string>;
6586
+ /** Theme catalog offered to the Settings dialog's Appearance tab. */
6587
+ protected readonly resolvedThemes: _angular_core.Signal<readonly ThemeCatalogEntry[]>;
6588
+ /**
6589
+ * Locale list offered to the Settings dialog's Language tab: the host's
6590
+ * `availableLocales` when supplied, else every locale `TranslateService`
6591
+ * currently has registered (mapped through `LOCALE_CATALOG` for display
6592
+ * labels), falling back to `['en']` when none are registered yet.
6593
+ */
6594
+ protected readonly resolvedLocales: _angular_core.Signal<readonly LocaleCatalogEntry[]>;
6595
+ /** The active `ViewerTheme`: an explicit `theme` input always wins over the Appearance tab's catalog selection. */
6596
+ protected readonly effectiveTheme: _angular_core.Signal<ViewerTheme | undefined>;
6229
6597
  protected readonly rootStyle: _angular_core.Signal<Record<string, string>>;
6230
6598
  /** Slide-sorter grid overlay visibility. */
6231
6599
  protected readonly showSorter: _angular_core.WritableSignal<boolean>;
@@ -6261,6 +6629,19 @@ declare class PowerPointViewerComponent {
6261
6629
  protected readonly showGuides: _angular_core.WritableSignal<boolean>;
6262
6630
  /** Whether snap-to-grid is active on the editor canvas. */
6263
6631
  protected readonly snapToGrid: _angular_core.WritableSignal<boolean>;
6632
+ /** Whether elements snap to nearby element edges and centres. */
6633
+ protected readonly snapToShape: _angular_core.WritableSignal<boolean>;
6634
+ /** Monotonic command consumed by the active canvas to add a ruler guide. */
6635
+ protected readonly guideCommand: _angular_core.WritableSignal<{
6636
+ id: number;
6637
+ axis: "x" | "y";
6638
+ } | null>;
6639
+ /** Whether browser spell-check is active in the inline text editor. */
6640
+ protected readonly spellCheck: _angular_core.WritableSignal<boolean>;
6641
+ /** User override that suppresses viewer animations and transitions. */
6642
+ protected readonly reducedMotion: _angular_core.WritableSignal<boolean>;
6643
+ /** Snapshot consumed by the settings dialog. */
6644
+ protected readonly viewerSettings: _angular_core.Signal<ViewerPreferences>;
6264
6645
  /** Whether the Insert SmartArt gallery dialog is open. */
6265
6646
  protected readonly showSmartArtInsert: _angular_core.WritableSignal<boolean>;
6266
6647
  /**
@@ -6287,6 +6668,21 @@ declare class PowerPointViewerComponent {
6287
6668
  protected updateHandoutMaster(master: PptxHandoutMaster): void;
6288
6669
  goTo(index: number): void;
6289
6670
  goPrev(): void;
6671
+ protected onCreatePresentation(templateId: string): void;
6672
+ /**
6673
+ * File > Options > Appearance selection handler. When a host supplies
6674
+ * `onThemeChange` it owns persisting the choice; otherwise this falls back
6675
+ * to the shared `pptx-viewer-prefs` `localStorage` entry.
6676
+ */
6677
+ protected selectThemeKey(key: string): void;
6678
+ /**
6679
+ * File > Options > Language selection handler. When a host supplies
6680
+ * `onLocaleChange` it owns applying/persisting the choice; otherwise this
6681
+ * applies the locale via `TranslateService` and falls back to the shared
6682
+ * `pptx-viewer-prefs` `localStorage` entry.
6683
+ */
6684
+ protected selectLocale(code: string): void;
6685
+ protected onOpenRecentFile(key: string): void;
6290
6686
  goNext(): void;
6291
6687
  /** Undo the last editing action. No-op when nothing to undo. */
6292
6688
  undo(): void;
@@ -6368,8 +6764,11 @@ declare class PowerPointViewerComponent {
6368
6764
  private serializeForAutosave;
6369
6765
  /** Review ▸ Compare: pick a `.pptx` and diff it against the current deck. */
6370
6766
  protected onOpenCompare(): void;
6767
+ protected addGuide(axis: 'x' | 'y'): void;
6371
6768
  /** Swap the deck for a restored version-history snapshot. */
6372
6769
  protected onRestoreVersion(bytes: Uint8Array): void;
6770
+ /** Apply Settings dialog changes to the live editor state. */
6771
+ protected onSettingsChange(settings: ViewerSettings): void;
6373
6772
  /**
6374
6773
  * Mobile "Format" slot: surface the inspector for the current selection. The
6375
6774
  * inspector renders inline (below the canvas) whenever an element is selected
@@ -6405,7 +6804,7 @@ declare class PowerPointViewerComponent {
6405
6804
  /** Resolve the live slide-stage element within `<main>`. */
6406
6805
  private stageElement;
6407
6806
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PowerPointViewerComponent, never>;
6408
- 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; }; }, { "activeSlideChange": "activeSlideChange"; "dirtyChange": "dirtyChange"; "contentChange": "contentChange"; "propertiesChange": "propertiesChange"; "modeChange": "modeChange"; "zoomChange": "zoomChange"; "selectionChange": "selectionChange"; "slideCountChange": "slideCountChange"; "startCollaboration": "startCollaboration"; "stopCollaboration": "stopCollaboration"; }, never, never, true, never>;
6807
+ 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; }; "defaultThemeKey": { "alias": "defaultThemeKey"; "required": false; "isSignal": true; }; "availableThemes": { "alias": "availableThemes"; "required": false; "isSignal": true; }; "onThemeChange": { "alias": "onThemeChange"; "required": false; "isSignal": true; }; "defaultLocale": { "alias": "defaultLocale"; "required": false; "isSignal": true; }; "availableLocales": { "alias": "availableLocales"; "required": false; "isSignal": true; }; "onLocaleChange": { "alias": "onLocaleChange"; "required": false; "isSignal": true; }; "accountAuth": { "alias": "accountAuth"; "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>;
6409
6808
  }
6410
6809
 
6411
6810
  /** The eight resize-handle positions around a selection box. */
@@ -6495,6 +6894,8 @@ declare class RulerGuidesService {
6495
6894
  private requireHost;
6496
6895
  /** True while an existing or just-created guide is being dragged. */
6497
6896
  isDragging(): boolean;
6897
+ /** Add a centered guide from the View ribbon without starting a drag gesture. */
6898
+ addGuide(axis: RulerGuide['axis']): void;
6498
6899
  /** Begin dragging an existing guide. Called from the guide handle pointerdown. */
6499
6900
  onGuidePointerDown(event: PointerEvent, id: string, axis: RulerGuide['axis']): void;
6500
6901
  /** Remove a guide (called on guide handle double-click). */
@@ -6591,6 +6992,15 @@ declare class SlideCanvasComponent implements SlideContext {
6591
6992
  * Combines with edge-alignment snapping.
6592
6993
  */
6593
6994
  readonly snapToGrid: _angular_core.InputSignal<boolean>;
6995
+ /** Whether moving elements snap to other element edges and centres. */
6996
+ readonly snapToShape: _angular_core.InputSignal<boolean>;
6997
+ /** Imperative toolbar request to add a centered user guide. */
6998
+ readonly guideCommand: _angular_core.InputSignal<{
6999
+ id: number;
7000
+ axis: "x" | "y";
7001
+ } | null>;
7002
+ /** Whether the inline text editor uses the browser spell checker. */
7003
+ readonly spellCheck: _angular_core.InputSignal<boolean>;
6594
7004
  /**
6595
7005
  * When true, snap elements to user-created ruler guides during move.
6596
7006
  */
@@ -6733,6 +7143,7 @@ declare class SlideCanvasComponent implements SlideContext {
6733
7143
  private seededEditId;
6734
7144
  /** Last-tap timestamp + element id, for synthetic double-tap detection on touch. */
6735
7145
  private lastTap;
7146
+ private lastGuideCommandId;
6736
7147
  constructor();
6737
7148
  readonly elements: _angular_core.Signal<PptxElement[]>;
6738
7149
  /**
@@ -6846,33 +7257,9 @@ declare class SlideCanvasComponent implements SlideContext {
6846
7257
  readonly vRulerTicks: _angular_core.Signal<readonly RulerTick[]>;
6847
7258
  readonly stageStyle: _angular_core.Signal<StyleMap>;
6848
7259
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlideCanvasComponent, never>;
6849
- 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>;
7260
+ 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>;
6850
7261
  }
6851
7262
 
6852
- /**
6853
- * Pure (Angular-free) helpers for the `<a:clrChange>` colour-change image
6854
- * effect. Kept out of the component so they can be unit-tested without TestBed
6855
- * or a DOM, mirroring `model3d-renderer-helpers.ts`.
6856
- */
6857
- /** Parsed `<a:clrChange>` parameters needed to drive the chroma-key. */
6858
- interface ClrChangeParams {
6859
- clrFrom: string;
6860
- clrTo: string;
6861
- /** Whether the target colour becomes fully transparent (alpha = 0). */
6862
- clrToTransparent: boolean;
6863
- /** Match tolerance percentage (0-100). */
6864
- tolerance: number;
6865
- }
6866
- /**
6867
- * Extract the colour-change effect from an element, or `undefined` when the
6868
- * element carries no `imageEffects.clrChange` (or its `clrFrom` is empty).
6869
- *
6870
- * `clrFrom` is the source colour that must be present for the effect to do
6871
- * anything, so a blank `clrFrom` is treated as "no effect" (matching React,
6872
- * where the `clrChange` branch only fires when a valid effect object exists).
6873
- */
6874
- declare function getClrChangeParams(el: PptxElement): ClrChangeParams | undefined;
6875
-
6876
7263
  /**
6877
7264
  * Text-warp (WordArt) descriptor resolver for the Angular viewer.
6878
7265
  *
@@ -7002,6 +7389,8 @@ interface Paragraph {
7002
7389
  runs: TextRun[];
7003
7390
  /** Bullet / number marker text, when this paragraph is a list item. */
7004
7391
  bulletMarker?: string;
7392
+ /** Resolved picture marker, or metadata for its accessible glyph fallback. */
7393
+ bulletPicture?: PictureBulletMarker;
7005
7394
  /** `[ngStyle]` map for the bullet marker (colour / font). */
7006
7395
  bulletStyle: StyleMap;
7007
7396
  /** Left indent in px derived from the paragraph outline level. */
@@ -7095,14 +7484,6 @@ declare class ElementRendererComponent {
7095
7484
  readonly containerStyle: _angular_core.Signal<StyleMap>;
7096
7485
  readonly shapeContainerStyle: _angular_core.Signal<StyleMap>;
7097
7486
  readonly textStyle: _angular_core.Signal<StyleMap>;
7098
- readonly imageSrc: _angular_core.Signal<string | undefined>;
7099
- /**
7100
- * Parsed `<a:clrChange>` colour-change effect for this element, or
7101
- * `undefined` when it carries none. When present the image / media branch
7102
- * renders via {@link ColorChangedImageComponent} (offscreen-canvas chroma
7103
- * key) instead of a plain `<img>`.
7104
- */
7105
- readonly clrChangeParams: _angular_core.Signal<ClrChangeParams | undefined>;
7106
7487
  /** Text-warp (WordArt) descriptor for the element, if any. */
7107
7488
  readonly textWarp: _angular_core.Signal<pptx_angular_viewer.TextWarpDef | undefined>;
7108
7489
  /** Only the SVG-textPath warp variant (for the `<svg>` overlay branch). */
@@ -8005,7 +8386,7 @@ interface ZoomViewModel {
8005
8386
  /** Zero-based target slide index. */
8006
8387
  readonly targetSlideIndex: number;
8007
8388
  /** Zoom type string used as the badge label source and data attribute. */
8008
- readonly zoomType: 'slide' | 'section';
8389
+ readonly zoomType: 'slide' | 'section' | 'summary';
8009
8390
  /** Optional section identifier for section zooms. */
8010
8391
  readonly targetSectionId: string | undefined;
8011
8392
  /** Human-readable badge text ("Slide Zoom" / "Section Zoom"). */
@@ -8089,6 +8470,7 @@ declare class ZoomRendererComponent {
8089
8470
  */
8090
8471
  private readonly zoomTarget;
8091
8472
  readonly vm: _angular_core.Signal<ZoomViewModel>;
8473
+ readonly summaryView: _angular_core.Signal<SummaryZoomView | undefined>;
8092
8474
  /**
8093
8475
  * Zoom-navigation context, present only inside a running presentation (the
8094
8476
  * overlay provides it). `null` in the editor tree, where the tile stays
@@ -8099,6 +8481,7 @@ declare class ZoomRendererComponent {
8099
8481
  protected readonly interactive: _angular_core.Signal<boolean>;
8100
8482
  /** Navigate to the zoom target; no-op when the tile is not interactive. */
8101
8483
  private activate;
8484
+ protected activateSummary(event: Event, target: number): void;
8102
8485
  protected onClick(event: MouseEvent): void;
8103
8486
  protected onKeydown(event: KeyboardEvent): void;
8104
8487
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZoomRendererComponent, never>;
@@ -8109,6 +8492,7 @@ declare class AnimationPlaybackService {
8109
8492
  private readonly destroyRef;
8110
8493
  /** The current slide's animations, in document/timeline order. */
8111
8494
  private readonly animations;
8495
+ private readonly showWithAnimation;
8112
8496
  /**
8113
8497
  * Externally-controlled playback step (e.g. derived from a parent click
8114
8498
  * counter). `undefined` means there is no external driver. The internal
@@ -8147,7 +8531,7 @@ declare class AnimationPlaybackService {
8147
8531
  private rafHandle;
8148
8532
  constructor();
8149
8533
  /** Feed the current slide's animation list. Resets manual control. */
8150
- setAnimations(animations: readonly PptxElementAnimation[] | undefined): void;
8534
+ setAnimations(animations: readonly PptxElementAnimation[] | undefined, showWithAnimation?: boolean): void;
8151
8535
  /** Update the external playback index (parent-driven build counter). */
8152
8536
  setExternalIndex(index: number | undefined): void;
8153
8537
  /**
@@ -8358,8 +8742,11 @@ declare class PresentationOverlayComponent implements OnInit {
8358
8742
  readonly canvasSize: _angular_core.InputSignal<CanvasSize>;
8359
8743
  readonly mediaDataUrls: _angular_core.InputSignal<Map<string, string>>;
8360
8744
  readonly startIndex: _angular_core.InputSignal<number>;
8745
+ readonly showWithAnimation: _angular_core.InputSignal<boolean | undefined>;
8746
+ readonly subtitlesVisible: _angular_core.InputSignal<boolean>;
8361
8747
  readonly indexChange: _angular_core.OutputEmitterRef<number>;
8362
8748
  readonly closed: _angular_core.OutputEmitterRef<void>;
8749
+ readonly subtitlesChange: _angular_core.OutputEmitterRef<boolean>;
8363
8750
  /**
8364
8751
  * Fired just before `closed` when the show carries ink annotations, so the
8365
8752
  * host can offer the keep/discard prompt (mirrors React's exit flow).
@@ -8386,8 +8773,6 @@ declare class PresentationOverlayComponent implements OnInit {
8386
8773
  * target slide on click. Descendants resolve this same instance.
8387
8774
  */
8388
8775
  private readonly zoomNavigation;
8389
- /** Whether the live-caption bar is shown. */
8390
- protected readonly subtitlesVisible: _angular_core.WritableSignal<boolean>;
8391
8776
  /** The slide stage root; animation styles are applied to its elements. */
8392
8777
  private readonly stageRef;
8393
8778
  /**
@@ -8492,7 +8877,7 @@ declare class PresentationOverlayComponent implements OnInit {
8492
8877
  private goToSlide;
8493
8878
  private emitClosed;
8494
8879
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PresentationOverlayComponent, never>;
8495
- 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>;
8880
+ 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>;
8496
8881
  }
8497
8882
 
8498
8883
  /**
@@ -8594,6 +8979,8 @@ declare class InspectorPanelComponent {
8594
8979
  readonly element: _angular_core.InputSignal<PptxElement>;
8595
8980
  /** Zero-based index of the active slide. */
8596
8981
  readonly slideIndex: _angular_core.InputSignal<number>;
8982
+ /** Whether mutation controls in the inspector are enabled. */
8983
+ readonly canEdit: _angular_core.InputSignal<boolean>;
8597
8984
  protected readonly editor: EditorStateService;
8598
8985
  /** Reactive viewport / pointer flags (drives the bottom-sheet layout). */
8599
8986
  protected readonly mobile: IsMobileService;
@@ -8644,6 +9031,8 @@ declare class InspectorPanelComponent {
8644
9031
  protected readonly tableEl: _angular_core.Signal<TablePptxElement | undefined>;
8645
9032
  /** The selected element narrowed to a chart, or undefined. */
8646
9033
  protected readonly chartEl: _angular_core.Signal<ChartPptxElement | undefined>;
9034
+ protected readonly imageEl: _angular_core.Signal<PptxElement | undefined>;
9035
+ protected readonly mediaEl: _angular_core.Signal<MediaPptxElement | undefined>;
8647
9036
  /** The selected element narrowed to SmartArt, or undefined. */
8648
9037
  protected readonly smartArtEl: _angular_core.Signal<SmartArtPptxElement | undefined>;
8649
9038
  /** The selected SmartArt element's data model, or undefined. */
@@ -8663,6 +9052,7 @@ declare class InspectorPanelComponent {
8663
9052
  protected onElementReplace(updated: PptxElement): void;
8664
9053
  /** The active slide's element-animation list (animations live on the slide). */
8665
9054
  protected readonly slideAnimations: _angular_core.Signal<readonly PptxElementAnimation[]>;
9055
+ protected readonly slideElements: _angular_core.Signal<readonly PptxElement[]>;
8666
9056
  /** Commit an updated slide-level animation list as one history entry. */
8667
9057
  protected onAnimationsChange(animations: PptxElementAnimation[]): void;
8668
9058
  protected onPositionChange(event: Event, axis: 'x' | 'y'): void;
@@ -8677,7 +9067,7 @@ declare class InspectorPanelComponent {
8677
9067
  protected onItalicToggle(): void;
8678
9068
  protected onUnderlineToggle(): void;
8679
9069
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<InspectorPanelComponent, never>;
8680
- 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>;
9070
+ 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>;
8681
9071
  }
8682
9072
 
8683
9073
  declare class GradientPickerComponent {
@@ -8748,7 +9138,7 @@ declare class TextAdvancedPanelComponent {
8748
9138
  protected readonly elementKey: _angular_core.Signal<string>;
8749
9139
  /** Exposed option arrays for the template. */
8750
9140
  protected readonly alignOptions: [NonNullable<"center" | "left" | "right" | "justify" | "justLow" | "dist" | "thaiDist" | undefined>, string][];
8751
- protected readonly vAlignOptions: [NonNullable<"top" | "middle" | "bottom" | undefined>, string][];
9141
+ protected readonly vAlignOptions: [NonNullable<"top" | "bottom" | "middle" | undefined>, string][];
8752
9142
  protected readonly textDirectionOptions: [NonNullable<"eaVert" | "wordArtVert" | "wordArtVertRtl" | "mongolianVert" | "horizontal" | "vertical" | "vertical270" | undefined>, string][];
8753
9143
  protected alignLabel(align: NonNullable<TextStyle['align']>): string;
8754
9144
  protected onAlignChange(align: NonNullable<TextStyle['align']>): void;
@@ -9280,6 +9670,8 @@ declare class AnimationAuthorPanelComponent {
9280
9670
  * emits the entire array.
9281
9671
  */
9282
9672
  readonly animations: _angular_core.InputSignal<readonly PptxElementAnimation[]>;
9673
+ /** Every element on the active slide, including elements with no animation. */
9674
+ readonly slideElements: _angular_core.InputSignal<readonly PptxElement[]>;
9283
9675
  /**
9284
9676
  * Whether editing controls are enabled. When `false` all selects/inputs are
9285
9677
  * disabled. Defaults to `true`.
@@ -9356,21 +9748,13 @@ declare class AnimationAuthorPanelComponent {
9356
9748
  /** Human-readable order label (1-based, e.g. "2 of 4"). */
9357
9749
  protected readonly orderLabel: _angular_core.Signal<any>;
9358
9750
  /**
9359
- * Elements on the slide excluding the selected element, used to populate
9360
- * the trigger-shape selector. The slide's elements are not available in this
9361
- * component's inputs, so the orchestrator must pass them in via
9362
- * `[animations]` indirectly; here we surface only what we have access to.
9363
- *
9364
- * NOTE: The trigger-shape dropdown is limited to element ids because this
9365
- * panel does not receive the full slide element list. The orchestrator can
9366
- * replace this with a richer element label by wrapping the component or
9367
- * projecting content. This matches the React implementation which used
9368
- * `activeSlide.elements`.
9751
+ * Every other element on the active slide, including elements that do not
9752
+ * yet have an animation entry. Used by the on-shape-click trigger picker.
9369
9753
  */
9370
- protected readonly otherElements: _angular_core.Signal<{
9371
- id: string;
9372
- }[]>;
9754
+ protected readonly otherElements: _angular_core.Signal<PptxElement[]>;
9755
+ protected elementLabel(element: PptxElement): string;
9373
9756
  private emit;
9757
+ protected onPreview(): void;
9374
9758
  protected onEntranceChange(event: Event): void;
9375
9759
  protected onExitChange(event: Event): void;
9376
9760
  protected onEmphasisChange(event: Event): void;
@@ -9387,21 +9771,22 @@ declare class AnimationAuthorPanelComponent {
9387
9771
  protected onMoveDown(): void;
9388
9772
  protected onRemove(): void;
9389
9773
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnimationAuthorPanelComponent, never>;
9390
- 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>;
9774
+ 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>;
9391
9775
  }
9392
9776
 
9393
9777
  /** Descriptor for a single menu row. */
9394
- interface MenuRow {
9778
+ interface MobileMenuRow {
9395
9779
  key: string;
9396
9780
  labelKey: string;
9397
9781
  sublabelKey?: string;
9398
- /** SVG path data (24 × 24 view-box). */
9782
+ /** SVG path data (24 x 24 view-box). */
9399
9783
  svgPath: string;
9400
9784
  disabled?: boolean;
9401
9785
  active?: boolean;
9402
9786
  danger?: boolean;
9403
9787
  emit: () => void;
9404
9788
  }
9789
+
9405
9790
  declare class MobileMenuSheetComponent {
9406
9791
  /** Whether the sheet is visible. */
9407
9792
  readonly open: _angular_core.InputSignal<boolean>;
@@ -9413,6 +9798,8 @@ declare class MobileMenuSheetComponent {
9413
9798
  readonly showNotes: _angular_core.InputSignal<boolean>;
9414
9799
  /** Whether editor-only actions (find-replace etc.) are available. */
9415
9800
  readonly canEdit: _angular_core.InputSignal<boolean>;
9801
+ /** Toolbar buttons the host wants hidden ('notes' drops the row, 'export' drops all four export rows). */
9802
+ readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
9416
9803
  /** Sheet dismissed (backdrop tap, swipe, or Escape). */
9417
9804
  readonly closed: _angular_core.OutputEmitterRef<void>;
9418
9805
  /** Open the find-in-slides bar. */
@@ -9439,14 +9826,14 @@ declare class MobileMenuSheetComponent {
9439
9826
  readonly exportVideo: _angular_core.OutputEmitterRef<void>;
9440
9827
  /** Open the print dialog. */
9441
9828
  readonly print: _angular_core.OutputEmitterRef<void>;
9442
- readonly rows: _angular_core.Signal<MenuRow[]>;
9829
+ readonly rows: _angular_core.Signal<MobileMenuRow[]>;
9443
9830
  /**
9444
9831
  * Emit the row's action and close the sheet so the user returns to the
9445
9832
  * presentation immediately.
9446
9833
  */
9447
- onRowClick(row: MenuRow): void;
9834
+ onRowClick(row: MobileMenuRow): void;
9448
9835
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MobileMenuSheetComponent, never>;
9449
- 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>;
9836
+ 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>;
9450
9837
  }
9451
9838
 
9452
9839
  declare class MobileSlidesSheetComponent {
@@ -9509,6 +9896,22 @@ declare class MobileSheetComponent {
9509
9896
  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>;
9510
9897
  }
9511
9898
 
9899
+ /**
9900
+ * toolbar-visibility.ts: thin per-component wrapper around the shared
9901
+ * `isActionHidden` helper (see `pptx-viewer-shared`'s `render/toolbar-actions`)
9902
+ * so templates can gate a button/tab with a single `toolbar.isHidden('id')`
9903
+ * call instead of repeating `isActionHidden(id, hiddenActions())` everywhere.
9904
+ *
9905
+ * Mirrors how other pure shared helpers are consumed in this package: assigned
9906
+ * straight onto the component as a `protected readonly` field (see
9907
+ * `ribbon-file-section.component.ts`'s `protected readonly date = formatBackstageDate;`).
9908
+ */
9909
+
9910
+ interface ToolbarVisibility {
9911
+ /** True when `id` is present in the host's `hiddenActions` list. */
9912
+ isHidden(id: ToolbarActionId): boolean;
9913
+ }
9914
+
9512
9915
  declare class MobileToolbarComponent {
9513
9916
  /** Whether the undo action is available. */
9514
9917
  readonly canUndo: _angular_core.InputSignal<boolean>;
@@ -9520,6 +9923,8 @@ declare class MobileToolbarComponent {
9520
9923
  readonly canEdit: _angular_core.InputSignal<boolean>;
9521
9924
  /** Whether the mobile-menu sheet is currently open (highlights the button). */
9522
9925
  readonly menuOpen: _angular_core.InputSignal<boolean>;
9926
+ /** Toolbar buttons the host wants hidden (gates Undo/Redo independently). */
9927
+ readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
9523
9928
  /** User tapped the Menu (hamburger) button. */
9524
9929
  readonly toggleMenu: _angular_core.OutputEmitterRef<void>;
9525
9930
  /** User tapped Undo. */
@@ -9530,8 +9935,9 @@ declare class MobileToolbarComponent {
9530
9935
  readonly save: _angular_core.OutputEmitterRef<void>;
9531
9936
  /** User tapped Present. */
9532
9937
  readonly present: _angular_core.OutputEmitterRef<void>;
9938
+ protected readonly toolbar: ToolbarVisibility;
9533
9939
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<MobileToolbarComponent, never>;
9534
- 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>;
9940
+ 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>;
9535
9941
  }
9536
9942
 
9537
9943
  declare class NotesPanelComponent {
@@ -9613,17 +10019,35 @@ declare class SlidesPanelComponent {
9613
10019
  /** Emits the zero-based index of the card the user clicked. */
9614
10020
  readonly select: _angular_core.OutputEmitterRef<number>;
9615
10021
  protected readonly editor: EditorStateService;
10022
+ private readonly translate;
10023
+ private readonly scrollViewport;
10024
+ private readonly scrollTop;
10025
+ private readonly viewportHeight;
9616
10026
  /** Zoom level that fits the full canvas width into THUMB_W pixels. */
9617
10027
  readonly thumbZoom: _angular_core.Signal<number>;
9618
10028
  /** Pixel height of the clipping box (aspect-correct). */
9619
10029
  readonly thumbH: _angular_core.Signal<number>;
9620
10030
  /** ngStyle object for the thumbnail clipping box. */
9621
10031
  readonly clipStyle: _angular_core.Signal<Record<string, string>>;
10032
+ readonly itemHeight: _angular_core.Signal<number>;
10033
+ readonly shouldVirtualize: _angular_core.Signal<boolean>;
10034
+ readonly virtualRange: _angular_core.Signal<VirtualizedRange>;
10035
+ readonly renderedSlides: _angular_core.Signal<{
10036
+ slide: pptx_viewer_core.PptxSlide;
10037
+ index: number;
10038
+ section: pptx_viewer_core.PptxSection | undefined;
10039
+ sectionStart: boolean;
10040
+ }[]>;
10041
+ constructor();
10042
+ onScroll(): void;
10043
+ private syncViewport;
9622
10044
  onDuplicate(index: number): void;
9623
10045
  onDelete(index: number): void;
9624
10046
  onMoveUp(index: number): void;
9625
10047
  onMoveDown(index: number): void;
9626
10048
  onAddSlide(): void;
10049
+ onRenameSection(sectionId: string, currentName: string): void;
10050
+ sectionIndex(sectionId: string): number;
9627
10051
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlidesPanelComponent, never>;
9628
10052
  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>;
9629
10053
  }
@@ -9657,6 +10081,8 @@ declare class StatusBarComponent {
9657
10081
  readonly sorterActive: _angular_core.InputSignal<boolean>;
9658
10082
  /** True when the presentation overlay is open (active-state styling). */
9659
10083
  readonly presenting: _angular_core.InputSignal<boolean>;
10084
+ /** Toolbar buttons the host wants hidden (notes/fullscreen/zoom independently). */
10085
+ readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
9660
10086
  readonly toggleNotes: _angular_core.OutputEmitterRef<void>;
9661
10087
  readonly normalView: _angular_core.OutputEmitterRef<void>;
9662
10088
  readonly openSorter: _angular_core.OutputEmitterRef<void>;
@@ -9665,6 +10091,7 @@ declare class StatusBarComponent {
9665
10091
  readonly zoomOut: _angular_core.OutputEmitterRef<void>;
9666
10092
  readonly zoomReset: _angular_core.OutputEmitterRef<void>;
9667
10093
  private readonly translate;
10094
+ protected readonly toolbar: ToolbarVisibility;
9668
10095
  /** "Normal" is active when neither the sorter nor the slideshow is showing. */
9669
10096
  protected isNormal(): boolean;
9670
10097
  protected min(a: number, b: number): number;
@@ -9679,7 +10106,7 @@ declare class StatusBarComponent {
9679
10106
  /** Relative age label for a saved timestamp ("just now" / "N min ago"). */
9680
10107
  private formatAutosaveAge;
9681
10108
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatusBarComponent, never>;
9682
- 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>;
10109
+ 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>;
9683
10110
  }
9684
10111
 
9685
10112
  declare class EditorContextMenuComponent {
@@ -9734,6 +10161,13 @@ declare class EditorContextMenuComponent {
9734
10161
  }
9735
10162
 
9736
10163
  declare class ExportService {
10164
+ private static readonly PRESENTATION_MIME;
10165
+ /** Build a resolution-independent SVG string directly from slide data. */
10166
+ exportSlideToSvg(slide: PptxSlide, width: number, height: number, options?: SvgExportOptions): string;
10167
+ /** Build an SVG Blob directly from slide data. */
10168
+ exportSlideToSvgBlob(slide: PptxSlide, width: number, height: number, options?: SvgExportOptions): Blob;
10169
+ /** Build SVG strings for all selected slides in a parsed presentation. */
10170
+ exportAllSlidesToSvg(data: PptxData, options?: SvgExportOptions): string[];
9737
10171
  /**
9738
10172
  * Trigger a browser download of serialized `.pptx` bytes.
9739
10173
  *
@@ -9741,6 +10175,8 @@ declare class ExportService {
9741
10175
  * @param fileName - Suggested download file name (unsafe chars are stripped).
9742
10176
  */
9743
10177
  savePptx(bytes: Uint8Array, fileName: string): void;
10178
+ /** Download serialized presentation bytes using the matching package MIME type. */
10179
+ savePresentation(bytes: Uint8Array, fileName: string, format: PptxSaveFormat): void;
9744
10180
  /**
9745
10181
  * Rasterize a single DOM element to PNG and trigger a browser download.
9746
10182
  *
@@ -9749,6 +10185,8 @@ declare class ExportService {
9749
10185
  * @param scale - Device-pixel ratio multiplier (default 2 for sharp output).
9750
10186
  */
9751
10187
  exportElementToPng(el: HTMLElement, fileName: string, scale?: number): Promise<void>;
10188
+ /** Rasterize an element and copy it to the system clipboard as a PNG image. */
10189
+ copyElementAsPng(el: HTMLElement, scale?: number): Promise<void>;
9752
10190
  /**
9753
10191
  * Rasterize a single element to a canvas (passthrough to html2canvas-pro).
9754
10192
  * Capture each slide's canvas *while that slide is the live DOM*: the
@@ -10158,6 +10596,220 @@ declare class AnimationPanelComponent {
10158
10596
  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>;
10159
10597
  }
10160
10598
 
10599
+ declare class ActionSettingsPanelComponent {
10600
+ readonly element: _angular_core.InputSignal<PptxElement>;
10601
+ readonly slideCount: _angular_core.InputSignal<number>;
10602
+ readonly patch: _angular_core.OutputEmitterRef<Partial<PptxElement>>;
10603
+ protected readonly triggers: readonly ["click", "hover"];
10604
+ protected readonly actionTypes: readonly {
10605
+ value: ElementActionType;
10606
+ key: string;
10607
+ }[];
10608
+ private readonly clickAction;
10609
+ private readonly hoverAction;
10610
+ protected actionFor(trigger: 'click' | 'hover'): ElementAction | undefined;
10611
+ private update;
10612
+ protected onType(event: Event, trigger: 'click' | 'hover'): void;
10613
+ protected onUrl(event: Event, trigger: 'click' | 'hover'): void;
10614
+ protected onSlide(event: Event, trigger: 'click' | 'hover'): void;
10615
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ActionSettingsPanelComponent, never>;
10616
+ 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>;
10617
+ }
10618
+
10619
+ type ImageElement = PptxElement & {
10620
+ altText?: string;
10621
+ imageEffects?: PptxImageEffects;
10622
+ };
10623
+ declare class ImagePropertiesPanelComponent {
10624
+ readonly element: _angular_core.InputSignal<PptxElement>;
10625
+ readonly patch: _angular_core.OutputEmitterRef<Partial<PptxElement>>;
10626
+ protected readonly image: _angular_core.Signal<ImageElement>;
10627
+ protected readonly effects: _angular_core.Signal<PptxImageEffects>;
10628
+ 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%)"]];
10629
+ protected readonly sliders: readonly [{
10630
+ readonly key: "brightness";
10631
+ readonly label: "pptx.imageAdjustments.brightness";
10632
+ readonly min: -100;
10633
+ readonly max: 100;
10634
+ }, {
10635
+ readonly key: "contrast";
10636
+ readonly label: "pptx.imageAdjustments.contrast";
10637
+ readonly min: -100;
10638
+ readonly max: 100;
10639
+ }, {
10640
+ readonly key: "saturation";
10641
+ readonly label: "pptx.image.saturation";
10642
+ readonly min: -100;
10643
+ readonly max: 100;
10644
+ }, {
10645
+ readonly key: "alphaModFix";
10646
+ readonly label: "pptx.imageAdjustments.transparency";
10647
+ readonly min: 0;
10648
+ readonly max: 100;
10649
+ }, {
10650
+ readonly key: "biLevel";
10651
+ readonly label: "pptx.imageAdjustments.biLevelThreshold";
10652
+ readonly min: 0;
10653
+ readonly max: 100;
10654
+ }];
10655
+ static supports(element: PptxElement): boolean;
10656
+ protected effectValue(key: keyof PptxImageEffects): number;
10657
+ private updateEffects;
10658
+ protected onAltText(event: Event): void;
10659
+ protected onEffectNumber(key: keyof PptxImageEffects, event: Event): void;
10660
+ protected onGrayscale(event: Event): void;
10661
+ protected onArtistic(event: Event): void;
10662
+ protected onDuotone(event: Event, key: 'color1' | 'color2'): void;
10663
+ protected clearDuotone(): void;
10664
+ protected reset(): void;
10665
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ImagePropertiesPanelComponent, never>;
10666
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ImagePropertiesPanelComponent, "pptx-image-properties-panel", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; }, { "patch": "patch"; }, never, never, true, never>;
10667
+ }
10668
+
10669
+ declare class MediaPropertiesPanelComponent {
10670
+ readonly element: _angular_core.InputSignal<MediaPptxElement>;
10671
+ readonly canEdit: _angular_core.InputSignal<boolean>;
10672
+ readonly patch: _angular_core.OutputEmitterRef<Partial<PptxElement>>;
10673
+ private readonly loader;
10674
+ protected readonly media: _angular_core.Signal<MediaPptxElement>;
10675
+ protected readonly mediaDataUrls: _angular_core.Signal<Map<any, any>>;
10676
+ protected readonly speeds: readonly [0.25, 0.5, 0.75, 1, 1.25, 1.5, 2, 3, 4];
10677
+ protected readonly volumePercent: _angular_core.Signal<number>;
10678
+ protected readonly toggles: _angular_core.Signal<readonly [{
10679
+ readonly key: "autoPlay";
10680
+ readonly label: "pptx.media.startAutomatically";
10681
+ readonly value: boolean;
10682
+ }, {
10683
+ readonly key: "loop";
10684
+ readonly label: "pptx.media.loop";
10685
+ readonly value: boolean;
10686
+ }, {
10687
+ readonly key: "playAcrossSlides";
10688
+ readonly label: "pptx.media.playAcrossSlides";
10689
+ readonly value: boolean;
10690
+ }, {
10691
+ readonly key: "fullScreen";
10692
+ readonly label: "pptx.media.fullScreen";
10693
+ readonly value: boolean;
10694
+ }, {
10695
+ readonly key: "hideWhenNotPlaying";
10696
+ readonly label: "pptx.media.hideWhenNotPlaying";
10697
+ readonly value: boolean;
10698
+ }]>;
10699
+ protected numberPatch(key: keyof MediaPptxElement, event: Event): void;
10700
+ protected volumeChange(event: Event): void;
10701
+ protected booleanPatch(key: keyof MediaPptxElement, event: Event): void;
10702
+ protected addBookmark(): void;
10703
+ protected removeBookmark(index: number): void;
10704
+ protected updateBookmark(index: number, key: keyof MediaBookmark, event: Event): void;
10705
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MediaPropertiesPanelComponent, never>;
10706
+ 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>;
10707
+ }
10708
+
10709
+ declare class HeaderFooterDialogComponent {
10710
+ readonly open: _angular_core.InputSignal<boolean>;
10711
+ readonly value: _angular_core.InputSignal<PptxHeaderFooter>;
10712
+ readonly save: _angular_core.OutputEmitterRef<PptxHeaderFooter>;
10713
+ readonly close: _angular_core.OutputEmitterRef<void>;
10714
+ protected readonly draft: _angular_core.WritableSignal<PptxHeaderFooter>;
10715
+ constructor();
10716
+ protected setFlag(key: keyof PptxHeaderFooter, event: Event): void;
10717
+ protected setText(key: keyof PptxHeaderFooter, event: Event): void;
10718
+ protected apply(): void;
10719
+ protected closeFromBackdrop(event: MouseEvent): void;
10720
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<HeaderFooterDialogComponent, never>;
10721
+ 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>;
10722
+ }
10723
+
10724
+ declare class MediaPreviewComponent {
10725
+ readonly element: _angular_core.InputSignal<MediaPptxElement>;
10726
+ readonly mediaDataUrls: _angular_core.InputSignal<Map<string, string>>;
10727
+ readonly canEdit: _angular_core.InputSignal<boolean>;
10728
+ readonly patch: _angular_core.OutputEmitterRef<Partial<PptxElement>>;
10729
+ private readonly mediaEl;
10730
+ protected readonly currentTime: _angular_core.WritableSignal<number>;
10731
+ protected readonly liveDuration: _angular_core.WritableSignal<number>;
10732
+ protected readonly isPlaying: _angular_core.WritableSignal<boolean>;
10733
+ protected readonly source: _angular_core.Signal<string | undefined>;
10734
+ protected readonly duration: _angular_core.Signal<number>;
10735
+ protected readonly timeLabel: _angular_core.Signal<string>;
10736
+ protected readonly durationLabel: _angular_core.Signal<string>;
10737
+ private readonly liveWidth;
10738
+ private readonly liveHeight;
10739
+ protected readonly resolution: _angular_core.Signal<string | undefined>;
10740
+ protected readonly fileName: _angular_core.Signal<string>;
10741
+ protected syncTime(): void;
10742
+ protected syncDuration(): void;
10743
+ protected togglePlay(): void;
10744
+ protected seekTo(time: number): void;
10745
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MediaPreviewComponent, never>;
10746
+ 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>;
10747
+ }
10748
+
10749
+ declare class MediaTrimTimelineComponent {
10750
+ readonly duration: _angular_core.InputSignal<number>;
10751
+ readonly trimStartMs: _angular_core.InputSignal<number>;
10752
+ readonly trimEndMs: _angular_core.InputSignal<number>;
10753
+ readonly currentTime: _angular_core.InputSignal<number>;
10754
+ readonly bookmarks: _angular_core.InputSignal<MediaBookmark[]>;
10755
+ readonly canEdit: _angular_core.InputSignal<boolean>;
10756
+ readonly trimChange: _angular_core.OutputEmitterRef<MediaTrimRange>;
10757
+ readonly seek: _angular_core.OutputEmitterRef<number>;
10758
+ private readonly bar;
10759
+ private readonly dragging;
10760
+ protected readonly geometry: _angular_core.Signal<MediaTimelineGeometry>;
10761
+ protected readonly startLabel: _angular_core.Signal<string>;
10762
+ protected readonly endLabel: _angular_core.Signal<string>;
10763
+ protected beginDrag(handle: MediaTrimHandle, event: PointerEvent): void;
10764
+ protected continueDrag(event: PointerEvent): void;
10765
+ protected endDrag(): void;
10766
+ protected seekFromClick(event: MouseEvent): void;
10767
+ protected seekBookmark(bookmark: MediaBookmark, event: MouseEvent): void;
10768
+ protected bookmarkPercent(bookmark: MediaBookmark): number;
10769
+ private timeFromPointer;
10770
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<MediaTrimTimelineComponent, never>;
10771
+ 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>;
10772
+ }
10773
+
10774
+ declare class SlideThemeOverridePanelComponent {
10775
+ readonly slide: _angular_core.InputSignal<PptxSlide>;
10776
+ readonly theme: _angular_core.InputSignal<PptxTheme | undefined>;
10777
+ readonly patch: _angular_core.OutputEmitterRef<Partial<PptxSlide>>;
10778
+ protected readonly aliases: readonly ["bg1", "tx1", "bg2", "tx2", "accent1", "accent2", "accent3", "accent4", "accent5", "accent6", "hlink", "folHlink"];
10779
+ protected readonly slots: readonly ["dk1", "lt1", "dk2", "lt2", "accent1", "accent2", "accent3", "accent4", "accent5", "accent6", "hlink", "folHlink"];
10780
+ protected readonly labels: Record<"accent1" | "accent2" | "accent3" | "accent4" | "accent5" | "accent6" | "hlink" | "folHlink" | "tx1" | "tx2" | "bg1" | "bg2", string>;
10781
+ protected readonly active: _angular_core.Signal<boolean>;
10782
+ protected current(alias: ColorMapAliasKey): string;
10783
+ protected slotColor(slot: string): string | undefined;
10784
+ private emitOverride;
10785
+ protected toggle(event: Event): void;
10786
+ protected change(alias: ColorMapAliasKey, event: Event): void;
10787
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlideThemeOverridePanelComponent, never>;
10788
+ 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>;
10789
+ }
10790
+
10791
+ interface CustomThemeEdit {
10792
+ colorScheme: PptxThemeColorScheme;
10793
+ fontScheme: PptxThemeFontScheme;
10794
+ name: string;
10795
+ }
10796
+ declare class ThemeEditorFieldsComponent {
10797
+ readonly theme: _angular_core.InputSignal<PptxTheme | undefined>;
10798
+ readonly applyTheme: _angular_core.OutputEmitterRef<CustomThemeEdit>;
10799
+ readonly slots: Array<keyof PptxThemeColorScheme>;
10800
+ readonly colors: _angular_core.WritableSignal<PptxThemeColorScheme>;
10801
+ readonly name: _angular_core.WritableSignal<string>;
10802
+ readonly majorFont: _angular_core.WritableSignal<string>;
10803
+ readonly minorFont: _angular_core.WritableSignal<string>;
10804
+ ngOnInit(): void;
10805
+ protected value(event: Event): string;
10806
+ protected color(slot: keyof PptxThemeColorScheme): string;
10807
+ protected setColor(slot: keyof PptxThemeColorScheme, event: Event): void;
10808
+ protected apply(): void;
10809
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemeEditorFieldsComponent, never>;
10810
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThemeEditorFieldsComponent, "pptx-theme-editor-fields", never, { "theme": { "alias": "theme"; "required": false; "isSignal": true; }; }, { "applyTheme": "applyTheme"; }, never, never, true, never>;
10811
+ }
10812
+
10161
10813
  /** A positioned cursor view-model used by the template. */
10162
10814
  interface PositionedCursor {
10163
10815
  clientId: number | string;
@@ -10460,8 +11112,18 @@ declare class ViewerExtraDialogsComponent {
10460
11112
  readonly filePath: _angular_core.InputSignal<string | undefined>;
10461
11113
  /** Custom shows offered in the set-up-slide-show "show slides" fieldset. */
10462
11114
  readonly customShows: _angular_core.InputSignal<PptxCustomShow[]>;
11115
+ /** Live viewer preferences surfaced by the settings dialog. */
11116
+ readonly settings: _angular_core.InputSignal<ViewerPreferences>;
11117
+ readonly themeKey: _angular_core.InputSignal<string>;
11118
+ readonly availableThemes: _angular_core.InputSignal<readonly ThemeCatalogEntry[]>;
11119
+ readonly localeCode: _angular_core.InputSignal<string>;
11120
+ readonly availableLocales: _angular_core.InputSignal<readonly LocaleCatalogEntry[]>;
10463
11121
  /** Fired with a restored `.pptx` version's bytes; the host swaps the deck. */
10464
11122
  readonly restoreContent: _angular_core.OutputEmitterRef<Uint8Array<ArrayBufferLike>>;
11123
+ /** Fired whenever a settings toggle changes. */
11124
+ readonly settingsChange: _angular_core.OutputEmitterRef<ViewerPreferences>;
11125
+ readonly themeKeySelect: _angular_core.OutputEmitterRef<string>;
11126
+ readonly localeSelect: _angular_core.OutputEmitterRef<string>;
10465
11127
  protected readonly svc: ViewerDialogsService;
10466
11128
  protected readonly compare: ViewerCompareService;
10467
11129
  protected readonly editor: EditorStateService;
@@ -10496,7 +11158,7 @@ declare class ViewerExtraDialogsComponent {
10496
11158
  /** Clear any save password. */
10497
11159
  onRemovePassword(): void;
10498
11160
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerExtraDialogsComponent, never>;
10499
- 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>;
11161
+ 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; }; "themeKey": { "alias": "themeKey"; "required": false; "isSignal": true; }; "availableThemes": { "alias": "availableThemes"; "required": false; "isSignal": true; }; "localeCode": { "alias": "localeCode"; "required": false; "isSignal": true; }; "availableLocales": { "alias": "availableLocales"; "required": false; "isSignal": true; }; }, { "restoreContent": "restoreContent"; "settingsChange": "settingsChange"; "themeKeySelect": "themeKeySelect"; "localeSelect": "localeSelect"; }, never, never, true, never>;
10500
11162
  }
10501
11163
 
10502
11164
  declare class EquationEditorDialogComponent {
@@ -10577,7 +11239,7 @@ declare class SetUpSlideShowDialogComponent {
10577
11239
  readonly close: _angular_core.OutputEmitterRef<void>;
10578
11240
  /** Working copy of the properties; seeded from `properties` on open. */
10579
11241
  readonly draft: _angular_core.WritableSignal<PptxPresentationProperties>;
10580
- readonly showType: _angular_core.Signal<"presented" | "browsed" | "kiosk">;
11242
+ readonly showType: _angular_core.Signal<"kiosk" | "presented" | "browsed">;
10581
11243
  readonly showSlidesMode: _angular_core.Signal<"range" | "all" | "customShow">;
10582
11244
  constructor();
10583
11245
  /** Merge a partial patch into the current draft. */
@@ -10882,11 +11544,73 @@ declare class ShortcutPanelComponent {
10882
11544
  /** Fired when the Close button is clicked. */
10883
11545
  readonly close: _angular_core.OutputEmitterRef<void>;
10884
11546
  /** Static shortcut reference rows. */
10885
- protected readonly items: pptx_angular_viewer.ShortcutReferenceItem[];
11547
+ protected readonly items: readonly pptx_angular_viewer.ShortcutReferenceItem[];
10886
11548
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShortcutPanelComponent, never>;
10887
11549
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ShortcutPanelComponent, "pptx-shortcut-panel", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "close": "close"; }, never, never, true, never>;
10888
11550
  }
10889
11551
 
11552
+ declare class SettingsDialogComponent {
11553
+ readonly open: _angular_core.InputSignal<boolean>;
11554
+ readonly settings: _angular_core.InputSignal<ViewerPreferences>;
11555
+ /** Selected `THEME_CATALOG` (or `availableThemes`) key, for the Appearance tab. */
11556
+ readonly themeKey: _angular_core.InputSignal<string>;
11557
+ /** Theme choices offered by the Appearance tab. Defaults to the built-in `THEME_CATALOG`. */
11558
+ readonly availableThemes: _angular_core.InputSignal<readonly ThemeCatalogEntry[]>;
11559
+ /** Active locale code, for the Language tab. */
11560
+ readonly localeCode: _angular_core.InputSignal<string>;
11561
+ /** Locale choices offered by the Language tab. Defaults to the built-in `LOCALE_CATALOG`. */
11562
+ readonly availableLocales: _angular_core.InputSignal<readonly LocaleCatalogEntry[]>;
11563
+ readonly settingsChange: _angular_core.OutputEmitterRef<ViewerPreferences>;
11564
+ /** Fired when the user picks an Appearance tab swatch. */
11565
+ readonly themeKeySelect: _angular_core.OutputEmitterRef<string>;
11566
+ /** Fired when the user picks a Language tab entry. */
11567
+ readonly localeSelect: _angular_core.OutputEmitterRef<string>;
11568
+ readonly close: _angular_core.OutputEmitterRef<void>;
11569
+ protected readonly activeTab: _angular_core.WritableSignal<"language" | "general" | "appearance" | "shortcuts">;
11570
+ protected readonly specs: readonly ViewerPreferenceToggle[];
11571
+ protected readonly shortcuts: readonly pptx_angular_viewer.ShortcutReferenceItem[];
11572
+ protected toggle(key: keyof ViewerSettings): void;
11573
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SettingsDialogComponent, never>;
11574
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SettingsDialogComponent, "pptx-settings-dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "settings": { "alias": "settings"; "required": true; "isSignal": true; }; "themeKey": { "alias": "themeKey"; "required": false; "isSignal": true; }; "availableThemes": { "alias": "availableThemes"; "required": false; "isSignal": true; }; "localeCode": { "alias": "localeCode"; "required": false; "isSignal": true; }; "availableLocales": { "alias": "availableLocales"; "required": false; "isSignal": true; }; }, { "settingsChange": "settingsChange"; "themeKeySelect": "themeKeySelect"; "localeSelect": "localeSelect"; "close": "close"; }, never, never, true, never>;
11575
+ }
11576
+
11577
+ declare class SettingsAppearanceTabComponent {
11578
+ readonly themes: _angular_core.InputSignal<readonly ThemeCatalogEntry[]>;
11579
+ readonly activeKey: _angular_core.InputSignal<string>;
11580
+ readonly select: _angular_core.OutputEmitterRef<string>;
11581
+ protected swatchColor(entry: ThemeCatalogEntry): string;
11582
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SettingsAppearanceTabComponent, never>;
11583
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SettingsAppearanceTabComponent, "pptx-settings-appearance-tab", never, { "themes": { "alias": "themes"; "required": true; "isSignal": true; }; "activeKey": { "alias": "activeKey"; "required": false; "isSignal": true; }; }, { "select": "select"; }, never, never, true, never>;
11584
+ }
11585
+
11586
+ declare class SettingsLanguageTabComponent {
11587
+ readonly locales: _angular_core.InputSignal<readonly LocaleCatalogEntry[]>;
11588
+ readonly activeCode: _angular_core.InputSignal<string>;
11589
+ readonly select: _angular_core.OutputEmitterRef<string>;
11590
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SettingsLanguageTabComponent, never>;
11591
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SettingsLanguageTabComponent, "pptx-settings-language-tab", never, { "locales": { "alias": "locales"; "required": true; "isSignal": true; }; "activeCode": { "alias": "activeCode"; "required": false; "isSignal": true; }; }, { "select": "select"; }, never, never, true, never>;
11592
+ }
11593
+
11594
+ declare class AccountPageComponent {
11595
+ /** Optional host-provided sign-in hook point. Absent/disabled by default. */
11596
+ readonly accountAuth: _angular_core.InputSignal<AccountAuthConfig | undefined>;
11597
+ private readonly translate;
11598
+ protected readonly swatches: readonly string[];
11599
+ protected readonly version = "1.26.0";
11600
+ protected readonly profile: _angular_core.WritableSignal<ViewerProfile>;
11601
+ protected readonly initial: _angular_core.Signal<string>;
11602
+ protected readonly usage: _angular_core.WritableSignal<LocalStorageUsageSummary | null>;
11603
+ protected readonly cleared: _angular_core.WritableSignal<boolean>;
11604
+ protected readonly formattedSize: _angular_core.Signal<string>;
11605
+ constructor();
11606
+ private refreshUsage;
11607
+ protected updateName(name: string): void;
11608
+ protected selectColor(color: string): void;
11609
+ protected clearData(): Promise<void>;
11610
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AccountPageComponent, never>;
11611
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AccountPageComponent, "pptx-account-page", never, { "accountAuth": { "alias": "accountAuth"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
11612
+ }
11613
+
10890
11614
  declare class KeepAnnotationsDialogComponent {
10891
11615
  /** Whether the dialog is visible. */
10892
11616
  readonly open: _angular_core.InputSignal<boolean>;
@@ -11498,30 +12222,6 @@ declare function themeStyle(theme: ViewerTheme | undefined): Record<string, stri
11498
12222
  type ClassValue = string | number | false | null | undefined;
11499
12223
  declare function cn(...values: ClassValue[]): string;
11500
12224
 
11501
- /**
11502
- * The canonical English UI-string dictionary for pptx-viewer. None of the
11503
- * React/Vue/Angular binding packages ship translations themselves - each
11504
- * only calls its framework's translation function (react-i18next's `t()`,
11505
- * vue-i18n's `t()`, ngx-translate's `TranslateService`/`translate` pipe)
11506
- * against dotted `pptx.*` keys. The host app supplies the dictionary; this
11507
- * module is that dictionary for the demos, shared so all three stay in sync
11508
- * instead of drifting into three separate copies.
11509
- */
11510
- declare const translationsEn: Record<string, string>;
11511
- /**
11512
- * Every key in the English dictionary. A new locale dictionary typed as
11513
- * `Record<TranslationKey, string>` gets a compile error for any key it's
11514
- * missing or misspells, so translation contributions stay complete without a
11515
- * separate parity test.
11516
- */
11517
- type TranslationKey = keyof typeof translationsEn;
11518
- /**
11519
- * Convert a dotted translation key to a human-readable label when no
11520
- * explicit dictionary entry exists yet. Takes the last segment and converts
11521
- * camelCase to Title Case, e.g. "pptx.slideSorter.zoomIn" -> "Zoom In".
11522
- */
11523
- declare function keyToLabel(key: string): string;
11524
-
11525
12225
  /** Live host accessors the fit computation needs. */
11526
12226
  interface CanvasFitHost {
11527
12227
  readonly autoFit: () => boolean;
@@ -12397,12 +13097,22 @@ declare class RibbonDrawSectionComponent {
12397
13097
  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>;
12398
13098
  }
12399
13099
 
12400
- /** Ribbon tab identifiers (mirrors React `TOOLBAR_SECTIONS`). */
12401
- type RibbonTab = 'file' | 'home' | 'insert' | 'text' | 'draw' | 'arrange' | 'design' | 'transitions' | 'animations' | 'slideShow' | 'record' | 'review' | 'view' | 'help';
12402
- interface TabDef {
12403
- id: RibbonTab;
12404
- labelKey: string;
12405
- }
13100
+ /**
13101
+ * ribbon-types.ts: shared ribbon-tab id type used by {@link RibbonComponent},
13102
+ * {@link RibbonTabListComponent}, and {@link RibbonContentComponent}. Kept in
13103
+ * its own file (rather than declared in one of those components) so none of
13104
+ * them has to import a type from a sibling that also imports it, mirroring
13105
+ * the Svelte binding's `ribbon/ribbon-types.ts`.
13106
+ */
13107
+
13108
+ /**
13109
+ * Ribbon tab identifiers. Includes 'text' and 'arrange' on top of the shared
13110
+ * {@link ToolbarTabId} catalogue: two extra content-only tabs that don't get
13111
+ * their own tab-bar button (no `TOOLBAR_TABS` entry) but are still reachable
13112
+ * as `@switch` cases.
13113
+ */
13114
+ type RibbonTab = ToolbarTabId | 'text' | 'arrange';
13115
+
12406
13116
  declare class RibbonComponent {
12407
13117
  readonly slideIndex: _angular_core.InputSignal<number>;
12408
13118
  readonly slideCount: _angular_core.InputSignal<number>;
@@ -12413,6 +13123,7 @@ declare class RibbonComponent {
12413
13123
  readonly formatPainterActive: _angular_core.InputSignal<boolean>;
12414
13124
  readonly canActivateFormatPainter: _angular_core.InputSignal<boolean>;
12415
13125
  readonly exporting: _angular_core.InputSignal<boolean>;
13126
+ readonly hasMacros: _angular_core.InputSignal<boolean>;
12416
13127
  /** Current visibility state of the grid overlay (for active-state styling). */
12417
13128
  readonly showGrid: _angular_core.InputSignal<boolean>;
12418
13129
  /** Current visibility state of rulers (for active-state styling). */
@@ -12421,6 +13132,7 @@ declare class RibbonComponent {
12421
13132
  readonly showGuides: _angular_core.InputSignal<boolean>;
12422
13133
  /** Current state of snap-to-grid (for active-state styling). */
12423
13134
  readonly snapToGrid: _angular_core.InputSignal<boolean>;
13135
+ readonly snapToShape: _angular_core.InputSignal<boolean>;
12424
13136
  /** Current state of eyedropper tool (for active-state styling). */
12425
13137
  readonly eyedropperActive: _angular_core.InputSignal<boolean>;
12426
13138
  /** Current visibility state of the theme gallery overlay (for active-state styling). */
@@ -12439,6 +13151,13 @@ declare class RibbonComponent {
12439
13151
  readonly collabConnected: _angular_core.InputSignal<boolean>;
12440
13152
  /** Connected collaborator count (Share button label). */
12441
13153
  readonly connectedCount: _angular_core.InputSignal<number>;
13154
+ /** Current live proofing state shown by the Review ribbon command. */
13155
+ readonly spellCheckEnabled: _angular_core.InputSignal<boolean>;
13156
+ readonly showSubtitles: _angular_core.InputSignal<boolean>;
13157
+ /** Toolbar buttons/tabs the host wants hidden. Default `[]` hides nothing. */
13158
+ readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
13159
+ /** Optional sign-in hook point for File > Account. Absent/disabled by default. */
13160
+ readonly accountAuth: _angular_core.InputSignal<AccountAuthConfig | undefined>;
12442
13161
  readonly prev: _angular_core.OutputEmitterRef<void>;
12443
13162
  readonly next: _angular_core.OutputEmitterRef<void>;
12444
13163
  readonly zoomIn: _angular_core.OutputEmitterRef<void>;
@@ -12449,11 +13168,23 @@ declare class RibbonComponent {
12449
13168
  readonly presenter: _angular_core.OutputEmitterRef<void>;
12450
13169
  /** Emitted by the tab-row Record button (starts a slide-show run-through). */
12451
13170
  readonly record: _angular_core.OutputEmitterRef<void>;
13171
+ readonly presentFromBeginning: _angular_core.OutputEmitterRef<void>;
13172
+ readonly rehearseTimings: _angular_core.OutputEmitterRef<void>;
13173
+ readonly toggleSubtitles: _angular_core.OutputEmitterRef<void>;
13174
+ readonly openSubtitleSettings: _angular_core.OutputEmitterRef<void>;
13175
+ readonly recordFromBeginning: _angular_core.OutputEmitterRef<void>;
13176
+ readonly recordFromCurrent: _angular_core.OutputEmitterRef<void>;
13177
+ readonly spellCheckChange: _angular_core.OutputEmitterRef<boolean>;
12452
13178
  readonly share: _angular_core.OutputEmitterRef<void>;
12453
13179
  readonly broadcast: _angular_core.OutputEmitterRef<void>;
12454
13180
  readonly openFile: _angular_core.OutputEmitterRef<void>;
13181
+ readonly openRecentFile: _angular_core.OutputEmitterRef<string>;
13182
+ readonly createPresentation: _angular_core.OutputEmitterRef<string>;
12455
13183
  /** Emitted when the user clicks "Save" in the File tab (saves as .pptx). */
12456
13184
  readonly save: _angular_core.OutputEmitterRef<void>;
13185
+ readonly savePpsx: _angular_core.OutputEmitterRef<void>;
13186
+ readonly savePptm: _angular_core.OutputEmitterRef<void>;
13187
+ readonly packageForSharing: _angular_core.OutputEmitterRef<void>;
12457
13188
  /** Emitted when the user toggles the slides panel from the top bar. */
12458
13189
  readonly toggleSidebar: _angular_core.OutputEmitterRef<void>;
12459
13190
  /** Emitted when the user opens the Digital Signatures panel from the File tab. */
@@ -12471,23 +13202,13 @@ declare class RibbonComponent {
12471
13202
  readonly exportPdf: _angular_core.OutputEmitterRef<void>;
12472
13203
  readonly exportGif: _angular_core.OutputEmitterRef<void>;
12473
13204
  readonly exportVideo: _angular_core.OutputEmitterRef<void>;
13205
+ readonly copySlideAsImage: _angular_core.OutputEmitterRef<void>;
12474
13206
  readonly replace: _angular_core.OutputEmitterRef<void>;
12475
- /**
12476
- * Emitted by Design / Transitions / Animations tabs when the user wants to
12477
- * open the right-docked Inspector panel (Format Background, Transitions full
12478
- * options, Animation Panel). The parent component decides what to show.
12479
- */
13207
+ /** Design/Transitions/Animations tabs want the right-docked Inspector panel opened. */
12480
13208
  readonly toggleInspector: _angular_core.OutputEmitterRef<void>;
12481
- /**
12482
- * Emitted whenever the Draw tab tool state changes (tool / colour / width).
12483
- * The parent may connect this to an annotation / ink layer when available.
12484
- * Currently UI-only; no freehand-draw back-end exists in the Angular port.
12485
- */
13209
+ /** Draw tab tool state changed (tool/colour/width); UI-only, no ink back-end yet. */
12486
13210
  readonly drawToolChange: _angular_core.OutputEmitterRef<DrawToolState>;
12487
- /**
12488
- * Emitted when the user clicks "Browse Themes" in the Design tab.
12489
- * The parent toggles the theme-gallery overlay.
12490
- */
13211
+ /** Emitted when the user clicks "Browse Themes" in the Design tab. */
12491
13212
  readonly toggleThemeGallery: _angular_core.OutputEmitterRef<void>;
12492
13213
  /** Emitted when the user toggles the grid overlay in the View tab. */
12493
13214
  readonly toggleGrid: _angular_core.OutputEmitterRef<void>;
@@ -12501,13 +13222,12 @@ declare class RibbonComponent {
12501
13222
  readonly openCustomShows: _angular_core.OutputEmitterRef<void>;
12502
13223
  /** Emitted when the user toggles snap-to-grid in the View tab. */
12503
13224
  readonly toggleSnapToGrid: _angular_core.OutputEmitterRef<void>;
13225
+ readonly toggleSnapToShape: _angular_core.OutputEmitterRef<void>;
13226
+ readonly addGuide: _angular_core.OutputEmitterRef<"x" | "y">;
13227
+ readonly zoomToFit: _angular_core.OutputEmitterRef<void>;
12504
13228
  /** Emitted when the user activates the eyedropper in the View tab. */
12505
13229
  readonly toggleEyedropper: _angular_core.OutputEmitterRef<void>;
12506
- /**
12507
- * Emitted when the user clicks "SmartArt" in the Insert tab. The host opens
12508
- * the Insert SmartArt gallery dialog and performs the actual insert, so the
12509
- * ribbon stays free of the dialog state and node-building logic.
12510
- */
13230
+ /** "SmartArt" in the Insert tab; the host opens the gallery dialog and does the insert. */
12511
13231
  readonly openSmartArtDialog: _angular_core.OutputEmitterRef<void>;
12512
13232
  /** Emitted when the user clicks "Equation" in the Insert tab (opens the editor). */
12513
13233
  readonly openEquationDialog: _angular_core.OutputEmitterRef<void>;
@@ -12523,43 +13243,30 @@ declare class RibbonComponent {
12523
13243
  readonly openVersionHistory: _angular_core.OutputEmitterRef<void>;
12524
13244
  /** Emitted when the user clicks "Shortcuts" in the Help tab. */
12525
13245
  readonly openShortcuts: _angular_core.OutputEmitterRef<void>;
13246
+ /** Emitted when the user opens viewer preferences from the Help tab. */
13247
+ readonly openSettings: _angular_core.OutputEmitterRef<void>;
12526
13248
  /** Emitted when a shape is inserted from the Drawing group. */
12527
13249
  readonly shapeInsert: _angular_core.OutputEmitterRef<string>;
12528
13250
  /** Emitted when the user reorders an element layer (up/down). */
12529
13251
  readonly moveLayer: _angular_core.OutputEmitterRef<string>;
12530
13252
  /** Emitted when the user moves an element to front/back. */
12531
13253
  readonly moveLayerToEdge: _angular_core.OutputEmitterRef<string>;
12532
- protected readonly tabs: readonly TabDef[];
12533
- /** Shared class tokens for the tab-row Record button. */
12534
- protected readonly tra: {
12535
- 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";
12536
- readonly recordDot: "w-2 h-2 rounded-full bg-red-600 shrink-0";
12537
- };
12538
13254
  protected readonly activeTab: _angular_core.WritableSignal<RibbonTab>;
12539
13255
  /** Ribbon content expanded (true) vs collapsed to just the tab bar (false). */
12540
13256
  protected readonly ribbonExpanded: _angular_core.WritableSignal<boolean>;
12541
- /** The chart type currently chosen in the Insert tab dropdown. */
12542
- protected readonly newChartType: _angular_core.WritableSignal<PptxChartType>;
12543
- /** Active drawing tool (UI state only; no ink back-end yet). */
12544
- protected readonly activeTool: _angular_core.WritableSignal<DrawTool>;
12545
- /** Drawing pen colour (UI state only). */
12546
- protected readonly drawingColor: _angular_core.WritableSignal<string>;
12547
- /** Drawing stroke width in pixels (UI state only). */
12548
- protected readonly drawingWidth: _angular_core.WritableSignal<number>;
12549
- /** The transition type currently selected in the ribbon gallery. */
12550
- protected readonly selectedTransition: _angular_core.WritableSignal<PptxTransitionType>;
12551
- /** Transition duration in seconds (round-trips through the UI input). */
12552
- protected readonly transitionDurationSec: _angular_core.WritableSignal<number>;
12553
- /** Sync the draw-tool signals with a Draw-tab change and re-broadcast it. */
12554
- protected onDrawChange(state: DrawToolState): void;
13257
+ /** Route both File Options and Review Language to the real Settings dialog. */
13258
+ protected requestSettings(): void;
13259
+ /** Forward the Review proofing toggle to the viewer-owned live state. */
13260
+ protected setSpellCheck(enabled: boolean): void;
12555
13261
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonComponent, never>;
12556
- 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"; "openMasterView": "openMasterView"; "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>;
13262
+ 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; }; "accountAuth": { "alias": "accountAuth"; "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>;
12557
13263
  }
12558
13264
 
12559
13265
  declare class RibbonAnimationsSectionComponent {
12560
13266
  private readonly editor;
12561
13267
  readonly slideIndex: _angular_core.InputSignal<number>;
12562
13268
  readonly selectedElement: _angular_core.InputSignal<PptxElement | null>;
13269
+ readonly canEdit: _angular_core.InputSignal<boolean>;
12563
13270
  readonly present: _angular_core.OutputEmitterRef<void>;
12564
13271
  readonly toggleInspector: _angular_core.OutputEmitterRef<void>;
12565
13272
  protected readonly entrancePresets: readonly {
@@ -12578,6 +13285,7 @@ declare class RibbonAnimationsSectionComponent {
12578
13285
  labelKey: string;
12579
13286
  }[];
12580
13287
  protected hasSel(): boolean;
13288
+ protected canAuthor(): boolean;
12581
13289
  /**
12582
13290
  * Add an animation preset to the selected element on the active slide.
12583
13291
  * Delegates to the immutable helpers in animation-author-helpers.ts and
@@ -12587,7 +13295,7 @@ declare class RibbonAnimationsSectionComponent {
12587
13295
  /** Remove all animations from the selected element. */
12588
13296
  protected removeAnim(): void;
12589
13297
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonAnimationsSectionComponent, never>;
12590
- 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>;
13298
+ 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>;
12591
13299
  }
12592
13300
 
12593
13301
  declare class RibbonArrangeSectionComponent {
@@ -12650,15 +13358,36 @@ declare class RibbonEditingSectionComponent {
12650
13358
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonEditingSectionComponent, "pptx-ribbon-editing-section", never, {}, { "toggleFindReplace": "toggleFindReplace"; "selectAll": "selectAll"; }, never, never, true, never>;
12651
13359
  }
12652
13360
 
13361
+ interface BackstageAction {
13362
+ title: string;
13363
+ body: string;
13364
+ icon: string;
13365
+ event: {
13366
+ emit: () => void;
13367
+ };
13368
+ }
12653
13369
  declare class RibbonFileSectionComponent {
13370
+ readonly fileName: _angular_core.InputSignal<string | undefined>;
12654
13371
  readonly slideCount: _angular_core.InputSignal<number>;
12655
13372
  readonly exporting: _angular_core.InputSignal<boolean>;
13373
+ readonly hasMacros: _angular_core.InputSignal<boolean>;
13374
+ /** Toolbar buttons the host wants hidden (drops the Export nav entry/page). */
13375
+ readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
13376
+ /** Optional sign-in hook point for the Account page. Absent/disabled by default. */
13377
+ readonly accountAuth: _angular_core.InputSignal<AccountAuthConfig | undefined>;
13378
+ readonly close: _angular_core.OutputEmitterRef<void>;
13379
+ readonly createPresentation: _angular_core.OutputEmitterRef<string>;
12656
13380
  readonly openFile: _angular_core.OutputEmitterRef<void>;
13381
+ readonly openRecentFile: _angular_core.OutputEmitterRef<string>;
12657
13382
  readonly save: _angular_core.OutputEmitterRef<void>;
13383
+ readonly savePpsx: _angular_core.OutputEmitterRef<void>;
13384
+ readonly savePptm: _angular_core.OutputEmitterRef<void>;
13385
+ readonly packageForSharing: _angular_core.OutputEmitterRef<void>;
12658
13386
  readonly exportPng: _angular_core.OutputEmitterRef<void>;
12659
13387
  readonly exportPdf: _angular_core.OutputEmitterRef<void>;
12660
13388
  readonly exportGif: _angular_core.OutputEmitterRef<void>;
12661
13389
  readonly exportVideo: _angular_core.OutputEmitterRef<void>;
13390
+ readonly copySlideAsImage: _angular_core.OutputEmitterRef<void>;
12662
13391
  readonly print: _angular_core.OutputEmitterRef<void>;
12663
13392
  readonly info: _angular_core.OutputEmitterRef<void>;
12664
13393
  readonly signatures: _angular_core.OutputEmitterRef<void>;
@@ -12666,8 +13395,38 @@ declare class RibbonFileSectionComponent {
12666
13395
  readonly openPassword: _angular_core.OutputEmitterRef<void>;
12667
13396
  readonly openFontEmbedding: _angular_core.OutputEmitterRef<void>;
12668
13397
  readonly openVersionHistory: _angular_core.OutputEmitterRef<void>;
13398
+ readonly share: _angular_core.OutputEmitterRef<void>;
13399
+ readonly options: _angular_core.OutputEmitterRef<void>;
13400
+ protected readonly templates: readonly BackstageTemplate[];
13401
+ protected readonly mainNav: _angular_core.Signal<readonly {
13402
+ id: BackstagePage;
13403
+ label: string;
13404
+ group?: "footer";
13405
+ }[]>;
13406
+ protected readonly footerNav: {
13407
+ id: BackstagePage;
13408
+ label: string;
13409
+ group?: "footer";
13410
+ }[];
13411
+ protected readonly page: _angular_core.WritableSignal<BackstagePage>;
13412
+ protected readonly query: _angular_core.WritableSignal<string>;
13413
+ protected readonly recent: _angular_core.WritableSignal<BackstageRecentFile[]>;
13414
+ protected readonly title: _angular_core.Signal<string>;
13415
+ protected readonly visibleRecent: _angular_core.Signal<BackstageRecentFile[]>;
13416
+ protected readonly date: typeof formatBackstageDate;
13417
+ protected readonly size: typeof formatBackstageSize;
13418
+ protected readonly actions: _angular_core.Signal<BackstageAction[]>;
13419
+ constructor();
13420
+ protected selectPage(id: BackstagePage): void;
13421
+ protected run(event: {
13422
+ emit: () => void;
13423
+ }): void;
13424
+ protected create(templateId: string): void;
13425
+ protected openRecent(key: string): void;
13426
+ private action;
13427
+ private pageActions;
12669
13428
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonFileSectionComponent, never>;
12670
- 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>;
13429
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonFileSectionComponent, "pptx-ribbon-file-section", never, { "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "hasMacros": { "alias": "hasMacros"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; "accountAuth": { "alias": "accountAuth"; "required": false; "isSignal": true; }; }, { "close": "close"; "createPresentation": "createPresentation"; "openFile": "openFile"; "openRecentFile": "openRecentFile"; "save": "save"; "savePpsx": "savePpsx"; "savePptm": "savePptm"; "packageForSharing": "packageForSharing"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "copySlideAsImage": "copySlideAsImage"; "print": "print"; "info": "info"; "signatures": "signatures"; "replace": "replace"; "openPassword": "openPassword"; "openFontEmbedding": "openFontEmbedding"; "openVersionHistory": "openVersionHistory"; "share": "share"; "options": "options"; }, never, never, true, never>;
12671
13430
  }
12672
13431
 
12673
13432
  declare class RibbonFontControlsComponent {
@@ -12724,14 +13483,13 @@ declare class RibbonHomeSectionComponent {
12724
13483
  readonly findReplace: _angular_core.OutputEmitterRef<void>;
12725
13484
  readonly applyLayout: _angular_core.OutputEmitterRef<string>;
12726
13485
  readonly resetSlide: _angular_core.OutputEmitterRef<void>;
12727
- readonly addSection: _angular_core.OutputEmitterRef<void>;
12728
13486
  protected hasSel(): boolean;
12729
13487
  protected copy(): void;
12730
13488
  protected cut(): void;
12731
13489
  protected paste(): void;
12732
13490
  protected onSelectAll(): void;
12733
13491
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonHomeSectionComponent, never>;
12734
- 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>;
13492
+ 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>;
12735
13493
  }
12736
13494
 
12737
13495
  declare class RibbonInsertFieldsComponent {
@@ -12834,6 +13592,8 @@ declare class RibbonPrimaryRowComponent {
12834
13592
  readonly inspectorOpen: _angular_core.InputSignal<boolean>;
12835
13593
  readonly commentsOpen: _angular_core.InputSignal<boolean>;
12836
13594
  readonly commentCount: _angular_core.InputSignal<number>;
13595
+ /** Toolbar buttons the host wants hidden (gates Broadcast + the export overflow items). */
13596
+ readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
12837
13597
  readonly toggleSidebar: _angular_core.OutputEmitterRef<void>;
12838
13598
  readonly toggleComments: _angular_core.OutputEmitterRef<void>;
12839
13599
  readonly present: _angular_core.OutputEmitterRef<void>;
@@ -12851,39 +13611,50 @@ declare class RibbonPrimaryRowComponent {
12851
13611
  readonly save: _angular_core.OutputEmitterRef<void>;
12852
13612
  protected readonly presentMenuOpen: _angular_core.WritableSignal<boolean>;
12853
13613
  protected readonly overflowOpen: _angular_core.WritableSignal<boolean>;
12854
- /** Overflow menu items (mirrors React's File/overflow actions that exist here). */
12855
- protected readonly overflowItems: ReadonlyArray<{
13614
+ protected readonly toolbar: ToolbarVisibility;
13615
+ protected readonly overflowItems: _angular_core.Signal<readonly {
12856
13616
  key: string;
12857
13617
  labelKey: string;
12858
13618
  needsSlides?: boolean;
12859
- }>;
13619
+ }[]>;
12860
13620
  protected onOverflow(key: string): void;
12861
13621
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonPrimaryRowComponent, never>;
12862
- 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>;
13622
+ 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>;
12863
13623
  }
12864
13624
 
12865
13625
  declare class RibbonReviewSectionComponent {
12866
13626
  private readonly editor;
13627
+ readonly spellCheckEnabled: _angular_core.InputSignal<boolean>;
13628
+ readonly canEdit: _angular_core.InputSignal<boolean>;
12867
13629
  readonly comments: _angular_core.OutputEmitterRef<void>;
12868
- readonly spelling: _angular_core.OutputEmitterRef<void>;
13630
+ readonly spellCheckChange: _angular_core.OutputEmitterRef<boolean>;
12869
13631
  readonly a11y: _angular_core.OutputEmitterRef<void>;
12870
13632
  readonly openCompare: _angular_core.OutputEmitterRef<void>;
12871
13633
  readonly language: _angular_core.OutputEmitterRef<void>;
12872
13634
  readonly link: _angular_core.OutputEmitterRef<void>;
12873
13635
  protected hasSel(): boolean;
12874
13636
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonReviewSectionComponent, never>;
12875
- 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>;
13637
+ 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>;
12876
13638
  }
12877
13639
 
12878
13640
  declare class RibbonSlideshowSectionComponent {
12879
13641
  readonly slideCount: _angular_core.InputSignal<number>;
12880
- readonly present: _angular_core.OutputEmitterRef<void>;
13642
+ readonly showSubtitles: _angular_core.InputSignal<boolean>;
13643
+ /** Toolbar buttons the host wants hidden (gates Broadcast). */
13644
+ readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
13645
+ readonly presentFromBeginning: _angular_core.OutputEmitterRef<void>;
13646
+ readonly presentFromCurrent: _angular_core.OutputEmitterRef<void>;
12881
13647
  readonly presenter: _angular_core.OutputEmitterRef<void>;
12882
13648
  readonly broadcast: _angular_core.OutputEmitterRef<void>;
12883
13649
  readonly openCustomShows: _angular_core.OutputEmitterRef<void>;
12884
13650
  readonly openSetUpSlideShow: _angular_core.OutputEmitterRef<void>;
13651
+ readonly rehearseTimings: _angular_core.OutputEmitterRef<void>;
13652
+ readonly record: _angular_core.OutputEmitterRef<void>;
13653
+ readonly toggleSubtitles: _angular_core.OutputEmitterRef<void>;
13654
+ readonly openSubtitleSettings: _angular_core.OutputEmitterRef<void>;
13655
+ protected readonly toolbar: ToolbarVisibility;
12885
13656
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonSlideshowSectionComponent, never>;
12886
- 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>;
13657
+ 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>;
12887
13658
  }
12888
13659
 
12889
13660
  /** The selection's text style, or null when the element carries no text props. */
@@ -12930,6 +13701,7 @@ declare class RibbonViewSectionComponent {
12930
13701
  readonly showRulers: _angular_core.InputSignal<boolean>;
12931
13702
  readonly showGuides: _angular_core.InputSignal<boolean>;
12932
13703
  readonly snapToGrid: _angular_core.InputSignal<boolean>;
13704
+ readonly snapToShape: _angular_core.InputSignal<boolean>;
12933
13705
  readonly eyedropperActive: _angular_core.InputSignal<boolean>;
12934
13706
  readonly openSorter: _angular_core.OutputEmitterRef<void>;
12935
13707
  readonly toggleNotes: _angular_core.OutputEmitterRef<void>;
@@ -12941,9 +13713,12 @@ declare class RibbonViewSectionComponent {
12941
13713
  readonly toggleGuides: _angular_core.OutputEmitterRef<void>;
12942
13714
  readonly toggleSelectionPane: _angular_core.OutputEmitterRef<void>;
12943
13715
  readonly toggleSnapToGrid: _angular_core.OutputEmitterRef<void>;
13716
+ readonly toggleSnapToShape: _angular_core.OutputEmitterRef<void>;
13717
+ readonly addGuide: _angular_core.OutputEmitterRef<"x" | "y">;
13718
+ readonly zoomToFit: _angular_core.OutputEmitterRef<void>;
12944
13719
  readonly toggleEyedropper: _angular_core.OutputEmitterRef<void>;
12945
13720
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonViewSectionComponent, never>;
12946
- 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"; "openMasterView": "openMasterView"; "toggleGrid": "toggleGrid"; "toggleRulers": "toggleRulers"; "toggleGuides": "toggleGuides"; "toggleSelectionPane": "toggleSelectionPane"; "toggleSnapToGrid": "toggleSnapToGrid"; "toggleEyedropper": "toggleEyedropper"; }, never, never, true, never>;
13721
+ 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>;
12947
13722
  }
12948
13723
 
12949
13724
  /**
@@ -13013,95 +13788,6 @@ declare function prevVisibleIndex(current: number, slides: readonly PptxSlide[])
13013
13788
  */
13014
13789
  declare function fitZoom(canvasW: number, canvasH: number, vw: number, vh: number): number;
13015
13790
 
13016
- /**
13017
- * presentation-subtitle-helpers.ts: Pure helpers for the subtitle/caption bar.
13018
- *
13019
- * Isolates all text-segment logic so it can be unit-tested without DOM or
13020
- * Angular dependencies.
13021
- *
13022
- * Ported from React:
13023
- * packages/react/src/viewer/components/PresentationSubtitleBar.tsx
13024
- */
13025
- /**
13026
- * A single speech recognition alternative (best-guess transcript + confidence).
13027
- * Matches the shape of the Web Speech API `SpeechRecognitionAlternative`.
13028
- */
13029
- interface SpeechAlternative {
13030
- readonly transcript: string;
13031
- readonly confidence: number;
13032
- }
13033
- /**
13034
- * One result from the recognition engine: array of alternatives plus a
13035
- * `isFinal` flag that indicates whether this result is stable (true) or
13036
- * still being refined (false, i.e. interim).
13037
- */
13038
- interface SpeechResult {
13039
- readonly isFinal: boolean;
13040
- readonly length: number;
13041
- readonly [index: number]: SpeechAlternative;
13042
- }
13043
- /**
13044
- * The list of all results accumulated in a recognition session.
13045
- */
13046
- interface SpeechResultList {
13047
- readonly length: number;
13048
- readonly [index: number]: SpeechResult;
13049
- }
13050
- /**
13051
- * Subset of `SpeechRecognitionEvent`: just what we need.
13052
- */
13053
- interface SpeechRecognitionEventLite {
13054
- readonly resultIndex: number;
13055
- readonly results: SpeechResultList;
13056
- }
13057
- /**
13058
- * Structural interface matching the Web Speech API `SpeechRecognition` object.
13059
- * Kept minimal so we only depend on what we actually use.
13060
- */
13061
- interface SpeechRecognitionLite extends EventTarget {
13062
- continuous: boolean;
13063
- interimResults: boolean;
13064
- lang: string;
13065
- onresult: ((event: SpeechRecognitionEventLite) => void) | null;
13066
- onerror: ((event: Event) => void) | null;
13067
- onend: (() => void) | null;
13068
- start: () => void;
13069
- stop: () => void;
13070
- }
13071
- /** Constructor signature for the speech recognition object. */
13072
- type SpeechRecognitionCtor = new () => SpeechRecognitionLite;
13073
- /**
13074
- * Merge the results from a `SpeechRecognitionEventLite` (starting at
13075
- * `resultIndex`) into a single caption string.
13076
- *
13077
- * Final results form the stable prefix; interim results form the unstable
13078
- * suffix. Both are joined and the combined string is trimmed.
13079
- *
13080
- * @param event The recognition event from `onresult`.
13081
- * @param resultIndex `event.resultIndex`: the first new result index.
13082
- * @param results `event.results`: the full results list.
13083
- * @returns The merged caption string, or `''` if nothing recognised.
13084
- */
13085
- declare function mergeCaptionResults(resultIndex: number, results: SpeechResultList): string;
13086
- /**
13087
- * Attempt to obtain the `SpeechRecognition` constructor from `globalThis`
13088
- * (browser `window`). Returns `null` when unavailable (SSR / unsupported
13089
- * browsers / Firefox without the flag enabled).
13090
- *
13091
- * Checks both the standard and the webkit-prefixed name.
13092
- */
13093
- declare function getSpeechRecognitionCtor(): SpeechRecognitionCtor | null;
13094
- /** Possible support states for the Web Speech API in this environment. */
13095
- type SpeechSupportState = 'unknown' | 'supported' | 'unsupported';
13096
- /**
13097
- * Compute the text to display in the caption bar.
13098
- *
13099
- * - When the API is unsupported, returns `fallbackNotSupported`.
13100
- * - When supported but no text has been captured yet, returns `fallbackListening`.
13101
- * - Otherwise returns the captured text.
13102
- */
13103
- declare function captionDisplayText(supportState: SpeechSupportState, captionText: string, fallbackNotSupported: string, fallbackListening: string): string;
13104
-
13105
13791
  /**
13106
13792
  * touch-gestures.ts: thin Angular adapter over the framework-agnostic
13107
13793
  * `createTouchGestureRecognizer` from `pptx-viewer-shared`.
@@ -13174,21 +13860,6 @@ interface SwipeDismissDrag {
13174
13860
  */
13175
13861
  declare function createSwipeDismissDrag(onDismiss: () => void): SwipeDismissDrag;
13176
13862
 
13177
- /**
13178
- * shortcut-reference.ts: Keyboard shortcut cheat-sheet data.
13179
- *
13180
- * Angular copy of the React constant `SHORTCUT_REFERENCE_ITEMS` from
13181
- * `packages/react/src/viewer/constants/toolbar.ts`. Kept as a tiny, purely
13182
- * declarative data module so the `pptx-shortcut-panel` component stays thin.
13183
- * Entries are copied verbatim from the React source and must stay in sync.
13184
- */
13185
- /** A single row in the keyboard-shortcut reference list. */
13186
- interface ShortcutReferenceItem {
13187
- actionKey: string;
13188
- shortcut: string;
13189
- }
13190
- declare const SHORTCUT_REFERENCE_ITEMS: ShortcutReferenceItem[];
13191
-
13192
13863
  /**
13193
13864
  * collaboration-providers.ts: transport factories for the Angular
13194
13865
  * collaboration service.
@@ -13299,6 +13970,30 @@ declare class WriteBackScheduler {
13299
13970
  cancel(): void;
13300
13971
  }
13301
13972
 
13973
+ /**
13974
+ * Pure (Angular-free) helpers for the `<a:clrChange>` colour-change image
13975
+ * effect. Kept out of the component so they can be unit-tested without TestBed
13976
+ * or a DOM, mirroring `model3d-renderer-helpers.ts`.
13977
+ */
13978
+ /** Parsed `<a:clrChange>` parameters needed to drive the chroma-key. */
13979
+ interface ClrChangeParams {
13980
+ clrFrom: string;
13981
+ clrTo: string;
13982
+ /** Whether the target colour becomes fully transparent (alpha = 0). */
13983
+ clrToTransparent: boolean;
13984
+ /** Match tolerance percentage (0-100). */
13985
+ tolerance: number;
13986
+ }
13987
+ /**
13988
+ * Extract the colour-change effect from an element, or `undefined` when the
13989
+ * element carries no `imageEffects.clrChange` (or its `clrFrom` is empty).
13990
+ *
13991
+ * `clrFrom` is the source colour that must be present for the effect to do
13992
+ * anything, so a blank `clrFrom` is treated as "no effect" (matching React,
13993
+ * where the `clrChange` branch only fires when a valid effect object exists).
13994
+ */
13995
+ declare function getClrChangeParams(el: PptxElement): ClrChangeParams | undefined;
13996
+
13302
13997
  /**
13303
13998
  * Pure helpers for {@link MediaRendererComponent}, mirroring React's
13304
13999
  * `media-render.tsx` / `media-persistent-audio.tsx`. Kept TestBed-free so the
@@ -13660,18 +14355,21 @@ declare class ThemeGalleryComponent {
13660
14355
  * Matches `PptxTheme.name`.
13661
14356
  */
13662
14357
  readonly activeName: _angular_core.InputSignal<string | undefined>;
14358
+ readonly theme: _angular_core.InputSignal<PptxTheme | undefined>;
13663
14359
  /** Emitted when the user confirms a selection. */
13664
14360
  readonly applyTheme: _angular_core.OutputEmitterRef<PptxThemePreset>;
14361
+ readonly applyCustomTheme: _angular_core.OutputEmitterRef<CustomThemeEdit>;
13665
14362
  /** Emitted when the user cancels (backdrop click, Close button, Cancel button). */
13666
14363
  readonly close: _angular_core.OutputEmitterRef<void>;
13667
14364
  protected readonly presets: readonly PptxThemePreset[];
13668
14365
  /** The currently highlighted (not yet applied) preset, or null. */
13669
14366
  protected readonly selected: _angular_core.WritableSignal<PptxThemePreset | null>;
14367
+ protected readonly customizing: _angular_core.WritableSignal<boolean>;
13670
14368
  protected selectPreset(preset: PptxThemePreset): void;
13671
14369
  protected applySelected(): void;
13672
14370
  protected onBackdropClick(event: MouseEvent): void;
13673
14371
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemeGalleryComponent, never>;
13674
- 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>;
14372
+ 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>;
13675
14373
  }
13676
14374
 
13677
14375
  /**
@@ -13716,6 +14414,8 @@ declare class TitleBarComponent {
13716
14414
  readonly redoLabel: _angular_core.InputSignal<string | undefined>;
13717
14415
  /** Whether the Find & Replace panel is open (search-button active state). */
13718
14416
  readonly findReplaceOpen: _angular_core.InputSignal<boolean>;
14417
+ /** Toolbar buttons the host wants hidden (gates Undo/Redo independently). */
14418
+ readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
13719
14419
  readonly toggleAutosave: _angular_core.OutputEmitterRef<void>;
13720
14420
  readonly save: _angular_core.OutputEmitterRef<void>;
13721
14421
  readonly undo: _angular_core.OutputEmitterRef<void>;
@@ -13749,6 +14449,7 @@ declare class TitleBarComponent {
13749
14449
  readonly rightSpacer: "flex items-center justify-end gap-1 shrink-0";
13750
14450
  };
13751
14451
  protected readonly defaultFileKey = "pptx.titleBar.defaultFileName";
14452
+ protected readonly toolbar: ToolbarVisibility;
13752
14453
  protected readonly searchQuery: _angular_core.WritableSignal<string>;
13753
14454
  protected readonly searchFocused: _angular_core.WritableSignal<boolean>;
13754
14455
  protected readonly commandResults: _angular_core.Signal<CommandSearchEntry[]>;
@@ -13761,7 +14462,7 @@ declare class TitleBarComponent {
13761
14462
  protected onSearchBlur(): void;
13762
14463
  protected onSearchKeyDown(event: KeyboardEvent): void;
13763
14464
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TitleBarComponent, never>;
13764
- 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>;
14465
+ 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>;
13765
14466
  }
13766
14467
 
13767
14468
  /**
@@ -13871,5 +14572,5 @@ declare const SEQUENCE_OPTIONS: ReadonlyArray<{
13871
14572
  labelKey: string;
13872
14573
  }>;
13873
14574
 
13874
- 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 };
13875
- 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 };
14575
+ export { ALIGN_OPTIONS, AUDIENCE_HASH, AUDIENCE_NONCE_KEY, AVATAR_COLOR_SWATCHES, AccessibilityPanelComponent, AccessibilityService, AccountPageComponent, 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, DEFAULT_VIEWER_PROFILE, 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, LOCALE_CATALOG, 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, SettingsAppearanceTabComponent, SettingsDialogComponent, SettingsLanguageTabComponent, 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, THEME_CATALOG, 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, clearAllLocalViewerData, 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, getLocalStorageUsageSummary, 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, resolveProfileInitial, resolveRegionCode, resolvePalette as resolveSmartArtPalette, resolveThemeCatalogEntry, resolveTransitionDuration, revealedElementStyles, routeOrthogonalConnector, rowStyle, sampleColorFromSlide, sanitizeColor, sanitizeSlideIndex, sanitizeUserName, saveViewerProfile, 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 };
14576
+ export type { AccessibilityIssueGroup, AccountAuthConfig, 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, LocalStorageUsageSummary, LocaleCatalogEntry, 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, ThemeCatalogEntry, TimerProgress, ToolbarActionId, TouchGestureCallbacks, TranslationKey, UngroupResult, ValueRange, VideoPlanOptions, VideoSegmentPlan, ViewerMode, ViewerProfile, ViewerSettings, ViewerTheme, ViewerThemeColors, ZoomViewModel };