pptx-svelte-viewer 4.26.0 → 4.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.
- package/CHANGELOG.md +35 -0
- package/dist/{AiChatPanel-DYLU7_DQ.js → AiChatPanel-BPHlD__Q.js} +47 -46
- package/dist/{UTIF-iSwpkksm.js → UTIF-sETUHJsd.js} +1 -1
- package/dist/export-C2-95xUb.js +29380 -0
- package/dist/i18n.d.ts +3 -44
- package/dist/i18n.js +9 -8
- package/dist/index.d.ts +8 -2854
- package/dist/index.js +52 -52
- package/dist/internals.d.ts +5 -1554
- package/dist/internals.js +25 -24
- package/dist/transition-overlay-C8b2R8nE.js +153784 -0
- package/dist/translator-2U8GG-ce.js +32 -0
- package/dist/viewer/index.d.ts +14 -4224
- package/dist/viewer/index.js +16 -16
- package/dist/{y-webrtc-DPABhqQq.js → y-webrtc-cC77K9vR.js} +3 -3
- package/package.json +4 -5
- package/dist/GLTFLoader-cXVvZ-Qt.js +0 -1429
- package/dist/OrbitControls-Dj3MmTu8.js +0 -450
- package/dist/export-iyQ8bG1f.js +0 -140583
- package/dist/rolldown-runtime--eTHp1Qs.js +0 -20
- package/dist/smartart-layouts-YQN30k2p.js +0 -2157
- package/dist/three.module-BP1MPwgf.js +0 -23177
- package/dist/transition-overlay-BkW9yQMT.js +0 -273918
- package/dist/translator-DwgZZEZm.js +0 -4070
package/dist/internals.d.ts
CHANGED
|
@@ -1,1557 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CanvasSize } from 'ooxml-ui/pptx';
|
|
2
|
+
export { CINEMATIC_TRANSITION_KEYFRAMES, DEFAULT_MORPH_DURATION_MS, DEFAULT_TRANSITION_DURATION_MS, EASE, INSTANT, P14_TRANSITION_KEYFRAMES, P14_TRANSITION_KEYFRAMES_2, P14_TRANSITION_KEYFRAMES_ALL, RANDOM_ELIGIBLE_TYPES, ResolvedDirection, ResolvedDirection8, SLIDE_TRANSITION_KEYFRAMES, SLIDE_TRANSITION_KEYFRAMES_CSS, SlideTransitionAnimations, TRANSITION_SPEED_DURATION_MS, WHEEL_SPOKE_COUNTS, getCinematicTransitionAnimations, getP14TransitionAnimations, getSlideTransitionAnimations, resolveDirection, resolveDirection8, resolveOrientation, resolveSlideTransition, resolveTransitionDurationMs, resolveWheelSpokeCount } from 'ooxml-ui/pptx';
|
|
3
|
+
import { PptxSlide, PptxSlideTransition } from 'ooxml-core/pptx';
|
|
2
4
|
import { Component } from 'svelte';
|
|
3
5
|
|
|
4
|
-
//#endregion
|
|
5
|
-
//#region src/types.d.ts
|
|
6
|
-
/** Canvas dimensions in pixels. */
|
|
7
|
-
interface CanvasSize {
|
|
8
|
-
width: number;
|
|
9
|
-
height: number;
|
|
10
|
-
}
|
|
11
|
-
//#endregion
|
|
12
|
-
//#region src/render/slide-transition-types.d.ts
|
|
13
|
-
/** Resolved CSS `animation` shorthands for the two transition layers. */
|
|
14
|
-
interface SlideTransitionAnimations {
|
|
15
|
-
/** CSS `animation` value for the outgoing (old) slide layer, or `'none'`. */
|
|
16
|
-
outgoing: string;
|
|
17
|
-
/** CSS `animation` value for the incoming (new) slide layer, or `'none'`. */
|
|
18
|
-
incoming: string;
|
|
19
|
-
/** Whether the outgoing layer should render above the incoming layer. */
|
|
20
|
-
outgoingOnTop: boolean;
|
|
21
|
-
}
|
|
22
|
-
/** The four cardinal directions a transition can resolve to. */
|
|
23
|
-
type ResolvedDirection = 'left' | 'right' | 'up' | 'down';
|
|
24
|
-
/** Cardinal directions plus the four diagonals (for cover/uncover/strips). */
|
|
25
|
-
type ResolvedDirection8 = ResolvedDirection | 'lu' | 'ld' | 'ru' | 'rd';
|
|
26
|
-
/** Map an OOXML `dir` token (`l`/`r`/`u`/`d`) to a cardinal direction. */
|
|
27
|
-
declare function resolveDirection(direction: string | undefined, defaultDir: ResolvedDirection): ResolvedDirection;
|
|
28
|
-
/** Map an OOXML `dir` token to a cardinal **or diagonal** direction. */
|
|
29
|
-
declare function resolveDirection8(direction: string | undefined, defaultDir: ResolvedDirection): ResolvedDirection8;
|
|
30
|
-
/** Resolve an orientation from the `orient` or `direction` attribute. */
|
|
31
|
-
declare function resolveOrientation(direction: string | undefined, orient: string | undefined): 'horz' | 'vert';
|
|
32
|
-
/** Transition types eligible for `random` selection (kept deterministic-light). */
|
|
33
|
-
declare const RANDOM_ELIGIBLE_TYPES: readonly PptxTransitionType[];
|
|
34
|
-
/** No-animation sentinel — used for `none`/`cut` (instant slide swap). */
|
|
35
|
-
declare const INSTANT: SlideTransitionAnimations;
|
|
36
|
-
/**
|
|
37
|
-
* Default transition duration (ms) when the transition omits `durationMs`. This
|
|
38
|
-
* is the React/Vue default consumed by `resolveSlideTransition`. The Angular
|
|
39
|
-
* binding uses its own (smaller, floored) duration policy.
|
|
40
|
-
*/
|
|
41
|
-
declare const DEFAULT_TRANSITION_DURATION_MS = 1000;
|
|
42
|
-
/**
|
|
43
|
-
* Default Morph duration (ms) for a transition that declares NEITHER an
|
|
44
|
-
* explicit `p14:dur` (which lands in `durationMs` and always wins) NOR a legacy
|
|
45
|
-
* `spd` speed (see {@link TRANSITION_SPEED_DURATION_MS}).
|
|
46
|
-
*
|
|
47
|
-
* A Morph that declares nothing carries no duration hint at all, and desktop
|
|
48
|
-
* PowerPoint then plays it at its own 0.5s fallback (the Duration box shows
|
|
49
|
-
* 0.50 for such slides and the transition measures at half a second); the
|
|
50
|
-
* previous 1.0s/2.0s defaults made those decks play at double PowerPoint
|
|
51
|
-
* speed.
|
|
52
|
-
*/
|
|
53
|
-
declare const DEFAULT_MORPH_DURATION_MS = 500;
|
|
54
|
-
/**
|
|
55
|
-
* Duration (ms) for each legacy `p:transition/@spd` speed.
|
|
56
|
-
*
|
|
57
|
-
* Measured against PowerPoint itself: the issue #131 deck's morph slides carry
|
|
58
|
-
* `spd="slow"` and no `p14:dur`, and PowerPoint reports
|
|
59
|
-
* `SlideShowTransition.Duration = 1.0`. Re-authoring that attribute and
|
|
60
|
-
* re-reading it through COM gives fast=0.5s, med=0.75s, slow=1.0s - and the
|
|
61
|
-
* same values for Morph as for every other effect, contradicting the earlier
|
|
62
|
-
* assumption that Morph ignores `spd`.
|
|
63
|
-
*/
|
|
64
|
-
declare const TRANSITION_SPEED_DURATION_MS: Readonly<Record<string, number>>;
|
|
65
|
-
/** Easing applied to every transition animation. */
|
|
66
|
-
declare const EASE = "ease-in-out";
|
|
67
|
-
/**
|
|
68
|
-
* `p:wheel/@spokes` (CT_WheelTransition): PowerPoint's Wheel dialog offers
|
|
69
|
-
* exactly these five spoke counts. Any other authored value (or absence, the
|
|
70
|
-
* schema default) snaps to the nearest one so the keyframe lookup always
|
|
71
|
-
* resolves to a real `pptx-tr-wheel-in-N` block.
|
|
72
|
-
*/
|
|
73
|
-
declare const WHEEL_SPOKE_COUNTS: readonly number[];
|
|
74
|
-
/** Resolve an authored `spokes` count to the nearest PowerPoint-offered value. */
|
|
75
|
-
declare function resolveWheelSpokeCount(spokes: number | undefined): number;
|
|
76
|
-
//#endregion
|
|
77
|
-
//#region src/render/slide-transition-keyframes.d.ts
|
|
78
|
-
/**
|
|
79
|
-
* `slide-transition-keyframes` — the full `@keyframes` block backing every
|
|
80
|
-
* resolved slide transition. Inject it once per overlay via a `<style>` element
|
|
81
|
-
* (the same pattern the element-animation engine uses for
|
|
82
|
-
* `ANIMATION_KEYFRAMES_CSS`).
|
|
83
|
-
*
|
|
84
|
-
* Keyframe names are `pptx-tr-*`-prefixed so they never collide with the
|
|
85
|
-
* element-animation keyframes (`pptx-vue-*`) or the native-animation timeline
|
|
86
|
-
* keyframes (`pptx-tl-*`).
|
|
87
|
-
*
|
|
88
|
-
* Both {@link SLIDE_TRANSITION_KEYFRAMES} and the `*_CSS` alias point at the
|
|
89
|
-
* same string — the bindings historically exported it under both names, so the
|
|
90
|
-
* alias preserves their public surface.
|
|
91
|
-
*
|
|
92
|
-
* The faithful Office 2010 (`p14`) keyframes are appended (via
|
|
93
|
-
* {@link P14_TRANSITION_KEYFRAMES_ALL}) so the exotic / 3-D transitions routed
|
|
94
|
-
* through `getP14TransitionAnimations` animate wherever this block is injected,
|
|
95
|
-
* with no per-binding wiring. {@link FRAGMENT_TRANSITION_KEYFRAMES} is appended
|
|
96
|
-
* last, backing the seven multi-fragment cinematic presets resolved by
|
|
97
|
-
* `getFragmentedTransitionDescriptor` (`slide-transition-fragments.ts`).
|
|
98
|
-
*
|
|
99
|
-
* @module render/slide-transition-keyframes
|
|
100
|
-
*/
|
|
101
|
-
/**
|
|
102
|
-
* The full slide-transition `@keyframes` block: the classic set plus the
|
|
103
|
-
* faithful Office 2010 (`p14`) keyframes, so both the classic and exotic / 3-D
|
|
104
|
-
* transitions animate wherever this single string is injected.
|
|
105
|
-
*/
|
|
106
|
-
declare const SLIDE_TRANSITION_KEYFRAMES: string;
|
|
107
|
-
/**
|
|
108
|
-
* Alias of {@link SLIDE_TRANSITION_KEYFRAMES} under the `_CSS` name the Vue
|
|
109
|
-
* binding historically exported.
|
|
110
|
-
*/
|
|
111
|
-
declare const SLIDE_TRANSITION_KEYFRAMES_CSS: string;
|
|
112
|
-
//#endregion
|
|
113
|
-
//#region src/render/slide-transition-css.d.ts
|
|
114
|
-
/**
|
|
115
|
-
* Map a {@link PptxTransitionType} (+ duration/direction/orient/spokes) to the
|
|
116
|
-
* concrete CSS `animation` descriptors for the outgoing and incoming layers.
|
|
117
|
-
*
|
|
118
|
-
* Unknown types fall back to a symmetrical cross-fade.
|
|
119
|
-
*/
|
|
120
|
-
declare function getSlideTransitionAnimations(type: PptxTransitionType, durationMs: number, direction: string | undefined, orient?: string | undefined, spokes?: number | undefined, pattern?: string | undefined): SlideTransitionAnimations;
|
|
121
|
-
/**
|
|
122
|
-
* Convenience wrapper that reads everything off a {@link PptxSlideTransition},
|
|
123
|
-
* applying the React/Vue default duration when none is set. `none`/`cut` and a
|
|
124
|
-
* transition with a non-positive duration resolve to {@link INSTANT}.
|
|
125
|
-
*/
|
|
126
|
-
declare function resolveSlideTransition(transition: PptxSlideTransition | undefined): SlideTransitionAnimations;
|
|
127
|
-
/**
|
|
128
|
-
* The effective duration (ms) for a transition under the React/Vue policy — the
|
|
129
|
-
* configured `durationMs`, or {@link DEFAULT_TRANSITION_DURATION_MS} when
|
|
130
|
-
* unset/invalid. `none`/`cut` resolve to `0` (instant).
|
|
131
|
-
*/
|
|
132
|
-
declare function resolveTransitionDurationMs(transition: PptxSlideTransition | undefined): number;
|
|
133
|
-
/** Everything the Transitions tab's controls currently say. */
|
|
134
|
-
interface RibbonTransitionDraft {
|
|
135
|
-
/** The highlighted gallery entry. */
|
|
136
|
-
type: PptxTransitionType;
|
|
137
|
-
/** Duration field, in seconds. */
|
|
138
|
-
durationSec: number;
|
|
139
|
-
/** Advance Slide > On Mouse Click. */
|
|
140
|
-
advanceOnClick: boolean;
|
|
141
|
-
/** Advance Slide > After (whether the timed advance is armed at all). */
|
|
142
|
-
advanceAfter: boolean;
|
|
143
|
-
/** Advance Slide > After, as the `mm:ss.hh` text the field holds. */
|
|
144
|
-
advanceAfterText: string;
|
|
145
|
-
}
|
|
146
|
-
type QuickAccessPosition = 'above' | 'below';
|
|
147
|
-
//#endregion
|
|
148
|
-
//#region src/render/customization/ribbon-control-catalog.d.ts
|
|
149
|
-
declare const RIBBON_CONTROL_CATALOG: {
|
|
150
|
-
readonly home: {
|
|
151
|
-
readonly clipboard: {
|
|
152
|
-
readonly label: 'Clipboard';
|
|
153
|
-
readonly controls: {
|
|
154
|
-
readonly paste: 'Paste';
|
|
155
|
-
readonly cut: 'Cut';
|
|
156
|
-
readonly copy: 'Copy';
|
|
157
|
-
readonly formatPainter: 'Format Painter';
|
|
158
|
-
};
|
|
159
|
-
};
|
|
160
|
-
readonly slides: {
|
|
161
|
-
readonly label: 'Slides';
|
|
162
|
-
readonly controls: {
|
|
163
|
-
readonly newSlide: 'New Slide';
|
|
164
|
-
readonly layout: 'Layout';
|
|
165
|
-
readonly reset: 'Reset';
|
|
166
|
-
readonly section: 'Section';
|
|
167
|
-
readonly slideTemplates: 'Slide templates';
|
|
168
|
-
};
|
|
169
|
-
};
|
|
170
|
-
readonly font: {
|
|
171
|
-
readonly label: 'Font';
|
|
172
|
-
readonly controls: {
|
|
173
|
-
readonly fontFamily: 'Font';
|
|
174
|
-
readonly fontSize: 'Font Size';
|
|
175
|
-
readonly increaseFontSize: 'Increase Font Size';
|
|
176
|
-
readonly decreaseFontSize: 'Decrease Font Size';
|
|
177
|
-
readonly clearFormatting: 'Clear All Formatting';
|
|
178
|
-
readonly bold: 'Bold';
|
|
179
|
-
readonly italic: 'Italic';
|
|
180
|
-
readonly underline: 'Underline';
|
|
181
|
-
readonly strikethrough: 'Strikethrough';
|
|
182
|
-
readonly shadow: 'Text Shadow';
|
|
183
|
-
readonly characterSpacing: 'Character Spacing';
|
|
184
|
-
readonly changeCase: 'Change Case';
|
|
185
|
-
readonly fontColor: 'Font Color';
|
|
186
|
-
readonly highlightColor: 'Text Highlight Color';
|
|
187
|
-
readonly superscript: 'Superscript';
|
|
188
|
-
readonly subscript: 'Subscript';
|
|
189
|
-
};
|
|
190
|
-
};
|
|
191
|
-
readonly paragraph: {
|
|
192
|
-
readonly label: 'Paragraph';
|
|
193
|
-
readonly controls: {
|
|
194
|
-
readonly bullets: 'Bullets (toggle and gallery)';
|
|
195
|
-
readonly numbering: 'Numbering (toggle and gallery)';
|
|
196
|
-
readonly decreaseIndent: 'Decrease List Level';
|
|
197
|
-
readonly increaseIndent: 'Increase List Level';
|
|
198
|
-
readonly lineSpacing: 'Line Spacing';
|
|
199
|
-
readonly alignLeft: 'Align Left';
|
|
200
|
-
readonly alignCenter: 'Center';
|
|
201
|
-
readonly alignRight: 'Align Right';
|
|
202
|
-
readonly justify: 'Justify';
|
|
203
|
-
readonly columns: 'Columns';
|
|
204
|
-
readonly textDirection: 'Text Direction';
|
|
205
|
-
readonly alignText: 'Align Text';
|
|
206
|
-
};
|
|
207
|
-
};
|
|
208
|
-
readonly drawing: {
|
|
209
|
-
readonly label: 'Drawing';
|
|
210
|
-
readonly controls: {
|
|
211
|
-
readonly shapes: 'Shapes';
|
|
212
|
-
readonly arrange: 'Arrange';
|
|
213
|
-
readonly quickStyles: 'Quick Styles (Shape Styles gallery)';
|
|
214
|
-
readonly shapeFill: 'Shape Fill';
|
|
215
|
-
readonly shapeOutline: 'Shape Outline';
|
|
216
|
-
readonly shapeEffects: 'Shape Effects gallery';
|
|
217
|
-
};
|
|
218
|
-
};
|
|
219
|
-
readonly arrange: {
|
|
220
|
-
readonly label: 'Arrange';
|
|
221
|
-
readonly controls: {
|
|
222
|
-
readonly bringForward: 'Bring Forward';
|
|
223
|
-
readonly sendBackward: 'Send Backward';
|
|
224
|
-
readonly bringToFront: 'Bring to Front';
|
|
225
|
-
readonly sendToBack: 'Send to Back';
|
|
226
|
-
readonly flipHorizontal: 'Flip Horizontal';
|
|
227
|
-
readonly flipVertical: 'Flip Vertical';
|
|
228
|
-
readonly duplicate: 'Duplicate';
|
|
229
|
-
readonly delete: 'Delete';
|
|
230
|
-
readonly group: 'Group';
|
|
231
|
-
readonly ungroup: 'Ungroup';
|
|
232
|
-
readonly align: 'Align';
|
|
233
|
-
readonly mergeShapes: 'Merge Shapes';
|
|
234
|
-
readonly crop: 'Crop';
|
|
235
|
-
readonly outlineWidth: 'Outline width';
|
|
236
|
-
};
|
|
237
|
-
};
|
|
238
|
-
readonly editing: {
|
|
239
|
-
readonly label: 'Editing';
|
|
240
|
-
readonly controls: {
|
|
241
|
-
readonly find: 'Find';
|
|
242
|
-
readonly replace: 'Replace';
|
|
243
|
-
readonly select: 'Select';
|
|
244
|
-
};
|
|
245
|
-
};
|
|
246
|
-
};
|
|
247
|
-
readonly insert: {
|
|
248
|
-
readonly slides: {
|
|
249
|
-
readonly label: 'Slides';
|
|
250
|
-
readonly controls: {
|
|
251
|
-
readonly newSlide: 'New Slide';
|
|
252
|
-
};
|
|
253
|
-
};
|
|
254
|
-
readonly tables: {
|
|
255
|
-
readonly label: 'Tables';
|
|
256
|
-
readonly controls: {
|
|
257
|
-
readonly table: 'Table';
|
|
258
|
-
};
|
|
259
|
-
};
|
|
260
|
-
readonly images: {
|
|
261
|
-
readonly label: 'Images';
|
|
262
|
-
readonly controls: {
|
|
263
|
-
readonly pictures: 'Pictures';
|
|
264
|
-
};
|
|
265
|
-
};
|
|
266
|
-
readonly illustrations: {
|
|
267
|
-
readonly label: 'Illustrations';
|
|
268
|
-
readonly controls: {
|
|
269
|
-
readonly shapes: 'Shapes';
|
|
270
|
-
readonly smartArt: 'SmartArt';
|
|
271
|
-
readonly chart: 'Chart';
|
|
272
|
-
};
|
|
273
|
-
};
|
|
274
|
-
readonly links: {
|
|
275
|
-
readonly label: 'Links';
|
|
276
|
-
readonly controls: {
|
|
277
|
-
readonly link: 'Link';
|
|
278
|
-
readonly action: 'Action button';
|
|
279
|
-
};
|
|
280
|
-
};
|
|
281
|
-
readonly comments: {
|
|
282
|
-
readonly label: 'Comments';
|
|
283
|
-
readonly controls: {
|
|
284
|
-
readonly comment: 'Comment';
|
|
285
|
-
};
|
|
286
|
-
};
|
|
287
|
-
readonly text: {
|
|
288
|
-
readonly label: 'Text';
|
|
289
|
-
readonly controls: {
|
|
290
|
-
readonly textBox: 'Text Box';
|
|
291
|
-
readonly field: 'Header, date, slide number field';
|
|
292
|
-
};
|
|
293
|
-
};
|
|
294
|
-
readonly symbols: {
|
|
295
|
-
readonly label: 'Symbols';
|
|
296
|
-
readonly controls: {
|
|
297
|
-
readonly equation: 'Equation';
|
|
298
|
-
readonly symbol: 'Symbol';
|
|
299
|
-
};
|
|
300
|
-
};
|
|
301
|
-
readonly media: {
|
|
302
|
-
readonly label: 'Media';
|
|
303
|
-
readonly controls: {
|
|
304
|
-
readonly media: 'Video / Audio';
|
|
305
|
-
};
|
|
306
|
-
};
|
|
307
|
-
};
|
|
308
|
-
readonly draw: {
|
|
309
|
-
readonly tools: {
|
|
310
|
-
readonly label: 'Drawing Tools';
|
|
311
|
-
readonly controls: {
|
|
312
|
-
readonly select: 'Select';
|
|
313
|
-
readonly pen: 'Pen';
|
|
314
|
-
readonly highlighter: 'Highlighter';
|
|
315
|
-
readonly freeform: 'Freeform';
|
|
316
|
-
readonly eraser: 'Eraser';
|
|
317
|
-
readonly penColor: 'Pen colour';
|
|
318
|
-
readonly penWidth: 'Pen width';
|
|
319
|
-
};
|
|
320
|
-
};
|
|
321
|
-
readonly convert: {
|
|
322
|
-
readonly label: 'Convert';
|
|
323
|
-
readonly controls: {
|
|
324
|
-
readonly inkToShape: 'Ink to Shape';
|
|
325
|
-
};
|
|
326
|
-
};
|
|
327
|
-
};
|
|
328
|
-
readonly design: {
|
|
329
|
-
readonly themes: {
|
|
330
|
-
readonly label: 'Themes';
|
|
331
|
-
readonly controls: {
|
|
332
|
-
readonly browseThemes: 'Themes gallery';
|
|
333
|
-
readonly editTheme: 'Edit theme';
|
|
334
|
-
};
|
|
335
|
-
};
|
|
336
|
-
readonly variants: {
|
|
337
|
-
readonly label: 'Variants';
|
|
338
|
-
readonly controls: {
|
|
339
|
-
readonly colors: 'Variants: Colors gallery';
|
|
340
|
-
readonly fonts: 'Variants: Fonts gallery';
|
|
341
|
-
};
|
|
342
|
-
};
|
|
343
|
-
readonly customize: {
|
|
344
|
-
readonly label: 'Customize';
|
|
345
|
-
readonly controls: {
|
|
346
|
-
readonly slideSize: 'Slide Size';
|
|
347
|
-
readonly formatBackground: 'Format Background';
|
|
348
|
-
};
|
|
349
|
-
};
|
|
350
|
-
};
|
|
351
|
-
readonly transitions: {
|
|
352
|
-
readonly preview: {
|
|
353
|
-
readonly label: 'Preview';
|
|
354
|
-
readonly controls: {
|
|
355
|
-
readonly preview: 'Preview';
|
|
356
|
-
};
|
|
357
|
-
};
|
|
358
|
-
readonly transitionToThisSlide: {
|
|
359
|
-
readonly label: 'Transition to This Slide';
|
|
360
|
-
readonly controls: {
|
|
361
|
-
readonly gallery: 'Transition gallery';
|
|
362
|
-
readonly effectOptions: 'Effect Options';
|
|
363
|
-
};
|
|
364
|
-
};
|
|
365
|
-
readonly timing: {
|
|
366
|
-
readonly label: 'Timing';
|
|
367
|
-
readonly controls: {
|
|
368
|
-
readonly sound: 'Sound';
|
|
369
|
-
readonly duration: 'Duration';
|
|
370
|
-
readonly applyToAll: 'Apply To All';
|
|
371
|
-
readonly advanceOnClick: 'On Mouse Click';
|
|
372
|
-
readonly advanceAfter: 'After';
|
|
373
|
-
};
|
|
374
|
-
};
|
|
375
|
-
};
|
|
376
|
-
readonly animations: {
|
|
377
|
-
readonly preview: {
|
|
378
|
-
readonly label: 'Preview';
|
|
379
|
-
readonly controls: {
|
|
380
|
-
readonly preview: 'Preview';
|
|
381
|
-
};
|
|
382
|
-
};
|
|
383
|
-
readonly animation: {
|
|
384
|
-
readonly label: 'Animation';
|
|
385
|
-
readonly controls: {
|
|
386
|
-
readonly gallery: 'Animation gallery';
|
|
387
|
-
readonly effectOptions: 'Effect Options';
|
|
388
|
-
};
|
|
389
|
-
};
|
|
390
|
-
readonly motionPath: {
|
|
391
|
-
readonly label: 'Motion Paths';
|
|
392
|
-
readonly controls: {
|
|
393
|
-
readonly gallery: 'Motion path gallery';
|
|
394
|
-
};
|
|
395
|
-
};
|
|
396
|
-
readonly advancedAnimation: {
|
|
397
|
-
readonly label: 'Advanced Animation';
|
|
398
|
-
readonly controls: {
|
|
399
|
-
readonly addAnimation: 'Add Animation';
|
|
400
|
-
readonly animationPane: 'Animation Pane';
|
|
401
|
-
readonly trigger: 'Trigger';
|
|
402
|
-
readonly animationPainter: 'Animation Painter';
|
|
403
|
-
readonly remove: 'Remove animation';
|
|
404
|
-
};
|
|
405
|
-
};
|
|
406
|
-
readonly timing: {
|
|
407
|
-
readonly label: 'Timing';
|
|
408
|
-
readonly controls: {
|
|
409
|
-
readonly start: 'Start';
|
|
410
|
-
readonly duration: 'Duration';
|
|
411
|
-
readonly delay: 'Delay';
|
|
412
|
-
readonly reorder: 'Reorder';
|
|
413
|
-
};
|
|
414
|
-
};
|
|
415
|
-
};
|
|
416
|
-
readonly slideShow: {
|
|
417
|
-
readonly startSlideShow: {
|
|
418
|
-
readonly label: 'Start Slide Show';
|
|
419
|
-
readonly controls: {
|
|
420
|
-
readonly fromBeginning: 'From Beginning';
|
|
421
|
-
readonly fromCurrent: 'From Current Slide';
|
|
422
|
-
readonly customShow: 'Custom Slide Show';
|
|
423
|
-
};
|
|
424
|
-
};
|
|
425
|
-
readonly present: {
|
|
426
|
-
readonly label: 'Present';
|
|
427
|
-
readonly controls: {
|
|
428
|
-
readonly presenterView: 'Presenter View';
|
|
429
|
-
readonly broadcast: 'Present Online';
|
|
430
|
-
};
|
|
431
|
-
};
|
|
432
|
-
readonly setUp: {
|
|
433
|
-
readonly label: 'Set Up';
|
|
434
|
-
readonly controls: {
|
|
435
|
-
readonly setUpSlideShow: 'Set Up Slide Show';
|
|
436
|
-
readonly hideSlide: 'Hide Slide';
|
|
437
|
-
readonly rehearseTimings: 'Rehearse Timings';
|
|
438
|
-
readonly record: 'Record';
|
|
439
|
-
readonly rehearseWithCoach: 'Rehearse with Coach';
|
|
440
|
-
};
|
|
441
|
-
};
|
|
442
|
-
readonly captions: {
|
|
443
|
-
readonly label: 'Captions & Subtitles';
|
|
444
|
-
readonly controls: {
|
|
445
|
-
readonly subtitles: 'Always Use Subtitles';
|
|
446
|
-
readonly subtitleSettings: 'Subtitle Settings';
|
|
447
|
-
};
|
|
448
|
-
};
|
|
449
|
-
};
|
|
450
|
-
readonly record: {
|
|
451
|
-
readonly camera: {
|
|
452
|
-
readonly label: 'Camera';
|
|
453
|
-
readonly controls: {
|
|
454
|
-
readonly cameo: 'Cameo';
|
|
455
|
-
};
|
|
456
|
-
};
|
|
457
|
-
readonly record: {
|
|
458
|
-
readonly label: 'Record';
|
|
459
|
-
readonly controls: {
|
|
460
|
-
readonly fromBeginning: 'From Beginning';
|
|
461
|
-
readonly fromCurrent: 'From Current Slide';
|
|
462
|
-
};
|
|
463
|
-
};
|
|
464
|
-
readonly manage: {
|
|
465
|
-
readonly label: 'Manage';
|
|
466
|
-
readonly controls: {
|
|
467
|
-
readonly clear: 'Clear';
|
|
468
|
-
readonly reset: 'Reset to Cameo';
|
|
469
|
-
};
|
|
470
|
-
};
|
|
471
|
-
readonly help: {
|
|
472
|
-
readonly label: 'Help';
|
|
473
|
-
readonly controls: {
|
|
474
|
-
readonly learnMore: 'Learn more';
|
|
475
|
-
};
|
|
476
|
-
};
|
|
477
|
-
};
|
|
478
|
-
readonly review: {
|
|
479
|
-
readonly proofing: {
|
|
480
|
-
readonly label: 'Proofing';
|
|
481
|
-
readonly controls: {
|
|
482
|
-
readonly spelling: 'Spelling';
|
|
483
|
-
readonly thesaurus: 'Thesaurus';
|
|
484
|
-
};
|
|
485
|
-
};
|
|
486
|
-
readonly accessibility: {
|
|
487
|
-
readonly label: 'Accessibility';
|
|
488
|
-
readonly controls: {
|
|
489
|
-
readonly check: 'Check Accessibility';
|
|
490
|
-
};
|
|
491
|
-
};
|
|
492
|
-
readonly language: {
|
|
493
|
-
readonly label: 'Language';
|
|
494
|
-
readonly controls: {
|
|
495
|
-
readonly translate: 'Translate';
|
|
496
|
-
readonly language: 'Language';
|
|
497
|
-
};
|
|
498
|
-
};
|
|
499
|
-
readonly comments: {
|
|
500
|
-
readonly label: 'Comments';
|
|
501
|
-
readonly controls: {
|
|
502
|
-
readonly newComment: 'New Comment';
|
|
503
|
-
readonly delete: 'Delete';
|
|
504
|
-
readonly previous: 'Previous';
|
|
505
|
-
readonly next: 'Next';
|
|
506
|
-
readonly showComments: 'Show Comments';
|
|
507
|
-
};
|
|
508
|
-
};
|
|
509
|
-
readonly compare: {
|
|
510
|
-
readonly label: 'Compare';
|
|
511
|
-
readonly controls: {
|
|
512
|
-
readonly compare: 'Compare';
|
|
513
|
-
readonly markAllRead: 'Mark all read';
|
|
514
|
-
};
|
|
515
|
-
};
|
|
516
|
-
readonly protect: {
|
|
517
|
-
readonly label: 'Protect';
|
|
518
|
-
readonly controls: {
|
|
519
|
-
readonly readOnly: 'Read-only';
|
|
520
|
-
readonly restrictPermission: 'Restrict Permission';
|
|
521
|
-
};
|
|
522
|
-
};
|
|
523
|
-
readonly ink: {
|
|
524
|
-
readonly label: 'Ink';
|
|
525
|
-
readonly controls: {
|
|
526
|
-
readonly hideInk: 'Hide Ink';
|
|
527
|
-
};
|
|
528
|
-
};
|
|
529
|
-
};
|
|
530
|
-
readonly view: {
|
|
531
|
-
readonly presentationViews: {
|
|
532
|
-
readonly label: 'Presentation Views';
|
|
533
|
-
readonly controls: {
|
|
534
|
-
readonly normal: 'Normal';
|
|
535
|
-
readonly outline: 'Outline View';
|
|
536
|
-
readonly slideSorter: 'Slide Sorter';
|
|
537
|
-
readonly notesPage: 'Notes Page';
|
|
538
|
-
readonly readingView: 'Reading View';
|
|
539
|
-
};
|
|
540
|
-
};
|
|
541
|
-
readonly masterViews: {
|
|
542
|
-
readonly label: 'Master Views';
|
|
543
|
-
readonly controls: {
|
|
544
|
-
readonly slideMaster: 'Slide Master';
|
|
545
|
-
readonly handoutMaster: 'Handout Master';
|
|
546
|
-
readonly notesMaster: 'Notes Master';
|
|
547
|
-
};
|
|
548
|
-
};
|
|
549
|
-
readonly show: {
|
|
550
|
-
readonly label: 'Show';
|
|
551
|
-
readonly controls: {
|
|
552
|
-
readonly ruler: 'Ruler';
|
|
553
|
-
readonly gridlines: 'Gridlines';
|
|
554
|
-
readonly guides: 'Guides';
|
|
555
|
-
readonly snapToGrid: 'Snap to Grid';
|
|
556
|
-
readonly snapToShape: 'Snap to Shape';
|
|
557
|
-
readonly addGuide: 'Add horizontal / vertical guide';
|
|
558
|
-
readonly selectionPane: 'Selection Pane';
|
|
559
|
-
readonly eyedropper: 'Eyedropper';
|
|
560
|
-
readonly notes: 'Notes';
|
|
561
|
-
};
|
|
562
|
-
};
|
|
563
|
-
readonly zoom: {
|
|
564
|
-
readonly label: 'Zoom';
|
|
565
|
-
readonly controls: {
|
|
566
|
-
readonly zoom: 'Zoom';
|
|
567
|
-
readonly fitToWindow: 'Fit to Window';
|
|
568
|
-
};
|
|
569
|
-
};
|
|
570
|
-
readonly window: {
|
|
571
|
-
readonly label: 'Window';
|
|
572
|
-
readonly controls: {
|
|
573
|
-
readonly templateEditing: 'Edit template elements';
|
|
574
|
-
readonly macros: 'Macros';
|
|
575
|
-
};
|
|
576
|
-
};
|
|
577
|
-
};
|
|
578
|
-
readonly help: {
|
|
579
|
-
readonly help: {
|
|
580
|
-
readonly label: 'Help';
|
|
581
|
-
readonly controls: {
|
|
582
|
-
readonly options: 'Options';
|
|
583
|
-
readonly keyboardShortcuts: 'Keyboard shortcuts';
|
|
584
|
-
readonly accessibility: 'Accessibility checker';
|
|
585
|
-
};
|
|
586
|
-
};
|
|
587
|
-
};
|
|
588
|
-
readonly shapeFormat: {
|
|
589
|
-
readonly shapeStyles: {
|
|
590
|
-
readonly label: 'Shape Styles';
|
|
591
|
-
readonly controls: {
|
|
592
|
-
readonly gallery: 'Shape Styles gallery';
|
|
593
|
-
readonly shapeEffects: 'Shape Effects gallery';
|
|
594
|
-
};
|
|
595
|
-
};
|
|
596
|
-
readonly wordArtStyles: {
|
|
597
|
-
readonly label: 'WordArt Styles';
|
|
598
|
-
readonly controls: {
|
|
599
|
-
readonly gallery: 'WordArt Styles gallery';
|
|
600
|
-
};
|
|
601
|
-
};
|
|
602
|
-
};
|
|
603
|
-
readonly pictureFormat: {
|
|
604
|
-
readonly adjust: {
|
|
605
|
-
readonly label: 'Adjust';
|
|
606
|
-
readonly controls: {
|
|
607
|
-
readonly corrections: 'Corrections gallery';
|
|
608
|
-
readonly color: 'Color gallery';
|
|
609
|
-
readonly artisticEffects: 'Artistic Effects gallery';
|
|
610
|
-
};
|
|
611
|
-
};
|
|
612
|
-
readonly pictureStyles: {
|
|
613
|
-
readonly label: 'Picture Styles';
|
|
614
|
-
readonly controls: {
|
|
615
|
-
readonly gallery: 'Picture Styles gallery';
|
|
616
|
-
readonly pictureEffects: 'Picture Effects gallery';
|
|
617
|
-
};
|
|
618
|
-
};
|
|
619
|
-
};
|
|
620
|
-
readonly tableDesign: {
|
|
621
|
-
readonly tableStyles: {
|
|
622
|
-
readonly label: 'Table Styles';
|
|
623
|
-
readonly controls: {
|
|
624
|
-
readonly gallery: 'Table Styles gallery';
|
|
625
|
-
};
|
|
626
|
-
};
|
|
627
|
-
};
|
|
628
|
-
readonly chartDesign: {
|
|
629
|
-
readonly chartLayouts: {
|
|
630
|
-
readonly label: 'Chart Layouts';
|
|
631
|
-
readonly controls: {
|
|
632
|
-
readonly quickLayout: 'Quick Layout gallery';
|
|
633
|
-
};
|
|
634
|
-
};
|
|
635
|
-
readonly chartStyles: {
|
|
636
|
-
readonly label: 'Chart Styles';
|
|
637
|
-
readonly controls: {
|
|
638
|
-
readonly changeColors: 'Change Colors gallery';
|
|
639
|
-
readonly gallery: 'Chart Styles gallery';
|
|
640
|
-
};
|
|
641
|
-
};
|
|
642
|
-
};
|
|
643
|
-
readonly smartArtDesign: {
|
|
644
|
-
readonly createGraphic: {
|
|
645
|
-
readonly label: 'Create Graphic';
|
|
646
|
-
readonly controls: {
|
|
647
|
-
readonly addShape: 'Add Shape';
|
|
648
|
-
readonly addBullet: 'Add Bullet';
|
|
649
|
-
readonly textPane: 'Text Pane';
|
|
650
|
-
readonly promote: 'Promote';
|
|
651
|
-
readonly demote: 'Demote';
|
|
652
|
-
readonly rightToLeft: 'Right to Left';
|
|
653
|
-
readonly moveUp: 'Move Up';
|
|
654
|
-
readonly moveDown: 'Move Down';
|
|
655
|
-
};
|
|
656
|
-
};
|
|
657
|
-
readonly layouts: {
|
|
658
|
-
readonly label: 'Layouts';
|
|
659
|
-
readonly controls: {
|
|
660
|
-
readonly gallery: 'Layouts gallery';
|
|
661
|
-
};
|
|
662
|
-
};
|
|
663
|
-
readonly smartArtStyles: {
|
|
664
|
-
readonly label: 'SmartArt Styles';
|
|
665
|
-
readonly controls: {
|
|
666
|
-
readonly changeColors: 'Change Colors gallery';
|
|
667
|
-
readonly gallery: 'SmartArt Styles gallery';
|
|
668
|
-
};
|
|
669
|
-
};
|
|
670
|
-
readonly reset: {
|
|
671
|
-
readonly label: 'Reset';
|
|
672
|
-
readonly controls: {
|
|
673
|
-
readonly resetGraphic: 'Reset Graphic';
|
|
674
|
-
readonly convert: 'Convert';
|
|
675
|
-
};
|
|
676
|
-
};
|
|
677
|
-
};
|
|
678
|
-
};
|
|
679
|
-
//#endregion
|
|
680
|
-
//#region src/render/customization/ribbon-control-ids.d.ts
|
|
681
|
-
type Catalog = typeof RIBBON_CONTROL_CATALOG;
|
|
682
|
-
/** `<tab>.<group>`, for example `home.font`. */
|
|
683
|
-
type RibbonGroupId = { [T in keyof Catalog]: { [G in keyof Catalog[T]]: `${T & string}.${G & string}`; }[keyof Catalog[T]]; }[keyof Catalog];
|
|
684
|
-
/** `<tab>.<group>.<control>`, for example `home.font.bold`. */
|
|
685
|
-
type RibbonControlId = { [T in keyof Catalog]: { [G in keyof Catalog[T]]: Catalog[T][G] extends {
|
|
686
|
-
controls: infer C;
|
|
687
|
-
} ? `${T & string}.${G & string}.${keyof C & string}` : never; }[keyof Catalog[T]]; }[keyof Catalog];
|
|
688
|
-
//#endregion
|
|
689
|
-
//#region src/render/ribbon-command-view.d.ts
|
|
690
|
-
/** A host supplies translated labels and controlled state; shared owns markup. */
|
|
691
|
-
interface RibbonCommandView {
|
|
692
|
-
id: RibbonControlId;
|
|
693
|
-
label: string;
|
|
694
|
-
icon: string;
|
|
695
|
-
title?: string;
|
|
696
|
-
disabled?: boolean;
|
|
697
|
-
active?: boolean;
|
|
698
|
-
pressed?: boolean;
|
|
699
|
-
expanded?: boolean;
|
|
700
|
-
hidden?: boolean;
|
|
701
|
-
compact?: boolean;
|
|
702
|
-
/** Opens a menu or panel: draws PowerPoint's drop-down chevron after the label. */
|
|
703
|
-
caret?: boolean;
|
|
704
|
-
badge?: number;
|
|
705
|
-
/** Commands with the same column share a vertical stack. */
|
|
706
|
-
column?: number;
|
|
707
|
-
}
|
|
708
|
-
interface RibbonGroupView {
|
|
709
|
-
id: RibbonGroupId;
|
|
710
|
-
label: string;
|
|
711
|
-
commands: readonly RibbonCommandView[];
|
|
712
|
-
}
|
|
713
|
-
//#endregion
|
|
714
|
-
//#region src/render/p14-transition-keyframes.d.ts
|
|
715
|
-
/** Part 1: conveyor / doors / ferris / flash / flythrough / gallery / glitter / honeycomb / pan. */
|
|
716
|
-
declare const P14_TRANSITION_KEYFRAMES = "\n/* ── Conveyor (translate X with staggered timing) ──────────────────── */\n@keyframes pptx-tr-conveyor-in-from-right {\n\tfrom { transform: translateX(100%) rotateY(-30deg); }\n\t60% { transform: translateX(20%) rotateY(-10deg); }\n\tto { transform: translateX(0) rotateY(0deg); }\n}\n@keyframes pptx-tr-conveyor-out-to-left {\n\tfrom { transform: translateX(0) rotateY(0deg); }\n\t40% { transform: translateX(-20%) rotateY(10deg); }\n\tto { transform: translateX(-100%) rotateY(30deg); }\n}\n@keyframes pptx-tr-conveyor-in-from-left {\n\tfrom { transform: translateX(-100%) rotateY(30deg); }\n\t60% { transform: translateX(-20%) rotateY(10deg); }\n\tto { transform: translateX(0) rotateY(0deg); }\n}\n@keyframes pptx-tr-conveyor-out-to-right {\n\tfrom { transform: translateX(0) rotateY(0deg); }\n\t40% { transform: translateX(20%) rotateY(-10deg); }\n\tto { transform: translateX(100%) rotateY(-30deg); }\n}\n\n/* ── Doors (clip-path from center split) ──────────────────────────────\n MEASURED via COM CreateVideo: PowerPoint's `dir=\"horz\"` names a\n HORIZONTAL split line (two panels stacked top/bottom, opening upward and\n downward), and `dir=\"vert\"` a VERTICAL split line (panels side by side,\n opening left and right) - the opposite of what \"clips left/right\" vs\n \"clips top/bottom\" would suggest at a glance. Keep the clip-path bodies\n matched to the MEASURED direction, not the intuitive one. */\n@keyframes pptx-tr-doors-horz {\n\tfrom { clip-path: inset(50% 0); }\n\tto { clip-path: inset(0 0); }\n}\n@keyframes pptx-tr-doors-vert {\n\tfrom { clip-path: inset(0 50%); }\n\tto { clip-path: inset(0 0); }\n}\n\n/* ── Ferris (rotate elements around center) ───────────────────────── */\n@keyframes pptx-tr-ferris-in-from-right {\n\tfrom { transform: translateX(80%) rotate(45deg) scale(0.6); opacity: 0; }\n\tto { transform: translateX(0) rotate(0deg) scale(1); opacity: 1; }\n}\n@keyframes pptx-tr-ferris-out-to-left {\n\tfrom { transform: translateX(0) rotate(0deg) scale(1); opacity: 1; }\n\tto { transform: translateX(-80%) rotate(-45deg) scale(0.6); opacity: 0; }\n}\n@keyframes pptx-tr-ferris-in-from-left {\n\tfrom { transform: translateX(-80%) rotate(-45deg) scale(0.6); opacity: 0; }\n\tto { transform: translateX(0) rotate(0deg) scale(1); opacity: 1; }\n}\n@keyframes pptx-tr-ferris-out-to-right {\n\tfrom { transform: translateX(0) rotate(0deg) scale(1); opacity: 1; }\n\tto { transform: translateX(80%) rotate(45deg) scale(0.6); opacity: 0; }\n}\n\n/* ── Flash (bright flash opacity burst) ──────────────────────────── */\n@keyframes pptx-tr-flash-white {\n\t0% { opacity: 1; }\n\t30% { opacity: 0; }\n\t50% { opacity: 0; }\n\t100% { opacity: 1; }\n}\n@keyframes pptx-tr-flash-in {\n\t0% { opacity: 0; }\n\t50% { opacity: 0; }\n\t70% { opacity: 1; }\n\t100% { opacity: 1; }\n}\n\n/* ── Flythrough (scale + translate Z-axis feel) ──────────────────── */\n@keyframes pptx-tr-flythrough-in {\n\tfrom { transform: scale(4) translateZ(200px); opacity: 0; filter: blur(8px); }\n\tto { transform: scale(1) translateZ(0); opacity: 1; filter: blur(0); }\n}\n@keyframes pptx-tr-flythrough-out {\n\tfrom { transform: scale(1) translateZ(0); opacity: 1; filter: blur(0); }\n\tto { transform: scale(0.1) translateZ(-200px); opacity: 0; filter: blur(8px); }\n}\n@keyframes pptx-tr-flythrough-reverse-in {\n\tfrom { transform: scale(0.1) translateZ(-200px); opacity: 0; filter: blur(8px); }\n\tto { transform: scale(1) translateZ(0); opacity: 1; filter: blur(0); }\n}\n@keyframes pptx-tr-flythrough-reverse-out {\n\tfrom { transform: scale(1) translateZ(0); opacity: 1; filter: blur(0); }\n\tto { transform: scale(4) translateZ(200px); opacity: 0; filter: blur(8px); }\n}\n\n/* ── Gallery (translate with perspective) ─────────────────────────── */\n@keyframes pptx-tr-gallery-in-from-right {\n\tfrom { transform: perspective(800px) translateX(100%) rotateY(-45deg); opacity: 0.5; }\n\tto { transform: perspective(800px) translateX(0) rotateY(0deg); opacity: 1; }\n}\n@keyframes pptx-tr-gallery-out-to-left {\n\tfrom { transform: perspective(800px) translateX(0) rotateY(0deg); opacity: 1; }\n\tto { transform: perspective(800px) translateX(-100%) rotateY(45deg); opacity: 0.5; }\n}\n@keyframes pptx-tr-gallery-in-from-left {\n\tfrom { transform: perspective(800px) translateX(-100%) rotateY(45deg); opacity: 0.5; }\n\tto { transform: perspective(800px) translateX(0) rotateY(0deg); opacity: 1; }\n}\n@keyframes pptx-tr-gallery-out-to-right {\n\tfrom { transform: perspective(800px) translateX(0) rotateY(0deg); opacity: 1; }\n\tto { transform: perspective(800px) translateX(100%) rotateY(-45deg); opacity: 0.5; }\n}\n\n/* ── Glitter (particle dissolve effect) ──────────────────────────── */\n@keyframes pptx-tr-glitter-in {\n\tfrom { opacity: 0; filter: brightness(1.5) contrast(1.3) blur(2px); }\n\t60% { opacity: 0.7; filter: brightness(1.2) contrast(1.1) blur(1px); }\n\tto { opacity: 1; filter: brightness(1) contrast(1) blur(0); }\n}\n\n/* ── Honeycomb (hexagonal reveal) ────────────────────────────────── */\n@keyframes pptx-tr-honeycomb-in {\n\tfrom {\n\t\tclip-path: polygon(50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%);\n\t\topacity: 0;\n\t}\n\tto {\n\t\tclip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);\n\t\topacity: 1;\n\t}\n}\n@keyframes pptx-tr-honeycomb-out {\n\tfrom { opacity: 1; }\n\tto { opacity: 0; filter: blur(2px); }\n}\n\n/* ── Pan (large-scale translate) ─────────────────────────────────── */\n@keyframes pptx-tr-pan-from-right {\n\tfrom { transform: translateX(100%); }\n\tto { transform: translateX(0); }\n}\n@keyframes pptx-tr-pan-to-left {\n\tfrom { transform: translateX(0); }\n\tto { transform: translateX(-100%); }\n}\n@keyframes pptx-tr-pan-from-left {\n\tfrom { transform: translateX(-100%); }\n\tto { transform: translateX(0); }\n}\n@keyframes pptx-tr-pan-to-right {\n\tfrom { transform: translateX(0); }\n\tto { transform: translateX(100%); }\n}\n@keyframes pptx-tr-pan-from-bottom {\n\tfrom { transform: translateY(100%); }\n\tto { transform: translateY(0); }\n}\n@keyframes pptx-tr-pan-to-top {\n\tfrom { transform: translateY(0); }\n\tto { transform: translateY(-100%); }\n}\n@keyframes pptx-tr-pan-from-top {\n\tfrom { transform: translateY(-100%); }\n\tto { transform: translateY(0); }\n}\n@keyframes pptx-tr-pan-to-bottom {\n\tfrom { transform: translateY(0); }\n\tto { transform: translateY(100%); }\n}\n";
|
|
717
|
-
/** Part 2: prism / reveal / ripple / shred / switch / vortex / warp / wheelReverse / window. */
|
|
718
|
-
declare const P14_TRANSITION_KEYFRAMES_2 = "\n/* ── Prism: see `slide-transition-prism` (split out to keep this module\n under the per-file LOC budget) ─────────────────────────────────────── */\n\n@keyframes pptx-tr-prism-in-from-right {\n\tfrom { transform: perspective(800px) rotateY(-90deg) translateX(50%); opacity: 0; }\n\tto { transform: perspective(800px) rotateY(0deg) translateX(0); opacity: 1; }\n}\n@keyframes pptx-tr-prism-out-to-left {\n\tfrom { transform: perspective(800px) rotateY(0deg) translateX(0); opacity: 1; }\n\tto { transform: perspective(800px) rotateY(90deg) translateX(-50%); opacity: 0; }\n}\n@keyframes pptx-tr-prism-in-from-left {\n\tfrom { transform: perspective(800px) rotateY(90deg) translateX(-50%); opacity: 0; }\n\tto { transform: perspective(800px) rotateY(0deg) translateX(0); opacity: 1; }\n}\n@keyframes pptx-tr-prism-out-to-right {\n\tfrom { transform: perspective(800px) rotateY(0deg) translateX(0); opacity: 1; }\n\tto { transform: perspective(800px) rotateY(-90deg) translateX(50%); opacity: 0; }\n}\n@keyframes pptx-tr-prism-in-from-bottom {\n\tfrom { transform: perspective(800px) rotateX(90deg) translateY(50%); opacity: 0; }\n\tto { transform: perspective(800px) rotateX(0deg) translateY(0); opacity: 1; }\n}\n@keyframes pptx-tr-prism-out-to-top {\n\tfrom { transform: perspective(800px) rotateX(0deg) translateY(0); opacity: 1; }\n\tto { transform: perspective(800px) rotateX(-90deg) translateY(-50%); opacity: 0; }\n}\n@keyframes pptx-tr-prism-in-from-top {\n\tfrom { transform: perspective(800px) rotateX(-90deg) translateY(-50%); opacity: 0; }\n\tto { transform: perspective(800px) rotateX(0deg) translateY(0); opacity: 1; }\n}\n@keyframes pptx-tr-prism-out-to-bottom {\n\tfrom { transform: perspective(800px) rotateX(0deg) translateY(0); opacity: 1; }\n\tto { transform: perspective(800px) rotateX(90deg) translateY(50%); opacity: 0; }\n}\n\n/* ── Reveal (slide away reveal) ──────────────────────────────────── */\n@keyframes pptx-tr-reveal-out-to-right {\n\tfrom { transform: translateX(0); }\n\tto { transform: translateX(100%); }\n}\n@keyframes pptx-tr-reveal-out-to-left {\n\tfrom { transform: translateX(0); }\n\tto { transform: translateX(-100%); }\n}\n/* MEASURED: the incoming layer stays hidden for roughly the first half of the\n transition (a real black/background gap shows through), then fades in -\n not a flat 0.5->1 fade running the whole duration. */\n@keyframes pptx-tr-reveal-in {\n\t0% { opacity: 0; }\n\t50% { opacity: 0; }\n\t100% { opacity: 1; }\n}\n\n/* ── Ripple (expanding ring clip-path) ───────────────────────────── */\n@keyframes pptx-tr-ripple-in {\n\tfrom { clip-path: circle(0% at 50% 50%); opacity: 0.5; }\n\t30% { clip-path: circle(20% at 50% 50%); opacity: 0.7; }\n\t60% { clip-path: circle(50% at 50% 50%); opacity: 0.9; }\n\tto { clip-path: circle(75% at 50% 50%); opacity: 1; }\n}\n\n/* ── Shred (fragmented clip-path pieces) ─────────────────────────── */\n@keyframes pptx-tr-shred-strips-in {\n\tfrom { clip-path: inset(0 100% 0 0); opacity: 0; }\n\t30% { clip-path: inset(0 60% 0 0); opacity: 0.5; }\n\tto { clip-path: inset(0); opacity: 1; }\n}\n@keyframes pptx-tr-shred-rectangles-in {\n\tfrom { clip-path: inset(50%); opacity: 0; }\n\t40% { clip-path: inset(20%); opacity: 0.6; }\n\tto { clip-path: inset(0); opacity: 1; }\n}\n@keyframes pptx-tr-shred-out {\n\tfrom { opacity: 1; }\n\tto { opacity: 0; filter: blur(2px); }\n}\n\n/* ── Switch (flip/rotate swap) ───────────────────────────────────── */\n@keyframes pptx-tr-switch-in-from-right {\n\tfrom { transform: perspective(800px) rotateY(-180deg); opacity: 0; }\n\tto { transform: perspective(800px) rotateY(0deg); opacity: 1; }\n}\n@keyframes pptx-tr-switch-out-to-left {\n\tfrom { transform: perspective(800px) rotateY(0deg); opacity: 1; }\n\tto { transform: perspective(800px) rotateY(180deg); opacity: 0; }\n}\n@keyframes pptx-tr-switch-in-from-left {\n\tfrom { transform: perspective(800px) rotateY(180deg); opacity: 0; }\n\tto { transform: perspective(800px) rotateY(0deg); opacity: 1; }\n}\n@keyframes pptx-tr-switch-out-to-right {\n\tfrom { transform: perspective(800px) rotateY(0deg); opacity: 1; }\n\tto { transform: perspective(800px) rotateY(-180deg); opacity: 0; }\n}\n\n/* ── Vortex (rotate + scale spiral) ──────────────────────────────── */\n@keyframes pptx-tr-vortex-in {\n\tfrom { transform: rotate(720deg) scale(0); opacity: 0; }\n\tto { transform: rotate(0deg) scale(1); opacity: 1; }\n}\n@keyframes pptx-tr-vortex-out {\n\tfrom { transform: rotate(0deg) scale(1); opacity: 1; }\n\tto { transform: rotate(-720deg) scale(0); opacity: 0; }\n}\n\n/* ── Warp: see `slide-transition-warp` (COM-measured radial zoom blur,\n split out to keep this module under the per-file LOC budget) ────────── */\n\n@keyframes pptx-tr-warp-in {\n\t0% { transform: scale(0.25); opacity: 0; filter: blur(10px) brightness(1.8); }\n\t50% { transform: scale(0.85); opacity: 0.7; filter: blur(3px) brightness(1.3); }\n\t100% { transform: scale(1); opacity: 1; filter: blur(0) brightness(1); }\n}\n@keyframes pptx-tr-warp-out {\n\t0% { transform: scale(1); opacity: 1; filter: blur(0) brightness(1); }\n\t50% { transform: scale(0.85); opacity: 0.7; filter: blur(3px) brightness(1.3); }\n\t100% { transform: scale(0.25); opacity: 0; filter: blur(10px) brightness(1.8); }\n}\n@keyframes pptx-tr-warp-reverse-in {\n\t0% { transform: scale(3.2); opacity: 0; filter: blur(14px) brightness(2.2); }\n\t50% { transform: scale(1.7); opacity: 0.7; filter: blur(6px) brightness(1.5); }\n\t100% { transform: scale(1); opacity: 1; filter: blur(0) brightness(1); }\n}\n@keyframes pptx-tr-warp-reverse-out {\n\t0% { transform: scale(1); opacity: 1; filter: blur(0) brightness(1); }\n\t50% { transform: scale(1.7); opacity: 0.7; filter: blur(6px) brightness(1.5); }\n\t100% { transform: scale(3.2); opacity: 0; filter: blur(14px) brightness(2.2); }\n}\n\n\n/* ── WheelReverse (reverse wheel rotation) ───────────────────────── */\n@keyframes pptx-tr-wheel-reverse-in {\n\tfrom { clip-path: circle(0% at 50% 50%); transform: rotate(180deg); }\n\tto { clip-path: circle(75% at 50% 50%); transform: rotate(0deg); }\n}\n\n/* ── Window (scale from center with border) ──────────────────────────\n Same measured horz/vert meaning as Doors above (horz = horizontal split\n line opening vertically; vert = vertical split line opening horizontally). */\n@keyframes pptx-tr-window-horz {\n\tfrom { clip-path: inset(50% 0); }\n\tto { clip-path: inset(0 0); }\n}\n@keyframes pptx-tr-window-vert {\n\tfrom { clip-path: inset(0 50%); }\n\tto { clip-path: inset(0 0); }\n}\n@keyframes pptx-tr-window-out {\n\tfrom { opacity: 1; transform: scale(1); }\n\tto { opacity: 0; transform: scale(0.9); }\n}\n";
|
|
719
|
-
/** Both p14 keyframe blocks concatenated, for single `<style>` injection. */
|
|
720
|
-
declare const P14_TRANSITION_KEYFRAMES_ALL = "\n/* ── Conveyor (translate X with staggered timing) ──────────────────── */\n@keyframes pptx-tr-conveyor-in-from-right {\n\tfrom { transform: translateX(100%) rotateY(-30deg); }\n\t60% { transform: translateX(20%) rotateY(-10deg); }\n\tto { transform: translateX(0) rotateY(0deg); }\n}\n@keyframes pptx-tr-conveyor-out-to-left {\n\tfrom { transform: translateX(0) rotateY(0deg); }\n\t40% { transform: translateX(-20%) rotateY(10deg); }\n\tto { transform: translateX(-100%) rotateY(30deg); }\n}\n@keyframes pptx-tr-conveyor-in-from-left {\n\tfrom { transform: translateX(-100%) rotateY(30deg); }\n\t60% { transform: translateX(-20%) rotateY(10deg); }\n\tto { transform: translateX(0) rotateY(0deg); }\n}\n@keyframes pptx-tr-conveyor-out-to-right {\n\tfrom { transform: translateX(0) rotateY(0deg); }\n\t40% { transform: translateX(20%) rotateY(-10deg); }\n\tto { transform: translateX(100%) rotateY(-30deg); }\n}\n\n/* ── Doors (clip-path from center split) ──────────────────────────────\n MEASURED via COM CreateVideo: PowerPoint's `dir=\"horz\"` names a\n HORIZONTAL split line (two panels stacked top/bottom, opening upward and\n downward), and `dir=\"vert\"` a VERTICAL split line (panels side by side,\n opening left and right) - the opposite of what \"clips left/right\" vs\n \"clips top/bottom\" would suggest at a glance. Keep the clip-path bodies\n matched to the MEASURED direction, not the intuitive one. */\n@keyframes pptx-tr-doors-horz {\n\tfrom { clip-path: inset(50% 0); }\n\tto { clip-path: inset(0 0); }\n}\n@keyframes pptx-tr-doors-vert {\n\tfrom { clip-path: inset(0 50%); }\n\tto { clip-path: inset(0 0); }\n}\n\n/* ── Ferris (rotate elements around center) ───────────────────────── */\n@keyframes pptx-tr-ferris-in-from-right {\n\tfrom { transform: translateX(80%) rotate(45deg) scale(0.6); opacity: 0; }\n\tto { transform: translateX(0) rotate(0deg) scale(1); opacity: 1; }\n}\n@keyframes pptx-tr-ferris-out-to-left {\n\tfrom { transform: translateX(0) rotate(0deg) scale(1); opacity: 1; }\n\tto { transform: translateX(-80%) rotate(-45deg) scale(0.6); opacity: 0; }\n}\n@keyframes pptx-tr-ferris-in-from-left {\n\tfrom { transform: translateX(-80%) rotate(-45deg) scale(0.6); opacity: 0; }\n\tto { transform: translateX(0) rotate(0deg) scale(1); opacity: 1; }\n}\n@keyframes pptx-tr-ferris-out-to-right {\n\tfrom { transform: translateX(0) rotate(0deg) scale(1); opacity: 1; }\n\tto { transform: translateX(80%) rotate(45deg) scale(0.6); opacity: 0; }\n}\n\n/* ── Flash (bright flash opacity burst) ──────────────────────────── */\n@keyframes pptx-tr-flash-white {\n\t0% { opacity: 1; }\n\t30% { opacity: 0; }\n\t50% { opacity: 0; }\n\t100% { opacity: 1; }\n}\n@keyframes pptx-tr-flash-in {\n\t0% { opacity: 0; }\n\t50% { opacity: 0; }\n\t70% { opacity: 1; }\n\t100% { opacity: 1; }\n}\n\n/* ── Flythrough (scale + translate Z-axis feel) ──────────────────── */\n@keyframes pptx-tr-flythrough-in {\n\tfrom { transform: scale(4) translateZ(200px); opacity: 0; filter: blur(8px); }\n\tto { transform: scale(1) translateZ(0); opacity: 1; filter: blur(0); }\n}\n@keyframes pptx-tr-flythrough-out {\n\tfrom { transform: scale(1) translateZ(0); opacity: 1; filter: blur(0); }\n\tto { transform: scale(0.1) translateZ(-200px); opacity: 0; filter: blur(8px); }\n}\n@keyframes pptx-tr-flythrough-reverse-in {\n\tfrom { transform: scale(0.1) translateZ(-200px); opacity: 0; filter: blur(8px); }\n\tto { transform: scale(1) translateZ(0); opacity: 1; filter: blur(0); }\n}\n@keyframes pptx-tr-flythrough-reverse-out {\n\tfrom { transform: scale(1) translateZ(0); opacity: 1; filter: blur(0); }\n\tto { transform: scale(4) translateZ(200px); opacity: 0; filter: blur(8px); }\n}\n\n/* ── Gallery (translate with perspective) ─────────────────────────── */\n@keyframes pptx-tr-gallery-in-from-right {\n\tfrom { transform: perspective(800px) translateX(100%) rotateY(-45deg); opacity: 0.5; }\n\tto { transform: perspective(800px) translateX(0) rotateY(0deg); opacity: 1; }\n}\n@keyframes pptx-tr-gallery-out-to-left {\n\tfrom { transform: perspective(800px) translateX(0) rotateY(0deg); opacity: 1; }\n\tto { transform: perspective(800px) translateX(-100%) rotateY(45deg); opacity: 0.5; }\n}\n@keyframes pptx-tr-gallery-in-from-left {\n\tfrom { transform: perspective(800px) translateX(-100%) rotateY(45deg); opacity: 0.5; }\n\tto { transform: perspective(800px) translateX(0) rotateY(0deg); opacity: 1; }\n}\n@keyframes pptx-tr-gallery-out-to-right {\n\tfrom { transform: perspective(800px) translateX(0) rotateY(0deg); opacity: 1; }\n\tto { transform: perspective(800px) translateX(100%) rotateY(-45deg); opacity: 0.5; }\n}\n\n/* ── Glitter (particle dissolve effect) ──────────────────────────── */\n@keyframes pptx-tr-glitter-in {\n\tfrom { opacity: 0; filter: brightness(1.5) contrast(1.3) blur(2px); }\n\t60% { opacity: 0.7; filter: brightness(1.2) contrast(1.1) blur(1px); }\n\tto { opacity: 1; filter: brightness(1) contrast(1) blur(0); }\n}\n\n/* ── Honeycomb (hexagonal reveal) ────────────────────────────────── */\n@keyframes pptx-tr-honeycomb-in {\n\tfrom {\n\t\tclip-path: polygon(50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%, 50% 50%);\n\t\topacity: 0;\n\t}\n\tto {\n\t\tclip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);\n\t\topacity: 1;\n\t}\n}\n@keyframes pptx-tr-honeycomb-out {\n\tfrom { opacity: 1; }\n\tto { opacity: 0; filter: blur(2px); }\n}\n\n/* ── Pan (large-scale translate) ─────────────────────────────────── */\n@keyframes pptx-tr-pan-from-right {\n\tfrom { transform: translateX(100%); }\n\tto { transform: translateX(0); }\n}\n@keyframes pptx-tr-pan-to-left {\n\tfrom { transform: translateX(0); }\n\tto { transform: translateX(-100%); }\n}\n@keyframes pptx-tr-pan-from-left {\n\tfrom { transform: translateX(-100%); }\n\tto { transform: translateX(0); }\n}\n@keyframes pptx-tr-pan-to-right {\n\tfrom { transform: translateX(0); }\n\tto { transform: translateX(100%); }\n}\n@keyframes pptx-tr-pan-from-bottom {\n\tfrom { transform: translateY(100%); }\n\tto { transform: translateY(0); }\n}\n@keyframes pptx-tr-pan-to-top {\n\tfrom { transform: translateY(0); }\n\tto { transform: translateY(-100%); }\n}\n@keyframes pptx-tr-pan-from-top {\n\tfrom { transform: translateY(-100%); }\n\tto { transform: translateY(0); }\n}\n@keyframes pptx-tr-pan-to-bottom {\n\tfrom { transform: translateY(0); }\n\tto { transform: translateY(100%); }\n}\n\n\n/* ── Prism: see `slide-transition-prism` (split out to keep this module\n under the per-file LOC budget) ─────────────────────────────────────── */\n\n@keyframes pptx-tr-prism-in-from-right {\n\tfrom { transform: perspective(800px) rotateY(-90deg) translateX(50%); opacity: 0; }\n\tto { transform: perspective(800px) rotateY(0deg) translateX(0); opacity: 1; }\n}\n@keyframes pptx-tr-prism-out-to-left {\n\tfrom { transform: perspective(800px) rotateY(0deg) translateX(0); opacity: 1; }\n\tto { transform: perspective(800px) rotateY(90deg) translateX(-50%); opacity: 0; }\n}\n@keyframes pptx-tr-prism-in-from-left {\n\tfrom { transform: perspective(800px) rotateY(90deg) translateX(-50%); opacity: 0; }\n\tto { transform: perspective(800px) rotateY(0deg) translateX(0); opacity: 1; }\n}\n@keyframes pptx-tr-prism-out-to-right {\n\tfrom { transform: perspective(800px) rotateY(0deg) translateX(0); opacity: 1; }\n\tto { transform: perspective(800px) rotateY(-90deg) translateX(50%); opacity: 0; }\n}\n@keyframes pptx-tr-prism-in-from-bottom {\n\tfrom { transform: perspective(800px) rotateX(90deg) translateY(50%); opacity: 0; }\n\tto { transform: perspective(800px) rotateX(0deg) translateY(0); opacity: 1; }\n}\n@keyframes pptx-tr-prism-out-to-top {\n\tfrom { transform: perspective(800px) rotateX(0deg) translateY(0); opacity: 1; }\n\tto { transform: perspective(800px) rotateX(-90deg) translateY(-50%); opacity: 0; }\n}\n@keyframes pptx-tr-prism-in-from-top {\n\tfrom { transform: perspective(800px) rotateX(-90deg) translateY(-50%); opacity: 0; }\n\tto { transform: perspective(800px) rotateX(0deg) translateY(0); opacity: 1; }\n}\n@keyframes pptx-tr-prism-out-to-bottom {\n\tfrom { transform: perspective(800px) rotateX(0deg) translateY(0); opacity: 1; }\n\tto { transform: perspective(800px) rotateX(90deg) translateY(50%); opacity: 0; }\n}\n\n/* ── Reveal (slide away reveal) ──────────────────────────────────── */\n@keyframes pptx-tr-reveal-out-to-right {\n\tfrom { transform: translateX(0); }\n\tto { transform: translateX(100%); }\n}\n@keyframes pptx-tr-reveal-out-to-left {\n\tfrom { transform: translateX(0); }\n\tto { transform: translateX(-100%); }\n}\n/* MEASURED: the incoming layer stays hidden for roughly the first half of the\n transition (a real black/background gap shows through), then fades in -\n not a flat 0.5->1 fade running the whole duration. */\n@keyframes pptx-tr-reveal-in {\n\t0% { opacity: 0; }\n\t50% { opacity: 0; }\n\t100% { opacity: 1; }\n}\n\n/* ── Ripple (expanding ring clip-path) ───────────────────────────── */\n@keyframes pptx-tr-ripple-in {\n\tfrom { clip-path: circle(0% at 50% 50%); opacity: 0.5; }\n\t30% { clip-path: circle(20% at 50% 50%); opacity: 0.7; }\n\t60% { clip-path: circle(50% at 50% 50%); opacity: 0.9; }\n\tto { clip-path: circle(75% at 50% 50%); opacity: 1; }\n}\n\n/* ── Shred (fragmented clip-path pieces) ─────────────────────────── */\n@keyframes pptx-tr-shred-strips-in {\n\tfrom { clip-path: inset(0 100% 0 0); opacity: 0; }\n\t30% { clip-path: inset(0 60% 0 0); opacity: 0.5; }\n\tto { clip-path: inset(0); opacity: 1; }\n}\n@keyframes pptx-tr-shred-rectangles-in {\n\tfrom { clip-path: inset(50%); opacity: 0; }\n\t40% { clip-path: inset(20%); opacity: 0.6; }\n\tto { clip-path: inset(0); opacity: 1; }\n}\n@keyframes pptx-tr-shred-out {\n\tfrom { opacity: 1; }\n\tto { opacity: 0; filter: blur(2px); }\n}\n\n/* ── Switch (flip/rotate swap) ───────────────────────────────────── */\n@keyframes pptx-tr-switch-in-from-right {\n\tfrom { transform: perspective(800px) rotateY(-180deg); opacity: 0; }\n\tto { transform: perspective(800px) rotateY(0deg); opacity: 1; }\n}\n@keyframes pptx-tr-switch-out-to-left {\n\tfrom { transform: perspective(800px) rotateY(0deg); opacity: 1; }\n\tto { transform: perspective(800px) rotateY(180deg); opacity: 0; }\n}\n@keyframes pptx-tr-switch-in-from-left {\n\tfrom { transform: perspective(800px) rotateY(180deg); opacity: 0; }\n\tto { transform: perspective(800px) rotateY(0deg); opacity: 1; }\n}\n@keyframes pptx-tr-switch-out-to-right {\n\tfrom { transform: perspective(800px) rotateY(0deg); opacity: 1; }\n\tto { transform: perspective(800px) rotateY(-180deg); opacity: 0; }\n}\n\n/* ── Vortex (rotate + scale spiral) ──────────────────────────────── */\n@keyframes pptx-tr-vortex-in {\n\tfrom { transform: rotate(720deg) scale(0); opacity: 0; }\n\tto { transform: rotate(0deg) scale(1); opacity: 1; }\n}\n@keyframes pptx-tr-vortex-out {\n\tfrom { transform: rotate(0deg) scale(1); opacity: 1; }\n\tto { transform: rotate(-720deg) scale(0); opacity: 0; }\n}\n\n/* ── Warp: see `slide-transition-warp` (COM-measured radial zoom blur,\n split out to keep this module under the per-file LOC budget) ────────── */\n\n@keyframes pptx-tr-warp-in {\n\t0% { transform: scale(0.25); opacity: 0; filter: blur(10px) brightness(1.8); }\n\t50% { transform: scale(0.85); opacity: 0.7; filter: blur(3px) brightness(1.3); }\n\t100% { transform: scale(1); opacity: 1; filter: blur(0) brightness(1); }\n}\n@keyframes pptx-tr-warp-out {\n\t0% { transform: scale(1); opacity: 1; filter: blur(0) brightness(1); }\n\t50% { transform: scale(0.85); opacity: 0.7; filter: blur(3px) brightness(1.3); }\n\t100% { transform: scale(0.25); opacity: 0; filter: blur(10px) brightness(1.8); }\n}\n@keyframes pptx-tr-warp-reverse-in {\n\t0% { transform: scale(3.2); opacity: 0; filter: blur(14px) brightness(2.2); }\n\t50% { transform: scale(1.7); opacity: 0.7; filter: blur(6px) brightness(1.5); }\n\t100% { transform: scale(1); opacity: 1; filter: blur(0) brightness(1); }\n}\n@keyframes pptx-tr-warp-reverse-out {\n\t0% { transform: scale(1); opacity: 1; filter: blur(0) brightness(1); }\n\t50% { transform: scale(1.7); opacity: 0.7; filter: blur(6px) brightness(1.5); }\n\t100% { transform: scale(3.2); opacity: 0; filter: blur(14px) brightness(2.2); }\n}\n\n\n/* ── WheelReverse (reverse wheel rotation) ───────────────────────── */\n@keyframes pptx-tr-wheel-reverse-in {\n\tfrom { clip-path: circle(0% at 50% 50%); transform: rotate(180deg); }\n\tto { clip-path: circle(75% at 50% 50%); transform: rotate(0deg); }\n}\n\n/* ── Window (scale from center with border) ──────────────────────────\n Same measured horz/vert meaning as Doors above (horz = horizontal split\n line opening vertically; vert = vertical split line opening horizontally). */\n@keyframes pptx-tr-window-horz {\n\tfrom { clip-path: inset(50% 0); }\n\tto { clip-path: inset(0 0); }\n}\n@keyframes pptx-tr-window-vert {\n\tfrom { clip-path: inset(0 50%); }\n\tto { clip-path: inset(0 0); }\n}\n@keyframes pptx-tr-window-out {\n\tfrom { opacity: 1; transform: scale(1); }\n\tto { opacity: 0; transform: scale(0.9); }\n}\n\n\n@keyframes pptx-tr-vortex-in-left { from { transform: translateX(-40%) rotate(720deg) scale(0); opacity: 0; } to { transform: translateX(0) rotate(0deg) scale(1); opacity: 1; } }\n@keyframes pptx-tr-vortex-out-left { from { transform: translateX(0) rotate(0deg) scale(1); opacity: 1; } to { transform: translateX(-40%) rotate(-720deg) scale(0); opacity: 0; } }\n@keyframes pptx-tr-vortex-in-right { from { transform: translateX(40%) rotate(-720deg) scale(0); opacity: 0; } to { transform: translateX(0) rotate(0deg) scale(1); opacity: 1; } }\n@keyframes pptx-tr-vortex-out-right { from { transform: translateX(0) rotate(0deg) scale(1); opacity: 1; } to { transform: translateX(40%) rotate(720deg) scale(0); opacity: 0; } }\n@keyframes pptx-tr-vortex-in-up { from { transform: translateY(-40%) rotate(720deg) scale(0); opacity: 0; } to { transform: translateY(0) rotate(0deg) scale(1); opacity: 1; } }\n@keyframes pptx-tr-vortex-out-up { from { transform: translateY(0) rotate(0deg) scale(1); opacity: 1; } to { transform: translateY(-40%) rotate(-720deg) scale(0); opacity: 0; } }\n@keyframes pptx-tr-vortex-in-down { from { transform: translateY(40%) rotate(-720deg) scale(0); opacity: 0; } to { transform: translateY(0) rotate(0deg) scale(1); opacity: 1; } }\n@keyframes pptx-tr-vortex-out-down { from { transform: translateY(0) rotate(0deg) scale(1); opacity: 1; } to { transform: translateY(40%) rotate(720deg) scale(0); opacity: 0; } }\n\n\n@keyframes pptx-tr-ripple-in-lu { from { clip-path: circle(0% at 0% 0%); opacity: 0.5; } 30% { clip-path: circle(20% at 0% 0%); opacity: 0.7; } 60% { clip-path: circle(55% at 0% 0%); opacity: 0.9; } to { clip-path: circle(150% at 0% 0%); opacity: 1; } }\n@keyframes pptx-tr-ripple-in-ru { from { clip-path: circle(0% at 100% 0%); opacity: 0.5; } 30% { clip-path: circle(20% at 100% 0%); opacity: 0.7; } 60% { clip-path: circle(55% at 100% 0%); opacity: 0.9; } to { clip-path: circle(150% at 100% 0%); opacity: 1; } }\n@keyframes pptx-tr-ripple-in-ld { from { clip-path: circle(0% at 0% 100%); opacity: 0.5; } 30% { clip-path: circle(20% at 0% 100%); opacity: 0.7; } 60% { clip-path: circle(55% at 0% 100%); opacity: 0.9; } to { clip-path: circle(150% at 0% 100%); opacity: 1; } }\n@keyframes pptx-tr-ripple-in-rd { from { clip-path: circle(0% at 100% 100%); opacity: 0.5; } 30% { clip-path: circle(20% at 100% 100%); opacity: 0.7; } 60% { clip-path: circle(55% at 100% 100%); opacity: 0.9; } to { clip-path: circle(150% at 100% 100%); opacity: 1; } }\n\n\n@keyframes pptx-tr-glitter-diamond-in-l { from { opacity: 0; transform: translateX(-6%); filter: brightness(1.5) contrast(1.3) blur(2px); } 60% { opacity: 0.7; transform: translateX(-2%); filter: brightness(1.2) contrast(1.1) blur(1px); } to { opacity: 1; transform: translateX(0); filter: brightness(1) contrast(1) blur(0); } }\n@keyframes pptx-tr-glitter-diamond-in-r { from { opacity: 0; transform: translateX(6%); filter: brightness(1.5) contrast(1.3) blur(2px); } 60% { opacity: 0.7; transform: translateX(2%); filter: brightness(1.2) contrast(1.1) blur(1px); } to { opacity: 1; transform: translateX(0); filter: brightness(1) contrast(1) blur(0); } }\n@keyframes pptx-tr-glitter-diamond-in-u { from { opacity: 0; transform: translateY(-6%); filter: brightness(1.5) contrast(1.3) blur(2px); } 60% { opacity: 0.7; transform: translateY(-2%); filter: brightness(1.2) contrast(1.1) blur(1px); } to { opacity: 1; transform: translateY(0); filter: brightness(1) contrast(1) blur(0); } }\n@keyframes pptx-tr-glitter-diamond-in-d { from { opacity: 0; transform: translateY(6%); filter: brightness(1.5) contrast(1.3) blur(2px); } 60% { opacity: 0.7; transform: translateY(2%); filter: brightness(1.2) contrast(1.1) blur(1px); } to { opacity: 1; transform: translateY(0); filter: brightness(1) contrast(1) blur(0); } }\n@keyframes pptx-tr-glitter-hexagon-in-l { from { opacity: 0; transform: translateX(-6%); filter: brightness(1.5) contrast(1.3) blur(2px) hue-rotate(20deg); } 60% { opacity: 0.7; transform: translateX(-2%); filter: brightness(1.2) contrast(1.1) blur(1px) hue-rotate(8deg); } to { opacity: 1; transform: translateX(0); filter: brightness(1) contrast(1) blur(0) hue-rotate(0deg); } }\n@keyframes pptx-tr-glitter-hexagon-in-r { from { opacity: 0; transform: translateX(6%); filter: brightness(1.5) contrast(1.3) blur(2px) hue-rotate(20deg); } 60% { opacity: 0.7; transform: translateX(2%); filter: brightness(1.2) contrast(1.1) blur(1px) hue-rotate(8deg); } to { opacity: 1; transform: translateX(0); filter: brightness(1) contrast(1) blur(0) hue-rotate(0deg); } }\n@keyframes pptx-tr-glitter-hexagon-in-u { from { opacity: 0; transform: translateY(-6%); filter: brightness(1.5) contrast(1.3) blur(2px) hue-rotate(20deg); } 60% { opacity: 0.7; transform: translateY(-2%); filter: brightness(1.2) contrast(1.1) blur(1px) hue-rotate(8deg); } to { opacity: 1; transform: translateY(0); filter: brightness(1) contrast(1) blur(0) hue-rotate(0deg); } }\n@keyframes pptx-tr-glitter-hexagon-in-d { from { opacity: 0; transform: translateY(6%); filter: brightness(1.5) contrast(1.3) blur(2px) hue-rotate(20deg); } 60% { opacity: 0.7; transform: translateY(2%); filter: brightness(1.2) contrast(1.1) blur(1px) hue-rotate(8deg); } to { opacity: 1; transform: translateY(0); filter: brightness(1) contrast(1) blur(0) hue-rotate(0deg); } }\n";
|
|
721
|
-
//#endregion
|
|
722
|
-
//#region src/render/p14-transition-css.d.ts
|
|
723
|
-
/**
|
|
724
|
-
* Return CSS animation descriptors for p14 transition types. Returns
|
|
725
|
-
* `undefined` when the type is not a p14 transition.
|
|
726
|
-
*/
|
|
727
|
-
declare function getP14TransitionAnimations(type: PptxTransitionType, durationMs: number, direction: string | undefined, orient?: string | undefined, pattern?: string | undefined): SlideTransitionAnimations | undefined;
|
|
728
|
-
//#endregion
|
|
729
|
-
//#region src/render/presentation-session-types.d.ts
|
|
730
|
-
interface PresentationSnapshot {
|
|
731
|
-
slideIndex: number;
|
|
732
|
-
buildStep: number;
|
|
733
|
-
sequence: number;
|
|
734
|
-
blackout: 'none' | 'black' | 'white';
|
|
735
|
-
paused: boolean;
|
|
736
|
-
elapsedMs: number;
|
|
737
|
-
zoom?: PresentationZoomState;
|
|
738
|
-
pointer?: PresentationPointerState;
|
|
739
|
-
inkStrokes?: PresentationInkStroke[];
|
|
740
|
-
/**
|
|
741
|
-
* Whether ink markup is drawn (PowerPoint's Ctrl+M). Undefined means visible,
|
|
742
|
-
* so existing snapshots keep showing their ink. Hiding never discards the
|
|
743
|
-
* strokes, which stay in `inkStrokes` and can be kept on exit.
|
|
744
|
-
*/
|
|
745
|
-
inkMarkupVisible?: boolean;
|
|
746
|
-
caption?: string;
|
|
747
|
-
subtitlesVisible?: boolean;
|
|
748
|
-
}
|
|
749
|
-
interface PresentationZoomState {
|
|
750
|
-
scale: number;
|
|
751
|
-
originX: number;
|
|
752
|
-
originY: number;
|
|
753
|
-
}
|
|
754
|
-
type PresentationPointerTool = 'none' | 'laser' | 'pen' | 'highlighter' | 'eraser';
|
|
755
|
-
interface PresentationPointerState {
|
|
756
|
-
tool: PresentationPointerTool;
|
|
757
|
-
x: number;
|
|
758
|
-
y: number;
|
|
759
|
-
color: string;
|
|
760
|
-
}
|
|
761
|
-
interface PresentationInkPoint {
|
|
762
|
-
x: number;
|
|
763
|
-
y: number;
|
|
764
|
-
}
|
|
765
|
-
interface PresentationInkStroke {
|
|
766
|
-
id: string;
|
|
767
|
-
slideIndex: number;
|
|
768
|
-
tool: 'pen' | 'highlighter';
|
|
769
|
-
color: string;
|
|
770
|
-
width: number;
|
|
771
|
-
points: PresentationInkPoint[];
|
|
772
|
-
}
|
|
773
|
-
//#endregion
|
|
774
|
-
//#region src/render/presentation-blackboard.d.ts
|
|
775
|
-
/** Blackout state, as carried by {@link PresentationSnapshot}. */
|
|
776
|
-
type PresentationBlackout = PresentationSnapshot['blackout'];
|
|
777
|
-
//#endregion
|
|
778
|
-
//#region src/render/chrome-controls-state.d.ts
|
|
779
|
-
type ChromeTranslate = (key: string, params?: Record<string, string | number>) => string;
|
|
780
|
-
type ReadOnlyBannerPasswordError = 'wrong-password' | 'unsupported-algorithm';
|
|
781
|
-
interface ReadOnlyBannerViewState {
|
|
782
|
-
/** `ReadOnlyRecommendation.kind`; mirrored onto the host's `data-kind`. */
|
|
783
|
-
kind: string | null;
|
|
784
|
-
/** `ReadOnlyRecommendation.messageKey`, translated by `translate`. */
|
|
785
|
-
messageKey: string;
|
|
786
|
-
/** Swap the Edit anyway / Dismiss pair for the inline password form. */
|
|
787
|
-
passwordPromptOpen?: boolean;
|
|
788
|
-
passwordError?: ReadOnlyBannerPasswordError | null;
|
|
789
|
-
/** Disables the form while a submitted password is being checked. */
|
|
790
|
-
checkingPassword?: boolean;
|
|
791
|
-
translate?: ChromeTranslate;
|
|
792
|
-
}
|
|
793
|
-
interface PasteOptionsViewState {
|
|
794
|
-
/** Right edge of the pasted element in viewport pixels. */
|
|
795
|
-
left: number;
|
|
796
|
-
/** Bottom edge of the pasted element in viewport pixels. */
|
|
797
|
-
top: number;
|
|
798
|
-
translate?: ChromeTranslate;
|
|
799
|
-
}
|
|
800
|
-
interface CompatToastViewItem {
|
|
801
|
-
readonly id: string;
|
|
802
|
-
readonly code: string;
|
|
803
|
-
readonly severity: 'info' | 'warning';
|
|
804
|
-
readonly messageKey: string;
|
|
805
|
-
readonly params?: Readonly<Record<string, string>>;
|
|
806
|
-
}
|
|
807
|
-
interface CompatToastsViewState {
|
|
808
|
-
/** Dismiss-filtered toasts. The element shows the first {@link COMPAT_TOAST_VISIBLE_LIMIT}. */
|
|
809
|
-
toasts: readonly CompatToastViewItem[];
|
|
810
|
-
/** Extra toasts a host already trimmed off the list it passes. */
|
|
811
|
-
overflowCount?: number;
|
|
812
|
-
/** Width of the open right-docked panel (see `compatToastStackStyle`). */
|
|
813
|
-
rightInset?: number;
|
|
814
|
-
/** Live height of the docked notes strip (see `compatToastStackStyle`). */
|
|
815
|
-
bottomInset?: number;
|
|
816
|
-
translate?: ChromeTranslate;
|
|
817
|
-
}
|
|
818
|
-
type DialogFooterVariant = 'secondary' | 'primary' | 'warning' | 'danger';
|
|
819
|
-
type DialogFooterIcon = 'trash' | 'pen' | 'restore' | 'print' | 'check';
|
|
820
|
-
interface DialogFooterAction {
|
|
821
|
-
/** Stable id echoed back in the `dialog-footer-request` intent. */
|
|
822
|
-
id: string;
|
|
823
|
-
/** Already-translated visible label and accessible name. */
|
|
824
|
-
label: string;
|
|
825
|
-
variant?: DialogFooterVariant;
|
|
826
|
-
icon?: DialogFooterIcon;
|
|
827
|
-
disabled?: boolean;
|
|
828
|
-
/** Work in flight: the button is disabled, `aria-busy` and shows a spinner. */
|
|
829
|
-
busy?: boolean;
|
|
830
|
-
/** Tooltip (`title`) for an action whose label needs a longer hint. */
|
|
831
|
-
title?: string;
|
|
832
|
-
/** `start` pins a tertiary action (Remove link, Reset all) to the left edge. */
|
|
833
|
-
align?: 'start' | 'end';
|
|
834
|
-
/** Optional `data-testid` stamped on the button. */
|
|
835
|
-
testId?: string;
|
|
836
|
-
}
|
|
837
|
-
interface DialogFooterViewState {
|
|
838
|
-
actions: readonly DialogFooterAction[];
|
|
839
|
-
}
|
|
840
|
-
type MobileBarId = 'slides' | 'insert' | 'inspector' | 'comments' | 'notes';
|
|
841
|
-
interface MobileBarViewState {
|
|
842
|
-
/** Every button disables at 0 (see `buildBarActions`). */
|
|
843
|
-
slideCount: number;
|
|
844
|
-
/** The button whose sheet is open; reflected as `aria-pressed` and a top pill. */
|
|
845
|
-
activeSheet?: MobileBarId | null;
|
|
846
|
-
/** Comment count on the badge of Comments (`99+` above 99). */
|
|
847
|
-
commentCount?: number;
|
|
848
|
-
/** Buttons dropped entirely, such as Notes when `hiddenActions` hides it. */
|
|
849
|
-
hidden?: readonly MobileBarId[];
|
|
850
|
-
/** Buttons disabled beyond the no-slides rule, such as edit-only ones in view mode. */
|
|
851
|
-
disabled?: readonly MobileBarId[];
|
|
852
|
-
translate?: ChromeTranslate;
|
|
853
|
-
}
|
|
854
|
-
type MobileToolbarId = 'menu' | 'undo' | 'redo' | 'ai' | 'save' | 'present' | 'share';
|
|
855
|
-
interface MobileToolbarViewState {
|
|
856
|
-
/** Menu, Undo, Redo, AI and Share only show while editing. */
|
|
857
|
-
editable: boolean;
|
|
858
|
-
canUndo: boolean;
|
|
859
|
-
canRedo: boolean;
|
|
860
|
-
/** Host opted into the AI assistant; the element draws its toggle. */
|
|
861
|
-
aiVisible?: boolean;
|
|
862
|
-
aiActive?: boolean;
|
|
863
|
-
/** Reflected as `aria-expanded` on Menu when given. */
|
|
864
|
-
menuOpen?: boolean;
|
|
865
|
-
/** Buttons dropped entirely (`hiddenActions`, or Share when the host has none). */
|
|
866
|
-
hidden?: readonly MobileToolbarId[];
|
|
867
|
-
/** Buttons disabled, such as Present while there is nothing to present. */
|
|
868
|
-
disabled?: readonly MobileToolbarId[];
|
|
869
|
-
translate?: ChromeTranslate;
|
|
870
|
-
}
|
|
871
|
-
interface PresentToolbarViewState {
|
|
872
|
-
/** Zero-based slide on screen. */
|
|
873
|
-
current: number;
|
|
874
|
-
total: number;
|
|
875
|
-
/** The armed annotation tool; `none` leaves every tool unpressed. */
|
|
876
|
-
tool: PresentationPointerTool;
|
|
877
|
-
penColor: string;
|
|
878
|
-
highlighterColor: string;
|
|
879
|
-
hasAnnotations: boolean;
|
|
880
|
-
/** With the pen, marks the Blackboard toggle active (`isBlackboardActive`). */
|
|
881
|
-
blackout: PresentationBlackout;
|
|
882
|
-
/** Show the presenter-view toggle (default false). */
|
|
883
|
-
presenterViewVisible?: boolean;
|
|
884
|
-
presenterViewActive?: boolean;
|
|
885
|
-
/** Epoch ms the show started. The element ticks the readout; null shows 00:00. */
|
|
886
|
-
startTime: number | null;
|
|
887
|
-
translate?: ChromeTranslate;
|
|
888
|
-
}
|
|
889
|
-
interface PresenterConsoleViewState {
|
|
890
|
-
/** Ids of toggles that read as on (and the resume / close-window variants). */
|
|
891
|
-
active: readonly string[];
|
|
892
|
-
/** Ids of controls that are disabled. */
|
|
893
|
-
disabled: readonly string[];
|
|
894
|
-
translate?: ChromeTranslate;
|
|
895
|
-
}
|
|
896
|
-
/** One placeholder outline, already positioned in unscaled slide space. */
|
|
897
|
-
interface LayoutPreviewFrame {
|
|
898
|
-
/** Stable key for list rendering. */
|
|
899
|
-
key: string;
|
|
900
|
-
type: string;
|
|
901
|
-
left: number;
|
|
902
|
-
top: number;
|
|
903
|
-
width: number;
|
|
904
|
-
height: number;
|
|
905
|
-
}
|
|
906
|
-
/** Everything a binding needs to render one thumbnail. */
|
|
907
|
-
interface LayoutPreviewGeometry {
|
|
908
|
-
/** Outer box, in CSS pixels. */
|
|
909
|
-
boxWidth: number;
|
|
910
|
-
boxHeight: number;
|
|
911
|
-
/** Inner surface size, in unscaled slide pixels. */
|
|
912
|
-
surfaceWidth: number;
|
|
913
|
-
surfaceHeight: number;
|
|
914
|
-
/** Factor to apply as `transform: scale(...)` on the inner surface. */
|
|
915
|
-
scale: number;
|
|
916
|
-
backgroundColor: string;
|
|
917
|
-
/**
|
|
918
|
-
* Border width for placeholder outlines, pre-divided by {@link scale}.
|
|
919
|
-
*
|
|
920
|
-
* The outlines live inside the scaled surface, so a plain 1.5px border
|
|
921
|
-
* would be multiplied down to a hairline that vanishes at thumbnail size.
|
|
922
|
-
* Dividing here keeps the drawn width constant on screen whatever the
|
|
923
|
-
* slide dimensions are.
|
|
924
|
-
*/
|
|
925
|
-
frameBorderWidth: number;
|
|
926
|
-
frames: LayoutPreviewFrame[];
|
|
927
|
-
}
|
|
928
|
-
//#endregion
|
|
929
|
-
//#region src/render/command-search.d.ts
|
|
930
|
-
/**
|
|
931
|
-
* Command-search data for the PowerPoint-style "Tell me what you want to do"
|
|
932
|
-
* search bar. Provides searchable command entries grouped by category, each
|
|
933
|
-
* mapping a label translation key to a command identifier that bindings can
|
|
934
|
-
* dispatch.
|
|
935
|
-
*/
|
|
936
|
-
interface CommandSearchEntry {
|
|
937
|
-
/** Translation key for the display label. */
|
|
938
|
-
labelKey: string;
|
|
939
|
-
/** Command identifier dispatched to the host binding. */
|
|
940
|
-
command: string;
|
|
941
|
-
/** Optional icon hint (binding resolves to framework icon component). */
|
|
942
|
-
icon?: string;
|
|
943
|
-
/** Category grouping key; hosts with their own short list may omit it. */
|
|
944
|
-
category?: 'format' | 'insert' | 'view' | 'slideShow' | 'design' | 'arrange';
|
|
945
|
-
}
|
|
946
|
-
interface SubtitleSettings {
|
|
947
|
-
spokenLanguage: string;
|
|
948
|
-
}
|
|
949
|
-
interface SubtitleSettingsLabels {
|
|
950
|
-
title: string;
|
|
951
|
-
language: string;
|
|
952
|
-
browserLanguage: string;
|
|
953
|
-
description: string;
|
|
954
|
-
apply: string;
|
|
955
|
-
cancel: string;
|
|
956
|
-
}
|
|
957
|
-
//#endregion
|
|
958
|
-
//#region src/render/ribbon-galleries/gallery-types.d.ts
|
|
959
|
-
/** Every gallery the ribbon offers. */
|
|
960
|
-
type RibbonGalleryId = 'shapeStyles' | 'shapeEffects' | 'wordArtStyles' | 'pictureStyles' | 'pictureCorrections' | 'pictureColor' | 'pictureArtisticEffects' | 'bullets' | 'numbering' | 'tableStyles' | 'chartStyles' | 'chartColors' | 'chartQuickLayout' | 'smartArtStyles' | 'smartArtColors' | 'smartArtLayouts' | 'smartArtAddShape' | 'smartArtAddBullet' | 'smartArtTextPane' | 'smartArtPromote' | 'smartArtDemote' | 'smartArtRightToLeft' | 'smartArtMoveUp' | 'smartArtMoveDown' | 'smartArtResetGraphic' | 'smartArtConvert' | 'themeColors' | 'themeFonts';
|
|
961
|
-
/** One tile. */
|
|
962
|
-
interface RibbonGalleryItem {
|
|
963
|
-
/** Stable within its gallery; what `applyRibbonGalleryItem` takes. */
|
|
964
|
-
id: string;
|
|
965
|
-
/** i18n key of the tile's accessible name / tooltip. */
|
|
966
|
-
labelKey: string;
|
|
967
|
-
/** `{{name}}` interpolation values for `labelKey`. */
|
|
968
|
-
labelParams?: Readonly<Record<string, string | number>>;
|
|
969
|
-
/** English fallback for bindings whose dictionary lacks `labelKey`. */
|
|
970
|
-
label: string;
|
|
971
|
-
/**
|
|
972
|
-
* A complete, self-contained `<svg>` element (width/height/viewBox set).
|
|
973
|
-
* Built only from catalogue data and theme colours, never from user text,
|
|
974
|
-
* so it is safe to inject as markup.
|
|
975
|
-
*/
|
|
976
|
-
previewSvg: string;
|
|
977
|
-
/**
|
|
978
|
-
* CSS `filter` the tile's preview carries (the Picture Adjust galleries),
|
|
979
|
-
* for a host that draws the thumbnail over a real image instead of
|
|
980
|
-
* `previewSvg`. Omitted when the preset has no CSS-expressible preview.
|
|
981
|
-
*/
|
|
982
|
-
previewFilter?: string;
|
|
983
|
-
/** True when this entry is what the selection currently carries. */
|
|
984
|
-
applied: boolean;
|
|
985
|
-
}
|
|
986
|
-
/** A titled block of tiles (PowerPoint's "Theme Styles" / "Presets"). */
|
|
987
|
-
interface RibbonGallerySection {
|
|
988
|
-
id: string;
|
|
989
|
-
/** i18n key of the section heading; omitted for an untitled section. */
|
|
990
|
-
titleKey?: string;
|
|
991
|
-
title?: string;
|
|
992
|
-
/** Tiles per row in the dropped-down grid. */
|
|
993
|
-
columns: number;
|
|
994
|
-
/** Preview tile size in CSS px (the SVG's own width/height). */
|
|
995
|
-
tileWidth: number;
|
|
996
|
-
tileHeight: number;
|
|
997
|
-
items: RibbonGalleryItem[];
|
|
998
|
-
}
|
|
999
|
-
interface RibbonGalleryDescriptor {
|
|
1000
|
-
id: RibbonGalleryId;
|
|
1001
|
-
/** i18n key of the gallery trigger / group caption. */
|
|
1002
|
-
labelKey: string;
|
|
1003
|
-
label: string;
|
|
1004
|
-
sections: RibbonGallerySection[];
|
|
1005
|
-
/** True when the selection cannot take this gallery (trigger disabled). */
|
|
1006
|
-
disabled: boolean;
|
|
1007
|
-
/**
|
|
1008
|
-
* Set when the entry is a one-button command (PowerPoint's Add Shape, Reset
|
|
1009
|
-
* Graphic, ...) rather than a gallery: the element draws a plain command, a
|
|
1010
|
-
* click picks its only item and no panel opens.
|
|
1011
|
-
*/
|
|
1012
|
-
command?: RibbonGalleryCommandView;
|
|
1013
|
-
}
|
|
1014
|
-
/** How a command-style entry draws (see {@link RibbonGalleryDescriptor.command}). */
|
|
1015
|
-
interface RibbonGalleryCommandView {
|
|
1016
|
-
/** SVG path data on a 20px grid. */
|
|
1017
|
-
iconPath: string;
|
|
1018
|
-
/** Icon above the label (PowerPoint's large button) instead of beside it. */
|
|
1019
|
-
large?: boolean;
|
|
1020
|
-
/** i18n key and English fallback of the tooltip, e.g. why the command is unavailable. */
|
|
1021
|
-
hintKey?: string;
|
|
1022
|
-
hint?: string;
|
|
1023
|
-
}
|
|
1024
|
-
type ThemeEditorLabels = Record<string, string>;
|
|
1025
|
-
/**
|
|
1026
|
-
* Controlled Animations tab state. Hosts own the slide model, selection,
|
|
1027
|
-
* history and the inspector; the view only reflects these values.
|
|
1028
|
-
*/
|
|
1029
|
-
interface RibbonAnimationsViewState {
|
|
1030
|
-
/** False in read-only hosts: every authoring intent is rejected. */
|
|
1031
|
-
editable: boolean;
|
|
1032
|
-
/** Whether an element is selected; effects always target one element. */
|
|
1033
|
-
hasSelection: boolean;
|
|
1034
|
-
/** Whether the Animation Pane (inspector) is open; reflected as pressed. */
|
|
1035
|
-
paneOpen?: boolean;
|
|
1036
|
-
/** Transient highlight while a host's Preview is playing, where it tracks one. */
|
|
1037
|
-
previewActive?: boolean;
|
|
1038
|
-
translate?: (key: string) => string;
|
|
1039
|
-
}
|
|
1040
|
-
//#endregion
|
|
1041
|
-
//#region src/render/ribbon-draw-state.d.ts
|
|
1042
|
-
type RibbonDrawTool = 'select' | 'pen' | 'highlighter' | 'eraser' | 'freeform';
|
|
1043
|
-
interface RibbonDrawViewState {
|
|
1044
|
-
tool: RibbonDrawTool;
|
|
1045
|
-
color: string;
|
|
1046
|
-
width: number;
|
|
1047
|
-
editable: boolean;
|
|
1048
|
-
recentColors?: readonly string[];
|
|
1049
|
-
translate?: (key: string) => string;
|
|
1050
|
-
}
|
|
1051
|
-
/**
|
|
1052
|
-
* Controlled Insert tab state. Native viewers own the selections, every document
|
|
1053
|
-
* mutation, the file/shape/SmartArt/equation/hyperlink dialogs and history.
|
|
1054
|
-
*/
|
|
1055
|
-
interface RibbonInsertState {
|
|
1056
|
-
editable: boolean;
|
|
1057
|
-
/** A hyperlink always attaches to something, so Link tracks the selection. */
|
|
1058
|
-
hasSelection: boolean;
|
|
1059
|
-
/** The shape preset staged in the Shape picker. */
|
|
1060
|
-
shapeType: string;
|
|
1061
|
-
/** The chart entry staged in the Chart picker. */
|
|
1062
|
-
chartKind: string;
|
|
1063
|
-
/** The armed Freeform: Shape / Curve tool. */
|
|
1064
|
-
activeFreeformTool?: string | null;
|
|
1065
|
-
/** Visible Freeform tools; empty hides the buttons (host customization). */
|
|
1066
|
-
freeformTools?: readonly string[];
|
|
1067
|
-
/** Hosts without these capabilities hide the control instead of showing a dead one. */
|
|
1068
|
-
chartAvailable?: boolean;
|
|
1069
|
-
fieldAvailable?: boolean;
|
|
1070
|
-
headerFooterAvailable?: boolean;
|
|
1071
|
-
translate?: (key: string) => string;
|
|
1072
|
-
}
|
|
1073
|
-
/** One row of a menu or select; labels are translated by the view unless `label` is set. */
|
|
1074
|
-
interface RibbonHomeItem {
|
|
1075
|
-
readonly value: string;
|
|
1076
|
-
/** Ready-made text (a font family, a layout name); wins over `labelKey`. */
|
|
1077
|
-
readonly label?: string;
|
|
1078
|
-
readonly labelKey?: string;
|
|
1079
|
-
readonly fallback?: string;
|
|
1080
|
-
readonly description?: string;
|
|
1081
|
-
readonly descriptionKey?: string;
|
|
1082
|
-
/** Heading of the group this row opens; consecutive rows share one heading. */
|
|
1083
|
-
readonly group?: string;
|
|
1084
|
-
readonly groupKey?: string;
|
|
1085
|
-
readonly checked?: boolean;
|
|
1086
|
-
readonly disabled?: boolean;
|
|
1087
|
-
/** Preview typeface of a font row. */
|
|
1088
|
-
readonly fontFamily?: string;
|
|
1089
|
-
/** Shared artwork key shown before the label (a shape glyph or ribbon icon). */
|
|
1090
|
-
readonly icon?: string;
|
|
1091
|
-
/** Preserved test or automation hooks (`data-pptx-merge-op`, ...). */
|
|
1092
|
-
readonly attrs?: Readonly<Record<string, string>>;
|
|
1093
|
-
/** Draws a divider above the row. */
|
|
1094
|
-
readonly separator?: boolean;
|
|
1095
|
-
}
|
|
1096
|
-
interface RibbonHomeControlState {
|
|
1097
|
-
disabled?: boolean;
|
|
1098
|
-
/** Omit for ordinary commands; a boolean reflects `aria-pressed`. */
|
|
1099
|
-
pressed?: boolean;
|
|
1100
|
-
/** Reserved for hosts that mirror their own popover; shared popovers set it themselves. */
|
|
1101
|
-
expanded?: boolean;
|
|
1102
|
-
hidden?: boolean;
|
|
1103
|
-
/** Select, number, colour bar and checked menu row. */
|
|
1104
|
-
value?: string | number;
|
|
1105
|
-
/** Menu or select rows that replace the spec's static ones. */
|
|
1106
|
-
items?: readonly RibbonHomeItem[];
|
|
1107
|
-
/** Colour popover content; the trigger shows `value` in its bar. */
|
|
1108
|
-
colour?: RibbonHomeColourModel;
|
|
1109
|
-
/** Layout gallery content. */
|
|
1110
|
-
layouts?: RibbonHomeLayoutModel;
|
|
1111
|
-
/** Embedded gallery content. */
|
|
1112
|
-
gallery?: {
|
|
1113
|
-
descriptor: RibbonGalleryDescriptor | undefined;
|
|
1114
|
-
disabled?: boolean;
|
|
1115
|
-
};
|
|
1116
|
-
}
|
|
1117
|
-
interface RibbonHomeColourModel {
|
|
1118
|
-
/** The deck's theme colour map; the popover derives the theme palette from it. */
|
|
1119
|
-
themeColors?: Readonly<Record<string, string>>;
|
|
1120
|
-
/** Theme reference of the current colour (highlights its swatch). */
|
|
1121
|
-
selectedRef?: PptxThemeColorRef;
|
|
1122
|
-
/** Recently used colours, newest first. */
|
|
1123
|
-
recent?: readonly string[];
|
|
1124
|
-
}
|
|
1125
|
-
interface RibbonHomeLayoutModel {
|
|
1126
|
-
layouts: readonly {
|
|
1127
|
-
path: string;
|
|
1128
|
-
name: string;
|
|
1129
|
-
}[];
|
|
1130
|
-
/** Marks the active tile; omitted by New Slide. */
|
|
1131
|
-
current?: string;
|
|
1132
|
-
/** Artwork data by layout path; tiles render name-only until it arrives. */
|
|
1133
|
-
previews?: Readonly<Record<string, PptxLayoutPreview>> | ReadonlyMap<string, PptxLayoutPreview>;
|
|
1134
|
-
}
|
|
1135
|
-
/** State key of a control: its id, or `id#part` when several buttons share one id. */
|
|
1136
|
-
type RibbonHomeKey = RibbonControlId | `${RibbonControlId}#${string}`;
|
|
1137
|
-
interface RibbonHomeViewState {
|
|
1138
|
-
/** Missing entries are enabled, unpressed and visible. */
|
|
1139
|
-
controls: Readonly<Partial<Record<RibbonHomeKey, RibbonHomeControlState>>>;
|
|
1140
|
-
translate?: (key: string) => string;
|
|
1141
|
-
}
|
|
1142
|
-
/** Controlled View tab state. Native viewers own the values and every side effect. */
|
|
1143
|
-
interface RibbonViewState {
|
|
1144
|
-
editable: boolean;
|
|
1145
|
-
showRulers: boolean;
|
|
1146
|
-
showGrid: boolean;
|
|
1147
|
-
showGuides: boolean;
|
|
1148
|
-
snapToGrid: boolean;
|
|
1149
|
-
snapToShape: boolean;
|
|
1150
|
-
templateEditing: boolean;
|
|
1151
|
-
selectionPaneOpen?: boolean;
|
|
1152
|
-
eyedropperActive?: boolean;
|
|
1153
|
-
/** Hosts without these capabilities hide the control instead of showing a dead one. */
|
|
1154
|
-
selectionPaneAvailable?: boolean;
|
|
1155
|
-
eyedropperAvailable?: boolean;
|
|
1156
|
-
zoomAvailable?: boolean;
|
|
1157
|
-
translate?: (key: string) => string;
|
|
1158
|
-
}
|
|
1159
|
-
//#endregion
|
|
1160
|
-
//#region src/render/ribbon-transitions-state.d.ts
|
|
1161
|
-
type RibbonTransitionsTranslate = (key: string, params?: Record<string, string>) => string;
|
|
1162
|
-
/** Controlled Transitions tab state. The host derives it from the ACTIVE slide. */
|
|
1163
|
-
interface RibbonTransitionsViewState {
|
|
1164
|
-
draft: RibbonTransitionDraft;
|
|
1165
|
-
/** The slide's transition, used only to list and select the Sound entries. */
|
|
1166
|
-
transition?: PptxSlideTransition;
|
|
1167
|
-
editable: boolean;
|
|
1168
|
-
inspectorOpen?: boolean;
|
|
1169
|
-
translate?: RibbonTransitionsTranslate;
|
|
1170
|
-
}
|
|
1171
|
-
//#endregion
|
|
1172
|
-
//#region src/render/status-bar-state.d.ts
|
|
1173
|
-
/**
|
|
1174
|
-
* Shared model for the bottom status bar (`pptx-ui-status-bar`).
|
|
1175
|
-
*
|
|
1176
|
-
* The slide counter, save indicator, notes toggle, view-mode buttons and zoom
|
|
1177
|
-
* cluster were hand-built five times. The view owns the markup, pressed state
|
|
1178
|
-
* and gating; hosts own every effect (notes panel, view switching, zoom).
|
|
1179
|
-
*/
|
|
1180
|
-
type StatusBarTranslate = (key: string, params?: Record<string, string | number>) => string;
|
|
1181
|
-
type StatusBarSaveKind = 'idle' | 'saving' | 'error';
|
|
1182
|
-
type StatusBarViewMode = 'normal' | 'sorter' | 'slideShow';
|
|
1183
|
-
interface StatusBarViewState {
|
|
1184
|
-
slideCount: number;
|
|
1185
|
-
/** Zero-based active slide; clamped into range for display. */
|
|
1186
|
-
activeSlideIndex: number;
|
|
1187
|
-
/** Already-translated save indicator, see {@link resolveStatusBarSave}. */
|
|
1188
|
-
saveText: string;
|
|
1189
|
-
saveKind?: StatusBarSaveKind;
|
|
1190
|
-
/** Omit to hide the whole zoom cluster. */
|
|
1191
|
-
zoomPercent?: number;
|
|
1192
|
-
showNotes?: boolean;
|
|
1193
|
-
notesExpanded?: boolean;
|
|
1194
|
-
/** Default true. False drops the Normal / Sorter / Slide Show cluster. */
|
|
1195
|
-
showViewModes?: boolean;
|
|
1196
|
-
/** Default true. */
|
|
1197
|
-
showSorter?: boolean;
|
|
1198
|
-
/** Default true. */
|
|
1199
|
-
showSlideShow?: boolean;
|
|
1200
|
-
/** The pressed view button; omit when none is active. */
|
|
1201
|
-
viewMode?: StatusBarViewMode;
|
|
1202
|
-
translate?: StatusBarTranslate;
|
|
1203
|
-
}
|
|
1204
|
-
//#endregion
|
|
1205
|
-
//#region src/render/notes-toolbar-state.d.ts
|
|
1206
|
-
/**
|
|
1207
|
-
* Shared model for the speaker-notes formatting toolbar (`pptx-ui-notes-toolbar`).
|
|
1208
|
-
*
|
|
1209
|
-
* The toolbar owns the buttons, their order, icons, labels, enabled state and
|
|
1210
|
-
* the hyperlink popover. Hosts own the contenteditable editor, selection-based
|
|
1211
|
-
* edits, history, printing and persistence, and route typed intents to them.
|
|
1212
|
-
*/
|
|
1213
|
-
type NotesToolbarTranslate = (key: string, params?: Record<string, string | number>) => string;
|
|
1214
|
-
interface NotesToolbarViewState {
|
|
1215
|
-
/** True while the rich (contenteditable) surface is active. Drives the mode button label. */
|
|
1216
|
-
rich: boolean;
|
|
1217
|
-
/** Enables the formatting buttons. False in the plain editor, where they cannot act. */
|
|
1218
|
-
canFormat: boolean;
|
|
1219
|
-
/** Shows the Print button. */
|
|
1220
|
-
showPrint: boolean;
|
|
1221
|
-
/** Disables every button, for example while no slide is selected. */
|
|
1222
|
-
disabled?: boolean;
|
|
1223
|
-
/** Host translator; keys are the canonical `pptx.notes.*` set. Omitted: keys are shown. */
|
|
1224
|
-
translate?: NotesToolbarTranslate;
|
|
1225
|
-
}
|
|
1226
|
-
//#endregion
|
|
1227
|
-
//#region src/render/title-bar-state.d.ts
|
|
1228
|
-
type TitleBarTranslate = (key: string, params?: Record<string, string | number>) => string;
|
|
1229
|
-
type TitleBarPlacement = 'titleBar' | 'belowRibbon';
|
|
1230
|
-
type TitleBarTone = 'idle' | 'saving' | 'error';
|
|
1231
|
-
interface TitleBarAutosaveView {
|
|
1232
|
-
enabled: boolean;
|
|
1233
|
-
/** Default true. False renders the switch inert (host policy `autosave: false`). */
|
|
1234
|
-
toggleAvailable?: boolean;
|
|
1235
|
-
/** Translation key from `resolveTitleBarStatusKey`. */
|
|
1236
|
-
statusKey: string;
|
|
1237
|
-
/** Colour of the status text; only meaningful while `enabled`. */
|
|
1238
|
-
tone?: TitleBarTone;
|
|
1239
|
-
}
|
|
1240
|
-
interface TitleBarHistoryState {
|
|
1241
|
-
canUndo: boolean;
|
|
1242
|
-
canRedo: boolean;
|
|
1243
|
-
/** Description of the pending action, e.g. "Delete shape". */
|
|
1244
|
-
undoLabel?: string | null;
|
|
1245
|
-
redoLabel?: string | null;
|
|
1246
|
-
/** Default true. Maps to `hiddenActions: ['undo']`. */
|
|
1247
|
-
showUndo?: boolean;
|
|
1248
|
-
/** Default true. Maps to `hiddenActions: ['redo']`. */
|
|
1249
|
-
showRedo?: boolean;
|
|
1250
|
-
}
|
|
1251
|
-
interface TitleBarQuickAccessView {
|
|
1252
|
-
visible: boolean;
|
|
1253
|
-
position: QuickAccessPosition;
|
|
1254
|
-
showCommandLabels: boolean;
|
|
1255
|
-
/** Ordered catalog ids (File > Options > Quick Access Toolbar). */
|
|
1256
|
-
commandIds: readonly string[];
|
|
1257
|
-
}
|
|
1258
|
-
interface TitleBarViewState {
|
|
1259
|
-
/** Edit mode with an editable deck. Gates AutoSave, the strip, status and search. */
|
|
1260
|
-
editing: boolean;
|
|
1261
|
-
/** Whether the command search shows; hosts pass `editing`. */
|
|
1262
|
-
searchVisible: boolean;
|
|
1263
|
-
/** Display name; the translated default shows when empty. */
|
|
1264
|
-
fileName?: string;
|
|
1265
|
-
autosave: TitleBarAutosaveView;
|
|
1266
|
-
history: TitleBarHistoryState;
|
|
1267
|
-
/** Default true. */
|
|
1268
|
-
showSave?: boolean;
|
|
1269
|
-
quickAccess: TitleBarQuickAccessView;
|
|
1270
|
-
/** Search catalogue; defaults to the shared `COMMAND_SEARCH_ENTRIES`. */
|
|
1271
|
-
commands?: readonly CommandSearchEntry[];
|
|
1272
|
-
/** Default true. False drops the "Find in Slides" fallback row. */
|
|
1273
|
-
contentSearch?: boolean;
|
|
1274
|
-
/** ScreenTip rule (Options > General); returning undefined suppresses the title. */
|
|
1275
|
-
screenTip?: (label: string) => string | undefined;
|
|
1276
|
-
translate?: TitleBarTranslate;
|
|
1277
|
-
}
|
|
1278
|
-
//#endregion
|
|
1279
|
-
//#region src/web-components/theme-editor.d.ts
|
|
1280
|
-
interface PptxUiThemeEditorElement extends HTMLElement {
|
|
1281
|
-
theme: PptxTheme | undefined;
|
|
1282
|
-
labels: ThemeEditorLabels;
|
|
1283
|
-
disabled: boolean;
|
|
1284
|
-
}
|
|
1285
|
-
declare global {
|
|
1286
|
-
interface HTMLElementTagNameMap {
|
|
1287
|
-
'pptx-ui-theme-editor': PptxUiThemeEditorElement;
|
|
1288
|
-
}
|
|
1289
|
-
}
|
|
1290
|
-
/** One row of a context menu. Hosts decide `id`, wording, gating and what activation does. */
|
|
1291
|
-
interface ContextMenuViewItem {
|
|
1292
|
-
/** Stable command id, echoed by `menu-request`. */
|
|
1293
|
-
id: string;
|
|
1294
|
-
/** Already-translated visible label. */
|
|
1295
|
-
label: string;
|
|
1296
|
-
/** Draw a rule before this row. */
|
|
1297
|
-
separatorBefore?: boolean;
|
|
1298
|
-
/** Group heading shown before this row; the row and the ones after it join that group. */
|
|
1299
|
-
heading?: string;
|
|
1300
|
-
/** Destructive command (Delete): tinted. */
|
|
1301
|
-
danger?: boolean;
|
|
1302
|
-
/** Offered but unavailable: announced and drawn dim, skipped by arrow keys. */
|
|
1303
|
-
disabled?: boolean;
|
|
1304
|
-
/** A toggle (Grid and Guides, Ruler) in this state; omitted for one-shot commands. */
|
|
1305
|
-
checked?: boolean;
|
|
1306
|
-
}
|
|
1307
|
-
/** Everything the controlled element needs to draw one menu. */
|
|
1308
|
-
interface ContextMenuViewState {
|
|
1309
|
-
/** Pointer position, in viewport pixels. The element clamps it into the window. */
|
|
1310
|
-
x: number;
|
|
1311
|
-
y: number;
|
|
1312
|
-
/** Accessible name of the menu. */
|
|
1313
|
-
label: string;
|
|
1314
|
-
items: readonly ContextMenuViewItem[];
|
|
1315
|
-
/**
|
|
1316
|
-
* Test-hook attributes copied onto the host element (`data-pptx-context-menu`,
|
|
1317
|
-
* `data-pptx-canvas-context-menu`, ...). Only `data-pptx-*` names are accepted.
|
|
1318
|
-
*/
|
|
1319
|
-
markers?: readonly string[];
|
|
1320
|
-
/** Stacking order; defaults to {@link CONTEXT_MENU_EDITOR_LAYER}. */
|
|
1321
|
-
zIndex?: number;
|
|
1322
|
-
/** Move focus onto the first command on open. Default true. */
|
|
1323
|
-
autoFocus?: boolean;
|
|
1324
|
-
}
|
|
1325
|
-
interface PptxUiCompatToastsElement extends HTMLElement {
|
|
1326
|
-
state: CompatToastsViewState;
|
|
1327
|
-
}
|
|
1328
|
-
interface PptxUiDialogFooterElement extends HTMLElement {
|
|
1329
|
-
state: DialogFooterViewState;
|
|
1330
|
-
/** Move keyboard focus to an action, e.g. the primary one when a dialog opens. */
|
|
1331
|
-
focusAction(id: string): void;
|
|
1332
|
-
}
|
|
1333
|
-
interface PptxUiPasteOptionsElement extends HTMLElement {
|
|
1334
|
-
state: PasteOptionsViewState;
|
|
1335
|
-
}
|
|
1336
|
-
interface PptxUiReadOnlyBannerElement extends HTMLElement {
|
|
1337
|
-
state: ReadOnlyBannerViewState;
|
|
1338
|
-
}
|
|
1339
|
-
interface PptxUiContextMenuElement extends HTMLElement {
|
|
1340
|
-
state: ContextMenuViewState;
|
|
1341
|
-
}
|
|
1342
|
-
declare global {
|
|
1343
|
-
interface HTMLElementTagNameMap {
|
|
1344
|
-
'pptx-ui-compat-toasts': PptxUiCompatToastsElement;
|
|
1345
|
-
'pptx-ui-context-menu': PptxUiContextMenuElement;
|
|
1346
|
-
'pptx-ui-dialog-footer': PptxUiDialogFooterElement;
|
|
1347
|
-
'pptx-ui-paste-options': PptxUiPasteOptionsElement;
|
|
1348
|
-
'pptx-ui-read-only-banner': PptxUiReadOnlyBannerElement;
|
|
1349
|
-
}
|
|
1350
|
-
}
|
|
1351
|
-
interface PptxUiMobileBarElement extends HTMLElement {
|
|
1352
|
-
state: MobileBarViewState;
|
|
1353
|
-
}
|
|
1354
|
-
declare global {
|
|
1355
|
-
interface HTMLElementTagNameMap {
|
|
1356
|
-
'pptx-ui-mobile-bar': PptxUiMobileBarElement;
|
|
1357
|
-
}
|
|
1358
|
-
}
|
|
1359
|
-
interface PptxUiMobileToolbarElement extends HTMLElement {
|
|
1360
|
-
state: MobileToolbarViewState;
|
|
1361
|
-
}
|
|
1362
|
-
declare global {
|
|
1363
|
-
interface HTMLElementTagNameMap {
|
|
1364
|
-
'pptx-ui-mobile-toolbar': PptxUiMobileToolbarElement;
|
|
1365
|
-
}
|
|
1366
|
-
}
|
|
1367
|
-
interface PptxUiPresentToolbarElement extends HTMLElement {
|
|
1368
|
-
state: PresentToolbarViewState;
|
|
1369
|
-
/** Close an open colour palette, e.g. when the host auto-hides the bar. */
|
|
1370
|
-
closePalettes(): void;
|
|
1371
|
-
}
|
|
1372
|
-
declare global {
|
|
1373
|
-
interface HTMLElementTagNameMap {
|
|
1374
|
-
'pptx-ui-present-toolbar': PptxUiPresentToolbarElement;
|
|
1375
|
-
}
|
|
1376
|
-
}
|
|
1377
|
-
interface PptxUiPresenterConsoleElement extends HTMLElement {
|
|
1378
|
-
state: PresenterConsoleViewState;
|
|
1379
|
-
}
|
|
1380
|
-
declare global {
|
|
1381
|
-
interface HTMLElementTagNameMap {
|
|
1382
|
-
'pptx-ui-presenter-console': PptxUiPresenterConsoleElement;
|
|
1383
|
-
}
|
|
1384
|
-
}
|
|
1385
|
-
interface PptxUiRibbonAnimationsElement extends HTMLElement {
|
|
1386
|
-
state: RibbonAnimationsViewState;
|
|
1387
|
-
}
|
|
1388
|
-
declare global {
|
|
1389
|
-
interface HTMLElementTagNameMap {
|
|
1390
|
-
'pptx-ui-ribbon-animations': PptxUiRibbonAnimationsElement;
|
|
1391
|
-
}
|
|
1392
|
-
}
|
|
1393
|
-
interface PptxUiRibbonDrawElement extends HTMLElement {
|
|
1394
|
-
state: RibbonDrawViewState;
|
|
1395
|
-
}
|
|
1396
|
-
declare global {
|
|
1397
|
-
interface HTMLElementTagNameMap {
|
|
1398
|
-
'pptx-ui-ribbon-draw': PptxUiRibbonDrawElement;
|
|
1399
|
-
}
|
|
1400
|
-
}
|
|
1401
|
-
//#endregion
|
|
1402
|
-
//#region src/web-components/ribbon-home-layout.d.ts
|
|
1403
|
-
/**
|
|
1404
|
-
* Draws a layout's real artwork inside a tile's scaled surface. The artwork is
|
|
1405
|
-
* element rendering that each binding owns; return a disposer to release it.
|
|
1406
|
-
*/
|
|
1407
|
-
type HomeLayoutArtwork = (preview: PptxLayoutPreview, geometry: LayoutPreviewGeometry, container: HTMLElement) => (() => void) | void;
|
|
1408
|
-
interface PptxUiRibbonHomeElement extends HTMLElement {
|
|
1409
|
-
state: RibbonHomeViewState;
|
|
1410
|
-
/** Draws a layout's real artwork inside a gallery tile; the host owns element rendering. */
|
|
1411
|
-
layoutArtwork: HomeLayoutArtwork | undefined;
|
|
1412
|
-
/** Wrapper (or button) of a control id. */
|
|
1413
|
-
anchor(id: string): HTMLElement | undefined;
|
|
1414
|
-
}
|
|
1415
|
-
declare global {
|
|
1416
|
-
interface HTMLElementTagNameMap {
|
|
1417
|
-
'pptx-ui-ribbon-home-clipboard': PptxUiRibbonHomeElement;
|
|
1418
|
-
'pptx-ui-ribbon-home-font': PptxUiRibbonHomeElement;
|
|
1419
|
-
'pptx-ui-ribbon-home-paragraph': PptxUiRibbonHomeElement;
|
|
1420
|
-
'pptx-ui-ribbon-home-editing': PptxUiRibbonHomeElement;
|
|
1421
|
-
'pptx-ui-ribbon-home-slides': PptxUiRibbonHomeElement;
|
|
1422
|
-
'pptx-ui-ribbon-home-drawing': PptxUiRibbonHomeElement;
|
|
1423
|
-
'pptx-ui-ribbon-home-arrange-align': PptxUiRibbonHomeElement;
|
|
1424
|
-
'pptx-ui-ribbon-home-arrange-flip': PptxUiRibbonHomeElement;
|
|
1425
|
-
'pptx-ui-ribbon-home-arrange-order': PptxUiRibbonHomeElement;
|
|
1426
|
-
'pptx-ui-ribbon-home-arrange-edit': PptxUiRibbonHomeElement;
|
|
1427
|
-
'pptx-ui-ribbon-home-font-picker': PptxUiRibbonHomeElement;
|
|
1428
|
-
'pptx-ui-ribbon-home-arrange-painter': PptxUiRibbonHomeElement;
|
|
1429
|
-
'pptx-ui-ribbon-home-arrange-shape': PptxUiRibbonHomeElement;
|
|
1430
|
-
}
|
|
1431
|
-
}
|
|
1432
|
-
interface PptxUiRibbonTransitionsElement extends HTMLElement {
|
|
1433
|
-
state: RibbonTransitionsViewState;
|
|
1434
|
-
}
|
|
1435
|
-
declare global {
|
|
1436
|
-
interface HTMLElementTagNameMap {
|
|
1437
|
-
'pptx-ui-ribbon-transitions': PptxUiRibbonTransitionsElement;
|
|
1438
|
-
}
|
|
1439
|
-
}
|
|
1440
|
-
interface PptxUiRibbonInsertElement extends HTMLElement {
|
|
1441
|
-
state: RibbonInsertState;
|
|
1442
|
-
/** Return focus to a control by its public id, e.g. after a native dialog closes. */
|
|
1443
|
-
focusControl(id: string): void;
|
|
1444
|
-
}
|
|
1445
|
-
declare global {
|
|
1446
|
-
interface HTMLElementTagNameMap {
|
|
1447
|
-
'pptx-ui-ribbon-insert': PptxUiRibbonInsertElement;
|
|
1448
|
-
}
|
|
1449
|
-
}
|
|
1450
|
-
interface PptxUiRibbonViewElement extends HTMLElement {
|
|
1451
|
-
state: RibbonViewState;
|
|
1452
|
-
}
|
|
1453
|
-
declare global {
|
|
1454
|
-
interface HTMLElementTagNameMap {
|
|
1455
|
-
'pptx-ui-ribbon-view': PptxUiRibbonViewElement;
|
|
1456
|
-
}
|
|
1457
|
-
}
|
|
1458
|
-
//#endregion
|
|
1459
|
-
//#region src/web-components/ribbon-section.d.ts
|
|
1460
|
-
interface PptxUiRibbonSectionElement extends HTMLElement {
|
|
1461
|
-
groups: readonly RibbonGroupView[];
|
|
1462
|
-
}
|
|
1463
|
-
declare global {
|
|
1464
|
-
interface HTMLElementTagNameMap {
|
|
1465
|
-
'pptx-ui-ribbon-section': PptxUiRibbonSectionElement;
|
|
1466
|
-
}
|
|
1467
|
-
}
|
|
1468
|
-
//#endregion
|
|
1469
|
-
//#region src/web-components/ribbon-gallery.d.ts
|
|
1470
|
-
type GalleryTranslate = (key: string, params?: Readonly<Record<string, string | number>>) => string;
|
|
1471
|
-
interface PptxUiRibbonGalleryElement extends HTMLElement {
|
|
1472
|
-
readonly trigger: HTMLButtonElement;
|
|
1473
|
-
readonly popup: HTMLElement;
|
|
1474
|
-
descriptor: RibbonGalleryDescriptor | undefined;
|
|
1475
|
-
translateLabel: GalleryTranslate;
|
|
1476
|
-
disabled: boolean;
|
|
1477
|
-
open: boolean;
|
|
1478
|
-
close(): void;
|
|
1479
|
-
}
|
|
1480
|
-
declare global {
|
|
1481
|
-
interface HTMLElementTagNameMap {
|
|
1482
|
-
'pptx-ui-ribbon-gallery': PptxUiRibbonGalleryElement;
|
|
1483
|
-
}
|
|
1484
|
-
}
|
|
1485
|
-
//#endregion
|
|
1486
|
-
//#region src/web-components/subtitle-settings.d.ts
|
|
1487
|
-
interface PptxUiSubtitleSettingsElement extends HTMLElement {
|
|
1488
|
-
settings: SubtitleSettings;
|
|
1489
|
-
labels: SubtitleSettingsLabels;
|
|
1490
|
-
languageDisabled: boolean;
|
|
1491
|
-
}
|
|
1492
|
-
declare global {
|
|
1493
|
-
interface HTMLElementTagNameMap {
|
|
1494
|
-
'pptx-ui-subtitle-settings': PptxUiSubtitleSettingsElement;
|
|
1495
|
-
}
|
|
1496
|
-
}
|
|
1497
|
-
interface PptxUiStatusBarElement extends HTMLElement {
|
|
1498
|
-
state: StatusBarViewState;
|
|
1499
|
-
}
|
|
1500
|
-
declare global {
|
|
1501
|
-
interface HTMLElementTagNameMap {
|
|
1502
|
-
'pptx-ui-status-bar': PptxUiStatusBarElement;
|
|
1503
|
-
}
|
|
1504
|
-
}
|
|
1505
|
-
interface PptxUiNotesToolbarElement extends HTMLElement {
|
|
1506
|
-
state: NotesToolbarViewState;
|
|
1507
|
-
}
|
|
1508
|
-
declare global {
|
|
1509
|
-
interface HTMLElementTagNameMap {
|
|
1510
|
-
'pptx-ui-notes-toolbar': PptxUiNotesToolbarElement;
|
|
1511
|
-
}
|
|
1512
|
-
}
|
|
1513
|
-
interface PptxUiTitleBarElement extends HTMLElement {
|
|
1514
|
-
state: TitleBarViewState | undefined;
|
|
1515
|
-
placement: TitleBarPlacement;
|
|
1516
|
-
}
|
|
1517
|
-
declare global {
|
|
1518
|
-
interface HTMLElementTagNameMap {
|
|
1519
|
-
'pptx-ui-title-bar': PptxUiTitleBarElement;
|
|
1520
|
-
}
|
|
1521
|
-
}
|
|
1522
|
-
//#endregion
|
|
1523
|
-
//#region src/web-components/select-value.d.ts
|
|
1524
|
-
/**
|
|
1525
|
-
* Public DOM shape of `pptx-ui-select`, used by every binding. The element is ooxml-ui's
|
|
1526
|
-
* `office-ui-select` under the pptx tag (see `office-aliases.ts`); it is not a native select.
|
|
1527
|
-
*/
|
|
1528
|
-
interface PptxUiSelectElement extends HTMLElement {
|
|
1529
|
-
value: string;
|
|
1530
|
-
disabled: boolean;
|
|
1531
|
-
readonly options: HTMLOptionElement[];
|
|
1532
|
-
selectedIndex: number;
|
|
1533
|
-
}
|
|
1534
|
-
declare global {
|
|
1535
|
-
interface HTMLElementTagNameMap {
|
|
1536
|
-
'pptx-ui-select': PptxUiSelectElement;
|
|
1537
|
-
}
|
|
1538
|
-
}
|
|
1539
|
-
//#endregion
|
|
1540
|
-
//#region src/render/slide-transition-cinematic.d.ts
|
|
1541
|
-
/**
|
|
1542
|
-
* Resolve a p15 cinematic transition to its CSS `animation` descriptors, or
|
|
1543
|
-
* `undefined` when the type is not a cinematic transition (so the caller can
|
|
1544
|
-
* fall through to the classic 2-D / p14 resolvers).
|
|
1545
|
-
*/
|
|
1546
|
-
declare function getCinematicTransitionAnimations(type: PptxTransitionType, durationMs: number, direction: string | undefined, orient?: string | undefined): SlideTransitionAnimations | undefined;
|
|
1547
|
-
/**
|
|
1548
|
-
* `@keyframes` backing every cinematic transition. Fold into the injected
|
|
1549
|
-
* aggregate (`SLIDE_TRANSITION_KEYFRAMES`) so these animate wherever it is
|
|
1550
|
-
* injected. `pptx-tr-fade-in` (reused by wind/fracture/airplane incoming) is
|
|
1551
|
-
* already defined in the core block, so it is intentionally not redefined here.
|
|
1552
|
-
*/
|
|
1553
|
-
declare const CINEMATIC_TRANSITION_KEYFRAMES: string;
|
|
1554
|
-
|
|
1555
6
|
/** Props for {@link PresentationTransitionOverlay}. */
|
|
1556
7
|
interface PresentationTransitionOverlayProps {
|
|
1557
8
|
outgoingSlide: PptxSlide | undefined;
|
|
@@ -1572,5 +23,5 @@ interface PresentationTransitionOverlayProps {
|
|
|
1572
23
|
*/
|
|
1573
24
|
declare const PresentationTransitionOverlay: Component<PresentationTransitionOverlayProps>;
|
|
1574
25
|
|
|
1575
|
-
export {
|
|
1576
|
-
export type { PresentationTransitionOverlayProps
|
|
26
|
+
export { PresentationTransitionOverlay };
|
|
27
|
+
export type { PresentationTransitionOverlayProps };
|