pptx-angular-viewer 4.2.0 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
 
@@ -930,13 +930,31 @@ declare function buildWarpPath(preset: PptxTextWarpPreset, width: number, height
930
930
  */
931
931
  declare const getWarpPath: typeof buildWarpPath;
932
932
 
933
+ /**
934
+ * Affine / piecewise-affine fallback for a WordArt envelope glyph whose
935
+ * outline is not obtainable (no font file and no DOM canvas to trace the
936
+ * browser's own rendering with, e.g. server-side rendering or a test
937
+ * environment). With an outline available, `text-warp-glyph-outline.ts`
938
+ * warps it exactly instead and none of this runs.
939
+ *
940
+ * The glyph renders as an SVG `<text>` at its unwarped layout position, with
941
+ * a full `matrix(a b c d e f)` least-squares fit of the envelope mapping
942
+ * (`text-warp-envelope-map.ts`) over its ink box. When one affine misses the
943
+ * mapping by more than {@link SLICE_TOLERANCE_FRACTION} of the shape box
944
+ * height anywhere inside the glyph box
945
+ * (a wide glyph on a strongly curved envelope), the glyph is split into up
946
+ * to {@link MAX_ENVELOPE_GLYPH_SLICES} vertical bands, each clipped to its
947
+ * own x-range (in the same pre-transform layout space `x`/`y` are in) and
948
+ * carrying its own fit, so the pieces tile the glyph.
949
+ */
950
+
933
951
  /** One rendered piece of a glyph: clipped to its own x-band, its own affine fit. */
934
952
  interface EnvelopeGlyphSlice {
935
953
  /** Left edge of this slice's clip rect, in the glyph's own (pre-transform) x. */
936
954
  clipX0: number;
937
955
  /** Right edge of this slice's clip rect, in the glyph's own (pre-transform) x. */
938
956
  clipX1: number;
939
- /** Same `matrix(1 b 0 d 0 f)` form as {@link glyphEnvelopeMatrix}, fit to this slice's own edges. */
957
+ /** SVG `matrix(a b c d e f)` fit of the envelope mapping over this slice. */
940
958
  transform: string;
941
959
  }
942
960
 
@@ -1057,6 +1075,8 @@ interface SvgPath {
1057
1075
  fill: string;
1058
1076
  stroke?: string;
1059
1077
  strokeWidth?: number;
1078
+ /** SVG `stroke-dasharray`, e.g. a trendline's own `c:spPr/a:ln/a:prstDash`. */
1079
+ dashArray?: string;
1060
1080
  opacity?: number;
1061
1081
  part?: ChartPartRef;
1062
1082
  /**
@@ -1832,6 +1852,20 @@ interface ScatterDot {
1832
1852
  cx: number;
1833
1853
  cy: number;
1834
1854
  }
1855
+ /**
1856
+ * X values a scatter / bubble series is plotted against.
1857
+ *
1858
+ * The series' own `c:xVal` wins. Only when it has none does the chart-level
1859
+ * category list stand in, which is all the engine used to have and is why every
1860
+ * series in a multi-series scatter was plotted against series 1's x axis.
1861
+ *
1862
+ * Lives here (not `chart-cartesian-plots.ts`, its original home) so
1863
+ * `chart-scatter-x-axis.ts` can share it without a circular import: that
1864
+ * module builds the X axis's own nice min/max/major-unit scale, and
1865
+ * `chart-cartesian-plots.ts` / `chart-cartesian-bubbles.ts` need that same
1866
+ * scale to place their points on it.
1867
+ */
1868
+ declare function seriesXValues(chartData: PptxChartData, series: PptxChartSeries): ReadonlyArray<number> | undefined;
1835
1869
  /**
1836
1870
  * The x extent a scatter / bubble plot is drawn against.
1837
1871
  *
@@ -1849,7 +1883,7 @@ interface ScatterXDomain {
1849
1883
  * series declares a finite x value, in which case callers fall back to
1850
1884
  * positioning points by index.
1851
1885
  */
1852
- declare function computeScatterXDomain(seriesXValues: ReadonlyArray<ReadonlyArray<number> | undefined>): ScatterXDomain | undefined;
1886
+ declare function computeScatterXDomain(perSeriesXValues: ReadonlyArray<ReadonlyArray<number> | undefined>): ScatterXDomain | undefined;
1853
1887
  declare function computeScatterDots(values: ReadonlyArray<number>, maxXIndex: number, layout: PlotLayout, range: ValueRange, xValues?: ReadonlyArray<number>, xDomain?: ScatterXDomain): ScatterDot[];
1854
1888
  /** `c:bubbleScale` / `c:sizeRepresents` inputs to {@link computeBubbleRadius}. */
1855
1889
  interface BubbleRadiusOptions {
@@ -1982,11 +2016,12 @@ declare function buildComboViewModel(element: PptxElement, chartData: PptxChartD
1982
2016
  * series[0] → bar/column rectangles (one per category)
1983
2017
  * series[1…N] → line + dots (one polyline + N circles per series)
1984
2018
  *
1985
- * Stock charts (HLC / OHLC candlesticks):
1986
- * 3-series HLC → series: High, Low, Close
1987
- * 4-series OHLC → series: Open, High, Low, Close
1988
- * Per candle: a vertical wick line (high–low) + a body rect (open–close).
1989
- * Body is green when close ≥ open, red otherwise.
2019
+ * Stock charts (HLC / OHLC):
2020
+ * 3-series HLC → series: High, Low, Close. A vertical hi-lo wick, no body,
2021
+ * plus a short close tick (PowerPoint has no `c:upDownBars` on HLC).
2022
+ * 4-series OHLC → series: Open, High, Low, Close. The wick plus a candle
2023
+ * body from open to close, filled from `c:upDownBars` (see
2024
+ * `chart-stock-candles.ts`; never a hardcoded up/down colour).
1990
2025
  *
1991
2026
  * @module chart-combo-stock
1992
2027
  */
@@ -1998,15 +2033,9 @@ declare function buildComboViewModel(element: PptxElement, chartData: PptxChartD
1998
2033
  * 3-series: series[0] = High, series[1] = Low, series[2] = Close
1999
2034
  * 4-series: series[0] = Open, series[1] = High, series[2] = Low, series[3] = Close
2000
2035
  *
2001
- * Per data point the builder emits:
2002
- * - An `SvgLine` for the high-to-low wick (vertical).
2003
- * - An `SvgRect` for the open-to-close candle body.
2004
- *
2005
- * Candle body is green (#22c55e) when close ≥ open, red (#ef4444) otherwise.
2006
- * When no open series is present the close value is used as the open (HLC
2007
- * mode), causing all candles to show as a coloured body between close and the
2008
- * previously computed running close – but for simplicity, with no open we set
2009
- * open = low value, matching PowerPoint's own HLC rendering heuristic.
2036
+ * The wick/tick/body geometry itself lives in `chart-stock-candles.ts`
2037
+ * (shared with the price portion of a volume+stock combo); this builder only
2038
+ * resolves the series slots, axes, legend and overlay depth around it.
2010
2039
  *
2011
2040
  * @param element - The chart element providing width/height.
2012
2041
  * @param chartData - Parsed chart data including series and style.
@@ -2212,6 +2241,15 @@ interface ErrorBarRenderOptions {
2212
2241
  seriesRanges?: ReadonlyArray<ValueRange | undefined>;
2213
2242
  /** Per-series category mapping mode for mixed bar/line charts. */
2214
2243
  seriesModes?: ReadonlyArray<'line' | 'bar' | undefined>;
2244
+ /**
2245
+ * A scatter/bubble chart's own nice-scaled X-axis range (see
2246
+ * `chart-scatter-x-axis.ts`), shared across every series so an X error bar
2247
+ * anchors to the SAME domain the plotted points use. Without it each
2248
+ * series fell back to its own tight per-series min/max (`numericXRange`),
2249
+ * which drifted from the chart-wide domain the dots share once that
2250
+ * domain gained the automatic scale's headroom/rounding.
2251
+ */
2252
+ scatterXRange?: ValueRange;
2215
2253
  }
2216
2254
  /** Build X- and Y-direction ChartML error-bar primitives for cartesian series. */
2217
2255
  declare function computeErrorBarPrimitives(chartData: PptxChartData, catCount: number, layout: PlotLayout, range: ValueRange, mode?: 'line' | 'bar', options?: ErrorBarRenderOptions): SvgPrimitive[];
@@ -2272,8 +2310,16 @@ declare function computeRSquared(xVals: number[], yVals: number[], evalFn: (x: n
2272
2310
  * `chartData`. Returns an empty array when no series declares a trendline.
2273
2311
  *
2274
2312
  * Each trendline produces:
2275
- * - one `SvgPath` (dashed polyline in the series / trendline colour), and
2276
- * - optionally one `SvgText` with the equation / R-squared label at the last point.
2313
+ * - one `SvgPath` (dashed polyline in the series / trendline colour,
2314
+ * honouring the trendline's own `c:spPr` dash style and width), and
2315
+ * - optionally one `SvgText` per label line (the equation, then R-squared
2316
+ * on its OWN line below it, matching PowerPoint's own two-line label
2317
+ * rather than one line joined with a separator).
2318
+ *
2319
+ * A scatter chart's series fits (and draws) against its own real `c:xVal`
2320
+ * data; every other cartesian kind fits against the category position
2321
+ * (1-based, Excel's own convention), never a bare 0-based array index. See
2322
+ * `chart-overlays-trendline-fit.ts`.
2277
2323
  *
2278
2324
  * @param chartData Full parsed chart data.
2279
2325
  * @param catCount Number of categories (x-slots), e.g. `chartData.categories.length || 1`.
@@ -2319,6 +2365,17 @@ declare function computeTrendlinePrimitives(chartData: PptxChartData, catCount:
2319
2365
 
2320
2366
  /** One of the three animation buckets a preset can occupy on an element. */
2321
2367
  type AnimationGroup = 'entrance' | 'emphasis' | 'exit';
2368
+ /**
2369
+ * Trigger options WITH their `pptx.animation.trigger.<value>` i18n key,
2370
+ * derived from {@link TRIGGER_VALUES}. Four of the five bindings hand-rolled
2371
+ * an identical (but incomplete, see {@link TRIGGER_VALUES}) `{ value,
2372
+ * labelKey }` array. This is the single list every binding's trigger
2373
+ * `<select>` should map to `<option>`s.
2374
+ */
2375
+ declare const TRIGGER_OPTIONS: ReadonlyArray<{
2376
+ value: PptxAnimationTrigger;
2377
+ labelKey: string;
2378
+ }>;
2322
2379
  /**
2323
2380
  * Presets that expose the direction picker. Superset of the per-binding sets
2324
2381
  * (Angular surfaced more directional presets than React's `flyIn`/`flyOut`).
@@ -3696,6 +3753,34 @@ interface SectionSlideGroup<TSection extends SectionGroupDescriptor = PptxSectio
3696
3753
  /** Discriminated id for every built-in slide template. */
3697
3754
  type SlideTemplateId = 'title' | 'titleAndContent' | 'sectionHeader' | 'agenda' | 'twoContent' | 'comparison' | 'quote' | 'timeline' | 'keyMetrics' | 'titleOnly' | 'blank' | 'closing';
3698
3755
 
3756
+ /** Which surface a slide is being painted on, as far as a media element cares. */
3757
+ interface MediaSurface {
3758
+ /** True only on the live slide-show stage. */
3759
+ presenting: boolean;
3760
+ /**
3761
+ * True when the slide is painted as a STILL of itself: the presenter
3762
+ * console's current-slide pane and next-slide preview, the slide-thumbnail
3763
+ * rail, a slide-transition overlay, an export raster. Never the surface the
3764
+ * show is actually running on.
3765
+ */
3766
+ preview: boolean;
3767
+ }
3768
+ /** The centred affordance drawn over a poster frame. */
3769
+ type MediaFallbackBadge = 'none' | 'play' | 'missing';
3770
+ /** The box drawn when there is not even a poster frame to paint. */
3771
+ type MediaFallbackPlaceholder = 'none' | 'typed' | 'missing';
3772
+ /** The layers a media element paints when no playable source is available. */
3773
+ interface MediaFallbackVisual {
3774
+ /** Paint the poster frame. Only ever true when the element has one. */
3775
+ poster: boolean;
3776
+ /** Dim the poster, signalling that the media behind it is unavailable. */
3777
+ dimPoster: boolean;
3778
+ /** Which affordance to centre over the poster, if any. */
3779
+ badge: MediaFallbackBadge;
3780
+ /** Which box to paint instead of a poster, if any. */
3781
+ placeholder: MediaFallbackPlaceholder;
3782
+ }
3783
+
3699
3784
  /**
3700
3785
  * ole-actions.ts - framework-agnostic helpers for the OLE download/open UI.
3701
3786
  *
@@ -3705,6 +3790,7 @@ type SlideTemplateId = 'title' | 'titleAndContent' | 'sectionHeader' | 'agenda'
3705
3790
  *
3706
3791
  * @module shared/render/ole-actions
3707
3792
  */
3793
+
3708
3794
  /**
3709
3795
  * Human-readable binary file size (1024-based), e.g. `1 byte`, `0 bytes`,
3710
3796
  * `12 MB`. Returns `undefined` for missing, negative, or non-finite input so
@@ -4355,13 +4441,21 @@ type NotesParagraphCommand = 'bullet' | 'numbered' | 'indent' | 'outdent';
4355
4441
  * Pure string logic: resolves OOXML field runs (slide number, date/time,
4356
4442
  * header/footer, document properties, slide title) into their display text.
4357
4443
  * Extracted from the React `viewer/utils/text-field-substitution` module so
4358
- * every binding substitutes identically.
4444
+ * every binding substitutes identically. The locale-aware datetime engine
4445
+ * lives in `text-field-datetime.ts`.
4359
4446
  */
4360
4447
  /** Context for substituting field placeholders (slide number, date/time, header/footer, etc.). */
4361
4448
  interface FieldSubstitutionContext {
4362
4449
  slideNumber?: number;
4363
4450
  dateTimeText?: string;
4364
- /** OOXML date-format pattern from header/footer settings (e.g. "M/d/yyyy"). */
4451
+ /**
4452
+ * The deck's master date-field default TYPE (`a:fld/@type` on the slide
4453
+ * master's `dt` placeholder, e.g. "datetime2"; see `header-footer-parts.ts`).
4454
+ * This is a field TYPE, not a format pattern, and is used ONLY as a
4455
+ * fallback for a field authored with the generic, unnumbered `datetime`
4456
+ * type - a field that already names its own `datetime1`-`datetime13` type
4457
+ * always uses that type, never this one (see `substituteFieldText`).
4458
+ */
4365
4459
  dateFormat?: string;
4366
4460
  /** Footer text from PptxHeaderFooter settings. */
4367
4461
  footerText?: string;
@@ -5769,7 +5863,7 @@ declare const P14_TRANSITION_KEYFRAMES = "\n/* \u2500\u2500 Conveyor (translate
5769
5863
  /** Part 2: prism / reveal / ripple / shred / switch / vortex / warp / wheelReverse / window. */
5770
5864
  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";
5771
5865
  /** Both p14 keyframe blocks concatenated, for single `<style>` injection. */
5772
- 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";
5866
+ 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";
5773
5867
 
5774
5868
  /**
5775
5869
  * `p14-transition-css` — animation resolver for the Office 2010 (`p14`
@@ -7728,7 +7822,7 @@ interface OutlineRow {
7728
7822
  */
7729
7823
 
7730
7824
  /** Every command a canvas context menu can offer, in no particular order. */
7731
- 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';
7825
+ 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';
7732
7826
  /** One rendered entry: a command, plus how it is presented. */
7733
7827
  interface ContextMenuEntry {
7734
7828
  id: ContextMenuCommandId;
@@ -7742,6 +7836,27 @@ interface ContextMenuEntry {
7742
7836
  disabled?: boolean;
7743
7837
  }
7744
7838
 
7839
+ /**
7840
+ * Paste Special (Ctrl+Alt+V) and the Paste Options mini-toolbar PowerPoint
7841
+ * shows right after an ordinary paste. Both surfaces offer the same four
7842
+ * choices, applied to the just-pasted clone: Keep Source Formatting, Use
7843
+ * Destination Theme, Picture, Keep Text Only.
7844
+ *
7845
+ * This viewer's clipboard is an in-memory element snapshot (see
7846
+ * `element-clipboard.ts`), not real OS clipboard formats, so "Paste Special"
7847
+ * here means "how should the clone that `cloneElementForPaste` already
7848
+ * produced be reshaped", not "which of several MIME payloads to decode".
7849
+ * Three of the four formats are pure element transforms and live here; the
7850
+ * fourth (Picture) needs a DOM rasterization step only a binding can perform,
7851
+ * so this module only builds the resulting element once the binding hands it
7852
+ * a rendered data URL (see {@link buildRasterPictureElement}).
7853
+ *
7854
+ * @module render/paste-special
7855
+ */
7856
+
7857
+ /** The four paste formats PowerPoint's Paste Options / Paste Special offer. */
7858
+ type PasteSpecialFormat = 'keep-source-formatting' | 'use-destination-theme' | 'picture' | 'keep-text-only';
7859
+
7745
7860
  /**
7746
7861
  * smart-art-presets.ts: the SmartArt insert-gallery catalogue, shared across
7747
7862
  * bindings. Pure data + types; consumed by each binding's insert dialog and
@@ -8268,6 +8383,20 @@ interface InkStrokeView {
8268
8383
  * existed.
8269
8384
  */
8270
8385
  nibMarks: NibMark[] | null;
8386
+ /**
8387
+ * CSS `mix-blend-mode` this stroke should paint with: `'multiply'` for a
8388
+ * highlighter-style stroke, so overlapping highlighter strokes darken
8389
+ * where they cross (and a highlighter stroke darkens whatever slide
8390
+ * content sits underneath it) the way a real highlighter pen does, instead
8391
+ * of plain alpha compositing. `'normal'` for every other stroke. A binding
8392
+ * applies this as an inline `mix-blend-mode` style on the stroke's own
8393
+ * `<path>`/`<g>` (not on the element's outer `<svg>`): setting it on the
8394
+ * container instead would blend the whole element's already-composited
8395
+ * output against the backdrop as one unit, so strokes sharing that
8396
+ * container would still alpha-composite (not multiply) against each
8397
+ * other.
8398
+ */
8399
+ blendMode: 'normal' | 'multiply';
8271
8400
  }
8272
8401
 
8273
8402
  /**
@@ -8574,34 +8703,6 @@ interface InsertChartTypeOption {
8574
8703
  label: string;
8575
8704
  }
8576
8705
 
8577
- /** Which surface a slide is being painted on, as far as a media element cares. */
8578
- interface MediaSurface {
8579
- /** True only on the live slide-show stage. */
8580
- presenting: boolean;
8581
- /**
8582
- * True when the slide is painted as a STILL of itself: the presenter
8583
- * console's current-slide pane and next-slide preview, the slide-thumbnail
8584
- * rail, a slide-transition overlay, an export raster. Never the surface the
8585
- * show is actually running on.
8586
- */
8587
- preview: boolean;
8588
- }
8589
- /** The centred affordance drawn over a poster frame. */
8590
- type MediaFallbackBadge = 'none' | 'play' | 'missing';
8591
- /** The box drawn when there is not even a poster frame to paint. */
8592
- type MediaFallbackPlaceholder = 'none' | 'typed' | 'missing';
8593
- /** The layers a media element paints when no playable source is available. */
8594
- interface MediaFallbackVisual {
8595
- /** Paint the poster frame. Only ever true when the element has one. */
8596
- poster: boolean;
8597
- /** Dim the poster, signalling that the media behind it is unavailable. */
8598
- dimPoster: boolean;
8599
- /** Which affordance to centre over the poster, if any. */
8600
- badge: MediaFallbackBadge;
8601
- /** Which box to paint instead of a poster, if any. */
8602
- placeholder: MediaFallbackPlaceholder;
8603
- }
8604
-
8605
8706
  /**
8606
8707
  * Trim-timeline geometry math for the trim-editing UI, shared by every
8607
8708
  * binding's trim scrubber (React `TrimTimeline`, Vue `MediaTrimTimeline.vue`,
@@ -8653,6 +8754,10 @@ interface SummaryZoomTileView {
8653
8754
  backgroundColor: string;
8654
8755
  style: Record<string, string>;
8655
8756
  ariaLabel: string;
8757
+ /** This tile's own `zmPr/@returnToParent`; see {@link ZoomPptxElement.returnToParent}. */
8758
+ returnToParent: boolean;
8759
+ /** This tile's own `zmPr/@transitionDur` in milliseconds; see {@link ZoomPptxElement.transitionDurationMs}. */
8760
+ transitionDurationMs?: number;
8656
8761
  }
8657
8762
  interface SummaryZoomView {
8658
8763
  layout: 'grid' | 'fixed';
@@ -8803,6 +8908,55 @@ interface ThemeColorPickerCommit {
8803
8908
  */
8804
8909
  declare function gradientStopColorCommitPatch(commit: ThemeColorPickerCommit): Pick<GradientStop$1, 'color' | 'colorRef'>;
8805
8910
 
8911
+ /**
8912
+ * `pslz:zmPr`/`psezm:zmPr`/`psuz:zmPr`'s `@returnToParent` and
8913
+ * `@transitionDur` (MS-PPTX `CT_ZoomObjectProperties`): what a Slide Zoom /
8914
+ * Section Zoom / Summary Zoom tile does to slide-show PLAYBACK, not just what
8915
+ * core parses and round-trips.
8916
+ *
8917
+ * `returnToParent`: once the show advances past the LAST slide of the
8918
+ * zoom's target (a single slide for a Slide Zoom, or the whole contiguous
8919
+ * section for a Section Zoom / Summary Zoom tile), a forward "next slide"
8920
+ * step jumps back to the slide the zoom was clicked FROM instead of
8921
+ * continuing linearly through the deck. This module tracks that pending
8922
+ * "excursion" as a plain value so every binding's own navigation hook stores
8923
+ * it in whatever reactive primitive it already uses (a ref, a signal, a
8924
+ * store field) and asks {@link resolveForwardSlideWithZoomReturn} what the
8925
+ * next slide is on every forward step.
8926
+ *
8927
+ * `transitionDur`: the zoom's own transition length, independent of
8928
+ * whatever `<p:transition>` the destination slide is authored with.
8929
+ * PowerPoint plays a `zoom` transition (see `slide-transition-css.ts`) for a
8930
+ * live Zoom link; {@link buildZoomTransitionOverride} produces the synthetic
8931
+ * `PptxSlideTransition` a binding's transition executor should play INSTEAD
8932
+ * of the destination's own, only for the duration of the click/return, so
8933
+ * this is additive and reversible: the destination slide's own transition
8934
+ * still plays normally on any later, non-zoom visit.
8935
+ *
8936
+ * @module render/zoom-return-navigation
8937
+ */
8938
+
8939
+ /**
8940
+ * The navigation-relevant fields of a Zoom click target, independent of
8941
+ * `zoomType`.
8942
+ *
8943
+ * `returnToParent` is already resolved to its EFFECTIVE value here (not the
8944
+ * raw, possibly-`undefined` `ZoomPptxElement`/`SummaryZoomTarget` field):
8945
+ * `CT_ZoomObjectProperties/@returnToParent` (MS-PPTX) is `<xsd:attribute
8946
+ * name="returnToParent" type="xsd:boolean" use="optional" default="true"/>`,
8947
+ * so an ABSENT attribute means true, not false. Core deliberately stores
8948
+ * `undefined` rather than fabricating `true` (so a round-trip never invents
8949
+ * an attribute the source never had), which makes `Boolean(x)` the wrong way
8950
+ * to read it; the two `resolve*NavigationTarget` functions below are the only
8951
+ * place that distinction should be made.
8952
+ */
8953
+ interface ZoomNavigationTarget {
8954
+ targetSlideIndex: number;
8955
+ targetSectionId?: string;
8956
+ returnToParent: boolean;
8957
+ transitionDurationMs?: number;
8958
+ }
8959
+
8806
8960
  /**
8807
8961
  * Command-search data for the PowerPoint-style "Tell me what you want to do"
8808
8962
  * search bar. Provides searchable command entries grouped by category, each
@@ -11634,12 +11788,40 @@ declare class EditorStateService {
11634
11788
  private clipboard;
11635
11789
  /** Whether the clipboard holds copied elements (enables paste). */
11636
11790
  readonly hasClipboard: _angular_core.WritableSignal<boolean>;
11791
+ /** Ctrl/Cmd+Alt+V dialog visibility. */
11792
+ readonly isPasteSpecialDialogOpen: _angular_core.WritableSignal<boolean>;
11793
+ /** The Paste Options toolbar's target: the elements a normal paste just inserted. */
11794
+ readonly pasteOptionsToolbar: _angular_core.WritableSignal<{
11795
+ id: string;
11796
+ sourceClone: PptxElement;
11797
+ }[] | null>;
11637
11798
  /** Copy the selected elements to the in-memory clipboard. */
11638
11799
  copySelected(slideIndex: number): void;
11639
11800
  /** Copy then delete the selected elements. */
11640
11801
  cutSelected(slideIndex: number): void;
11641
11802
  /** Paste clipboard elements onto a slide (offset + fresh ids) and select them. */
11642
11803
  paste(slideIndex: number): void;
11804
+ /**
11805
+ * Paste Special (Ctrl+Alt+V) / the dialog's OK: paste the clipboard with one
11806
+ * of the four PowerPoint formats already applied, and hand back each
11807
+ * inserted element's id alongside its own pristine "Keep Source Formatting"
11808
+ * clone, so the Paste Options toolbar can re-derive from it non-cumulatively.
11809
+ */
11810
+ pasteWithFormat(slideIndex: number, format: PasteSpecialFormat): {
11811
+ id: string;
11812
+ sourceClone: PptxElement;
11813
+ }[];
11814
+ /**
11815
+ * Re-derive already-pasted elements (the Paste Options toolbar) from their
11816
+ * own pristine source clones. Non-cumulative: every choice starts over from
11817
+ * the clone `pasteWithFormat` returned, matching PowerPoint's own toolbar.
11818
+ * "Picture" is handled by the caller (it needs a DOM rasterize step this
11819
+ * service does not perform) via a plain `updateElement` call instead.
11820
+ */
11821
+ reformatPasted(slideIndex: number, entries: readonly {
11822
+ id: string;
11823
+ sourceClone: PptxElement;
11824
+ }[], format: Exclude<PasteSpecialFormat, 'picture'>): void;
11643
11825
  /** Append a new element to a slide (records history) and select it. */
11644
11826
  addElement(slideIndex: number, element: PptxElement): void;
11645
11827
  /** Patch slide-level properties (background, notes, …); one history entry. */
@@ -13700,7 +13882,7 @@ declare class ViewerInspectorPanelService {
13700
13882
  /** Inspector content, but null on mobile once the user has swiped it away. */
13701
13883
  readonly visibleInspectorKind: _angular_core.Signal<InspectorContent>;
13702
13884
  /** Accessible-label translation key for the inspector host, by active content. */
13703
- readonly inspectorLabel: _angular_core.Signal<"" | "pptx.toolbar.comments" | "pptx.accessibility.title" | "pptx.viewer.digitalSignatures" | "pptx.selectionPane.title" | "pptx.inspector.properties">;
13885
+ readonly inspectorLabel: _angular_core.Signal<"" | "pptx.accessibility.title" | "pptx.viewer.digitalSignatures" | "pptx.toolbar.comments" | "pptx.selectionPane.title" | "pptx.inspector.properties">;
13704
13886
  /**
13705
13887
  * Dismiss the mobile bottom-sheet inspector (backdrop tap or a past-threshold
13706
13888
  * swipe-down): hide the host until reopened and clear any explicit tool panel.
@@ -14538,6 +14720,12 @@ declare class PowerPointViewerComponent implements PowerPointViewerAPI {
14538
14720
  protected onOpenSlideSize(): void;
14539
14721
  protected openMasterView(): void;
14540
14722
  protected closeMasterView(): void;
14723
+ /**
14724
+ * View > Normal: leave whichever alternate view (slide sorter, reading,
14725
+ * outline, master) is currently open and return to the ordinary editing
14726
+ * canvas. The ribbon's "Normal" pill had no handler at all before this.
14727
+ */
14728
+ protected goToNormalView(): void;
14541
14729
  protected selectMasterTab(tab: MasterViewTab): void;
14542
14730
  /**
14543
14731
  * `ppaction://customshow?id=<id>[&return=true]` clicked during a running
@@ -14684,6 +14872,27 @@ declare class PowerPointViewerComponent implements PowerPointViewerAPI {
14684
14872
  * cleared for the same reason.
14685
14873
  */
14686
14874
  protected onContextMenuAddComment(): void;
14875
+ /** Context-menu "Edit Text": same entry point a double-click uses. */
14876
+ protected onContextMenuEditText(): void;
14877
+ /**
14878
+ * Context-menu "Save as Picture": rasterise the right-clicked element's
14879
+ * own DOM node (found the same way the canvas resolves a click target) and
14880
+ * download it, reusing the same raster/download pipeline every other
14881
+ * export button in this binding already goes through.
14882
+ */
14883
+ protected onContextMenuSaveAsPicture(): void;
14884
+ /**
14885
+ * Paste Special dialog OK: paste the clipboard with `format` applied. For
14886
+ * "Picture", the plain clone is inserted first (there is nothing to
14887
+ * rasterize before it is mounted); this waits one frame, then rasterises
14888
+ * each inserted node and replaces it, the same DOM lookup/raster pipeline
14889
+ * "Save as Picture" already uses.
14890
+ */
14891
+ protected onPasteSpecialConfirm(format: PasteSpecialFormat): void;
14892
+ /** Paste Options toolbar: re-derive the already-pasted element(s) from their own pristine clone. */
14893
+ protected onPasteOptionsChoose(format: PasteSpecialFormat): void;
14894
+ /** Rasterise the mounted node for `elementId` and replace it with a picture, or no-op if unmounted. */
14895
+ private rasterizePastedNodeAsPicture;
14687
14896
  /** Canvas marker click: bring the comments panel on screen (same as above). */
14688
14897
  protected onCommentMarkerClick(): void;
14689
14898
  /** Get the IDs of currently selected elements. */
@@ -15066,6 +15275,15 @@ interface KeyboardHost {
15066
15275
  readonly goPrev?: () => void;
15067
15276
  /** Go forward one slide. */
15068
15277
  readonly goNext?: () => void;
15278
+ /**
15279
+ * An inline text or table-cell editor is open. Needed so the text-command
15280
+ * chords (alignment, font-size ladder, format painter, hyperlink, clear
15281
+ * formatting) can survive `mapEditorKey`'s typing gate exactly as they do in
15282
+ * the other four bindings, instead of only ever firing off a selection.
15283
+ */
15284
+ readonly isEditingText?: () => boolean;
15285
+ /** The single selected element, the target of every text/format command. */
15286
+ readonly selectedElement?: () => PptxElement | null;
15069
15287
  }
15070
15288
  declare class ViewerKeyboardService {
15071
15289
  private readonly editor;
@@ -15073,10 +15291,19 @@ declare class ViewerKeyboardService {
15073
15291
  private readonly formatPainter;
15074
15292
  private readonly findReplace;
15075
15293
  private readonly presentationMode;
15294
+ private readonly docProperties;
15295
+ private readonly canvasEditing;
15076
15296
  private host;
15077
15297
  /** Wire the host accessors (called once from the component constructor). */
15078
15298
  bind(host: KeyboardHost): void;
15079
15299
  handleKeyDown(event: KeyboardEvent): void;
15300
+ private applyTextPatch;
15301
+ /** Ctrl+Shift+V: apply the copied format to the current selection (no click needed). */
15302
+ private pasteFormat;
15303
+ /** Ctrl+K, gated on a selection exactly like the ribbon's hyperlink button. */
15304
+ private openHyperlink;
15305
+ /** Tab / Shift+Tab: move the selection to the next/previous element in z-order. */
15306
+ private cycleSelection;
15080
15307
  /**
15081
15308
  * Ctrl/Cmd+F toggles the find bar. Angular has shipped the bar since the
15082
15309
  * find-replace port but had no shortcut for it at all, because the chord was
@@ -15737,6 +15964,7 @@ declare class RibbonComponent {
15737
15964
  /** Overflow menu: opens the font-embedding dialog. */
15738
15965
  readonly fontEmbedding: _angular_core.OutputEmitterRef<void>;
15739
15966
  readonly link: _angular_core.OutputEmitterRef<void>;
15967
+ readonly goToNormalView: _angular_core.OutputEmitterRef<void>;
15740
15968
  readonly openSorter: _angular_core.OutputEmitterRef<void>;
15741
15969
  /** View tab > Reading View: the deck full-window, not the slide show. */
15742
15970
  readonly openReadingView: _angular_core.OutputEmitterRef<void>;
@@ -15818,7 +16046,7 @@ declare class RibbonComponent {
15818
16046
  /** Forward the Review proofing toggle to the viewer-owned live state. */
15819
16047
  protected setSpellCheck(enabled: boolean): void;
15820
16048
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonComponent, never>;
15821
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonComponent, "pptx-ribbon", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "zoomPercent": { "alias": "zoomPercent"; "required": false; "isSignal": true; }; "formatPainterActive": { "alias": "formatPainterActive"; "required": false; "isSignal": true; }; "canActivateFormatPainter": { "alias": "canActivateFormatPainter"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "hasMacros": { "alias": "hasMacros"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showRulers": { "alias": "showRulers"; "required": false; "isSignal": true; }; "showGuides": { "alias": "showGuides"; "required": false; "isSignal": true; }; "snapToGrid": { "alias": "snapToGrid"; "required": false; "isSignal": true; }; "snapToShape": { "alias": "snapToShape"; "required": false; "isSignal": true; }; "eyedropperActive": { "alias": "eyedropperActive"; "required": false; "isSignal": true; }; "themeGalleryOpen": { "alias": "themeGalleryOpen"; "required": false; "isSignal": true; }; "sidebarCollapsed": { "alias": "sidebarCollapsed"; "required": false; "isSignal": true; }; "inspectorOpen": { "alias": "inspectorOpen"; "required": false; "isSignal": true; }; "commentsOpen": { "alias": "commentsOpen"; "required": false; "isSignal": true; }; "commentCount": { "alias": "commentCount"; "required": false; "isSignal": true; }; "findOpen": { "alias": "findOpen"; "required": false; "isSignal": true; }; "collabConnected": { "alias": "collabConnected"; "required": false; "isSignal": true; }; "connectedCount": { "alias": "connectedCount"; "required": false; "isSignal": true; }; "spellCheckEnabled": { "alias": "spellCheckEnabled"; "required": false; "isSignal": true; }; "showSubtitles": { "alias": "showSubtitles"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; "aiEnabled": { "alias": "aiEnabled"; "required": false; "isSignal": true; }; "aiPanelOpen": { "alias": "aiPanelOpen"; "required": false; "isSignal": true; }; "accountAuth": { "alias": "accountAuth"; "required": false; "isSignal": true; }; "activeSlideHidden": { "alias": "activeSlideHidden"; "required": false; "isSignal": true; }; }, { "prev": "prev"; "next": "next"; "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "zoomReset": "zoomReset"; "find": "find"; "present": "present"; "presenter": "presenter"; "record": "record"; "presentFromBeginning": "presentFromBeginning"; "rehearseTimings": "rehearseTimings"; "toggleSubtitles": "toggleSubtitles"; "openSubtitleSettings": "openSubtitleSettings"; "recordFromBeginning": "recordFromBeginning"; "recordFromCurrent": "recordFromCurrent"; "spellCheckChange": "spellCheckChange"; "share": "share"; "broadcast": "broadcast"; "openFile": "openFile"; "openRecentFile": "openRecentFile"; "createPresentation": "createPresentation"; "save": "save"; "savePpsx": "savePpsx"; "savePptm": "savePptm"; "savePpt": "savePpt"; "toggleSidebar": "toggleSidebar"; "toggleAiPanel": "toggleAiPanel"; "signatures": "signatures"; "info": "info"; "print": "print"; "comments": "comments"; "a11y": "a11y"; "shortcuts": "shortcuts"; "versionHistory": "versionHistory"; "passwordProtection": "passwordProtection"; "fontEmbedding": "fontEmbedding"; "link": "link"; "openSorter": "openSorter"; "openReadingView": "openReadingView"; "openOutlineView": "openOutlineView"; "openMasterView": "openMasterView"; "toggleNotes": "toggleNotes"; "toggleFormatPainter": "toggleFormatPainter"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "exportJson": "exportJson"; "copySlideAsImage": "copySlideAsImage"; "replace": "replace"; "toggleInspector": "toggleInspector"; "openAnimationPanel": "openAnimationPanel"; "drawToolChange": "drawToolChange"; "toggleThemeGallery": "toggleThemeGallery"; "editTheme": "editTheme"; "openSlideSize": "openSlideSize"; "toggleGrid": "toggleGrid"; "toggleRulers": "toggleRulers"; "toggleGuides": "toggleGuides"; "toggleSelectionPane": "toggleSelectionPane"; "openCustomShows": "openCustomShows"; "toggleSnapToGrid": "toggleSnapToGrid"; "toggleSnapToShape": "toggleSnapToShape"; "addGuide": "addGuide"; "zoomToFit": "zoomToFit"; "toggleEyedropper": "toggleEyedropper"; "openSmartArtDialog": "openSmartArtDialog"; "openTemplateGallery": "openTemplateGallery"; "openEquationDialog": "openEquationDialog"; "openSetUpSlideShow": "openSetUpSlideShow"; "toggleHideSlide": "toggleHideSlide"; "openCompare": "openCompare"; "openPassword": "openPassword"; "openFontEmbedding": "openFontEmbedding"; "openVersionHistory": "openVersionHistory"; "openShortcuts": "openShortcuts"; "openSettings": "openSettings"; }, never, never, true, never>;
16049
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonComponent, "pptx-ribbon", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "zoomPercent": { "alias": "zoomPercent"; "required": false; "isSignal": true; }; "formatPainterActive": { "alias": "formatPainterActive"; "required": false; "isSignal": true; }; "canActivateFormatPainter": { "alias": "canActivateFormatPainter"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "hasMacros": { "alias": "hasMacros"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showRulers": { "alias": "showRulers"; "required": false; "isSignal": true; }; "showGuides": { "alias": "showGuides"; "required": false; "isSignal": true; }; "snapToGrid": { "alias": "snapToGrid"; "required": false; "isSignal": true; }; "snapToShape": { "alias": "snapToShape"; "required": false; "isSignal": true; }; "eyedropperActive": { "alias": "eyedropperActive"; "required": false; "isSignal": true; }; "themeGalleryOpen": { "alias": "themeGalleryOpen"; "required": false; "isSignal": true; }; "sidebarCollapsed": { "alias": "sidebarCollapsed"; "required": false; "isSignal": true; }; "inspectorOpen": { "alias": "inspectorOpen"; "required": false; "isSignal": true; }; "commentsOpen": { "alias": "commentsOpen"; "required": false; "isSignal": true; }; "commentCount": { "alias": "commentCount"; "required": false; "isSignal": true; }; "findOpen": { "alias": "findOpen"; "required": false; "isSignal": true; }; "collabConnected": { "alias": "collabConnected"; "required": false; "isSignal": true; }; "connectedCount": { "alias": "connectedCount"; "required": false; "isSignal": true; }; "spellCheckEnabled": { "alias": "spellCheckEnabled"; "required": false; "isSignal": true; }; "showSubtitles": { "alias": "showSubtitles"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; "aiEnabled": { "alias": "aiEnabled"; "required": false; "isSignal": true; }; "aiPanelOpen": { "alias": "aiPanelOpen"; "required": false; "isSignal": true; }; "accountAuth": { "alias": "accountAuth"; "required": false; "isSignal": true; }; "activeSlideHidden": { "alias": "activeSlideHidden"; "required": false; "isSignal": true; }; }, { "prev": "prev"; "next": "next"; "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "zoomReset": "zoomReset"; "find": "find"; "present": "present"; "presenter": "presenter"; "record": "record"; "presentFromBeginning": "presentFromBeginning"; "rehearseTimings": "rehearseTimings"; "toggleSubtitles": "toggleSubtitles"; "openSubtitleSettings": "openSubtitleSettings"; "recordFromBeginning": "recordFromBeginning"; "recordFromCurrent": "recordFromCurrent"; "spellCheckChange": "spellCheckChange"; "share": "share"; "broadcast": "broadcast"; "openFile": "openFile"; "openRecentFile": "openRecentFile"; "createPresentation": "createPresentation"; "save": "save"; "savePpsx": "savePpsx"; "savePptm": "savePptm"; "savePpt": "savePpt"; "toggleSidebar": "toggleSidebar"; "toggleAiPanel": "toggleAiPanel"; "signatures": "signatures"; "info": "info"; "print": "print"; "comments": "comments"; "a11y": "a11y"; "shortcuts": "shortcuts"; "versionHistory": "versionHistory"; "passwordProtection": "passwordProtection"; "fontEmbedding": "fontEmbedding"; "link": "link"; "goToNormalView": "goToNormalView"; "openSorter": "openSorter"; "openReadingView": "openReadingView"; "openOutlineView": "openOutlineView"; "openMasterView": "openMasterView"; "toggleNotes": "toggleNotes"; "toggleFormatPainter": "toggleFormatPainter"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "exportJson": "exportJson"; "copySlideAsImage": "copySlideAsImage"; "replace": "replace"; "toggleInspector": "toggleInspector"; "openAnimationPanel": "openAnimationPanel"; "drawToolChange": "drawToolChange"; "toggleThemeGallery": "toggleThemeGallery"; "editTheme": "editTheme"; "openSlideSize": "openSlideSize"; "toggleGrid": "toggleGrid"; "toggleRulers": "toggleRulers"; "toggleGuides": "toggleGuides"; "toggleSelectionPane": "toggleSelectionPane"; "openCustomShows": "openCustomShows"; "toggleSnapToGrid": "toggleSnapToGrid"; "toggleSnapToShape": "toggleSnapToShape"; "addGuide": "addGuide"; "zoomToFit": "zoomToFit"; "toggleEyedropper": "toggleEyedropper"; "openSmartArtDialog": "openSmartArtDialog"; "openTemplateGallery": "openTemplateGallery"; "openEquationDialog": "openEquationDialog"; "openSetUpSlideShow": "openSetUpSlideShow"; "toggleHideSlide": "toggleHideSlide"; "openCompare": "openCompare"; "openPassword": "openPassword"; "openFontEmbedding": "openFontEmbedding"; "openVersionHistory": "openVersionHistory"; "openShortcuts": "openShortcuts"; "openSettings": "openSettings"; }, never, never, true, never>;
15822
16050
  }
15823
16051
 
15824
16052
  /** The eight resize-handle positions around a selection box. */
@@ -17605,6 +17833,18 @@ declare class InkRendererComponent {
17605
17833
  * fallback so the saved file is never nameless.
17606
17834
  */
17607
17835
  declare function getOleDownloadFileName(el: OlePptxElement): string;
17836
+ /**
17837
+ * Whether {@link OleRendererComponent}'s Download / Open action bar may
17838
+ * render at all, mirroring `media-renderer-helpers.ts`'s `mediaSurfaceFor`.
17839
+ *
17840
+ * A still of a slide (thumbnail rail, presenter console panes, export
17841
+ * raster) renders this component INSIDE a
17842
+ * `<button aria-label="Go to slide N">`, so the action bar's own `<button>`
17843
+ * would otherwise be invalid, un-clickable nested-button markup; the live
17844
+ * presentation stage never offers element-level browser chrome either. See
17845
+ * the shared `oleActionsVisible` decision.
17846
+ */
17847
+ declare function oleActionsVisibleFor(interactive: boolean, presenting: boolean): boolean;
17608
17848
  /** A single descriptive info row for the OLE caption / overlay. */
17609
17849
  interface OleInfoRow {
17610
17850
  /** Stable key for `@for` tracking (e.g. `'type'`, `'file'`). */
@@ -17678,6 +17918,21 @@ declare function buildOleActionModel(el: OlePptxElement, translate?: TranslateSe
17678
17918
  declare class OleRendererComponent {
17679
17919
  /** The element to render. Must be `type === 'ole'`. */
17680
17920
  readonly element: _angular_core.InputSignal<PptxElement>;
17921
+ /** True only on the main editable canvas; see `showActions`. */
17922
+ readonly interactive: _angular_core.InputSignal<boolean>;
17923
+ /** True only on the live presentation stage; see `showActions`. */
17924
+ readonly presenting: _angular_core.InputSignal<boolean>;
17925
+ /**
17926
+ * Whether the Download / Open action bar may render at all.
17927
+ *
17928
+ * A still of a slide (thumbnail rail, presenter console panes, export
17929
+ * raster) renders this component INSIDE a
17930
+ * `<button aria-label="Go to slide N">`, so the action bar's own
17931
+ * `<button>` would otherwise be invalid, un-clickable nested-button
17932
+ * markup; the live presentation stage never offers element-level browser
17933
+ * chrome either.
17934
+ */
17935
+ readonly showActions: _angular_core.Signal<boolean>;
17681
17936
  /** Narrowed OLE element: undefined when the input is not `type === 'ole'`. */
17682
17937
  private readonly ole;
17683
17938
  /** Resolved application type (excel / word / pdf / visio / mathtype / unknown). */
@@ -17726,7 +17981,7 @@ declare class OleRendererComponent {
17726
17981
  */
17727
17982
  openEmbedded(): void;
17728
17983
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<OleRendererComponent, never>;
17729
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<OleRendererComponent, "pptx-ole-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
17984
+ 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>;
17730
17985
  }
17731
17986
 
17732
17987
  /**
@@ -17990,7 +18245,7 @@ declare class ZoomRendererComponent {
17990
18245
  protected readonly interactive: _angular_core.Signal<boolean>;
17991
18246
  /** Navigate to the zoom target; no-op when the tile is not interactive. */
17992
18247
  private activate;
17993
- protected activateSummary(event: Event, target: number): void;
18248
+ protected activateSummary(event: Event, tile: SummaryZoomTileView): void;
17994
18249
  protected onClick(event: MouseEvent): void;
17995
18250
  protected onKeydown(event: KeyboardEvent): void;
17996
18251
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZoomRendererComponent, never>;
@@ -18434,6 +18689,12 @@ declare class PresentationShowNavigator {
18434
18689
  private autoAdvanceTimer;
18435
18690
  /** Deck index before each committed change; backs {@link goToLastViewed}. */
18436
18691
  private previousIndex;
18692
+ /**
18693
+ * A pending "return to zoom" excursion armed by {@link navigateToZoomTarget},
18694
+ * consumed by a forward `navigate('next')` once the show reaches the end of
18695
+ * the target's range. See `pptx-viewer-shared`'s `zoom-return-navigation`.
18696
+ */
18697
+ private zoomExcursion;
18437
18698
  constructor(deps: ShowNavigatorDeps);
18438
18699
  /** Consume the "entered backward" flag: reads and clears it in one call. */
18439
18700
  takePendingCompletedEntry(): boolean;
@@ -18459,11 +18720,26 @@ declare class PresentationShowNavigator {
18459
18720
  clearAutoAdvance(): void;
18460
18721
  navigate(direction: ShowDirection): void;
18461
18722
  /**
18462
- * Jump directly to `index` (clamped). Used by zoom tiles and by on-slide
18463
- * Action Settings (`ppaction://hlinksldjump`); ENTERS the target slide, so
18464
- * PowerPoint plays its transition exactly as a forward step does.
18723
+ * Jump directly to `index` (clamped). Used by on-slide Action Settings
18724
+ * (`ppaction://hlinksldjump`) and by {@link navigateToZoomTarget}; ENTERS
18725
+ * the target slide, so PowerPoint plays its transition exactly as a forward
18726
+ * step does.
18727
+ *
18728
+ * @param transitionOverride Play this transition INSTEAD of the
18729
+ * destination's own authored `<p:transition>`. Set by a Slide Zoom /
18730
+ * Section Zoom / Summary Zoom navigation that authored its own
18731
+ * `zmPr/@transitionDur` (see `buildZoomTransitionOverride`).
18465
18732
  */
18466
- goToSlide(index: number): void;
18733
+ goToSlide(index: number, transitionOverride?: PptxSlideTransition): void;
18734
+ /**
18735
+ * Handle a Slide Zoom / Section Zoom / Summary Zoom tile click: navigates
18736
+ * to the target slide, playing the zoom's own `zmPr/@transitionDur` when
18737
+ * authored, and (when `returnToParent` is set) arms an excursion so the
18738
+ * next forward `navigate('next')` past the target's range returns to the
18739
+ * slide the zoom was clicked from instead of continuing linearly through
18740
+ * the deck.
18741
+ */
18742
+ navigateToZoomTarget(target: ZoomNavigationTarget): void;
18467
18743
  /**
18468
18744
  * The single place a slide change becomes visible: set the transition, move
18469
18745
  * the index, retarget the annotation layer, and tell the host.
@@ -19464,6 +19740,8 @@ declare class SlideTransitionCardComponent {
19464
19740
  protected readonly morphOption: _angular_core.Signal<pptx_viewer_core.PptxMorphOption>;
19465
19741
  /** Compass tokens for the current type, or undefined when it takes none. */
19466
19742
  protected readonly directionTokens: _angular_core.Signal<readonly string[] | undefined>;
19743
+ protected readonly patternOptions: _angular_core.Signal<readonly string[] | undefined>;
19744
+ protected readonly hasThruBlk: _angular_core.Signal<boolean>;
19467
19745
  protected readonly orientation: _angular_core.Signal<pptx_viewer_core.PptxSplitOrientation>;
19468
19746
  protected readonly spokes: _angular_core.Signal<number>;
19469
19747
  protected readonly durationMs: _angular_core.Signal<number>;
@@ -19471,6 +19749,8 @@ declare class SlideTransitionCardComponent {
19471
19749
  protected onTypeChange(event: Event): void;
19472
19750
  protected onDirection(direction: string): void;
19473
19751
  protected onOrientation(orient: 'horz' | 'vert'): void;
19752
+ protected onPattern(pattern: string): void;
19753
+ protected onThruBlk(thruBlk: boolean): void;
19474
19754
  protected onSpokes(event: Event): void;
19475
19755
  protected onDuration(event: Event): void;
19476
19756
  protected onSpeed(event: Event): void;
@@ -20443,12 +20723,6 @@ declare const EMPHASIS_PRESETS: ReadonlyArray<{
20443
20723
  label: string;
20444
20724
  labelKey: string;
20445
20725
  }>;
20446
- /** Trigger options for the trigger selector. */
20447
- declare const TRIGGER_OPTIONS: ReadonlyArray<{
20448
- value: PptxAnimationTrigger;
20449
- label: string;
20450
- labelKey: string;
20451
- }>;
20452
20726
  /** Timing curve options. */
20453
20727
  declare const TIMING_CURVE_OPTIONS: ReadonlyArray<{
20454
20728
  value: PptxAnimationTimingCurve;
@@ -20545,7 +20819,6 @@ declare class AnimationAuthorPanelComponent {
20545
20819
  }[];
20546
20820
  protected readonly triggerOptions: readonly {
20547
20821
  value: pptx_viewer_core.PptxAnimationTrigger;
20548
- label: string;
20549
20822
  labelKey: string;
20550
20823
  }[];
20551
20824
  protected readonly timingCurveOptions: readonly {
@@ -21040,9 +21313,20 @@ declare class EditorContextMenuComponent {
21040
21313
  readonly editHyperlink: _angular_core.OutputEmitterRef<void>;
21041
21314
  /** "Add Comment": open the right-docked comments panel, as React does. */
21042
21315
  readonly addComment: _angular_core.OutputEmitterRef<void>;
21316
+ /**
21317
+ * "Edit Text": the host owns the same inline-text-edit entry point a
21318
+ * double-click uses, so the menu just asks for it on the current element.
21319
+ */
21320
+ readonly editText: _angular_core.OutputEmitterRef<void>;
21321
+ /**
21322
+ * "Save as Picture": the host owns the DOM lookup + html2canvas fallback
21323
+ * driver this needs, so the menu asks for it on the current element.
21324
+ */
21325
+ readonly saveAsPicture: _angular_core.OutputEmitterRef<void>;
21043
21326
  protected readonly editor: EditorStateService;
21044
21327
  private readonly tableSelection;
21045
21328
  private readonly host;
21329
+ private readonly inspectorPanel;
21046
21330
  /**
21047
21331
  * The table element + cell selection the menu should act on, or null when the
21048
21332
  * current selection is not a single table with a selected cell. Drives the
@@ -21069,13 +21353,21 @@ declare class EditorContextMenuComponent {
21069
21353
  onDocumentPointerDown(event: PointerEvent): void;
21070
21354
  /** Run the chosen command, then close: every item closes the menu. */
21071
21355
  protected run(id: ContextMenuCommandId): void;
21356
+ /**
21357
+ * "Edit Alt Text" / "Size and Position" / "Format Shape": open the
21358
+ * properties tab (clearing any explicit tool panel so the element view
21359
+ * shows through) and, once the panel has re-rendered, scroll the matching
21360
+ * inspector section into view. A binding-wide no-op when the section has
21361
+ * not been tagged, so this never fails loudly.
21362
+ */
21363
+ private focusInspectorSection;
21072
21364
  /**
21073
21365
  * Run a pure table transform on the current table context and commit the
21074
21366
  * result through the editor (one undoable history entry).
21075
21367
  */
21076
21368
  private applyTable;
21077
21369
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EditorContextMenuComponent, never>;
21078
- 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>;
21370
+ 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>;
21079
21371
  }
21080
21372
 
21081
21373
  /**
@@ -22556,7 +22848,7 @@ declare class AccountPageComponent {
22556
22848
  readonly accountAuth: _angular_core.InputSignal<AccountAuthConfig | undefined>;
22557
22849
  private readonly translate;
22558
22850
  protected readonly swatches: readonly string[];
22559
- protected readonly version = "4.1.6";
22851
+ protected readonly version = "4.3.0";
22560
22852
  protected readonly profile: _angular_core.WritableSignal<ViewerProfile>;
22561
22853
  protected readonly initial: _angular_core.Signal<string>;
22562
22854
  protected readonly usage: _angular_core.WritableSignal<LocalStorageUsageSummary | null>;
@@ -23369,9 +23661,9 @@ declare function resolvePresenterNotes(slide: PptxSlide | undefined): PresenterN
23369
23661
  * repo's per-file line budget.
23370
23662
  *
23371
23663
  * Unlike `TextWarpPathDef` (a shared-baseline SVG `<textPath>`), glyph HEIGHT
23372
- * varies with horizontal position here: each glyph carries its own `matrix`
23373
- * transform, computed by `buildGlyphEnvelope` (`pptx-viewer-shared`) from the
23374
- * preset's top/bottom envelope curves sampled across the glyph's own width.
23664
+ * varies with horizontal position here: each glyph carries its own warped
23665
+ * outline path (or, without one, an affine `matrix`), computed once for the
23666
+ * whole block by `buildGlyphEnvelopeBlock` (`pptx-viewer-shared`).
23375
23667
  */
23376
23668
 
23377
23669
  /** One glyph of an envelope-warped (inflate/deflate/can) line. */
@@ -23379,7 +23671,7 @@ interface WarpGlyph {
23379
23671
  readonly char: string;
23380
23672
  readonly x: number;
23381
23673
  readonly y: number;
23382
- /** SVG `matrix(1 b 0 d 0 f)` mapping the nominal band onto the envelope curve. */
23674
+ /** SVG `matrix(a b c d e f)` fit of the envelope mapping over the glyph (fallback only). */
23383
23675
  readonly transform: string;
23384
23676
  readonly fill: string;
23385
23677
  readonly fontWeight: 400 | 700;
@@ -23388,7 +23680,7 @@ interface WarpGlyph {
23388
23680
  readonly fontSize: number;
23389
23681
  /**
23390
23682
  * Present only when this glyph needed more than one rendered piece (see
23391
- * `chooseGlyphSliceCount` in pptx-viewer-shared): a very wide glyph on a
23683
+ * `fitGlyphEnvelopeAffine` in pptx-viewer-shared): a very wide glyph on a
23392
23684
  * strongly-curved envelope, where `transform` alone misses how much the
23393
23685
  * curve bends within the glyph's own width. Absent for an ordinary
23394
23686
  * caption, in which case the template renders exactly one `<text>` with
@@ -23403,11 +23695,11 @@ interface WarpGlyph {
23403
23695
  readonly clipIdPrefix: string;
23404
23696
  /**
23405
23697
  * A warped SVG path `d` for this glyph's ACTUAL outline (see
23406
- * `buildWarpedGlyphOutlinePathD` in pptx-viewer-shared), present only when
23407
- * a real font file was obtainable for this glyph's family/style. When set,
23408
- * the template renders `<path d [fill]>` instead of `<text transform>` /
23409
- * `slices`: exact, since every outline point is already mapped through the
23410
- * envelope curve at its OWN x.
23698
+ * `buildWarpedGlyphOutlinePathD` in pptx-viewer-shared), present whenever
23699
+ * an outline was obtainable (a font file, or a glyph traced from the
23700
+ * browser's own rendering). When set, the template renders
23701
+ * `<path d [fill]>` instead of `<text transform>` / `slices`: exact, since
23702
+ * every outline point is already mapped through the envelope.
23411
23703
  */
23412
23704
  readonly outlinePath?: string;
23413
23705
  }
@@ -23617,10 +23909,11 @@ declare class CanvasFitService {
23617
23909
  }
23618
23910
 
23619
23911
  /**
23620
- * Handler that commits navigation to a zoom element's target slide.
23621
- * Registered by the presentation controller, which owns the active-slide index.
23912
+ * Handler that commits navigation to a zoom's target, applying its own
23913
+ * `zmPr/@transitionDur` and `returnToParent`. Registered by the presentation
23914
+ * controller, which owns the active-slide index.
23622
23915
  */
23623
- type ZoomNavigationHandler = (targetSlideIndex: number) => void;
23916
+ type ZoomNavigationHandler = (target: ZoomNavigationTarget) => void;
23624
23917
  /**
23625
23918
  * ZoomNavigationService: presentation-mode zoom navigation context.
23626
23919
  *
@@ -23644,10 +23937,10 @@ declare class ZoomNavigationService {
23644
23937
  */
23645
23938
  setHandler(handler: ZoomNavigationHandler): void;
23646
23939
  /**
23647
- * Navigate the running presentation to a zoom element's target slide.
23648
- * No-op when no handler has been registered.
23940
+ * Navigate the running presentation to a zoom's target. No-op when no
23941
+ * handler has been registered.
23649
23942
  */
23650
- navigateToZoomTarget(targetSlideIndex: number): void;
23943
+ navigateToZoomTarget(target: ZoomNavigationTarget): void;
23651
23944
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZoomNavigationService, never>;
23652
23945
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
23653
23946
  }
@@ -25117,6 +25410,11 @@ declare class RibbonViewSectionComponent {
25117
25410
  /** Whether dragging snaps to other shapes' edges (active-state styling). */
25118
25411
  readonly snapToShape: _angular_core.InputSignal<boolean>;
25119
25412
  readonly eyedropperActive: _angular_core.InputSignal<boolean>;
25413
+ /**
25414
+ * View > Normal: leave whichever alternate view (slide sorter, reading,
25415
+ * outline, master) is open and return to the ordinary editing canvas.
25416
+ */
25417
+ readonly goToNormalView: _angular_core.OutputEmitterRef<void>;
25120
25418
  readonly openSorter: _angular_core.OutputEmitterRef<void>;
25121
25419
  /** Enter Reading View: the deck full-window, NOT the fullscreen slide show. */
25122
25420
  readonly openReadingView: _angular_core.OutputEmitterRef<void>;
@@ -25133,7 +25431,7 @@ declare class RibbonViewSectionComponent {
25133
25431
  readonly zoomToFit: _angular_core.OutputEmitterRef<void>;
25134
25432
  readonly toggleEyedropper: _angular_core.OutputEmitterRef<void>;
25135
25433
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonViewSectionComponent, never>;
25136
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonViewSectionComponent, "pptx-ribbon-view-section", never, { "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showRulers": { "alias": "showRulers"; "required": false; "isSignal": true; }; "showGuides": { "alias": "showGuides"; "required": false; "isSignal": true; }; "snapToGrid": { "alias": "snapToGrid"; "required": false; "isSignal": true; }; "snapToShape": { "alias": "snapToShape"; "required": false; "isSignal": true; }; "eyedropperActive": { "alias": "eyedropperActive"; "required": false; "isSignal": true; }; }, { "openSorter": "openSorter"; "openReadingView": "openReadingView"; "openOutlineView": "openOutlineView"; "openMasterView": "openMasterView"; "toggleGrid": "toggleGrid"; "toggleRulers": "toggleRulers"; "toggleGuides": "toggleGuides"; "toggleSelectionPane": "toggleSelectionPane"; "toggleSnapToGrid": "toggleSnapToGrid"; "toggleSnapToShape": "toggleSnapToShape"; "addGuide": "addGuide"; "zoomToFit": "zoomToFit"; "toggleEyedropper": "toggleEyedropper"; }, never, never, true, never>;
25434
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonViewSectionComponent, "pptx-ribbon-view-section", never, { "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showRulers": { "alias": "showRulers"; "required": false; "isSignal": true; }; "showGuides": { "alias": "showGuides"; "required": false; "isSignal": true; }; "snapToGrid": { "alias": "snapToGrid"; "required": false; "isSignal": true; }; "snapToShape": { "alias": "snapToShape"; "required": false; "isSignal": true; }; "eyedropperActive": { "alias": "eyedropperActive"; "required": false; "isSignal": true; }; }, { "goToNormalView": "goToNormalView"; "openSorter": "openSorter"; "openReadingView": "openReadingView"; "openOutlineView": "openOutlineView"; "openMasterView": "openMasterView"; "toggleGrid": "toggleGrid"; "toggleRulers": "toggleRulers"; "toggleGuides": "toggleGuides"; "toggleSelectionPane": "toggleSelectionPane"; "toggleSnapToGrid": "toggleSnapToGrid"; "toggleSnapToShape": "toggleSnapToShape"; "addGuide": "addGuide"; "zoomToFit": "zoomToFit"; "toggleEyedropper": "toggleEyedropper"; }, never, never, true, never>;
25137
25435
  }
25138
25436
 
25139
25437
  /**
@@ -25469,6 +25767,19 @@ declare class MediaRendererComponent {
25469
25767
  /** The live `<video>`/`<audio>` node (only one is mounted at a time). */
25470
25768
  private readonly mediaElRef;
25471
25769
  constructor();
25770
+ /** Whether the mounted `<video>`/`<audio>` is currently playing. */
25771
+ private readonly isPlaying;
25772
+ /**
25773
+ * Whether this media element should render the `fullScrn` full-slide
25774
+ * overlay layout right now (issue wave item 10). The trigger is shared so
25775
+ * all five bindings agree on when it fires; only the style application and
25776
+ * play/pause wiring are per-binding.
25777
+ */
25778
+ readonly fullscreenActive: _angular_core.Signal<boolean>;
25779
+ /** Aria label for the full-slide overlay's stop/close button. */
25780
+ readonly stopFullscreenAria: _angular_core.Signal<string>;
25781
+ /** Pauses the mounted media, dropping the overlay back to inline. */
25782
+ stopFullscreen(): void;
25472
25783
  /**
25473
25784
  * Whether to paint the browser's native transport.
25474
25785
  *
@@ -25498,6 +25809,7 @@ declare class MediaRendererComponent {
25498
25809
  /** The shared icon paths and resolved label for whatever the fallback is. */
25499
25810
  readonly fallbackIcon: _angular_core.Signal<readonly string[]>;
25500
25811
  private readonly translate;
25812
+ private readonly sanitizer;
25501
25813
  readonly fallbackLabel: _angular_core.Signal<string>;
25502
25814
  readonly containerStyle: _angular_core.Signal<StyleMap>;
25503
25815
  /**
@@ -25509,6 +25821,23 @@ declare class MediaRendererComponent {
25509
25821
  readonly poster: _angular_core.Signal<string | undefined>;
25510
25822
  /** Playable source URL (inline data URL or resolved archive path). */
25511
25823
  readonly mediaSrc: _angular_core.Signal<string | undefined>;
25824
+ /**
25825
+ * A linked YouTube/Vimeo URL is a web page, not a media stream: `<video
25826
+ * src>` cannot decode it and shows nothing. Resolved to the provider's own
25827
+ * iframe-embeddable URL; a normal linked/embedded media file (`mediaSrc`
25828
+ * resolves to a Blob/data URL) keeps using the native `<video>` below.
25829
+ *
25830
+ * `bypassSecurityTrustResourceUrl` is safe here: `getOnlineVideoEmbed`
25831
+ * only ever builds `https://www.youtube.com/embed/<id>` or
25832
+ * `https://player.vimeo.com/video/<id>`, never an author-controlled raw
25833
+ * string, so there is nothing for Angular's resource-URL sanitizer to
25834
+ * usefully block. Without it Angular strips the binding to `about:blank`.
25835
+ */
25836
+ readonly onlineVideoEmbedUrl: _angular_core.Signal<SafeResourceUrl | undefined>;
25837
+ readonly onlineVideoTitle: _angular_core.Signal<string>;
25838
+ /** Shared Permissions Policy / sandbox values; see `online-video.ts`'s doc comments. */
25839
+ readonly onlineVideoAllow = "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; fullscreen";
25840
+ readonly onlineVideoSandbox = "allow-scripts allow-same-origin allow-popups allow-presentation";
25512
25841
  readonly mediaKind: _angular_core.Signal<PptxMediaType | undefined>;
25513
25842
  readonly loop: _angular_core.Signal<boolean>;
25514
25843
  readonly trimFragment: _angular_core.Signal<string>;
@@ -25931,6 +26260,6 @@ declare function thumbnailHeight(canvasW: number, canvasH: number, thumbW: numbe
25931
26260
  */
25932
26261
  declare function gridColumns(containerW: number, thumbW: number, gap: number, maxCols: number): number;
25933
26262
 
25934
- 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, 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 };
26263
+ 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, 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 };
25935
26264
  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 };
25936
26265
  //# sourceMappingURL=pptx-angular-viewer.d.ts.map