pptx-angular-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.
@@ -1,5 +1,5 @@
1
1
  import * as pptx_viewer_core from 'pptx-viewer-core';
2
- import { PptxThemePreset, PptxElement, PptxSlide, ShapeStyle, PptxTextWarpPreset, XmlObject, PptxChartSeries, PptxChartLegendTextStyle, PptxChartMarkerSymbol, PptxChartDataPointPicture, PptxChartData, PptxChartDataLabelPosition, PptxChartType, PptxElementAnimation, PptxAnimationPreset, PptxAnimationSequence, PptxAnimationTrigger, PptxAnimationTimingCurve, PptxAnimationRepeatMode, PptxAnimationDirection, PptxAfterAnimationAction, ParsedTableStyleMap, PptxThemeColorScheme, PptxThemeFontScheme, TablePptxElement, PptxSection, OlePptxElement, TextSegment, TextStyle, PptxTransitionType, PptxSlideTransition, PptxBar3DShape, SmartArtLayoutType, SmartArtColorScheme, PptxSmartArtChrome, PptxSmartArtDrawingShape, SmartArtStyle, PptxSmartArtData, PptxThemeColorRef, PlaceholderDefaults, PptxEmbeddedFont, SmartArtLayout, AccessibilityIssueSeverity, AccessibilityIssue, AccessibilityIssueType, AccessibilityCheckOptions, ElementActionType, InkPptxElement, PptxComment, PptxChartBarDirection, ImagePptxElement, MasterViewTab, PptxHeaderFooter, PptxPresentationProperties, PptxViewProperties, PptxCustomShow, PptxCoreProperties, PptxAppProperties, PptxCustomProperty, PptxTagCollection, PptxSlideMaster, PptxNotesMaster, PptxHandoutMaster, PptxSlideSize, PptxSaveFormat, MediaPptxElement, PptxTheme, PptxHandler, PptxData, PptxHandlerSaveOptions, PptxModernCommentAuthor, PptxCommentMention, PptxThemeOption, ParsedSignature, PptxTableCell, PptxTableCellStyle, PptxTableRow, PptxTableData, SvgExportOptions, PptxGridSpacing, ChartPptxElement, RenderedNode, RenderedCircleNode, RenderedPolygonNode, RenderedRectNode, SmartArtLayoutResult, Model3DPptxElement, ZoomPptxElement, SmartArtPptxElement, PptxAnimationTimelineAnchor, MaterialPresetType, Text3DStyle, BevelPresetType, PptxChartDataLabelOptions, PptxChartAxisType, PptxChartAxisFormatting, PptxChartMarker, PptxChartDataPoint, PptxChartTrendline, PptxChartErrBars, PptxTextStyleLevels, SignatureStatus, ElementAction, PptxImageEffects, MediaBookmark, ColorMapAliasKey, ChartAxisEdit, ChartDataPointLabelEdit, PptxChartLegendPosition, PptxChartStyle, ChartAxisTitleStyleEdit, ChartGridlineStyleEdit, PptxSmartArtNode, PptxSmartArtNodeStyle, PptxLayoutPreview, MediaCaptionTrack, PptxMediaType } from 'pptx-viewer-core';
2
+ import { PptxThemePreset, PptxElement, PptxSlide, ShapeStyle, PptxTextWarpPreset, XmlObject, PptxChartSeries, PptxChartLegendTextStyle, PptxChartMarkerSymbol, PptxChartDataPointPicture, PptxChartData, PptxChartDataLabelPosition, PptxChartType, PptxElementAnimation, PptxAnimationPreset, PptxAnimationSequence, PptxAnimationTrigger, PptxAnimationTimingCurve, PptxAnimationRepeatMode, PptxAnimationDirection, PptxAfterAnimationAction, ParsedTableStyleMap, PptxThemeColorScheme, PptxThemeFontScheme, TablePptxElement, PptxSection, OlePptxElement, TextSegment, TextStyle, PptxTransitionType, PptxSlideTransition, PptxBar3DShape, SmartArtLayoutType, SmartArtColorScheme, PptxSmartArtChrome, PptxSmartArtDrawingShape, SmartArtStyle, PptxSmartArtData, PptxThemeColorRef, PlaceholderDefaults, PptxEmbeddedFont, SmartArtLayout, AccessibilityIssueSeverity, AccessibilityIssue, AccessibilityIssueType, AccessibilityCheckOptions, ElementActionType, InkPptxElement, PptxComment, PptxChartBarDirection, ImagePptxElement, MasterViewTab, PptxHeaderFooter, PptxPresentationProperties, PptxViewProperties, PptxCustomShow, PptxCoreProperties, PptxAppProperties, PptxCustomProperty, PptxTagCollection, PptxSlideMaster, PptxNotesMaster, PptxHandoutMaster, PptxSlideSize, PptxSaveFormat, MediaPptxElement, PptxTheme, PptxHandler, PptxData, PptxHandlerSaveOptions, PptxModernCommentAuthor, PptxCommentMention, PptxThemeOption, ParsedSignature, PptxLayoutPreview, PptxTableCell, PptxTableCellStyle, PptxTableRow, PptxTableData, SvgExportOptions, PptxLayoutOption, PptxGridSpacing, ChartPptxElement, RenderedNode, RenderedCircleNode, RenderedPolygonNode, RenderedRectNode, SmartArtLayoutResult, Model3DPptxElement, ZoomPptxElement, SmartArtPptxElement, PptxAnimationTimelineAnchor, MaterialPresetType, Text3DStyle, BevelPresetType, PptxChartDataLabelOptions, PptxChartAxisType, PptxChartAxisFormatting, PptxChartMarker, PptxChartDataPoint, PptxChartTrendline, PptxChartErrBars, PptxTextStyleLevels, SignatureStatus, ElementAction, PptxImageEffects, MediaBookmark, ColorMapAliasKey, ChartAxisEdit, ChartDataPointLabelEdit, PptxChartLegendPosition, PptxChartStyle, ChartAxisTitleStyleEdit, ChartGridlineStyleEdit, PptxSmartArtNode, PptxSmartArtNodeStyle, MediaCaptionTrack, PptxMediaType } from 'pptx-viewer-core';
3
3
  export { GroupResult, SWITCHABLE_LAYOUT_TYPES, UngroupResult, addSmartArtNode, addSmartArtNodeAsChild, chartDataChangeType, chartDataUpdatePoint, demoteSmartArtNode, formatAutoNumberMarker as formatAutoNumber, groupElements, promoteSmartArtNode, removeSmartArtNode, reorderSmartArtNode, switchSmartArtLayout, ungroupElements, updateSmartArtNodeText } from 'pptx-viewer-core';
4
4
  import { Doc } from 'yjs';
5
5
  import * as _angular_core from '@angular/core';
