pptx-angular-viewer 2.8.0 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import * as pptx_viewer_core from 'pptx-viewer-core';
2
- import { PptxThemePreset, PptxSlide, PptxElement, ShapeStyle, PptxTextWarpPreset, XmlObject, PptxChartSeries, PptxChartData, PptxElementAnimation, PptxAnimationPreset, PptxAnimationDirection, PptxAnimationRepeatMode, PptxAnimationSequence, PptxAnimationTimingCurve, PptxAnimationTrigger, ParsedTableStyleMap, PptxThemeColorScheme, PptxThemeFontScheme, TablePptxElement, PptxSection, OlePptxElement, TextSegment, TextStyle, PptxTransitionType, SmartArtColorScheme, PptxSmartArtChrome, PptxSmartArtDrawingShape, SmartArtStyle, PptxSmartArtData, PptxEmbeddedFont, SmartArtLayout, AccessibilityIssueSeverity, AccessibilityIssue, AccessibilityIssueType, AccessibilityCheckOptions, InkPptxElement, PptxComment, PptxChartType, PptxTheme, PptxHandler, PptxData, PptxHeaderFooter, PptxSlideMaster, PptxNotesMaster, PptxHandoutMaster, PptxPresentationProperties, PptxCoreProperties, PptxAppProperties, PptxThemeOption, PptxCustomProperty, ParsedSignature, PptxSaveFormat, PptxTableCell, PptxTableCellStyle, PptxTableRow, PptxTableData, PptxCustomShow, MasterViewTab, SvgExportOptions, Model3DPptxElement, ZoomPptxElement, PptxSlideTransition, ChartPptxElement, MediaPptxElement, SmartArtPptxElement, PptxChartDataLabelOptions, PptxChartAxisType, PptxChartAxisFormatting, PptxChartDataPoint, PptxChartTrendline, PptxChartErrBars, SignatureStatus, ElementActionType, ElementAction, PptxImageEffects, MediaBookmark, ColorMapAliasKey, ChartAxisEdit, ChartDataPointLabelEdit, PptxChartLegendPosition, PptxChartStyle, ChartAxisTitleStyleEdit, ChartGridlineStyleEdit, PptxChartMarkerSymbol, PptxSmartArtNode, SmartArtLayoutType, PptxSmartArtNodeStyle, MediaCaptionTrack, PptxMediaType } from 'pptx-viewer-core';
2
+ import { PptxThemePreset, PptxSlide, PptxElement, ShapeStyle, PptxTextWarpPreset, XmlObject, PptxChartSeries, PptxChartData, PptxElementAnimation, PptxAnimationPreset, PptxAnimationDirection, PptxAnimationRepeatMode, PptxAnimationSequence, PptxAnimationTimingCurve, PptxAnimationTrigger, ParsedTableStyleMap, PptxThemeColorScheme, PptxThemeFontScheme, TablePptxElement, PptxSection, OlePptxElement, TextSegment, TextStyle, PptxTransitionType, PptxSlideTransition, SmartArtColorScheme, PptxSmartArtChrome, PptxSmartArtDrawingShape, SmartArtStyle, PptxSmartArtData, PptxEmbeddedFont, SmartArtLayout, AccessibilityIssueSeverity, AccessibilityIssue, AccessibilityIssueType, AccessibilityCheckOptions, ElementActionType, InkPptxElement, PptxComment, PptxChartType, PptxTheme, PptxHandler, PptxData, PptxHeaderFooter, PptxSlideMaster, PptxNotesMaster, PptxHandoutMaster, PptxPresentationProperties, PptxCoreProperties, PptxAppProperties, PptxThemeOption, PptxCustomProperty, PptxTagCollection, ParsedSignature, PptxSaveFormat, PptxTableCell, PptxTableCellStyle, PptxTableRow, PptxTableData, PptxCustomShow, MasterViewTab, SvgExportOptions, Model3DPptxElement, ZoomPptxElement, ChartPptxElement, MediaPptxElement, SmartArtPptxElement, MaterialPresetType, Text3DStyle, BevelPresetType, PptxChartDataLabelOptions, PptxChartAxisType, PptxChartAxisFormatting, PptxChartDataPoint, PptxChartTrendline, PptxChartErrBars, SignatureStatus, ElementAction, PptxImageEffects, MediaBookmark, ColorMapAliasKey, ChartAxisEdit, ChartDataPointLabelEdit, PptxChartLegendPosition, PptxChartStyle, ChartAxisTitleStyleEdit, ChartGridlineStyleEdit, PptxChartMarkerSymbol, PptxSmartArtNode, SmartArtLayoutType, PptxSmartArtNodeStyle, MediaCaptionTrack, PptxMediaType } from 'pptx-viewer-core';
3
3
  export { SWITCHABLE_LAYOUT_TYPES, addSmartArtNode, addSmartArtNodeAsChild, chartDataAddCategory, chartDataAddSeries, chartDataChangeType, chartDataRemoveCategory, chartDataRemoveSeries, chartDataUpdatePoint, demoteSmartArtNode, promoteSmartArtNode, removeSmartArtNode, reorderSmartArtNode, switchSmartArtLayout, updateSmartArtNodeText } from 'pptx-viewer-core';
4
4
  import * as _angular_core from '@angular/core';
5
5
  import { Signal, WritableSignal, OnDestroy, OnInit, OnChanges, SimpleChanges, InjectionToken, Provider } from '@angular/core';
@@ -388,7 +388,7 @@ declare const DEFAULT_STROKE_COLOR = "#1f2937";
388
388
  * The resolution priority mirrors React exactly:
389
389
  *
390
390
  * 1. **Adjustment-aware** — when `shapeAdjustments` exist, consult
391
- * {@link getAdjustmentAwareShapeClipPath} so `pie`, `arc`, `donut`,
391
+ * {@link getAdjustmentAwareClipPath} so `pie`, `arc`, `donut`,
392
392
  * `blockArc`, and wedge callouts respond to their adjustment values.
393
393
  * 2. **Spec-correct preset evaluator** — {@link getShapeClipPathFromPreset}
394
394
  * produces a `path('…')` clip-path for any shape in the preset table.
@@ -396,6 +396,18 @@ declare const DEFAULT_STROKE_COLOR = "#1f2937";
396
396
  * `cloud` / `cloudCallout`.
397
397
  * 4. **Static preset table** — {@link getShapeClipPath} as the final
