pptx-svelte-viewer 4.3.0 → 4.5.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.
@@ -1737,6 +1737,12 @@ var translations14 = {
1737
1737
  "pptx.compare.noDifferences": "\u6CA1\u6709\u5DEE\u5F02",
1738
1738
  "pptx.compare.summary": "\u6DFB\u52A0\u4E86 {{added}}\uFF0C\u5220\u9664\u4E86 {{removed}}\uFF0C\u66F4\u6539\u4E86 {{changed}}",
1739
1739
  "pptx.compare.title": "\u6BD4\u8F83",
1740
+ "pptx.canvasContextMenu.ariaLabel": "\u753B\u5E03\u53F3\u952E\u83DC\u5355",
1741
+ "pptx.canvasContextMenu.formatBackground": "\u8BBE\u7F6E\u80CC\u666F\u683C\u5F0F...",
1742
+ "pptx.canvasContextMenu.gridAndGuides": "\u7F51\u683C\u548C\u53C2\u8003\u7EBF",
1743
+ "pptx.canvasContextMenu.layout": "\u7248\u5F0F",
1744
+ "pptx.canvasContextMenu.resetSlide": "\u91CD\u7F6E\u5E7B\u706F\u7247",
1745
+ "pptx.canvasContextMenu.ruler": "\u6807\u5C3A",
1740
1746
  "pptx.contextMenu.addComment": "\u6DFB\u52A0\u6279\u6CE8",
1741
1747
  "pptx.contextMenu.bringForward": "\u4E0A\u79FB\u4E00\u5C42",
1742
1748
  "pptx.contextMenu.bringToFront": "\u7F6E\u4E8E\u9876\u5C42",
@@ -1746,7 +1752,10 @@ var translations14 = {
1746
1752
  "pptx.contextMenu.deleteColumn": "\u5220\u9664\u5217",
1747
1753
  "pptx.contextMenu.deleteRow": "\u5220\u9664\u884C",
1748
1754
  "pptx.contextMenu.duplicate": "\u590D\u5236",
1755
+ "pptx.contextMenu.editAltText": "\u7F16\u8F91\u66FF\u6362\u6587\u5B57...",
1749
1756
  "pptx.contextMenu.editHyperlink": "\u7F16\u8F91\u8D85\u94FE\u63A5",
1757
+ "pptx.contextMenu.editText": "\u7F16\u8F91\u6587\u5B57",
1758
+ "pptx.contextMenu.formatShape": "\u8BBE\u7F6E\u5F62\u72B6\u683C\u5F0F...",
1750
1759
  "pptx.contextMenu.group": "\u7EC4\u5408",
1751
1760
  "pptx.contextMenu.insertColumnLeft": "\u5411\u5DE6\u63D2\u5165\u5217",
1752
1761
  "pptx.contextMenu.insertColumnRight": "\u5728\u53F3\u4FA7\u63D2\u5165\u5217",
@@ -1755,10 +1764,18 @@ var translations14 = {
1755
1764
  "pptx.contextMenu.mergeCells": "\u5411\u53F3\u5408\u5E76",
1756
1765
  "pptx.contextMenu.mergeSelectedCells": "\u5408\u5E76\u9009\u5B9A\u7684\u5355\u5143\u683C",
1757
1766
  "pptx.contextMenu.paste": "\u7C98\u8D34",
1767
+ "pptx.contextMenu.saveAsPicture": "\u53E6\u5B58\u4E3A\u56FE\u7247...",
1758
1768
  "pptx.contextMenu.sendBackward": "\u4E0B\u79FB\u4E00\u5C42",
1759
1769
  "pptx.contextMenu.sendToBack": "\u7F6E\u4E8E\u5E95\u5C42",
1770
+ "pptx.contextMenu.sizeAndPosition": "\u5927\u5C0F\u548C\u4F4D\u7F6E...",
1760
1771
  "pptx.contextMenu.splitCell": "\u62C6\u5206\u5355\u5143\u683C",
1761
1772
  "pptx.contextMenu.ungroup": "\u53D6\u6D88\u7EC4\u5408",
1773
+ "pptx.pasteSpecial.dialogTitle": "\u9009\u62E9\u6027\u7C98\u8D34",
1774
+ "pptx.pasteSpecial.keepSourceFormatting": "\u4FDD\u7559\u6E90\u683C\u5F0F",
1775
+ "pptx.pasteSpecial.keepTextOnly": "\u53EA\u4FDD\u7559\u6587\u672C",
1776
+ "pptx.pasteSpecial.optionsLabel": "\u7C98\u8D34\u9009\u9879",
1777
+ "pptx.pasteSpecial.picture": "\u56FE\u7247",
1778
+ "pptx.pasteSpecial.useDestinationTheme": "\u4F7F\u7528\u76EE\u6807\u4E3B\u9898",
1762
1779
  "pptx.hyperlink.actionEndShow": "\u7ED3\u675F\u653E\u6620",
1763
1780
  "pptx.hyperlink.actionFirstSlide": "\u7B2C\u4E00\u5F20\u5E7B\u706F\u7247",
1764
1781
  "pptx.hyperlink.actionLabel": "\u64CD\u4F5C",
@@ -2098,6 +2115,7 @@ var translations17 = {
2098
2115
  "pptx.media.startAutomatically": "\u81EA\u52A8",
2099
2116
  "pptx.media.playAcrossSlides": "\u8DE8\u5E7B\u706F\u7247\u64AD\u653E",
2100
2117
  "pptx.media.fullScreen": "\u5168\u5C4F",
2118
+ "pptx.media.onlineVideoTitle": "\u5728\u7EBF\u89C6\u9891",
2101
2119
  "pptx.media.hideWhenNotPlaying": "\u4E0D\u64AD\u653E\u65F6\u9690\u85CF",
2102
2120
  "pptx.media.bookmarks": "\u4E66\u7B7E",
2103
2121
  "pptx.media.bookmark": "\u4E66\u7B7E",
@@ -2459,6 +2477,15 @@ var translations19 = {
2459
2477
  "pptx.slideSorter.contextMenu.hideSlides": "\u9690\u85CF\u5E7B\u706F\u7247",
2460
2478
  "pptx.slideSorter.contextMenu.paste": "\u7C98\u8D34",
2461
2479
  "pptx.slideSorter.contextMenu.showSlides": "\u663E\u793A\u5E7B\u706F\u7247",
2480
+ "pptx.slidesPane.contextMenu.newSlide": "\u65B0\u5EFA\u5E7B\u706F\u7247",
2481
+ "pptx.slidesPane.contextMenu.duplicate": "\u590D\u5236\u5E7B\u706F\u7247",
2482
+ "pptx.slidesPane.contextMenu.duplicateCount": "\u590D\u5236 {{count}} \u5F20\u5E7B\u706F\u7247",
2483
+ "pptx.slidesPane.contextMenu.delete": "\u5220\u9664\u5E7B\u706F\u7247",
2484
+ "pptx.slidesPane.contextMenu.deleteCount": "\u5220\u9664 {{count}} \u5F20\u5E7B\u706F\u7247",
2485
+ "pptx.slidesPane.contextMenu.layout": "\u7248\u5F0F",
2486
+ "pptx.slidesPane.contextMenu.hide": "\u9690\u85CF\u5E7B\u706F\u7247",
2487
+ "pptx.slidesPane.contextMenu.show": "\u663E\u793A\u5E7B\u706F\u7247",
2488
+ "pptx.slidesPane.contextMenu.addSection": "\u6DFB\u52A0\u8282",
2462
2489
  "pptx.mobileBar.ariaLabel": "\u7F16\u8F91\u5668\u64CD\u4F5C",
2463
2490
  "pptx.mobileBar.slideControls": "\u5E7B\u706F\u7247\u63A7\u4EF6",
2464
2491
  "pptx.mobileBar.previousSlide": "\u4E0A\u4E00\u5F20\u5E7B\u706F\u7247",
@@ -2740,6 +2767,12 @@ var translations21 = {
2740
2767
  "pptx.transition.morphOption.byObject": "\u6309\u5BF9\u8C61",
2741
2768
  "pptx.transition.morphOption.byWord": "\u6309\u5B57\u8BCD",
2742
2769
  "pptx.transition.morphOption.byChar": "\u6309\u5B57\u7B26",
2770
+ "pptx.transition.pattern": "\u56FE\u6848",
2771
+ "pptx.transition.pattern.diamond": "\u83F1\u5F62",
2772
+ "pptx.transition.pattern.hexagon": "\u516D\u8FB9\u5F62",
2773
+ "pptx.transition.pattern.strip": "\u6761\u5E26",
2774
+ "pptx.transition.pattern.rectangle": "\u77E9\u5F62",
2775
+ "pptx.transition.thruBlk": "\u7ECF\u9ED1\u573A\u8FC7\u6E21",
2743
2776
  "pptx.keepAnnotations.title": "\u4FDD\u7559\u58A8\u8FF9\u6807\u6CE8\uFF1F",
2744
2777
  "pptx.keepAnnotations.description": "\u60A8\u5728 {{slides}} \u5F20\u5E7B\u706F\u7247\u4E0A\u6DFB\u52A0\u4E86 {{count}} \u6761\u58A8\u8FF9\u6807\u6CE8\u3002\u8981\u5C06\u5176\u4FDD\u7559\u5728\u5E7B\u706F\u7247\u4E0A\uFF0C\u8FD8\u662F\u653E\u5F03\uFF1F",
2745
2778
  "pptx.keepAnnotations.discard": "\u653E\u5F03",
package/dist/i18n.js CHANGED
@@ -1,4 +1,4 @@
1
- import { a as s, c as e, i as t, n as r, o, r as n, s as i, t as l } from "./translator-BZ6HUBWJ.js";
1
+ import { a as s, c as e, i as t, n as r, o, r as n, s as i, t as l } from "./translator-C-KdhJw4.js";
2
2
  export {
3
3
  o as LOCALE_CATALOG,
4
4
  l as createTranslator,
package/dist/index.d.ts CHANGED
@@ -1693,6 +1693,16 @@ interface TextStyle {
1693
1693
  hyperlinkHighlightClick?: boolean;
1694
1694
  /** Whether hyperlink ends a sound (`a:hlinkClick/@endSnd`). */
1695
1695
  hyperlinkEndSound?: boolean;
1696
+ /**
1697
+ * Raw `a:hlinkClick/a:extLst` child, preserved verbatim for round-trip.
1698
+ * Carries vendor extensions this engine does not interpret, most commonly
1699
+ * `ahyp:hlinkClr` (Microsoft's "hyperlink color" extension,
1700
+ * `{A12FA001-AC4F-418D-AE19-62706E023703}`), which records whether a
1701
+ * hyperlink run should paint with the theme's text colour instead of the
1702
+ * hyperlink colour. Dropping the whole `a:extLst` silently reverted such a
1703
+ * run to the default (themed) hyperlink colour on save.
1704
+ */
1705
+ hyperlinkExtensionXml?: XmlObject;
1696
1706
  /** Kumimoji (ideographic text combining) flag for vertical CJK text (`a:rPr/@kumimoji`). */
1697
1707
  kumimoji?: boolean;
1698
1708
  /** Normalize height flag (`a:rPr/@normalizeH`). */
@@ -1795,6 +1805,15 @@ interface TextStyle {
1795
1805
  textInnerShadowOffsetX?: number;
1796
1806
  /** Text inner shadow vertical offset in px. */
1797
1807
  textInnerShadowOffsetY?: number;
1808
+ /**
1809
+ * Original inner-shadow colour-choice XML (`a:innerShdw`'s
1810
+ * `a:prstClr`/`a:schemeClr`/`a:srgbClr`/… child), preserved verbatim so an
1811
+ * authored preset or theme colour round-trips instead of always being
1812
+ * re-serialized as a resolved `a:srgbClr`. Mirrors {@link textGlowColorXml}.
1813
+ */
1814
+ textInnerShadowColorXml?: XmlObject;
1815
+ /** Theme colour slot the inner shadow colour resolved from, when it is `a:schemeClr`. */
1816
+ textInnerShadowColorRef?: PptxThemeColorRef;
1798
1817
  /** Preset shadow type from `a:prstShdw/@prst` (e.g. "shdw1"..."shdw20"). */
1799
1818
  textPresetShadowName?: string;
1800
1819
  /** Preset shadow colour as hex string. */
@@ -1807,6 +1826,18 @@ interface TextStyle {
1807
1826
  textPresetShadowDirection?: number;
1808
1827
  /** Text blur effect radius in px (`a:blur`). */
1809
1828
  textBlurRadius?: number;
1829
+ /**
1830
+ * Text soft-edge radius in px (`a:softEdge/@rad`).
1831
+ *
1832
+ * Feathers the glyph's own edges (a uniform blur of the alpha silhouette,
1833
+ * the same effect a shape's `a:softEdge` gives its fill), unrelated to
1834
+ * `a:blur` (which blurs the whole run, colour included) or a shadow. Never
1835
+ * parsed before this field existed, so `a:softEdge` on a run was silently
1836
+ * dropped: PowerPoint fades the glyphs to near-transparent at their
1837
+ * outline (COM-verified, `audit-text` slide 14's "SOFTEDGE" run), while
1838
+ * the viewer painted them fully crisp.
1839
+ */
1840
+ textSoftEdgeRadius?: number;
1810
1841
  /**
1811
1842
  * Raw `a:effectDag` XML node from `a:rPr`, preserved verbatim for
1812
1843
  * round-trip serialisation. Mirrors the shape-level
@@ -1846,6 +1877,15 @@ interface TextStyle {
1846
1877
  textGlowRadius?: number;
1847
1878
  /** Text glow opacity (0-1). */
1848
1879
  textGlowOpacity?: number;
1880
+ /**
1881
+ * Original glow colour-choice XML (`a:glow`'s `a:schemeClr`/`a:srgbClr`/…
1882
+ * child), preserved verbatim so a theme colour reference round-trips
1883
+ * instead of always being re-serialized as a resolved `a:srgbClr` (which
1884
+ * cuts the glow off from theme/Recolor changes).
1885
+ */
1886
+ textGlowColorXml?: XmlObject;
1887
+ /** Theme colour slot the glow colour resolved from, when it is `a:schemeClr`. */
1888
+ textGlowColorRef?: PptxThemeColorRef;
1849
1889
  /** Text reflection enabled flag. */
1850
1890
  textReflection?: boolean;
1851
1891
  /** Text reflection blur radius in px. */
@@ -1982,6 +2022,18 @@ interface BulletInfo {
1982
2022
  paragraphIndex?: number;
1983
2023
  /** Bullet font family from `a:buFont`. */
1984
2024
  fontFamily?: string;
2025
+ /**
2026
+ * PANOSE font-matching hint from `a:buFont/@panose`. `a:buFont` is a
2027
+ * CT_TextFont, the same complex type as `a:latin`/`a:ea`/`a:cs`/`a:sym`
2028
+ * (which carry the equivalent `TextStyle.latinFontPanose` etc.), so a
2029
+ * bullet's own PANOSE/pitch-family/charset decide the fallback glyph
2030
+ * PowerPoint substitutes when the named typeface is missing.
2031
+ */
2032
+ fontPanose?: string;
2033
+ /** Font pitch-and-family byte from `a:buFont/@pitchFamily`. */
2034
+ fontPitchFamily?: number;
2035
+ /** Font character-set byte from `a:buFont/@charset`. */
2036
+ fontCharset?: number;
1985
2037
  /** Bullet size as percentage of text font size from `a:buSzPct`. */
1986
2038
  sizePercent?: number;
1987
2039
  /** Bullet size in points from `a:buSzPts`. */
@@ -3418,6 +3470,15 @@ interface PptxChartHistogramOptions {
3418
3470
  intervalClosed?: 'l' | 'r';
3419
3471
  underflow?: number | 'auto';
3420
3472
  overflow?: number | 'auto';
3473
+ /**
3474
+ * `c:layoutPr/cx:aggregation` was authored instead of `cx:binning`: the
3475
+ * raw rows are CATEGORICAL (a Pareto chart's `clusteredColumn` series
3476
+ * counting occurrences of each authored category, COM-verified against
3477
+ * charts-com.pptx slide 31 / chartEx6.xml), not a numeric range to bin.
3478
+ * Mutually exclusive with `binSize`/`binCount`/`intervalClosed`, which
3479
+ * only apply to a true numeric-value histogram.
3480
+ */
3481
+ aggregateByCategory?: boolean;
3421
3482
  }
3422
3483
  /** Office 2016 ChartEx waterfall series layout options. */
3423
3484
  interface PptxChartWaterfallOptions {
@@ -4082,6 +4143,18 @@ interface PptxChartData {
4082
4143
  * the source" and callers should treat it as `true`. Surface only.
4083
4144
  */
4084
4145
  wireframe?: boolean;
4146
+ /**
4147
+ * Whether the surface chart is the 2-D "top view" projection
4148
+ * (`c:surfaceChart`, PowerPoint's "Contour" / "Wireframe Contour" types)
4149
+ * rather than the 3-D isometric one (`c:surface3DChart`, "3-D Surface" /
4150
+ * "3-D Surface (Wireframe)"). Both element names map to chart type
4151
+ * `"surface"`; this bit is the only thing that tells the renderer which
4152
+ * of the two projections PowerPoint actually drew, since a top-view
4153
+ * surface has no Z-axis at all (only category and series axes) while the
4154
+ * 3-D one draws all three. Surface only; `undefined` for every other
4155
+ * chart type.
4156
+ */
4157
+ surfaceTopView?: boolean;
4085
4158
  /**
4086
4159
  * Scatter presentation mode (`c:scatterChart/c:scatterStyle/@val`).
4087
4160
  *
@@ -7271,11 +7344,17 @@ interface ZoomPptxElement extends PptxElementBase, PptxImageProperties {
7271
7344
  * `zmPr/@returnToParent` (MS-PPTX `CT_ZoomObjectProperties`, shared by all
7272
7345
  * three Zoom kinds): whether continuing forward from the destination slide
7273
7346
  * during a live show returns to this Zoom's origin slide instead of
7274
- * advancing linearly through the deck. OOXML default is `true` when the
7275
- * attribute is present but this codebase leaves it `undefined` when the
7276
- * source XML omits it, so a round-trip never fabricates the attribute.
7277
- * For `zoomType: 'summary'`, this mirrors the first tile's own value; see
7278
- * {@link SummaryZoomTarget.returnToParent} for the per-tile value.
7347
+ * advancing linearly through the deck. The schema declares `<xsd:attribute
7348
+ * name="returnToParent" type="xsd:boolean" use="optional" default="true"/>`,
7349
+ * so an ABSENT attribute means `true`, not `false`. This codebase still
7350
+ * leaves the field `undefined` (rather than fabricating `true`) when the
7351
+ * source XML omits it, so a round-trip never invents an attribute the
7352
+ * source never had; a CONSUMER of this field (playback, e.g.
7353
+ * `pptx-viewer-shared`'s `resolveZoomNavigationTarget`) must read
7354
+ * `returnToParent !== false`, not `Boolean(returnToParent)`, to get the
7355
+ * spec-correct effective value. For `zoomType: 'summary'`, this mirrors the
7356
+ * first tile's own value; see {@link SummaryZoomTarget.returnToParent} for
7357
+ * the per-tile value.
7279
7358
  */
7280
7359
  returnToParent?: boolean;
7281
7360
  /**
@@ -9275,7 +9354,12 @@ interface PptxSlideTransition {
9275
9354
  spokes?: number;
9276
9355
  /** Pattern type for shred transition. */
9277
9356
  pattern?: string;
9278
- /** Through-black flag for blinds/checker (OOXML `@_thruBlk`). */
9357
+ /**
9358
+ * Through-black flag (OOXML `@_thruBlk`). COM-verified to actually apply to
9359
+ * `cut` and `fade` (see {@link TRANSITION_THRUBLK_TYPES}); parsed generically
9360
+ * off any standard transition child so an unexpected authored value still
9361
+ * round-trips.
9362
+ */
9279
9363
  thruBlk?: boolean;
9280
9364
  /** Split orientation (horz/vert) parsed from `@_orient`. */
9281
9365
  orient?: PptxSplitOrientation;
package/dist/index.js CHANGED
@@ -1,41 +1,41 @@
1
- import { $o as e, $u as a, Hd as o, Iu as t, Ml as r, No as i, Oc as l, Ol as n, Qo as S, Qt as m, Sl as d, Wm as p, Ys as v, _h as T, bh as h, jl as g, mp as P, ns as u, os as c, rn as C, sc as N, sp as A, ts as E, vh as b, vl as f, xh as k, yh as x } from "./transition-overlay-BmUNA9xJ.js";
2
- import { i as I } from "./translator-BZ6HUBWJ.js";
3
- import { a as _, c as B, l as F, o as y, s as L, t as R, u as V } from "./export-CVIAWQ_T.js";
1
+ import { $t as e, Ap as a, Fh as o, Hl as t, Ih as i, Lh as r, Nl as l, Ph as n, Rh as S, Sp as m, Ul as d, Uo as p, cs as h, dd as v, ds as T, fs as g, gs as P, in as c, kl as u, ls as f, oc as A, qu as C, sh as N, tf as k, vc as E, zc as D, zl as b } from "./transition-overlay-BfpjfjU4.js";
2
+ import { i as I } from "./translator-C-KdhJw4.js";
3
+ import { M as B, a as L, c as O, l as R, o as _, s as V, t as w } from "./export-Bln1wHMQ.js";
4
4
  import "./i18n.js";
5
5
  export {
6
- m as PPTX_OPEN_ACCEPT,
7
- C as PRESENTATION_OPEN_EXTENSIONS,
8
- R as PowerPointViewer,
9
- i as createImageElementFromFile,
10
- S as defaultCssVars,
11
- e as defaultRadius,
12
- E as defaultThemeColors,
13
- u as deleteAutosaveSnapshot,
14
- c as describeCollaborationShellState,
15
- y as exportAllSlidesToSvg,
16
- L as exportAllSlidesToSvgBlobs,
17
- B as exportSlideAsSvg,
18
- F as exportSlideToSvg,
19
- V as exportSlideToSvgBlob,
20
- v as forgetSessionDeck,
21
- N as getAutosaveSnapshot,
22
- l as getSessionTabId,
23
- f as isLegacyBinaryPresentation,
24
- d as isSupportedPresentationFile,
25
- n as listAutosaveSnapshots,
26
- g as loadPresentationDeck,
27
- r as loadSessionDeck,
28
- t as parsePresentationSessionId,
29
- a as presentationBaseName,
6
+ e as PPTX_OPEN_ACCEPT,
7
+ c as PRESENTATION_OPEN_EXTENSIONS,
8
+ w as PowerPointViewer,
9
+ p as createImageElementFromFile,
10
+ h as defaultCssVars,
11
+ f as defaultRadius,
12
+ T as defaultThemeColors,
13
+ g as deleteAutosaveSnapshot,
14
+ P as describeCollaborationShellState,
15
+ L as exportAllSlidesToSvg,
16
+ _ as exportAllSlidesToSvgBlobs,
17
+ V as exportSlideAsSvg,
18
+ O as exportSlideToSvg,
19
+ R as exportSlideToSvgBlob,
20
+ A as forgetSessionDeck,
21
+ E as getAutosaveSnapshot,
22
+ D as getSessionTabId,
23
+ u as isLegacyBinaryPresentation,
24
+ l as isSupportedPresentationFile,
25
+ b as listAutosaveSnapshots,
26
+ t as loadPresentationDeck,
27
+ d as loadSessionDeck,
28
+ C as parsePresentationSessionId,
29
+ v as presentationBaseName,
30
30
  I as registerTranslations,
31
- o as rememberSessionDeck,
32
- _ as renderToCanvas,
33
- A as restoreSessionDeck,
34
- P as savedPresentationFileName,
35
- p as themeToCssVars,
36
- T as vermilionDarkColors,
37
- b as vermilionDarkTheme,
38
- x as vermilionLightColors,
39
- h as vermilionLightTheme,
40
- k as vermilionRadius
31
+ k as rememberSessionDeck,
32
+ B as renderToCanvas,
33
+ m as restoreSessionDeck,
34
+ a as savedPresentationFileName,
35
+ N as themeToCssVars,
36
+ n as vermilionDarkColors,
37
+ o as vermilionDarkTheme,
38
+ i as vermilionLightColors,
39
+ r as vermilionLightTheme,
40
+ S as vermilionRadius
41
41
  };
@@ -1690,6 +1690,16 @@ interface TextStyle {
1690
1690
  hyperlinkHighlightClick?: boolean;
1691
1691
  /** Whether hyperlink ends a sound (`a:hlinkClick/@endSnd`). */
1692
1692
  hyperlinkEndSound?: boolean;
1693
+ /**
1694
+ * Raw `a:hlinkClick/a:extLst` child, preserved verbatim for round-trip.
1695
+ * Carries vendor extensions this engine does not interpret, most commonly
1696
+ * `ahyp:hlinkClr` (Microsoft's "hyperlink color" extension,
1697
+ * `{A12FA001-AC4F-418D-AE19-62706E023703}`), which records whether a
1698
+ * hyperlink run should paint with the theme's text colour instead of the
1699
+ * hyperlink colour. Dropping the whole `a:extLst` silently reverted such a
1700
+ * run to the default (themed) hyperlink colour on save.
1701
+ */
1702
+ hyperlinkExtensionXml?: XmlObject;
1693
1703
  /** Kumimoji (ideographic text combining) flag for vertical CJK text (`a:rPr/@kumimoji`). */
1694
1704
  kumimoji?: boolean;
1695
1705
  /** Normalize height flag (`a:rPr/@normalizeH`). */
@@ -1792,6 +1802,15 @@ interface TextStyle {
1792
1802
  textInnerShadowOffsetX?: number;
1793
1803
  /** Text inner shadow vertical offset in px. */
1794
1804
  textInnerShadowOffsetY?: number;
1805
+ /**
1806
+ * Original inner-shadow colour-choice XML (`a:innerShdw`'s
1807
+ * `a:prstClr`/`a:schemeClr`/`a:srgbClr`/… child), preserved verbatim so an
1808
+ * authored preset or theme colour round-trips instead of always being
1809
+ * re-serialized as a resolved `a:srgbClr`. Mirrors {@link textGlowColorXml}.
1810
+ */
1811
+ textInnerShadowColorXml?: XmlObject;
1812
+ /** Theme colour slot the inner shadow colour resolved from, when it is `a:schemeClr`. */
1813
+ textInnerShadowColorRef?: PptxThemeColorRef;
1795
1814
  /** Preset shadow type from `a:prstShdw/@prst` (e.g. "shdw1"..."shdw20"). */
1796
1815
  textPresetShadowName?: string;
1797
1816
  /** Preset shadow colour as hex string. */
@@ -1804,6 +1823,18 @@ interface TextStyle {
1804
1823
  textPresetShadowDirection?: number;
1805
1824
  /** Text blur effect radius in px (`a:blur`). */
1806
1825
  textBlurRadius?: number;
1826
+ /**
1827
+ * Text soft-edge radius in px (`a:softEdge/@rad`).
1828
+ *
1829
+ * Feathers the glyph's own edges (a uniform blur of the alpha silhouette,
1830
+ * the same effect a shape's `a:softEdge` gives its fill), unrelated to
1831
+ * `a:blur` (which blurs the whole run, colour included) or a shadow. Never
1832
+ * parsed before this field existed, so `a:softEdge` on a run was silently
1833
+ * dropped: PowerPoint fades the glyphs to near-transparent at their
1834
+ * outline (COM-verified, `audit-text` slide 14's "SOFTEDGE" run), while
1835
+ * the viewer painted them fully crisp.
1836
+ */
1837
+ textSoftEdgeRadius?: number;
1807
1838
  /**
1808
1839
  * Raw `a:effectDag` XML node from `a:rPr`, preserved verbatim for
1809
1840
  * round-trip serialisation. Mirrors the shape-level
@@ -1843,6 +1874,15 @@ interface TextStyle {
1843
1874
  textGlowRadius?: number;
1844
1875
  /** Text glow opacity (0-1). */
1845
1876
  textGlowOpacity?: number;
1877
+ /**
1878
+ * Original glow colour-choice XML (`a:glow`'s `a:schemeClr`/`a:srgbClr`/…
1879
+ * child), preserved verbatim so a theme colour reference round-trips
1880
+ * instead of always being re-serialized as a resolved `a:srgbClr` (which
1881
+ * cuts the glow off from theme/Recolor changes).
1882
+ */
1883
+ textGlowColorXml?: XmlObject;
1884
+ /** Theme colour slot the glow colour resolved from, when it is `a:schemeClr`. */
1885
+ textGlowColorRef?: PptxThemeColorRef;
1846
1886
  /** Text reflection enabled flag. */
1847
1887
  textReflection?: boolean;
1848
1888
  /** Text reflection blur radius in px. */
@@ -1979,6 +2019,18 @@ interface BulletInfo {
1979
2019
  paragraphIndex?: number;
1980
2020
  /** Bullet font family from `a:buFont`. */
1981
2021
  fontFamily?: string;
2022
+ /**
2023
+ * PANOSE font-matching hint from `a:buFont/@panose`. `a:buFont` is a
2024
+ * CT_TextFont, the same complex type as `a:latin`/`a:ea`/`a:cs`/`a:sym`
2025
+ * (which carry the equivalent `TextStyle.latinFontPanose` etc.), so a
2026
+ * bullet's own PANOSE/pitch-family/charset decide the fallback glyph
2027
+ * PowerPoint substitutes when the named typeface is missing.
2028
+ */
2029
+ fontPanose?: string;
2030
+ /** Font pitch-and-family byte from `a:buFont/@pitchFamily`. */
2031
+ fontPitchFamily?: number;
2032
+ /** Font character-set byte from `a:buFont/@charset`. */
2033
+ fontCharset?: number;
1982
2034
  /** Bullet size as percentage of text font size from `a:buSzPct`. */
1983
2035
  sizePercent?: number;
1984
2036
  /** Bullet size in points from `a:buSzPts`. */
@@ -3292,6 +3344,15 @@ interface PptxChartHistogramOptions {
3292
3344
  intervalClosed?: 'l' | 'r';
3293
3345
  underflow?: number | 'auto';
3294
3346
  overflow?: number | 'auto';
3347
+ /**
3348
+ * `c:layoutPr/cx:aggregation` was authored instead of `cx:binning`: the
3349
+ * raw rows are CATEGORICAL (a Pareto chart's `clusteredColumn` series
3350
+ * counting occurrences of each authored category, COM-verified against
3351
+ * charts-com.pptx slide 31 / chartEx6.xml), not a numeric range to bin.
3352
+ * Mutually exclusive with `binSize`/`binCount`/`intervalClosed`, which
3353
+ * only apply to a true numeric-value histogram.
3354
+ */
3355
+ aggregateByCategory?: boolean;
3295
3356
  }
3296
3357
  /** Office 2016 ChartEx waterfall series layout options. */
3297
3358
  interface PptxChartWaterfallOptions {
@@ -3956,6 +4017,18 @@ interface PptxChartData {
3956
4017
  * the source" and callers should treat it as `true`. Surface only.
3957
4018
  */
3958
4019
  wireframe?: boolean;
4020
+ /**
4021
+ * Whether the surface chart is the 2-D "top view" projection
4022
+ * (`c:surfaceChart`, PowerPoint's "Contour" / "Wireframe Contour" types)
4023
+ * rather than the 3-D isometric one (`c:surface3DChart`, "3-D Surface" /
4024
+ * "3-D Surface (Wireframe)"). Both element names map to chart type
4025
+ * `"surface"`; this bit is the only thing that tells the renderer which
4026
+ * of the two projections PowerPoint actually drew, since a top-view
4027
+ * surface has no Z-axis at all (only category and series axes) while the
4028
+ * 3-D one draws all three. Surface only; `undefined` for every other
4029
+ * chart type.
4030
+ */
4031
+ surfaceTopView?: boolean;
3959
4032
  /**
3960
4033
  * Scatter presentation mode (`c:scatterChart/c:scatterStyle/@val`).
3961
4034
  *
@@ -6913,11 +6986,17 @@ interface ZoomPptxElement extends PptxElementBase, PptxImageProperties {
6913
6986
  * `zmPr/@returnToParent` (MS-PPTX `CT_ZoomObjectProperties`, shared by all
6914
6987
  * three Zoom kinds): whether continuing forward from the destination slide
6915
6988
  * during a live show returns to this Zoom's origin slide instead of
6916
- * advancing linearly through the deck. OOXML default is `true` when the
6917
- * attribute is present but this codebase leaves it `undefined` when the
6918
- * source XML omits it, so a round-trip never fabricates the attribute.
6919
- * For `zoomType: 'summary'`, this mirrors the first tile's own value; see
6920
- * {@link SummaryZoomTarget.returnToParent} for the per-tile value.
6989
+ * advancing linearly through the deck. The schema declares `<xsd:attribute
6990
+ * name="returnToParent" type="xsd:boolean" use="optional" default="true"/>`,
6991
+ * so an ABSENT attribute means `true`, not `false`. This codebase still
6992
+ * leaves the field `undefined` (rather than fabricating `true`) when the
6993
+ * source XML omits it, so a round-trip never invents an attribute the
6994
+ * source never had; a CONSUMER of this field (playback, e.g.
6995
+ * `pptx-viewer-shared`'s `resolveZoomNavigationTarget`) must read
6996
+ * `returnToParent !== false`, not `Boolean(returnToParent)`, to get the
6997
+ * spec-correct effective value. For `zoomType: 'summary'`, this mirrors the
6998
+ * first tile's own value; see {@link SummaryZoomTarget.returnToParent} for
6999
+ * the per-tile value.
6921
7000
  */
6922
7001
  returnToParent?: boolean;
6923
7002
  /**
@@ -8146,7 +8225,12 @@ interface PptxSlideTransition {
8146
8225
  spokes?: number;
8147
8226
  /** Pattern type for shred transition. */
8148
8227
  pattern?: string;
8149
- /** Through-black flag for blinds/checker (OOXML `@_thruBlk`). */
8228
+ /**
8229
+ * Through-black flag (OOXML `@_thruBlk`). COM-verified to actually apply to
8230
+ * `cut` and `fade` (see {@link TRANSITION_THRUBLK_TYPES}); parsed generically
8231
+ * off any standard transition child so an unexpected authored value still
8232
+ * round-trips.
8233
+ */
8150
8234
  thruBlk?: boolean;
8151
8235
  /** Split orientation (horz/vert) parsed from `@_orient`. */
8152
8236
  orient?: PptxSplitOrientation;
@@ -8589,7 +8673,7 @@ declare const P14_TRANSITION_KEYFRAMES = "\n/* ── Conveyor (translate X with
8589
8673
  /** Part 2: prism / reveal / ripple / shred / switch / vortex / warp / wheelReverse / window. */
8590
8674
  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";
8591
8675
  /** Both p14 keyframe blocks concatenated, for single `<style>` injection. */
8592
- 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";
8676
+ 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";
8593
8677
  //#endregion
8594
8678
  //#region src/render/p14-transition-css.d.ts
8595
8679
  /**
package/dist/internals.js CHANGED
@@ -1,26 +1,26 @@
1
- import { $f as a, $n as T, Ac as i, Ef as n, G as t, Jt as S, Kf as e, Mn as A, Pt as E, Tf as _, Vf as o, Yt as I, ft as r, hn as N, jn as R, ot as O, qt as M, rp as D, rt as l, sr as P, t as L, uc as F, xc as K } from "./transition-overlay-BmUNA9xJ.js";
1
+ import { G as a, Jt as t, Mc as T, Mn as i, Nn as n, Pt as S, Rf as e, Vc as _, Yt as A, er as E, ft as o, gn as I, lr as N, mp as r, ot as R, qt as O, rt as M, sp as D, t as l, tp as P, vp as L, xc as v, zf as F } from "./transition-overlay-BfpjfjU4.js";
2
2
  export {
3
- t as CINEMATIC_TRANSITION_KEYFRAMES,
4
- l as DEFAULT_MORPH_DURATION_MS,
5
- O as DEFAULT_TRANSITION_DURATION_MS,
6
- r as EASE,
7
- E as INSTANT,
8
- M as P14_TRANSITION_KEYFRAMES,
9
- S as P14_TRANSITION_KEYFRAMES_2,
10
- I as P14_TRANSITION_KEYFRAMES_ALL,
11
- L as PresentationTransitionOverlay,
12
- N as RANDOM_ELIGIBLE_TYPES,
13
- R as SLIDE_TRANSITION_KEYFRAMES,
14
- A as SLIDE_TRANSITION_KEYFRAMES_CSS,
15
- T as TRANSITION_SPEED_DURATION_MS,
16
- P as WHEEL_SPOKE_COUNTS,
17
- F as getCinematicTransitionAnimations,
18
- K as getP14TransitionAnimations,
19
- i as getSlideTransitionAnimations,
20
- _ as resolveDirection,
21
- n as resolveDirection8,
22
- o as resolveOrientation,
23
- e as resolveSlideTransition,
24
- a as resolveTransitionDurationMs,
25
- D as resolveWheelSpokeCount
3
+ a as CINEMATIC_TRANSITION_KEYFRAMES,
4
+ M as DEFAULT_MORPH_DURATION_MS,
5
+ R as DEFAULT_TRANSITION_DURATION_MS,
6
+ o as EASE,
7
+ S as INSTANT,
8
+ O as P14_TRANSITION_KEYFRAMES,
9
+ t as P14_TRANSITION_KEYFRAMES_2,
10
+ A as P14_TRANSITION_KEYFRAMES_ALL,
11
+ l as PresentationTransitionOverlay,
12
+ I as RANDOM_ELIGIBLE_TYPES,
13
+ i as SLIDE_TRANSITION_KEYFRAMES,
14
+ n as SLIDE_TRANSITION_KEYFRAMES_CSS,
15
+ E as TRANSITION_SPEED_DURATION_MS,
16
+ N as WHEEL_SPOKE_COUNTS,
17
+ v as getCinematicTransitionAnimations,
18
+ T as getP14TransitionAnimations,
19
+ _ as getSlideTransitionAnimations,
20
+ e as resolveDirection,
21
+ F as resolveDirection8,
22
+ P as resolveOrientation,
23
+ D as resolveSlideTransition,
24
+ r as resolveTransitionDurationMs,
25
+ L as resolveWheelSpokeCount
26
26
  };