pptx-vue-viewer 4.2.0 → 4.4.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 +137 -0
- package/dist/{AiChatPanel-BAXxvQl4.js → AiChatPanel-BSYA-5sO.js} +2 -2
- package/dist/AiChatPanel-BSYA-5sO.js.br +0 -0
- package/dist/AiChatPanel-BSYA-5sO.js.gz +0 -0
- package/dist/{AiChatPanel-CMpvBPva.cjs → AiChatPanel-CXIXoGvw.cjs} +1 -1
- package/dist/AiChatPanel-CXIXoGvw.cjs.br +0 -0
- package/dist/AiChatPanel-CXIXoGvw.cjs.gz +0 -0
- package/dist/{dist-BgtJA5eT.js → dist-DePAwnQd.js} +29654 -24754
- package/dist/dist-DePAwnQd.js.br +0 -0
- package/dist/dist-DePAwnQd.js.gz +0 -0
- package/dist/{dist-3uZ0g742.cjs → dist-pqRGgB-Y.cjs} +25071 -20161
- package/dist/dist-pqRGgB-Y.cjs.br +0 -0
- package/dist/dist-pqRGgB-Y.cjs.gz +0 -0
- package/dist/gif-encoder-UuM_lSaB.cjs +2 -0
- package/dist/gif-encoder-UuM_lSaB.cjs.br +0 -0
- package/dist/gif-encoder-UuM_lSaB.cjs.gz +0 -0
- package/dist/gif-encoder-VqIUN8rL.js +2 -0
- package/dist/gif-encoder-VqIUN8rL.js.br +0 -0
- package/dist/gif-encoder-VqIUN8rL.js.gz +0 -0
- package/dist/i18n/de.cjs +25 -2
- package/dist/i18n/de.cjs.br +0 -0
- package/dist/i18n/de.cjs.gz +0 -0
- package/dist/i18n/de.mjs +25 -2
- package/dist/i18n/de.mjs.br +0 -0
- package/dist/i18n/de.mjs.gz +0 -0
- package/dist/i18n/es.cjs +25 -2
- package/dist/i18n/es.cjs.br +0 -0
- package/dist/i18n/es.cjs.gz +0 -0
- package/dist/i18n/es.mjs +25 -2
- package/dist/i18n/es.mjs.br +0 -0
- package/dist/i18n/es.mjs.gz +0 -0
- package/dist/i18n/fr.cjs +25 -2
- package/dist/i18n/fr.cjs.br +0 -0
- package/dist/i18n/fr.cjs.gz +0 -0
- package/dist/i18n/fr.mjs +25 -2
- package/dist/i18n/fr.mjs.br +0 -0
- package/dist/i18n/fr.mjs.gz +0 -0
- package/dist/i18n/zh-CN.cjs +25 -2
- package/dist/i18n/zh-CN.cjs.br +0 -0
- package/dist/i18n/zh-CN.cjs.gz +0 -0
- package/dist/i18n/zh-CN.mjs +25 -2
- package/dist/i18n/zh-CN.mjs.br +0 -0
- package/dist/i18n/zh-CN.mjs.gz +0 -0
- package/dist/{i18n-cTdK-NvK.js → i18n-BvC7LHx1.js} +25 -2
- package/dist/i18n-BvC7LHx1.js.br +0 -0
- package/dist/i18n-BvC7LHx1.js.gz +0 -0
- package/dist/{i18n-BUjfZOiM.cjs → i18n-RCD4vrq3.cjs} +25 -2
- package/dist/i18n-RCD4vrq3.cjs.br +0 -0
- package/dist/i18n-RCD4vrq3.cjs.gz +0 -0
- package/dist/i18n.cjs +1 -1
- package/dist/i18n.cjs.br +0 -0
- package/dist/i18n.cjs.gz +0 -0
- package/dist/i18n.js +1 -1
- package/dist/i18n.js.br +1 -3
- package/dist/i18n.js.gz +0 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.br +0 -0
- package/dist/index.cjs.gz +0 -0
- package/dist/index.d.ts +279 -3
- package/dist/index.js +3 -3
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/internals.cjs +1 -1
- package/dist/internals.cjs.br +0 -0
- package/dist/internals.cjs.gz +0 -0
- package/dist/internals.d.ts +358 -8
- package/dist/internals.js +2 -2
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/pptx-vue-viewer.css +64 -43
- package/dist/pptx-vue-viewer.css.br +0 -0
- package/dist/pptx-vue-viewer.css.gz +0 -0
- package/dist/{useViewerSettingsDialog-csWTWDGr.js → useViewerSettingsDialog-6eo06L3R.js} +12469 -10945
- package/dist/useViewerSettingsDialog-6eo06L3R.js.br +0 -0
- package/dist/useViewerSettingsDialog-6eo06L3R.js.gz +0 -0
- package/dist/{useViewerSettingsDialog-2Agl6hEE.cjs → useViewerSettingsDialog-CcDm_TiD.cjs} +12711 -11137
- package/dist/useViewerSettingsDialog-CcDm_TiD.cjs.br +0 -0
- package/dist/useViewerSettingsDialog-CcDm_TiD.cjs.gz +0 -0
- package/dist/viewer/index.cjs +1 -1
- package/dist/viewer/index.cjs.br +0 -0
- package/dist/viewer/index.cjs.gz +0 -0
- package/dist/viewer/index.d.ts +279 -3
- package/dist/viewer/index.js +3 -3
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/{viewer-BCE1J1So.js → viewer-Br9Urx_K.js} +11214 -10978
- package/dist/viewer-Br9Urx_K.js.br +0 -0
- package/dist/viewer-Br9Urx_K.js.gz +0 -0
- package/dist/{viewer-BF80DYuw.cjs → viewer-DxjvIJVV.cjs} +3874 -3638
- package/dist/viewer-DxjvIJVV.cjs.br +0 -0
- package/dist/viewer-DxjvIJVV.cjs.gz +0 -0
- package/package.json +1 -1
- package/dist/AiChatPanel-BAXxvQl4.js.br +0 -0
- package/dist/AiChatPanel-BAXxvQl4.js.gz +0 -0
- package/dist/AiChatPanel-CMpvBPva.cjs.br +0 -0
- package/dist/AiChatPanel-CMpvBPva.cjs.gz +0 -0
- package/dist/canvas_emf-converter-CXU7lu1I.cjs +0 -1
- package/dist/canvas_emf-converter-CXU7lu1I.cjs.br +0 -0
- package/dist/canvas_emf-converter-CXU7lu1I.cjs.gz +0 -0
- package/dist/canvas_emf-converter-HimA9Y3J.js +0 -3
- package/dist/canvas_emf-converter-HimA9Y3J.js.br +0 -0
- package/dist/canvas_emf-converter-HimA9Y3J.js.gz +0 -0
- package/dist/dist-3uZ0g742.cjs.br +0 -0
- package/dist/dist-3uZ0g742.cjs.gz +0 -0
- package/dist/dist-BgtJA5eT.js.br +0 -0
- package/dist/dist-BgtJA5eT.js.gz +0 -0
- package/dist/gif-encoder-BAJa752-.js +0 -2
- package/dist/gif-encoder-BAJa752-.js.br +0 -0
- package/dist/gif-encoder-BAJa752-.js.gz +0 -0
- package/dist/gif-encoder-DkEWIbep.cjs +0 -2
- package/dist/gif-encoder-DkEWIbep.cjs.br +0 -0
- package/dist/gif-encoder-DkEWIbep.cjs.gz +0 -0
- package/dist/i18n-BUjfZOiM.cjs.br +0 -0
- package/dist/i18n-BUjfZOiM.cjs.gz +0 -0
- package/dist/i18n-cTdK-NvK.js.br +0 -0
- package/dist/i18n-cTdK-NvK.js.gz +0 -0
- package/dist/useViewerSettingsDialog-2Agl6hEE.cjs.br +0 -0
- package/dist/useViewerSettingsDialog-2Agl6hEE.cjs.gz +0 -0
- package/dist/useViewerSettingsDialog-csWTWDGr.js.br +0 -0
- package/dist/useViewerSettingsDialog-csWTWDGr.js.gz +0 -0
- package/dist/viewer-BCE1J1So.js.br +0 -0
- package/dist/viewer-BCE1J1So.js.gz +0 -0
- package/dist/viewer-BF80DYuw.cjs.br +0 -0
- package/dist/viewer-BF80DYuw.cjs.gz +0 -0
package/dist/internals.d.ts
CHANGED
|
@@ -260,6 +260,11 @@ export declare interface AnimationClickGroup {
|
|
|
260
260
|
declare interface AnimationCondition {
|
|
261
261
|
/** Event that triggers the condition. */
|
|
262
262
|
event?: AnimationConditionEvent;
|
|
263
|
+
/**
|
|
264
|
+
* The media element/bookmark this condition fires for, when
|
|
265
|
+
* {@link event} is `onMediaBookmark`. See {@link PptxMediaBookmarkTarget}.
|
|
266
|
+
*/
|
|
267
|
+
bookmarkTarget?: PptxMediaBookmarkTarget;
|
|
263
268
|
/** Delay in milliseconds (from `@_delay`). "indefinite" is represented as -1. */
|
|
264
269
|
delay?: number;
|
|
265
270
|
/** Target time node ID reference (from `@_tn`). */
|
|
@@ -278,7 +283,7 @@ declare interface AnimationCondition {
|
|
|
278
283
|
* These map directly to OOXML condition event attribute values
|
|
279
284
|
* (ISO/IEC 29500-1 S19.5.28 CT_TLTimeCondition).
|
|
280
285
|
*/
|
|
281
|
-
declare type AnimationConditionEvent = 'onBegin' | 'onEnd' | 'begin' | 'end' | 'onClick' | 'onMouseOver' | 'onMouseOut' | 'onNext' | 'onPrev' | 'onStopAudio' | 'onDblClick';
|
|
286
|
+
declare type AnimationConditionEvent = 'onBegin' | 'onEnd' | 'begin' | 'end' | 'onClick' | 'onMouseOver' | 'onMouseOut' | 'onNext' | 'onPrev' | 'onStopAudio' | 'onDblClick' | 'onMediaBookmark';
|
|
282
287
|
|
|
283
288
|
declare interface AnimationInput {
|
|
284
289
|
preset: PptxAnimationPreset;
|
|
@@ -440,6 +445,18 @@ declare interface BulletInfo {
|
|
|
440
445
|
paragraphIndex?: number;
|
|
441
446
|
/** Bullet font family from `a:buFont`. */
|
|
442
447
|
fontFamily?: string;
|
|
448
|
+
/**
|
|
449
|
+
* PANOSE font-matching hint from `a:buFont/@panose`. `a:buFont` is a
|
|
450
|
+
* CT_TextFont, the same complex type as `a:latin`/`a:ea`/`a:cs`/`a:sym`
|
|
451
|
+
* (which carry the equivalent `TextStyle.latinFontPanose` etc.), so a
|
|
452
|
+
* bullet's own PANOSE/pitch-family/charset decide the fallback glyph
|
|
453
|
+
* PowerPoint substitutes when the named typeface is missing.
|
|
454
|
+
*/
|
|
455
|
+
fontPanose?: string;
|
|
456
|
+
/** Font pitch-and-family byte from `a:buFont/@pitchFamily`. */
|
|
457
|
+
fontPitchFamily?: number;
|
|
458
|
+
/** Font character-set byte from `a:buFont/@charset`. */
|
|
459
|
+
fontCharset?: number;
|
|
443
460
|
/** Bullet size as percentage of text font size from `a:buSzPct`. */
|
|
444
461
|
sizePercent?: number;
|
|
445
462
|
/** Bullet size in points from `a:buSzPts`. */
|
|
@@ -481,6 +498,18 @@ declare interface BulletInfo {
|
|
|
481
498
|
/** When true, `<a:buSzTx/>` was specified — inherit the bullet size from
|
|
482
499
|
* the run text font size. */
|
|
483
500
|
sizeInherit?: boolean;
|
|
501
|
+
/**
|
|
502
|
+
* True when this bullet resolution came from the paragraph's OWN `a:pPr`
|
|
503
|
+
* rather than the shape's `a:lstStyle`, an inherited placeholder, or the
|
|
504
|
+
* master's `a:defPPr` / `p:txStyles`. `resolveParagraphBulletInfo` walks
|
|
505
|
+
* that cascade and returns the first match, so without this flag a
|
|
506
|
+
* writer that re-emits every resolved `BulletInfo` in full pins an
|
|
507
|
+
* inherited bullet (e.g. a master `buFont="Arial"` / `buChar="•"`) onto
|
|
508
|
+
* every paragraph's own `a:pPr` the moment the slide is rewritten. The
|
|
509
|
+
* save path only writes the bullet group when this is `true`, mirroring
|
|
510
|
+
* how `paragraphProperties` gates every other per-paragraph field.
|
|
511
|
+
*/
|
|
512
|
+
ownedByParagraph?: boolean;
|
|
484
513
|
}
|
|
485
514
|
|
|
486
515
|
/** Canvas dimensions in pixels. */
|
|
@@ -1025,6 +1054,20 @@ declare interface ContentPartInkStroke {
|
|
|
1025
1054
|
* NAMES differ.
|
|
1026
1055
|
*/
|
|
1027
1056
|
tiltEncoding?: 'vector' | 'azimuthAltitude';
|
|
1057
|
+
/**
|
|
1058
|
+
* Per-point timestamps (milliseconds), decoded from the source InkML
|
|
1059
|
+
* trace's `T` channel when it declared one.
|
|
1060
|
+
*
|
|
1061
|
+
* Absent for the overwhelming majority of real decks: PowerPoint's own
|
|
1062
|
+
* SaveAs output declares only `X`/`Y` and has no per-point time channel at
|
|
1063
|
+
* all (see `contentpart-real-ink-roundtrip.test.ts`'s fixture), so this is
|
|
1064
|
+
* populated only for InkML sources that genuinely author one (a captured
|
|
1065
|
+
* digitizer session, OneNote, a Surface Hub export). When present, ink
|
|
1066
|
+
* replay ("watch the ink get drawn") uses each stroke's own first/last
|
|
1067
|
+
* timestamp to time its reveal instead of the fixed per-stroke cascade; see
|
|
1068
|
+
* `pptx-viewer-shared`'s `render/ink-replay-timeline.ts`.
|
|
1069
|
+
*/
|
|
1070
|
+
pointTimestamps?: number[];
|
|
1028
1071
|
}
|
|
1029
1072
|
|
|
1030
1073
|
/**
|
|
@@ -1426,6 +1469,9 @@ export declare interface EditorHistoryResult {
|
|
|
1426
1469
|
setMaxDepth: (depth: number) => void;
|
|
1427
1470
|
}
|
|
1428
1471
|
|
|
1472
|
+
/** A logical editor command produced by one key press. */
|
|
1473
|
+
declare type EditorKeyActionName = 'undo' | 'redo' | 'copy' | 'cut' | 'paste' | 'duplicate' | 'delete' | 'selectAll' | 'group' | 'ungroup' | 'nudge' | 'prevSlide' | 'nextSlide' | 'escape' | 'find' | 'findReplace' | 'toggleShortcuts' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify' | 'increaseFontSize' | 'decreaseFontSize' | 'copyFormat' | 'pasteFormat' | 'newSlide' | 'hyperlink' | 'clearFormatting' | 'cycleSelectionNext' | 'cycleSelectionPrev' | 'pasteSpecial';
|
|
1474
|
+
|
|
1429
1475
|
export declare interface EditorOperations {
|
|
1430
1476
|
/** Resolved active slide (or `undefined` when the index is out of range). */
|
|
1431
1477
|
activeSlide: ComputedRef<PptxSlide | undefined>;
|
|
@@ -2935,7 +2981,7 @@ export declare const P14_TRANSITION_KEYFRAMES = "\n/* ── Conveyor (translate
|
|
|
2935
2981
|
export 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";
|
|
2936
2982
|
|
|
2937
2983
|
/** Both p14 keyframe blocks concatenated, for single `<style>` injection. */
|
|
2938
|
-
export 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";
|
|
2984
|
+
export 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";
|
|
2939
2985
|
|
|
2940
2986
|
/** A single rendered run within a paragraph. */
|
|
2941
2987
|
declare interface ParagraphRun {
|
|
@@ -3261,6 +3307,14 @@ declare interface ParsedTableStyleFill {
|
|
|
3261
3307
|
tint?: number;
|
|
3262
3308
|
/** Shade value (0-100 000). */
|
|
3263
3309
|
shade?: number;
|
|
3310
|
+
/**
|
|
3311
|
+
* Alpha (opacity) value (0-100 000, where 100 000 is fully opaque) from an
|
|
3312
|
+
* `a:alpha` child of `a:schemeClr`/`a:srgbClr`. Several built-in table
|
|
3313
|
+
* styles (e.g. "Light Style 1/3", "Themed Style 1/2") band their rows with
|
|
3314
|
+
* a partially transparent tint of the theme colour rather than a tint/shade
|
|
3315
|
+
* blend.
|
|
3316
|
+
*/
|
|
3317
|
+
alpha?: number;
|
|
3264
3318
|
/** Explicit sRGB hex colour (e.g. `#FF8800`) from `a:srgbClr`. */
|
|
3265
3319
|
color?: string;
|
|
3266
3320
|
/** The fill was `a:noFill`: renders transparent and clears lower layers. */
|
|
@@ -3460,6 +3514,24 @@ declare interface PicturePptxElement extends PptxElementBase, PptxShapePropertie
|
|
|
3460
3514
|
*/
|
|
3461
3515
|
declare interface PlaceholderTextLevelStyle {
|
|
3462
3516
|
fontFamily?: string;
|
|
3517
|
+
/**
|
|
3518
|
+
* The RAW `a:defRPr/a:latin/@typeface` string (verbatim: a theme alias
|
|
3519
|
+
* such as `+mj-lt`/`+mn-lt`, or a literal face name) {@link fontFamily}
|
|
3520
|
+
* was resolved from. Master/layout text styles are parsed once and
|
|
3521
|
+
* cached, so `fontFamily` is a resolved-for-display snapshot; re-emitting
|
|
3522
|
+
* it as the literal name on every save (the master-level analogue of
|
|
3523
|
+
* `colorChoiceXml` below) flattens the theme alias the moment ANYTHING
|
|
3524
|
+
* about the deck is rewritten, even when this level was never touched.
|
|
3525
|
+
* Absent when the level declares no `a:latin`.
|
|
3526
|
+
*/
|
|
3527
|
+
fontTypefaceXml?: string;
|
|
3528
|
+
/**
|
|
3529
|
+
* Snapshot of {@link fontFamily} exactly as parsed, before any edit. The
|
|
3530
|
+
* save path diffs the live value against this: unchanged means re-emit
|
|
3531
|
+
* {@link fontTypefaceXml} verbatim (preserve the alias); different means
|
|
3532
|
+
* a genuine edit, so the new literal name is written instead.
|
|
3533
|
+
*/
|
|
3534
|
+
resolvedFontFamily?: string;
|
|
3463
3535
|
fontSize?: number;
|
|
3464
3536
|
bold?: boolean;
|
|
3465
3537
|
italic?: boolean;
|
|
@@ -3509,8 +3581,32 @@ declare interface PlaceholderTextLevelStyle {
|
|
|
3509
3581
|
tabStops?: TextStyle['tabStops'];
|
|
3510
3582
|
lineSpacing?: number;
|
|
3511
3583
|
lineSpacingExactPt?: number;
|
|
3584
|
+
/**
|
|
3585
|
+
* Space before the paragraph in px, resolved from EITHER `a:spcPts`
|
|
3586
|
+
* (absolute) or `a:spcPct` (a percentage of this level's own `a:defRPr`
|
|
3587
|
+
* font size) - the OOXML source is not distinguishable from this field
|
|
3588
|
+
* alone. See {@link spaceBeforePercent} / {@link resolvedSpaceBefore}.
|
|
3589
|
+
*/
|
|
3512
3590
|
spaceBefore?: number;
|
|
3513
3591
|
spaceAfter?: number;
|
|
3592
|
+
/**
|
|
3593
|
+
* Snapshot of {@link spaceBefore} / {@link spaceAfter} exactly as parsed.
|
|
3594
|
+
* Diffed the same way as {@link resolvedFontFamily}: unchanged means the
|
|
3595
|
+
* writer re-emits the ORIGINAL form (`a:spcPct` when
|
|
3596
|
+
* {@link spaceBeforePercent} / {@link spaceAfterPercent} is set); a value
|
|
3597
|
+
* that has since moved away from the snapshot is a genuine edit and is
|
|
3598
|
+
* always written as `a:spcPts`, since an editor works in absolute units.
|
|
3599
|
+
*/
|
|
3600
|
+
resolvedSpaceBefore?: number;
|
|
3601
|
+
resolvedSpaceAfter?: number;
|
|
3602
|
+
/**
|
|
3603
|
+
* The raw `a:spcPct` fraction (e.g. `0.2` for 20%) {@link spaceBefore} /
|
|
3604
|
+
* {@link spaceAfter} was resolved from, when the source used percentage
|
|
3605
|
+
* spacing rather than `a:spcPts`. Absent when the source used `a:spcPts`
|
|
3606
|
+
* (or authored no spacing at all).
|
|
3607
|
+
*/
|
|
3608
|
+
spaceBeforePercent?: number;
|
|
3609
|
+
spaceAfterPercent?: number;
|
|
3514
3610
|
/** Default tab interval in CSS pixels (`a:lvlXpPr/@defTabSz`). */
|
|
3515
3611
|
defaultTabSize?: number;
|
|
3516
3612
|
/** Whether East Asian line-breaking rules are enabled. */
|
|
@@ -4060,6 +4156,17 @@ declare interface PptxAttributeAnimation {
|
|
|
4060
4156
|
* IS consulted regardless of this field's value. Absent means `lin`.
|
|
4061
4157
|
*/
|
|
4062
4158
|
calcMode?: 'discrete' | 'lin' | 'fmla';
|
|
4159
|
+
/**
|
|
4160
|
+
* `p:anim/@_p14:bounceEnd` (Office 2010 `p14` extension attribute,
|
|
4161
|
+
* MS-OI29500), normalized to a 0-1 fraction of this behaviour's own
|
|
4162
|
+
* duration. PowerPoint's Fly In "Bounce End" effect option writes this on
|
|
4163
|
+
* the position-ramp `p:anim` node(s): the fraction of the duration at
|
|
4164
|
+
* which the primary travel completes, with the remainder spent bouncing
|
|
4165
|
+
* and settling at the final value. Mirrored verbatim by PowerPoint onto
|
|
4166
|
+
* the enclosing `p:cTn/@_p14:presetBounceEnd`. Absent for every animation
|
|
4167
|
+
* that doesn't use this effect option (the overwhelming majority).
|
|
4168
|
+
*/
|
|
4169
|
+
bounceEnd?: number;
|
|
4063
4170
|
}
|
|
4064
4171
|
|
|
4065
4172
|
declare interface PptxAudioCdPosition {
|
|
@@ -7730,7 +7837,12 @@ declare interface PptxHeaderFooter {
|
|
|
7730
7837
|
hasDateTime?: boolean;
|
|
7731
7838
|
dateTimeText?: string;
|
|
7732
7839
|
dateTimeAuto?: boolean;
|
|
7733
|
-
/**
|
|
7840
|
+
/**
|
|
7841
|
+
* The master date placeholder's own `a:fld/@type` (e.g. "datetime2"), NOT a
|
|
7842
|
+
* format pattern. It is one of the predefined OOXML datetime field types
|
|
7843
|
+
* (`datetime1`-`datetime13`); the display pattern for each is resolved by
|
|
7844
|
+
* `resolveFieldDateText` in `packages/shared/src/render/text-field-substitution.ts`.
|
|
7845
|
+
*/
|
|
7734
7846
|
dateFormat?: string;
|
|
7735
7847
|
hasSlideNumber?: boolean;
|
|
7736
7848
|
}
|
|
@@ -8231,6 +8343,19 @@ declare interface PptxMasterTextStyles {
|
|
|
8231
8343
|
otherStyle?: PptxTextStyleLevels;
|
|
8232
8344
|
}
|
|
8233
8345
|
|
|
8346
|
+
/**
|
|
8347
|
+
* `p14:bmkTgt` (Office 2010 `p14` extension, MS-OI29500): names the specific
|
|
8348
|
+
* media element and bookmark an `evt="onMediaBookmark"` condition fires for.
|
|
8349
|
+
* `bookmarkName` matches a `p14:bmk/@_name` on that media element's own
|
|
8350
|
+
* `p14:bmkLst` (see `MediaBookmark.label` in `core/types/elements.ts`).
|
|
8351
|
+
*/
|
|
8352
|
+
declare interface PptxMediaBookmarkTarget {
|
|
8353
|
+
/** `p14:bmkTgt/@_spid`: the media element's shape id. */
|
|
8354
|
+
shapeId: string;
|
|
8355
|
+
/** `p14:bmkTgt/@_bmkName`: the bookmark's name. */
|
|
8356
|
+
bookmarkName: string;
|
|
8357
|
+
}
|
|
8358
|
+
|
|
8234
8359
|
declare type PptxMediaReferenceKind = 'audioCd' | 'wavAudioFile' | 'audioFile' | 'videoFile' | 'quickTimeFile';
|
|
8235
8360
|
|
|
8236
8361
|
/**
|
|
@@ -9537,7 +9662,12 @@ declare interface PptxSlideTransition {
|
|
|
9537
9662
|
spokes?: number;
|
|
9538
9663
|
/** Pattern type for shred transition. */
|
|
9539
9664
|
pattern?: string;
|
|
9540
|
-
/**
|
|
9665
|
+
/**
|
|
9666
|
+
* Through-black flag (OOXML `@_thruBlk`). COM-verified to actually apply to
|
|
9667
|
+
* `cut` and `fade` (see {@link TRANSITION_THRUBLK_TYPES}); parsed generically
|
|
9668
|
+
* off any standard transition child so an unexpected authored value still
|
|
9669
|
+
* round-trips.
|
|
9670
|
+
*/
|
|
9541
9671
|
thruBlk?: boolean;
|
|
9542
9672
|
/** Split orientation (horz/vert) parsed from `@_orient`. */
|
|
9543
9673
|
orient?: PptxSplitOrientation;
|
|
@@ -10030,6 +10160,18 @@ declare interface PptxSmartArtLayoutDefinition {
|
|
|
10030
10160
|
rootNode: PptxSmartArtLayoutNode;
|
|
10031
10161
|
/** Original definition retained for constraint evaluation and foreign rules. */
|
|
10032
10162
|
rawXml?: XmlObject;
|
|
10163
|
+
/**
|
|
10164
|
+
* The un-parsed layout-definition part text (starting at `<dgm:layoutDef>`,
|
|
10165
|
+
* XML declaration included). `rawXml` above loses the document order of
|
|
10166
|
+
* differently-named siblings (the package-wide `fast-xml-parser`
|
|
10167
|
+
* configuration groups children into one array per tag), which the
|
|
10168
|
+
* per-point DiagramML engine (`core/utils/smartart-engine/`) needs to
|
|
10169
|
+
* execute a `layoutNode` body's `forEach`/`choose`/`constrLst` statements
|
|
10170
|
+
* in their real declared sequence - see that package's `ordered-xml.ts`.
|
|
10171
|
+
* `undefined` when the part could not be read (matches `rawXml`'s own
|
|
10172
|
+
* optionality); the engine falls back to the legacy interpreter then.
|
|
10173
|
+
*/
|
|
10174
|
+
rawXmlText?: string;
|
|
10033
10175
|
}
|
|
10034
10176
|
|
|
10035
10177
|
/** Identity and ordering metadata from DiagramML CT_LayoutNode. */
|
|
@@ -10997,6 +11139,20 @@ declare interface PptxTableData {
|
|
|
10997
11139
|
* present when there is at least one effect.
|
|
10998
11140
|
*/
|
|
10999
11141
|
tableEffects?: ParsedTableStyleEffect[];
|
|
11142
|
+
/**
|
|
11143
|
+
* Table-cell-context default text size in points, resolved from the
|
|
11144
|
+
* slide's master `p:otherStyle` (ECMA-376 §19.3.1.42 CT_TextListStyle,
|
|
11145
|
+
* §19.3.1.52 for `p:txStyles`). PowerPoint sizes a table cell's text off
|
|
11146
|
+
* this master default (commonly 18pt) whenever neither the run nor the
|
|
11147
|
+
* (size-less) table style provides one; without it, cell text without an
|
|
11148
|
+
* explicit `a:rPr@sz` fell back to the browser's own default font size
|
|
11149
|
+
* (16px / 12pt) instead. A render-only hint: it is not part of any
|
|
11150
|
+
* individual cell's parsed style and is never written back on save, so
|
|
11151
|
+
* resaving an unstyled cell does not bake in an explicit size that was
|
|
11152
|
+
* never authored. `undefined` when no master/otherStyle size resolves
|
|
11153
|
+
* (renderers should leave the browser default in place in that case).
|
|
11154
|
+
*/
|
|
11155
|
+
defaultCellFontSize?: number;
|
|
11000
11156
|
}
|
|
11001
11157
|
|
|
11002
11158
|
/**
|
|
@@ -12005,7 +12161,7 @@ export declare function resolveOrientation(direction: string | undefined, orient
|
|
|
12005
12161
|
* existing shell wiring and tests carry on working while the decision table has
|
|
12006
12162
|
* only one copy left in the repo.
|
|
12007
12163
|
*/
|
|
12008
|
-
export declare function resolveShortcutAction(key: string, mod: boolean, shiftKey: boolean, guard: ShortcutGuardState): MatchedShortcut;
|
|
12164
|
+
export declare function resolveShortcutAction(key: string, mod: boolean, shiftKey: boolean, guard: ShortcutGuardState, altKey?: boolean): MatchedShortcut;
|
|
12009
12165
|
|
|
12010
12166
|
/**
|
|
12011
12167
|
* Convenience wrapper that reads everything off a {@link PptxSlideTransition},
|
|
@@ -12191,6 +12347,11 @@ declare interface RibbonProps {
|
|
|
12191
12347
|
onOpenSettings?: () => void;
|
|
12192
12348
|
onRunAccessibilityCheck: () => void;
|
|
12193
12349
|
onToggleSlideSorter: () => void;
|
|
12350
|
+
/**
|
|
12351
|
+
* View > Normal: leave whichever alternate view (slide sorter, reading,
|
|
12352
|
+
* outline, master) is open and return to the ordinary editing canvas.
|
|
12353
|
+
*/
|
|
12354
|
+
onGoToNormalView?: () => void;
|
|
12194
12355
|
/** Open the windowed Reading View (NOT the fullscreen slide show). */
|
|
12195
12356
|
onOpenReadingView: () => void;
|
|
12196
12357
|
/** Enter PowerPoint's Outline view: the deck as editable indented text. */
|
|
@@ -12899,8 +13060,12 @@ export declare const SHORTCUT_CATALOG: readonly ShortcutDefinition[];
|
|
|
12899
13060
|
/** i18n keys for each group's label, in display order. */
|
|
12900
13061
|
export declare const SHORTCUT_GROUP_LABEL_KEYS: Record<ShortcutGroup, string>;
|
|
12901
13062
|
|
|
12902
|
-
/**
|
|
12903
|
-
|
|
13063
|
+
/**
|
|
13064
|
+
* The set of action identifiers the registry can dispatch: an alias of the
|
|
13065
|
+
* shared keymap's own action union, not a hand-copied one, so a new shared
|
|
13066
|
+
* action can never silently fall through the dispatcher.
|
|
13067
|
+
*/
|
|
13068
|
+
export declare type ShortcutActionName = EditorKeyActionName;
|
|
12904
13069
|
|
|
12905
13070
|
/**
|
|
12906
13071
|
* Action callbacks the registry dispatches to. All are optional; a missing
|
|
@@ -12940,6 +13105,36 @@ export declare interface ShortcutActions {
|
|
|
12940
13105
|
escape?: () => void;
|
|
12941
13106
|
/** Open or close the find bar (Ctrl/Cmd+F). */
|
|
12942
13107
|
find?: () => void;
|
|
13108
|
+
/** Open Find & Replace (Ctrl/Cmd+H). */
|
|
13109
|
+
findReplace?: () => void;
|
|
13110
|
+
/** Left-align the current paragraph (Ctrl/Cmd+L). */
|
|
13111
|
+
alignLeft?: () => void;
|
|
13112
|
+
/** Centre-align the current paragraph (Ctrl/Cmd+E). */
|
|
13113
|
+
alignCenter?: () => void;
|
|
13114
|
+
/** Right-align the current paragraph (Ctrl/Cmd+R). */
|
|
13115
|
+
alignRight?: () => void;
|
|
13116
|
+
/** Justify the current paragraph (Ctrl/Cmd+J). */
|
|
13117
|
+
alignJustify?: () => void;
|
|
13118
|
+
/** Step the font size up PowerPoint's size ladder (Ctrl/Cmd+Shift+> or +]). */
|
|
13119
|
+
increaseFontSize?: () => void;
|
|
13120
|
+
/** Step the font size down PowerPoint's size ladder (Ctrl/Cmd+Shift+< or +[). */
|
|
13121
|
+
decreaseFontSize?: () => void;
|
|
13122
|
+
/** Copy the selection's formatting (Ctrl/Cmd+Shift+C). */
|
|
13123
|
+
copyFormat?: () => void;
|
|
13124
|
+
/** Apply the copied formatting to the selection (Ctrl/Cmd+Shift+V). */
|
|
13125
|
+
pasteFormat?: () => void;
|
|
13126
|
+
/** Insert a new slide (Ctrl/Cmd+M). */
|
|
13127
|
+
newSlide?: () => void;
|
|
13128
|
+
/** Open the hyperlink dialog (Ctrl/Cmd+K). */
|
|
13129
|
+
hyperlink?: () => void;
|
|
13130
|
+
/** Clear direct character formatting on the selection (Ctrl/Cmd+Space). */
|
|
13131
|
+
clearFormatting?: () => void;
|
|
13132
|
+
/** Select the next element on the slide (Tab). */
|
|
13133
|
+
cycleSelectionNext?: () => void;
|
|
13134
|
+
/** Select the previous element on the slide (Shift+Tab). */
|
|
13135
|
+
cycleSelectionPrev?: () => void;
|
|
13136
|
+
/** Open the Paste Special dialog (Ctrl/Cmd+Alt+V). */
|
|
13137
|
+
pasteSpecial?: () => void;
|
|
12943
13138
|
}
|
|
12944
13139
|
|
|
12945
13140
|
/** The catalog grouped by `group`, in `SHORTCUT_GROUP_LABEL_KEYS` order. */
|
|
@@ -12949,7 +13144,7 @@ export declare interface ShortcutCatalogGroup {
|
|
|
12949
13144
|
shortcuts: ShortcutDefinition[];
|
|
12950
13145
|
}
|
|
12951
13146
|
|
|
12952
|
-
/** A single entry in the shortcut catalog (drives
|
|
13147
|
+
/** A single entry in the shortcut catalog (drives the help UI). */
|
|
12953
13148
|
export declare interface ShortcutDefinition {
|
|
12954
13149
|
/** Stable identifier (also the action name where 1:1). */
|
|
12955
13150
|
id: string;
|
|
@@ -12964,6 +13159,15 @@ export declare interface ShortcutDefinition {
|
|
|
12964
13159
|
descriptionKey: string;
|
|
12965
13160
|
}
|
|
12966
13161
|
|
|
13162
|
+
/**
|
|
13163
|
+
* The keyboard-shortcut help catalog: data for `ShortcutPanel.vue`.
|
|
13164
|
+
*
|
|
13165
|
+
* Split out of `useKeyboardShortcuts.ts` to keep that file under this repo's
|
|
13166
|
+
* file-size limit; the catalog is presentation data for the "?" help overlay,
|
|
13167
|
+
* not dispatch logic, so it stands on its own.
|
|
13168
|
+
*
|
|
13169
|
+
* @module composables/shortcut-catalog
|
|
13170
|
+
*/
|
|
12967
13171
|
/** Logical grouping for the help overlay. */
|
|
12968
13172
|
export declare type ShortcutGroup = 'history' | 'clipboard' | 'editing' | 'navigation' | 'general';
|
|
12969
13173
|
|
|
@@ -13523,6 +13727,10 @@ declare interface SummaryZoomTarget extends PptxImageProperties {
|
|
|
13523
13727
|
offsetFactorY?: number;
|
|
13524
13728
|
scaleFactorX?: number;
|
|
13525
13729
|
scaleFactorY?: number;
|
|
13730
|
+
/** This tile's own `zmPr/@returnToParent`; see {@link ZoomPptxElement.returnToParent}. */
|
|
13731
|
+
returnToParent?: boolean;
|
|
13732
|
+
/** This tile's own `zmPr/@transitionDur` in milliseconds; see {@link ZoomPptxElement.transitionDurationMs}. */
|
|
13733
|
+
transitionDurationMs?: number;
|
|
13526
13734
|
rawXml?: XmlObject;
|
|
13527
13735
|
}
|
|
13528
13736
|
|
|
@@ -13867,6 +14075,23 @@ declare interface TextSegment {
|
|
|
13867
14075
|
fieldParagraphPropertiesXml?: XmlObject;
|
|
13868
14076
|
/** Raw OMML XML node for equation segments (from `a14:m` / `m:oMathPara`). */
|
|
13869
14077
|
equationXml?: Record<string, unknown>;
|
|
14078
|
+
/**
|
|
14079
|
+
* The ORIGINAL top-level paragraph child that carried this equation,
|
|
14080
|
+
* captured verbatim at parse time and keyed by its own tag: `{ 'a14:m':
|
|
14081
|
+
* ... }`, `{ 'm:oMathPara': ... }`, `{ 'm:oMath': ... }`, or `{
|
|
14082
|
+
* 'mc:AlternateContent': ... }` for an equation authored behind a
|
|
14083
|
+
* Choice/Fallback switch. `equationXml` above is the resolved math content
|
|
14084
|
+
* used for rendering (unwrapped one level for `a14:m`/`mc:AlternateContent`
|
|
14085
|
+
* sources); this field exists solely so the writer can re-emit an UNTOUCHED
|
|
14086
|
+
* equation byte-for-byte, Choice and Fallback both, instead of collapsing
|
|
14087
|
+
* it to a bare math element PowerPoint's own writer never produces.
|
|
14088
|
+
* `undefined` for a freshly inserted or edited equation, which the writer
|
|
14089
|
+
* instead reconstructs from `equationXml` (always `{ 'm:oMathPara': ... }`
|
|
14090
|
+
* or `{ 'm:oMath': ... }` for those cases). Any code that replaces
|
|
14091
|
+
* `equationXml` on an existing segment must drop this field, or the writer
|
|
14092
|
+
* would keep re-emitting the equation's OLD XML instead of the edit.
|
|
14093
|
+
*/
|
|
14094
|
+
equationSourceXml?: Record<string, unknown>;
|
|
13870
14095
|
/**
|
|
13871
14096
|
* Optional equation number for numbered equations (e.g. "(1)", "(2.3)").
|
|
13872
14097
|
* When present, the equation is rendered centered with the number right-aligned.
|
|
@@ -14030,6 +14255,32 @@ declare interface TextStyle {
|
|
|
14030
14255
|
* @see element-paragraph-geometry.ts
|
|
14031
14256
|
*/
|
|
14032
14257
|
resolvedParagraphGeometry?: TextStyle;
|
|
14258
|
+
/**
|
|
14259
|
+
* Snapshot of the ELEMENT-scope `a:bodyPr` properties (vertical anchor,
|
|
14260
|
+
* text direction, columns, overflow, autofit, body insets, text wrap, and
|
|
14261
|
+
* the boolean/rotation attributes) as the load pipeline resolved them.
|
|
14262
|
+
*
|
|
14263
|
+
* A shape's own `a:bodyPr` is parsed first, then whatever it left
|
|
14264
|
+
* `undefined` is back-filled from the placeholder / layout / master
|
|
14265
|
+
* defaults (`applyPlaceholderBodyDefaults`), and a placeholder shape with
|
|
14266
|
+
* no `a:bodyPr` of its own has the INHERITED one parsed as if it were its
|
|
14267
|
+
* own. None of those three sources is distinguishable at
|
|
14268
|
+
* `element.textStyle` once the cascade finishes, so a writer that
|
|
14269
|
+
* re-emits every defined field turns an inherited anchor, inset, autofit
|
|
14270
|
+
* mode or `rtlCol` into a value pinned on the slide forever (and an
|
|
14271
|
+
* inherited `a:normAutofit` with no scale gets written back as
|
|
14272
|
+
* `a:spAutoFit`, flipping AutoSize from "shrink text" to "resize shape").
|
|
14273
|
+
*
|
|
14274
|
+
* Present only on an `element.textStyle` that came from a parsed deck.
|
|
14275
|
+
* The save path diffs the live style against this snapshot: a field that
|
|
14276
|
+
* still matches is an inheritance artefact and the writer leaves the
|
|
14277
|
+
* underlying `a:bodyPr` attribute untouched (whatever it already is,
|
|
14278
|
+
* present or absent); a field that differs was authored or has since
|
|
14279
|
+
* been edited and is written out.
|
|
14280
|
+
*
|
|
14281
|
+
* @see element-body-properties.ts
|
|
14282
|
+
*/
|
|
14283
|
+
resolvedBodyProperties?: TextStyle;
|
|
14033
14284
|
fontFamily?: string;
|
|
14034
14285
|
fontSize?: number;
|
|
14035
14286
|
/** When true, some form of autofit is in effect; see {@link autoFitMode} for which. */
|
|
@@ -14212,6 +14463,16 @@ declare interface TextStyle {
|
|
|
14212
14463
|
align: 'l' | 'ctr' | 'r' | 'dec';
|
|
14213
14464
|
leader?: 'none' | 'dot' | 'hyphen' | 'underscore';
|
|
14214
14465
|
}>;
|
|
14466
|
+
/**
|
|
14467
|
+
* True when the paragraph's own `a:pPr` authored an EMPTY `<a:tabLst/>`
|
|
14468
|
+
* (explicitly "no tab stops", overriding whatever the cascade would
|
|
14469
|
+
* otherwise supply) rather than omitting the element entirely (inherit).
|
|
14470
|
+
* fast-xml-parser gives a childless element as the empty string, so
|
|
14471
|
+
* `tabLst` and no-`tabLst` are otherwise indistinguishable once `tabStops`
|
|
14472
|
+
* comes back empty either way. Paragraph-scope only; not part of the
|
|
14473
|
+
* element-level geometry cascade.
|
|
14474
|
+
*/
|
|
14475
|
+
tabStopsExplicitEmpty?: boolean;
|
|
14215
14476
|
/** Body text wrapping mode from `a:bodyPr/@wrap`. */
|
|
14216
14477
|
textWrap?: 'square' | 'none';
|
|
14217
14478
|
/** Preset text warp type from `a:bodyPr/a:prstTxWarp`. */
|
|
@@ -14254,6 +14515,20 @@ declare interface TextStyle {
|
|
|
14254
14515
|
* serialised back on save, so it never disturbs the round-trip typefaces.
|
|
14255
14516
|
*/
|
|
14256
14517
|
scriptFallbackFont?: string;
|
|
14518
|
+
/**
|
|
14519
|
+
* Set alongside {@link scriptFallbackFont} when the resolved {@link fontFamily}
|
|
14520
|
+
* came only from the paragraph/list-style/theme CASCADE (the run's own
|
|
14521
|
+
* `a:rPr` authored no `a:latin`/`a:ea`/`a:cs` of its own). A run always
|
|
14522
|
+
* inherits SOME font this way (typically the theme's `+mn-lt`), so without
|
|
14523
|
+
* this flag `fontFamily` was indistinguishable from a run that genuinely
|
|
14524
|
+
* chose that font itself, and the renderer never applied the theme's
|
|
14525
|
+
* per-script override (see #83): `+mn-lt` names only the LATIN member of
|
|
14526
|
+
* the font scheme and was never meant to cover text in a different
|
|
14527
|
+
* dominant script. An explicit `a:latin`/`a:ea`/`a:cs` authored on the run
|
|
14528
|
+
* itself still always wins; only the cascade default yields to the
|
|
14529
|
+
* script-specific override.
|
|
14530
|
+
*/
|
|
14531
|
+
fontFamilyIsCascadeDefault?: boolean;
|
|
14257
14532
|
/** Text language from `a:rPr/@lang`. */
|
|
14258
14533
|
language?: string;
|
|
14259
14534
|
/** Hyperlink mouse-over target from `a:hlinkMouseOver`. */
|
|
@@ -14276,6 +14551,16 @@ declare interface TextStyle {
|
|
|
14276
14551
|
hyperlinkHighlightClick?: boolean;
|
|
14277
14552
|
/** Whether hyperlink ends a sound (`a:hlinkClick/@endSnd`). */
|
|
14278
14553
|
hyperlinkEndSound?: boolean;
|
|
14554
|
+
/**
|
|
14555
|
+
* Raw `a:hlinkClick/a:extLst` child, preserved verbatim for round-trip.
|
|
14556
|
+
* Carries vendor extensions this engine does not interpret, most commonly
|
|
14557
|
+
* `ahyp:hlinkClr` (Microsoft's "hyperlink color" extension,
|
|
14558
|
+
* `{A12FA001-AC4F-418D-AE19-62706E023703}`), which records whether a
|
|
14559
|
+
* hyperlink run should paint with the theme's text colour instead of the
|
|
14560
|
+
* hyperlink colour. Dropping the whole `a:extLst` silently reverted such a
|
|
14561
|
+
* run to the default (themed) hyperlink colour on save.
|
|
14562
|
+
*/
|
|
14563
|
+
hyperlinkExtensionXml?: XmlObject;
|
|
14279
14564
|
/** Kumimoji (ideographic text combining) flag for vertical CJK text (`a:rPr/@kumimoji`). */
|
|
14280
14565
|
kumimoji?: boolean;
|
|
14281
14566
|
/** Normalize height flag (`a:rPr/@normalizeH`). */
|
|
@@ -14429,6 +14714,15 @@ declare interface TextStyle {
|
|
|
14429
14714
|
textGlowRadius?: number;
|
|
14430
14715
|
/** Text glow opacity (0-1). */
|
|
14431
14716
|
textGlowOpacity?: number;
|
|
14717
|
+
/**
|
|
14718
|
+
* Original glow colour-choice XML (`a:glow`'s `a:schemeClr`/`a:srgbClr`/…
|
|
14719
|
+
* child), preserved verbatim so a theme colour reference round-trips
|
|
14720
|
+
* instead of always being re-serialized as a resolved `a:srgbClr` (which
|
|
14721
|
+
* cuts the glow off from theme/Recolor changes).
|
|
14722
|
+
*/
|
|
14723
|
+
textGlowColorXml?: XmlObject;
|
|
14724
|
+
/** Theme colour slot the glow colour resolved from, when it is `a:schemeClr`. */
|
|
14725
|
+
textGlowColorRef?: PptxThemeColorRef;
|
|
14432
14726
|
/** Text reflection enabled flag. */
|
|
14433
14727
|
textReflection?: boolean;
|
|
14434
14728
|
/** Text reflection blur radius in px. */
|
|
@@ -15190,6 +15484,10 @@ export declare interface UseContextMenuInput {
|
|
|
15190
15484
|
* it hit-tests to nothing; this is what the menu falls back to.
|
|
15191
15485
|
*/
|
|
15192
15486
|
inlineEditingElementId: Ref<string | null>;
|
|
15487
|
+
/** Whether the properties inspector is open; the format-object trio opens it. */
|
|
15488
|
+
inspectorOpen: Ref<boolean>;
|
|
15489
|
+
/** "Edit Text": the same effect as double-clicking the element. */
|
|
15490
|
+
enterInlineEdit: (id: string) => void;
|
|
15193
15491
|
ops: EditorOperations;
|
|
15194
15492
|
cutElement: (id: string) => void;
|
|
15195
15493
|
copyElement: (id: string) => void;
|
|
@@ -15373,6 +15671,8 @@ export declare interface UseEditorKeyboardInput {
|
|
|
15373
15671
|
copyElement: (id: string) => void;
|
|
15374
15672
|
cutElement: (id: string) => void;
|
|
15375
15673
|
pasteElement: () => void;
|
|
15674
|
+
/** Open the Paste Special dialog (Ctrl/Cmd+Alt+V). */
|
|
15675
|
+
onPasteSpecial: () => void;
|
|
15376
15676
|
duplicateSelected: () => void;
|
|
15377
15677
|
deleteSelected: () => void;
|
|
15378
15678
|
goPrev: () => void;
|
|
@@ -15386,6 +15686,28 @@ export declare interface UseEditorKeyboardInput {
|
|
|
15386
15686
|
presentFromBeginning: () => void;
|
|
15387
15687
|
/** Shift+F5: start the show from the active slide (same as "From Current Slide"). */
|
|
15388
15688
|
startPresenting: () => void;
|
|
15689
|
+
/** Id of the element under active inline edit, or `null`. Lets live-format chords survive the typing gate. */
|
|
15690
|
+
inlineEditingElementId: Ref<string | null>;
|
|
15691
|
+
/** Whether a table cell is actively being edited. Same purpose as `inlineEditingElementId`. */
|
|
15692
|
+
tableEditorIsEditing: () => boolean;
|
|
15693
|
+
/** The armed drawing tool; shortcuts stand down unless it is `'select'`. */
|
|
15694
|
+
activeTool: () => string;
|
|
15695
|
+
/** The current selection's elements, for reading the effective font size. */
|
|
15696
|
+
selectedElements: ComputedRef<PptxElement[]>;
|
|
15697
|
+
/** Select one element non-additively (Tab / Shift+Tab cycling). */
|
|
15698
|
+
selectElement: (id: string, additive: boolean) => void;
|
|
15699
|
+
/** Apply a text-style delta to the selection (Home ▸ Text section's own path). */
|
|
15700
|
+
ribbonUpdateTextStyle: (updates: Partial<TextStyle>) => void;
|
|
15701
|
+
/** Insert a new slide after the active one (Ctrl/Cmd+M). */
|
|
15702
|
+
addSlide: () => void;
|
|
15703
|
+
/** Open the hyperlink dialog for the current selection (Ctrl/Cmd+K). */
|
|
15704
|
+
openHyperlinkForSelection: () => void;
|
|
15705
|
+
/** Arm the format painter from the current selection (Ctrl/Cmd+Shift+C). */
|
|
15706
|
+
toggleFormatPainter: () => void;
|
|
15707
|
+
/** Apply the copied format to one element (used by `pasteFormat`). */
|
|
15708
|
+
applyFormatToTarget: (id: string) => void;
|
|
15709
|
+
/** Disarm the format painter without applying (used after `pasteFormat`). */
|
|
15710
|
+
cancelFormatPainter: () => void;
|
|
15389
15711
|
}
|
|
15390
15712
|
|
|
15391
15713
|
export declare interface UseEditorKeyboardResult {
|
|
@@ -17903,6 +18225,34 @@ declare interface ZoomPptxElement extends PptxElementBase, PptxImageProperties {
|
|
|
17903
18225
|
summaryTargets?: SummaryZoomTarget[];
|
|
17904
18226
|
/** Layout mode authored on the Summary Zoom container. */
|
|
17905
18227
|
summaryLayout?: 'grid' | 'fixed';
|
|
18228
|
+
/**
|
|
18229
|
+
* `zmPr/@returnToParent` (MS-PPTX `CT_ZoomObjectProperties`, shared by all
|
|
18230
|
+
* three Zoom kinds): whether continuing forward from the destination slide
|
|
18231
|
+
* during a live show returns to this Zoom's origin slide instead of
|
|
18232
|
+
* advancing linearly through the deck. The schema declares `<xsd:attribute
|
|
18233
|
+
* name="returnToParent" type="xsd:boolean" use="optional" default="true"/>`,
|
|
18234
|
+
* so an ABSENT attribute means `true`, not `false`. This codebase still
|
|
18235
|
+
* leaves the field `undefined` (rather than fabricating `true`) when the
|
|
18236
|
+
* source XML omits it, so a round-trip never invents an attribute the
|
|
18237
|
+
* source never had; a CONSUMER of this field (playback, e.g.
|
|
18238
|
+
* `pptx-viewer-shared`'s `resolveZoomNavigationTarget`) must read
|
|
18239
|
+
* `returnToParent !== false`, not `Boolean(returnToParent)`, to get the
|
|
18240
|
+
* spec-correct effective value. For `zoomType: 'summary'`, this mirrors the
|
|
18241
|
+
* first tile's own value; see {@link SummaryZoomTarget.returnToParent} for
|
|
18242
|
+
* the per-tile value.
|
|
18243
|
+
*/
|
|
18244
|
+
returnToParent?: boolean;
|
|
18245
|
+
/**
|
|
18246
|
+
* `zmPr/@transitionDur` (MS-PPTX `CT_ZoomObjectProperties`): the
|
|
18247
|
+
* zoom-transition length in milliseconds. PowerPoint's own writer emits a
|
|
18248
|
+
* unitless decimal-millisecond value for every OOXML `ST_UniversalTimeOffset`
|
|
18249
|
+
* this codebase has observed (see the media-trim/-fade parsers), so this
|
|
18250
|
+
* follows the same convention rather than the full TIMEOFFSET grammar's
|
|
18251
|
+
* unit suffixes. Undefined uses the destination slide's own transition.
|
|
18252
|
+
* For `zoomType: 'summary'`, this mirrors the first tile's own value; see
|
|
18253
|
+
* {@link SummaryZoomTarget.transitionDurationMs} for the per-tile value.
|
|
18254
|
+
*/
|
|
18255
|
+
transitionDurationMs?: number;
|
|
17906
18256
|
}
|
|
17907
18257
|
|
|
17908
18258
|
export { }
|