398
398
  * fallback (core's comprehensive `PRESET_SHAPE_CLIP_PATHS`).
399
+ *
400
+ * Step 1 deliberately calls the DYNAMIC-only entry point
401
+ * ({@link getAdjustmentAwareClipPath}) rather than core's
402
+ * `getAdjustmentAwareShapeClipPath` wrapper. That wrapper falls back to the
403
+ * static, adjustment-BLIND polygon table whenever a shape is outside its
404
+ * 14-shape dynamic set, and returning that at step 1 swallowed the whole rest
405
+ * of the cascade: every preset carrying an authored `a:avLst` adjustment
406
+ * (parallelogram, trapezoid, teardrop, notchedRightArrow, round2SameRect, the
407
+ * arrows…) was clipped with its DEFAULT adjustment instead of its own. A
408
+ * parallelogram authored at `adj="84929"` — a thin diagonal band — rendered as
409
+ * the 25000-default polygon covering ~80% of its box and occluded the text
410
+ * behind it (issue #132).
399
411
  */
400
412
 
401
413
  /**
@@ -511,6 +523,104 @@ declare function buildPatternFillCss(style: ShapeStyle | undefined): {
511
523
  backgroundColor: string;
512
524
  } | undefined;
513
525
 
526
+ /**
527
+ * OOXML gradient fill (`a:gradFill`) → SVG paint server.
528
+ *
529
+ * The CSS resolvers in `fill-style.ts` cover every shape a binding paints as an
530
+ * HTML box (a `background-image` clipped by `clip-path`). Freeform geometry is
531
+ * different: `a:custGeom` shapes are painted as a real SVG `<path>`, and an SVG
532
+ * `fill` attribute cannot take a CSS gradient. Renderers therefore fell back to
533
+ * the parser's *representative* solid colour, so a freeform authored with a
534
+ * left-to-right fade rendered as one flat block and any transparent region of
535
+ * the gradient became opaque (issue #132).
536
+ *
537
+ * This module converts the same structured `ShapeStyle` gradient data into an
538
+ * SVG `<linearGradient>` / `<radialGradient>` descriptor plus the `url(#id)`
539
+ * reference to put in `fill`. It stays framework-agnostic: JSX/template
540
+ * bindings read {@link SvgGradientDef} and emit their own elements, while
541
+ * string-building bindings can use {@link svgGradientMarkup}.
542
+ *
543
+ * Reference: ECMA-376 Part 1, §20.1.8.35 (gradFill) and §20.1.8.49 (path).
544
+ */
545
+
546
+ /** One `<stop>` of an SVG gradient. */
547
+ interface SvgGradientStopDef {
548
+ /** Stop offset as a fraction of the gradient line (0-1). */
549
+ offset: number;
550
+ /** Stop colour as `#RRGGBB`. */
551
+ color: string;
552
+ /** Stop alpha (0-1). Omitted when the stop is fully opaque. */
553
+ opacity?: number;
554
+ }
555
+ /** An SVG `<linearGradient>` in `objectBoundingBox` units. */
556
+ interface SvgLinearGradientDef {
557
+ kind: 'linear';
558
+ id: string;
559
+ x1: number;
560
+ y1: number;
561
+ x2: number;
562
+ y2: number;
563
+ stops: SvgGradientStopDef[];
564
+ }
565
+ /** An SVG `<radialGradient>` in `objectBoundingBox` units. */
566
+ interface SvgRadialGradientDef {
567
+ kind: 'radial';
568
+ id: string;
569
+ cx: number;
570
+ cy: number;
571
+ r: number;
572
+ stops: SvgGradientStopDef[];
573
+ }
574
+ /** Either flavour of SVG gradient produced by {@link buildSvgGradientDef}. */
575
+ type SvgGradientDef = SvgLinearGradientDef | SvgRadialGradientDef;
576
+ /**
577
+ * An SVG `<pattern>` paint server for a preset pattern OUTLINE.
578
+ *
579
+ * The tile is carried as a data-URI `<image>` rather than inline primitives so
580
+ * every binding can render the `<pattern>` from plain attribute bindings, with
581
+ * no raw-markup injection (which Angular's template sanitiser would fight).
582
+ */
583
+ interface SvgPatternDef {
584
+ kind: 'pattern';
585
+ id: string;
586
+ /** Tile size in user-space px; the pattern repeats on this grid. */
587
+ width: number;
588
+ height: number;
589
+ /** `data:image/svg+xml,…` of one rendered tile. */
590
+ href: string;
591
+ }
592
+
593
+ /**
594
+ * Gradient and pattern OUTLINES (`a:ln/a:gradFill`, `a:ln/a:pattFill`).
595
+ *
596
+ * Every binding paints a shape's outline as a CSS `border`, which can only take
597
+ * a single flat colour. A gradient outline was therefore rendered with the
598
+ * parser's averaged `strokeColor` (two-tone came out flat, fade-to-transparent
599
+ * came out opaque), and a patterned outline with the pattern's foreground alone,
600
+ * so the hatching disappeared entirely.
601
+ *
602
+ * CSS has no way to fix either in place - `border-image` ignores `border-radius`
603
+ * and cannot follow a `clip-path` - so the outline is instead stroked as a real
604
+ * SVG path laid over the element, using the shape's own resolved geometry. This
605
+ * module turns an element into everything a binding needs for that overlay; the
606
+ * bindings supply only the ~10 lines of view layer.
607
+ */
608
+
609
+ /** The paint server an outline is stroked with: a gradient or a pattern. */
610
+ type StrokeOutlinePaint = SvgGradientDef | SvgPatternDef;
611
+ /** Everything needed to stroke one shape's outline as an SVG overlay. */
612
+ interface StrokeOutline {
613
+ /** Path data in the element's own pixel space (viewBox `0 0 width height`). */
614
+ d: string;
615
+ /** Paint server to define in `<defs>` and reference from the path's `stroke`. */
616
+ paint: StrokeOutlinePaint;
617
+ strokeWidth: number;
618
+ /** SVG `stroke-dasharray`, or `undefined` for a solid line. */
619
+ dashArray: string | undefined;
620
+ lineCap: 'butt' | 'round' | 'square';
621
+ lineJoin: 'round' | 'bevel' | 'miter';
622
+ }
623
+
514
624
  /**
515
625
  * Stroke/dash normalisation, compound-line box-shadow generation, SVG
516
626
  * dasharray, element transform strings, and drawing-unit parsing. Pure
@@ -2322,6 +2432,57 @@ declare function computeSnap(box: SnapBox, others: readonly SnapBox[], threshold
2322
2432
  */
2323
2433
  declare function snapToGridStep(value: number, step: number): number;
2324
2434
 
2435
+ /**
2436
+ * Ruler tick-generation + constants shared by the React, Vue, and Angular
2437
+ * editors. Pure (unit-testable); each binding renders the generated ticks.
2438
+ */
2439
+ /** CSS pixels per inch at 96 dpi. */
2440
+ declare const PX_PER_INCH = 96;
2441
+ /** CSS pixels per centimetre (96 / 2.54). */
2442
+ declare const PX_PER_CM: number;
2443
+ /** Ruler strip thickness in CSS pixels. */
2444
+ declare const RULER_THICKNESS = 20;
2445
+ /** Font size for numbers on the ruler. */
2446
+ declare const RULER_FONT_SIZE = 10;
2447
+ /** The unit system used for ruler display. */
2448
+ type RulerUnit = 'inches' | 'centimetres';
2449
+ interface Tick {
2450
+ /** Position along the ruler in scaled CSS pixels from the slide origin. */
2451
+ position: number;
2452
+ /** Label to display (empty for minor ticks). */
2453
+ label: string;
2454
+ /** Whether this is a major (numbered) tick. */
2455
+ isMajor: boolean;
2456
+ }
2457
+ /**
2458
+ * Generate tick marks for a single ruler axis.
2459
+ *
2460
+ * @param slideLengthPx The slide dimension (width or height) in CSS px.
2461
+ * @param scale The current editor scale.
2462
+ * @param unit Ruler unit system.
2463
+ */
2464
+ declare function generateTicks(slideLengthPx: number, scale: number, unit: RulerUnit): Tick[];
2465
+ /**
2466
+ * Resolve a drag that started on a ruler strip into a new guide position.
2467
+ *
2468
+ * Shared because every binding that supports "drag off the ruler to create a
2469
+ * guide" needs the exact same three rules, and they are easy to get subtly
2470
+ * wrong per binding: the pointer must have left the strip (otherwise a plain
2471
+ * click on the ruler would drop a guide on the slide edge), the offset is
2472
+ * measured from the strip's own leading edge so the strip thickness has to be
2473
+ * subtracted before un-scaling, and a guide dropped outside the slide is
2474
+ * discarded rather than clamped (PowerPoint drops it too).
2475
+ *
2476
+ * @param pointerOffsetPx Pointer distance, in screen px, from the leading edge
2477
+ * of the ruler strip (top for the horizontal ruler,
2478
+ * left for the vertical one).
2479
+ * @param scale Current editor scale (fitScale * userZoom).
2480
+ * @param slideLengthPx Slide dimension on the guide's axis, unscaled.
2481
+ * @returns The slide-local position in unscaled px, or `null` when the drag
2482
+ * should not create a guide.
2483
+ */
2484
+ declare function rulerDragToGuidePosition(pointerOffsetPx: number, scale: number, slideLengthPx: number): number | null;
2485
+
2325
2486
  /**
2326
2487
  * Render the n-th (1-based) marker for an OOXML auto-numbering scheme.
2327
2488
  *
@@ -3191,6 +3352,32 @@ declare const SLIDE_TRANSITION_KEYFRAMES = "\n/* \u2500\u2500 Fade \u2500\u2500\
3191
3352
  */
3192
3353
  declare function getSlideTransitionAnimations(type: PptxTransitionType, durationMs: number, direction: string | undefined, orient?: string | undefined, spokes?: number | undefined): SlideTransitionAnimations;
3193
3354
 
3355
+ /**
3356
+ * `slide-transition-options` - the pure option catalogues backing every
3357
+ * binding's slide-transition inspector section.
3358
+ *
3359
+ * WHY this lives in shared: the transition type list, the set of types that
3360
+ * pick an orientation instead of a direction, and the arrow glyph/grid tables
3361
+ * used by the direction picker are all plain data with no framework in them.
3362
+ * They previously sat inside `packages/react`, which meant a binding porting
3363
+ * the section had to retype 24 transition values and 12 arrow glyphs by hand,
3364
+ * and any new OOXML transition type silently reached one binding only. React
3365
+ * now re-exports these from here so there is exactly one list to update.
3366
+ *
3367
+ * NOTE: each option keeps both a plain-ASCII `label` (English fallback for
3368
+ * non-i18n consumers) and an `i18nKey` resolvable through each binding's
3369
+ * translator, matching the `{ value, i18nKey }` convention used elsewhere.
3370
+ *
3371
+ * @module render/slide-transition-options
3372
+ */
3373
+
3374
+ /** A selectable slide-transition type with its English label and i18n key. */
3375
+ interface SlideTransitionOptionEntry {
3376
+ value: NonNullable<PptxSlideTransition['type']>;
3377
+ label: string;
3378
+ i18nKey: string;
3379
+ }
3380
+
3194
3381
  /** A node rendered as an SVG rect (rounded or flat). */
3195
3382
  interface RenderedRectNode {
3196
3383
  kind: 'rect';
@@ -3962,6 +4149,43 @@ declare function sampleColorFromSlide(clientX: number, clientY: number): Eyedrop
3962
4149
  */
3963
4150
  declare function pickColorByClickFallback(): Promise<string | null>;
3964
4151
 
4152
+ /**
4153
+ * The one definition of what the canvas context menu contains.
4154
+ *
4155
+ * The five menus were written five times from scratch rather than ported from a
4156
+ * single item list, and their command sets drifted exactly as you would expect:
4157
+ * Vue had no Bring to Front, Angular had no Edit Hyperlink or Group, Svelte had
4158
+ * no table commands at all, and Vanilla had no menu whatsoever. Nothing crashes
4159
+ * when a binding omits a command, so each omission was only ever discoverable by
4160
+ * the user who right-clicked expecting it.
4161
+ *
4162
+ * This module owns the command ids, their labels, their order, the separators
4163
+ * between the groups, and the rules deciding which are offered. A binding
4164
+ * supplies the context (what was clicked, what is selected) and renders the
4165
+ * result; it does not decide what is in the menu. Adding a command here adds it
4166
+ * to all five at once, which is the point.
4167
+ *
4168
+ * The operations themselves stay in the bindings: each already owns clipboard,
4169
+ * z-order, grouping, comments, hyperlink and table mutation, and routing them is
4170
+ * a switch over {@link ContextMenuCommandId}.
4171
+ *
4172
+ * @module render/context-menu-commands
4173
+ */
4174
+ /** Every command a canvas context menu can offer, in no particular order. */
4175
+ 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';
4176
+ /** One rendered entry: a command, plus how it is presented. */
4177
+ interface ContextMenuEntry {
4178
+ id: ContextMenuCommandId;
4179
+ /** i18n key; the binding translates it with its own translator. */
4180
+ labelKey: string;
4181
+ /** Draw a rule above this entry (it opens a new group of commands). */
4182
+ separatorBefore?: boolean;
4183
+ /** Destructive: tinted red, as PowerPoint tints Delete. */
4184
+ danger?: boolean;
4185
+ /** Offered but not usable right now (greyed out, still announced). */
4186
+ disabled?: boolean;
4187
+ }
4188
+
3965
4189
  /**
3966
4190
  * smart-art-presets.ts: the SmartArt insert-gallery catalogue, shared across
3967
4191
  * bindings. Pure data + types; consumed by each binding's insert dialog and
@@ -4146,6 +4370,49 @@ declare function issueTypeLabel(type: AccessibilityIssueType): string;
4146
4370
  */
4147
4371
  declare function issueTrackKey(issue: AccessibilityIssue, index: number): string;
4148
4372
 
4373
+ /**
4374
+ * `element-action-options` - the option catalogue for an element's "Action
4375
+ * Settings" inspector panel (PowerPoint's Insert > Action dialog).
4376
+ *
4377
+ * WHY shared: the mapping from `ElementActionType` to a translation key is
4378
+ * plain data that every binding's action panel needs verbatim, and the two
4379
+ * types that take an extra input (`url`, `slide`) are a rule, not a rendering
4380
+ * decision. Keeping the list here means adding a new action kind updates all
4381
+ * five bindings at once instead of five hand-typed copies drifting apart.
4382
+ *
4383
+ * @module render/element-action-options
4384
+ */
4385
+
4386
+ /** One entry of the action-type select, with its dictionary key. */
4387
+ interface ElementActionOption {
4388
+ value: ElementActionType;
4389
+ labelKey: string;
4390
+ }
4391
+
4392
+ /**
4393
+ * `tag-collections` - pure list surgery for the inspector's Tags section
4394
+ * (`ppt/tags/*.xml`, PowerPoint's programmatic name/value metadata).
4395
+ *
4396
+ * WHY shared: a tag lives at a two-level address (which collection, then which
4397
+ * tag inside it) while the UI shows one flat list, so every add/edit/delete has
4398
+ * to map a flat row back onto the nested model. That mapping is identical in
4399
+ * every binding and is exactly the kind of off-by-one-prone code that must not
4400
+ * be retyped per framework. The functions below are immutable: they return new
4401
+ * arrays so a caller can push the result straight into an undoable commit.
4402
+ *
4403
+ * @module render/tag-collections
4404
+ */
4405
+
4406
+ /** A tag paired with its address inside the nested collection model. */
4407
+ interface FlatTagRow {
4408
+ name: string;
4409
+ value: string;
4410
+ /** Index of the owning collection in the `PptxTagCollection[]`. */
4411
+ colIdx: number;
4412
+ /** Index of the tag inside that collection's `tags` array. */
4413
+ tagIdx: number;
4414
+ }
4415
+
4149
4416
  /**
4150
4417
  * Pure, framework-agnostic helpers for freehand ink drawing, shared by every
4151
4418
  * binding. No framework imports, so these can be unit-tested without TestBed.
@@ -4484,9 +4751,12 @@ interface BackstageTemplate {
4484
4751
  id: string;
4485
4752
  name: string;
4486
4753
  description: string;
4754
+ /** Dictionary key for `name`, so bindings can render a translated gallery. */
4755
+ nameKey: string;
4756
+ /** Dictionary key for `description`. */
4757
+ descriptionKey: string;
4487
4758
  preview: string;
4488
4759
  }
4489
- declare function formatBackstageDate(timestamp: number, now?: number): string;
4490
4760
  declare function formatBackstageSize(bytes: number): string;
4491
4761
 
4492
4762
  /** Framework-neutral virtual-list range used by every thumbnail sidebar. */
@@ -4737,20 +5007,6 @@ interface ViewerOptions {
4737
5007
  type ViewerOptionsGroupId = keyof ViewerOptions;
4738
5008
  type ViewerOptionPrimitive = boolean | number | string;
4739
5009
 
4740
- /**
4741
- * Quick Access Toolbar command catalog and list-editing helpers, backing the
4742
- * Options > Quick Access Toolbar pane and the title-bar QAT strip.
4743
- *
4744
- * Ids map onto actions every binding already exposes; each binding resolves
4745
- * an id to its own icon + handler when rendering the strip.
4746
- */
4747
- interface QuickAccessCommandDefinition {
4748
- id: string;
4749
- labelKey: string;
4750
- /** Logical icon name bindings map to their icon set. */
4751
- icon: string;
4752
- }
4753
-
4754
5010
  interface ViewerAddinStatus {
4755
5011
  /** Addin id -> whether the capability is active in this host. */
4756
5012
  [addinId: string]: boolean | undefined;
@@ -6276,8 +6532,14 @@ declare class EditorStateService {
6276
6532
  addElement(slideIndex: number, element: PptxElement): void;
6277
6533
  /** Patch slide-level properties (background, notes, …); one history entry. */
6278
6534
  updateSlide(slideIndex: number, patch: Partial<PptxSlide>): void;
6279
- /** Insert a blank slide after `afterIndex` (records history). */
6280
- addSlide(afterIndex: number): void;
6535
+ /**
6536
+ * Insert a blank slide after `afterIndex` (records history).
6537
+ *
6538
+ * @param layoutPath - Package path of the slide layout the new slide should
6539
+ * inherit from, as offered by the Home tab's "New Slide" split button.
6540
+ * Omitted for a plain blank slide, which is what the button itself does.
6541
+ */
6542
+ addSlide(afterIndex: number, layoutPath?: string): void;
6281
6543
  /** Delete a slide (keeps at least one; records history). */
6282
6544
  deleteSlide(index: number): void;
6283
6545
  /** Duplicate a slide, inserting the copy after it (records history). */
@@ -6457,6 +6719,13 @@ declare class LoadContentService {
6457
6719
  readonly notesCanvasSize: _angular_core.WritableSignal<CanvasSize | undefined>;
6458
6720
  /** Custom document properties (used for `docproperty` field substitution). */
6459
6721
  readonly customProperties: _angular_core.WritableSignal<PptxCustomProperty[]>;
6722
+ /**
6723
+ * `ppt/tags/*.xml` name/value metadata, editable from the inspector's TAGS
6724
+ * card. Tags are how add-ins and automation stamp machine-readable data onto
6725
+ * a deck, so they are carried through save (see {@link saveSlides}) rather
6726
+ * than silently dropped.
6727
+ */
6728
+ readonly tagCollections: _angular_core.WritableSignal<PptxTagCollection[]>;
6460
6729
  /** Header/footer settings (footer/header/date-time text + format) for field substitution. */
6461
6730
  readonly headerFooter: _angular_core.WritableSignal<PptxHeaderFooter | undefined>;
6462
6731
  /** Whether the presentation contains digital signatures. */
@@ -6862,8 +7131,18 @@ declare function getContainerStyle(el: PptxElement, zIndex: number): StyleMap;
6862
7131
  */
6863
7132
  declare function getShapeFillStrokeStyle(el: PptxElement, parentGroupFill?: ShapeStyle, animatesFill?: boolean, animatesStroke?: boolean): StyleMap;
6864
7133
  /**
6865
- * Text block style for elements that carry text. Mirrors the essentials of the
6866
- * React `getTextStyleForElement`.
7134
+ * Text block style for elements that carry text.
7135
+ *
7136
+ * A thin adapter over the shared {@link buildTextBlockStyle}, which React
7137
+ * renders from too. This used to be a hand-ported copy of React's builder, and
7138
+ * the copy had silently lost `a:normAutofit` (a shrink-to-fit title painted 43%
7139
+ * too large), `a:bodyPr/@wrap="none"` (a no-wrap line wrapped to three), the
7140
+ * default font declaration, the italic padding nudge and the body
7141
+ * margin/indent pair.
7142
+ *
7143
+ * The shared record is camelCase; `[ngStyle]` maps elsewhere in this binding
7144
+ * are kebab-case, so it is converted rather than mixing both conventions in one
7145
+ * merged map (`warpedTextStyle` merges this with the 3D scene style).
6867
7146
  */
6868
7147
  declare function getTextBlockStyle(el: PptxElement): StyleMap;
6869
7148
  /** Resolve a displayable image source for picture/image/media poster frames. */
@@ -7976,6 +8255,8 @@ declare class ViewerZoomService {
7976
8255
  readonly zoom: _angular_core.WritableSignal<number>;
7977
8256
  /** {@link zoom} rounded to a whole percentage for display. */
7978
8257
  readonly zoomPercent: _angular_core.Signal<number>;
8258
+ /** Jump to an explicit zoom level, clamped by the shared bounds. */
8259
+ setZoom(level: number): void;
7979
8260
  zoomIn(): void;
7980
8261
  zoomOut(): void;
7981
8262
  zoomReset(): void;
@@ -8337,7 +8618,7 @@ declare class PowerPointViewerComponent {
8337
8618
  canRedo(): boolean;
8338
8619
  /** Get the current zoom level (1 = 100%). */
8339
8620
  getZoom(): number;
8340
- /** Set the zoom level (clamped to min/max bounds). */
8621
+ /** Set the zoom level (clamped by the shared cross-binding bounds). */
8341
8622
  setZoom(level: number): void;
8342
8623
  /** Zoom in by one step. */
8343
8624
  zoomIn(): void;
@@ -8368,6 +8649,14 @@ declare class PowerPointViewerComponent {
8368
8649
  protected onContextMenuAskAi(): void;
8369
8650
  /** Context-menu "Fix with AI": scope + open the assistant with a prefilled directive. */
8370
8651
  protected onContextMenuFixAi(): void;
8652
+ /**
8653
+ * Context-menu "Add Comment": show the comments panel, mirroring React's
8654
+ * `setIsInspectorPaneOpen(true) + setSidebarPanelMode('comments')`. It sets
8655
+ * the panel rather than toggling it, because choosing Add Comment while the
8656
+ * panel is already open must not close it; the mobile swipe-dismiss flag is
8657
+ * cleared for the same reason.
8658
+ */
8659
+ protected onContextMenuAddComment(): void;
8371
8660
  /** Get the IDs of currently selected elements. */
8372
8661
  getSelectedElementIds(): string[];
8373
8662
  /** Programmatically select elements by their IDs. */
@@ -8606,6 +8895,11 @@ declare class ExportService {
8606
8895
  * Provided alongside `LoadContentService` in the viewer subtree, so renderers
8607
8896
  * used outside the viewer (thumbnails, export) that inject it `optional` simply
8608
8897
  * fall back to no substitution.
8898
+ *
8899
+ * The assembly itself (including the slide-title resolution, which used to be a
8900
+ * local `placeholderType` scan here and so never resolved a title on a real
8901
+ * `.pptx`) lives in `pptx-viewer-shared`, so all five bindings build the same
8902
+ * context; this service is only the signals adapter.
8609
8903
  */
8610
8904
  declare class FieldContextService {
8611
8905
  private readonly load;
@@ -8706,6 +9000,10 @@ interface KeyboardHost {
8706
9000
  readonly canEdit: () => boolean;
8707
9001
  readonly presenting: () => boolean;
8708
9002
  readonly activeSlideIndex: () => number;
9003
+ /** Go back one slide (the arrows page the deck when nothing is selected). */
9004
+ readonly goPrev?: () => void;
9005
+ /** Go forward one slide. */
9006
+ readonly goNext?: () => void;
8709
9007
  }
8710
9008
  declare class ViewerKeyboardService {
8711
9009
  private readonly editor;
@@ -8715,6 +9013,13 @@ declare class ViewerKeyboardService {
8715
9013
  /** Wire the host accessors (called once from the component constructor). */
8716
9014
  bind(host: KeyboardHost): void;
8717
9015
  handleKeyDown(event: KeyboardEvent): void;
9016
+ /**
9017
+ * Escape unwinds the transient chrome one layer at a time: an armed format
9018
+ * painter first (it is modal over the pointer), then the shortcut cheat
9019
+ * sheet. Before this the branch stopped after the painter, so the panel "?"
9020
+ * had just opened stayed on screen with no key that could dismiss it.
9021
+ */
9022
+ private handleEscape;
8718
9023
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerKeyboardService, never>;
8719
9024
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<ViewerKeyboardService>;
8720
9025
  }
@@ -9477,6 +9782,8 @@ declare class RulerGuidesService {
9477
9782
  readonly rulerGuides: _angular_core.WritableSignal<readonly RulerGuide[]>;
9478
9783
  /** Active guide-drag state (id + axis only), or null when nothing is being dragged. */
9479
9784
  private guideDrag;
9785
+ /** Ruler strip a drag-out-a-guide gesture was armed on, or null. */
9786
+ private rulerDragAxis;
9480
9787
  private host;
9481
9788
  /** Wire the host accessors (called once from the component constructor). */
9482
9789
  bind(host: RulerGuidesHost): void;
@@ -9489,10 +9796,24 @@ declare class RulerGuidesService {
9489
9796
  onGuidePointerDown(event: PointerEvent, id: string, axis: RulerGuide['axis']): void;
9490
9797
  /** Remove a guide (called on guide handle double-click). */
9491
9798
  onGuideDoubleClick(event: MouseEvent, id: string): void;
9492
- /** Drag from the horizontal ruler to create a new horizontal guide (axis:'y'). */
9493
- onHRulerPointerDown(event: PointerEvent): void;
9494
- /** Drag from the vertical ruler to create a new vertical guide (axis:'x'). */
9495
- onVRulerPointerDown(event: PointerEvent): void;
9799
+ /**
9800
+ * Arm a drag-out-a-guide gesture on a ruler strip ('h' = the horizontal strip
9801
+ * along the top, 'v' = the vertical strip down the left).
9802
+ *
9803
+ * Nothing is created yet: the guide is dropped on pointer-UP so a stray click
9804
+ * on the strip cannot leave a guide behind. This is the gesture React, Vue,
9805
+ * Svelte and Vanilla all implement; Angular used to create the guide on
9806
+ * pointer-DOWN off its own stage-relative arithmetic, which both diverged
9807
+ * from the other bindings and duplicated the drop maths.
9808
+ */
9809
+ onRulerPointerDown(axis: 'h' | 'v', event: PointerEvent): void;
9810
+ /**
9811
+ * Resolve an armed ruler drag: drop one guide when the pointer left the strip
9812
+ * and landed on the slide. All three rules (must have left the strip, strip
9813
+ * thickness subtracted before un-scaling, out-of-slide drops discarded) live
9814
+ * in the shared {@link rulerDragToGuidePosition}.
9815
+ */
9816
+ onRulerPointerUp(axis: 'h' | 'v', event: PointerEvent): void;
9496
9817
  /** Update the dragged guide's position. Returns false when no guide drag is in progress (caller should fall through). */
9497
9818
  handlePointerMove(event: PointerEvent): boolean;
9498
9819
  /** End the guide drag. Returns false when no guide drag was in progress (caller should fall through). */
@@ -9501,30 +9822,6 @@ declare class RulerGuidesService {
9501
9822
  static ɵprov: _angular_core.ɵɵInjectableDeclaration<RulerGuidesService>;
9502
9823
  }
9503
9824
 
9504
- /**
9505
- * ruler-ticks.ts: Pure tick-mark generation for the slide canvas's horizontal
9506
- * and vertical ruler strips. No Angular/DOM dependency so it is trivially
9507
- * unit-testable in isolation from `SlideCanvasComponent`.
9508
- */
9509
- /** Height/width (px) of the ruler strips: mirrors React's RULER_THICKNESS. */
9510
- declare const RULER_THICKNESS = 20;
9511
- /** Pixels per inch on the slide canvas (PPTX slides are 10" wide = 960 px). */
9512
- declare const SLIDE_PX_PER_INCH = 96;
9513
- /** A single tick mark on a ruler strip. */
9514
- interface RulerTick {
9515
- /** Position in screen pixels along the ruler. */
9516
- position: number;
9517
- /** Whether this is a major (inch) tick. */
9518
- isMajor: boolean;
9519
- /** Label to display (only on major ticks, every N inches). */
9520
- label: string | null;
9521
- }
9522
- /**
9523
- * Generate ruler tick marks for a given slide dimension and scale.
9524
- * Produces ticks every 1/4 inch (minor) and every inch (major).
9525
- */
9526
- declare function generateRulerTicks(slidePx: number, scale: number): ReadonlyArray<RulerTick>;
9527
-
9528
9825
  /**
9529
9826
  * Slide-scoped DI context: lets leaf renderers (chart, SmartArt) resolve which
9530
9827
  * slide their canvas is displaying without threading an input through every
@@ -9571,6 +9868,12 @@ declare class SlideCanvasComponent implements SlideContext {
9571
9868
  * of the slide viewport. Only active on the interactive canvas.
9572
9869
  */
9573
9870
  readonly showRulers: _angular_core.InputSignal<boolean>;
9871
+ /**
9872
+ * Unit system for the ruler labels. Defaults to inches, as PowerPoint does;
9873
+ * the tick generator (shared with every other binding) also understands
9874
+ * centimetres, which the old Angular-only generator could not express.
9875
+ */
9876
+ readonly rulerUnit: _angular_core.InputSignal<RulerUnit>;
9574
9877
  /**
9575
9878
  * When true, render a static center-crosshair guide overlay on the slide stage.
9576
9879
  * Only active on the interactive canvas.
@@ -9885,13 +10188,40 @@ declare class SlideCanvasComponent implements SlideContext {
9885
10188
  * same page do not share the same `<pattern>` definition.
9886
10189
  */
9887
10190
  protected readonly gridPatternId: string;
9888
- /** Tick marks for the horizontal ruler strip (scaled slide width). */
9889
- readonly hRulerTicks: _angular_core.Signal<readonly RulerTick[]>;
10191
+ /**
10192
+ * Tick marks for the horizontal ruler strip (scaled slide width).
10193
+ *
10194
+ * Generated by the SHARED `generateTicks`, which is what gives Angular the
10195
+ * same unit system, subdivision-density collapse at low zoom and label
10196
+ * thinning the other bindings have. A local generator used to live in
10197
+ * `ruler-ticks.ts` with fixed quarter-inch subdivisions and inch-only
10198
+ * labels, so Angular disagreed with every other binding at every zoom.
10199
+ */
10200
+ readonly hRulerTicks: _angular_core.Signal<readonly Tick[]>;
9890
10201
  /** Tick marks for the vertical ruler strip (scaled slide height). */
9891
- readonly vRulerTicks: _angular_core.Signal<readonly RulerTick[]>;
10202
+ readonly vRulerTicks: _angular_core.Signal<readonly Tick[]>;
10203
+ /** Ruler strip thickness / label font size, exposed for the template. */
10204
+ protected readonly rulerThickness = 20;
10205
+ protected readonly rulerFontSize = 10;
10206
+ /**
10207
+ * Bounds of a single selection, highlighted on both strips (PowerPoint shades
10208
+ * the selected shape's span on its rulers). Multi-selection paints nothing,
10209
+ * matching React and Svelte.
10210
+ */
10211
+ private readonly rulerHighlightBounds;
10212
+ /** Selected element extent (scaled px) highlighted on the horizontal strip. */
10213
+ readonly hRulerHighlight: _angular_core.Signal<{
10214
+ start: number;
10215
+ span: number;
10216
+ } | null>;
10217
+ /** Selected element extent (scaled px) highlighted on the vertical strip. */
10218
+ readonly vRulerHighlight: _angular_core.Signal<{
10219
+ start: number;
10220
+ span: number;
10221
+ } | null>;
9892
10222
  readonly stageStyle: _angular_core.Signal<StyleMap>;
9893
10223
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlideCanvasComponent, never>;
9894
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlideCanvasComponent, "pptx-slide-canvas", never, { "slide": { "alias": "slide"; "required": false; "isSignal": true; }; "canvasSize": { "alias": "canvasSize"; "required": true; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "zoom": { "alias": "zoom"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "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; }; "guideCommand": { "alias": "guideCommand"; "required": false; "isSignal": true; }; "spellCheck": { "alias": "spellCheck"; "required": false; "isSignal": true; }; "snapToGuides": { "alias": "snapToGuides"; "required": false; "isSignal": true; }; "autoFit": { "alias": "autoFit"; "required": false; "isSignal": true; }; "transparentBackground": { "alias": "transparentBackground"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "presenting": { "alias": "presenting"; "required": false; "isSignal": true; }; "selectedIds": { "alias": "selectedIds"; "required": false; "isSignal": true; }; "editingId": { "alias": "editingId"; "required": false; "isSignal": true; }; "editTemplateMode": { "alias": "editTemplateMode"; "required": false; "isSignal": true; }; "templateElements": { "alias": "templateElements"; "required": false; "isSignal": true; }; "aiHighlights": { "alias": "aiHighlights"; "required": false; "isSignal": true; }; "aiActive": { "alias": "aiActive"; "required": false; "isSignal": true; }; "aiActiveSlideIndex": { "alias": "aiActiveSlideIndex"; "required": false; "isSignal": true; }; "aiChangeBatch": { "alias": "aiChangeBatch"; "required": false; "isSignal": true; }; "aiPickMode": { "alias": "aiPickMode"; "required": false; "isSignal": true; }; "drawTool": { "alias": "drawTool"; "required": false; "isSignal": true; }; "drawColor": { "alias": "drawColor"; "required": false; "isSignal": true; }; "drawWidth": { "alias": "drawWidth"; "required": false; "isSignal": true; }; }, { "elementSelect": "elementSelect"; "backgroundClick": "backgroundClick"; "transformStart": "transformStart"; "transformUpdate": "transformUpdate"; "contextMenu": "contextMenu"; "textEditStart": "textEditStart"; "textCommit": "textCommit"; "textInput": "textInput"; "textCancel": "textCancel"; "textFormat": "textFormat"; "rotateUpdate": "rotateUpdate"; "marqueeSelect": "marqueeSelect"; "inkStrokeComplete": "inkStrokeComplete"; "eraserHit": "eraserHit"; "cellCommit": "cellCommit"; "tableChange": "tableChange"; }, never, ["*"], true, never>;
10224
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlideCanvasComponent, "pptx-slide-canvas", never, { "slide": { "alias": "slide"; "required": false; "isSignal": true; }; "canvasSize": { "alias": "canvasSize"; "required": true; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "zoom": { "alias": "zoom"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showRulers": { "alias": "showRulers"; "required": false; "isSignal": true; }; "rulerUnit": { "alias": "rulerUnit"; "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; }; "guideCommand": { "alias": "guideCommand"; "required": false; "isSignal": true; }; "spellCheck": { "alias": "spellCheck"; "required": false; "isSignal": true; }; "snapToGuides": { "alias": "snapToGuides"; "required": false; "isSignal": true; }; "autoFit": { "alias": "autoFit"; "required": false; "isSignal": true; }; "transparentBackground": { "alias": "transparentBackground"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "presenting": { "alias": "presenting"; "required": false; "isSignal": true; }; "selectedIds": { "alias": "selectedIds"; "required": false; "isSignal": true; }; "editingId": { "alias": "editingId"; "required": false; "isSignal": true; }; "editTemplateMode": { "alias": "editTemplateMode"; "required": false; "isSignal": true; }; "templateElements": { "alias": "templateElements"; "required": false; "isSignal": true; }; "aiHighlights": { "alias": "aiHighlights"; "required": false; "isSignal": true; }; "aiActive": { "alias": "aiActive"; "required": false; "isSignal": true; }; "aiActiveSlideIndex": { "alias": "aiActiveSlideIndex"; "required": false; "isSignal": true; }; "aiChangeBatch": { "alias": "aiChangeBatch"; "required": false; "isSignal": true; }; "aiPickMode": { "alias": "aiPickMode"; "required": false; "isSignal": true; }; "drawTool": { "alias": "drawTool"; "required": false; "isSignal": true; }; "drawColor": { "alias": "drawColor"; "required": false; "isSignal": true; }; "drawWidth": { "alias": "drawWidth"; "required": false; "isSignal": true; }; }, { "elementSelect": "elementSelect"; "backgroundClick": "backgroundClick"; "transformStart": "transformStart"; "transformUpdate": "transformUpdate"; "contextMenu": "contextMenu"; "textEditStart": "textEditStart"; "textCommit": "textCommit"; "textInput": "textInput"; "textCancel": "textCancel"; "textFormat": "textFormat"; "rotateUpdate": "rotateUpdate"; "marqueeSelect": "marqueeSelect"; "inkStrokeComplete": "inkStrokeComplete"; "eraserHit": "eraserHit"; "cellCommit": "cellCommit"; "tableChange": "tableChange"; }, never, ["*"], true, never>;
9895
10225
  }
9896
10226
 
9897
10227
  /**
@@ -10109,6 +10439,12 @@ declare class ElementRendererComponent {
10109
10439
  private readonly playback;
10110
10440
  private readonly translate;
10111
10441
  readonly smartArt3D: _angular_core.Signal<boolean>;
10442
+ /**
10443
+ * Whether the Selection Pane has hidden this element. Drives the empty first
10444
+ * `@case` in the template; see the comment there for why nothing is rendered
10445
+ * rather than rendered-and-hidden.
10446
+ */
10447
+ readonly isHidden: _angular_core.Signal<boolean>;
10112
10448
  /** Obstacle rects (absolute slide coords) for connector A* routing. */
10113
10449
  readonly obstacles: _angular_core.InputSignal<readonly RouterRect[]>;
10114
10450
  readonly canvasWidth: _angular_core.InputSignal<number>;
@@ -10137,6 +10473,18 @@ declare class ElementRendererComponent {
10137
10473
  * runs resolve to display text, mirroring React's `fieldContext`.
10138
10474
  */
10139
10475
  readonly fieldContext: _angular_core.InputSignal<FieldSubstitutionContext | undefined>;
10476
+ /**
10477
+ * The elements of the slide being painted, threaded down (including to
10478
+ * recursive group children) alongside {@link fieldContext}.
10479
+ *
10480
+ * Needed only by `a:linkedTxbx` chains: a text box in a linked chain renders
10481
+ * the slice of the chain's text that the preceding boxes could not hold,
10482
+ * which is computable only from its SIBLINGS. Mirrors React's `slideElements`
10483
+ * (taken from its `activeSlide.elements` prop). Left empty by a host that
10484
+ * renders an element outside any slide, in which case a linked box falls back
10485
+ * to its own authored segments.
10486
+ */
10487
+ readonly slideElements: _angular_core.InputSignal<readonly PptxElement[]>;
10140
10488
  /**
10141
10489
  * When true, inherited master/layout (template) elements get a visual
10142
10490
  * affordance (amber outline ring + slightly reduced opacity) signalling that
@@ -10172,6 +10520,10 @@ declare class ElementRendererComponent {
10172
10520
  * DAG fill-overlay tint (colour + blend mode) painted as a separate blended
10173
10521
  * layer over the shape. Undefined when the element has no fill overlay.
10174
10522
  */
10523
+ /** Gradient / pattern `a:ln` outline, stroked as an SVG path over the element. */
10524
+ readonly gradientOutline: _angular_core.Signal<StrokeOutline | undefined>;
10525
+ /** viewBox in the element's own pixel space, matching the outline path data. */
10526
+ readonly outlineViewBox: _angular_core.Signal<string>;
10175
10527
  readonly fillOverlay: _angular_core.Signal<FillOverlayCss | undefined>;
10176
10528
  /**
10177
10529
  * Outline ring + slight transparency applied to inherited template
@@ -10232,7 +10584,7 @@ declare class ElementRendererComponent {
10232
10584
  readonly hasText: _angular_core.Signal<boolean>;
10233
10585
  readonly placeholderLabel: _angular_core.Signal<any>;
10234
10586
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ElementRendererComponent, never>;
10235
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ElementRendererComponent, "pptx-element-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "obstacles": { "alias": "obstacles"; "required": false; "isSignal": true; }; "canvasWidth": { "alias": "canvasWidth"; "required": false; "isSignal": true; }; "canvasHeight": { "alias": "canvasHeight"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "presenting": { "alias": "presenting"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "fieldContext": { "alias": "fieldContext"; "required": false; "isSignal": true; }; "editTemplateMode": { "alias": "editTemplateMode"; "required": false; "isSignal": true; }; "parentGroupFill": { "alias": "parentGroupFill"; "required": false; "isSignal": true; }; }, { "cellCommit": "cellCommit"; "tableChange": "tableChange"; }, never, never, true, never>;
10587
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ElementRendererComponent, "pptx-element-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "obstacles": { "alias": "obstacles"; "required": false; "isSignal": true; }; "canvasWidth": { "alias": "canvasWidth"; "required": false; "isSignal": true; }; "canvasHeight": { "alias": "canvasHeight"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "presenting": { "alias": "presenting"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "fieldContext": { "alias": "fieldContext"; "required": false; "isSignal": true; }; "slideElements": { "alias": "slideElements"; "required": false; "isSignal": true; }; "editTemplateMode": { "alias": "editTemplateMode"; "required": false; "isSignal": true; }; "parentGroupFill": { "alias": "parentGroupFill"; "required": false; "isSignal": true; }; }, { "cellCommit": "cellCommit"; "tableChange": "tableChange"; }, never, never, true, never>;
10236
10588
  }
10237
10589
 
10238
10590
  /**
@@ -10607,11 +10959,17 @@ declare function computeTextLines(text: string, fontSize: number): Array<{
10607
10959
  * `RenderedConnector[]` view-models. Every binding renders the same
10608
10960
  * geometry; this maps those view-models to SVG exactly as Vue does.
10609
10961
  * 3. **Placeholder** -- when there is neither data nor any nodes/shapes.
10962
+ *
10963
+ * Positioning is NOT this component's job: its chrome root fills the positioned,
10964
+ * element-id bearing box its host draws (the element dispatcher, the 3D
10965
+ * renderer's fallback branch, or a preview stage), the same contract the chart
10966
+ * and table renderers follow. Owning `left`/`top` here too offset the diagram
10967
+ * twice, and stamping the element id on this root hid the host's marked node
10968
+ * from anything reading the element contract by id.
10610
10969
  */
10611
10970
  declare class SmartArtRendererComponent {
10612
10971
  /** The smartArt element to render. Must be `type === 'smartArt'`. */
10613
10972
  readonly element: _angular_core.InputSignal<PptxElement>;
10614
- readonly zIndex: _angular_core.InputSignal<number>;
10615
10973
  /**
10616
10974
  * Whether inline on-canvas node-text editing is enabled. False in
10617
10975
  * presentation / read-only / thumbnail contexts (mirrors the table renderer's
@@ -10660,7 +11018,6 @@ declare class SmartArtRendererComponent {
10660
11018
  readonly canEditNodes: _angular_core.Signal<boolean>;
10661
11019
  constructor();
10662
11020
  private readonly smartArtData;
10663
- readonly containerStyle: _angular_core.Signal<StyleMap>;
10664
11021
  readonly chromeStyle: _angular_core.Signal<StyleMap>;
10665
11022
  readonly palette: _angular_core.Signal<string[]>;
10666
11023
  readonly artStyle: _angular_core.Signal<pptx_viewer_core.SmartArtStyle>;
@@ -10749,7 +11106,7 @@ declare class SmartArtRendererComponent {
10749
11106
  private reflow;
10750
11107
  readonly isEmpty: _angular_core.Signal<boolean>;
10751
11108
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SmartArtRendererComponent, never>;
10752
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SmartArtRendererComponent, "pptx-smart-art-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "animationState": { "alias": "animationState"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
11109
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SmartArtRendererComponent, "pptx-smart-art-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "animationState": { "alias": "animationState"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
10753
11110
  }
10754
11111
 
10755
11112
  /**
@@ -10853,13 +11210,25 @@ declare class InkRendererComponent {
10853
11210
  readonly zIndex: _angular_core.InputSignal<number>;
10854
11211
  readonly mediaDataUrls: _angular_core.InputSignal<Map<string, string>>;
10855
11212
  readonly replay: _angular_core.InputSignal<boolean>;
11213
+ /**
11214
+ * Emit the neutral element marker (`data-pptx-element="true"`) on this
11215
+ * renderer's root, the node that also carries `data-element-id`.
11216
+ *
11217
+ * Set only by the main interactive canvas. It is an input rather than
11218
+ * something the dispatcher wraps around this component because the root here
11219
+ * positions itself absolutely, so an outer marked box would offset the ink
11220
+ * twice. Without it an ink element renders correctly but is not an element as
11221
+ * far as the shared contract is concerned, so anything enumerating or
11222
+ * hit-testing slide elements by the marker skips it.
11223
+ */
11224
+ readonly markElement: _angular_core.InputSignal<boolean>;
10856
11225
  readonly replayKeyframes = "@keyframes pptx-ink-replay {\n from { stroke-dashoffset: var(--ink-path-length); }\n to { stroke-dashoffset: 0; }\n}";
10857
11226
  readonly containerStyle: _angular_core.Signal<StyleMap>;
10858
11227
  readonly strokes: _angular_core.Signal<InkStroke[]>;
10859
11228
  readonly replayStyles: _angular_core.Signal<InkStrokeAnimationStyle[]>;
10860
11229
  readonly viewBox: _angular_core.Signal<string>;
10861
11230
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<InkRendererComponent, never>;
10862
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<InkRendererComponent, "pptx-ink-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "replay": { "alias": "replay"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
11231
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InkRendererComponent, "pptx-ink-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "replay": { "alias": "replay"; "required": false; "isSignal": true; }; "markElement": { "alias": "markElement"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
10863
11232
  }
10864
11233
 
10865
11234
  /**
@@ -10939,6 +11308,10 @@ declare function buildOleActionModel(el: OlePptxElement, translate?: TranslateSe
10939
11308
  * type-badge overlay; otherwise a type-specific icon + label placeholder box
10940
11309
  * is drawn, mirroring the React / Vue fallback.
10941
11310
  *
11311
+ * Positioning is NOT this component's job: it fills the positioned, element-id
11312
+ * bearing box its host draws (see `element-renderer.component.ts`), the same
11313
+ * contract the chart and table renderers follow.
11314
+ *
10942
11315
  * Pure helpers (type resolution, colour / label maps, placeholder style) live
10943
11316
  * in `ole-renderer-helpers.ts` so they can be unit-tested without TestBed.
10944
11317
  *
@@ -10947,9 +11320,6 @@ declare function buildOleActionModel(el: OlePptxElement, translate?: TranslateSe
10947
11320
  declare class OleRendererComponent {
10948
11321
  /** The element to render. Must be `type === 'ole'`. */
10949
11322
  readonly element: _angular_core.InputSignal<PptxElement>;
10950
- readonly zIndex: _angular_core.InputSignal<number>;
10951
- /** Absolute container positioning + dimensions. */
10952
- readonly containerStyle: _angular_core.Signal<StyleMap>;
10953
11323
  /** Narrowed OLE element: undefined when the input is not `type === 'ole'`. */
10954
11324
  private readonly ole;
10955
11325
  /** Resolved application type (excel / word / pdf / visio / mathtype / unknown). */
@@ -10990,7 +11360,7 @@ declare class OleRendererComponent {
10990
11360
  */
10991
11361
  openEmbedded(): void;
10992
11362
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<OleRendererComponent, never>;
10993
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<OleRendererComponent, "pptx-ole-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
11363
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OleRendererComponent, "pptx-ole-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
10994
11364
  }
10995
11365
 
10996
11366
  /** Narrowed view-model derived from a `Model3DPptxElement`. */
@@ -11055,6 +11425,15 @@ declare class Model3DRendererComponent implements OnDestroy {
11055
11425
  * editor; the root viewer can pass `false` in passive presentation mode.
11056
11426
  */
11057
11427
  readonly interactive: _angular_core.InputSignal<boolean>;
11428
+ /**
11429
+ * Emit the neutral element marker (`data-pptx-element="true"`) on this
11430
+ * renderer's root, the node that also carries `data-element-id`. Set only by
11431
+ * the main interactive canvas.
11432
+ *
11433
+ * Separate from `interactive` above, which is about the 3D scene's orbit
11434
+ * controls and defaults to `true` even on a thumbnail.
11435
+ */
11436
+ readonly markElement: _angular_core.InputSignal<boolean>;
11058
11437
  private readonly sceneRef;
11059
11438
  readonly containerStyle: _angular_core.Signal<StyleMap>;
11060
11439
  readonly vm: _angular_core.Signal<Model3DViewModel>;
@@ -11076,7 +11455,7 @@ declare class Model3DRendererComponent implements OnDestroy {
11076
11455
  private teardownHandle;
11077
11456
  ngOnDestroy(): void;
11078
11457
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<Model3DRendererComponent, never>;
11079
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<Model3DRendererComponent, "pptx-model3d-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
11458
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Model3DRendererComponent, "pptx-model3d-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "markElement": { "alias": "markElement"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
11080
11459
  }
11081
11460
 
11082
11461
  /**
@@ -11171,6 +11550,16 @@ declare class ZoomRendererComponent {
11171
11550
  readonly element: _angular_core.InputSignal<PptxElement>;
11172
11551
  readonly zIndex: _angular_core.InputSignal<number>;
11173
11552
  readonly mediaDataUrls: _angular_core.InputSignal<Map<string, string>>;
11553
+ /**
11554
+ * Emit the neutral element marker (`data-pptx-element="true"`) on this
11555
+ * renderer's root, the node that also carries `data-element-id`. Set only by
11556
+ * the main interactive canvas.
11557
+ *
11558
+ * Deliberately NOT called `interactive`: this component already uses that
11559
+ * word for something else (`interactive()` below means the tile is
11560
+ * click-to-jump, which only happens inside a running presentation).
11561
+ */
11562
+ readonly markElement: _angular_core.InputSignal<boolean>;
11174
11563
  readonly containerStyle: _angular_core.Signal<StyleMap>;
11175
11564
  /**
11176
11565
  * Target-slide lookup, provided by the viewer. `null` in trees that do not
@@ -11194,7 +11583,7 @@ declare class ZoomRendererComponent {
11194
11583
  protected onClick(event: MouseEvent): void;
11195
11584
  protected onKeydown(event: KeyboardEvent): void;
11196
11585
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZoomRendererComponent, never>;
11197
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZoomRendererComponent, "pptx-zoom-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
11586
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZoomRendererComponent, "pptx-zoom-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "markElement": { "alias": "markElement"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
11198
11587
  }
11199
11588
 
11200
11589
  declare class AnimationPlaybackService {
@@ -11949,6 +12338,116 @@ declare class SlideSizeCardComponent {
11949
12338
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlideSizeCardComponent, "pptx-slide-size-card", never, { "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
11950
12339
  }
11951
12340
 
12341
+ declare class SlideTransitionCardComponent {
12342
+ /** Zero-based index of the slide whose transition is being edited. */
12343
+ readonly slideIndex: _angular_core.InputSignal<number>;
12344
+ /** Whether mutation controls are enabled. */
12345
+ readonly canEdit: _angular_core.InputSignal<boolean>;
12346
+ private readonly editor;
12347
+ protected readonly transitionOptions: readonly SlideTransitionOptionEntry[];
12348
+ protected readonly orientOptions: ({
12349
+ value: "horz";
12350
+ i18nKey: string;
12351
+ } | {
12352
+ value: "vert";
12353
+ i18nKey: string;
12354
+ })[];
12355
+ protected readonly maxDurationMs = 10000;
12356
+ protected readonly minSpokes = 1;
12357
+ protected readonly maxSpokes = 8;
12358
+ protected readonly activeSlide: _angular_core.Signal<PptxSlide | undefined>;
12359
+ protected readonly transition: _angular_core.Signal<PptxSlideTransition | undefined>;
12360
+ protected readonly transitionType: _angular_core.Signal<PptxTransitionType>;
12361
+ protected readonly usesOrientation: _angular_core.Signal<boolean>;
12362
+ protected readonly isWheel: _angular_core.Signal<boolean>;
12363
+ /** Compass tokens for the current type, or undefined when it takes none. */
12364
+ protected readonly directionTokens: _angular_core.Signal<readonly string[] | undefined>;
12365
+ protected readonly orientation: _angular_core.Signal<pptx_viewer_core.PptxSplitOrientation>;
12366
+ protected readonly spokes: _angular_core.Signal<number>;
12367
+ protected readonly durationMs: _angular_core.Signal<number>;
12368
+ protected readonly advanceOnClick: _angular_core.Signal<boolean>;
12369
+ protected onTypeChange(event: Event): void;
12370
+ protected onDirection(direction: string): void;
12371
+ protected onOrientation(orient: 'horz' | 'vert'): void;
12372
+ protected onSpokes(event: Event): void;
12373
+ protected onDuration(event: Event): void;
12374
+ protected onAdvanceOnClick(event: Event): void;
12375
+ /** Merge a partial transition change onto the slide as one history entry. */
12376
+ private patch;
12377
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlideTransitionCardComponent, never>;
12378
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlideTransitionCardComponent, "pptx-slide-transition-card", never, { "slideIndex": { "alias": "slideIndex"; "required": true; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12379
+ }
12380
+
12381
+ declare class SlideBackgroundCardComponent {
12382
+ /** Zero-based index of the slide whose background is being edited. */
12383
+ readonly slideIndex: _angular_core.InputSignal<number>;
12384
+ /** Whether mutation controls are enabled. */
12385
+ readonly canEdit: _angular_core.InputSignal<boolean>;
12386
+ private readonly editor;
12387
+ protected readonly imageAccept = "image/png,image/jpeg,image/gif,image/webp,image/svg+xml";
12388
+ protected readonly slide: _angular_core.Signal<PptxSlide | undefined>;
12389
+ /** Stable per-slide key so the colour input reseeds only on slide change. */
12390
+ protected readonly slideKey: _angular_core.Signal<string>;
12391
+ protected readonly backgroundColor: _angular_core.Signal<string>;
12392
+ protected readonly hasBackground: _angular_core.Signal<boolean>;
12393
+ protected onColorChange(event: Event): void;
12394
+ protected onImagePicked(event: Event): void;
12395
+ protected onRemoveImage(): void;
12396
+ protected onClear(): void;
12397
+ private patch;
12398
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlideBackgroundCardComponent, never>;
12399
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlideBackgroundCardComponent, "pptx-slide-background-card", never, { "slideIndex": { "alias": "slideIndex"; "required": true; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12400
+ }
12401
+
12402
+ /** One rendered grid slot: a direction token, or a blank spacer. */
12403
+ interface DirectionCell {
12404
+ /** Stable key for `@for` tracking (cells can repeat `null`). */
12405
+ readonly key: string;
12406
+ /** The direction token, or null for an empty compass slot. */
12407
+ readonly value: string | null;
12408
+ /** Arrow glyph for the token (falls back to the raw token). */
12409
+ readonly arrow: string;
12410
+ }
12411
+ declare class TransitionDirectionPickerComponent {
12412
+ /** Valid direction tokens for the current transition type. */
12413
+ readonly directions: _angular_core.InputSignal<readonly string[]>;
12414
+ /** Currently selected token, if any. */
12415
+ readonly value: _angular_core.InputSignal<string | undefined>;
12416
+ /** Whether the buttons are inert (read-only deck). */
12417
+ readonly disabled: _angular_core.InputSignal<boolean>;
12418
+ /** The token the user chose. */
12419
+ readonly pick: _angular_core.OutputEmitterRef<string>;
12420
+ /** Four or more tokens earn the compass grid; fewer stay an inline row. */
12421
+ protected readonly useGrid: _angular_core.Signal<boolean>;
12422
+ protected readonly gridCells: _angular_core.Signal<DirectionCell[]>;
12423
+ /** Arrow glyph for a token, falling back to the raw token. */
12424
+ protected arrowFor(token: string): string;
12425
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TransitionDirectionPickerComponent, never>;
12426
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TransitionDirectionPickerComponent, "pptx-transition-direction-picker", never, { "directions": { "alias": "directions"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "pick": "pick"; }, never, never, true, never>;
12427
+ }
12428
+
12429
+ declare class TransitionPreviewComponent {
12430
+ /** The transition being previewed. */
12431
+ readonly transition: _angular_core.InputSignal<PptxSlideTransition>;
12432
+ /** Bumped on every click; recreates both layers so the animation restarts. */
12433
+ private readonly playKey;
12434
+ private readonly playing;
12435
+ private timer;
12436
+ constructor();
12437
+ /** Single-element list so the template can key the layers on the counter. */
12438
+ protected readonly playKeys: _angular_core.Signal<readonly number[]>;
12439
+ protected readonly durationMs: _angular_core.Signal<number>;
12440
+ /** `none` and `cut` have nothing to show; React hides the preview entirely. */
12441
+ protected readonly previewable: _angular_core.Signal<boolean>;
12442
+ private readonly animations;
12443
+ protected readonly incomingAnimation: _angular_core.Signal<string | null>;
12444
+ protected readonly outgoingAnimation: _angular_core.Signal<string | null>;
12445
+ protected readonly outgoingZIndex: _angular_core.Signal<0 | 2>;
12446
+ protected play(): void;
12447
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TransitionPreviewComponent, never>;
12448
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TransitionPreviewComponent, "pptx-transition-preview", never, { "transition": { "alias": "transition"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
12449
+ }
12450
+
11952
12451
  declare class NotesHandoutCardComponent {
11953
12452
  private readonly loader;
11954
12453
  private readonly translate;
@@ -11979,6 +12478,28 @@ declare class DocumentPropertiesCardComponent {
11979
12478
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DocumentPropertiesCardComponent, "pptx-document-properties-card", never, { "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
11980
12479
  }
11981
12480
 
12481
+ declare class TagsCardComponent {
12482
+ /** Whether mutation controls are enabled. */
12483
+ readonly canEdit: _angular_core.InputSignal<boolean>;
12484
+ private readonly loader;
12485
+ private readonly editor;
12486
+ /** Collapsed by default, matching React's TagsSection initial state. */
12487
+ protected readonly collapsed: _angular_core.WritableSignal<boolean>;
12488
+ protected readonly rows: _angular_core.Signal<FlatTagRow[]>;
12489
+ protected toggle(): void;
12490
+ protected onFieldChange(event: Event, colIdx: number, tagIdx: number, field: 'name' | 'value'): void;
12491
+ protected onDelete(colIdx: number, tagIdx: number): void;
12492
+ protected onAdd(): void;
12493
+ /**
12494
+ * Tags live outside the slide list, so they are not part of the slide undo
12495
+ * stack; writing the loader signal and flagging the deck dirty is the same
12496
+ * path the DOCUMENT properties card uses.
12497
+ */
12498
+ private commit;
12499
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TagsCardComponent, never>;
12500
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagsCardComponent, "pptx-tags-card", never, { "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12501
+ }
12502
+
11982
12503
  declare class GradientPickerComponent {
11983
12504
  /** The element whose gradient fill is being edited. */
11984
12505
  readonly element: _angular_core.InputSignal<PptxElement>;
@@ -12066,6 +12587,79 @@ declare class TextAdvancedPanelComponent {
12066
12587
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TextAdvancedPanelComponent, "pptx-text-advanced-panel", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; }, { "patch": "patch"; }, never, never, true, never>;
12067
12588
  }
12068
12589
 
12590
+ declare class Text3DPanelComponent {
12591
+ /** The selected element whose text style carries the 3D settings. */
12592
+ readonly element: _angular_core.InputSignal<PptxElement>;
12593
+ /** A partial-element patch for the orchestrator to commit (one history entry). */
12594
+ readonly patch: _angular_core.OutputEmitterRef<Partial<PptxElement>>;
12595
+ protected readonly materialPresets: readonly {
12596
+ value: MaterialPresetType | "";
12597
+ label: string;
12598
+ }[];
12599
+ protected readonly maxDepthPt = 100;
12600
+ protected readonly topBevelKeys: pptx_angular_viewer.Text3DBevelKeys;
12601
+ protected readonly bottomBevelKeys: pptx_angular_viewer.Text3DBevelKeys;
12602
+ protected readonly text3d: _angular_core.Signal<Text3DStyle | undefined>;
12603
+ protected readonly hasExtrusion: _angular_core.Signal<boolean>;
12604
+ protected readonly depthPt: _angular_core.Signal<number>;
12605
+ protected readonly extrusionColor: _angular_core.Signal<string>;
12606
+ protected readonly material: _angular_core.Signal<string>;
12607
+ /** Merge a partial 3D change onto the current style and emit the patch. */
12608
+ protected commit(changes: Partial<Text3DStyle>): void;
12609
+ protected onExtrusionToggle(event: Event): void;
12610
+ protected onDepthChange(event: Event): void;
12611
+ protected onColorChange(event: Event): void;
12612
+ protected onMaterialChange(event: Event): void;
12613
+ private emitText3d;
12614
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Text3DPanelComponent, never>;
12615
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Text3DPanelComponent, "pptx-text-3d-panel", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; }, { "patch": "patch"; }, never, never, true, never>;
12616
+ }
12617
+
12618
+ /** The three `Text3DStyle` fields one bevel block owns. */
12619
+ interface Text3DBevelKeys {
12620
+ readonly type: 'bevelTopType' | 'bevelBottomType';
12621
+ readonly width: 'bevelTopWidth' | 'bevelBottomWidth';
12622
+ readonly height: 'bevelTopHeight' | 'bevelBottomHeight';
12623
+ }
12624
+ /** Field names of the TOP bevel (`a:bevelT`). */
12625
+ declare const TEXT_3D_TOP_BEVEL_KEYS: Text3DBevelKeys;
12626
+ /** Field names of the BOTTOM bevel (`a:bevelB`). */
12627
+ declare const TEXT_3D_BOTTOM_BEVEL_KEYS: Text3DBevelKeys;
12628
+ /**
12629
+ * Build the single-field patch for one bevel input. Exported (and pure) so the
12630
+ * clamping is unit-testable without a TestBed, matching this package's
12631
+ * convention of testing logic and leaving DOM behaviour to the e2e specs.
12632
+ */
12633
+ declare function bevelSizePatch(key: Text3DBevelKeys['width'] | Text3DBevelKeys['height'], pt: number): Partial<Text3DStyle>;
12634
+ declare class Text3DBevelSectionComponent {
12635
+ /** Display label for this edge (already translated by the parent). */
12636
+ readonly label: _angular_core.InputSignal<string>;
12637
+ /** Which `Text3DStyle` fields this block writes. */
12638
+ readonly keys: _angular_core.InputSignal<Text3DBevelKeys>;
12639
+ /**
12640
+ * The element's current 3D-text style, if any. Named `text3d` rather than
12641
+ * `style` because Angular special-cases a `[style]` binding as the native
12642
+ * style map, which would never reach an input of that name.
12643
+ */
12644
+ readonly text3d: _angular_core.InputSignal<Text3DStyle | undefined>;
12645
+ /** Whether the controls are inert (no extrusion, or read-only deck). */
12646
+ readonly disabled: _angular_core.InputSignal<boolean>;
12647
+ /** A partial `Text3DStyle` change for the parent to merge and commit. */
12648
+ readonly bevelChange: _angular_core.OutputEmitterRef<Partial<Text3DStyle>>;
12649
+ protected readonly bevelPresets: readonly {
12650
+ value: BevelPresetType;
12651
+ label: string;
12652
+ }[];
12653
+ protected readonly maxPt = 50;
12654
+ protected readonly bevelType: _angular_core.Signal<BevelPresetType>;
12655
+ protected readonly widthPt: _angular_core.Signal<number>;
12656
+ protected readonly heightPt: _angular_core.Signal<number>;
12657
+ protected onType(event: Event): void;
12658
+ protected onSize(event: Event, dimension: 'width' | 'height'): void;
12659
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Text3DBevelSectionComponent, never>;
12660
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Text3DBevelSectionComponent, "pptx-text-3d-bevel-section", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "keys": { "alias": "keys"; "required": true; "isSignal": true; }; "text3d": { "alias": "text3d"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "bevelChange": "bevelChange"; }, never, never, true, never>;
12661
+ }
12662
+
12069
12663
  declare class TableDataEditorComponent {
12070
12664
  /** The table element being edited. */
12071
12665
  readonly element: _angular_core.InputSignal<TablePptxElement>;
@@ -12948,6 +13542,8 @@ declare class EditorToolbarComponent {
12948
13542
  }
12949
13543
 
12950
13544
  declare class StatusBarComponent {
13545
+ /** Shared height token; see the note above the row in the template. */
13546
+ protected readonly statusBarHeightClass: "min-h-[29px]";
12951
13547
  readonly slideIndex: _angular_core.InputSignal<number>;
12952
13548
  readonly slideCount: _angular_core.InputSignal<number>;
12953
13549
  readonly canEdit: _angular_core.InputSignal<boolean>;
@@ -13006,6 +13602,14 @@ declare class EditorContextMenuComponent {
13006
13602
  readonly askAi: _angular_core.OutputEmitterRef<void>;
13007
13603
  /** "Fix with AI": open the assistant with a prefilled fix directive. */
13008
13604
  readonly fixAi: _angular_core.OutputEmitterRef<void>;
13605
+ /**
13606
+ * "Edit Hyperlink": the dialog lives at viewer level (it needs the selected
13607
+ * element and the document-properties service), so the menu asks for it
13608
+ * rather than owning it.
13609
+ */
13610
+ readonly editHyperlink: _angular_core.OutputEmitterRef<void>;
13611
+ /** "Add Comment": open the right-docked comments panel, as React does. */
13612
+ readonly addComment: _angular_core.OutputEmitterRef<void>;
13009
13613
  protected readonly editor: EditorStateService;
13010
13614
  private readonly tableSelection;
13011
13615
  private readonly host;
@@ -13018,36 +13622,23 @@ declare class EditorContextMenuComponent {
13018
13622
  element: TablePptxElement;
13019
13623
  sel: TableCellSelection;
13020
13624
  } | null>;
13625
+ /** The single selected element, or null on an empty or multi selection. */
13626
+ private readonly selectedElement;
13627
+ /** The menu, as the shared command list builds it for this right-click. */
13628
+ protected readonly entries: _angular_core.Signal<ContextMenuEntry[]>;
13629
+ /** Editor operations behind each command id (see the dispatch module). */
13630
+ private readonly actions;
13021
13631
  onEscape(): void;
13022
13632
  onDocumentPointerDown(event: PointerEvent): void;
13023
- protected onAskAi(): void;
13024
- protected onFixAi(): void;
13025
- protected onCut(): void;
13026
- protected onCopy(): void;
13027
- protected onPaste(): void;
13028
- protected onDuplicate(): void;
13029
- protected onDelete(): void;
13030
- protected onBringToFront(): void;
13031
- protected onSendToBack(): void;
13032
- protected onBringForward(): void;
13033
- protected onSendBackward(): void;
13034
- protected onInsertRowAbove(): void;
13035
- protected onInsertRowBelow(): void;
13036
- protected onInsertColLeft(): void;
13037
- protected onInsertColRight(): void;
13038
- protected onDeleteRow(): void;
13039
- protected onDeleteColumn(): void;
13040
- protected onMergeRight(): void;
13041
- protected onMergeDown(): void;
13042
- protected onSplitCell(): void;
13043
- protected onMergeSelected(): void;
13633
+ /** Run the chosen command, then close: every item closes the menu. */
13634
+ protected run(id: ContextMenuCommandId): void;
13044
13635
  /**
13045
13636
  * Run a pure table transform on the current table context and commit the
13046
- * result through the editor (one undoable history entry), then close the menu.
13637
+ * result through the editor (one undoable history entry).
13047
13638
  */
13048
13639
  private applyTable;
13049
13640
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EditorContextMenuComponent, never>;
13050
- 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"; }, never, never, true, never>;
13641
+ 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>;
13051
13642
  }
13052
13643
 
13053
13644
  /**
@@ -13376,22 +13967,32 @@ declare class AnimationPanelComponent {
13376
13967
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnimationPanelComponent, "pptx-animation-panel", never, { "groups": { "alias": "groups"; "required": true; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "isPlaying": { "alias": "isPlaying"; "required": false; "isSignal": true; }; }, { "playRequested": "playRequested"; "pauseRequested": "pauseRequested"; "stepRequested": "stepRequested"; "resetRequested": "resetRequested"; "seek": "seek"; }, never, never, true, never>;
13377
13968
  }
13378
13969
 
13970
+ type Trigger = 'click' | 'hover';
13379
13971
  declare class ActionSettingsPanelComponent {
13380
13972
  readonly element: _angular_core.InputSignal<PptxElement>;
13381
13973
  readonly slideCount: _angular_core.InputSignal<number>;
13382
13974
  readonly patch: _angular_core.OutputEmitterRef<Partial<PptxElement>>;
13383
13975
  protected readonly triggers: readonly ["click", "hover"];
13384
- protected readonly actionTypes: readonly {
13385
- value: ElementActionType;
13386
- key: string;
13387
- }[];
13976
+ protected readonly actionTypes: readonly ElementActionOption[];
13977
+ /**
13978
+ * The type the user just picked, per trigger.
13979
+ *
13980
+ * WHY it exists: "Go to URL" / "Go to Slide" only become a stored action once
13981
+ * they carry a target, so controls driven purely by the committed element
13982
+ * never revealed the input needed to supply that target, leaving both kinds
13983
+ * unreachable. The pick is tagged with its element id so moving the inspector
13984
+ * to another shape does not carry a half-made choice across.
13985
+ */
13986
+ private readonly pending;
13388
13987
  private readonly clickAction;
13389
13988
  private readonly hoverAction;
13390
- protected actionFor(trigger: 'click' | 'hover'): ElementAction | undefined;
13989
+ protected actionFor(trigger: Trigger): ElementAction | undefined;
13990
+ /** The action type this trigger's controls should render right now. */
13991
+ protected typeFor(trigger: Trigger): ElementActionType;
13391
13992
  private update;
13392
- protected onType(event: Event, trigger: 'click' | 'hover'): void;
13393
- protected onUrl(event: Event, trigger: 'click' | 'hover'): void;
13394
- protected onSlide(event: Event, trigger: 'click' | 'hover'): void;
13993
+ protected onType(event: Event, trigger: Trigger): void;
13994
+ protected onUrl(event: Event, trigger: Trigger): void;
13995
+ protected onSlide(event: Event, trigger: Trigger): void;
13395
13996
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ActionSettingsPanelComponent, never>;
13396
13997
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ActionSettingsPanelComponent, "pptx-action-settings-panel", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; }, { "patch": "patch"; }, never, never, true, never>;
13397
13998
  }
@@ -14365,7 +14966,7 @@ declare class AccountPageComponent {
14365
14966
  readonly accountAuth: _angular_core.InputSignal<AccountAuthConfig | undefined>;
14366
14967
  private readonly translate;
14367
14968
  protected readonly swatches: readonly string[];
14368
- protected readonly version = "2.7.1";
14969
+ protected readonly version = "2.8.0";
14369
14970
  protected readonly profile: _angular_core.WritableSignal<ViewerProfile>;
14370
14971
  protected readonly initial: _angular_core.Signal<string>;
14371
14972
  protected readonly usage: _angular_core.WritableSignal<LocalStorageUsageSummary | null>;
@@ -15154,10 +15755,19 @@ declare function computeCornerHandle(box: (Box & {
15154
15755
  }) | null, editable: boolean, handleScreenPx: number, offsetPx: number, zoom: number, corner: 'top-center' | 'top-left'): CornerHandleBox | null;
15155
15756
  /**
15156
15757
  * Resolve the id of the interactive element under a pointer target, or null.
15157
- * An element host carries `data-element-id`, but template (master/layout)
15158
- * elements are only interactive while `editTemplateMode` is on; when off they
15159
- * are reported as null so the canvas treats them as background (no
15160
- * select/drag/context-menu/inline-edit).
15758
+ *
15759
+ * Resolution goes through the shared hit-test, which answers with the TOP-LEVEL
15760
+ * element rather than the innermost `data-element-id` node. That distinction is
15761
+ * the whole point here: a group renders its children's nodes inside its own, so
15762
+ * the innermost node under a click is usually a grouped CHILD, whose id is not
15763
+ * in `allElements`. This function used to look that child id up, find nothing,
15764
+ * and report "no element", which CLEARED the selection: Ungroup was then only
15765
+ * reachable by hitting a gap inside the group's box that missed every child.
15766
+ * PowerPoint (and React, Vanilla and Svelte) select the group instead.
15767
+ *
15768
+ * Template (master/layout) elements are only interactive while
15769
+ * `editTemplateMode` is on; when off they are reported as null so the canvas
15770
+ * treats them as background (no select/drag/context-menu/inline-edit).
15161
15771
  */
15162
15772
  declare function resolveInteractiveElementId(target: EventTarget | null, allElements: readonly PptxElement[], editTemplateMode: boolean): string | null;
15163
15773
 
@@ -15443,6 +16053,12 @@ declare class SmartArt3DRendererComponent implements OnDestroy {
15443
16053
  readonly zIndex: _angular_core.InputSignal<number>;
15444
16054
  /** When true and the 3D scene is active, enables inline node text editing. */
15445
16055
  readonly canEdit: _angular_core.InputSignal<boolean>;
16056
+ /**
16057
+ * Emit the neutral element marker (`data-pptx-element="true"`) on the node
16058
+ * that also carries `data-element-id`: the 3D scene's root, or the box the
16059
+ * SVG fallback branch is drawn into. Set only by the main interactive canvas.
16060
+ */
16061
+ readonly markElement: _angular_core.InputSignal<boolean>;
15446
16062
  private readonly canvas;
15447
16063
  private readonly containerEl;
15448
16064
  private readonly nodeEditor3d;
@@ -15480,7 +16096,7 @@ declare class SmartArt3DRendererComponent implements OnDestroy {
15480
16096
  private applyCommit;
15481
16097
  ngOnDestroy(): void;
15482
16098
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SmartArt3DRendererComponent, never>;
15483
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SmartArt3DRendererComponent, "pptx-smart-art-3d-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
16099
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SmartArt3DRendererComponent, "pptx-smart-art-3d-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "markElement": { "alias": "markElement"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
15484
16100
  }
15485
16101
 
15486
16102
  declare class SmartArtPreviewComponent {
@@ -15788,6 +16404,42 @@ declare function splitCursorCell(element: TablePptxElement, row: number, col: nu
15788
16404
  */
15789
16405
  declare function patchTableData(element: TablePptxElement, patch: Partial<PptxTableData>): TablePptxElement;
15790
16406
 
16407
+ /** One gallery button: the preset it applies plus the key naming it. */
16408
+ interface AnimationPresetEntry {
16409
+ value: PptxAnimationPreset;
16410
+ labelKey: string;
16411
+ }
16412
+ /** One gallery column: a bucket's caption plus the presets filed under it. */
16413
+ interface AnimationPresetCategory {
16414
+ group: AnimationGroup;
16415
+ labelKey: string;
16416
+ tone: string;
16417
+ presets: readonly AnimationPresetEntry[];
16418
+ }
16419
+ /** The i18n key naming a preset, shared by every binding's gallery. */
16420
+ declare function animationPresetLabelKey(preset: PptxAnimationPreset): string;
16421
+ /**
16422
+ * The gallery's columns, in the catalogue's own order.
16423
+ *
16424
+ * That order already leads each bucket with the effects PowerPoint puts first
16425
+ * (Appear / Fade In / Fly In, Spin / Pulse, Fade Out), so the six presets this
16426
+ * tab used to offer still read as the primary set without being rendered twice.
16427
+ */
16428
+ declare const ANIMATION_PRESET_CATEGORIES: readonly AnimationPresetCategory[];
16429
+ /** What the gallery emits when a preset button is pressed. */
16430
+ interface AnimationPresetPick {
16431
+ preset: PptxAnimationPreset;
16432
+ group: AnimationGroup;
16433
+ }
16434
+ declare class RibbonAnimationGalleryComponent {
16435
+ /** True when the deck is not editable or nothing is selected. */
16436
+ readonly disabled: _angular_core.InputSignal<boolean>;
16437
+ readonly addAnimation: _angular_core.OutputEmitterRef<AnimationPresetPick>;
16438
+ protected readonly categories: readonly AnimationPresetCategory[];
16439
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonAnimationGalleryComponent, never>;
16440
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonAnimationGalleryComponent, "pptx-ribbon-animation-gallery", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "addAnimation": "addAnimation"; }, never, never, true, never>;
16441
+ }
16442
+
15791
16443
  declare class RibbonAnimationsSectionComponent {
15792
16444
  private readonly editor;
15793
16445
  readonly slideIndex: _angular_core.InputSignal<number>;
@@ -15795,29 +16447,16 @@ declare class RibbonAnimationsSectionComponent {
15795
16447
  readonly canEdit: _angular_core.InputSignal<boolean>;
15796
16448
  readonly present: _angular_core.OutputEmitterRef<void>;
15797
16449
  readonly toggleInspector: _angular_core.OutputEmitterRef<void>;
15798
- protected readonly entrancePresets: readonly {
15799
- value: PptxAnimationPreset;
15800
- label: string;
15801
- labelKey: string;
15802
- }[];
15803
- protected readonly emphasisPresets: readonly {
15804
- value: PptxAnimationPreset;
15805
- label: string;
15806
- labelKey: string;
15807
- }[];
15808
- protected readonly exitPresets: readonly {
15809
- value: PptxAnimationPreset;
15810
- label: string;
15811
- labelKey: string;
15812
- }[];
15813
16450
  protected hasSel(): boolean;
15814
16451
  protected canAuthor(): boolean;
16452
+ /** Apply the preset a gallery button asked for. */
16453
+ protected onGalleryPick(pick: AnimationPresetPick): void;
15815
16454
  /**
15816
16455
  * Add an animation preset to the selected element on the active slide.
15817
16456
  * Delegates to the immutable helpers in animation-author-helpers.ts and
15818
16457
  * commits the updated animations array via EditorStateService.updateSlide.
15819
16458
  */
15820
- protected addAnimation(preset: PptxAnimationPreset, group: 'entrance' | 'emphasis' | 'exit'): void;
16459
+ protected addAnimation(preset: PptxAnimationPreset, group: AnimationGroup): void;
15821
16460
  /** Remove all animations from the selected element. */
15822
16461
  protected removeAnim(): void;
15823
16462
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonAnimationsSectionComponent, never>;
@@ -15827,6 +16466,10 @@ declare class RibbonAnimationsSectionComponent {
15827
16466
  declare class RibbonArrangeSectionComponent {
15828
16467
  protected readonly editor: EditorStateService;
15829
16468
  readonly slideIndex: _angular_core.InputSignal<number>;
16469
+ /** The active selection, which gates Ungroup and the outline-width spinner. */
16470
+ readonly selectedElement: _angular_core.InputSignal<PptxElement | null>;
16471
+ /** Whether the deck is editable; a read-only deck cannot group or restyle. */
16472
+ readonly canEdit: _angular_core.InputSignal<boolean>;
15830
16473
  readonly formatPainterActive: _angular_core.InputSignal<boolean>;
15831
16474
  readonly canActivateFormatPainter: _angular_core.InputSignal<boolean>;
15832
16475
  readonly toggleFormatPainter: _angular_core.OutputEmitterRef<void>;
@@ -15835,7 +16478,7 @@ declare class RibbonArrangeSectionComponent {
15835
16478
  /** Toggle horizontal/vertical flip on each selected element. */
15836
16479
  protected flipSelected(axis: 'horizontal' | 'vertical'): void;
15837
16480
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonArrangeSectionComponent, never>;
15838
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonArrangeSectionComponent, "pptx-ribbon-arrange-section", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "formatPainterActive": { "alias": "formatPainterActive"; "required": false; "isSignal": true; }; "canActivateFormatPainter": { "alias": "canActivateFormatPainter"; "required": false; "isSignal": true; }; }, { "toggleFormatPainter": "toggleFormatPainter"; }, never, never, true, never>;
16481
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonArrangeSectionComponent, "pptx-ribbon-arrange-section", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "formatPainterActive": { "alias": "formatPainterActive"; "required": false; "isSignal": true; }; "canActivateFormatPainter": { "alias": "canActivateFormatPainter"; "required": false; "isSignal": true; }; }, { "toggleFormatPainter": "toggleFormatPainter"; }, never, never, true, never>;
15839
16482
  }
15840
16483
 
15841
16484
  declare class RibbonColorPopoverComponent {
@@ -15869,6 +16512,8 @@ declare class RibbonDrawingGroupComponent {
15869
16512
  /** Insert the picked preset immediately (selects it and records history). */
15870
16513
  protected onShapeSelect(shape: ShapePresetDef): void;
15871
16514
  protected onArrange(direction: 'up' | 'down'): void;
16515
+ /** Group or ungroup the selection, then close the menu. */
16516
+ protected onGroup(group: boolean): void;
15872
16517
  protected onArrangeEdge(edge: 'front' | 'back'): void;
15873
16518
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonDrawingGroupComponent, never>;
15874
16519
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonDrawingGroupComponent, "pptx-ribbon-drawing-group", never, { "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -15882,8 +16527,8 @@ declare class RibbonEditingSectionComponent {
15882
16527
  }
15883
16528
 
15884
16529
  interface BackstageAction {
15885
- title: string;
15886
- body: string;
16530
+ titleKey: string;
16531
+ bodyKey: string;
15887
16532
  icon: string;
15888
16533
  event: {
15889
16534
  emit: () => void;
@@ -15920,33 +16565,48 @@ declare class RibbonFileSectionComponent {
15920
16565
  readonly openVersionHistory: _angular_core.OutputEmitterRef<void>;
15921
16566
  readonly share: _angular_core.OutputEmitterRef<void>;
15922
16567
  readonly options: _angular_core.OutputEmitterRef<void>;
16568
+ /**
16569
+ * Optional: the backstage only needs a translator for the two strings the
16570
+ * shared helpers build (relative dates, recent-file fallbacks). A host that
16571
+ * has not provided ngx-translate should still get an English backstage
16572
+ * rather than an NG0201 at construction time.
16573
+ */
16574
+ private readonly translate;
16575
+ private readonly t;
15923
16576
  protected readonly templates: readonly BackstageTemplate[];
15924
16577
  protected readonly mainNav: _angular_core.Signal<readonly {
15925
16578
  id: BackstagePage;
15926
16579
  label: string;
16580
+ labelKey: string;
15927
16581
  group?: "footer";
15928
16582
  }[]>;
15929
16583
  protected readonly footerNav: {
15930
16584
  id: BackstagePage;
15931
16585
  label: string;
16586
+ labelKey: string;
15932
16587
  group?: "footer";
15933
16588
  }[];
15934
16589
  protected readonly page: _angular_core.WritableSignal<BackstagePage>;
15935
16590
  protected readonly query: _angular_core.WritableSignal<string>;
15936
16591
  protected readonly recent: _angular_core.WritableSignal<BackstageRecentFile[]>;
15937
- protected readonly title: _angular_core.Signal<string>;
16592
+ protected readonly titleKey: _angular_core.Signal<string>;
15938
16593
  protected readonly visibleRecent: _angular_core.Signal<BackstageRecentFile[]>;
15939
- protected readonly date: typeof formatBackstageDate;
15940
16594
  protected readonly size: typeof formatBackstageSize;
15941
16595
  protected readonly actions: _angular_core.Signal<BackstageAction[]>;
15942
16596
  constructor();
16597
+ protected date(timestamp: number): string;
15943
16598
  protected selectPage(id: BackstagePage): void;
15944
16599
  protected run(event: {
15945
16600
  emit: () => void;
15946
16601
  }): void;
15947
16602
  protected create(templateId: string): void;
15948
16603
  protected openRecent(key: string): void;
15949
- private action;
16604
+ /**
16605
+ * Card order, wording and dictionary keys come from `pptx-viewer-shared`;
16606
+ * this only maps each card to its glyph and to the output that fires it, so
16607
+ * the backstage cannot be worded differently here than in the other four
16608
+ * bindings.
16609
+ */
15950
16610
  private pageActions;
15951
16611
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonFileSectionComponent, never>;
15952
16612
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonFileSectionComponent, "pptx-ribbon-file-section", never, { "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "hasMacros": { "alias": "hasMacros"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; "accountAuth": { "alias": "accountAuth"; "required": false; "isSignal": true; }; }, { "close": "close"; "createPresentation": "createPresentation"; "openFile": "openFile"; "openRecentFile": "openRecentFile"; "save": "save"; "savePpsx": "savePpsx"; "savePptm": "savePptm"; "packageForSharing": "packageForSharing"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "copySlideAsImage": "copySlideAsImage"; "print": "print"; "info": "info"; "signatures": "signatures"; "replace": "replace"; "openPassword": "openPassword"; "openFontEmbedding": "openFontEmbedding"; "openVersionHistory": "openVersionHistory"; "share": "share"; "options": "options"; }, never, never, true, never>;
@@ -15996,25 +16656,79 @@ declare class RibbonFontControlsComponent {
15996
16656
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonFontControlsComponent, "pptx-ribbon-font-controls", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
15997
16657
  }
15998
16658
 
16659
+ /**
16660
+ * The slide layouts the Home tab's "New Slide" split button can insert from.
16661
+ *
16662
+ * A deck's layouts hang off its masters, one list per master, and a layout's
16663
+ * `name` is optional in OOXML. This flattens both facts away so the ribbon can
16664
+ * render a single menu without knowing about masters: one entry per layout, in
16665
+ * document order, always with something to display.
16666
+ *
16667
+ * Pure on purpose: the picker's behaviour is worth testing without a TestBed.
16668
+ */
16669
+
16670
+ /** One entry in the New Slide layout menu. */
16671
+ interface RibbonLayoutOption {
16672
+ /** Package path of the layout, written to the new slide's `layoutPath`. */
16673
+ path: string;
16674
+ /** Display name; falls back to the layout's file stem when OOXML omits one. */
16675
+ name: string;
16676
+ }
16677
+
15999
16678
  declare class RibbonHomeSectionComponent {
16000
16679
  protected readonly editor: EditorStateService;
16680
+ private readonly loader;
16681
+ /** Layouts offered by the New Slide split button (empty for a layout-less deck). */
16682
+ protected readonly layoutOptions: _angular_core.Signal<RibbonLayoutOption[]>;
16001
16683
  readonly slideIndex: _angular_core.InputSignal<number>;
16002
16684
  readonly selectedElement: _angular_core.InputSignal<PptxElement | null>;
16685
+ readonly canEdit: _angular_core.InputSignal<boolean>;
16003
16686
  readonly formatPainterActive: _angular_core.InputSignal<boolean>;
16004
16687
  readonly canActivateFormatPainter: _angular_core.InputSignal<boolean>;
16005
16688
  readonly toggleFormatPainter: _angular_core.OutputEmitterRef<void>;
16006
16689
  readonly findReplace: _angular_core.OutputEmitterRef<void>;
16007
16690
  readonly applyLayout: _angular_core.OutputEmitterRef<string>;
16008
16691
  readonly resetSlide: _angular_core.OutputEmitterRef<void>;
16009
- protected hasSel(): boolean;
16010
16692
  protected copy(): void;
16011
16693
  protected cut(): void;
16012
16694
  protected paste(): void;
16013
16695
  protected onSelectAll(): void;
16014
16696
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonHomeSectionComponent, never>;
16015
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonHomeSectionComponent, "pptx-ribbon-home-section", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "formatPainterActive": { "alias": "formatPainterActive"; "required": false; "isSignal": true; }; "canActivateFormatPainter": { "alias": "canActivateFormatPainter"; "required": false; "isSignal": true; }; }, { "toggleFormatPainter": "toggleFormatPainter"; "findReplace": "findReplace"; "applyLayout": "applyLayout"; "resetSlide": "resetSlide"; }, never, never, true, never>;
16697
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonHomeSectionComponent, "pptx-ribbon-home-section", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "formatPainterActive": { "alias": "formatPainterActive"; "required": false; "isSignal": true; }; "canActivateFormatPainter": { "alias": "canActivateFormatPainter"; "required": false; "isSignal": true; }; }, { "toggleFormatPainter": "toggleFormatPainter"; "findReplace": "findReplace"; "applyLayout": "applyLayout"; "resetSlide": "resetSlide"; }, never, never, true, never>;
16016
16698
  }
16017
16699
 
16700
+ declare class RibbonHyperlinkButtonComponent {
16701
+ protected readonly editor: EditorStateService;
16702
+ /** The host opens the hyperlink edit dialog for the current selection. */
16703
+ readonly openHyperlink: _angular_core.OutputEmitterRef<void>;
16704
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonHyperlinkButtonComponent, never>;
16705
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonHyperlinkButtonComponent, "pptx-ribbon-hyperlink-button", never, {}, { "openHyperlink": "openHyperlink"; }, never, never, true, never>;
16706
+ }
16707
+
16708
+ /**
16709
+ * ribbon-insert-file-picker.ts: the browser-file plumbing behind Insert >
16710
+ * Image / Media.
16711
+ *
16712
+ * Extracted from {@link RibbonInsertSectionComponent} because none of it is
16713
+ * view code: it is a file dialog, a FileReader, and an <img> probe, all of
16714
+ * which the component only ever awaits. Keeping them here holds that component
16715
+ * to this repo's 300-LOC budget and makes the three steps testable without
16716
+ * instantiating a ribbon.
16717
+ *
16718
+ * Every helper resolves rather than rejects. An insert the user cancelled and
16719
+ * an insert the browser could not decode are the same non-event to the caller,
16720
+ * and a rejected promise would only be re-swallowed one frame later.
16721
+ */
16722
+ /** Read a File as a base64 data URL, resolving to '' on failure. */
16723
+ declare function readAsDataUrl(file: File): Promise<string>;
16724
+ /** Resolve an image data URL's natural dimensions (falls back to 400x300). */
16725
+ declare function imageDimensions(dataUrl: string): Promise<{
16726
+ width: number;
16727
+ height: number;
16728
+ }>;
16729
+ /** Open the native file picker for a single file of the given accept type. */
16730
+ declare function pickFile(accept: string, onFile: (file: File) => void): void;
16731
+
16018
16732
  declare class RibbonInsertFieldsComponent {
16019
16733
  private readonly editor;
16020
16734
  private readonly translate;
@@ -16046,13 +16760,21 @@ declare class RibbonInsertSectionComponent {
16046
16760
  private readonly translate;
16047
16761
  readonly slideIndex: _angular_core.InputSignal<number>;
16048
16762
  readonly newChartType: _angular_core.InputSignal<PptxChartType>;
16763
+ readonly newShapeType: _angular_core.InputSignal<ShapePresetType>;
16049
16764
  readonly openSmartArtDialog: _angular_core.OutputEmitterRef<void>;
16050
16765
  readonly openEquationDialog: _angular_core.OutputEmitterRef<void>;
16766
+ /** "Hyperlink"; the host opens the hyperlink edit dialog for the selection. */
16767
+ readonly openHyperlink: _angular_core.OutputEmitterRef<void>;
16051
16768
  readonly chartTypeChange: _angular_core.OutputEmitterRef<PptxChartType>;
16769
+ readonly shapeTypeChange: _angular_core.OutputEmitterRef<ShapePresetType>;
16052
16770
  /** Chart types offered in the Insert tab dropdown (shared source of truth). */
16053
16771
  protected readonly chartTypes: readonly InsertChartTypeOption[];
16772
+ /** Geometries offered by the Insert tab's shape picker (shared catalogue). */
16773
+ protected readonly shapePresets: readonly ShapePresetDef[];
16054
16774
  protected insertText(): void;
16055
- protected insertShape(kind: 'rect' | 'ellipse' | 'line'): void;
16775
+ protected setShapeType(event: Event): void;
16776
+ /** Insert the geometry currently chosen in the shape-type dropdown. */
16777
+ protected insertShape(): void;
16056
16778
  protected insertTable(): void;
16057
16779
  protected setChartType(event: Event): void;
16058
16780
  protected insertChart(): void;
@@ -16062,10 +16784,8 @@ declare class RibbonInsertSectionComponent {
16062
16784
  protected insertMedia(): void;
16063
16785
  private addImageFile;
16064
16786
  private addMediaFile;
16065
- /** Open the native file picker for a single file of the given accept type. */
16066
- private pickFile;
16067
16787
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonInsertSectionComponent, never>;
16068
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonInsertSectionComponent, "pptx-ribbon-insert-section", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "newChartType": { "alias": "newChartType"; "required": false; "isSignal": true; }; }, { "openSmartArtDialog": "openSmartArtDialog"; "openEquationDialog": "openEquationDialog"; "chartTypeChange": "chartTypeChange"; }, never, never, true, never>;
16788
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonInsertSectionComponent, "pptx-ribbon-insert-section", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "newChartType": { "alias": "newChartType"; "required": false; "isSignal": true; }; "newShapeType": { "alias": "newShapeType"; "required": false; "isSignal": true; }; }, { "openSmartArtDialog": "openSmartArtDialog"; "openEquationDialog": "openEquationDialog"; "openHyperlink": "openHyperlink"; "chartTypeChange": "chartTypeChange"; "shapeTypeChange": "shapeTypeChange"; }, never, never, true, never>;
16069
16789
  }
16070
16790
 
16071
16791
  declare class RibbonParagraphControlsComponent {
@@ -16174,6 +16894,30 @@ declare class RibbonReviewSectionComponent {
16174
16894
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonReviewSectionComponent, "pptx-ribbon-review-section", never, { "spellCheckEnabled": { "alias": "spellCheckEnabled"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, { "comments": "comments"; "spellCheckChange": "spellCheckChange"; "a11y": "a11y"; "openCompare": "openCompare"; "language": "language"; "link": "link"; }, never, never, true, never>;
16175
16895
  }
16176
16896
 
16897
+ /** Grouping needs an editable deck and at least two selected elements. */
16898
+ declare function canGroupSelection(canEdit: boolean, selectedCount: number): boolean;
16899
+ /** Ungrouping needs an editable deck and a selection that IS a group. */
16900
+ declare function canUngroupSelection(canEdit: boolean, element: PptxElement | null): boolean;
16901
+ /** An outline width only exists on an element that carries shape properties. */
16902
+ declare function canSetStrokeWidth(canEdit: boolean, element: PptxElement | null): boolean;
16903
+ /** The stroke width to show for a selection, defaulted for a shape without one. */
16904
+ declare function strokeWidthOf(element: PptxElement | null): number;
16905
+ declare class RibbonShapeExtrasComponent {
16906
+ protected readonly editor: EditorStateService;
16907
+ readonly slideIndex: _angular_core.InputSignal<number>;
16908
+ readonly selectedElement: _angular_core.InputSignal<PptxElement | null>;
16909
+ readonly canEdit: _angular_core.InputSignal<boolean>;
16910
+ /** Grouping needs two elements; the multi-select is the source of truth. */
16911
+ protected readonly canGroup: _angular_core.Signal<boolean>;
16912
+ protected readonly canUngroup: _angular_core.Signal<boolean>;
16913
+ protected readonly canSetStroke: _angular_core.Signal<boolean>;
16914
+ protected readonly strokeWidth: _angular_core.Signal<number>;
16915
+ /** Write the typed outline width through the history-integrated patch path. */
16916
+ protected onStrokeWidth(event: Event): void;
16917
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonShapeExtrasComponent, never>;
16918
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonShapeExtrasComponent, "pptx-ribbon-shape-extras", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
16919
+ }
16920
+
16177
16921
  declare class RibbonSlideshowSectionComponent {
16178
16922
  readonly slideCount: _angular_core.InputSignal<number>;
16179
16923
  readonly showSubtitles: _angular_core.InputSignal<boolean>;
@@ -16183,6 +16927,7 @@ declare class RibbonSlideshowSectionComponent {
16183
16927
  readonly presentFromCurrent: _angular_core.OutputEmitterRef<void>;
16184
16928
  readonly presenter: _angular_core.OutputEmitterRef<void>;
16185
16929
  readonly broadcast: _angular_core.OutputEmitterRef<void>;
16930
+ /** "Custom show"; the host opens the custom-show manager dialog. */
16186
16931
  readonly openCustomShows: _angular_core.OutputEmitterRef<void>;
16187
16932
  readonly openSetUpSlideShow: _angular_core.OutputEmitterRef<void>;
16188
16933
  readonly rehearseTimings: _angular_core.OutputEmitterRef<void>;
@@ -16238,12 +16983,10 @@ declare class RibbonViewSectionComponent {
16238
16983
  readonly showRulers: _angular_core.InputSignal<boolean>;
16239
16984
  readonly showGuides: _angular_core.InputSignal<boolean>;
16240
16985
  readonly snapToGrid: _angular_core.InputSignal<boolean>;
16986
+ /** Whether dragging snaps to other shapes' edges (active-state styling). */
16241
16987
  readonly snapToShape: _angular_core.InputSignal<boolean>;
16242
16988
  readonly eyedropperActive: _angular_core.InputSignal<boolean>;
16243
16989
  readonly openSorter: _angular_core.OutputEmitterRef<void>;
16244
- readonly toggleNotes: _angular_core.OutputEmitterRef<void>;
16245
- readonly print: _angular_core.OutputEmitterRef<void>;
16246
- readonly openShortcuts: _angular_core.OutputEmitterRef<void>;
16247
16990
  readonly openMasterView: _angular_core.OutputEmitterRef<void>;
16248
16991
  readonly toggleGrid: _angular_core.OutputEmitterRef<void>;
16249
16992
  readonly toggleRulers: _angular_core.OutputEmitterRef<void>;
@@ -16255,7 +16998,7 @@ declare class RibbonViewSectionComponent {
16255
16998
  readonly zoomToFit: _angular_core.OutputEmitterRef<void>;
16256
16999
  readonly toggleEyedropper: _angular_core.OutputEmitterRef<void>;
16257
17000
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonViewSectionComponent, never>;
16258
- 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"; "toggleNotes": "toggleNotes"; "print": "print"; "openShortcuts": "openShortcuts"; "openMasterView": "openMasterView"; "toggleGrid": "toggleGrid"; "toggleRulers": "toggleRulers"; "toggleGuides": "toggleGuides"; "toggleSelectionPane": "toggleSelectionPane"; "toggleSnapToGrid": "toggleSnapToGrid"; "toggleSnapToShape": "toggleSnapToShape"; "addGuide": "addGuide"; "zoomToFit": "zoomToFit"; "toggleEyedropper": "toggleEyedropper"; }, never, never, true, never>;
17001
+ 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"; "openMasterView": "openMasterView"; "toggleGrid": "toggleGrid"; "toggleRulers": "toggleRulers"; "toggleGuides": "toggleGuides"; "toggleSelectionPane": "toggleSelectionPane"; "toggleSnapToGrid": "toggleSnapToGrid"; "toggleSnapToShape": "toggleSnapToShape"; "addGuide": "addGuide"; "zoomToFit": "zoomToFit"; "toggleEyedropper": "toggleEyedropper"; }, never, never, true, never>;
16259
17002
  }
16260
17003
 
16261
17004
  /**
@@ -16426,6 +17169,30 @@ interface SwipeDismissDrag {
16426
17169
  */
16427
17170
  declare function createSwipeDismissDrag(onDismiss: () => void): SwipeDismissDrag;
16428
17171
 
17172
+ /**
17173
+ * ruler-strips.ts: the visibility gate for the slide canvas's ruler strips.
17174
+ *
17175
+ * Deliberately holds NO tick or guide-drop maths: it forwards to the shared
17176
+ * `generateTicks` (the single source of truth every binding renders from), and
17177
+ * exists only because Angular components cannot be mounted in this package's
17178
+ * unit tests, so the "rulers off -> no ticks / rulers on -> shared ticks" rule
17179
+ * needs a seam that is testable without a TestBed. It replaces the deleted
17180
+ * `ruler-ticks.ts`, which generated its OWN quarter-inch, inches-only ticks and
17181
+ * so disagreed with React, Vue, Svelte and Vanilla at every zoom level.
17182
+ */
17183
+
17184
+ /** Ticks for one ruler strip, or nothing at all while the strip is hidden. */
17185
+ declare function rulerStripTicks(visible: boolean, slideLengthPx: number, scale: number, unit: RulerUnit): ReadonlyArray<Tick>;
17186
+ /**
17187
+ * Selected-element extent projected onto a strip, in scaled px, or null when
17188
+ * nothing (or more than one thing) is selected. PowerPoint shades this span on
17189
+ * both rulers; React and Svelte do the same.
17190
+ */
17191
+ declare function rulerHighlight(start: number | undefined, span: number | undefined, scale: number): {
17192
+ start: number;
17193
+ span: number;
17194
+ } | null;
17195
+
16429
17196
  /**
16430
17197
  * collaboration-writeback.ts: elected-writer serialization helper for the
16431
17198
  * Angular collaboration service.
@@ -16877,11 +17644,11 @@ declare class TitleBarComponent {
16877
17644
  /** Resolved Quick Access options (host-supplied, or the default trio+). */
16878
17645
  protected readonly qat: _angular_core.Signal<ViewerQuickAccessOptions>;
16879
17646
  /**
16880
- * Configured Quick Access commands beyond the dedicated save/undo/redo
16881
- * buttons (which keep their own gating + labels). Rendered as text-label
16882
- * buttons routed through {@link onQuickCommand}.
17647
+ * The Quick Access options narrowed to the commands beyond the dedicated
17648
+ * save/undo/redo buttons. Reusing {@link QuickAccessStripComponent} for the
17649
+ * remainder means those buttons carry real icons rather than a letter glyph.
16883
17650
  */
16884
- protected readonly extraQuickCommands: _angular_core.Signal<QuickAccessCommandDefinition[]>;
17651
+ protected readonly extraQat: _angular_core.Signal<ViewerQuickAccessOptions>;
16885
17652
  /**
16886
17653
  * Route a Quick Access press: keep the dedicated save/undo/redo outputs
16887
17654
  * (existing host wiring, `hiddenActions` gating) and forward everything
@@ -17008,5 +17775,5 @@ declare const SEQUENCE_OPTIONS: ReadonlyArray<{
17008
17775
  labelKey: string;
17009
17776
  }>;
17010
17777
 
17011
- export { ALIGN_OPTIONS, AUDIENCE_HASH, AUDIENCE_NONCE_KEY, AVATAR_COLOR_SWATCHES, AccessibilityPanelComponent, AccessibilityService, AccountPageComponent, ActionSettingsPanelComponent, AdvancedChartEditorComponent, AiChangeOverlayComponent, AiChatPanelComponent, AiChatService, AiComposerComponent, AiFocusBarComponent, AiFocusHighlightOverlayComponent, AiMessageListComponent, AiPanelStore, AiProposalCardComponent, AiSettingsSectionComponent, AiToolCallCardComponent, AnimationAuthorPanelComponent, AnimationPanelComponent, AnimationPlaybackService, AutosaveService, BroadcastDialogComponent, CHART_EDITOR_STYLES, CURSOR_PALETTE, CanvasFitService, ChartAxisOptionsComponent, ChartAxisStyleOptionsComponent, ChartComboTypeOptionsComponent, ChartDataEditorComponent, ChartDataLabelOptionsComponent, ChartDatapointOptionsComponent, ChartDisplayOptionsComponent, ChartElementViewComponent, ChartErrorBarOptionsComponent, ChartMarkerOptionsComponent, ChartPartSelectionService, ChartPrimitivesComponent, ChartRendererComponent, ChartTrendlineOptionsComponent, CollaborationCursorsComponent, CollaborationService, ColorChangedImageComponent, CommentsPanelComponent, CommentsService, ComparePanelComponent, ConnectorRendererComponent, ConnectorTextOverlayComponent, CustomShowsComponent, DATA_TABLE_HEADER_H, DATA_TABLE_KEY_W, DATA_TABLE_PADDING, DATA_TABLE_ROW_H, DEFAULT_BOUNDS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_COLOR_SCHEME, DEFAULT_FILL_COLOR, DEFAULT_LAYOUT, DEFAULT_PALETTE$1 as DEFAULT_PALETTE, 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, 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, GradientPickerComponent, HANDOUT_OPTIONS, HeaderFooterDialogComponent, HyperlinkDialogComponent, 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, MediaPreviewComponent, MediaPropertiesPanelComponent, MediaRendererComponent, MediaTrimTimelineComponent, MobileBottomBarComponent, MobileMenuSheetComponent, MobilePresenterViewComponent, MobileSheetComponent, MobileSlidesSheetComponent, MobileToolbarComponent, ModalDialogComponent, Model3DRendererComponent, NotesHandoutCardComponent, NotesPanelComponent, NotesToolbarComponent, OleRendererComponent, POWER_POINT_VIEWER_PROVIDERS, PRESENTER_CHANNEL_NAME, PRESENTER_MSG_ORIGIN, PasswordProtectionDialogComponent, PasswordStrengthMeterComponent, PowerPointViewerComponent, PresentationAnnotationOverlayComponent, PresentationAnnotationsService, PresentationOverlayComponent, PresentationPropertiesPanelComponent, PresentationSettingsCardComponent, PresentationSubtitleBarComponent, PresentationTransitionOverlayComponent, PresenterViewComponent, PresenterWindowService, PrintDialogComponent, PrintService, PrintSettingsPanelComponent, PropertiesDialogComponent, REPEAT_MODE_OPTIONS, RESIZE_HANDLES, RULER_THICKNESS, RemoteSelectionOverlayComponent, RibbonAnimationsSectionComponent, RibbonArrangeSectionComponent, RibbonColorPopoverComponent, RibbonComponent, RibbonDesignSectionComponent, RibbonDrawSectionComponent, RibbonDrawingGroupComponent, RibbonEditingSectionComponent, RibbonFileSectionComponent, RibbonFontControlsComponent, RibbonHomeSectionComponent, RibbonInsertFieldsComponent, RibbonInsertSectionComponent, RibbonParagraphControlsComponent, RibbonPrimaryRowComponent, RibbonReviewSectionComponent, RibbonSlideshowSectionComponent, RibbonTransitionsSectionComponent, RibbonViewSectionComponent, RulerGuidesService, SEQUENCE_OPTIONS, SEVERITY_GROUPS, SEVERITY_LABELS, SHORTCUT_REFERENCE_ITEMS, SLIDE_PX_PER_INCH, SLIDE_TRANSITION_KEYFRAMES, 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, SlideCanvasComponent, SlideDefaultInspectorComponent, SlideDiffChangesComponent, SlideDiffRowComponent, SlideDiffThumbnailsComponent, SlideSizeCardComponent, SlideSorterOverlayComponent, SlideThemeOverridePanelComponent, SlidesPanelComponent, SmartArt3DRendererComponent, SmartArt3DService, SmartArtPreviewComponent, SmartArtPropertiesComponent, SmartArtRendererComponent, StatusBarComponent, TABLE_STRUCTURE_TOGGLES, TEXT_DIRECTION_OPTIONS, THEME_CATALOG, TIMING_CURVE_OPTIONS, TRIGGER_OPTIONS, TYPE_LABELS, TableCellAdvancedFillComponent, TableCellFormattingComponent, TableDataEditorComponent, TablePropertiesComponent, TableRendererComponent, TableResizeOverlayComponent, TableSelectionService, TextAdvancedPanelComponent, ThemeEditorFieldsComponent, ThemeGalleryComponent, ThemeSelectorCardComponent, TitleBarComponent, VALIGN_OPTIONS, VIEWER_THEME, VersionHistoryPanelComponent, ViewerCanvasEditingService, ViewerCollabCursorService, ViewerCollaborationSessionService, ViewerCompareService, ViewerCustomShowsService, ViewerDialogsService, ViewerDocumentPropertiesService, ViewerExportService, ViewerExtraDialogsComponent, ViewerFileIOService, ViewerFindReplaceService, ViewerFormatPainterService, ViewerInspectorPanelService, ViewerKeyboardService, ViewerMobileSheetService, ViewerPresentationModeService, ViewerThemeGalleryService, ViewerTouchGesturesService, ViewerZoomService, WEBM_MIME_CANDIDATES, WriteBackScheduler, ZoomNavigationService, ZoomRendererComponent, ZoomTargetService, addCategory, addCommentToList, addGradientStopPatch, addItem, addSeries, addSubItem, advanceStep, aiToggleVisible, alignPatch, animationFor, annotationMapToInkInserts, applyAcceptedDiff, applyAnimationPreset, applyFindReplacements, applyFormatToElement, applyMove, applyResize, applyTableStylePreset, asMediaElement, assignUserColor, attachTouchGestures, beginNodeEdit, 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, buildModel3DContainerStyle, buildModel3DViewModel, buildOleActionModel, buildOleInfoRows, buildPatternFillCss, buildPrintHtmlDocument as buildPrintDocument, buildPropertiesPatch, buildRegionMapViewModel, buildSaveSlides, buildShareUrl, buildSmartArtInsertElement, buildSmartArtNodes, buildStockViewModel, buildSurfaceViewModel, buildTableViewModel, buildTreemapViewModel, buildTrimFragment, buildWaterfallViewModel, buildZeroLine, buildZoomContainerStyle, buildZoomViewModel, bulletIndentPx, canAddTopLevelNode, canRemoveTopLevelNode, canStartBroadcast, canStartShare, canUseClipboard, captionDisplayText, cellRunStyle, cellStyleToStyleMap, cellTdStyle, changeCountLabel, changeIcon, characterSpacingPatch, checkFontAvailable, clampCursorPosition, clampGifDimensions, clampIndex, clampNotesFontSize, clampScale, clampStep, clearAllLocalViewerData, clearAudienceContent, cn, collectAccessibilityIssues, collectElementText, collectSlideText, collectStoredChats, collectUsedFontFamilies, columnWidthStyle, commitNodeText, computeAlign, computeAxisTitlePrimitives, computeBarRects, computeBubbleRadius, computeCornerHandle, computeDataTablePrimitives, computeDistribute, computeDrawingViewBox, computeErrorBarPrimitives, computeFocusTargets, computeHandleBoxes, computeHandoutLayout, computeIsMobile, computeIsTablet, computeLinePoints, computeLinearRegression, computePageCount, computePieLayout, computePieSlicePath, computePieSlices, computePlotLayout, computeRSquared, computeRadarPoints, computeScatterDots, computeSelectionBoxes, computeSingleSelected, computeSlideIndices, computeSnap, computeStackedBarRects, computeStackedValueRange, computeTextLines, computeTimerProgress, computeTrendlinePrimitives, computeValueRange, convertOmmlToMathMl, copyFormatFromElement, countAccessibilityIssues, countAnnotationStrokes, createAngularAiBridge, createCustomShow, createSwipeDismissDrag, createWebrtcBundle, createWebsocketBundle, cssObjectToStyleMap, currentColorScheme, currentLayout, currentStyle, defaultCssVars, defaultRadius, defaultThemeColors, deleteElementsByIds, deleteVersion as deleteRecoveryVersion, demoteNode, deriveModel3DBlobUrl, derivePresenceList, describeSmartArtBounds, disableGlowPatch, disableInnerShadowPatch, disableOuterShadowPatch, disableReflectionPatch, disableSoftEdgePatch, duplicateElementById, durationOf, effectsStateOf, enableGlowPatch, enableInnerShadowPatch, enableOuterShadowPatch, enableReflectionPatch, enableSoftEdgePatch, encodeGif, estimatePageCount, evenColumnWidths, evenRowHeights, exitPresentationFullscreen, exportAiChatLogs, extractPathPoints, eyedropperAvailable, fillColorOf, findInSlides, findOwningSlideIndex, findSlideIndexByElementId, fitPolynomial, fitZoom, focusTargetChips, fontMimeForFormat, fontSizeOf, formatAutoNumber, formatAxisValue, formatBytes, formatCursorLabel, formatElapsed, formatFileSize, formatPropertyDate, formatTime, fpsToFrameIntervalMs, generateBroadcastRoomId, generateCommentId, generateCustomShowId, generatePressureCircles, generateRulerTicks, getClrChangeParams, getContainerStyle, getDuotoneFilterDef, getImageSrc, getLocalStorageUsageSummary, getOleAriaLabel, getOleBadgeLabel, getOleDisplayName, getOleDownloadFileName, getOleTypeColor, getOleTypeLabel, getPasswordStrength, getPatternSvg, getPlaceholderStyle, getVersions as getRecoveryVersions, getResolvedShapeClipPath, getResolvedShapeClipPathFor, getShapeFillStrokeStyle, getSlideBackgroundStyle, getSlideTransitionAnimations, getSmartArtNodeBounds, getSpeechRecognitionCtor, getTextBlockStyle, getTextWarp, getTouchDistance, getWarpCategory, getWarpPath, gradientStateFromStyle, gradientStateOf, gradientStatePatch, gridColumns, groupElements, groupIssuesBySeverity, hasAnimation, hasCopyableFormat, hasExistingLink, hasExitedFullscreen, hasGradientFill, hasPressureVariation, hasVisibleSlideAfter, headerLabel, inkViewBox, insertColumn, insertRow, interpolateWidth, isAudienceTab, isBold, isBrowserOpenableMime, isChildNode, isElementInteractive, isInjectableUrl, isItalic, isPpactionUrl, isPresenterMessage, isSigned, isTextElement, isTwoTableFocus, isUnderline, isUrlSafe, isValidRoomId, isViewportBackgroundPressTarget, isZoomActivationKey, issueTrackKey, issueTypeLabel, keyToLabel, latexToMathml, linePointsToSvgString, lineSpacingPatch, loadAudienceContent, mergeCaptionResults, mergeDown, mergeRight, mergeSelection, 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, pendingElementStyles, pickColorByClickFallback, pickSupportedMimeType, planGifFrames, planVideoSegments, pointsToSvgPathD, presenceToCursors, presetByLayout, presetsForCategory, pressuresToWidths, prevVisibleIndex, projectDrawingShapes, promoteNode, provideViewerTheme, radarAngle, radarRingPoints, recordWebm, redistributeColumnWidth, removeAnimation, removeCategory, removeColumn, removeCommentFromList, removeElementAnimation, removeGradientStopPatch, removeNode, removeRow, removeSeries, renderToCanvas, reorderAnimationDown, reorderAnimationUp, replaceInSlides, replaceMatch, requestPresentationFullscreen, resizeElement, resolveCaptionTracks, resolveChartKind, resolveFontVariant, resolveHyperlinkHref, resolveInteractiveElementId, resolveMediaSrc, resolveOleType, resolveParagraphBullet, resolvePresenterNotes, resolveProfileInitial, resolveRegionCode, resolveSlideAutoAdvanceMs, resolvePalette as resolveSmartArtPalette, resolveThemeCatalogEntry, resolveTransitionDuration, revealedElementStyles, routeOrthogonalConnector, rowStyle, sampleColorFromSlide, sanitizeColor, sanitizeSlideIndex, sanitizeUserName, saveViewerProfile, scanAvailableFonts, searchSlides, seedBroadcastFields, seedHyperlinkDraft, seedPropertiesDraft, seedShareFields, segmentFrameCount, selectValue, sendBackward, sendToBack, sequentialColorScale, serializeWriteBack, seriesColor, setAnimationEmphasis, setAnimationEntrance, setAnimationExit, setAxis, setAxisLogScale, setAxisTitleStyle, setCategoryLabel, setCellText, setColorScheme, setDataLabels, setDataPointExplosion, setDataPointFill, setDataPointLabel, setDelay, setDirection, setDuration, 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, smartArtNodes, paletteColour as smartArtPaletteColour, snapToGridStep, splitCursorCell, splitMergedCell, statusKind, statusLabel$1 as statusLabel, storeAudienceContent, stringFromEvent, strokeColorOf, strokeToInkElement, styleShadowFilter, textAdvancedPatch, textAdvancedStateFromStyle, textAdvancedStateOf, textColorOf, textDirectionPatch, textStyleOf, textStylePatch, themeStyle, themeToCssVars, thumbnailHeight, thumbnailZoom, toggleCommentResolvedInList, toggleNodeBold, toggleNodeItalic, toggleSheet, topLevelNodeCount, transformSelectedTextCase, translationsEn, ungroupElements, updateElementById, updateGlowPatch, updateGradientStopPatch, updateInnerShadowPatch, updateOuterShadowPatch, updateReflectionPatch, vAlignPatch, validatePassword, validatePrintSettings, validateRoomId, valueToY, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, waypointsToPathD, worstStatus, zoomTargetSlideIndex };
17012
- export type { AccessibilityIssueGroup, AccountAuthConfig, ActionDescriptor, AiCanvasHighlight, AiChatInitState, AiLogChat, AiLogExport, AiLogFormat, AiLogMessage, AiPanelSelectionAccessors, AlignBox, AlignMode, AnimationClickGroup, AnimationGroup, AnnotationInkInsert, AnnotationStroke, AttachTouchGesturesConfig, AwarenessLike, BarRect, Box, BridgeDeps, BroadcastConfig, BroadcastDefaults, CSSProperties, CanvasSize, CellCoord, CellParagraph, CellTextRun, ChartPartRef, ChartPartSelection, ChartValueDrag, ChartViewModel, ClassValue, ClrChangeParams, CollaborationConfig, CollaborationRole, RouterRect as ConnectorObstacle, RouterPoint as ConnectorPoint, ConnectorRouting, CopiedFormat, CornerHandleBox, CustomShow, CustomThemeEdit, DestroyableYDoc, DiagonalBorderInfo, DistributeMode, DocumentProperties, DrawingViewBox, DuotoneFilterDef, EffectsState, EmbeddedFontStyles, EquationTemplate, EyedropperResult, FindOptions, FindResult, FocusChip, FocusSelectionInput, GifFrame, GifFramePlan, GifPlanOptions, GlowState, GradientState, GradientStop$1 as GradientStop, GroupResult, HandleBox, HandoutSlidesPerPage, HyperlinkDraft, InkPoint, InkStroke, InlineEditState, InnerShadowState, LegendEntry, LinePoint, LinearFit, LocalIdentity, LocalStorageUsageSummary, LocaleCatalogEntry, MobileSheetKey, Model3DViewModel, NodeEditBox, NotesSegmentViewModel, ObjectUrlFactory, OleActionModel, OleInfoRow, OuterShadowState, OverallSignatureStatus, PartitionedSlides, PathPoint, PieSliceGeometry, PieSliceOptions, PlotLayout, PlotLayoutOptions, PositionUpdate, PowerPointViewerAPI, PptxAiBridge, PptxAiConfig, PptxAiConnection, PptxAiContextStrategy, PptxAiElementUpdate, PptxAiToolName, PptxAiUIMessage, PptxAiWritePolicy, PresentationTool, PresenterExitMessage, PresenterMessage, PresenterNotes, PresenterSlideChangeMessage, 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, ResolvedFontVariant, ResolvedOleType, RulerTick, ScatterDot, SelectionBox, 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, TextAdvancedChanges, TextAdvancedState, TextStyleChanges, TextWarpCssDef, TextWarpDef, TextWarpPathDef, ThemeCatalogEntry, TimerProgress, ToolbarActionId, TouchGestureCallbacks, TranslationKey, UngroupResult, ValueRange, VideoPlanOptions, VideoSegmentPlan, ViewerMode, ViewerProfile, ViewerSettings, ViewerTheme, ViewerThemeColors, ZoomViewModel };
17778
+ export { ALIGN_OPTIONS, ANIMATION_PRESET_CATEGORIES, AUDIENCE_HASH, AUDIENCE_NONCE_KEY, AVATAR_COLOR_SWATCHES, AccessibilityPanelComponent, AccessibilityService, AccountPageComponent, ActionSettingsPanelComponent, AdvancedChartEditorComponent, AiChangeOverlayComponent, AiChatPanelComponent, AiChatService, AiComposerComponent, AiFocusBarComponent, AiFocusHighlightOverlayComponent, AiMessageListComponent, AiPanelStore, AiProposalCardComponent, AiSettingsSectionComponent, AiToolCallCardComponent, AnimationAuthorPanelComponent, AnimationPanelComponent, AnimationPlaybackService, AutosaveService, BroadcastDialogComponent, CHART_EDITOR_STYLES, CURSOR_PALETTE, CanvasFitService, ChartAxisOptionsComponent, ChartAxisStyleOptionsComponent, ChartComboTypeOptionsComponent, ChartDataEditorComponent, ChartDataLabelOptionsComponent, ChartDatapointOptionsComponent, ChartDisplayOptionsComponent, ChartElementViewComponent, ChartErrorBarOptionsComponent, ChartMarkerOptionsComponent, ChartPartSelectionService, ChartPrimitivesComponent, ChartRendererComponent, ChartTrendlineOptionsComponent, CollaborationCursorsComponent, CollaborationService, ColorChangedImageComponent, CommentsPanelComponent, CommentsService, ComparePanelComponent, ConnectorRendererComponent, ConnectorTextOverlayComponent, CustomShowsComponent, DATA_TABLE_HEADER_H, DATA_TABLE_KEY_W, DATA_TABLE_PADDING, DATA_TABLE_ROW_H, DEFAULT_BOUNDS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_COLOR_SCHEME, DEFAULT_FILL_COLOR, DEFAULT_LAYOUT, DEFAULT_PALETTE$1 as DEFAULT_PALETTE, 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, 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, GradientPickerComponent, HANDOUT_OPTIONS, HeaderFooterDialogComponent, HyperlinkDialogComponent, 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, MediaPreviewComponent, MediaPropertiesPanelComponent, MediaRendererComponent, MediaTrimTimelineComponent, MobileBottomBarComponent, MobileMenuSheetComponent, MobilePresenterViewComponent, MobileSheetComponent, MobileSlidesSheetComponent, MobileToolbarComponent, ModalDialogComponent, Model3DRendererComponent, NotesHandoutCardComponent, NotesPanelComponent, NotesToolbarComponent, OleRendererComponent, POWER_POINT_VIEWER_PROVIDERS, PRESENTER_CHANNEL_NAME, PRESENTER_MSG_ORIGIN, PX_PER_CM, PX_PER_INCH, PasswordProtectionDialogComponent, PasswordStrengthMeterComponent, PowerPointViewerComponent, PresentationAnnotationOverlayComponent, PresentationAnnotationsService, PresentationOverlayComponent, PresentationPropertiesPanelComponent, PresentationSettingsCardComponent, PresentationSubtitleBarComponent, PresentationTransitionOverlayComponent, PresenterViewComponent, PresenterWindowService, PrintDialogComponent, PrintService, PrintSettingsPanelComponent, PropertiesDialogComponent, REPEAT_MODE_OPTIONS, RESIZE_HANDLES, RULER_FONT_SIZE, RULER_THICKNESS, RemoteSelectionOverlayComponent, RibbonAnimationGalleryComponent, RibbonAnimationsSectionComponent, RibbonArrangeSectionComponent, RibbonColorPopoverComponent, RibbonComponent, RibbonDesignSectionComponent, RibbonDrawSectionComponent, RibbonDrawingGroupComponent, RibbonEditingSectionComponent, RibbonFileSectionComponent, RibbonFontControlsComponent, RibbonHomeSectionComponent, RibbonHyperlinkButtonComponent, RibbonInsertFieldsComponent, RibbonInsertSectionComponent, RibbonParagraphControlsComponent, RibbonPrimaryRowComponent, RibbonReviewSectionComponent, RibbonShapeExtrasComponent, RibbonSlideshowSectionComponent, RibbonTransitionsSectionComponent, RibbonViewSectionComponent, RulerGuidesService, SEQUENCE_OPTIONS, SEVERITY_GROUPS, SEVERITY_LABELS, SHORTCUT_REFERENCE_ITEMS, SLIDE_TRANSITION_KEYFRAMES, 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, SmartArt3DService, 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, TRIGGER_OPTIONS, TYPE_LABELS, TableCellAdvancedFillComponent, TableCellFormattingComponent, TableDataEditorComponent, TablePropertiesComponent, TableRendererComponent, TableResizeOverlayComponent, TableSelectionService, TagsCardComponent, Text3DBevelSectionComponent, Text3DPanelComponent, TextAdvancedPanelComponent, ThemeEditorFieldsComponent, ThemeGalleryComponent, ThemeSelectorCardComponent, TitleBarComponent, TransitionDirectionPickerComponent, TransitionPreviewComponent, VALIGN_OPTIONS, VIEWER_THEME, VersionHistoryPanelComponent, ViewerCanvasEditingService, ViewerCollabCursorService, ViewerCollaborationSessionService, ViewerCompareService, ViewerCustomShowsService, ViewerDialogsService, ViewerDocumentPropertiesService, ViewerExportService, ViewerExtraDialogsComponent, ViewerFileIOService, ViewerFindReplaceService, ViewerFormatPainterService, ViewerInspectorPanelService, ViewerKeyboardService, ViewerMobileSheetService, ViewerPresentationModeService, ViewerThemeGalleryService, ViewerTouchGesturesService, ViewerZoomService, WEBM_MIME_CANDIDATES, WriteBackScheduler, ZoomNavigationService, ZoomRendererComponent, ZoomTargetService, addCategory, addCommentToList, addGradientStopPatch, addItem, addSeries, addSubItem, advanceStep, aiToggleVisible, alignPatch, animationFor, animationPresetLabelKey, annotationMapToInkInserts, applyAcceptedDiff, applyAnimationPreset, applyFindReplacements, applyFormatToElement, applyMove, applyResize, applyTableStylePreset, asMediaElement, assignUserColor, attachTouchGestures, 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, buildModel3DContainerStyle, buildModel3DViewModel, buildOleActionModel, buildOleInfoRows, buildPatternFillCss, buildPrintHtmlDocument as buildPrintDocument, buildPropertiesPatch, buildRegionMapViewModel, buildSaveSlides, buildShareUrl, buildSmartArtInsertElement, buildSmartArtNodes, buildStockViewModel, buildSurfaceViewModel, buildTableViewModel, buildTreemapViewModel, buildTrimFragment, buildWaterfallViewModel, buildZeroLine, buildZoomContainerStyle, buildZoomViewModel, bulletIndentPx, canAddTopLevelNode, canGroupSelection, canRemoveTopLevelNode, canSetStrokeWidth, canStartBroadcast, canStartShare, canUngroupSelection, canUseClipboard, captionDisplayText, cellRunStyle, cellStyleToStyleMap, cellTdStyle, changeCountLabel, changeIcon, characterSpacingPatch, checkFontAvailable, clampCursorPosition, clampGifDimensions, clampIndex, clampNotesFontSize, clampScale, clampStep, clearAllLocalViewerData, clearAudienceContent, cn, collectAccessibilityIssues, collectElementText, collectSlideText, collectStoredChats, collectUsedFontFamilies, columnWidthStyle, commitNodeText, computeAlign, computeAxisTitlePrimitives, computeBarRects, computeBubbleRadius, computeCornerHandle, computeDataTablePrimitives, computeDistribute, computeDrawingViewBox, computeErrorBarPrimitives, computeFocusTargets, computeHandleBoxes, computeHandoutLayout, computeIsMobile, computeIsTablet, computeLinePoints, computeLinearRegression, computePageCount, computePieLayout, computePieSlicePath, computePieSlices, computePlotLayout, computeRSquared, computeRadarPoints, computeScatterDots, computeSelectionBoxes, computeSingleSelected, computeSlideIndices, computeSnap, computeStackedBarRects, computeStackedValueRange, computeTextLines, computeTimerProgress, computeTrendlinePrimitives, computeValueRange, convertOmmlToMathMl, copyFormatFromElement, countAccessibilityIssues, countAnnotationStrokes, createAngularAiBridge, createCustomShow, createSwipeDismissDrag, createWebrtcBundle, createWebsocketBundle, cssObjectToStyleMap, currentColorScheme, currentLayout, currentStyle, defaultCssVars, defaultRadius, defaultThemeColors, deleteElementsByIds, deleteVersion as deleteRecoveryVersion, demoteNode, deriveModel3DBlobUrl, derivePresenceList, describeSmartArtBounds, disableGlowPatch, disableInnerShadowPatch, disableOuterShadowPatch, disableReflectionPatch, disableSoftEdgePatch, duplicateElementById, durationOf, effectsStateOf, enableGlowPatch, enableInnerShadowPatch, enableOuterShadowPatch, enableReflectionPatch, enableSoftEdgePatch, encodeGif, estimatePageCount, evenColumnWidths, evenRowHeights, exitPresentationFullscreen, exportAiChatLogs, extractPathPoints, eyedropperAvailable, fillColorOf, findInSlides, findOwningSlideIndex, findSlideIndexByElementId, fitPolynomial, fitZoom, focusTargetChips, fontMimeForFormat, fontSizeOf, formatAutoNumber, formatAxisValue, formatBytes, formatCursorLabel, formatElapsed, formatFileSize, formatPropertyDate, formatTime, fpsToFrameIntervalMs, generateBroadcastRoomId, generateCommentId, generateCustomShowId, generatePressureCircles, generateTicks, getClrChangeParams, getContainerStyle, getDuotoneFilterDef, getImageSrc, getLocalStorageUsageSummary, getOleAriaLabel, getOleBadgeLabel, getOleDisplayName, getOleDownloadFileName, getOleTypeColor, getOleTypeLabel, getPasswordStrength, getPatternSvg, getPlaceholderStyle, getVersions as getRecoveryVersions, getResolvedShapeClipPath, getResolvedShapeClipPathFor, getShapeFillStrokeStyle, getSlideBackgroundStyle, getSlideTransitionAnimations, getSmartArtNodeBounds, getSpeechRecognitionCtor, getTextBlockStyle, getTextWarp, getTouchDistance, getWarpCategory, getWarpPath, gradientStateFromStyle, gradientStateOf, gradientStatePatch, gridColumns, groupElements, groupIssuesBySeverity, hasAnimation, hasCopyableFormat, hasExistingLink, hasExitedFullscreen, hasGradientFill, hasPressureVariation, hasVisibleSlideAfter, headerLabel, imageDimensions, inkViewBox, insertColumn, insertRow, interpolateWidth, isAudienceTab, isBold, isBrowserOpenableMime, isChildNode, isElementInteractive, isInjectableUrl, isItalic, isPpactionUrl, isPresenterMessage, isSigned, isTextElement, isTwoTableFocus, isUnderline, isUrlSafe, isValidRoomId, isViewportBackgroundPressTarget, isZoomActivationKey, issueTrackKey, issueTypeLabel, keyToLabel, latexToMathml, linePointsToSvgString, lineSpacingPatch, loadAudienceContent, mergeCaptionResults, mergeDown, mergeRight, mergeSelection, 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, pendingElementStyles, pickColorByClickFallback, pickFile, pickSupportedMimeType, planGifFrames, planVideoSegments, pointsToSvgPathD, presenceToCursors, presetByLayout, presetsForCategory, pressuresToWidths, prevVisibleIndex, projectDrawingShapes, promoteNode, provideViewerTheme, radarAngle, radarRingPoints, readAsDataUrl, recordWebm, redistributeColumnWidth, removeAnimation, removeCategory, removeColumn, removeCommentFromList, removeElementAnimation, removeGradientStopPatch, removeNode, removeRow, removeSeries, renderToCanvas, reorderAnimationDown, reorderAnimationUp, replaceInSlides, replaceMatch, requestPresentationFullscreen, resizeElement, resolveCaptionTracks, resolveChartKind, resolveFontVariant, resolveHyperlinkHref, resolveInteractiveElementId, resolveMediaSrc, resolveOleType, resolveParagraphBullet, resolvePresenterNotes, resolveProfileInitial, resolveRegionCode, resolveSlideAutoAdvanceMs, resolvePalette as resolveSmartArtPalette, resolveThemeCatalogEntry, resolveTransitionDuration, revealedElementStyles, routeOrthogonalConnector, rowStyle, rulerDragToGuidePosition, rulerHighlight, rulerStripTicks, sampleColorFromSlide, sanitizeColor, sanitizeSlideIndex, sanitizeUserName, saveViewerProfile, scanAvailableFonts, searchSlides, seedBroadcastFields, seedHyperlinkDraft, seedPropertiesDraft, seedShareFields, segmentFrameCount, selectValue, sendBackward, sendToBack, sequentialColorScale, serializeWriteBack, seriesColor, setAnimationEmphasis, setAnimationEntrance, setAnimationExit, setAxis, setAxisLogScale, setAxisTitleStyle, setCategoryLabel, setCellText, setColorScheme, setDataLabels, setDataPointExplosion, setDataPointFill, setDataPointLabel, setDelay, setDirection, setDuration, 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, smartArtNodes, paletteColour as smartArtPaletteColour, snapToGridStep, splitCursorCell, splitMergedCell, statusKind, statusLabel$1 as statusLabel, storeAudienceContent, stringFromEvent, strokeColorOf, strokeToInkElement, strokeWidthOf, styleShadowFilter, textAdvancedPatch, textAdvancedStateFromStyle, textAdvancedStateOf, textColorOf, textDirectionPatch, textStyleOf, textStylePatch, themeStyle, themeToCssVars, thumbnailHeight, thumbnailZoom, toggleCommentResolvedInList, toggleNodeBold, toggleNodeItalic, toggleSheet, topLevelNodeCount, transformSelectedTextCase, translationsEn, ungroupElements, updateElementById, updateGlowPatch, updateGradientStopPatch, updateInnerShadowPatch, updateOuterShadowPatch, updateReflectionPatch, vAlignPatch, validatePassword, validatePrintSettings, validateRoomId, valueToY, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, waypointsToPathD, worstStatus, zoomTargetSlideIndex };
17779
+ export type { AccessibilityIssueGroup, AccountAuthConfig, ActionDescriptor, AiCanvasHighlight, AiChatInitState, AiLogChat, AiLogExport, AiLogFormat, AiLogMessage, AiPanelSelectionAccessors, AlignBox, AlignMode, AnimationClickGroup, AnimationGroup, AnimationPresetCategory, AnimationPresetEntry, AnimationPresetPick, AnnotationInkInsert, AnnotationStroke, AttachTouchGesturesConfig, AwarenessLike, BarRect, Box, BridgeDeps, BroadcastConfig, BroadcastDefaults, CSSProperties, CanvasSize, CellCoord, CellParagraph, CellTextRun, ChartPartRef, ChartPartSelection, ChartValueDrag, ChartViewModel, ClassValue, ClrChangeParams, CollaborationConfig, CollaborationRole, RouterRect as ConnectorObstacle, RouterPoint as ConnectorPoint, ConnectorRouting, CopiedFormat, CornerHandleBox, CustomShow, CustomThemeEdit, DestroyableYDoc, DiagonalBorderInfo, DistributeMode, DocumentProperties, DrawingViewBox, DuotoneFilterDef, EffectsState, EmbeddedFontStyles, EquationTemplate, EyedropperResult, FindOptions, FindResult, FocusChip, FocusSelectionInput, GifFrame, GifFramePlan, GifPlanOptions, GlowState, GradientState, GradientStop$1 as GradientStop, GroupResult, HandleBox, HandoutSlidesPerPage, HyperlinkDraft, InkPoint, InkStroke, InlineEditState, InnerShadowState, LegendEntry, LinePoint, LinearFit, LocalIdentity, LocalStorageUsageSummary, LocaleCatalogEntry, MobileSheetKey, Model3DViewModel, NodeEditBox, NotesSegmentViewModel, ObjectUrlFactory, OleActionModel, OleInfoRow, OuterShadowState, OverallSignatureStatus, PartitionedSlides, PathPoint, PieSliceGeometry, PieSliceOptions, PlotLayout, PlotLayoutOptions, PositionUpdate, PowerPointViewerAPI, PptxAiBridge, PptxAiConfig, PptxAiConnection, PptxAiContextStrategy, PptxAiElementUpdate, PptxAiToolName, PptxAiUIMessage, PptxAiWritePolicy, PresentationTool, PresenterExitMessage, PresenterMessage, PresenterNotes, PresenterSlideChangeMessage, 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, ResolvedFontVariant, ResolvedOleType, RulerUnit, ScatterDot, SelectionBox, 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, TimerProgress, ToolbarActionId, TouchGestureCallbacks, TranslationKey, UngroupResult, ValueRange, VideoPlanOptions, VideoSegmentPlan, ViewerMode, ViewerProfile, ViewerSettings, ViewerTheme, ViewerThemeColors, ZoomViewModel };