@@ -7,7 +7,7 @@ import { Signal, WritableSignal, OnDestroy, OnInit, AfterViewInit, OnChanges, Si
7
7
  import * as AiSdk from 'ai';
8
8
  import { LanguageModel, ChatTransport, UIMessage, ToolSet } from 'ai';
9
9
  import * as pptx_angular_viewer from 'pptx-angular-viewer';
10
- import { SafeHtml } from '@angular/platform-browser';
10
+ import { SafeHtml, SafeResourceUrl } from '@angular/platform-browser';
11
11
  import { TranslateService } from '@ngx-translate/core';
12
12
  import { Options } from 'html2canvas-pro';
13
13
 
@@ -780,10 +780,22 @@ interface ScriptFontPiece {
780
780
  *
781
781
  * This module replaces it with a wrapper style for a mirrored SIBLING node a
782
782
  * binding renders just below (or per `@algn`, from) the source element:
783
- * - `transform: scaleY(-1)` does the mirror (the flip `-webkit-box-reflect`
784
- * did for free); `scale()`/`skew()`/`rotate()` add `@sx`/`@sy`, `@kx`/
785
- * `@ky`, `@rot` on top of it, all CSS properties Firefox has always
786
- * supported.
783
+ * - `transform: scale(@sx, @sy)` does BOTH the mirror and the size: OOXML's
784
+ * `@sy` (ST_Percentage) carries the flip in its SIGN, not as a separate
785
+ * always-on negation. PowerPoint's own "Reflection, touching" gallery
786
+ * preset - byte-for-byte what this module's tests and the `audit-text`
787
+ * COM corpus use - emits `sy="-100000"` (-100%) for an ordinary full
788
+ * mirror; there is no separate flip flag. Hardcoding an unconditional
789
+ * `scaleY(-1)` AND then layering `scale(sx, sy)` on top of it (the
790
+ * pre-fix code) double-applied the flip for every reflection authored
791
+ * this way: `scaleY(-1) scale(1, -1)` composes to the identity matrix,
792
+ * so the "reflected" copy rendered as a plain, unmirrored, faded
793
+ * duplicate - confirmed live in the React demo against `audit-text`
794
+ * slide 14 ("REFLECTION" rendered twice, both right-side up) before this
795
+ * fix. `@sy` defaults to `-100000` (not OOXML's own generic
796
+ * `ST_Percentage` default of `100000`) so a bare `<a:reflection/>` with
797
+ * no authored scale still mirrors, matching every reflection preset
798
+ * PowerPoint's gallery actually emits.
787
799
  * - `mask-image`/`-webkit-mask-image` with a `linear-gradient` alpha ramp
788
800
  * reproduces the fade (`@stA`/`@endA`/`@stPos`/`@endPos`/`@blurRad`), at
789
801
  * an angle driven by `@fadeDir` (falling back to the same "fades toward
@@ -828,7 +840,7 @@ interface ReflectionWrapperStyle {
828
840
  top: string;
829
841
  width: string;
830
842
  height: string;
831
- /** Mirror (`scaleY(-1)`) composed with `@sx`/`@sy`/`@kx`/`@ky`/`@rot`. */
843
+ /** `scale(@sx, @sy)` (the sign of `@sy` IS the mirror) composed with `@kx`/`@ky`/`@rot`. */
832
844
  transform: string;
833
845
  /** Anchor point for the transform above, from `@algn` (default `center top`). */
834
846
  transformOrigin: string;
@@ -1633,6 +1645,17 @@ interface ChartSeriesLike {
1633
1645
  * @module chart-legend-build
1634
1646
  */
1635
1647
 
1648
+ /**
1649
+ * Resolve a legend's anchor position from its declared side, independent of
1650
+ * what entries it holds. Split out of `buildLegend` so a non-series legend
1651
+ * (the surface chart's value-band legend, `chart-surface-legend.ts`) can
1652
+ * reuse the exact same placement rules instead of re-deriving them.
1653
+ */
1654
+ declare function resolveLegendAnchorPosition(svgWidth: number, svgHeight: number, plotTop: number, legendPos: string): {
1655
+ legendX: number;
1656
+ legendY: number;
1657
+ legendAnchor: 'start' | 'middle' | 'end';
1658
+ };
1636
1659
  /**
1637
1660
  * Build the base legend entries + anchor position for a chart view model.
1638
1661
  *
@@ -2069,14 +2092,21 @@ declare function surfaceColor(t: number): {
2069
2092
  };
2070
2093
 
2071
2094
  /**
2072
- * Flat colour-mapped grid view-model builder for the surface chart kind (the
2073
- * fallback used when the grid has fewer than 2 series or 2 categories), plus
2074
- * the `buildSurfaceViewModel` dispatcher between it and the isometric builder.
2095
+ * 2-D top-view grid builder for the surface chart kind (`c:surfaceChart`,
2096
+ * PowerPoint's "Contour" / "Wireframe Contour" types), plus the
2097
+ * `buildSurfaceViewModel` dispatcher between it and the isometric 3-D
2098
+ * builder (`c:surface3DChart`).
2075
2099
  *
2076
2100
  * Split out of `chart-surface-treemap.ts` (which re-exports
2077
2101
  * `buildSurfaceViewModel`) to keep that file's several chart-kind builders
2078
2102
  * each under the repo's per-file line budget.
2079
2103
  *
2104
+ * COM-verified against `charts-com.pptx` slides 9-10 (surface types 85/86,
2105
+ * "Contour" and "Wireframe Contour"): PowerPoint draws these as a flat,
2106
+ * head-on grid of value bands (category axis along the bottom, series axis
2107
+ * along the right, no Z axis), never as an isometric projection; a filled
2108
+ * band paints the whole cell, a wireframe one draws its outline only.
2109
+ *
2080
2110
  * Ported from:
2081
2111
  * packages/react/src/viewer/utils/chart-surface-treemap.tsx (renderSurfaceChart)
2082
2112
  *
@@ -2086,10 +2116,11 @@ declare function surfaceColor(t: number): {
2086
2116
  /**
2087
2117
  * Build the view-model for a surface chart.
2088
2118
  *
2089
- * Renders an isometric 3-D-like projection when the grid has >= 2 series and
2090
- * >= 2 categories; falls back to a flat colour-mapped grid otherwise.
2091
- * Mirrors `renderSurfaceChart` / `renderIsometricSurfaceFallback` in React's
2092
- * `chart-surface-treemap.tsx`.
2119
+ * Renders the flat, head-on 2-D grid PowerPoint draws for its "Contour" /
2120
+ * "Wireframe Contour" top-view types (`chartData.surfaceTopView`), and the
2121
+ * isometric 3-D-like projection for its "3-D Surface" / "3-D Surface
2122
+ * (Wireframe)" types otherwise. Mirrors `renderSurfaceChart` /
2123
+ * `renderIsometricSurfaceFallback` in React's `chart-surface-treemap.tsx`.
2093
2124
  */
2094
2125
  declare function buildSurfaceViewModel(element: PptxElement, chartData: PptxChartData, categoryLabels: ReadonlyArray<string>): ChartViewModel;
2095
2126
 
@@ -2365,6 +2396,17 @@ declare function computeTrendlinePrimitives(chartData: PptxChartData, catCount:
2365
2396
 
2366
2397
  /** One of the three animation buckets a preset can occupy on an element. */
2367
2398
  type AnimationGroup = 'entrance' | 'emphasis' | 'exit';
2399
+ /**
2400
+ * Trigger options WITH their `pptx.animation.trigger.<value>` i18n key,
2401
+ * derived from {@link TRIGGER_VALUES}. Four of the five bindings hand-rolled
2402
+ * an identical (but incomplete, see {@link TRIGGER_VALUES}) `{ value,
2403
+ * labelKey }` array. This is the single list every binding's trigger
2404
+ * `<select>` should map to `<option>`s.
2405
+ */
2406
+ declare const TRIGGER_OPTIONS: ReadonlyArray<{
2407
+ value: PptxAnimationTrigger;
2408
+ labelKey: string;
2409
+ }>;
2368
2410
  /**
2369
2411
  * Presets that expose the direction picker. Superset of the per-binding sets
2370
2412
  * (Angular surfaced more directional presets than React's `flyIn`/`flyOut`).
@@ -3742,6 +3784,34 @@ interface SectionSlideGroup<TSection extends SectionGroupDescriptor = PptxSectio
3742
3784
  /** Discriminated id for every built-in slide template. */
3743
3785
  type SlideTemplateId = 'title' | 'titleAndContent' | 'sectionHeader' | 'agenda' | 'twoContent' | 'comparison' | 'quote' | 'timeline' | 'keyMetrics' | 'titleOnly' | 'blank' | 'closing';
3744
3786
 
3787
+ /** Which surface a slide is being painted on, as far as a media element cares. */
3788
+ interface MediaSurface {
3789
+ /** True only on the live slide-show stage. */
3790
+ presenting: boolean;
3791
+ /**
3792
+ * True when the slide is painted as a STILL of itself: the presenter
3793
+ * console's current-slide pane and next-slide preview, the slide-thumbnail
3794
+ * rail, a slide-transition overlay, an export raster. Never the surface the
3795
+ * show is actually running on.
3796
+ */
3797
+ preview: boolean;
3798
+ }
3799
+ /** The centred affordance drawn over a poster frame. */
3800
+ type MediaFallbackBadge = 'none' | 'play' | 'missing';
3801
+ /** The box drawn when there is not even a poster frame to paint. */
3802
+ type MediaFallbackPlaceholder = 'none' | 'typed' | 'missing';
3803
+ /** The layers a media element paints when no playable source is available. */
3804
+ interface MediaFallbackVisual {
3805
+ /** Paint the poster frame. Only ever true when the element has one. */
3806
+ poster: boolean;
3807
+ /** Dim the poster, signalling that the media behind it is unavailable. */
3808
+ dimPoster: boolean;
3809
+ /** Which affordance to centre over the poster, if any. */
3810
+ badge: MediaFallbackBadge;
3811
+ /** Which box to paint instead of a poster, if any. */
3812
+ placeholder: MediaFallbackPlaceholder;
3813
+ }
3814
+
3745
3815
  /**
3746
3816
  * ole-actions.ts - framework-agnostic helpers for the OLE download/open UI.
3747
3817
  *
@@ -3751,6 +3821,7 @@ type SlideTemplateId = 'title' | 'titleAndContent' | 'sectionHeader' | 'agenda'
3751
3821
  *
3752
3822
  * @module shared/render/ole-actions
3753
3823
  */
3824
+
3754
3825
  /**
3755
3826
  * Human-readable binary file size (1024-based), e.g. `1 byte`, `0 bytes`,
3756
3827
  * `12 MB`. Returns `undefined` for missing, negative, or non-finite input so
@@ -5823,7 +5894,7 @@ declare const P14_TRANSITION_KEYFRAMES = "\n/* \u2500\u2500 Conveyor (translate
5823
5894
  /** Part 2: prism / reveal / ripple / shred / switch / vortex / warp / wheelReverse / window. */
5824
5895
  declare const P14_TRANSITION_KEYFRAMES_2 = "\n/* \u2500\u2500 Prism: see `slide-transition-prism` (split out to keep this module\n under the per-file LOC budget) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Reveal (slide away reveal) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Ripple (expanding ring clip-path) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Shred (fragmented clip-path pieces) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Switch (flip/rotate swap) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Vortex (rotate + scale spiral) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Warp: see `slide-transition-warp` (COM-measured radial zoom blur,\n split out to keep this module under the per-file LOC budget) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 WheelReverse (reverse wheel rotation) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Window (scale from center with border) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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";
5825
5896
  /** Both p14 keyframe blocks concatenated, for single `<style>` injection. */
5826
- declare const P14_TRANSITION_KEYFRAMES_ALL = "\n/* \u2500\u2500 Conveyor (translate X with staggered timing) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Doors (clip-path from center split) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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/* \u2500\u2500 Ferris (rotate elements around center) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Flash (bright flash opacity burst) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Flythrough (scale + translate Z-axis feel) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Gallery (translate with perspective) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Glitter (particle dissolve effect) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Honeycomb (hexagonal reveal) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Pan (large-scale translate) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Prism: see `slide-transition-prism` (split out to keep this module\n under the per-file LOC budget) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Reveal (slide away reveal) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Ripple (expanding ring clip-path) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Shred (fragmented clip-path pieces) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Switch (flip/rotate swap) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Vortex (rotate + scale spiral) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Warp: see `slide-transition-warp` (COM-measured radial zoom blur,\n split out to keep this module under the per-file LOC budget) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 WheelReverse (reverse wheel rotation) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Window (scale from center with border) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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";
5897
+ declare const P14_TRANSITION_KEYFRAMES_ALL = "\n/* \u2500\u2500 Conveyor (translate X with staggered timing) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Doors (clip-path from center split) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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/* \u2500\u2500 Ferris (rotate elements around center) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Flash (bright flash opacity burst) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Flythrough (scale + translate Z-axis feel) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Gallery (translate with perspective) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Glitter (particle dissolve effect) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Honeycomb (hexagonal reveal) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Pan (large-scale translate) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Prism: see `slide-transition-prism` (split out to keep this module\n under the per-file LOC budget) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Reveal (slide away reveal) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Ripple (expanding ring clip-path) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Shred (fragmented clip-path pieces) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Switch (flip/rotate swap) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Vortex (rotate + scale spiral) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Warp: see `slide-transition-warp` (COM-measured radial zoom blur,\n split out to keep this module under the per-file LOC budget) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 WheelReverse (reverse wheel rotation) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\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/* \u2500\u2500 Window (scale from center with border) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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";
5827
5898
 
5828
5899
  /**
5829
5900
  * `p14-transition-css` — animation resolver for the Office 2010 (`p14`
@@ -7782,7 +7853,7 @@ interface OutlineRow {
7782
7853
  */
7783
7854
 
7784
7855
  /** Every command a canvas context menu can offer, in no particular order. */
7785
- type ContextMenuCommandId = 'copy' | 'cut' | 'paste' | 'duplicate' | 'bring-forward' | 'send-backward' | 'bring-front' | 'send-back' | 'ai-ask' | 'ai-fix' | 'comment' | 'hyperlink' | 'table-insert-row-above' | 'table-insert-row-below' | 'table-delete-row' | 'table-insert-col-left' | 'table-insert-col-right' | 'table-delete-col' | 'table-merge-selected' | 'table-merge-right' | 'table-merge-down' | 'table-split' | 'group' | 'ungroup' | 'delete';
7856
+ type ContextMenuCommandId = 'copy' | 'cut' | 'paste' | 'duplicate' | 'edit-text' | 'bring-forward' | 'send-backward' | 'bring-front' | 'send-back' | 'ai-ask' | 'ai-fix' | 'comment' | 'hyperlink' | 'table-insert-row-above' | 'table-insert-row-below' | 'table-delete-row' | 'table-insert-col-left' | 'table-insert-col-right' | 'table-delete-col' | 'table-merge-selected' | 'table-merge-right' | 'table-merge-down' | 'table-split' | 'group' | 'ungroup' | 'save-as-picture' | 'edit-alt-text' | 'size-and-position' | 'format-shape' | 'delete';
7786
7857
  /** One rendered entry: a command, plus how it is presented. */
7787
7858
  interface ContextMenuEntry {
7788
7859
  id: ContextMenuCommandId;
@@ -7796,6 +7867,27 @@ interface ContextMenuEntry {
7796
7867
  disabled?: boolean;
7797
7868
  }
7798
7869
 
7870
+ /**
7871
+ * Paste Special (Ctrl+Alt+V) and the Paste Options mini-toolbar PowerPoint
7872
+ * shows right after an ordinary paste. Both surfaces offer the same four
7873
+ * choices, applied to the just-pasted clone: Keep Source Formatting, Use
7874
+ * Destination Theme, Picture, Keep Text Only.
7875
+ *
7876
+ * This viewer's clipboard is an in-memory element snapshot (see
7877
+ * `element-clipboard.ts`), not real OS clipboard formats, so "Paste Special"
7878
+ * here means "how should the clone that `cloneElementForPaste` already
7879
+ * produced be reshaped", not "which of several MIME payloads to decode".
7880
+ * Three of the four formats are pure element transforms and live here; the
7881
+ * fourth (Picture) needs a DOM rasterization step only a binding can perform,
7882
+ * so this module only builds the resulting element once the binding hands it
7883
+ * a rendered data URL (see {@link buildRasterPictureElement}).
7884
+ *
7885
+ * @module render/paste-special
7886
+ */
7887
+
7888
+ /** The four paste formats PowerPoint's Paste Options / Paste Special offer. */
7889
+ type PasteSpecialFormat = 'keep-source-formatting' | 'use-destination-theme' | 'picture' | 'keep-text-only';
7890
+
7799
7891
  /**
7800
7892
  * smart-art-presets.ts: the SmartArt insert-gallery catalogue, shared across
7801
7893
  * bindings. Pure data + types; consumed by each binding's insert dialog and
@@ -8642,34 +8734,6 @@ interface InsertChartTypeOption {
8642
8734
  label: string;
8643
8735
  }
8644
8736
 
8645
- /** Which surface a slide is being painted on, as far as a media element cares. */
8646
- interface MediaSurface {
8647
- /** True only on the live slide-show stage. */
8648
- presenting: boolean;
8649
- /**
8650
- * True when the slide is painted as a STILL of itself: the presenter
8651
- * console's current-slide pane and next-slide preview, the slide-thumbnail
8652
- * rail, a slide-transition overlay, an export raster. Never the surface the
8653
- * show is actually running on.
8654
- */
8655
- preview: boolean;
8656
- }
8657
- /** The centred affordance drawn over a poster frame. */
8658
- type MediaFallbackBadge = 'none' | 'play' | 'missing';
8659
- /** The box drawn when there is not even a poster frame to paint. */
8660
- type MediaFallbackPlaceholder = 'none' | 'typed' | 'missing';
8661
- /** The layers a media element paints when no playable source is available. */
8662
- interface MediaFallbackVisual {
8663
- /** Paint the poster frame. Only ever true when the element has one. */
8664
- poster: boolean;
8665
- /** Dim the poster, signalling that the media behind it is unavailable. */
8666
- dimPoster: boolean;
8667
- /** Which affordance to centre over the poster, if any. */
8668
- badge: MediaFallbackBadge;
8669
- /** Which box to paint instead of a poster, if any. */
8670
- placeholder: MediaFallbackPlaceholder;
8671
- }
8672
-
8673
8737
  /**
8674
8738
  * Trim-timeline geometry math for the trim-editing UI, shared by every
8675
8739
  * binding's trim scrubber (React `TrimTimeline`, Vue `MediaTrimTimeline.vue`,
@@ -8721,6 +8785,10 @@ interface SummaryZoomTileView {
8721
8785
  backgroundColor: string;
8722
8786
  style: Record<string, string>;
8723
8787
  ariaLabel: string;
8788
+ /** This tile's own `zmPr/@returnToParent`; see {@link ZoomPptxElement.returnToParent}. */
8789
+ returnToParent: boolean;
8790
+ /** This tile's own `zmPr/@transitionDur` in milliseconds; see {@link ZoomPptxElement.transitionDurationMs}. */
8791
+ transitionDurationMs?: number;
8724
8792
  }
8725
8793
  interface SummaryZoomView {
8726
8794
  layout: 'grid' | 'fixed';
@@ -8871,6 +8939,55 @@ interface ThemeColorPickerCommit {
8871
8939
  */
8872
8940
  declare function gradientStopColorCommitPatch(commit: ThemeColorPickerCommit): Pick<GradientStop$1, 'color' | 'colorRef'>;
8873
8941
 
8942
+ /**
8943
+ * `pslz:zmPr`/`psezm:zmPr`/`psuz:zmPr`'s `@returnToParent` and
8944
+ * `@transitionDur` (MS-PPTX `CT_ZoomObjectProperties`): what a Slide Zoom /
8945
+ * Section Zoom / Summary Zoom tile does to slide-show PLAYBACK, not just what
8946
+ * core parses and round-trips.
8947
+ *
8948
+ * `returnToParent`: once the show advances past the LAST slide of the
8949
+ * zoom's target (a single slide for a Slide Zoom, or the whole contiguous
8950
+ * section for a Section Zoom / Summary Zoom tile), a forward "next slide"
8951
+ * step jumps back to the slide the zoom was clicked FROM instead of
8952
+ * continuing linearly through the deck. This module tracks that pending
8953
+ * "excursion" as a plain value so every binding's own navigation hook stores
8954
+ * it in whatever reactive primitive it already uses (a ref, a signal, a
8955
+ * store field) and asks {@link resolveForwardSlideWithZoomReturn} what the
8956
+ * next slide is on every forward step.
8957
+ *
8958
+ * `transitionDur`: the zoom's own transition length, independent of
8959
+ * whatever `<p:transition>` the destination slide is authored with.
8960
+ * PowerPoint plays a `zoom` transition (see `slide-transition-css.ts`) for a
8961
+ * live Zoom link; {@link buildZoomTransitionOverride} produces the synthetic
8962
+ * `PptxSlideTransition` a binding's transition executor should play INSTEAD
8963
+ * of the destination's own, only for the duration of the click/return, so
8964
+ * this is additive and reversible: the destination slide's own transition
8965
+ * still plays normally on any later, non-zoom visit.
8966
+ *
8967
+ * @module render/zoom-return-navigation
8968
+ */
8969
+
8970
+ /**
8971
+ * The navigation-relevant fields of a Zoom click target, independent of
8972
+ * `zoomType`.
8973
+ *
8974
+ * `returnToParent` is already resolved to its EFFECTIVE value here (not the
8975
+ * raw, possibly-`undefined` `ZoomPptxElement`/`SummaryZoomTarget` field):
8976
+ * `CT_ZoomObjectProperties/@returnToParent` (MS-PPTX) is `<xsd:attribute
8977
+ * name="returnToParent" type="xsd:boolean" use="optional" default="true"/>`,
8978
+ * so an ABSENT attribute means true, not false. Core deliberately stores
8979
+ * `undefined` rather than fabricating `true` (so a round-trip never invents
8980
+ * an attribute the source never had), which makes `Boolean(x)` the wrong way
8981
+ * to read it; the two `resolve*NavigationTarget` functions below are the only
8982
+ * place that distinction should be made.
8983
+ */
8984
+ interface ZoomNavigationTarget {
8985
+ targetSlideIndex: number;
8986
+ targetSectionId?: string;
8987
+ returnToParent: boolean;
8988
+ transitionDurationMs?: number;
8989
+ }
8990
+
8874
8991
  /**
8875
8992
  * Command-search data for the PowerPoint-style "Tell me what you want to do"
8876
8993
  * search bar. Provides searchable command entries grouped by category, each
@@ -10301,6 +10418,25 @@ declare function getCinematicTransitionAnimations(type: PptxTransitionType, dura
10301
10418
  */
10302
10419
  declare const CINEMATIC_TRANSITION_KEYFRAMES: string;
10303
10420
 
10421
+ /**
10422
+ * The slide layouts the Home tab's "New Slide" split button can insert from.
10423
+ *
10424
+ * A deck's layouts hang off its masters, one list per master, and a layout's
10425
+ * `name` is optional in OOXML. This flattens both facts away so the ribbon can
10426
+ * render a single menu without knowing about masters: one entry per layout, in
10427
+ * document order, always with something to display.
10428
+ *
10429
+ * Pure on purpose: the picker's behaviour is worth testing without a TestBed.
10430
+ */
10431
+
10432
+ /** One entry in the New Slide layout menu. */
10433
+ interface RibbonLayoutOption {
10434
+ /** Package path of the layout, written to the new slide's `layoutPath`. */
10435
+ path: string;
10436
+ /** Display name; falls back to the layout's file stem when OOXML omits one. */
10437
+ name: string;
10438
+ }
10439
+
10304
10440
  /**
10305
10441
  * Thin re-export shim → vendored `pptx-viewer-shared` (`render/embedded-fonts`).
10306
10442
  *
@@ -11702,12 +11838,40 @@ declare class EditorStateService {
11702
11838
  private clipboard;
11703
11839
  /** Whether the clipboard holds copied elements (enables paste). */
11704
11840
  readonly hasClipboard: _angular_core.WritableSignal<boolean>;
11841
+ /** Ctrl/Cmd+Alt+V dialog visibility. */
11842
+ readonly isPasteSpecialDialogOpen: _angular_core.WritableSignal<boolean>;
11843
+ /** The Paste Options toolbar's target: the elements a normal paste just inserted. */
11844
+ readonly pasteOptionsToolbar: _angular_core.WritableSignal<{
11845
+ id: string;
11846
+ sourceClone: PptxElement;
11847
+ }[] | null>;
11705
11848
  /** Copy the selected elements to the in-memory clipboard. */
11706
11849
  copySelected(slideIndex: number): void;
11707
11850
  /** Copy then delete the selected elements. */
11708
11851
  cutSelected(slideIndex: number): void;
11709
11852
  /** Paste clipboard elements onto a slide (offset + fresh ids) and select them. */
11710
11853
  paste(slideIndex: number): void;
11854
+ /**
11855
+ * Paste Special (Ctrl+Alt+V) / the dialog's OK: paste the clipboard with one
11856
+ * of the four PowerPoint formats already applied, and hand back each
11857
+ * inserted element's id alongside its own pristine "Keep Source Formatting"
11858
+ * clone, so the Paste Options toolbar can re-derive from it non-cumulatively.
11859
+ */
11860
+ pasteWithFormat(slideIndex: number, format: PasteSpecialFormat): {
11861
+ id: string;
11862
+ sourceClone: PptxElement;
11863
+ }[];
11864
+ /**
11865
+ * Re-derive already-pasted elements (the Paste Options toolbar) from their
11866
+ * own pristine source clones. Non-cumulative: every choice starts over from
11867
+ * the clone `pasteWithFormat` returned, matching PowerPoint's own toolbar.
11868
+ * "Picture" is handled by the caller (it needs a DOM rasterize step this
11869
+ * service does not perform) via a plain `updateElement` call instead.
11870
+ */
11871
+ reformatPasted(slideIndex: number, entries: readonly {
11872
+ id: string;
11873
+ sourceClone: PptxElement;
11874
+ }[], format: Exclude<PasteSpecialFormat, 'picture'>): void;
11711
11875
  /** Append a new element to a slide (records history) and select it. */
11712
11876
  addElement(slideIndex: number, element: PptxElement): void;
11713
11877
  /** Patch slide-level properties (background, notes, …); one history entry. */
@@ -12331,6 +12495,64 @@ declare class RecentColorsService {
12331
12495
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
12332
12496
  }
12333
12497
 
12498
+ /**
12499
+ * Home > Reset: re-apply the active slide's own layout, restoring inherited
12500
+ * placeholder geometry and formatting (React/Vue parity via the shared
12501
+ * `resetSlideLayoutPath` decision function). A no-op when the slide records
12502
+ * no layout. Exported as a pure dispatch function (rather than inlined in the
12503
+ * component) so it is directly testable without constructing the component,
12504
+ * whose constructor runs an `effect()` that needs a full Angular
12505
+ * `ChangeDetectionScheduler` this package's TestBed-free unit tests don't
12506
+ * provide (see `action-settings-panel.component.test.ts`).
12507
+ */
12508
+ declare function performResetSlide(editor: Pick<EditorStateService, 'slides' | 'applyLayout'>, slideIndex: number): void;
12509
+ declare class RibbonHomeSectionComponent {
12510
+ protected readonly editor: EditorStateService;
12511
+ private readonly loader;
12512
+ /** Layouts offered by the New Slide split button and the Layout menu. */
12513
+ protected readonly layoutOptions: _angular_core.Signal<RibbonLayoutOption[]>;
12514
+ /** `layoutPath` of the active slide, marking the current gallery tile. */
12515
+ protected readonly currentLayoutPath: _angular_core.Signal<string | undefined>;
12516
+ /**
12517
+ * Layout artwork for the gallery thumbnails, keyed by layout path.
12518
+ *
12519
+ * Parsing every layout part is only worth doing once a gallery is opened,
12520
+ * so this stays empty until {@link loadLayoutPreviews} runs. Core memoises
12521
+ * the parse, so reopening a menu costs nothing.
12522
+ */
12523
+ protected readonly layoutPreviews: _angular_core.WritableSignal<ReadonlyMap<string, PptxLayoutPreview>>;
12524
+ constructor();
12525
+ readonly slideIndex: _angular_core.InputSignal<number>;
12526
+ readonly selectedElement: _angular_core.InputSignal<PptxElement | null>;
12527
+ readonly canEdit: _angular_core.InputSignal<boolean>;
12528
+ readonly formatPainterActive: _angular_core.InputSignal<boolean>;
12529
+ readonly canActivateFormatPainter: _angular_core.InputSignal<boolean>;
12530
+ readonly toggleFormatPainter: _angular_core.OutputEmitterRef<void>;
12531
+ readonly findReplace: _angular_core.OutputEmitterRef<void>;
12532
+ /** "Slide Templates" in the Slides group; the host opens the gallery dialog. */
12533
+ readonly openTemplateGallery: _angular_core.OutputEmitterRef<void>;
12534
+ /** Emitted with the layout the user picked, after it has been applied. */
12535
+ readonly applyLayout: _angular_core.OutputEmitterRef<string>;
12536
+ /** Emitted after Home > Reset has re-applied the slide's layout. */
12537
+ readonly resetSlide: _angular_core.OutputEmitterRef<void>;
12538
+ /**
12539
+ * Re-map the active slide onto `layoutPath`. The operation is self-contained,
12540
+ * so the output is a notification rather than the thing that performs it.
12541
+ */
12542
+ protected onApplyLayout(layoutPath: string): void;
12543
+ /**
12544
+ * The button used to `resetSlide.emit()` to nobody, so clicking it did
12545
+ * nothing; {@link performResetSlide} now actually performs the reset.
12546
+ */
12547
+ protected onResetSlide(): void;
12548
+ protected copy(): void;
12549
+ protected cut(): void;
12550
+ protected paste(): void;
12551
+ protected onSelectAll(): void;
12552
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonHomeSectionComponent, never>;
12553
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonHomeSectionComponent, "pptx-ribbon-home-section", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "formatPainterActive": { "alias": "formatPainterActive"; "required": false; "isSignal": true; }; "canActivateFormatPainter": { "alias": "canActivateFormatPainter"; "required": false; "isSignal": true; }; }, { "toggleFormatPainter": "toggleFormatPainter"; "findReplace": "findReplace"; "openTemplateGallery": "openTemplateGallery"; "applyLayout": "applyLayout"; "resetSlide": "resetSlide"; }, never, never, true, never>;
12554
+ }
12555
+
12334
12556
  /**
12335
12557
  * Duotone SVG `<filter>` descriptor for Angular templates.
12336
12558
  *
@@ -12833,6 +13055,11 @@ declare class ViewerCanvasEditingService {
12833
13055
  x: number;
12834
13056
  y: number;
12835
13057
  } | null>;
13058
+ /** Open EMPTY-CANVAS context-menu position (client coords), or null; mutually exclusive with `contextMenuPos`. */
13059
+ readonly canvasContextMenuPos: _angular_core.WritableSignal<{
13060
+ x: number;
13061
+ y: number;
13062
+ } | null>;
12836
13063
  private host;
12837
13064
  /** Wire the host accessors (called once from the component constructor). */
12838
13065
  bind(host: CanvasEditingHost): void;
@@ -12888,7 +13115,11 @@ declare class ViewerCanvasEditingService {
12888
13115
  }): void;
12889
13116
  /** Empty-stage press: disarm the painter if armed, else clear the selection. */
12890
13117
  onBackgroundClick(): void;
12891
- /** Right-click: select the element under the cursor and open the menu. */
13118
+ /**
13119
+ * Right-click: select the element under the cursor and open the menu, or
13120
+ * (when nothing was hit) open the empty-canvas menu instead. The two menus
13121
+ * are mutually exclusive, so opening one always closes the other.
13122
+ */
12892
13123
  onContextMenu(event: {
12893
13124
  id: string | null;
12894
13125
  x: number;
@@ -13768,7 +13999,7 @@ declare class ViewerInspectorPanelService {
13768
13999
  /** Inspector content, but null on mobile once the user has swiped it away. */
13769
14000
  readonly visibleInspectorKind: _angular_core.Signal<InspectorContent>;
13770
14001
  /** Accessible-label translation key for the inspector host, by active content. */
13771
- readonly inspectorLabel: _angular_core.Signal<"" | "pptx.toolbar.comments" | "pptx.accessibility.title" | "pptx.viewer.digitalSignatures" | "pptx.selectionPane.title" | "pptx.inspector.properties">;
14002
+ readonly inspectorLabel: _angular_core.Signal<"" | "pptx.accessibility.title" | "pptx.viewer.digitalSignatures" | "pptx.toolbar.comments" | "pptx.selectionPane.title" | "pptx.inspector.properties">;
13772
14003
  /**
13773
14004
  * Dismiss the mobile bottom-sheet inspector (backdrop tap or a past-threshold
13774
14005
  * swipe-down): hide the host until reopened and clear any explicit tool panel.
@@ -14525,6 +14756,21 @@ declare class PowerPointViewerComponent implements PowerPointViewerAPI {
14525
14756
  protected readonly showGrid: _angular_core.WritableSignal<boolean>;
14526
14757
  /** Whether ruler strips are visible on the editor canvas. */
14527
14758
  protected readonly showRulers: _angular_core.WritableSignal<boolean>;
14759
+ /** Home > Reset re-exposed for the canvas menu's "Reset Slide" entry. */
14760
+ protected readonly performResetSlide: typeof performResetSlide;
14761
+ /** Anchor point (click coords) of the canvas menu's Layout gallery, or null when closed. */
14762
+ protected readonly canvasLayoutGalleryPos: _angular_core.WritableSignal<{
14763
+ x: number;
14764
+ y: number;
14765
+ } | null>;
14766
+ /** Layouts offered by the canvas menu's Layout gallery (same source as the ribbon's). */
14767
+ protected readonly canvasLayoutOptions: _angular_core.Signal<RibbonLayoutOption[]>;
14768
+ /** Layout artwork, fetched the first time the canvas menu's gallery opens. */
14769
+ protected readonly canvasLayoutPreviews: _angular_core.WritableSignal<ReadonlyMap<string, PptxLayoutPreview>>;
14770
+ /** Lazily loads layout artwork the first time the canvas menu's gallery opens. */
14771
+ private readonly loadCanvasLayoutPreviewsEffect;
14772
+ /** Apply the picked layout to the active slide and close the gallery. */
14773
+ protected onCanvasLayoutSelect(layout: PptxLayoutOption): void;
14528
14774
  /** Whether center-crosshair guide lines are visible on the editor canvas. */
14529
14775
  protected readonly showGuides: _angular_core.WritableSignal<boolean>;
14530
14776
  /** Whether snap-to-grid is active on the editor canvas. */
@@ -14758,6 +15004,27 @@ declare class PowerPointViewerComponent implements PowerPointViewerAPI {
14758
15004
  * cleared for the same reason.
14759
15005
  */
14760
15006
  protected onContextMenuAddComment(): void;
15007
+ /** Context-menu "Edit Text": same entry point a double-click uses. */
15008
+ protected onContextMenuEditText(): void;
15009
+ /**
15010
+ * Context-menu "Save as Picture": rasterise the right-clicked element's
15011
+ * own DOM node (found the same way the canvas resolves a click target) and
15012
+ * download it, reusing the same raster/download pipeline every other
15013
+ * export button in this binding already goes through.
15014
+ */
15015
+ protected onContextMenuSaveAsPicture(): void;
15016
+ /**
15017
+ * Paste Special dialog OK: paste the clipboard with `format` applied. For
15018
+ * "Picture", the plain clone is inserted first (there is nothing to
15019
+ * rasterize before it is mounted); this waits one frame, then rasterises
15020
+ * each inserted node and replaces it, the same DOM lookup/raster pipeline
15021
+ * "Save as Picture" already uses.
15022
+ */
15023
+ protected onPasteSpecialConfirm(format: PasteSpecialFormat): void;
15024
+ /** Paste Options toolbar: re-derive the already-pasted element(s) from their own pristine clone. */
15025
+ protected onPasteOptionsChoose(format: PasteSpecialFormat): void;
15026
+ /** Rasterise the mounted node for `elementId` and replace it with a picture, or no-op if unmounted. */
15027
+ private rasterizePastedNodeAsPicture;
14761
15028
  /** Canvas marker click: bring the comments panel on screen (same as above). */
14762
15029
  protected onCommentMarkerClick(): void;
14763
15030
  /** Get the IDs of currently selected elements. */
@@ -17698,6 +17965,18 @@ declare class InkRendererComponent {
17698
17965
  * fallback so the saved file is never nameless.
17699
17966
  */
17700
17967
  declare function getOleDownloadFileName(el: OlePptxElement): string;
17968
+ /**
17969
+ * Whether {@link OleRendererComponent}'s Download / Open action bar may
17970
+ * render at all, mirroring `media-renderer-helpers.ts`'s `mediaSurfaceFor`.
17971
+ *
17972
+ * A still of a slide (thumbnail rail, presenter console panes, export
17973
+ * raster) renders this component INSIDE a
17974
+ * `<button aria-label="Go to slide N">`, so the action bar's own `<button>`
17975
+ * would otherwise be invalid, un-clickable nested-button markup; the live
17976
+ * presentation stage never offers element-level browser chrome either. See
17977
+ * the shared `oleActionsVisible` decision.
17978
+ */
17979
+ declare function oleActionsVisibleFor(interactive: boolean, presenting: boolean): boolean;
17701
17980
  /** A single descriptive info row for the OLE caption / overlay. */
17702
17981
  interface OleInfoRow {
17703
17982
  /** Stable key for `@for` tracking (e.g. `'type'`, `'file'`). */
@@ -17771,6 +18050,21 @@ declare function buildOleActionModel(el: OlePptxElement, translate?: TranslateSe
17771
18050
  declare class OleRendererComponent {
17772
18051
  /** The element to render. Must be `type === 'ole'`. */
17773
18052
  readonly element: _angular_core.InputSignal<PptxElement>;
18053
+ /** True only on the main editable canvas; see `showActions`. */
18054
+ readonly interactive: _angular_core.InputSignal<boolean>;
18055
+ /** True only on the live presentation stage; see `showActions`. */
18056
+ readonly presenting: _angular_core.InputSignal<boolean>;
18057
+ /**
18058
+ * Whether the Download / Open action bar may render at all.
18059
+ *
18060
+ * A still of a slide (thumbnail rail, presenter console panes, export
18061
+ * raster) renders this component INSIDE a
18062
+ * `<button aria-label="Go to slide N">`, so the action bar's own
18063
+ * `<button>` would otherwise be invalid, un-clickable nested-button
18064
+ * markup; the live presentation stage never offers element-level browser
18065
+ * chrome either.
18066
+ */
18067
+ readonly showActions: _angular_core.Signal<boolean>;
17774
18068
  /** Narrowed OLE element: undefined when the input is not `type === 'ole'`. */
17775
18069
  private readonly ole;
17776
18070
  /** Resolved application type (excel / word / pdf / visio / mathtype / unknown). */
@@ -17819,7 +18113,7 @@ declare class OleRendererComponent {
17819
18113
  */
17820
18114
  openEmbedded(): void;
17821
18115
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<OleRendererComponent, never>;
17822
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<OleRendererComponent, "pptx-ole-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
18116
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OleRendererComponent, "pptx-ole-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "presenting": { "alias": "presenting"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
17823
18117
  }
17824
18118
 
17825
18119
  /**
@@ -18083,7 +18377,7 @@ declare class ZoomRendererComponent {
18083
18377
  protected readonly interactive: _angular_core.Signal<boolean>;
18084
18378
  /** Navigate to the zoom target; no-op when the tile is not interactive. */
18085
18379
  private activate;
18086
- protected activateSummary(event: Event, target: number): void;
18380
+ protected activateSummary(event: Event, tile: SummaryZoomTileView): void;
18087
18381
  protected onClick(event: MouseEvent): void;
18088
18382
  protected onKeydown(event: KeyboardEvent): void;
18089
18383
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZoomRendererComponent, never>;
@@ -18527,6 +18821,12 @@ declare class PresentationShowNavigator {
18527
18821
  private autoAdvanceTimer;
18528
18822
  /** Deck index before each committed change; backs {@link goToLastViewed}. */
18529
18823
  private previousIndex;
18824
+ /**
18825
+ * A pending "return to zoom" excursion armed by {@link navigateToZoomTarget},
18826
+ * consumed by a forward `navigate('next')` once the show reaches the end of
18827
+ * the target's range. See `pptx-viewer-shared`'s `zoom-return-navigation`.
18828
+ */
18829
+ private zoomExcursion;
18530
18830
  constructor(deps: ShowNavigatorDeps);
18531
18831
  /** Consume the "entered backward" flag: reads and clears it in one call. */
18532
18832
  takePendingCompletedEntry(): boolean;
@@ -18552,11 +18852,26 @@ declare class PresentationShowNavigator {
18552
18852
  clearAutoAdvance(): void;
18553
18853
  navigate(direction: ShowDirection): void;
18554
18854
  /**
18555
- * Jump directly to `index` (clamped). Used by zoom tiles and by on-slide
18556
- * Action Settings (`ppaction://hlinksldjump`); ENTERS the target slide, so
18557
- * PowerPoint plays its transition exactly as a forward step does.
18855
+ * Jump directly to `index` (clamped). Used by on-slide Action Settings
18856
+ * (`ppaction://hlinksldjump`) and by {@link navigateToZoomTarget}; ENTERS
18857
+ * the target slide, so PowerPoint plays its transition exactly as a forward
18858
+ * step does.
18859
+ *
18860
+ * @param transitionOverride Play this transition INSTEAD of the
18861
+ * destination's own authored `<p:transition>`. Set by a Slide Zoom /
18862
+ * Section Zoom / Summary Zoom navigation that authored its own
18863
+ * `zmPr/@transitionDur` (see `buildZoomTransitionOverride`).
18558
18864
  */
18559
- goToSlide(index: number): void;
18865
+ goToSlide(index: number, transitionOverride?: PptxSlideTransition): void;
18866
+ /**
18867
+ * Handle a Slide Zoom / Section Zoom / Summary Zoom tile click: navigates
18868
+ * to the target slide, playing the zoom's own `zmPr/@transitionDur` when
18869
+ * authored, and (when `returnToParent` is set) arms an excursion so the
18870
+ * next forward `navigate('next')` past the target's range returns to the
18871
+ * slide the zoom was clicked from instead of continuing linearly through
18872
+ * the deck.
18873
+ */
18874
+ navigateToZoomTarget(target: ZoomNavigationTarget): void;
18560
18875
  /**
18561
18876
  * The single place a slide change becomes visible: set the transition, move
18562
18877
  * the index, retarget the annotation layer, and tell the host.
@@ -19557,6 +19872,8 @@ declare class SlideTransitionCardComponent {
19557
19872
  protected readonly morphOption: _angular_core.Signal<pptx_viewer_core.PptxMorphOption>;
19558
19873
  /** Compass tokens for the current type, or undefined when it takes none. */
19559
19874
  protected readonly directionTokens: _angular_core.Signal<readonly string[] | undefined>;
19875
+ protected readonly patternOptions: _angular_core.Signal<readonly string[] | undefined>;
19876
+ protected readonly hasThruBlk: _angular_core.Signal<boolean>;
19560
19877
  protected readonly orientation: _angular_core.Signal<pptx_viewer_core.PptxSplitOrientation>;
19561
19878
  protected readonly spokes: _angular_core.Signal<number>;
19562
19879
  protected readonly durationMs: _angular_core.Signal<number>;
@@ -19564,6 +19881,8 @@ declare class SlideTransitionCardComponent {
19564
19881
  protected onTypeChange(event: Event): void;
19565
19882
  protected onDirection(direction: string): void;
19566
19883
  protected onOrientation(orient: 'horz' | 'vert'): void;
19884
+ protected onPattern(pattern: string): void;
19885
+ protected onThruBlk(thruBlk: boolean): void;
19567
19886
  protected onSpokes(event: Event): void;
19568
19887
  protected onDuration(event: Event): void;
19569
19888
  protected onSpeed(event: Event): void;
@@ -19795,8 +20114,8 @@ declare class TextAdvancedPanelComponent {
19795
20114
  protected readonly elementKey: _angular_core.Signal<string>;
19796
20115
  /** Exposed option arrays for the template. */
19797
20116
  protected readonly alignOptions: [NonNullable<"center" | "left" | "right" | "justify" | "justLow" | "dist" | "thaiDist" | undefined>, string][];
19798
- protected readonly vAlignOptions: [NonNullable<"top" | "bottom" | "middle" | "distributed" | "justified" | undefined>, string][];
19799
- protected readonly textDirectionOptions: [NonNullable<"vertical" | "horizontal" | "eaVert" | "wordArtVert" | "wordArtVertRtl" | "mongolianVert" | "vertical270" | undefined>, string][];
20117
+ protected readonly vAlignOptions: [NonNullable<"top" | "middle" | "bottom" | "distributed" | "justified" | undefined>, string][];
20118
+ protected readonly textDirectionOptions: [NonNullable<"horizontal" | "vertical" | "vertical270" | "eaVert" | "wordArtVert" | "wordArtVertRtl" | "mongolianVert" | undefined>, string][];
19800
20119
  protected alignLabel(align: NonNullable<TextStyle['align']>): string;
19801
20120
  protected onAlignChange(align: NonNullable<TextStyle['align']>): void;
19802
20121
  protected onVAlignChange(event: Event): void;
@@ -20536,12 +20855,6 @@ declare const EMPHASIS_PRESETS: ReadonlyArray<{
20536
20855
  label: string;
20537
20856
  labelKey: string;
20538
20857
  }>;
20539
- /** Trigger options for the trigger selector. */
20540
- declare const TRIGGER_OPTIONS: ReadonlyArray<{
20541
- value: PptxAnimationTrigger;
20542
- label: string;
20543
- labelKey: string;
20544
- }>;
20545
20858
  /** Timing curve options. */
20546
20859
  declare const TIMING_CURVE_OPTIONS: ReadonlyArray<{
20547
20860
  value: PptxAnimationTimingCurve;
@@ -20638,7 +20951,6 @@ declare class AnimationAuthorPanelComponent {
20638
20951
  }[];
20639
20952
  protected readonly triggerOptions: readonly {
20640
20953
  value: pptx_viewer_core.PptxAnimationTrigger;
20641
- label: string;
20642
20954
  labelKey: string;
20643
20955
  }[];
20644
20956
  protected readonly timingCurveOptions: readonly {
@@ -20967,6 +21279,34 @@ declare class NotesPanelComponent {
20967
21279
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<NotesPanelComponent, "pptx-notes-panel", never, { "slide": { "alias": "slide"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "notesStyle": { "alias": "notesStyle"; "required": false; "isSignal": true; }; }, { "update": "update"; "notesToggle": "notesToggle"; }, never, never, true, never>;
20968
21280
  }
20969
21281
 
21282
+ /** Position and target of an open thumbnail context menu. */
21283
+ interface SlidePaneContextMenuState {
21284
+ x: number;
21285
+ y: number;
21286
+ index: number;
21287
+ /** Every selected slide index, right-clicked one included, for bulk commands. */
21288
+ selectedIndexes: number[];
21289
+ }
21290
+ declare class SlidePaneRailSelection {
21291
+ #private;
21292
+ readonly selectedIds: _angular_core.WritableSignal<string[]>;
21293
+ readonly contextMenu: _angular_core.WritableSignal<SlidePaneContextMenuState | null>;
21294
+ isSelected(slideId: string): boolean;
21295
+ /** Resolve one click on a slide thumbnail into the next multi-selection. */
21296
+ onClick(event: {
21297
+ ctrlKey: boolean;
21298
+ metaKey: boolean;
21299
+ shiftKey: boolean;
21300
+ }, slideId: string, orderedIds: readonly string[]): void;
21301
+ /**
21302
+ * Open the context menu for a right-click on `index`. A slide already part
21303
+ * of the selection acts with the whole selection; a slide right-clicked
21304
+ * outside it acts on just that one, matching the per-element context menu.
21305
+ */
21306
+ openContextMenu(x: number, y: number, index: number, orderedIds: readonly string[]): void;
21307
+ closeContextMenu(): void;
21308
+ }
21309
+
20970
21310
  /**
20971
21311
  * SlidesPanelComponent: vertical slide-strip for the editor sidebar.
20972
21312
  *
@@ -20996,6 +21336,20 @@ declare class SlidesPanelComponent {
20996
21336
  readonly activeIndex: _angular_core.InputSignal<number>;
20997
21337
  /** Emits the zero-based index of the card the user clicked. */
20998
21338
  readonly select: _angular_core.OutputEmitterRef<number>;
21339
+ /** Insert a new slide after `index` (thumbnail menu's New Slide, and Enter on the panel). */
21340
+ readonly addSlideAfter: _angular_core.OutputEmitterRef<number>;
21341
+ readonly duplicateSlides: _angular_core.OutputEmitterRef<number[]>;
21342
+ readonly deleteSlides: _angular_core.OutputEmitterRef<number[]>;
21343
+ readonly toggleHideSlides: _angular_core.OutputEmitterRef<number[]>;
21344
+ /** Makes `index` active, then opens the Layout gallery anchored at (x, y). */
21345
+ readonly openLayoutForSlide: _angular_core.OutputEmitterRef<{
21346
+ index: number;
21347
+ x: number;
21348
+ y: number;
21349
+ }>;
21350
+ readonly addSectionAt: _angular_core.OutputEmitterRef<number>;
21351
+ /** Ctrl/Shift multi-select + the thumbnail context menu's open state. */
21352
+ protected readonly rail: SlidePaneRailSelection;
20999
21353
  protected readonly editor: EditorStateService;
21000
21354
  private readonly translate;
21001
21355
  private readonly scrollViewport;
@@ -21024,6 +21378,13 @@ declare class SlidesPanelComponent {
21024
21378
  onMoveUp(index: number): void;
21025
21379
  onMoveDown(index: number): void;
21026
21380
  onAddSlide(): void;
21381
+ /** A click (even a Ctrl/Shift one) both updates the multi-selection AND
21382
+ * moves the canvas to the slide clicked, matching the sorter overlay. */
21383
+ onThumbClick(event: MouseEvent, index: number): void;
21384
+ onThumbContextMenu(event: MouseEvent, index: number): void;
21385
+ /** PowerPoint's Enter on a focused thumbnail inserts a new slide after it. */
21386
+ onPanelKeydown(event: Event): void;
21387
+ private orderedIds;
21027
21388
  onRenameSection(sectionId: string, currentName: string): void;
21028
21389
  sectionIndex(sectionId: string): number;
21029
21390
  /** Dictionary key for the word shown and announced on a hidden slide's card. */
@@ -21045,7 +21406,7 @@ declare class SlidesPanelComponent {
21045
21406
  hidden?: boolean;
21046
21407
  }, index: number): HiddenSlideCue;
21047
21408
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlidesPanelComponent, never>;
21048
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlidesPanelComponent, "pptx-slides-panel", never, { "canvasSize": { "alias": "canvasSize"; "required": true; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; }, { "select": "select"; }, never, never, true, never>;
21409
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlidesPanelComponent, "pptx-slides-panel", never, { "canvasSize": { "alias": "canvasSize"; "required": true; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; }, { "select": "select"; "addSlideAfter": "addSlideAfter"; "duplicateSlides": "duplicateSlides"; "deleteSlides": "deleteSlides"; "toggleHideSlides": "toggleHideSlides"; "openLayoutForSlide": "openLayoutForSlide"; "addSectionAt": "addSectionAt"; }, never, never, true, never>;
21049
21410
  }
21050
21411
 
21051
21412
  declare class EditorToolbarComponent {
@@ -21133,9 +21494,20 @@ declare class EditorContextMenuComponent {
21133
21494
  readonly editHyperlink: _angular_core.OutputEmitterRef<void>;
21134
21495
  /** "Add Comment": open the right-docked comments panel, as React does. */
21135
21496
  readonly addComment: _angular_core.OutputEmitterRef<void>;
21497
+ /**
21498
+ * "Edit Text": the host owns the same inline-text-edit entry point a
21499
+ * double-click uses, so the menu just asks for it on the current element.
21500
+ */
21501
+ readonly editText: _angular_core.OutputEmitterRef<void>;
21502
+ /**
21503
+ * "Save as Picture": the host owns the DOM lookup + html2canvas fallback
21504
+ * driver this needs, so the menu asks for it on the current element.
21505
+ */
21506
+ readonly saveAsPicture: _angular_core.OutputEmitterRef<void>;
21136
21507
  protected readonly editor: EditorStateService;
21137
21508
  private readonly tableSelection;
21138
21509
  private readonly host;
21510
+ private readonly inspectorPanel;
21139
21511
  /**
21140
21512
  * The table element + cell selection the menu should act on, or null when the
21141
21513
  * current selection is not a single table with a selected cell. Drives the
@@ -21162,13 +21534,21 @@ declare class EditorContextMenuComponent {
21162
21534
  onDocumentPointerDown(event: PointerEvent): void;
21163
21535
  /** Run the chosen command, then close: every item closes the menu. */
21164
21536
  protected run(id: ContextMenuCommandId): void;
21537
+ /**
21538
+ * "Edit Alt Text" / "Size and Position" / "Format Shape": open the
21539
+ * properties tab (clearing any explicit tool panel so the element view
21540
+ * shows through) and, once the panel has re-rendered, scroll the matching
21541
+ * inspector section into view. A binding-wide no-op when the section has
21542
+ * not been tagged, so this never fails loudly.
21543
+ */
21544
+ private focusInspectorSection;
21165
21545
  /**
21166
21546
  * Run a pure table transform on the current table context and commit the
21167
21547
  * result through the editor (one undoable history entry).
21168
21548
  */
21169
21549
  private applyTable;
21170
21550
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EditorContextMenuComponent, never>;
21171
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<EditorContextMenuComponent, "pptx-editor-context-menu", never, { "x": { "alias": "x"; "required": true; "isSignal": true; }; "y": { "alias": "y"; "required": true; "isSignal": true; }; "slideIndex": { "alias": "slideIndex"; "required": true; "isSignal": true; }; "showAiActions": { "alias": "showAiActions"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "askAi": "askAi"; "fixAi": "fixAi"; "editHyperlink": "editHyperlink"; "addComment": "addComment"; }, never, never, true, never>;
21551
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EditorContextMenuComponent, "pptx-editor-context-menu", never, { "x": { "alias": "x"; "required": true; "isSignal": true; }; "y": { "alias": "y"; "required": true; "isSignal": true; }; "slideIndex": { "alias": "slideIndex"; "required": true; "isSignal": true; }; "showAiActions": { "alias": "showAiActions"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "askAi": "askAi"; "fixAi": "fixAi"; "editHyperlink": "editHyperlink"; "addComment": "addComment"; "editText": "editText"; "saveAsPicture": "saveAsPicture"; }, never, never, true, never>;
21172
21552
  }
21173
21553
 
21174
21554
  /**
@@ -22649,7 +23029,7 @@ declare class AccountPageComponent {
22649
23029
  readonly accountAuth: _angular_core.InputSignal<AccountAuthConfig | undefined>;
22650
23030
  private readonly translate;
22651
23031
  protected readonly swatches: readonly string[];
22652
- protected readonly version = "4.2.0";
23032
+ protected readonly version = "4.4.0";
22653
23033
  protected readonly profile: _angular_core.WritableSignal<ViewerProfile>;
22654
23034
  protected readonly initial: _angular_core.Signal<string>;
22655
23035
  protected readonly usage: _angular_core.WritableSignal<LocalStorageUsageSummary | null>;
@@ -23710,10 +24090,11 @@ declare class CanvasFitService {
23710
24090
  }
23711
24091
 
23712
24092
  /**
23713
- * Handler that commits navigation to a zoom element's target slide.
23714
- * Registered by the presentation controller, which owns the active-slide index.
24093
+ * Handler that commits navigation to a zoom's target, applying its own
24094
+ * `zmPr/@transitionDur` and `returnToParent`. Registered by the presentation
24095
+ * controller, which owns the active-slide index.
23715
24096
  */
23716
- type ZoomNavigationHandler = (targetSlideIndex: number) => void;
24097
+ type ZoomNavigationHandler = (target: ZoomNavigationTarget) => void;
23717
24098
  /**
23718
24099
  * ZoomNavigationService: presentation-mode zoom navigation context.
23719
24100
  *
@@ -23737,10 +24118,10 @@ declare class ZoomNavigationService {
23737
24118
  */
23738
24119
  setHandler(handler: ZoomNavigationHandler): void;
23739
24120
  /**
23740
- * Navigate the running presentation to a zoom element's target slide.
23741
- * No-op when no handler has been registered.
24121
+ * Navigate the running presentation to a zoom's target. No-op when no
24122
+ * handler has been registered.
23742
24123
  */
23743
- navigateToZoomTarget(targetSlideIndex: number): void;
24124
+ navigateToZoomTarget(target: ZoomNavigationTarget): void;
23744
24125
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZoomNavigationService, never>;
23745
24126
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
23746
24127
  }
@@ -24466,12 +24847,18 @@ declare class RibbonAnimationsSectionComponent {
24466
24847
  readonly slideIndex: _angular_core.InputSignal<number>;
24467
24848
  readonly selectedElement: _angular_core.InputSignal<PptxElement | null>;
24468
24849
  readonly canEdit: _angular_core.InputSignal<boolean>;
24469
- readonly present: _angular_core.OutputEmitterRef<void>;
24470
24850
  readonly toggleInspector: _angular_core.OutputEmitterRef<void>;
24471
24851
  /** "Animation Panel": open the inspector and expand its Animation section. */
24472
24852
  readonly openAnimationPanel: _angular_core.OutputEmitterRef<void>;
24473
24853
  protected hasSel(): boolean;
24474
24854
  protected canAuthor(): boolean;
24855
+ /**
24856
+ * Play the selected element's own authored effect in place on the canvas,
24857
+ * via the shared player also used by react/vue/svelte/vanilla's ribbons.
24858
+ * A no-op (matching those four) when the selection has no animation entry
24859
+ * to preview.
24860
+ */
24861
+ protected previewAnimation(): void;
24475
24862
  /** The path the one-click "Path Animation" command applies. */
24476
24863
  protected readonly defaultMotionPathPresetId = "lineRight";
24477
24864
  /** Apply the preset a gallery button asked for. */
@@ -24495,7 +24882,7 @@ declare class RibbonAnimationsSectionComponent {
24495
24882
  /** Remove all animations from the selected element. */
24496
24883
  protected removeAnim(): void;
24497
24884
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonAnimationsSectionComponent, never>;
24498
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonAnimationsSectionComponent, "pptx-ribbon-animations-section", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, { "present": "present"; "toggleInspector": "toggleInspector"; "openAnimationPanel": "openAnimationPanel"; }, never, never, true, never>;
24885
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonAnimationsSectionComponent, "pptx-ribbon-animations-section", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, { "toggleInspector": "toggleInspector"; "openAnimationPanel": "openAnimationPanel"; }, never, never, true, never>;
24499
24886
  }
24500
24887
 
24501
24888
  declare class RibbonArrangeSectionComponent {
@@ -24760,72 +25147,6 @@ declare class RibbonFontControlsComponent {
24760
25147
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonFontControlsComponent, "pptx-ribbon-font-controls", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
24761
25148
  }
24762
25149
 
24763
- /**
24764
- * The slide layouts the Home tab's "New Slide" split button can insert from.
24765
- *
24766
- * A deck's layouts hang off its masters, one list per master, and a layout's
24767
- * `name` is optional in OOXML. This flattens both facts away so the ribbon can
24768
- * render a single menu without knowing about masters: one entry per layout, in
24769
- * document order, always with something to display.
24770
- *
24771
- * Pure on purpose: the picker's behaviour is worth testing without a TestBed.
24772
- */
24773
-
24774
- /** One entry in the New Slide layout menu. */
24775
- interface RibbonLayoutOption {
24776
- /** Package path of the layout, written to the new slide's `layoutPath`. */
24777
- path: string;
24778
- /** Display name; falls back to the layout's file stem when OOXML omits one. */
24779
- name: string;
24780
- }
24781
-
24782
- declare class RibbonHomeSectionComponent {
24783
- protected readonly editor: EditorStateService;
24784
- private readonly loader;
24785
- /** Layouts offered by the New Slide split button and the Layout menu. */
24786
- protected readonly layoutOptions: _angular_core.Signal<RibbonLayoutOption[]>;
24787
- /** `layoutPath` of the active slide, marking the current gallery tile. */
24788
- protected readonly currentLayoutPath: _angular_core.Signal<string | undefined>;
24789
- /**
24790
- * Layout artwork for the gallery thumbnails, keyed by layout path.
24791
- *
24792
- * Parsing every layout part is only worth doing once a gallery is opened,
24793
- * so this stays empty until {@link loadLayoutPreviews} runs. Core memoises
24794
- * the parse, so reopening a menu costs nothing.
24795
- */
24796
- protected readonly layoutPreviews: _angular_core.WritableSignal<ReadonlyMap<string, PptxLayoutPreview>>;
24797
- constructor();
24798
- readonly slideIndex: _angular_core.InputSignal<number>;
24799
- readonly selectedElement: _angular_core.InputSignal<PptxElement | null>;
24800
- readonly canEdit: _angular_core.InputSignal<boolean>;
24801
- readonly formatPainterActive: _angular_core.InputSignal<boolean>;
24802
- readonly canActivateFormatPainter: _angular_core.InputSignal<boolean>;
24803
- readonly toggleFormatPainter: _angular_core.OutputEmitterRef<void>;
24804
- readonly findReplace: _angular_core.OutputEmitterRef<void>;
24805
- /** "Slide Templates" in the Slides group; the host opens the gallery dialog. */
24806
- readonly openTemplateGallery: _angular_core.OutputEmitterRef<void>;
24807
- /** Emitted with the layout the user picked, after it has been applied. */
24808
- readonly applyLayout: _angular_core.OutputEmitterRef<string>;
24809
- /** Emitted after Home > Reset has re-applied the slide's layout. */
24810
- readonly resetSlide: _angular_core.OutputEmitterRef<void>;
24811
- /**
24812
- * Re-map the active slide onto `layoutPath`. The operation is self-contained,
24813
- * so the output is a notification rather than the thing that performs it.
24814
- */
24815
- protected onApplyLayout(layoutPath: string): void;
24816
- /**
24817
- * The button used to `resetSlide.emit()` to nobody, so clicking it did
24818
- * nothing; {@link performResetSlide} now actually performs the reset.
24819
- */
24820
- protected onResetSlide(): void;
24821
- protected copy(): void;
24822
- protected cut(): void;
24823
- protected paste(): void;
24824
- protected onSelectAll(): void;
24825
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonHomeSectionComponent, never>;
24826
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonHomeSectionComponent, "pptx-ribbon-home-section", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "formatPainterActive": { "alias": "formatPainterActive"; "required": false; "isSignal": true; }; "canActivateFormatPainter": { "alias": "canActivateFormatPainter"; "required": false; "isSignal": true; }; }, { "toggleFormatPainter": "toggleFormatPainter"; "findReplace": "findReplace"; "openTemplateGallery": "openTemplateGallery"; "applyLayout": "applyLayout"; "resetSlide": "resetSlide"; }, never, never, true, never>;
24827
- }
24828
-
24829
25150
  declare class RibbonHyperlinkButtonComponent {
24830
25151
  protected readonly editor: EditorStateService;
24831
25152
  /** The host opens the hyperlink edit dialog for the current selection. */
@@ -25609,6 +25930,7 @@ declare class MediaRendererComponent {
25609
25930
  /** The shared icon paths and resolved label for whatever the fallback is. */
25610
25931
  readonly fallbackIcon: _angular_core.Signal<readonly string[]>;
25611
25932
  private readonly translate;
25933
+ private readonly sanitizer;
25612
25934
  readonly fallbackLabel: _angular_core.Signal<string>;
25613
25935
  readonly containerStyle: _angular_core.Signal<StyleMap>;
25614
25936
  /**
@@ -25620,6 +25942,23 @@ declare class MediaRendererComponent {
25620
25942
  readonly poster: _angular_core.Signal<string | undefined>;
25621
25943
  /** Playable source URL (inline data URL or resolved archive path). */
25622
25944
  readonly mediaSrc: _angular_core.Signal<string | undefined>;
25945
+ /**
25946
+ * A linked YouTube/Vimeo URL is a web page, not a media stream: `<video
25947
+ * src>` cannot decode it and shows nothing. Resolved to the provider's own
25948
+ * iframe-embeddable URL; a normal linked/embedded media file (`mediaSrc`
25949
+ * resolves to a Blob/data URL) keeps using the native `<video>` below.
25950
+ *
25951
+ * `bypassSecurityTrustResourceUrl` is safe here: `getOnlineVideoEmbed`
25952
+ * only ever builds `https://www.youtube.com/embed/<id>` or
25953
+ * `https://player.vimeo.com/video/<id>`, never an author-controlled raw
25954
+ * string, so there is nothing for Angular's resource-URL sanitizer to
25955
+ * usefully block. Without it Angular strips the binding to `about:blank`.
25956
+ */
25957
+ readonly onlineVideoEmbedUrl: _angular_core.Signal<SafeResourceUrl | undefined>;
25958
+ readonly onlineVideoTitle: _angular_core.Signal<string>;
25959
+ /** Shared Permissions Policy / sandbox values; see `online-video.ts`'s doc comments. */
25960
+ readonly onlineVideoAllow = "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; fullscreen";
25961
+ readonly onlineVideoSandbox = "allow-scripts allow-same-origin allow-popups allow-presentation";
25623
25962
  readonly mediaKind: _angular_core.Signal<PptxMediaType | undefined>;
25624
25963
  readonly loop: _angular_core.Signal<boolean>;
25625
25964
  readonly trimFragment: _angular_core.Signal<string>;
@@ -26042,6 +26381,6 @@ declare function thumbnailHeight(canvasW: number, canvasH: number, thumbW: numbe
26042
26381
  */
26043
26382
  declare function gridColumns(containerW: number, thumbW: number, gap: number, maxCols: number): number;
26044
26383
 
26045
- export { AFTER_ANIMATION_VALUES, ALIGN_OPTIONS, ANIMATION_PRESET_CATEGORIES, AUDIENCE_HASH, AUDIENCE_NONCE_KEY, AVATAR_COLOR_SWATCHES, AXIS_LABEL_COLOR, AccessibilityPanelComponent, AccessibilityService, AccessibilityTextPanelComponent, AccountPageComponent, ActionSettingsPanelComponent, AdvancedChartEditorComponent, AiChangeOverlayComponent, AiChatPanelComponent, AiChatService, AiComposerComponent, AiFocusBarComponent, AiFocusHighlightOverlayComponent, AiHistoryMenuComponent, AiHistoryService, AiMessageListComponent, AiPanelStore, AiProposalCardComponent, AiSettingsSectionComponent, AiToolCallCardComponent, AnimationAuthorPanelComponent, AnimationPanelComponent, AnimationPlaybackService, AutosaveRecoveryDialogComponent, AutosaveService, BroadcastDialogComponent, CHART_EDITOR_STYLES, CINEMATIC_TRANSITION_KEYFRAMES, CURSOR_PALETTE, CanvasFitService, ChartAxisOptionsComponent, ChartAxisStyleOptionsComponent, ChartComboTypeOptionsComponent, ChartDataEditorComponent, ChartDataLabelOptionsComponent, ChartDatapointMarkerOptionsComponent, ChartDatapointOptionsComponent, ChartDisplayOptionsComponent, ChartElementViewComponent, ChartErrorBarOptionsComponent, ChartMarkerOptionsComponent, ChartPartSelectionService, ChartPrimitivesComponent, ChartRendererComponent, ChartTrendlineOptionsComponent, ChartTypeSelectorComponent, CollaborationCursorsComponent, CollaborationService, ColorChangedImageComponent, CommentMarkersOverlayComponent, CommentsPanelComponent, CommentsService, ComparePanelComponent, ConnectorRendererComponent, ConnectorTextOverlayComponent, CustomShowsComponent, DEFAULT_BOUNDS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_COLOR_SCHEME, DEFAULT_FILL_COLOR, DEFAULT_LAYOUT, DEFAULT_MORPH_DURATION_MS, DEFAULT_PALETTE$1 as DEFAULT_PALETTE, DEFAULT_PATTERN_FILL_PRESET, DEFAULT_PRINT_SETTINGS, DEFAULT_SLIDE_BACKGROUND, DEFAULT_STROKE_COLOR, DEFAULT_STYLE, DEFAULT_TABLE_ROW_HEIGHT, DEFAULT_TEXT_COLOR, DEFAULT_VIEWER_PROFILE, DIRECTIONAL_PRESETS, DIRECTION_OPTIONS, DocumentPropertiesCardComponent, EASE, EFFECT_SOUND_CATALOGUE, EMBEDDED_FONTS_STYLE_ID, EMPHASIS_PRESETS, ENTRANCE_PRESETS, TEMPLATES as EQUATION_TEMPLATES, EXIT_PRESETS, EditorContextMenuComponent, EditorHistory, EditorStateService, EditorToolbarComponent, EffectsPanelComponent, ElementRendererComponent, EmbeddedFontsService, EncryptedFileDialogComponent, EquationEditorDialogComponent, EquationRendererComponent, EquationTemplateGalleryComponent, ExportProgressModalComponent, ExportService, FieldContextService, FindBarComponent, FindReplaceBarComponent, FollowModeBarComponent, FontEmbeddingListComponent, FontEmbeddingPanelComponent, GALLERY_THEME_PRESETS, GOOGLE_WEBFONTS_LINK_ID, GRIDLINE_COLOR, GoogleWebfontsService, GradientPickerComponent, HANDOUT_OPTIONS, HeaderFooterDialogComponent, HyperlinkDialogComponent, INSTANT, ImagePropertiesPanelComponent, InkDrawingService, InkRendererComponent, InsertSmartArtDialogComponent, InspectorPaneHeaderComponent, InspectorPanelComponent, IsMobileService, KeepAnnotationsDialogComponent, LOCALE_CATALOG, LONG_PRESS_DURATION_MS, LONG_PRESS_MOVE_TOLERANCE_PX, LoadContentService, LocalPresencePublisher, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, MOTION_PATH_COLUMNS, MediaPreviewComponent, MediaPropertiesPanelComponent, MediaRendererComponent, MediaTrimTimelineComponent, MobileBottomBarComponent, MobileMenuSheetComponent, MobilePresenterViewComponent, MobileSheetComponent, MobileSlidesSheetComponent, MobileToolbarComponent, ModalDialogComponent, Model3DRendererComponent, NotesHandoutCardComponent, NotesPanelComponent, NotesToolbarComponent, OleRendererComponent, OutlineViewOverlayComponent, P14_TRANSITION_KEYFRAMES, P14_TRANSITION_KEYFRAMES_2, P14_TRANSITION_KEYFRAMES_ALL, POWER_POINT_VIEWER_PROVIDERS, PPTX_OPEN_ACCEPT, PRESENTATION_OPEN_EXTENSIONS, PRESENTER_CHANNEL_NAME, PRESENTER_MSG_ORIGIN, PRESENTER_TIMER_SEGMENT_MS, PX_PER_CM, PX_PER_INCH, PasswordProtectionDialogComponent, PasswordStrengthMeterComponent, PowerPointViewerComponent, PresentToolbarAutoHide, PresentationAnnotationOverlayComponent, PresentationAnnotationsService, PresentationOverlayComponent, PresentationPropertiesPanelComponent, PresentationSettingsCardComponent, PresentationSubtitleBarComponent, PresentationToolbarComponent, PresentationTransitionOverlayComponent, PresenterViewComponent, PresenterWindowService, PrintDialogComponent, PrintService, PrintSettingsPanelComponent, PropertiesDialogComponent, RANDOM_ELIGIBLE_TYPES, REPEAT_MODE_OPTIONS, RESIZE_HANDLES, RULER_FONT_SIZE, RULER_THICKNESS, ReadingViewOverlayComponent, RemoteSelectionOverlayComponent, Rendering3DService, RibbonAnimationGalleryComponent, RibbonAnimationsSectionComponent, RibbonArrangeSectionComponent, RibbonColorPopoverComponent, RibbonComponent, RibbonDesignSectionComponent, RibbonDrawSectionComponent, RibbonDrawingGroupComponent, RibbonEditingSectionComponent, RibbonFileSectionComponent, RibbonFontControlsComponent, RibbonHomeSectionComponent, RibbonHyperlinkButtonComponent, RibbonInsertFieldsComponent, RibbonInsertSectionComponent, RibbonMotionPathGalleryComponent, RibbonParagraphControlsComponent, RibbonPrimaryRowComponent, RibbonReviewSectionComponent, RibbonShapeExtrasComponent, RibbonSlideshowSectionComponent, RibbonTransitionsSectionComponent, RibbonViewSectionComponent, RulerGuidesService, SEQUENCE_OPTIONS, SEVERITY_GROUPS, SEVERITY_LABELS, DEFAULT_TRANSITION_DURATION_MS as SHARED_DEFAULT_TRANSITION_DURATION_MS, SHORTCUT_REFERENCE_ITEMS, SLIDE_TRANSITION_KEYFRAMES, SLIDE_TRANSITION_KEYFRAMES_CSS, DEFAULT_PALETTE as SMARTART_DEFAULT_PALETTE, PALETTES as SMARTART_PALETTES, SMART_ART_COLOR_SCHEMES, SMART_ART_STYLE_OPTIONS, SUB_ITEM_LABEL, SVG_WARP_PRESETS, SWIPE_MAX_VERTICAL_PX, SWIPE_THRESHOLD_PX, SelectionPaneComponent, SetUpSlideShowDialogComponent, SettingsAppearanceTabComponent, SettingsDialogComponent, SettingsLanguageTabComponent, ShareDialogComponent, ShortcutPanelComponent, ShowOptionsFieldsetComponent, ShowSlidesFieldsetComponent, SignatureStrippedDialogComponent, SignaturesPanelComponent, SignaturesService, SlideBackgroundCardComponent, SlideCanvasComponent, SlideDefaultInspectorComponent, SlideDiffChangesComponent, SlideDiffRowComponent, SlideDiffThumbnailsComponent, SlideSizeCardComponent, SlideSorterOverlayComponent, SlideThemeOverridePanelComponent, SlideTransitionCardComponent, SlidesPanelComponent, SmartArt3DRendererComponent, SmartArtPreviewComponent, SmartArtPropertiesComponent, SmartArtRendererComponent, StatusBarComponent, TABLE_STRUCTURE_TOGGLES, TEXT_3D_BOTTOM_BEVEL_KEYS, TEXT_3D_TOP_BEVEL_KEYS, TEXT_DIRECTION_OPTIONS, THEME_CATALOG, TIMING_CURVE_OPTIONS, TRANSITION_SPEED_DURATION_MS, TRIGGER_OPTIONS, TYPE_LABELS, TableCellAdvancedFillComponent, TableCellFormattingComponent, TableDataEditorComponent, TablePropertiesComponent, TableRendererComponent, TableResizeOverlayComponent, TableSelectionService, TagsCardComponent, Text3DBevelSectionComponent, Text3DPanelComponent, TextAdvancedPanelComponent, ThemeEditorFieldsComponent, ThemeGalleryComponent, ThemeSelectorCardComponent, TitleBarComponent, TitleBarSearchComponent, TransitionDirectionPickerComponent, TransitionPreviewComponent, VALIGN_OPTIONS, VIEWER_THEME, VersionHistoryPanelComponent, ViewerCanvasEditingService, ViewerCollabCursorService, ViewerCollaborationSessionService, ViewerCollaborationShellService, ViewerCompareService, ViewerCustomShowsService, ViewerDialogsService, ViewerDocumentPropertiesService, ViewerExportService, ViewerExtraDialogsComponent, ViewerFileIOService, ViewerFindReplaceService, ViewerFormatPainterService, ViewerInspectorPanelService, ViewerKeyboardService, ViewerMobileSheetService, ViewerPresentationModeService, ViewerThemeGalleryService, ViewerTouchGesturesService, ViewerZoomService, WEBM_MIME_CANDIDATES, WHEEL_SPOKE_COUNTS, WriteBackScheduler, ZERO_LINE_COLOR, ZoomNavigationService, ZoomRendererComponent, ZoomTargetService, addCategory, addCommentToList, addGradientStopPatch, addItem, addSeries, addSubItem, advanceStep, affordanceElements, aiToggleVisible, alignPatch, animationFor, animationPresetLabelKey, annotationMapToInkInserts, applyAcceptedDiff, applyAnimationPreset, applyFindReplacements, applyFormatToElement, applyMove, applyResize, asMediaElement, assignUserColor, attachShowVisibilityPause, attachTouchGestures, axisTickValues, beginDrawingNodeEdit, beginNodeEdit, bevelSizePatch, boolFromEvent, bringForward, bringToFront, buildBarActions, buildBroadcastConfig, buildBroadcastViewerUrl, buildCategoryLabels, buildCellParagraphs, buildChartViewModel, buildChatLogExport, buildChatLogMarkdown, buildChromeStyle, buildClearHyperlinkPatch, buildClickGroups, buildColStyles, buildCollaborationConfig, buildComboViewModel, buildCssGradientFromShapeStyle, buildDuotoneFilter, buildDuotoneFilterId, buildEmbeddedFontStyles, buildEquationElement, buildEquationSegment, buildFallbackViewModel, buildFontFaceRule, buildGradientFillCss, buildGridlinesAndLabels, buildHyperlinkPatch, buildInkContainerStyle, buildInkStrokes, buildLegend, buildLiveInkStrokeView, buildMarkTooltip, buildModel3DContainerStyle, buildModel3DViewModel, buildOleActionModel, buildOleInfoRows, buildPatternFillCss, buildPieViewModel, buildPrintHtmlDocument as buildPrintDocument, buildPropertiesPatch, buildRadarViewModel, buildRegionMapViewModel, buildSaveSlides, buildShareUrl, buildSmartArtInsertElement, buildSmartArtNodes, buildStockViewModel, buildSurfaceViewModel, buildTableViewModel, buildTreemapViewModel, buildTrimFragment, buildWaterfallViewModel, buildZeroLine, buildZoomContainerStyle, buildZoomViewModel, bulletIndentPx, canAddTopLevelNode, canEditSmartArtNodes, canGroupSelection, canRemoveTopLevelNode, canSetStrokeWidth, canStartBroadcast, canStartShare, canUngroupSelection, canUseClipboard, captionDisplayText, cellRunStyle, cellStyleToStyleMap, cellTdStyle, changeCountLabel, changeIcon, characterSpacingPatch, chartPreserveAspectRatio, checkFontAvailable, clampCursorPosition, clampGifDimensions, clampIndex, clampNotesFontSize, clampScale, clampStep, clearAllLocalViewerData, clearAudienceContent, cn, collectAccessibilityIssues, collectElementText, collectSlideText, collectStoredChats, collectUsedFontFamilies, columnWidthStyle, commitNodeText, computeAlign, computeAxisTitlePrimitives, computeBarRects, computeBubbleRadius, computeCornerHandle, computeDistribute, computeDrawingViewBox, computeErrorBarPrimitives, computeFocusTargets, computeGridSpacingPx, computeHandleBoxes, computeHandoutLayout, computeIsMobile, computeIsTablet, computeLinePoints, computeLinearRegression, computePageCount, computePieLayout, computePieSlicePath, computePieSlices, computePlotLayout, computeRSquared, computeRadarPoints, computeResizeHandleBoxes, computeRotateHandleBox, computeScatterDots, computeScatterXDomain, computeSelectionBoxes, computeSingleSelected, computeSlideIndices, computeSnap, computeStackedBarRects, computeStackedValueRange, computeTrendlinePrimitives, computeValueRange, convertOmmlToMathMl, copyFormatFromElement, countAccessibilityIssues, countAnnotationStrokes, createAngularAiBridge, createCustomShow, createImageElementFromFile, createSwipeDismissDrag, createWebrtcBundle, createWebsocketBundle, cssObjectToStyleMap, currentColorScheme, currentLayout, currentStyle, defaultCssVars, defaultRadius, defaultThemeColors, deleteElementsByIds, deleteVersion as deleteRecoveryVersion, demoteNode, deriveModel3DBlobUrl, derivePresenceList, describeCollaborationShellState, describeSmartArtBounds, disableGlowPatch, disableInnerShadowPatch, disableOuterShadowPatch, disableReflectionPatch, disableSoftEdgePatch, duplicateElementById, durationOf, effectsStateOf, enableGlowPatch, enableInnerShadowPatch, enableOuterShadowPatch, enableReflectionPatch, enableSoftEdgePatch, encodeGif, endShowMediaCleanup, estimatePageCount, exitPresentationFullscreen, exportAiChatLogs, extractPathPoints, eyedropperAvailable, fillColorOf, findInSlides, findOwningSlideIndex, findSlideIndexByElementId, firstVisibleIndex, fitPolynomial, fitZoom, focusTargetChips, fontMimeForFormat, fontSizeOf, forgetSessionDeck, formatAxisValue, formatBytes, formatCursorLabel, formatElapsed, formatFileSize, formatInlineListStyle, formatPropertyDate, formatTime, fpsToFrameIntervalMs, generateBroadcastRoomId, generateCommentId, generateCustomShowId, generatePressureCircles, generateTicks, getCinematicTransitionAnimations, getClrChangeParams, getContainerStyle, getDuotoneFilterDef, getEffectSoundAsset, getEffectSoundState, getImageSrc, getLocalStorageUsageSummary, getOleAriaLabel, getOleBadgeLabel, getOleDisplayName, getOleDownloadFileName, getOleTypeColor, getOleTypeLabel, getP14TransitionAnimations, getPasswordStrength, getPatternSvg, getPlaceholderStyle, getVersions as getRecoveryVersions, getResolvedShapeClipPath, getResolvedShapeClipPathFor, getSessionTabId, getShapeFillStrokeStyle, getSlideBackgroundStyle, getSlideTransitionAnimations, getSmartArtNodeBounds, getSpeechRecognitionCtor, getTextBlockStyle, getTextWarp, getTouchDistance, getWarpCategory, getWarpPath, gradientStateFromStyle, gradientStateOf, gradientStatePatch, gradientStopColorCommitPatch, gridColumns, groupIssuesBySeverity, hasAnimation, hasCopyableFormat, hasExistingLink, hasExitedFullscreen, hasGradientFill, hasPressureVariation, hasVisibleSlideAfter, headerLabel, imageDimensions, inkViewBox, insertTableElementColumn as insertColumn, insertTableElementRow as insertRow, interpolateWidth, isAudienceTab, isBold, isBrowserOpenableMime, isChildNode, isElementInteractive, isInjectableUrl, isItalic, isLegacyBinaryPresentation, isPpactionUrl, isPresenterMessage, isSigned, isSupportedPresentationFile, isTextElement, isTwoTableFocus, isUnderline, isUrlSafe, isValidRoomId, isViewportBackgroundPressTarget, isZoomActivationKey, issueTrackKey, issueTypeLabel, keyToLabel, lastVisibleIndex, latexToMathml, layoutConnectorPaints, layoutNodeLabels, linePointsToSvgString, lineSpacingPatch, loadAudienceContent, loadSessionDeck, mediaFallbackFor, mediaSurfaceFor, mergeCaptionResults, mergeDown, mergeRight, mergeSelection, mergeTablesDirective, moveElementBy, moveNodeDown, moveNodeUp, msToFrameDelayCs, narrowToCircle, narrowToPolygon, narrowToRect, newChartElement, newEquationElement, newPresetShapeElement, newShapeElement, newSmartArtElement, newTableElement, newTextElement, nextVisibleIndex, nodeBold, nodeEditBox, nodeFillColor, nodeFontColor, nodeIdFromKey, nodeItalic, nodeStyle, normalizeFontFormat, normalizeSlidesPerPage, normalizeValue, numFromEvent, ommlToMathml, ooxmlDashToCssBorderStyle, openNativeEyeDropper, overallStatus, paletteColor, parseAudienceNonce, parseNodeTextarea, partitionSlides, patchChartData, patchChartStyle, patchTableData, patchTextStyle, patternPresetOptions, pendingElementStyles, pickColorByClickFallback, pickFile, pickSupportedMimeType, planGifFrames, planVideoSegments, pointFromPointerEvent, pointsToSvgPathD, presenceToCursors, presentationBaseName, presentationStageStyle, presenterTimerProgress, presetByLayout, presetsForCategory, pressuresToWidths, prevVisibleIndex, projectDrawingShapes, promoteNode, provideViewerTheme, radarAngle, radarRingPoints, readAsDataUrl, recordWebm, registerCrossSlideAudio, rememberSessionDeck, removeAnimation, removeCategory, removeTableElementColumn as removeColumn, removeCommentFromList, removeElementAnimation, removeGradientStopPatch, removeNode, removeTableElementRow as removeRow, removeSeries, renderToCanvas, reorderAnimationDown, reorderAnimationUp, replaceInSlides, replaceMatch, requestPresentationFullscreen, resizeElement, resolveCaptionTracks, resolveChartKind, resolveDirection, resolveDirection8, resolveFontVariant, resolveHyperlinkHref, resolveInteractiveElementId, resolveMediaSrc, resolveOleType, resolveOrientation, resolveParagraphBullet, resolvePresenterNotes, resolveProfileInitial, resolveRegionCode, resolveRibbonCanGroup, resolveSlideAutoAdvanceMs, resolveSlideTransition, resolvePalette as resolveSmartArtPalette, resolveThemeCatalogEntry, resolveTransitionDuration, resolveTransitionDurationMs, resolveWheelSpokeCount, restoreSessionDeck, revealedElementStyles, routeOrthogonalConnector, rowStyle, rulerDragToGuidePosition, rulerHighlight, rulerStripTicks, sampleColorFromSlide, sanitizeColor, sanitizeSlideIndex, sanitizeUserName, saveViewerProfile, savedPresentationFileName, scanAvailableFonts, searchSlides, seedBroadcastFields, seedHyperlinkDraft, seedPropertiesDraft, seedShareFields, segmentFrameCount, selectValue, sendBackward, sendToBack, sequentialColorScale, serializeWriteBack, seriesColor, seriesXValues, setAfterAnimation, setAfterAnimationColor, setAnimationEmphasis, setAnimationEntrance, setAnimationExit, setAxis, setAxisLogScale, setAxisTitleStyle, setCategoryLabel, setCellText, setColorScheme, setDataLabels, setDataPointExplosion, setDataPointFill, setDataPointLabel, setDataPointMarker, setDelay, setDirection, setDuration, setEffectSound, setEffectStockSound, setElementPosition, setGridlineStyle, setLayout, setLegend, setNodeStyle, setNodeText, setRepeatCount, setRepeatMode, setSequence, setSeriesChartType, setSeriesColor, setSeriesErrorBars, setSeriesMarker, setSeriesName, setSeriesTrendline, setSeriesValue, setStyle, setTimingCurve, setTitle, setTrigger, setTriggerShapeId, shapeStylePatch, sheetAfterNavigate, shouldBlockClickAdvance, shouldUseSvgWarp, showDirectionPicker, showsTemplateAffordance, signatureCountLabel, signatureKey, signatureTimestamp, signerName, statusLabel as slideDiffStatusLabel, slideNumberOf, slidesWithReappliedLayout, smartArtNodes, paletteColour as smartArtPaletteColour, snapToGridStep, splitCursorCell, splitMergedCell, statusKind, statusLabel$1 as statusLabel, storeAudienceContent, stringFromEvent, strokeColorOf, strokeToInkElement, strokeWidthOf, styleShadowFilter, surfaceColor, textAdvancedPatch, textAdvancedStateFromStyle, textAdvancedStateOf, textColorOf, textDirectionPatch, textFontSizePatch, textStyleOf, textStylePatch, themeStyle, themeToCssVars, thumbnailHeight, thumbnailZoom, toggleCommentResolvedInList, toggleNodeBold, toggleNodeItalic, toggleSheet, topLevelNodeCount, transformSelectedTextCase, translationsEn, updateElementById, updateGlowPatch, updateGradientStopPatch, updateInnerShadowPatch, updateOuterShadowPatch, updateReflectionPatch, vAlignPatch, validatePassword, validatePrintSettings, validateRoomId, valueToY, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, waypointsToPathD, withManualLayouts, worstStatus, zoomTargetSlideIndex };
26384
+ export { AFTER_ANIMATION_VALUES, ALIGN_OPTIONS, ANIMATION_PRESET_CATEGORIES, AUDIENCE_HASH, AUDIENCE_NONCE_KEY, AVATAR_COLOR_SWATCHES, AXIS_LABEL_COLOR, AccessibilityPanelComponent, AccessibilityService, AccessibilityTextPanelComponent, AccountPageComponent, ActionSettingsPanelComponent, AdvancedChartEditorComponent, AiChangeOverlayComponent, AiChatPanelComponent, AiChatService, AiComposerComponent, AiFocusBarComponent, AiFocusHighlightOverlayComponent, AiHistoryMenuComponent, AiHistoryService, AiMessageListComponent, AiPanelStore, AiProposalCardComponent, AiSettingsSectionComponent, AiToolCallCardComponent, AnimationAuthorPanelComponent, AnimationPanelComponent, AnimationPlaybackService, AutosaveRecoveryDialogComponent, AutosaveService, BroadcastDialogComponent, CHART_EDITOR_STYLES, CINEMATIC_TRANSITION_KEYFRAMES, CURSOR_PALETTE, CanvasFitService, ChartAxisOptionsComponent, ChartAxisStyleOptionsComponent, ChartComboTypeOptionsComponent, ChartDataEditorComponent, ChartDataLabelOptionsComponent, ChartDatapointMarkerOptionsComponent, ChartDatapointOptionsComponent, ChartDisplayOptionsComponent, ChartElementViewComponent, ChartErrorBarOptionsComponent, ChartMarkerOptionsComponent, ChartPartSelectionService, ChartPrimitivesComponent, ChartRendererComponent, ChartTrendlineOptionsComponent, ChartTypeSelectorComponent, CollaborationCursorsComponent, CollaborationService, ColorChangedImageComponent, CommentMarkersOverlayComponent, CommentsPanelComponent, CommentsService, ComparePanelComponent, ConnectorRendererComponent, ConnectorTextOverlayComponent, CustomShowsComponent, DEFAULT_BOUNDS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_COLOR_SCHEME, DEFAULT_FILL_COLOR, DEFAULT_LAYOUT, DEFAULT_MORPH_DURATION_MS, DEFAULT_PALETTE$1 as DEFAULT_PALETTE, DEFAULT_PATTERN_FILL_PRESET, DEFAULT_PRINT_SETTINGS, DEFAULT_SLIDE_BACKGROUND, DEFAULT_STROKE_COLOR, DEFAULT_STYLE, DEFAULT_TABLE_ROW_HEIGHT, DEFAULT_TEXT_COLOR, DEFAULT_VIEWER_PROFILE, DIRECTIONAL_PRESETS, DIRECTION_OPTIONS, DocumentPropertiesCardComponent, EASE, EFFECT_SOUND_CATALOGUE, EMBEDDED_FONTS_STYLE_ID, EMPHASIS_PRESETS, ENTRANCE_PRESETS, TEMPLATES as EQUATION_TEMPLATES, EXIT_PRESETS, EditorContextMenuComponent, EditorHistory, EditorStateService, EditorToolbarComponent, EffectsPanelComponent, ElementRendererComponent, EmbeddedFontsService, EncryptedFileDialogComponent, EquationEditorDialogComponent, EquationRendererComponent, EquationTemplateGalleryComponent, ExportProgressModalComponent, ExportService, FieldContextService, FindBarComponent, FindReplaceBarComponent, FollowModeBarComponent, FontEmbeddingListComponent, FontEmbeddingPanelComponent, GALLERY_THEME_PRESETS, GOOGLE_WEBFONTS_LINK_ID, GRIDLINE_COLOR, GoogleWebfontsService, GradientPickerComponent, HANDOUT_OPTIONS, HeaderFooterDialogComponent, HyperlinkDialogComponent, INSTANT, ImagePropertiesPanelComponent, InkDrawingService, InkRendererComponent, InsertSmartArtDialogComponent, InspectorPaneHeaderComponent, InspectorPanelComponent, IsMobileService, KeepAnnotationsDialogComponent, LOCALE_CATALOG, LONG_PRESS_DURATION_MS, LONG_PRESS_MOVE_TOLERANCE_PX, LoadContentService, LocalPresencePublisher, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, MOTION_PATH_COLUMNS, MediaPreviewComponent, MediaPropertiesPanelComponent, MediaRendererComponent, MediaTrimTimelineComponent, MobileBottomBarComponent, MobileMenuSheetComponent, MobilePresenterViewComponent, MobileSheetComponent, MobileSlidesSheetComponent, MobileToolbarComponent, ModalDialogComponent, Model3DRendererComponent, NotesHandoutCardComponent, NotesPanelComponent, NotesToolbarComponent, OleRendererComponent, OutlineViewOverlayComponent, P14_TRANSITION_KEYFRAMES, P14_TRANSITION_KEYFRAMES_2, P14_TRANSITION_KEYFRAMES_ALL, POWER_POINT_VIEWER_PROVIDERS, PPTX_OPEN_ACCEPT, PRESENTATION_OPEN_EXTENSIONS, PRESENTER_CHANNEL_NAME, PRESENTER_MSG_ORIGIN, PRESENTER_TIMER_SEGMENT_MS, PX_PER_CM, PX_PER_INCH, PasswordProtectionDialogComponent, PasswordStrengthMeterComponent, PowerPointViewerComponent, PresentToolbarAutoHide, PresentationAnnotationOverlayComponent, PresentationAnnotationsService, PresentationOverlayComponent, PresentationPropertiesPanelComponent, PresentationSettingsCardComponent, PresentationSubtitleBarComponent, PresentationToolbarComponent, PresentationTransitionOverlayComponent, PresenterViewComponent, PresenterWindowService, PrintDialogComponent, PrintService, PrintSettingsPanelComponent, PropertiesDialogComponent, RANDOM_ELIGIBLE_TYPES, REPEAT_MODE_OPTIONS, RESIZE_HANDLES, RULER_FONT_SIZE, RULER_THICKNESS, ReadingViewOverlayComponent, RemoteSelectionOverlayComponent, Rendering3DService, RibbonAnimationGalleryComponent, RibbonAnimationsSectionComponent, RibbonArrangeSectionComponent, RibbonColorPopoverComponent, RibbonComponent, RibbonDesignSectionComponent, RibbonDrawSectionComponent, RibbonDrawingGroupComponent, RibbonEditingSectionComponent, RibbonFileSectionComponent, RibbonFontControlsComponent, RibbonHomeSectionComponent, RibbonHyperlinkButtonComponent, RibbonInsertFieldsComponent, RibbonInsertSectionComponent, RibbonMotionPathGalleryComponent, RibbonParagraphControlsComponent, RibbonPrimaryRowComponent, RibbonReviewSectionComponent, RibbonShapeExtrasComponent, RibbonSlideshowSectionComponent, RibbonTransitionsSectionComponent, RibbonViewSectionComponent, RulerGuidesService, SEQUENCE_OPTIONS, SEVERITY_GROUPS, SEVERITY_LABELS, DEFAULT_TRANSITION_DURATION_MS as SHARED_DEFAULT_TRANSITION_DURATION_MS, SHORTCUT_REFERENCE_ITEMS, SLIDE_TRANSITION_KEYFRAMES, SLIDE_TRANSITION_KEYFRAMES_CSS, DEFAULT_PALETTE as SMARTART_DEFAULT_PALETTE, PALETTES as SMARTART_PALETTES, SMART_ART_COLOR_SCHEMES, SMART_ART_STYLE_OPTIONS, SUB_ITEM_LABEL, SVG_WARP_PRESETS, SWIPE_MAX_VERTICAL_PX, SWIPE_THRESHOLD_PX, SelectionPaneComponent, SetUpSlideShowDialogComponent, SettingsAppearanceTabComponent, SettingsDialogComponent, SettingsLanguageTabComponent, ShareDialogComponent, ShortcutPanelComponent, ShowOptionsFieldsetComponent, ShowSlidesFieldsetComponent, SignatureStrippedDialogComponent, SignaturesPanelComponent, SignaturesService, SlideBackgroundCardComponent, SlideCanvasComponent, SlideDefaultInspectorComponent, SlideDiffChangesComponent, SlideDiffRowComponent, SlideDiffThumbnailsComponent, SlideSizeCardComponent, SlideSorterOverlayComponent, SlideThemeOverridePanelComponent, SlideTransitionCardComponent, SlidesPanelComponent, SmartArt3DRendererComponent, SmartArtPreviewComponent, SmartArtPropertiesComponent, SmartArtRendererComponent, StatusBarComponent, TABLE_STRUCTURE_TOGGLES, TEXT_3D_BOTTOM_BEVEL_KEYS, TEXT_3D_TOP_BEVEL_KEYS, TEXT_DIRECTION_OPTIONS, THEME_CATALOG, TIMING_CURVE_OPTIONS, TRANSITION_SPEED_DURATION_MS, TRIGGER_OPTIONS, TYPE_LABELS, TableCellAdvancedFillComponent, TableCellFormattingComponent, TableDataEditorComponent, TablePropertiesComponent, TableRendererComponent, TableResizeOverlayComponent, TableSelectionService, TagsCardComponent, Text3DBevelSectionComponent, Text3DPanelComponent, TextAdvancedPanelComponent, ThemeEditorFieldsComponent, ThemeGalleryComponent, ThemeSelectorCardComponent, TitleBarComponent, TitleBarSearchComponent, TransitionDirectionPickerComponent, TransitionPreviewComponent, VALIGN_OPTIONS, VIEWER_THEME, VersionHistoryPanelComponent, ViewerCanvasEditingService, ViewerCollabCursorService, ViewerCollaborationSessionService, ViewerCollaborationShellService, ViewerCompareService, ViewerCustomShowsService, ViewerDialogsService, ViewerDocumentPropertiesService, ViewerExportService, ViewerExtraDialogsComponent, ViewerFileIOService, ViewerFindReplaceService, ViewerFormatPainterService, ViewerInspectorPanelService, ViewerKeyboardService, ViewerMobileSheetService, ViewerPresentationModeService, ViewerThemeGalleryService, ViewerTouchGesturesService, ViewerZoomService, WEBM_MIME_CANDIDATES, WHEEL_SPOKE_COUNTS, WriteBackScheduler, ZERO_LINE_COLOR, ZoomNavigationService, ZoomRendererComponent, ZoomTargetService, addCategory, addCommentToList, addGradientStopPatch, addItem, addSeries, addSubItem, advanceStep, affordanceElements, aiToggleVisible, alignPatch, animationFor, animationPresetLabelKey, annotationMapToInkInserts, applyAcceptedDiff, applyAnimationPreset, applyFindReplacements, applyFormatToElement, applyMove, applyResize, asMediaElement, assignUserColor, attachShowVisibilityPause, attachTouchGestures, axisTickValues, beginDrawingNodeEdit, beginNodeEdit, bevelSizePatch, boolFromEvent, bringForward, bringToFront, buildBarActions, buildBroadcastConfig, buildBroadcastViewerUrl, buildCategoryLabels, buildCellParagraphs, buildChartViewModel, buildChatLogExport, buildChatLogMarkdown, buildChromeStyle, buildClearHyperlinkPatch, buildClickGroups, buildColStyles, buildCollaborationConfig, buildComboViewModel, buildCssGradientFromShapeStyle, buildDuotoneFilter, buildDuotoneFilterId, buildEmbeddedFontStyles, buildEquationElement, buildEquationSegment, buildFallbackViewModel, buildFontFaceRule, buildGradientFillCss, buildGridlinesAndLabels, buildHyperlinkPatch, buildInkContainerStyle, buildInkStrokes, buildLegend, buildLiveInkStrokeView, buildMarkTooltip, buildModel3DContainerStyle, buildModel3DViewModel, buildOleActionModel, buildOleInfoRows, buildPatternFillCss, buildPieViewModel, buildPrintHtmlDocument as buildPrintDocument, buildPropertiesPatch, buildRadarViewModel, buildRegionMapViewModel, buildSaveSlides, buildShareUrl, buildSmartArtInsertElement, buildSmartArtNodes, buildStockViewModel, buildSurfaceViewModel, buildTableViewModel, buildTreemapViewModel, buildTrimFragment, buildWaterfallViewModel, buildZeroLine, buildZoomContainerStyle, buildZoomViewModel, bulletIndentPx, canAddTopLevelNode, canEditSmartArtNodes, canGroupSelection, canRemoveTopLevelNode, canSetStrokeWidth, canStartBroadcast, canStartShare, canUngroupSelection, canUseClipboard, captionDisplayText, cellRunStyle, cellStyleToStyleMap, cellTdStyle, changeCountLabel, changeIcon, characterSpacingPatch, chartPreserveAspectRatio, checkFontAvailable, clampCursorPosition, clampGifDimensions, clampIndex, clampNotesFontSize, clampScale, clampStep, clearAllLocalViewerData, clearAudienceContent, cn, collectAccessibilityIssues, collectElementText, collectSlideText, collectStoredChats, collectUsedFontFamilies, columnWidthStyle, commitNodeText, computeAlign, computeAxisTitlePrimitives, computeBarRects, computeBubbleRadius, computeCornerHandle, computeDistribute, computeDrawingViewBox, computeErrorBarPrimitives, computeFocusTargets, computeGridSpacingPx, computeHandleBoxes, computeHandoutLayout, computeIsMobile, computeIsTablet, computeLinePoints, computeLinearRegression, computePageCount, computePieLayout, computePieSlicePath, computePieSlices, computePlotLayout, computeRSquared, computeRadarPoints, computeResizeHandleBoxes, computeRotateHandleBox, computeScatterDots, computeScatterXDomain, computeSelectionBoxes, computeSingleSelected, computeSlideIndices, computeSnap, computeStackedBarRects, computeStackedValueRange, computeTrendlinePrimitives, computeValueRange, convertOmmlToMathMl, copyFormatFromElement, countAccessibilityIssues, countAnnotationStrokes, createAngularAiBridge, createCustomShow, createImageElementFromFile, createSwipeDismissDrag, createWebrtcBundle, createWebsocketBundle, cssObjectToStyleMap, currentColorScheme, currentLayout, currentStyle, defaultCssVars, defaultRadius, defaultThemeColors, deleteElementsByIds, deleteVersion as deleteRecoveryVersion, demoteNode, deriveModel3DBlobUrl, derivePresenceList, describeCollaborationShellState, describeSmartArtBounds, disableGlowPatch, disableInnerShadowPatch, disableOuterShadowPatch, disableReflectionPatch, disableSoftEdgePatch, duplicateElementById, durationOf, effectsStateOf, enableGlowPatch, enableInnerShadowPatch, enableOuterShadowPatch, enableReflectionPatch, enableSoftEdgePatch, encodeGif, endShowMediaCleanup, estimatePageCount, exitPresentationFullscreen, exportAiChatLogs, extractPathPoints, eyedropperAvailable, fillColorOf, findInSlides, findOwningSlideIndex, findSlideIndexByElementId, firstVisibleIndex, fitPolynomial, fitZoom, focusTargetChips, fontMimeForFormat, fontSizeOf, forgetSessionDeck, formatAxisValue, formatBytes, formatCursorLabel, formatElapsed, formatFileSize, formatInlineListStyle, formatPropertyDate, formatTime, fpsToFrameIntervalMs, generateBroadcastRoomId, generateCommentId, generateCustomShowId, generatePressureCircles, generateTicks, getCinematicTransitionAnimations, getClrChangeParams, getContainerStyle, getDuotoneFilterDef, getEffectSoundAsset, getEffectSoundState, getImageSrc, getLocalStorageUsageSummary, getOleAriaLabel, getOleBadgeLabel, getOleDisplayName, getOleDownloadFileName, getOleTypeColor, getOleTypeLabel, getP14TransitionAnimations, getPasswordStrength, getPatternSvg, getPlaceholderStyle, getVersions as getRecoveryVersions, getResolvedShapeClipPath, getResolvedShapeClipPathFor, getSessionTabId, getShapeFillStrokeStyle, getSlideBackgroundStyle, getSlideTransitionAnimations, getSmartArtNodeBounds, getSpeechRecognitionCtor, getTextBlockStyle, getTextWarp, getTouchDistance, getWarpCategory, getWarpPath, gradientStateFromStyle, gradientStateOf, gradientStatePatch, gradientStopColorCommitPatch, gridColumns, groupIssuesBySeverity, hasAnimation, hasCopyableFormat, hasExistingLink, hasExitedFullscreen, hasGradientFill, hasPressureVariation, hasVisibleSlideAfter, headerLabel, imageDimensions, inkViewBox, insertTableElementColumn as insertColumn, insertTableElementRow as insertRow, interpolateWidth, isAudienceTab, isBold, isBrowserOpenableMime, isChildNode, isElementInteractive, isInjectableUrl, isItalic, isLegacyBinaryPresentation, isPpactionUrl, isPresenterMessage, isSigned, isSupportedPresentationFile, isTextElement, isTwoTableFocus, isUnderline, isUrlSafe, isValidRoomId, isViewportBackgroundPressTarget, isZoomActivationKey, issueTrackKey, issueTypeLabel, keyToLabel, lastVisibleIndex, latexToMathml, layoutConnectorPaints, layoutNodeLabels, linePointsToSvgString, lineSpacingPatch, loadAudienceContent, loadSessionDeck, mediaFallbackFor, mediaSurfaceFor, mergeCaptionResults, mergeDown, mergeRight, mergeSelection, mergeTablesDirective, moveElementBy, moveNodeDown, moveNodeUp, msToFrameDelayCs, narrowToCircle, narrowToPolygon, narrowToRect, newChartElement, newEquationElement, newPresetShapeElement, newShapeElement, newSmartArtElement, newTableElement, newTextElement, nextVisibleIndex, nodeBold, nodeEditBox, nodeFillColor, nodeFontColor, nodeIdFromKey, nodeItalic, nodeStyle, normalizeFontFormat, normalizeSlidesPerPage, normalizeValue, numFromEvent, oleActionsVisibleFor, ommlToMathml, ooxmlDashToCssBorderStyle, openNativeEyeDropper, overallStatus, paletteColor, parseAudienceNonce, parseNodeTextarea, partitionSlides, patchChartData, patchChartStyle, patchTableData, patchTextStyle, patternPresetOptions, pendingElementStyles, pickColorByClickFallback, pickFile, pickSupportedMimeType, planGifFrames, planVideoSegments, pointFromPointerEvent, pointsToSvgPathD, presenceToCursors, presentationBaseName, presentationStageStyle, presenterTimerProgress, presetByLayout, presetsForCategory, pressuresToWidths, prevVisibleIndex, projectDrawingShapes, promoteNode, provideViewerTheme, radarAngle, radarRingPoints, readAsDataUrl, recordWebm, registerCrossSlideAudio, rememberSessionDeck, removeAnimation, removeCategory, removeTableElementColumn as removeColumn, removeCommentFromList, removeElementAnimation, removeGradientStopPatch, removeNode, removeTableElementRow as removeRow, removeSeries, renderToCanvas, reorderAnimationDown, reorderAnimationUp, replaceInSlides, replaceMatch, requestPresentationFullscreen, resizeElement, resolveCaptionTracks, resolveChartKind, resolveDirection, resolveDirection8, resolveFontVariant, resolveHyperlinkHref, resolveInteractiveElementId, resolveLegendAnchorPosition, resolveMediaSrc, resolveOleType, resolveOrientation, resolveParagraphBullet, resolvePresenterNotes, resolveProfileInitial, resolveRegionCode, resolveRibbonCanGroup, resolveSlideAutoAdvanceMs, resolveSlideTransition, resolvePalette as resolveSmartArtPalette, resolveThemeCatalogEntry, resolveTransitionDuration, resolveTransitionDurationMs, resolveWheelSpokeCount, restoreSessionDeck, revealedElementStyles, routeOrthogonalConnector, rowStyle, rulerDragToGuidePosition, rulerHighlight, rulerStripTicks, sampleColorFromSlide, sanitizeColor, sanitizeSlideIndex, sanitizeUserName, saveViewerProfile, savedPresentationFileName, scanAvailableFonts, searchSlides, seedBroadcastFields, seedHyperlinkDraft, seedPropertiesDraft, seedShareFields, segmentFrameCount, selectValue, sendBackward, sendToBack, sequentialColorScale, serializeWriteBack, seriesColor, seriesXValues, setAfterAnimation, setAfterAnimationColor, setAnimationEmphasis, setAnimationEntrance, setAnimationExit, setAxis, setAxisLogScale, setAxisTitleStyle, setCategoryLabel, setCellText, setColorScheme, setDataLabels, setDataPointExplosion, setDataPointFill, setDataPointLabel, setDataPointMarker, setDelay, setDirection, setDuration, setEffectSound, setEffectStockSound, setElementPosition, setGridlineStyle, setLayout, setLegend, setNodeStyle, setNodeText, setRepeatCount, setRepeatMode, setSequence, setSeriesChartType, setSeriesColor, setSeriesErrorBars, setSeriesMarker, setSeriesName, setSeriesTrendline, setSeriesValue, setStyle, setTimingCurve, setTitle, setTrigger, setTriggerShapeId, shapeStylePatch, sheetAfterNavigate, shouldBlockClickAdvance, shouldUseSvgWarp, showDirectionPicker, showsTemplateAffordance, signatureCountLabel, signatureKey, signatureTimestamp, signerName, statusLabel as slideDiffStatusLabel, slideNumberOf, slidesWithReappliedLayout, smartArtNodes, paletteColour as smartArtPaletteColour, snapToGridStep, splitCursorCell, splitMergedCell, statusKind, statusLabel$1 as statusLabel, storeAudienceContent, stringFromEvent, strokeColorOf, strokeToInkElement, strokeWidthOf, styleShadowFilter, surfaceColor, textAdvancedPatch, textAdvancedStateFromStyle, textAdvancedStateOf, textColorOf, textDirectionPatch, textFontSizePatch, textStyleOf, textStylePatch, themeStyle, themeToCssVars, thumbnailHeight, thumbnailZoom, toggleCommentResolvedInList, toggleNodeBold, toggleNodeItalic, toggleSheet, topLevelNodeCount, transformSelectedTextCase, translationsEn, updateElementById, updateGlowPatch, updateGradientStopPatch, updateInnerShadowPatch, updateOuterShadowPatch, updateReflectionPatch, vAlignPatch, validatePassword, validatePrintSettings, validateRoomId, valueToY, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, waypointsToPathD, withManualLayouts, worstStatus, zoomTargetSlideIndex };
26046
26385
  export type { AccessibilityIssueGroup, AccountAuthConfig, ActionDescriptor, ActiveShow, AiCanvasHighlight, AiChatInitState, AiHistoryInitDeps, AiLogChat, AiLogExport, AiLogFormat, AiLogMessage, AiPanelSelectionAccessors, AlignBox, AlignMode, AnimationClickGroup, AnimationGroup, AnimationPresetCategory, AnimationPresetEntry, AnimationPresetPick, AnnotationInkInsert, AnnotationStroke, AttachTouchGesturesConfig, AuthoredRange, AwarenessLike, BarRect, Box, BridgeDeps, BroadcastConfig, BroadcastDefaults, BubbleRadiusOptions, CSSProperties, CanvasSize, CellCoord, CellParagraph, CellTextRun, ChartPartRef, ChartPartSelection, ChartSvgDef, ChartSvgPatternDef, ChartValueDrag, ChartViewModel, ClassValue, ClrChangeParams, CollaborationConfig, CollaborationRole, CollaborationShellState, ConnectionStatus, RouterRect as ConnectorObstacle, RouterPoint as ConnectorPoint, ConnectorRouting, CopiedFormat, CornerHandleBox, CustomShow, CustomThemeEdit, DeckSaveState, DestroyableYDoc, DiagonalBorderInfo, DistributeMode, DocumentProperties, DrawingViewBox, DuotoneFilterDef, EffectSoundState, EffectsState, ElementUpdate, ElementUpdateOptions, EmbeddedFontStyles, EquationTemplate, ExternalCollaborationAwareness, ExternalCollaborationSession, ExternalCollaborationSnapshot, EyedropperResult, FindOptions, FindResult, FocusChip, FocusSelectionInput, GifFrame, GifFramePlan, GifPlanOptions, GlowState, GradientState, GradientStop$1 as GradientStop, HandleBox, HandoutSlidesPerPage, HyperlinkDraft, InkPoint, InkStroke, InkStrokeView, InlineEditState, InnerShadowState, LegendEntry, LinePoint, LinearFit, LocalIdentity, LocalStorageUsageSummary, LocaleCatalogEntry, MobileSheetKey, Model3DViewModel, MotionPathColumn, MotionPathEntry, NodeEditBox, NotesSegmentViewModel, ObjectUrlFactory, OleActionModel, OleInfoRow, OuterShadowState, OutlineCommit, OverallSignatureStatus, PartitionedSlides, PathPoint, PieSliceGeometry, PieSliceOptions, PlotLayout, PlotLayoutOptions, PositionUpdate, PowerPointViewerAPI, PptxAiBridge, PptxAiConfig, PptxAiConnection, PptxAiContextStrategy, PptxAiElementUpdate, PptxAiToolName, PptxAiUIMessage, PptxAiWritePolicy, PresentToolbarAction, PresentationTool, PresenterExitMessage, PresenterMessage, PresenterNotes, PresenterSlideChangeMessage, PresenterTimerProgress, PressureCircle, PrintColorMode, PrintHtmlDocumentOptions as PrintDocumentOptions, PrintOrientation, PrintSettings, PrintSlideRange, PrintWhat, PropertiesDraft, ProposalView, ProviderBundle, ProviderLike, RadarPoint, RecordWebmOptions, RecoveryVersion, ReflectionState, RemoteCursor, SanitizedPresence as RemotePresence, RenderedShape, ReplaceResult, ResizeHandle, ResolvedCaptionTrack, ResolvedDirection, ResolvedDirection8, ResolvedFontVariant, ResolvedOleType, RulerUnit, SanitizedPresence, SavedPresentationFormat, ScatterDot, ScatterXDomain, SelectionBox, SessionDeck, ShapeStyleChanges, ShareDefaults$1 as ShareDefaults, ShareFormFields, ShortcutReferenceItem, SignatureStatusKind, SlideInspectorTab, SlideTransitionAnimations, SmartArtInsertEvent, SmartArtNodeBounds, SnapBox, SnapGuide, SnapResult, SoftEdgeState, SpeechAlternative, SpeechRecognitionCtor, SpeechRecognitionEventLite, SpeechRecognitionLite, SpeechResult, SpeechResultList, SpeechSupportState, StagedProposal, StrokeToInkElementOpts, StyleMap, SupportedChartKind, SvgAreaGradient, SvgCircle, SvgLine, SvgPath, SvgPolygon, SvgPolyline, SvgPrimitive, SvgRect, SvgText, SwipeDismissDrag, TableBooleanFlag, TableCellSelection, TableCellViewModel, TableRowViewModel, TemplateElementsBySlideId, Text3DBevelKeys, TextAdvancedChanges, TextAdvancedState, TextStyleChanges, TextWarpCssDef, TextWarpDef, TextWarpPathDef, ThemeCatalogEntry, Tick, ToolbarActionId, TouchGestureCallbacks, TranslationKey, ValueRange, VideoPlanOptions, VideoSegmentPlan, ViewerCollaborationShellOptions, ViewerMode, ViewerProfile, ViewerSettings, ViewerTheme, ViewerThemeColors, ViewportFitOptions, ViewportFitPadding, ZoomTranslate, ZoomViewModel };
26047
26386
  //# sourceMappingURL=pptx-angular-viewer.d.ts.map