pptx-angular-viewer 1.30.0 → 1.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +55 -20
- package/fesm2022/pptx-angular-viewer.mjs +2794 -412
- package/fesm2022/pptx-angular-viewer.mjs.map +1 -1
- package/package.json +2 -2
- package/types/pptx-angular-viewer.d.ts +460 -118
|
@@ -1914,10 +1914,16 @@ interface EditorHistoryOptions {
|
|
|
1914
1914
|
* already-cloned snapshots.
|
|
1915
1915
|
*/
|
|
1916
1916
|
declare class EditorHistory<T> {
|
|
1917
|
-
private
|
|
1917
|
+
private _maxDepth;
|
|
1918
1918
|
private readonly _past;
|
|
1919
1919
|
private readonly _future;
|
|
1920
1920
|
constructor(options?: EditorHistoryOptions);
|
|
1921
|
+
/**
|
|
1922
|
+
* Change the maximum undo depth at runtime (File > Options > Advanced >
|
|
1923
|
+
* "Maximum number of undos"). Trims the past stack immediately if the new
|
|
1924
|
+
* limit is smaller.
|
|
1925
|
+
*/
|
|
1926
|
+
setMaxDepth(maxDepth: number): void;
|
|
1921
1927
|
/** True when at least one undo step is available. */
|
|
1922
1928
|
get canUndo(): boolean;
|
|
1923
1929
|
/** True when at least one redo step is available. */
|
|
@@ -4018,10 +4024,6 @@ interface ShortcutReferenceItem {
|
|
|
4018
4024
|
shortcut: string;
|
|
4019
4025
|
}
|
|
4020
4026
|
declare const SHORTCUT_REFERENCE_ITEMS: readonly ShortcutReferenceItem[];
|
|
4021
|
-
interface ViewerPreferenceToggle {
|
|
4022
|
-
key: keyof ViewerPreferences;
|
|
4023
|
-
labelKey: string;
|
|
4024
|
-
}
|
|
4025
4027
|
|
|
4026
4028
|
interface SpeechAlternative {
|
|
4027
4029
|
readonly transcript: string;
|
|
@@ -4127,95 +4129,140 @@ type ToolbarTabId = 'file' | 'home' | 'insert' | 'draw' | 'design' | 'transition
|
|
|
4127
4129
|
type ToolbarActionId = ToolbarButtonId | ToolbarTabId;
|
|
4128
4130
|
|
|
4129
4131
|
/**
|
|
4130
|
-
*
|
|
4131
|
-
*
|
|
4132
|
-
*
|
|
4133
|
-
*
|
|
4134
|
-
*
|
|
4135
|
-
*
|
|
4136
|
-
|
|
4137
|
-
|
|
4138
|
-
|
|
4139
|
-
|
|
4140
|
-
|
|
4141
|
-
|
|
4142
|
-
|
|
4143
|
-
|
|
4144
|
-
|
|
4145
|
-
|
|
4146
|
-
|
|
4147
|
-
|
|
4148
|
-
|
|
4149
|
-
|
|
4150
|
-
|
|
4151
|
-
|
|
4152
|
-
|
|
4153
|
-
|
|
4154
|
-
|
|
4155
|
-
|
|
4156
|
-
|
|
4157
|
-
|
|
4158
|
-
|
|
4159
|
-
|
|
4160
|
-
|
|
4161
|
-
|
|
4162
|
-
|
|
4163
|
-
|
|
4164
|
-
|
|
4132
|
+
* Full PowerPoint "File > Options" parity model.
|
|
4133
|
+
*
|
|
4134
|
+
* Groups mirror the ten categories of PowerPoint's Options dialog. Values are
|
|
4135
|
+
* flat primitives per group so the dialog panes can be rendered generically
|
|
4136
|
+
* from `VIEWER_OPTIONS_SCHEMA` in every binding. The legacy six-toggle
|
|
4137
|
+
* `ViewerPreferences` surface stays supported via the mapping helpers below.
|
|
4138
|
+
*/
|
|
4139
|
+
type ScreenTipStyle = 'descriptions' | 'plain' | 'off';
|
|
4140
|
+
type DisplayOptimization = 'appearance' | 'compatibility';
|
|
4141
|
+
type ImageResolutionPreset = 'highFidelity' | 'ppi330' | 'ppi220' | 'ppi150' | 'ppi96';
|
|
4142
|
+
type OpenDocumentsView = 'savedView' | 'normal' | 'outline' | 'slideSorter' | 'notes';
|
|
4143
|
+
type DefaultExportFormat = 'pptx' | 'pdf' | 'png';
|
|
4144
|
+
type QuickAccessPosition = 'above' | 'below';
|
|
4145
|
+
type FeedbackSoundScheme = 'modern' | 'classic';
|
|
4146
|
+
type OptionsPrintWhat = 'slides' | 'handouts' | 'notes' | 'outline';
|
|
4147
|
+
type OptionsPrintColorMode = 'color' | 'grayscale' | 'blackAndWhite';
|
|
4148
|
+
interface ViewerGeneralOptions {
|
|
4149
|
+
displayOptimization: DisplayOptimization;
|
|
4150
|
+
showMiniToolbar: boolean;
|
|
4151
|
+
enableLivePreview: boolean;
|
|
4152
|
+
collapseRibbonAutomatically: boolean;
|
|
4153
|
+
collapseSearchByDefault: boolean;
|
|
4154
|
+
screenTipStyle: ScreenTipStyle;
|
|
4155
|
+
userName: string;
|
|
4156
|
+
userInitials: string;
|
|
4157
|
+
showStartScreen: boolean;
|
|
4158
|
+
}
|
|
4159
|
+
interface ViewerProofingOptions {
|
|
4160
|
+
autoCorrectTwoInitialCapitals: boolean;
|
|
4161
|
+
autoCorrectCapitalizeFirstLetter: boolean;
|
|
4162
|
+
autoCorrectCapitalizeDayNames: boolean;
|
|
4163
|
+
autoCorrectSmartQuotes: boolean;
|
|
4164
|
+
autoCorrectHyphensToDash: boolean;
|
|
4165
|
+
autoCorrectFractions: boolean;
|
|
4166
|
+
autoCorrectOrdinals: boolean;
|
|
4167
|
+
ignoreUppercase: boolean;
|
|
4168
|
+
ignoreWordsWithNumbers: boolean;
|
|
4169
|
+
ignoreInternetAddresses: boolean;
|
|
4170
|
+
flagRepeatedWords: boolean;
|
|
4171
|
+
checkSpellingAsYouType: boolean;
|
|
4172
|
+
hideSpellingErrors: boolean;
|
|
4173
|
+
}
|
|
4174
|
+
interface ViewerSaveOptions {
|
|
4175
|
+
autoSave: boolean;
|
|
4176
|
+
autoRecoverIntervalMinutes: number;
|
|
4177
|
+
keepLastAutoRecoveredVersion: boolean;
|
|
4178
|
+
defaultExportFormat: DefaultExportFormat;
|
|
4179
|
+
embedFonts: boolean;
|
|
4180
|
+
embedAllFontCharacters: boolean;
|
|
4181
|
+
cacheRetentionDays: number;
|
|
4182
|
+
clearCacheOnClose: boolean;
|
|
4183
|
+
}
|
|
4184
|
+
interface ViewerAccessibilityOptions {
|
|
4185
|
+
showAccessibilityStatus: boolean;
|
|
4186
|
+
feedbackWithSound: boolean;
|
|
4187
|
+
soundScheme: FeedbackSoundScheme;
|
|
4188
|
+
showShortcutKeysInScreenTips: boolean;
|
|
4189
|
+
reducedMotion: boolean;
|
|
4165
4190
|
}
|
|
4166
|
-
|
|
4167
|
-
|
|
4168
|
-
|
|
4169
|
-
|
|
4170
|
-
|
|
4171
|
-
|
|
4172
|
-
|
|
4173
|
-
|
|
4174
|
-
|
|
4175
|
-
|
|
4176
|
-
|
|
4177
|
-
|
|
4178
|
-
|
|
4179
|
-
|
|
4180
|
-
|
|
4181
|
-
|
|
4182
|
-
|
|
4183
|
-
|
|
4184
|
-
|
|
4185
|
-
|
|
4186
|
-
|
|
4187
|
-
|
|
4188
|
-
|
|
4189
|
-
|
|
4190
|
-
|
|
4191
|
-
|
|
4192
|
-
|
|
4193
|
-
|
|
4194
|
-
|
|
4195
|
-
|
|
4191
|
+
interface ViewerAdvancedOptions {
|
|
4192
|
+
autoSelectEntireWord: boolean;
|
|
4193
|
+
allowTextDragAndDrop: boolean;
|
|
4194
|
+
maximumUndoSteps: number;
|
|
4195
|
+
useSmartCutAndPaste: boolean;
|
|
4196
|
+
showPasteOptionsButton: boolean;
|
|
4197
|
+
imageDefaultResolution: ImageResolutionPreset;
|
|
4198
|
+
doNotCompressImages: boolean;
|
|
4199
|
+
chartPropertiesFollowDataPoint: boolean;
|
|
4200
|
+
recentPresentationsCount: number;
|
|
4201
|
+
showVerticalRuler: boolean;
|
|
4202
|
+
showGrid: boolean;
|
|
4203
|
+
snapToGrid: boolean;
|
|
4204
|
+
disableHardwareAcceleration: boolean;
|
|
4205
|
+
openDocumentsView: OpenDocumentsView;
|
|
4206
|
+
slideShowShowMenuOnRightClick: boolean;
|
|
4207
|
+
slideShowShowPopupToolbar: boolean;
|
|
4208
|
+
slideShowPromptKeepInkAnnotations: boolean;
|
|
4209
|
+
slideShowEndWithBlackSlide: boolean;
|
|
4210
|
+
printInBackground: boolean;
|
|
4211
|
+
printHighQuality: boolean;
|
|
4212
|
+
printUseMostRecentSettings: boolean;
|
|
4213
|
+
printWhat: OptionsPrintWhat;
|
|
4214
|
+
printColorMode: OptionsPrintColorMode;
|
|
4215
|
+
printHiddenSlides: boolean;
|
|
4216
|
+
printScaleToFit: boolean;
|
|
4217
|
+
printFrameSlides: boolean;
|
|
4218
|
+
}
|
|
4219
|
+
interface ViewerRibbonOptions {
|
|
4220
|
+
/** Ribbon tabs unticked in Customize Ribbon. The File tab can never be hidden. */
|
|
4221
|
+
hiddenTabIds: ToolbarTabId[];
|
|
4222
|
+
}
|
|
4223
|
+
interface ViewerQuickAccessOptions {
|
|
4224
|
+
visible: boolean;
|
|
4225
|
+
position: QuickAccessPosition;
|
|
4226
|
+
showCommandLabels: boolean;
|
|
4227
|
+
/** Ordered ids from `QUICK_ACCESS_COMMAND_CATALOG`. */
|
|
4228
|
+
commandIds: string[];
|
|
4229
|
+
}
|
|
4230
|
+
interface ViewerTrustOptions {
|
|
4231
|
+
openInProtectedView: boolean;
|
|
4232
|
+
allowExternalContent: boolean;
|
|
4233
|
+
confirmExternalHyperlinks: boolean;
|
|
4234
|
+
}
|
|
4235
|
+
interface ViewerOptions {
|
|
4236
|
+
general: ViewerGeneralOptions;
|
|
4237
|
+
proofing: ViewerProofingOptions;
|
|
4238
|
+
save: ViewerSaveOptions;
|
|
4239
|
+
accessibility: ViewerAccessibilityOptions;
|
|
4240
|
+
advanced: ViewerAdvancedOptions;
|
|
4241
|
+
ribbon: ViewerRibbonOptions;
|
|
4242
|
+
quickAccess: ViewerQuickAccessOptions;
|
|
4243
|
+
trust: ViewerTrustOptions;
|
|
4244
|
+
}
|
|
4245
|
+
type ViewerOptionsGroupId = keyof ViewerOptions;
|
|
4246
|
+
type ViewerOptionPrimitive = boolean | number | string;
|
|
4247
|
+
|
|
4248
|
+
/**
|
|
4249
|
+
* Quick Access Toolbar command catalog and list-editing helpers, backing the
|
|
4250
|
+
* Options > Quick Access Toolbar pane and the title-bar QAT strip.
|
|
4251
|
+
*
|
|
4252
|
+
* Ids map onto actions every binding already exposes; each binding resolves
|
|
4253
|
+
* an id to its own icon + handler when rendering the strip.
|
|
4254
|
+
*/
|
|
4255
|
+
interface QuickAccessCommandDefinition {
|
|
4256
|
+
id: string;
|
|
4257
|
+
labelKey: string;
|
|
4258
|
+
/** Logical icon name bindings map to their icon set. */
|
|
4259
|
+
icon: string;
|
|
4196
4260
|
}
|
|
4197
|
-
|
|
4198
|
-
interface
|
|
4199
|
-
/**
|
|
4200
|
-
|
|
4201
|
-
* that does not carry its own {@link GifFrame.delayCs} override.
|
|
4202
|
-
* Default: 200 cs (2 s).
|
|
4203
|
-
*/
|
|
4204
|
-
delayCs?: number;
|
|
4205
|
-
/** Number of times the animation loops (0 = loop forever, default). */
|
|
4206
|
-
loopCount?: number;
|
|
4261
|
+
|
|
4262
|
+
interface ViewerAddinStatus {
|
|
4263
|
+
/** Addin id -> whether the capability is active in this host. */
|
|
4264
|
+
[addinId: string]: boolean | undefined;
|
|
4207
4265
|
}
|
|
4208
|
-
/**
|
|
4209
|
-
* Encode an ordered list of RGBA frames into an animated GIF89a byte sequence.
|
|
4210
|
-
*
|
|
4211
|
-
* Accepts either a bare `delayCs` number (React/Vue call style) or an
|
|
4212
|
-
* {@link EncodeGifOptions} object (Angular call style) as the second argument.
|
|
4213
|
-
*
|
|
4214
|
-
* @param frames Ordered frame descriptors (all must share identical dimensions).
|
|
4215
|
-
* @param delay Per-frame delay in centiseconds, or an options object.
|
|
4216
|
-
* @returns Raw GIF89a bytes.
|
|
4217
|
-
*/
|
|
4218
|
-
declare function encodeGif(frames: GifFrame[], delay?: number | EncodeGifOptions): Uint8Array;
|
|
4219
4266
|
|
|
4220
4267
|
/**
|
|
4221
4268
|
* Pure handout layout calculations, shared by every binding's print path.
|
|
@@ -4339,6 +4386,176 @@ interface PrintHtmlDocumentOptions {
|
|
|
4339
4386
|
*/
|
|
4340
4387
|
declare function buildPrintHtmlDocument(options: PrintHtmlDocumentOptions): string;
|
|
4341
4388
|
|
|
4389
|
+
/**
|
|
4390
|
+
* Control/section/tab descriptor types for the File > Options schema, plus
|
|
4391
|
+
* the terse constructors the tab-definition modules build panes with.
|
|
4392
|
+
*/
|
|
4393
|
+
type ViewerOptionsTabId = 'general' | 'proofing' | 'save' | 'language' | 'accessibility' | 'advanced' | 'ribbon' | 'quickAccess' | 'addIns' | 'trust';
|
|
4394
|
+
interface ViewerOptionsSelectChoice {
|
|
4395
|
+
value: string;
|
|
4396
|
+
labelKey: string;
|
|
4397
|
+
}
|
|
4398
|
+
interface ControlBase {
|
|
4399
|
+
group: ViewerOptionsGroupId;
|
|
4400
|
+
key: string;
|
|
4401
|
+
labelKey: string;
|
|
4402
|
+
/** Optional "(i)" tooltip body, mirroring PowerPoint's info bubbles. */
|
|
4403
|
+
infoKey?: string;
|
|
4404
|
+
/** Renders indented under the preceding control, PowerPoint-style. */
|
|
4405
|
+
indent?: boolean;
|
|
4406
|
+
}
|
|
4407
|
+
interface ViewerOptionsToggleControl extends ControlBase {
|
|
4408
|
+
kind: 'toggle';
|
|
4409
|
+
}
|
|
4410
|
+
interface ViewerOptionsSelectControl extends ControlBase {
|
|
4411
|
+
kind: 'select';
|
|
4412
|
+
choices: readonly ViewerOptionsSelectChoice[];
|
|
4413
|
+
}
|
|
4414
|
+
interface ViewerOptionsNumberControl extends ControlBase {
|
|
4415
|
+
kind: 'number';
|
|
4416
|
+
min: number;
|
|
4417
|
+
max: number;
|
|
4418
|
+
step?: number;
|
|
4419
|
+
unitKey?: string;
|
|
4420
|
+
}
|
|
4421
|
+
interface ViewerOptionsTextControl extends ControlBase {
|
|
4422
|
+
kind: 'text';
|
|
4423
|
+
maxLength?: number;
|
|
4424
|
+
}
|
|
4425
|
+
type ViewerOptionsControl = ViewerOptionsToggleControl | ViewerOptionsSelectControl | ViewerOptionsNumberControl | ViewerOptionsTextControl;
|
|
4426
|
+
interface ViewerOptionsSection {
|
|
4427
|
+
id: string;
|
|
4428
|
+
titleKey: string;
|
|
4429
|
+
/** Optional explanatory paragraph under the section title. */
|
|
4430
|
+
descriptionKey?: string;
|
|
4431
|
+
/** Marks a bespoke block a binding renders itself (e.g. the theme picker). */
|
|
4432
|
+
special?: 'themePicker' | 'clearCache' | 'shortcutReference';
|
|
4433
|
+
controls: readonly ViewerOptionsControl[];
|
|
4434
|
+
}
|
|
4435
|
+
interface ViewerOptionsTabDefinition {
|
|
4436
|
+
id: ViewerOptionsTabId;
|
|
4437
|
+
labelKey: string;
|
|
4438
|
+
/** Headline shown at the top of the pane. */
|
|
4439
|
+
descriptionKey: string;
|
|
4440
|
+
/** Pane needing a bespoke view instead of (or on top of) `sections`. */
|
|
4441
|
+
custom?: 'language' | 'ribbon' | 'quickAccess' | 'addIns';
|
|
4442
|
+
sections: readonly ViewerOptionsSection[];
|
|
4443
|
+
}
|
|
4444
|
+
|
|
4445
|
+
/**
|
|
4446
|
+
* Framework-neutral store behind the File > Options dialog.
|
|
4447
|
+
*
|
|
4448
|
+
* Holds a `ViewerOptions` snapshot, notifies subscribers on change, and
|
|
4449
|
+
* persists a sparse diff into the shared `pptx-viewer-prefs` localStorage
|
|
4450
|
+
* entry so choices survive reloads in every binding.
|
|
4451
|
+
*/
|
|
4452
|
+
type ViewerOptionsListener = (options: ViewerOptions) => void;
|
|
4453
|
+
interface ViewerOptionsStore {
|
|
4454
|
+
getOptions(): ViewerOptions;
|
|
4455
|
+
/** Replace the whole snapshot (e.g. hydrating from a host prop). */
|
|
4456
|
+
setOptions(next: ViewerOptions): void;
|
|
4457
|
+
/** Set one primitive value; ignores unknown keys and mismatched types. */
|
|
4458
|
+
setValue(group: ViewerOptionsGroupId, key: string, value: ViewerOptionPrimitive): void;
|
|
4459
|
+
getValue(group: ViewerOptionsGroupId, key: string): ViewerOptionPrimitive | undefined;
|
|
4460
|
+
/** Toggle a ribbon tab's visibility. The File tab is always kept visible. */
|
|
4461
|
+
setRibbonTabHidden(tabId: ToolbarTabId, hidden: boolean): void;
|
|
4462
|
+
setQuickAccessCommands(commandIds: readonly string[]): void;
|
|
4463
|
+
/** Reset every option (or one tab-group) back to defaults. */
|
|
4464
|
+
reset(group?: ViewerOptionsGroupId): void;
|
|
4465
|
+
subscribe(listener: ViewerOptionsListener): () => void;
|
|
4466
|
+
}
|
|
4467
|
+
|
|
4468
|
+
/**
|
|
4469
|
+
* Minimal GIF89a encoder (pure JS, no external dependency) plus pure
|
|
4470
|
+
* frame-planning helpers — shared by the React, Vue, and Angular bindings.
|
|
4471
|
+
*
|
|
4472
|
+
* The encoder uses median-cut colour quantisation (256 colours per frame) and
|
|
4473
|
+
* LZW compression. It carries no DOM/browser dependency — it operates on
|
|
4474
|
+
* pre-extracted `ImageData` objects — so each binding owns the rasterisation
|
|
4475
|
+
* (grabbing a canvas, calling `getImageData`) and the `Blob` wrapping, while
|
|
4476
|
+
* the byte encoding lives here once.
|
|
4477
|
+
*
|
|
4478
|
+
* No npm GIF library is depended on; this self-contained source replaces the
|
|
4479
|
+
* three previously-duplicated copies (React `export-gif-encoder.ts`, Vue
|
|
4480
|
+
* `gif-encoder.ts`, Angular `gif-export-helpers.ts`).
|
|
4481
|
+
*/
|
|
4482
|
+
/** A single GIF frame descriptor produced by the planning helpers. */
|
|
4483
|
+
interface GifFramePlan {
|
|
4484
|
+
/** 0-based slide index this frame corresponds to. */
|
|
4485
|
+
slideIndex: number;
|
|
4486
|
+
/** Frame delay in **centiseconds** (1 cs = 10 ms), as required by GIF89a. */
|
|
4487
|
+
delayCs: number;
|
|
4488
|
+
}
|
|
4489
|
+
/** Options controlling GIF frame planning. */
|
|
4490
|
+
interface GifPlanOptions {
|
|
4491
|
+
/** Total number of slides in the presentation. */
|
|
4492
|
+
totalSlides: number;
|
|
4493
|
+
/**
|
|
4494
|
+
* Duration each slide is shown, in **milliseconds** (default: 2000).
|
|
4495
|
+
* Per-slide overrides can be supplied via {@link slideTimingsMs}.
|
|
4496
|
+
*/
|
|
4497
|
+
slideDurationMs?: number;
|
|
4498
|
+
/**
|
|
4499
|
+
* Per-slide duration overrides in milliseconds (index maps to slide index).
|
|
4500
|
+
* When a slide's index is present here its value takes precedence over
|
|
4501
|
+
* {@link slideDurationMs}.
|
|
4502
|
+
*/
|
|
4503
|
+
slideTimingsMs?: number[];
|
|
4504
|
+
}
|
|
4505
|
+
/**
|
|
4506
|
+
* Compute the ordered list of {@link GifFramePlan} objects for a presentation.
|
|
4507
|
+
* All timing is derived here; nothing browser-specific is touched.
|
|
4508
|
+
*/
|
|
4509
|
+
declare function planGifFrames(opts: GifPlanOptions): GifFramePlan[];
|
|
4510
|
+
/**
|
|
4511
|
+
* Convert a slide duration in milliseconds to a GIF89a frame delay in
|
|
4512
|
+
* centiseconds (1 cs = 10 ms), clamped to a minimum of 1 cs.
|
|
4513
|
+
*/
|
|
4514
|
+
declare function msToFrameDelayCs(ms: number): number;
|
|
4515
|
+
/**
|
|
4516
|
+
* Clamp canvas/image dimensions so neither side exceeds `maxSide` pixels while
|
|
4517
|
+
* preserving the aspect ratio. When both dimensions are already within the
|
|
4518
|
+
* limit the original values are returned unchanged.
|
|
4519
|
+
*/
|
|
4520
|
+
declare function clampGifDimensions(width: number, height: number, maxSide?: number): {
|
|
4521
|
+
width: number;
|
|
4522
|
+
height: number;
|
|
4523
|
+
};
|
|
4524
|
+
/** A single animated-GIF frame: raw RGBA pixels plus its dimensions. */
|
|
4525
|
+
interface GifFrame {
|
|
4526
|
+
imageData: ImageData;
|
|
4527
|
+
width: number;
|
|
4528
|
+
height: number;
|
|
4529
|
+
/**
|
|
4530
|
+
* Optional per-frame delay in **centiseconds** (1 cs = 10 ms). When set it
|
|
4531
|
+
* overrides the encoder-level delay for this frame only, which is how
|
|
4532
|
+
* per-slide durations from {@link planGifFrames} flow into the encoder.
|
|
4533
|
+
*/
|
|
4534
|
+
delayCs?: number;
|
|
4535
|
+
}
|
|
4536
|
+
/** Options for {@link encodeGif}. */
|
|
4537
|
+
interface EncodeGifOptions {
|
|
4538
|
+
/**
|
|
4539
|
+
* Frame delay in **centiseconds** (1 cs = 10 ms). Applies to every frame
|
|
4540
|
+
* that does not carry its own {@link GifFrame.delayCs} override.
|
|
4541
|
+
* Default: 200 cs (2 s).
|
|
4542
|
+
*/
|
|
4543
|
+
delayCs?: number;
|
|
4544
|
+
/** Number of times the animation loops (0 = loop forever, default). */
|
|
4545
|
+
loopCount?: number;
|
|
4546
|
+
}
|
|
4547
|
+
/**
|
|
4548
|
+
* Encode an ordered list of RGBA frames into an animated GIF89a byte sequence.
|
|
4549
|
+
*
|
|
4550
|
+
* Accepts either a bare `delayCs` number (React/Vue call style) or an
|
|
4551
|
+
* {@link EncodeGifOptions} object (Angular call style) as the second argument.
|
|
4552
|
+
*
|
|
4553
|
+
* @param frames Ordered frame descriptors (all must share identical dimensions).
|
|
4554
|
+
* @param delay Per-frame delay in centiseconds, or an options object.
|
|
4555
|
+
* @returns Raw GIF89a bytes.
|
|
4556
|
+
*/
|
|
4557
|
+
declare function encodeGif(frames: GifFrame[], delay?: number | EncodeGifOptions): Uint8Array;
|
|
4558
|
+
|
|
4342
4559
|
/**
|
|
4343
4560
|
* Pure video (WebM) export planning helpers shared by every binding's video
|
|
4344
4561
|
* export. Frame-segment timing, fps -> frame-interval maths, and MediaRecorder
|
|
@@ -4707,6 +4924,20 @@ declare class CollaborationService {
|
|
|
4707
4924
|
* never overwrites the shared document before receiving it.
|
|
4708
4925
|
*/
|
|
4709
4926
|
seedBaseline(slides: readonly PptxSlide[]): void;
|
|
4927
|
+
/**
|
|
4928
|
+
* Re-adopt the shared document's slides after a local content load has been
|
|
4929
|
+
* committed to viewer state. The load pipeline applies its parsed deck
|
|
4930
|
+
* unconditionally, so a load that finishes AFTER the room's slides were
|
|
4931
|
+
* already applied (a late joiner's bootstrap deck parsing slower than the
|
|
4932
|
+
* doc sync) silently clobbers the synced state and, with the doc itself
|
|
4933
|
+
* unchanged, the remote observer never re-fires. When the room already has
|
|
4934
|
+
* slides they win: the doc content is re-applied through `onRemoteSlides`
|
|
4935
|
+
* and recorded as the sync baseline (bypassing the usual JSON dedupe) so
|
|
4936
|
+
* the follow-up local broadcast of the adopted deck is a no-op. An empty
|
|
4937
|
+
* room means this client is the seeder and the loaded deck stands, written
|
|
4938
|
+
* by the normal gated broadcast path. Returns true when the doc was adopted.
|
|
4939
|
+
*/
|
|
4940
|
+
adoptDocSlidesAfterLoad(): boolean;
|
|
4710
4941
|
broadcastSlides(slides: readonly PptxSlide[]): void;
|
|
4711
4942
|
setCursor(x: number, y: number, activeSlideIndex?: number): void;
|
|
4712
4943
|
setSelection(selectedElementId: string | undefined, activeSlideIndex?: number): void;
|
|
@@ -6320,6 +6551,56 @@ declare class ViewerMobileSheetService {
|
|
|
6320
6551
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ViewerMobileSheetService>;
|
|
6321
6552
|
}
|
|
6322
6553
|
|
|
6554
|
+
declare class ViewerOptionsService {
|
|
6555
|
+
/**
|
|
6556
|
+
* Optional: `inject()` needs an active injection context, which plain
|
|
6557
|
+
* `new ViewerOptionsService()` (used by the colocated unit tests) does not
|
|
6558
|
+
* provide. Outside DI the subscription simply lives as long as the instance.
|
|
6559
|
+
*/
|
|
6560
|
+
private readonly destroyRef;
|
|
6561
|
+
private readonly translate;
|
|
6562
|
+
/** Imperative store: hydrates from and persists to `pptx-viewer-prefs`. */
|
|
6563
|
+
readonly store: ViewerOptionsStore;
|
|
6564
|
+
private readonly _options;
|
|
6565
|
+
/** Reactive File > Options snapshot; a new object per change. */
|
|
6566
|
+
readonly options: _angular_core.Signal<ViewerOptions>;
|
|
6567
|
+
constructor();
|
|
6568
|
+
setValue(group: ViewerOptionsGroupId, key: string, value: ViewerOptionPrimitive): void;
|
|
6569
|
+
setRibbonTabHidden(tabId: ToolbarTabId, hidden: boolean): void;
|
|
6570
|
+
setQuickAccessCommands(commandIds: readonly string[]): void;
|
|
6571
|
+
reset(group?: ViewerOptionsGroupId): void;
|
|
6572
|
+
/** Restore a snapshot wholesale (the dialog's Cancel semantics). */
|
|
6573
|
+
restore(snapshot: ViewerOptions): void;
|
|
6574
|
+
/** Undo-stack depth for `new EditorHistory({ maxDepth })`. */
|
|
6575
|
+
historyDepth(): number;
|
|
6576
|
+
/** AutoRecover cadence in seconds for the autosave engine. */
|
|
6577
|
+
autosaveIntervalSeconds(): number;
|
|
6578
|
+
/** Print-dialog seed; `undefined` keeps the dialog's own recents. */
|
|
6579
|
+
printDefaults(): Partial<PrintSettings> | undefined;
|
|
6580
|
+
/** Option-driven CSS classes for the viewer root (`pptx-ng-*` prefixed). */
|
|
6581
|
+
rootClasses(): string[];
|
|
6582
|
+
/** Tooltip text under the current ScreenTip style (undefined = suppress). */
|
|
6583
|
+
screenTip(label: string, description?: string, shortcut?: string): string | undefined;
|
|
6584
|
+
/** Run the enabled AutoCorrect rules over a committed run of text. */
|
|
6585
|
+
autoCorrect(text: string): string;
|
|
6586
|
+
/** Play the Accessibility "feedback with sound" cue for a completed action. */
|
|
6587
|
+
playFeedback(): void;
|
|
6588
|
+
/** Whether Trust Center forces the deck to open read-only. */
|
|
6589
|
+
protectedView(): boolean;
|
|
6590
|
+
/**
|
|
6591
|
+
* Gate an external hyperlink activation. Returns `true` when navigation may
|
|
6592
|
+
* proceed (no confirmation required, or the user confirmed the prompt).
|
|
6593
|
+
*/
|
|
6594
|
+
confirmExternalHyperlink(href: string): boolean;
|
|
6595
|
+
/**
|
|
6596
|
+
* Options > Save > "Delete cached files": purge every autosave recovery
|
|
6597
|
+
* snapshot from the shared IndexedDB store. Resolves with the purge count.
|
|
6598
|
+
*/
|
|
6599
|
+
clearCache(): Promise<number>;
|
|
6600
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerOptionsService, never>;
|
|
6601
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ViewerOptionsService>;
|
|
6602
|
+
}
|
|
6603
|
+
|
|
6323
6604
|
/**
|
|
6324
6605
|
* presentation-annotations-helpers.ts: Pure geometry helpers for presentation
|
|
6325
6606
|
* ink annotations (pen, highlighter, eraser, laser).
|
|
@@ -6486,8 +6767,8 @@ declare class PowerPointViewerComponent {
|
|
|
6486
6767
|
readonly content: _angular_core.InputSignal<ArrayBuffer | Uint8Array<ArrayBufferLike> | null>;
|
|
6487
6768
|
/** Licensed fonts supplied by the host application. No fonts are bundled. */
|
|
6488
6769
|
readonly fontsInput: _angular_core.InputSignal<ViewerFontSource[]>;
|
|
6489
|
-
/** Whether editing actions are enabled
|
|
6490
|
-
readonly
|
|
6770
|
+
/** Whether editing actions are enabled (host input; see {@link canEdit}). */
|
|
6771
|
+
readonly canEditInput: _angular_core.InputSignal<boolean>;
|
|
6491
6772
|
/** Optional class applied to the root element. */
|
|
6492
6773
|
readonly class: _angular_core.InputSignal<string>;
|
|
6493
6774
|
/** Theme configuration for customising the viewer's appearance. Always wins over a File > Options > Appearance selection; see {@link defaultThemeKey}. */
|
|
@@ -6612,6 +6893,7 @@ declare class PowerPointViewerComponent {
|
|
|
6612
6893
|
protected readonly presenterWindow: PresenterWindowService;
|
|
6613
6894
|
private readonly destroyRef;
|
|
6614
6895
|
protected readonly dialogs: ViewerDialogsService;
|
|
6896
|
+
protected readonly viewerOpts: ViewerOptionsService;
|
|
6615
6897
|
private readonly compareSvc;
|
|
6616
6898
|
protected readonly xport: ViewerExportService;
|
|
6617
6899
|
protected readonly findReplace: ViewerFindReplaceService;
|
|
@@ -6636,6 +6918,12 @@ declare class PowerPointViewerComponent {
|
|
|
6636
6918
|
private readonly encryptedNotice;
|
|
6637
6919
|
/** The `<main>` host; used to locate the live `.pptx-ng-canvas-stage`. */
|
|
6638
6920
|
private readonly mainEl;
|
|
6921
|
+
/**
|
|
6922
|
+
* Effective edit permission: the host's `canEdit` input gated by Trust
|
|
6923
|
+
* Center > "Open presentations in Protected View", which forces the deck
|
|
6924
|
+
* read-only while enabled (File > Options wiring, mirrors PowerPoint).
|
|
6925
|
+
*/
|
|
6926
|
+
protected readonly canEdit: _angular_core.Signal<boolean>;
|
|
6639
6927
|
protected readonly activeSlideIndex: _angular_core.WritableSignal<number>;
|
|
6640
6928
|
/** Slides to display: the editable deck when `canEdit`, else the loaded deck. */
|
|
6641
6929
|
protected readonly displaySlides: _angular_core.Signal<readonly PptxSlide[]>;
|
|
@@ -6721,8 +7009,17 @@ declare class PowerPointViewerComponent {
|
|
|
6721
7009
|
protected readonly spellCheck: _angular_core.WritableSignal<boolean>;
|
|
6722
7010
|
/** User override that suppresses viewer animations and transitions. */
|
|
6723
7011
|
protected readonly reducedMotion: _angular_core.WritableSignal<boolean>;
|
|
6724
|
-
/**
|
|
7012
|
+
/**
|
|
7013
|
+
* The six legacy preference toggles as a snapshot, kept in a guarded
|
|
7014
|
+
* two-way sync with the File > Options store (see the constructor).
|
|
7015
|
+
*/
|
|
6725
7016
|
protected readonly viewerSettings: _angular_core.Signal<ViewerPreferences>;
|
|
7017
|
+
/**
|
|
7018
|
+
* Root class list: the host `class` input, the reduced-motion override, and
|
|
7019
|
+
* the option-driven display classes (`resolveOptionRootClasses`, so e.g.
|
|
7020
|
+
* hardware-acceleration and compatibility-display choices are styleable).
|
|
7021
|
+
*/
|
|
7022
|
+
protected readonly rootClasses: _angular_core.Signal<string[]>;
|
|
6726
7023
|
/** Whether the Insert SmartArt gallery dialog is open. */
|
|
6727
7024
|
protected readonly showSmartArtInsert: _angular_core.WritableSignal<boolean>;
|
|
6728
7025
|
/** The single selected element on the active slide (for the inspector). */
|
|
@@ -6841,8 +7138,10 @@ declare class PowerPointViewerComponent {
|
|
|
6841
7138
|
protected addGuide(axis: 'x' | 'y'): void;
|
|
6842
7139
|
/** Swap the deck for a restored version-history snapshot. */
|
|
6843
7140
|
protected onRestoreVersion(bytes: Uint8Array): void;
|
|
6844
|
-
/** Apply
|
|
6845
|
-
|
|
7141
|
+
/** Apply one legacy preference snapshot onto the scattered live signals. */
|
|
7142
|
+
private applyPreferenceSnapshot;
|
|
7143
|
+
/** Dispatch a Quick Access Toolbar command id to its existing handler. */
|
|
7144
|
+
protected onQuickAccessCommand(id: string): void;
|
|
6846
7145
|
/**
|
|
6847
7146
|
* Mobile "Format" slot: surface the inspector for the current selection.
|
|
6848
7147
|
* On mobile the format pane starts closed (React parity: the canvas owns
|
|
@@ -6877,7 +7176,7 @@ declare class PowerPointViewerComponent {
|
|
|
6877
7176
|
/** Resolve the live slide-stage element within `<main>`. */
|
|
6878
7177
|
private stageElement;
|
|
6879
7178
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PowerPointViewerComponent, never>;
|
|
6880
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PowerPointViewerComponent, "pptx-viewer", never, { "content": { "alias": "content"; "required": false; "isSignal": true; }; "fontsInput": { "alias": "fonts"; "required": false; "isSignal": true; }; "
|
|
7179
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PowerPointViewerComponent, "pptx-viewer", never, { "content": { "alias": "content"; "required": false; "isSignal": true; }; "fontsInput": { "alias": "fonts"; "required": false; "isSignal": true; }; "canEditInput": { "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>;
|
|
6881
7180
|
}
|
|
6882
7181
|
|
|
6883
7182
|
/** A selected chart sub-part, scoped to the chart element that owns it. */
|
|
@@ -7232,7 +7531,7 @@ declare class ZoomTargetService {
|
|
|
7232
7531
|
* `PowerPointViewerComponent`'s children (ribbon, slide canvas, inspector,
|
|
7233
7532
|
* dialogs, ...) rely on via `inject()`.
|
|
7234
7533
|
*/
|
|
7235
|
-
declare const POWER_POINT_VIEWER_PROVIDERS: readonly [typeof LoadContentService, typeof ExportService, typeof EditorStateService, typeof ChartPartSelectionService, typeof TableSelectionService, typeof EmbeddedFontsService, typeof CollaborationService, typeof AccessibilityService, typeof AutosaveService, typeof PrintService, typeof IsMobileService, typeof SmartArt3DService, typeof FieldContextService, typeof ZoomTargetService, typeof ViewerDialogsService, typeof ViewerCompareService, typeof ViewerExportService, typeof ViewerFindReplaceService, typeof ViewerCustomShowsService, typeof ViewerCollaborationSessionService, typeof ViewerCanvasEditingService, typeof ViewerCollabCursorService, typeof ViewerDocumentPropertiesService, typeof ViewerFileIOService, typeof ViewerFormatPainterService, typeof ViewerInspectorPanelService, typeof ViewerKeyboardService, typeof ViewerMobileSheetService, typeof ViewerPresentationModeService, typeof ViewerThemeGalleryService, typeof ViewerTouchGesturesService, typeof ViewerZoomService];
|
|
7534
|
+
declare const POWER_POINT_VIEWER_PROVIDERS: readonly [typeof LoadContentService, typeof ExportService, typeof EditorStateService, typeof ChartPartSelectionService, typeof TableSelectionService, typeof EmbeddedFontsService, typeof CollaborationService, typeof AccessibilityService, typeof AutosaveService, typeof PrintService, typeof IsMobileService, typeof SmartArt3DService, typeof FieldContextService, typeof ZoomTargetService, typeof ViewerDialogsService, typeof ViewerCompareService, typeof ViewerExportService, typeof ViewerFindReplaceService, typeof ViewerCustomShowsService, typeof ViewerCollaborationSessionService, typeof ViewerCanvasEditingService, typeof ViewerCollabCursorService, typeof ViewerDocumentPropertiesService, typeof ViewerFileIOService, typeof ViewerFormatPainterService, typeof ViewerInspectorPanelService, typeof ViewerKeyboardService, typeof ViewerMobileSheetService, typeof ViewerOptionsService, typeof ViewerPresentationModeService, typeof ViewerThemeGalleryService, typeof ViewerTouchGesturesService, typeof ViewerZoomService];
|
|
7236
7535
|
|
|
7237
7536
|
/** Drawing tool IDs (mirrors React DRAW_TOOLS). */
|
|
7238
7537
|
type DrawTool$1 = 'select' | 'pen' | 'highlighter' | 'eraser' | 'freeform';
|
|
@@ -11632,19 +11931,16 @@ declare class ViewerExtraDialogsComponent {
|
|
|
11632
11931
|
readonly filePath: _angular_core.InputSignal<string | undefined>;
|
|
11633
11932
|
/** Custom shows offered in the set-up-slide-show "show slides" fieldset. */
|
|
11634
11933
|
readonly customShows: _angular_core.InputSignal<PptxCustomShow[]>;
|
|
11635
|
-
/** Live viewer preferences surfaced by the settings dialog. */
|
|
11636
|
-
readonly settings: _angular_core.InputSignal<ViewerPreferences>;
|
|
11637
11934
|
readonly themeKey: _angular_core.InputSignal<string>;
|
|
11638
11935
|
readonly availableThemes: _angular_core.InputSignal<readonly ThemeCatalogEntry[]>;
|
|
11639
11936
|
readonly localeCode: _angular_core.InputSignal<string>;
|
|
11640
11937
|
readonly availableLocales: _angular_core.InputSignal<readonly LocaleCatalogEntry[]>;
|
|
11641
11938
|
/** Fired with a restored `.pptx` version's bytes; the host swaps the deck. */
|
|
11642
11939
|
readonly restoreContent: _angular_core.OutputEmitterRef<Uint8Array<ArrayBufferLike>>;
|
|
11643
|
-
/** Fired whenever a settings toggle changes. */
|
|
11644
|
-
readonly settingsChange: _angular_core.OutputEmitterRef<ViewerPreferences>;
|
|
11645
11940
|
readonly themeKeySelect: _angular_core.OutputEmitterRef<string>;
|
|
11646
11941
|
readonly localeSelect: _angular_core.OutputEmitterRef<string>;
|
|
11647
11942
|
protected readonly svc: ViewerDialogsService;
|
|
11943
|
+
protected readonly viewerOpts: ViewerOptionsService;
|
|
11648
11944
|
protected readonly compare: ViewerCompareService;
|
|
11649
11945
|
protected readonly editor: EditorStateService;
|
|
11650
11946
|
protected readonly loader: LoadContentService;
|
|
@@ -11667,6 +11963,8 @@ declare class ViewerExtraDialogsComponent {
|
|
|
11667
11963
|
promptKeepAnnotations(map: SlideAnnotationMap): void;
|
|
11668
11964
|
/** Persist the pending presentation ink as `ink` elements on their slides. */
|
|
11669
11965
|
onKeepAnnotations(): void;
|
|
11966
|
+
/** Options > Save > "Delete cached files": purge autosave recovery snapshots. */
|
|
11967
|
+
protected onClearOptionsCache(): void;
|
|
11670
11968
|
/** Drop the pending presentation ink. */
|
|
11671
11969
|
onDiscardAnnotations(): void;
|
|
11672
11970
|
/** Insert a new equation element, or update the one currently being edited. */
|
|
@@ -11678,7 +11976,7 @@ declare class ViewerExtraDialogsComponent {
|
|
|
11678
11976
|
/** Clear any save password. */
|
|
11679
11977
|
onRemovePassword(): void;
|
|
11680
11978
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerExtraDialogsComponent, never>;
|
|
11681
|
-
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; }; "
|
|
11979
|
+
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; }; "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"; "themeKeySelect": "themeKeySelect"; "localeSelect": "localeSelect"; }, never, never, true, never>;
|
|
11682
11980
|
}
|
|
11683
11981
|
|
|
11684
11982
|
declare class EquationEditorDialogComponent {
|
|
@@ -12058,29 +12356,55 @@ declare class ShortcutPanelComponent {
|
|
|
12058
12356
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ShortcutPanelComponent, "pptx-shortcut-panel", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "close": "close"; }, never, never, true, never>;
|
|
12059
12357
|
}
|
|
12060
12358
|
|
|
12359
|
+
/** One dialog-level option edit (group + key + new primitive value). */
|
|
12360
|
+
interface OptionValueChange {
|
|
12361
|
+
group: ViewerOptionsGroupId;
|
|
12362
|
+
key: string;
|
|
12363
|
+
value: ViewerOptionPrimitive;
|
|
12364
|
+
}
|
|
12365
|
+
|
|
12366
|
+
/** One Customize Ribbon checkbox edit. */
|
|
12367
|
+
interface RibbonTabHiddenChange {
|
|
12368
|
+
tabId: ToolbarTabId;
|
|
12369
|
+
hidden: boolean;
|
|
12370
|
+
}
|
|
12371
|
+
|
|
12061
12372
|
declare class SettingsDialogComponent {
|
|
12062
12373
|
readonly open: _angular_core.InputSignal<boolean>;
|
|
12063
|
-
|
|
12064
|
-
|
|
12374
|
+
/** Full File > Options snapshot rendered by every pane. */
|
|
12375
|
+
readonly options: _angular_core.InputSignal<ViewerOptions>;
|
|
12376
|
+
/** Selected theme catalog key, for General > Appearance. */
|
|
12065
12377
|
readonly themeKey: _angular_core.InputSignal<string>;
|
|
12066
|
-
/** Theme choices offered by the Appearance tab. Defaults to the built-in `THEME_CATALOG`. */
|
|
12067
12378
|
readonly availableThemes: _angular_core.InputSignal<readonly ThemeCatalogEntry[]>;
|
|
12068
|
-
/** Active locale code, for the Language
|
|
12379
|
+
/** Active locale code, for the Language category. */
|
|
12069
12380
|
readonly localeCode: _angular_core.InputSignal<string>;
|
|
12070
|
-
/** Locale choices offered by the Language tab. Defaults to the built-in `LOCALE_CATALOG`. */
|
|
12071
12381
|
readonly availableLocales: _angular_core.InputSignal<readonly LocaleCatalogEntry[]>;
|
|
12072
|
-
|
|
12073
|
-
|
|
12382
|
+
/** Availability flags for the Add-ins pane (unset ids default to active). */
|
|
12383
|
+
readonly addinStatus: _angular_core.InputSignal<ViewerAddinStatus | undefined>;
|
|
12384
|
+
readonly optionChange: _angular_core.OutputEmitterRef<OptionValueChange>;
|
|
12385
|
+
/** Restore a snapshot wholesale (Cancel semantics). */
|
|
12386
|
+
readonly restoreOptions: _angular_core.OutputEmitterRef<ViewerOptions>;
|
|
12387
|
+
readonly ribbonTabHiddenChange: _angular_core.OutputEmitterRef<RibbonTabHiddenChange>;
|
|
12388
|
+
readonly quickAccessCommandsChange: _angular_core.OutputEmitterRef<string[]>;
|
|
12389
|
+
/** Reset one tab-group (or everything when `undefined`). */
|
|
12390
|
+
readonly resetOptions: _angular_core.OutputEmitterRef<keyof ViewerOptions | undefined>;
|
|
12391
|
+
readonly clearCache: _angular_core.OutputEmitterRef<void>;
|
|
12074
12392
|
readonly themeKeySelect: _angular_core.OutputEmitterRef<string>;
|
|
12075
|
-
/** Fired when the user picks a Language tab entry. */
|
|
12076
12393
|
readonly localeSelect: _angular_core.OutputEmitterRef<string>;
|
|
12077
12394
|
readonly close: _angular_core.OutputEmitterRef<void>;
|
|
12078
|
-
protected readonly
|
|
12079
|
-
protected readonly
|
|
12080
|
-
protected readonly
|
|
12081
|
-
|
|
12395
|
+
protected readonly tabs: readonly ViewerOptionsTabDefinition[];
|
|
12396
|
+
protected readonly activeTabId: _angular_core.WritableSignal<ViewerOptionsTabId>;
|
|
12397
|
+
protected readonly activeTab: _angular_core.Signal<ViewerOptionsTabDefinition>;
|
|
12398
|
+
/** Snapshot taken when the dialog opens, restored by Cancel. */
|
|
12399
|
+
private snapshot;
|
|
12400
|
+
private wasOpen;
|
|
12401
|
+
constructor();
|
|
12402
|
+
/** Cancel: restore the on-open snapshot, then close. */
|
|
12403
|
+
protected cancel(): void;
|
|
12404
|
+
/** Escape confirms (keeps edits), mirroring React's dialog. */
|
|
12405
|
+
protected onEscape(): void;
|
|
12082
12406
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SettingsDialogComponent, never>;
|
|
12083
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SettingsDialogComponent, "pptx-settings-dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "
|
|
12407
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SettingsDialogComponent, "pptx-settings-dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "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; }; "addinStatus": { "alias": "addinStatus"; "required": false; "isSignal": true; }; }, { "optionChange": "optionChange"; "restoreOptions": "restoreOptions"; "ribbonTabHiddenChange": "ribbonTabHiddenChange"; "quickAccessCommandsChange": "quickAccessCommandsChange"; "resetOptions": "resetOptions"; "clearCache": "clearCache"; "themeKeySelect": "themeKeySelect"; "localeSelect": "localeSelect"; "close": "close"; }, never, never, true, never>;
|
|
12084
12408
|
}
|
|
12085
12409
|
|
|
12086
12410
|
declare class SettingsAppearanceTabComponent {
|
|
@@ -12105,7 +12429,7 @@ declare class AccountPageComponent {
|
|
|
12105
12429
|
readonly accountAuth: _angular_core.InputSignal<AccountAuthConfig | undefined>;
|
|
12106
12430
|
private readonly translate;
|
|
12107
12431
|
protected readonly swatches: readonly string[];
|
|
12108
|
-
protected readonly version = "1.
|
|
12432
|
+
protected readonly version = "1.30.1";
|
|
12109
12433
|
protected readonly profile: _angular_core.WritableSignal<ViewerProfile>;
|
|
12110
12434
|
protected readonly initial: _angular_core.Signal<string>;
|
|
12111
12435
|
protected readonly usage: _angular_core.WritableSignal<LocalStorageUsageSummary | null>;
|
|
@@ -14668,10 +14992,14 @@ declare class TitleBarComponent {
|
|
|
14668
14992
|
readonly findReplaceOpen: _angular_core.InputSignal<boolean>;
|
|
14669
14993
|
/** Toolbar buttons the host wants hidden (gates Undo/Redo independently). */
|
|
14670
14994
|
readonly hiddenActions: _angular_core.InputSignal<ToolbarActionId[]>;
|
|
14995
|
+
/** Live Quick Access Toolbar options (File > Options > Quick Access). */
|
|
14996
|
+
readonly quickAccess: _angular_core.InputSignal<ViewerQuickAccessOptions | null>;
|
|
14671
14997
|
readonly toggleAutosave: _angular_core.OutputEmitterRef<void>;
|
|
14672
14998
|
readonly save: _angular_core.OutputEmitterRef<void>;
|
|
14673
14999
|
readonly undo: _angular_core.OutputEmitterRef<void>;
|
|
14674
15000
|
readonly redo: _angular_core.OutputEmitterRef<void>;
|
|
15001
|
+
/** A configured Quick Access command was pressed (catalog id). */
|
|
15002
|
+
readonly quickCommand: _angular_core.OutputEmitterRef<string>;
|
|
14675
15003
|
readonly toggleFindReplace: _angular_core.OutputEmitterRef<void>;
|
|
14676
15004
|
readonly commandSearch: _angular_core.OutputEmitterRef<string>;
|
|
14677
15005
|
private readonly translate;
|
|
@@ -14704,6 +15032,20 @@ declare class TitleBarComponent {
|
|
|
14704
15032
|
protected readonly toolbar: ToolbarVisibility;
|
|
14705
15033
|
protected readonly searchQuery: _angular_core.WritableSignal<string>;
|
|
14706
15034
|
protected readonly searchFocused: _angular_core.WritableSignal<boolean>;
|
|
15035
|
+
/** Resolved Quick Access options (host-supplied, or the default trio+). */
|
|
15036
|
+
protected readonly qat: _angular_core.Signal<ViewerQuickAccessOptions>;
|
|
15037
|
+
/**
|
|
15038
|
+
* Configured Quick Access commands beyond the dedicated save/undo/redo
|
|
15039
|
+
* buttons (which keep their own gating + labels). Rendered as text-label
|
|
15040
|
+
* buttons routed through {@link onQuickCommand}.
|
|
15041
|
+
*/
|
|
15042
|
+
protected readonly extraQuickCommands: _angular_core.Signal<QuickAccessCommandDefinition[]>;
|
|
15043
|
+
/**
|
|
15044
|
+
* Route a Quick Access press: keep the dedicated save/undo/redo outputs
|
|
15045
|
+
* (existing host wiring, `hiddenActions` gating) and forward everything
|
|
15046
|
+
* else through the generic {@link quickCommand} output.
|
|
15047
|
+
*/
|
|
15048
|
+
protected onQuickCommand(id: string): void;
|
|
14707
15049
|
protected readonly commandResults: _angular_core.Signal<CommandSearchEntry[]>;
|
|
14708
15050
|
/** The i18n key for the save-location status text (next to the file name). */
|
|
14709
15051
|
protected readonly statusKey: _angular_core.Signal<string>;
|
|
@@ -14714,7 +15056,7 @@ declare class TitleBarComponent {
|
|
|
14714
15056
|
protected onSearchBlur(): void;
|
|
14715
15057
|
protected onSearchKeyDown(event: KeyboardEvent): void;
|
|
14716
15058
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TitleBarComponent, never>;
|
|
14717
|
-
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>;
|
|
15059
|
+
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; }; "quickAccess": { "alias": "quickAccess"; "required": false; "isSignal": true; }; }, { "toggleAutosave": "toggleAutosave"; "save": "save"; "undo": "undo"; "redo": "redo"; "quickCommand": "quickCommand"; "toggleFindReplace": "toggleFindReplace"; "commandSearch": "commandSearch"; }, never, never, true, never>;
|
|
14718
15060
|
}
|
|
14719
15061
|
|
|
14720
15062
|
/**
|