pptx-angular-viewer 1.1.18 → 1.1.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/pptx-angular-viewer.mjs +7296 -4271
- package/fesm2022/pptx-angular-viewer.mjs.map +1 -1
- package/package.json +2 -2
- package/types/pptx-angular-viewer.d.ts +472 -133
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { Signal, OnInit, OnDestroy, InjectionToken, Provider } from '@angular/core';
|
|
3
3
|
import * as pptx_viewer_core from 'pptx-viewer-core';
|
|
4
|
-
import { PptxSlide, AccessibilityCheckOptions, AccessibilityIssue, PptxElement, PptxTheme, PptxSlideMaster, PptxEmbeddedFont, PptxCoreProperties, ParsedSignature, PptxComment, TextSegment, TextStyle, PptxTableCell, Model3DPptxElement, ZoomPptxElement, PptxSlideTransition, TablePptxElement, ChartPptxElement, XmlObject, SignatureStatus, AccessibilityIssueSeverity, AccessibilityIssueType,
|
|
4
|
+
import { PptxSlide, AccessibilityCheckOptions, AccessibilityIssue, PptxElement, PptxTheme, PptxSlideMaster, PptxEmbeddedFont, PptxCoreProperties, ParsedSignature, PptxComment, TextSegment, TextStyle, PptxTableCell, Model3DPptxElement, ZoomPptxElement, PptxElementAnimation, PptxSlideTransition, TablePptxElement, ChartPptxElement, PptxAnimationPreset, PptxAnimationTrigger, PptxAnimationTimingCurve, PptxAnimationRepeatMode, PptxAnimationDirection, PptxAnimationSequence, XmlObject, SignatureStatus, AccessibilityIssueSeverity, AccessibilityIssueType, PptxTransitionType, ShapeStyle } from 'pptx-viewer-core';
|
|
5
5
|
import * as pptx_angular_viewer from 'pptx-angular-viewer';
|
|
6
6
|
import { Options } from 'html2canvas-pro';
|
|
7
7
|
import { SafeHtml } from '@angular/platform-browser';
|
|
@@ -657,6 +657,62 @@ declare function replaceMatch(slides: readonly PptxSlide[], allResults: readonly
|
|
|
657
657
|
*/
|
|
658
658
|
declare function replaceInSlides(slides: readonly PptxSlide[], query: string, replacement: string, opts?: FindOptions): ReplaceResult;
|
|
659
659
|
|
|
660
|
+
/**
|
|
661
|
+
* Decide whether the current environment is "mobile" based on two signals:
|
|
662
|
+
* - `width` is the viewport / container width in pixels
|
|
663
|
+
* - `coarsePointer` is true when `(pointer: coarse)` matches
|
|
664
|
+
*
|
|
665
|
+
* Either condition alone is sufficient (narrow viewport OR touch device).
|
|
666
|
+
*
|
|
667
|
+
* @pure — no side effects, fully testable without a DOM.
|
|
668
|
+
*/
|
|
669
|
+
declare function computeIsMobile(width: number, coarsePointer: boolean): boolean;
|
|
670
|
+
/**
|
|
671
|
+
* Decide whether the current environment is "tablet" based on width only.
|
|
672
|
+
* A coarse-pointer device at tablet width is still treated as mobile
|
|
673
|
+
* (handled by `computeIsMobile`).
|
|
674
|
+
*
|
|
675
|
+
* @pure
|
|
676
|
+
*/
|
|
677
|
+
declare function computeIsTablet(width: number, coarsePointer: boolean): boolean;
|
|
678
|
+
/**
|
|
679
|
+
* `IsMobileService` — provides reactive signals for the current viewport /
|
|
680
|
+
* pointer kind so components can switch between mobile and desktop chrome
|
|
681
|
+
* without subscribing to resize events themselves.
|
|
682
|
+
*
|
|
683
|
+
* Inject at the component level (or provide at root) — the service cleans up
|
|
684
|
+
* its `MediaQueryList` listeners automatically via `DestroyRef`.
|
|
685
|
+
*
|
|
686
|
+
* ```ts
|
|
687
|
+
* providers: [IsMobileService]
|
|
688
|
+
* // or globally:
|
|
689
|
+
* // provideIsMobile() (see factory below)
|
|
690
|
+
* ```
|
|
691
|
+
*
|
|
692
|
+
* ```ts
|
|
693
|
+
* protected readonly mobile = inject(IsMobileService);
|
|
694
|
+
* // in template: @if (mobile.isMobile()) { … }
|
|
695
|
+
* ```
|
|
696
|
+
*/
|
|
697
|
+
declare class IsMobileService {
|
|
698
|
+
/** True when the primary pointer is coarse (touch / stylus). */
|
|
699
|
+
readonly isCoarsePointer: _angular_core.WritableSignal<boolean>;
|
|
700
|
+
/** True when the viewport width is below {@link MOBILE_BREAKPOINT}. */
|
|
701
|
+
readonly isNarrowViewport: _angular_core.WritableSignal<boolean>;
|
|
702
|
+
/**
|
|
703
|
+
* True when either the pointer is coarse OR the viewport is narrow.
|
|
704
|
+
* Use this as the single gate for showing mobile chrome.
|
|
705
|
+
*/
|
|
706
|
+
readonly isMobile: _angular_core.WritableSignal<boolean>;
|
|
707
|
+
/** True when the viewport is in the tablet range (desktop pointer only). */
|
|
708
|
+
readonly isTablet: _angular_core.WritableSignal<boolean>;
|
|
709
|
+
constructor();
|
|
710
|
+
/** Recompute derived `isMobile` signal from the two raw conditions. */
|
|
711
|
+
private _update;
|
|
712
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IsMobileService, never>;
|
|
713
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<IsMobileService>;
|
|
714
|
+
}
|
|
715
|
+
|
|
660
716
|
/**
|
|
661
717
|
* `LoadContentService` — Angular port of the React `useLoadContent` hook and
|
|
662
718
|
* the Vue `useLoadContent` composable.
|
|
@@ -922,6 +978,7 @@ declare class PowerPointViewerComponent {
|
|
|
922
978
|
protected readonly collab: CollaborationService;
|
|
923
979
|
protected readonly accessibility: AccessibilityService;
|
|
924
980
|
protected readonly print: PrintService;
|
|
981
|
+
protected readonly mobile: IsMobileService;
|
|
925
982
|
/** The `<main>` host; used to locate the live `.pptx-ng-canvas-stage`. */
|
|
926
983
|
private readonly mainEl;
|
|
927
984
|
/** True while a PNG/PDF export is in progress (disables the buttons). */
|
|
@@ -944,6 +1001,8 @@ declare class PowerPointViewerComponent {
|
|
|
944
1001
|
protected readonly presenterStartTime: _angular_core.WritableSignal<number | null>;
|
|
945
1002
|
/** Slide-sorter grid overlay visibility. */
|
|
946
1003
|
protected readonly showSorter: _angular_core.WritableSignal<boolean>;
|
|
1004
|
+
/** Open mobile bottom-sheet (slides / menu), or null. */
|
|
1005
|
+
protected readonly mobileSheet: _angular_core.WritableSignal<"slides" | "menu" | null>;
|
|
947
1006
|
/** Speaker-notes strip visibility. */
|
|
948
1007
|
protected readonly showNotes: _angular_core.WritableSignal<boolean>;
|
|
949
1008
|
/** Find-in-slides bar visibility. */
|
|
@@ -2448,6 +2507,137 @@ declare class ZoomRendererComponent {
|
|
|
2448
2507
|
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>;
|
|
2449
2508
|
}
|
|
2450
2509
|
|
|
2510
|
+
/**
|
|
2511
|
+
* animation-playback-helpers.ts
|
|
2512
|
+
*
|
|
2513
|
+
* Pure functions backing {@link AnimationPlaybackService} and
|
|
2514
|
+
* {@link AnimationPanelComponent}. Exported separately so they can be
|
|
2515
|
+
* unit-tested without TestBed (vitest + happy-dom).
|
|
2516
|
+
*
|
|
2517
|
+
* A slide carries an ordered list of {@link PptxElementAnimation}s. PowerPoint
|
|
2518
|
+
* groups them into "click groups": an animation triggered `onClick` /
|
|
2519
|
+
* `onShapeClick` / `onHover` starts a new group, while `withPrevious` /
|
|
2520
|
+
* `afterPrevious` / `afterDelay` animations fold into the group that precedes
|
|
2521
|
+
* them (running together or sequentially within that group). Advancing the
|
|
2522
|
+
* presentation one step reveals one more click group.
|
|
2523
|
+
*
|
|
2524
|
+
* Everything here is framework-light: only the preset → CSS mapping is
|
|
2525
|
+
* delegated to {@link resolveAnimationCss} / {@link initialHiddenStyle} from
|
|
2526
|
+
* the shared render layer.
|
|
2527
|
+
*/
|
|
2528
|
+
|
|
2529
|
+
/** Minimal CSS-properties shape: kebab-case property → value. */
|
|
2530
|
+
type CSSProperties = Record<string, string>;
|
|
2531
|
+
/** A single click-triggered group of animations that play as one step. */
|
|
2532
|
+
interface AnimationClickGroup {
|
|
2533
|
+
/** Animations belonging to this group, in document order. */
|
|
2534
|
+
animations: PptxElementAnimation[];
|
|
2535
|
+
}
|
|
2536
|
+
/**
|
|
2537
|
+
* Splits an ordered animation list into click groups. The first animation
|
|
2538
|
+
* always begins a group even if it isn't explicitly `onClick` (PowerPoint shows
|
|
2539
|
+
* the first build on the first advance). Subsequent `withPrevious` /
|
|
2540
|
+
* `afterPrevious` animations attach to the group in progress.
|
|
2541
|
+
*/
|
|
2542
|
+
declare function buildClickGroups(animations: readonly PptxElementAnimation[]): AnimationClickGroup[];
|
|
2543
|
+
/** Clamp a step into `[0, count]`. */
|
|
2544
|
+
declare function clampStep(value: number, count: number): number;
|
|
2545
|
+
/**
|
|
2546
|
+
* Reveal the next click group. Returns the next step, clamped to `count`.
|
|
2547
|
+
* Equivalent to `clampStep(step + 1, count)`.
|
|
2548
|
+
*/
|
|
2549
|
+
declare function advanceStep(step: number, count: number): number;
|
|
2550
|
+
/** Parse the numeric ms duration out of a resolved style's `animation-duration`. */
|
|
2551
|
+
declare function durationOf(style: CSSProperties): number;
|
|
2552
|
+
/**
|
|
2553
|
+
* Resolve the CSS for every animation in the revealed groups (the first `step`
|
|
2554
|
+
* groups). Within a group, `afterPrevious` animations are pushed back by the
|
|
2555
|
+
* accumulated duration of the preceding animations so sequential chains play in
|
|
2556
|
+
* order; `withPrevious` shares the running delay. The last write for an element
|
|
2557
|
+
* id wins (a later emphasis/exit overrides an earlier entrance), matching how a
|
|
2558
|
+
* single CSS `animation` shorthand can only hold one running effect.
|
|
2559
|
+
*/
|
|
2560
|
+
declare function revealedElementStyles(groups: readonly AnimationClickGroup[], step: number): Map<string, CSSProperties>;
|
|
2561
|
+
/**
|
|
2562
|
+
* Elements with a pending entrance (in a not-yet-revealed group, i.e. groups at
|
|
2563
|
+
* or beyond `step`) that should be hidden until their group plays. An element
|
|
2564
|
+
* an already-revealed group made visible is never re-hidden.
|
|
2565
|
+
*/
|
|
2566
|
+
declare function pendingElementStyles(groups: readonly AnimationClickGroup[], step: number): Map<string, CSSProperties>;
|
|
2567
|
+
|
|
2568
|
+
declare class AnimationPlaybackService {
|
|
2569
|
+
private readonly destroyRef;
|
|
2570
|
+
/** The current slide's animations, in document/timeline order. */
|
|
2571
|
+
private readonly animations;
|
|
2572
|
+
/**
|
|
2573
|
+
* Externally-controlled playback step (e.g. derived from a parent click
|
|
2574
|
+
* counter). `undefined` means there is no external driver. The internal
|
|
2575
|
+
* manual step (set via advance/play/reset) takes precedence when present.
|
|
2576
|
+
*/
|
|
2577
|
+
private readonly externalIndex;
|
|
2578
|
+
/**
|
|
2579
|
+
* Internal, unclamped step. `null` means "follow the external index"; any
|
|
2580
|
+
* number means the host has taken manual control via advance/play/reset.
|
|
2581
|
+
*/
|
|
2582
|
+
private readonly manualStep;
|
|
2583
|
+
/** Click groups for the current slide's animations. */
|
|
2584
|
+
readonly groups: _angular_core.Signal<AnimationClickGroup[]>;
|
|
2585
|
+
/** Number of click groups on this slide (i.e. how many `advance()` steps). */
|
|
2586
|
+
readonly groupCount: _angular_core.Signal<number>;
|
|
2587
|
+
/**
|
|
2588
|
+
* The current playback step: how many click groups have been revealed.
|
|
2589
|
+
* Always clamped to the current group count. The manual override wins;
|
|
2590
|
+
* otherwise it follows the external index, defaulting to 0.
|
|
2591
|
+
*/
|
|
2592
|
+
readonly step: _angular_core.Signal<number>;
|
|
2593
|
+
/** True when every click group has been revealed. */
|
|
2594
|
+
readonly isComplete: _angular_core.Signal<boolean>;
|
|
2595
|
+
/**
|
|
2596
|
+
* Reactive map of `elementId → CSS properties` to apply for the current step.
|
|
2597
|
+
* Only elements in revealed click groups appear.
|
|
2598
|
+
*/
|
|
2599
|
+
readonly elementStyles: _angular_core.Signal<Map<string, CSSProperties>>;
|
|
2600
|
+
/**
|
|
2601
|
+
* Reactive map of `elementId → CSS properties` for elements whose entrance
|
|
2602
|
+
* has not yet been revealed (they should be hidden so they don't flash
|
|
2603
|
+
* visible before their group plays).
|
|
2604
|
+
*/
|
|
2605
|
+
readonly pendingStyles: _angular_core.Signal<Map<string, CSSProperties>>;
|
|
2606
|
+
/** Handle of the scheduled rAF auto-advance, or null when idle. */
|
|
2607
|
+
private rafHandle;
|
|
2608
|
+
constructor();
|
|
2609
|
+
/** Feed the current slide's animation list. Resets manual control. */
|
|
2610
|
+
setAnimations(animations: readonly PptxElementAnimation[] | undefined): void;
|
|
2611
|
+
/** Update the external playback index (parent-driven build counter). */
|
|
2612
|
+
setExternalIndex(index: number | undefined): void;
|
|
2613
|
+
/**
|
|
2614
|
+
* Reveal the next click group. Returns `true` if a group was revealed,
|
|
2615
|
+
* `false` if playback was already complete (so the caller can fall through
|
|
2616
|
+
* to slide navigation).
|
|
2617
|
+
*/
|
|
2618
|
+
advance(): boolean;
|
|
2619
|
+
/** Reveal every click group at once (jump to the slide's final state). */
|
|
2620
|
+
play(): void;
|
|
2621
|
+
/** Reset playback to before the first click group. */
|
|
2622
|
+
reset(): void;
|
|
2623
|
+
/**
|
|
2624
|
+
* Jump directly to a given step (clamped to the group count) and take manual
|
|
2625
|
+
* control. Useful for scrubbing.
|
|
2626
|
+
*/
|
|
2627
|
+
setStep(step: number): void;
|
|
2628
|
+
/**
|
|
2629
|
+
* Auto-advance through every remaining click group on the animation frame,
|
|
2630
|
+
* one group per frame. Stops automatically once playback completes or the
|
|
2631
|
+
* service is destroyed. A no-op when already complete or when
|
|
2632
|
+
* `requestAnimationFrame` is unavailable (SSR).
|
|
2633
|
+
*/
|
|
2634
|
+
autoPlay(): void;
|
|
2635
|
+
/** Cancel any in-flight rAF auto-advance. */
|
|
2636
|
+
cancelAutoPlay(): void;
|
|
2637
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnimationPlaybackService, never>;
|
|
2638
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AnimationPlaybackService>;
|
|
2639
|
+
}
|
|
2640
|
+
|
|
2451
2641
|
/**
|
|
2452
2642
|
* PresentationOverlayComponent — full-viewport black overlay that renders
|
|
2453
2643
|
* slides in presentation (kiosk) mode.
|
|
@@ -2495,6 +2685,17 @@ declare class PresentationOverlayComponent implements OnInit, OnDestroy {
|
|
|
2495
2685
|
outgoing: PptxSlide;
|
|
2496
2686
|
transition: PptxSlideTransition;
|
|
2497
2687
|
} | null>;
|
|
2688
|
+
/** Click-stepped element-animation playback for the current slide. */
|
|
2689
|
+
protected readonly playback: AnimationPlaybackService;
|
|
2690
|
+
/** The slide stage root — animation styles are applied to its elements. */
|
|
2691
|
+
private readonly stageRef;
|
|
2692
|
+
constructor();
|
|
2693
|
+
/**
|
|
2694
|
+
* Imperatively apply animation reveal / pending CSS to the slide's element
|
|
2695
|
+
* nodes (mirrors the Vue `applyAnimationStyles`). Every renderer emits a
|
|
2696
|
+
* `data-element-id`, so this needs no per-element renderer plumbing.
|
|
2697
|
+
*/
|
|
2698
|
+
private applyAnimationStyles;
|
|
2498
2699
|
/** Viewport dimensions — updated on resize. */
|
|
2499
2700
|
private readonly viewportW;
|
|
2500
2701
|
private readonly viewportH;
|
|
@@ -2741,6 +2942,10 @@ declare class InspectorPanelComponent {
|
|
|
2741
2942
|
protected onPatch(patch: Partial<PptxElement>): void;
|
|
2742
2943
|
/** Commit a fully-replaced element (table/chart data editors) as one history entry. */
|
|
2743
2944
|
protected onElementReplace(updated: PptxElement): void;
|
|
2945
|
+
/** The active slide's element-animation list (animations live on the slide). */
|
|
2946
|
+
protected readonly slideAnimations: _angular_core.Signal<readonly PptxElementAnimation[]>;
|
|
2947
|
+
/** Commit an updated slide-level animation list as one history entry. */
|
|
2948
|
+
protected onAnimationsChange(animations: PptxElementAnimation[]): void;
|
|
2744
2949
|
protected onPositionChange(event: Event, axis: 'x' | 'y'): void;
|
|
2745
2950
|
protected onSizeChange(event: Event, dim: 'width' | 'height'): void;
|
|
2746
2951
|
protected onRotationChange(event: Event): void;
|
|
@@ -3031,6 +3236,271 @@ declare class ChartDataEditorComponent {
|
|
|
3031
3236
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartDataEditorComponent, "pptx-chart-data-editor", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, { "elementChange": "elementChange"; }, never, never, true, never>;
|
|
3032
3237
|
}
|
|
3033
3238
|
|
|
3239
|
+
declare class AnimationAuthorPanelComponent {
|
|
3240
|
+
/** The selected element whose animation settings are being authored. */
|
|
3241
|
+
readonly element: _angular_core.InputSignal<PptxElement>;
|
|
3242
|
+
/** Zero-based index of the active slide (used by the orchestrator to commit). */
|
|
3243
|
+
readonly slideIndex: _angular_core.InputSignal<number>;
|
|
3244
|
+
/**
|
|
3245
|
+
* The active slide's full `PptxElementAnimation[]` array. Animations are
|
|
3246
|
+
* stored on the slide, NOT on the element — this component reads and
|
|
3247
|
+
* emits the entire array.
|
|
3248
|
+
*/
|
|
3249
|
+
readonly animations: _angular_core.InputSignal<readonly PptxElementAnimation[]>;
|
|
3250
|
+
/**
|
|
3251
|
+
* Whether editing controls are enabled. When `false` all selects/inputs are
|
|
3252
|
+
* disabled. Defaults to `true`.
|
|
3253
|
+
*/
|
|
3254
|
+
readonly canEdit: _angular_core.InputSignal<boolean>;
|
|
3255
|
+
/**
|
|
3256
|
+
* Emits the full updated `PptxElementAnimation[]` whenever a change is made.
|
|
3257
|
+
* The orchestrator should apply this via:
|
|
3258
|
+
* `EditorStateService.updateSlide(slideIndex(), { animations: $event })`
|
|
3259
|
+
*/
|
|
3260
|
+
readonly animationsChange: _angular_core.OutputEmitterRef<PptxElementAnimation[]>;
|
|
3261
|
+
protected readonly entrancePresets: readonly {
|
|
3262
|
+
value: PptxAnimationPreset;
|
|
3263
|
+
label: string;
|
|
3264
|
+
}[];
|
|
3265
|
+
protected readonly exitPresets: readonly {
|
|
3266
|
+
value: PptxAnimationPreset;
|
|
3267
|
+
label: string;
|
|
3268
|
+
}[];
|
|
3269
|
+
protected readonly emphasisPresets: readonly {
|
|
3270
|
+
value: PptxAnimationPreset;
|
|
3271
|
+
label: string;
|
|
3272
|
+
}[];
|
|
3273
|
+
protected readonly triggerOptions: readonly {
|
|
3274
|
+
value: PptxAnimationTrigger;
|
|
3275
|
+
label: string;
|
|
3276
|
+
}[];
|
|
3277
|
+
protected readonly timingCurveOptions: readonly {
|
|
3278
|
+
value: PptxAnimationTimingCurve;
|
|
3279
|
+
label: string;
|
|
3280
|
+
}[];
|
|
3281
|
+
protected readonly repeatModeOptions: readonly {
|
|
3282
|
+
value: "none" | PptxAnimationRepeatMode;
|
|
3283
|
+
label: string;
|
|
3284
|
+
}[];
|
|
3285
|
+
protected readonly directionOptions: readonly {
|
|
3286
|
+
value: PptxAnimationDirection;
|
|
3287
|
+
label: string;
|
|
3288
|
+
arrow: string;
|
|
3289
|
+
}[];
|
|
3290
|
+
protected readonly sequenceOptions: readonly {
|
|
3291
|
+
value: PptxAnimationSequence;
|
|
3292
|
+
label: string;
|
|
3293
|
+
}[];
|
|
3294
|
+
/**
|
|
3295
|
+
* Changes only when a *different* element is selected. Used as the
|
|
3296
|
+
* `data-el-key` attribute to key number inputs so Angular's [value]
|
|
3297
|
+
* binding is never rewritten mid-edit.
|
|
3298
|
+
*/
|
|
3299
|
+
protected readonly elementKey: _angular_core.Signal<string>;
|
|
3300
|
+
/** The animation entry for the currently selected element, if any. */
|
|
3301
|
+
protected readonly current: _angular_core.Signal<PptxElementAnimation | undefined>;
|
|
3302
|
+
/** True when the element has at least one effect (entrance/exit/emphasis). */
|
|
3303
|
+
protected readonly currentHasAnimation: _angular_core.Signal<boolean>;
|
|
3304
|
+
/** True when the active preset exposes a direction picker. */
|
|
3305
|
+
protected readonly currentShowDirection: _angular_core.Signal<boolean>;
|
|
3306
|
+
/**
|
|
3307
|
+
* Stable seed for number inputs — recomputed only on element change so
|
|
3308
|
+
* live typing does not reset the input value while the user is mid-edit.
|
|
3309
|
+
*/
|
|
3310
|
+
protected readonly seed: _angular_core.Signal<{
|
|
3311
|
+
durationMs: number;
|
|
3312
|
+
delayMs: number;
|
|
3313
|
+
repeatCount: number;
|
|
3314
|
+
}>;
|
|
3315
|
+
/** Human-readable order label (1-based, e.g. "2 of 4"). */
|
|
3316
|
+
protected readonly orderLabel: _angular_core.Signal<string>;
|
|
3317
|
+
/**
|
|
3318
|
+
* Elements on the slide excluding the selected element — used to populate
|
|
3319
|
+
* the trigger-shape selector. The slide's elements are not available in this
|
|
3320
|
+
* component's inputs, so the orchestrator must pass them in via
|
|
3321
|
+
* `[animations]` indirectly; here we surface only what we have access to.
|
|
3322
|
+
*
|
|
3323
|
+
* NOTE: The trigger-shape dropdown is limited to element ids because this
|
|
3324
|
+
* panel does not receive the full slide element list. The orchestrator can
|
|
3325
|
+
* replace this with a richer element label by wrapping the component or
|
|
3326
|
+
* projecting content. This matches the React implementation which used
|
|
3327
|
+
* `activeSlide.elements`.
|
|
3328
|
+
*/
|
|
3329
|
+
protected readonly otherElements: _angular_core.Signal<{
|
|
3330
|
+
id: string;
|
|
3331
|
+
}[]>;
|
|
3332
|
+
private emit;
|
|
3333
|
+
protected onEntranceChange(event: Event): void;
|
|
3334
|
+
protected onExitChange(event: Event): void;
|
|
3335
|
+
protected onEmphasisChange(event: Event): void;
|
|
3336
|
+
protected onTriggerChange(event: Event): void;
|
|
3337
|
+
protected onTriggerShapeChange(event: Event): void;
|
|
3338
|
+
protected onDurationChange(event: Event): void;
|
|
3339
|
+
protected onDelayChange(event: Event): void;
|
|
3340
|
+
protected onTimingCurveChange(event: Event): void;
|
|
3341
|
+
protected onRepeatCountChange(event: Event): void;
|
|
3342
|
+
protected onRepeatModeChange(event: Event): void;
|
|
3343
|
+
protected onDirectionChange(dir: PptxAnimationDirection): void;
|
|
3344
|
+
protected onSequenceChange(event: Event): void;
|
|
3345
|
+
protected onMoveUp(): void;
|
|
3346
|
+
protected onMoveDown(): void;
|
|
3347
|
+
protected onRemove(): void;
|
|
3348
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnimationAuthorPanelComponent, never>;
|
|
3349
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AnimationAuthorPanelComponent, "pptx-animation-author-panel", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "slideIndex": { "alias": "slideIndex"; "required": true; "isSignal": true; }; "animations": { "alias": "animations"; "required": true; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, { "animationsChange": "animationsChange"; }, never, never, true, never>;
|
|
3350
|
+
}
|
|
3351
|
+
|
|
3352
|
+
/** Internal action descriptor used to build the bar. */
|
|
3353
|
+
interface BarAction {
|
|
3354
|
+
key: string;
|
|
3355
|
+
label: string;
|
|
3356
|
+
/** SVG path data for the icon (24 × 24 view-box). */
|
|
3357
|
+
svgPath: string;
|
|
3358
|
+
disabled: boolean;
|
|
3359
|
+
active?: boolean;
|
|
3360
|
+
badge?: number;
|
|
3361
|
+
emit: () => void;
|
|
3362
|
+
}
|
|
3363
|
+
declare class MobileBottomBarComponent {
|
|
3364
|
+
/** Zero-based index of the currently displayed slide. */
|
|
3365
|
+
readonly activeIndex: _angular_core.InputSignal<number>;
|
|
3366
|
+
/** Total number of slides in the presentation. */
|
|
3367
|
+
readonly slideCount: _angular_core.InputSignal<number>;
|
|
3368
|
+
/** Whether the "Present" action should be available. */
|
|
3369
|
+
readonly canPresent: _angular_core.InputSignal<boolean>;
|
|
3370
|
+
/** Whether the mobile-menu sheet is currently open (highlights the button). */
|
|
3371
|
+
readonly menuOpen: _angular_core.InputSignal<boolean>;
|
|
3372
|
+
/** Whether the slides thumbnail sheet is currently open. */
|
|
3373
|
+
readonly slidesOpen: _angular_core.InputSignal<boolean>;
|
|
3374
|
+
/** User tapped the previous-slide button. */
|
|
3375
|
+
readonly prev: _angular_core.OutputEmitterRef<void>;
|
|
3376
|
+
/** User tapped the next-slide button. */
|
|
3377
|
+
readonly next: _angular_core.OutputEmitterRef<void>;
|
|
3378
|
+
/** User tapped the Present button. */
|
|
3379
|
+
readonly present: _angular_core.OutputEmitterRef<void>;
|
|
3380
|
+
/** User tapped the Slide Sorter button. */
|
|
3381
|
+
readonly openSorter: _angular_core.OutputEmitterRef<void>;
|
|
3382
|
+
/** User tapped the Find button. */
|
|
3383
|
+
readonly openFind: _angular_core.OutputEmitterRef<void>;
|
|
3384
|
+
/** User tapped the Slides thumbnail strip button. */
|
|
3385
|
+
readonly openSlides: _angular_core.OutputEmitterRef<void>;
|
|
3386
|
+
/** User tapped the menu (⋯) button. */
|
|
3387
|
+
readonly toggleMenu: _angular_core.OutputEmitterRef<void>;
|
|
3388
|
+
readonly actions: _angular_core.Signal<BarAction[]>;
|
|
3389
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MobileBottomBarComponent, never>;
|
|
3390
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileBottomBarComponent, "pptx-mobile-bottom-bar", never, { "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "canPresent": { "alias": "canPresent"; "required": false; "isSignal": true; }; "menuOpen": { "alias": "menuOpen"; "required": false; "isSignal": true; }; "slidesOpen": { "alias": "slidesOpen"; "required": false; "isSignal": true; }; }, { "prev": "prev"; "next": "next"; "present": "present"; "openSorter": "openSorter"; "openFind": "openFind"; "openSlides": "openSlides"; "toggleMenu": "toggleMenu"; }, never, never, true, never>;
|
|
3391
|
+
}
|
|
3392
|
+
|
|
3393
|
+
/** Descriptor for a single menu row. */
|
|
3394
|
+
interface MenuRow {
|
|
3395
|
+
key: string;
|
|
3396
|
+
label: string;
|
|
3397
|
+
sublabel?: string;
|
|
3398
|
+
/** SVG path data (24 × 24 view-box). */
|
|
3399
|
+
svgPath: string;
|
|
3400
|
+
disabled?: boolean;
|
|
3401
|
+
active?: boolean;
|
|
3402
|
+
danger?: boolean;
|
|
3403
|
+
emit: () => void;
|
|
3404
|
+
}
|
|
3405
|
+
declare class MobileMenuSheetComponent {
|
|
3406
|
+
/** Whether the sheet is visible. */
|
|
3407
|
+
readonly open: _angular_core.InputSignal<boolean>;
|
|
3408
|
+
/** Total slide count — gates export/present actions. */
|
|
3409
|
+
readonly slideCount: _angular_core.InputSignal<number>;
|
|
3410
|
+
/** True while an export is running (labels update, actions are disabled). */
|
|
3411
|
+
readonly exporting: _angular_core.InputSignal<boolean>;
|
|
3412
|
+
/** Whether the speaker-notes panel is currently open. */
|
|
3413
|
+
readonly showNotes: _angular_core.InputSignal<boolean>;
|
|
3414
|
+
/** Whether editor-only actions (find-replace etc.) are available. */
|
|
3415
|
+
readonly canEdit: _angular_core.InputSignal<boolean>;
|
|
3416
|
+
/** Sheet dismissed (backdrop tap, swipe, or Escape). */
|
|
3417
|
+
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
3418
|
+
/** Open the find-in-slides bar. */
|
|
3419
|
+
readonly openFind: _angular_core.OutputEmitterRef<void>;
|
|
3420
|
+
/** Open the slide-sorter overlay. */
|
|
3421
|
+
readonly openSorter: _angular_core.OutputEmitterRef<void>;
|
|
3422
|
+
/** Toggle the speaker-notes panel. */
|
|
3423
|
+
readonly toggleNotes: _angular_core.OutputEmitterRef<void>;
|
|
3424
|
+
/** Start the fullscreen presentation mode. */
|
|
3425
|
+
readonly present: _angular_core.OutputEmitterRef<void>;
|
|
3426
|
+
/** Export the current slide as PNG. */
|
|
3427
|
+
readonly exportPng: _angular_core.OutputEmitterRef<void>;
|
|
3428
|
+
/** Export the deck as PDF. */
|
|
3429
|
+
readonly exportPdf: _angular_core.OutputEmitterRef<void>;
|
|
3430
|
+
/** Export the deck as an animated GIF. */
|
|
3431
|
+
readonly exportGif: _angular_core.OutputEmitterRef<void>;
|
|
3432
|
+
/** Export the deck as a video. */
|
|
3433
|
+
readonly exportVideo: _angular_core.OutputEmitterRef<void>;
|
|
3434
|
+
/** Open the print dialog. */
|
|
3435
|
+
readonly print: _angular_core.OutputEmitterRef<void>;
|
|
3436
|
+
readonly rows: _angular_core.Signal<MenuRow[]>;
|
|
3437
|
+
/**
|
|
3438
|
+
* Emit the row's action and close the sheet so the user returns to the
|
|
3439
|
+
* presentation immediately.
|
|
3440
|
+
*/
|
|
3441
|
+
onRowClick(row: MenuRow): void;
|
|
3442
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MobileMenuSheetComponent, never>;
|
|
3443
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileMenuSheetComponent, "pptx-mobile-menu-sheet", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "showNotes": { "alias": "showNotes"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "openFind": "openFind"; "openSorter": "openSorter"; "toggleNotes": "toggleNotes"; "present": "present"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "print": "print"; }, never, never, true, never>;
|
|
3444
|
+
}
|
|
3445
|
+
|
|
3446
|
+
declare class MobileSlidesSheetComponent {
|
|
3447
|
+
/** Whether the sheet is visible. */
|
|
3448
|
+
readonly open: _angular_core.InputSignal<boolean>;
|
|
3449
|
+
/** The full slide array to display as thumbnails. */
|
|
3450
|
+
readonly slides: _angular_core.InputSignal<readonly PptxSlide[]>;
|
|
3451
|
+
/** Natural (100 %) canvas dimensions forwarded to each SlideCanvasComponent. */
|
|
3452
|
+
readonly canvasSize: _angular_core.InputSignal<CanvasSize>;
|
|
3453
|
+
/** Media asset lookup table forwarded to each SlideCanvasComponent. */
|
|
3454
|
+
readonly mediaDataUrls: _angular_core.InputSignal<Map<string, string>>;
|
|
3455
|
+
/** Zero-based index of the currently active slide (highlighted). */
|
|
3456
|
+
readonly activeIndex: _angular_core.InputSignal<number>;
|
|
3457
|
+
/** Emits when the user dismisses the sheet without selecting a slide. */
|
|
3458
|
+
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
3459
|
+
/**
|
|
3460
|
+
* Emits the zero-based index of the slide the user tapped. The orchestrator
|
|
3461
|
+
* should call `goTo(index)` and then close this sheet.
|
|
3462
|
+
*/
|
|
3463
|
+
readonly jumpToSlide: _angular_core.OutputEmitterRef<number>;
|
|
3464
|
+
/** Zoom level that fits THUMB_W pixels wide. */
|
|
3465
|
+
readonly thumbZoom: _angular_core.Signal<number>;
|
|
3466
|
+
/** Pixel height for the clip box (aspect-correct). */
|
|
3467
|
+
readonly thumbH: _angular_core.Signal<number>;
|
|
3468
|
+
/** ngStyle for the clipping wrapper. */
|
|
3469
|
+
readonly clipStyle: _angular_core.Signal<Record<string, string>>;
|
|
3470
|
+
onThumbClick(index: number): void;
|
|
3471
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MobileSlidesSheetComponent, never>;
|
|
3472
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileSlidesSheetComponent, "pptx-mobile-slides-sheet", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "slides": { "alias": "slides"; "required": false; "isSignal": true; }; "canvasSize": { "alias": "canvasSize"; "required": true; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; }, { "closed": "closed"; "jumpToSlide": "jumpToSlide"; }, never, never, true, never>;
|
|
3473
|
+
}
|
|
3474
|
+
|
|
3475
|
+
declare class MobileSheetComponent {
|
|
3476
|
+
/** Controls whether the sheet is visible. */
|
|
3477
|
+
readonly open: _angular_core.InputSignal<boolean>;
|
|
3478
|
+
/** Optional header text displayed above the body. */
|
|
3479
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
3480
|
+
/**
|
|
3481
|
+
* Height of the sheet as a fraction of the viewport height (0–1).
|
|
3482
|
+
* Ignored when `fullScreen` is true.
|
|
3483
|
+
*/
|
|
3484
|
+
readonly heightFraction: _angular_core.InputSignal<number>;
|
|
3485
|
+
/** When true, the sheet occupies the full viewport height. */
|
|
3486
|
+
readonly fullScreen: _angular_core.InputSignal<boolean>;
|
|
3487
|
+
/** Emits when the user closes the sheet (backdrop tap, swipe, or Escape). */
|
|
3488
|
+
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
3489
|
+
private _dragStartY;
|
|
3490
|
+
private _dragPointerId;
|
|
3491
|
+
/** Current translateY applied during an active drag (px). */
|
|
3492
|
+
readonly dragY: _angular_core.WritableSignal<number>;
|
|
3493
|
+
/** Whether a drag is in progress (suppresses CSS transition during drag). */
|
|
3494
|
+
readonly isDragging: _angular_core.WritableSignal<boolean>;
|
|
3495
|
+
readonly panelStyle: _angular_core.Signal<Record<string, string>>;
|
|
3496
|
+
onDocumentKeydown(event: KeyboardEvent): void;
|
|
3497
|
+
onPointerDown(event: PointerEvent): void;
|
|
3498
|
+
onPointerMove(event: PointerEvent): void;
|
|
3499
|
+
onPointerUp(event: PointerEvent): void;
|
|
3500
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MobileSheetComponent, never>;
|
|
3501
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MobileSheetComponent, "pptx-mobile-sheet", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "heightFraction": { "alias": "heightFraction"; "required": false; "isSignal": true; }; "fullScreen": { "alias": "fullScreen"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*"], true, never>;
|
|
3502
|
+
}
|
|
3503
|
+
|
|
3034
3504
|
/**
|
|
3035
3505
|
* SlidesPanelComponent — vertical slide-strip for the editor sidebar.
|
|
3036
3506
|
*
|
|
@@ -4228,64 +4698,6 @@ interface EmbeddedFontStyles {
|
|
|
4228
4698
|
*/
|
|
4229
4699
|
declare function buildEmbeddedFontStyles(fonts: readonly PptxEmbeddedFont[] | null | undefined, mintObjectUrl: ObjectUrlFactory): EmbeddedFontStyles;
|
|
4230
4700
|
|
|
4231
|
-
/**
|
|
4232
|
-
* animation-playback-helpers.ts
|
|
4233
|
-
*
|
|
4234
|
-
* Pure functions backing {@link AnimationPlaybackService} and
|
|
4235
|
-
* {@link AnimationPanelComponent}. Exported separately so they can be
|
|
4236
|
-
* unit-tested without TestBed (vitest + happy-dom).
|
|
4237
|
-
*
|
|
4238
|
-
* A slide carries an ordered list of {@link PptxElementAnimation}s. PowerPoint
|
|
4239
|
-
* groups them into "click groups": an animation triggered `onClick` /
|
|
4240
|
-
* `onShapeClick` / `onHover` starts a new group, while `withPrevious` /
|
|
4241
|
-
* `afterPrevious` / `afterDelay` animations fold into the group that precedes
|
|
4242
|
-
* them (running together or sequentially within that group). Advancing the
|
|
4243
|
-
* presentation one step reveals one more click group.
|
|
4244
|
-
*
|
|
4245
|
-
* Everything here is framework-light: only the preset → CSS mapping is
|
|
4246
|
-
* delegated to {@link resolveAnimationCss} / {@link initialHiddenStyle} from
|
|
4247
|
-
* the shared render layer.
|
|
4248
|
-
*/
|
|
4249
|
-
|
|
4250
|
-
/** Minimal CSS-properties shape: kebab-case property → value. */
|
|
4251
|
-
type CSSProperties = Record<string, string>;
|
|
4252
|
-
/** A single click-triggered group of animations that play as one step. */
|
|
4253
|
-
interface AnimationClickGroup {
|
|
4254
|
-
/** Animations belonging to this group, in document order. */
|
|
4255
|
-
animations: PptxElementAnimation[];
|
|
4256
|
-
}
|
|
4257
|
-
/**
|
|
4258
|
-
* Splits an ordered animation list into click groups. The first animation
|
|
4259
|
-
* always begins a group even if it isn't explicitly `onClick` (PowerPoint shows
|
|
4260
|
-
* the first build on the first advance). Subsequent `withPrevious` /
|
|
4261
|
-
* `afterPrevious` animations attach to the group in progress.
|
|
4262
|
-
*/
|
|
4263
|
-
declare function buildClickGroups(animations: readonly PptxElementAnimation[]): AnimationClickGroup[];
|
|
4264
|
-
/** Clamp a step into `[0, count]`. */
|
|
4265
|
-
declare function clampStep(value: number, count: number): number;
|
|
4266
|
-
/**
|
|
4267
|
-
* Reveal the next click group. Returns the next step, clamped to `count`.
|
|
4268
|
-
* Equivalent to `clampStep(step + 1, count)`.
|
|
4269
|
-
*/
|
|
4270
|
-
declare function advanceStep(step: number, count: number): number;
|
|
4271
|
-
/** Parse the numeric ms duration out of a resolved style's `animation-duration`. */
|
|
4272
|
-
declare function durationOf(style: CSSProperties): number;
|
|
4273
|
-
/**
|
|
4274
|
-
* Resolve the CSS for every animation in the revealed groups (the first `step`
|
|
4275
|
-
* groups). Within a group, `afterPrevious` animations are pushed back by the
|
|
4276
|
-
* accumulated duration of the preceding animations so sequential chains play in
|
|
4277
|
-
* order; `withPrevious` shares the running delay. The last write for an element
|
|
4278
|
-
* id wins (a later emphasis/exit overrides an earlier entrance), matching how a
|
|
4279
|
-
* single CSS `animation` shorthand can only hold one running effect.
|
|
4280
|
-
*/
|
|
4281
|
-
declare function revealedElementStyles(groups: readonly AnimationClickGroup[], step: number): Map<string, CSSProperties>;
|
|
4282
|
-
/**
|
|
4283
|
-
* Elements with a pending entrance (in a not-yet-revealed group, i.e. groups at
|
|
4284
|
-
* or beyond `step`) that should be hidden until their group plays. An element
|
|
4285
|
-
* an already-revealed group made visible is never re-hidden.
|
|
4286
|
-
*/
|
|
4287
|
-
declare function pendingElementStyles(groups: readonly AnimationClickGroup[], step: number): Map<string, CSSProperties>;
|
|
4288
|
-
|
|
4289
4701
|
/** A single rendered playback step (one click group). */
|
|
4290
4702
|
interface AnimationStepView {
|
|
4291
4703
|
/** 1-based step number for display. */
|
|
@@ -4314,79 +4726,6 @@ declare class AnimationPanelComponent {
|
|
|
4314
4726
|
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>;
|
|
4315
4727
|
}
|
|
4316
4728
|
|
|
4317
|
-
declare class AnimationPlaybackService {
|
|
4318
|
-
private readonly destroyRef;
|
|
4319
|
-
/** The current slide's animations, in document/timeline order. */
|
|
4320
|
-
private readonly animations;
|
|
4321
|
-
/**
|
|
4322
|
-
* Externally-controlled playback step (e.g. derived from a parent click
|
|
4323
|
-
* counter). `undefined` means there is no external driver. The internal
|
|
4324
|
-
* manual step (set via advance/play/reset) takes precedence when present.
|
|
4325
|
-
*/
|
|
4326
|
-
private readonly externalIndex;
|
|
4327
|
-
/**
|
|
4328
|
-
* Internal, unclamped step. `null` means "follow the external index"; any
|
|
4329
|
-
* number means the host has taken manual control via advance/play/reset.
|
|
4330
|
-
*/
|
|
4331
|
-
private readonly manualStep;
|
|
4332
|
-
/** Click groups for the current slide's animations. */
|
|
4333
|
-
readonly groups: _angular_core.Signal<AnimationClickGroup[]>;
|
|
4334
|
-
/** Number of click groups on this slide (i.e. how many `advance()` steps). */
|
|
4335
|
-
readonly groupCount: _angular_core.Signal<number>;
|
|
4336
|
-
/**
|
|
4337
|
-
* The current playback step: how many click groups have been revealed.
|
|
4338
|
-
* Always clamped to the current group count. The manual override wins;
|
|
4339
|
-
* otherwise it follows the external index, defaulting to 0.
|
|
4340
|
-
*/
|
|
4341
|
-
readonly step: _angular_core.Signal<number>;
|
|
4342
|
-
/** True when every click group has been revealed. */
|
|
4343
|
-
readonly isComplete: _angular_core.Signal<boolean>;
|
|
4344
|
-
/**
|
|
4345
|
-
* Reactive map of `elementId → CSS properties` to apply for the current step.
|
|
4346
|
-
* Only elements in revealed click groups appear.
|
|
4347
|
-
*/
|
|
4348
|
-
readonly elementStyles: _angular_core.Signal<Map<string, CSSProperties>>;
|
|
4349
|
-
/**
|
|
4350
|
-
* Reactive map of `elementId → CSS properties` for elements whose entrance
|
|
4351
|
-
* has not yet been revealed (they should be hidden so they don't flash
|
|
4352
|
-
* visible before their group plays).
|
|
4353
|
-
*/
|
|
4354
|
-
readonly pendingStyles: _angular_core.Signal<Map<string, CSSProperties>>;
|
|
4355
|
-
/** Handle of the scheduled rAF auto-advance, or null when idle. */
|
|
4356
|
-
private rafHandle;
|
|
4357
|
-
constructor();
|
|
4358
|
-
/** Feed the current slide's animation list. Resets manual control. */
|
|
4359
|
-
setAnimations(animations: readonly PptxElementAnimation[] | undefined): void;
|
|
4360
|
-
/** Update the external playback index (parent-driven build counter). */
|
|
4361
|
-
setExternalIndex(index: number | undefined): void;
|
|
4362
|
-
/**
|
|
4363
|
-
* Reveal the next click group. Returns `true` if a group was revealed,
|
|
4364
|
-
* `false` if playback was already complete (so the caller can fall through
|
|
4365
|
-
* to slide navigation).
|
|
4366
|
-
*/
|
|
4367
|
-
advance(): boolean;
|
|
4368
|
-
/** Reveal every click group at once (jump to the slide's final state). */
|
|
4369
|
-
play(): void;
|
|
4370
|
-
/** Reset playback to before the first click group. */
|
|
4371
|
-
reset(): void;
|
|
4372
|
-
/**
|
|
4373
|
-
* Jump directly to a given step (clamped to the group count) and take manual
|
|
4374
|
-
* control. Useful for scrubbing.
|
|
4375
|
-
*/
|
|
4376
|
-
setStep(step: number): void;
|
|
4377
|
-
/**
|
|
4378
|
-
* Auto-advance through every remaining click group on the animation frame,
|
|
4379
|
-
* one group per frame. Stops automatically once playback completes or the
|
|
4380
|
-
* service is destroyed. A no-op when already complete or when
|
|
4381
|
-
* `requestAnimationFrame` is unavailable (SSR).
|
|
4382
|
-
*/
|
|
4383
|
-
autoPlay(): void;
|
|
4384
|
-
/** Cancel any in-flight rAF auto-advance. */
|
|
4385
|
-
cancelAutoPlay(): void;
|
|
4386
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnimationPlaybackService, never>;
|
|
4387
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AnimationPlaybackService>;
|
|
4388
|
-
}
|
|
4389
|
-
|
|
4390
4729
|
/** A positioned cursor view-model used by the template. */
|
|
4391
4730
|
interface PositionedCursor {
|
|
4392
4731
|
clientId: number | string;
|
|
@@ -5178,5 +5517,5 @@ declare function themeStyle(theme: ViewerTheme | undefined): Record<string, stri
|
|
|
5178
5517
|
type ClassValue = string | number | false | null | undefined;
|
|
5179
5518
|
declare function cn(...values: ClassValue[]): string;
|
|
5180
5519
|
|
|
5181
|
-
export { AccessibilityPanelComponent, AccessibilityService, AnimationPanelComponent, AnimationPlaybackService, BroadcastDialogComponent, CURSOR_PALETTE, ChartDataEditorComponent, ChartRendererComponent, CollaborationCursorsComponent, CollaborationService, CommentsPanelComponent, CommentsService, ConnectorRendererComponent, ConnectorTextOverlayComponent, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_FILL_COLOR, DEFAULT_PRINT_SETTINGS, DEFAULT_SLIDE_BACKGROUND, DEFAULT_STROKE_COLOR, DEFAULT_TEXT_COLOR, EMBEDDED_FONTS_STYLE_ID, EditorContextMenuComponent, EditorHistory, EditorStateService, EditorToolbarComponent, EffectsPanelComponent, ElementRendererComponent, EmbeddedFontsService, EquationRendererComponent, ExportService, FindBarComponent, FindReplaceBarComponent, GradientPickerComponent, HANDOUT_OPTIONS, HyperlinkDialogComponent, InkRendererComponent, InspectorPanelComponent, LoadContentService, ModalDialogComponent, Model3DRendererComponent, OleRendererComponent, PowerPointViewerComponent, PresentationOverlayComponent, PresentationTransitionOverlayComponent, PresenterViewComponent, PrintDialogComponent, PrintService, PrintSettingsPanelComponent, PropertiesDialogComponent, RESIZE_HANDLES, SEVERITY_GROUPS, SEVERITY_LABELS, SLIDE_TRANSITION_KEYFRAMES, ShareDialogComponent, SignaturesPanelComponent, SignaturesService, SlideCanvasComponent, SlideSorterOverlayComponent, SlidesPanelComponent, SmartArtRendererComponent, TYPE_LABELS, TableDataEditorComponent, TableRendererComponent, TextAdvancedPanelComponent, VIEWER_THEME, WEBM_MIME_CANDIDATES, ZoomRendererComponent, addCommentToList, advanceStep, applyFindReplacements, applyMove, applyResize, assignUserColor, bringForward, bringToFront, buildBroadcastConfig, buildBroadcastViewerUrl, buildClearHyperlinkPatch, buildClickGroups, buildCollaborationConfig, buildCssGradientFromShapeStyle, buildDuotoneFilter, buildDuotoneFilterId, buildEmbeddedFontStyles, buildFontFaceRule, buildHyperlinkPatch, buildPatternFillCss, buildPrintDocument, buildPropertiesPatch, buildShareUrl, bulletIndentPx, canStartBroadcast, canStartShare, canUseClipboard, clampCursorPosition, clampGifDimensions, clampNotesFontSize, clampStep, cn, collectAccessibilityIssues, collectElementText, collectSlideText, computeHandoutLayout, computePageCount, computeSlideIndices, computeTimerProgress, convertOmmlToMathMl, countAccessibilityIssues, defaultCssVars, defaultRadius, defaultThemeColors, deleteElementsByIds, derivePresenceList, duplicateElementById, durationOf, encodeGif, estimatePageCount, findInSlides, fontMimeForFormat, formatAutoNumber, formatCursorLabel, formatElapsed, formatPropertyDate, formatTime, fpsToFrameIntervalMs, generateBroadcastRoomId, generateCommentId, getContainerStyle, getDuotoneFilterDef, getImageSrc, getPatternSvg, getResolvedShapeClipPath, getResolvedShapeClipPathFor, getShapeFillStrokeStyle, getSlideBackgroundStyle, getSlideTransitionAnimations, getTextBlockStyle, groupIssuesBySeverity, hasExistingLink, headerLabel, isInjectableUrl, isPpactionUrl, isSigned, isUrlSafe, isValidRoomId, issueTrackKey, issueTypeLabel, moveElementBy, msToFrameDelayCs, normalizeFontFormat, normalizeSlidesPerPage, ommlToMathml, overallStatus, pendingElementStyles, pickSupportedMimeType, planGifFrames, planVideoSegments, presenceToCursors, provideViewerTheme, recordWebm, removeCommentFromList, renderToCanvas, replaceInSlides, replaceMatch, resizeElement, resolveFontVariant, resolveHyperlinkHref, resolveParagraphBullet, resolvePresenterNotes, resolveTransitionDuration, revealedElementStyles, routeOrthogonalConnector, sanitizeColor, sanitizeSlideIndex, sanitizeUserName, searchSlides, seedBroadcastFields, seedHyperlinkDraft, seedPropertiesDraft, seedShareFields, segmentFrameCount, sendBackward, sendToBack, setElementPosition, signatureCountLabel, signatureKey, signatureTimestamp, signerName, statusKind, statusLabel, themeStyle, themeToCssVars, toggleCommentResolvedInList, updateElementById, validatePrintSettings, validateRoomId, waypointsToPathD, worstStatus };
|
|
5520
|
+
export { AccessibilityPanelComponent, AccessibilityService, AnimationAuthorPanelComponent, AnimationPanelComponent, AnimationPlaybackService, BroadcastDialogComponent, CURSOR_PALETTE, ChartDataEditorComponent, ChartRendererComponent, CollaborationCursorsComponent, CollaborationService, CommentsPanelComponent, CommentsService, ConnectorRendererComponent, ConnectorTextOverlayComponent, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_FILL_COLOR, DEFAULT_PRINT_SETTINGS, DEFAULT_SLIDE_BACKGROUND, DEFAULT_STROKE_COLOR, DEFAULT_TEXT_COLOR, EMBEDDED_FONTS_STYLE_ID, EditorContextMenuComponent, EditorHistory, EditorStateService, EditorToolbarComponent, EffectsPanelComponent, ElementRendererComponent, EmbeddedFontsService, EquationRendererComponent, ExportService, FindBarComponent, FindReplaceBarComponent, GradientPickerComponent, HANDOUT_OPTIONS, HyperlinkDialogComponent, InkRendererComponent, InspectorPanelComponent, IsMobileService, LoadContentService, MobileBottomBarComponent, MobileMenuSheetComponent, MobileSheetComponent, MobileSlidesSheetComponent, ModalDialogComponent, Model3DRendererComponent, OleRendererComponent, PowerPointViewerComponent, PresentationOverlayComponent, PresentationTransitionOverlayComponent, PresenterViewComponent, PrintDialogComponent, PrintService, PrintSettingsPanelComponent, PropertiesDialogComponent, RESIZE_HANDLES, SEVERITY_GROUPS, SEVERITY_LABELS, SLIDE_TRANSITION_KEYFRAMES, ShareDialogComponent, SignaturesPanelComponent, SignaturesService, SlideCanvasComponent, SlideSorterOverlayComponent, SlidesPanelComponent, SmartArtRendererComponent, TYPE_LABELS, TableDataEditorComponent, TableRendererComponent, TextAdvancedPanelComponent, VIEWER_THEME, WEBM_MIME_CANDIDATES, ZoomRendererComponent, addCommentToList, advanceStep, applyFindReplacements, applyMove, applyResize, assignUserColor, bringForward, bringToFront, buildBroadcastConfig, buildBroadcastViewerUrl, buildClearHyperlinkPatch, buildClickGroups, buildCollaborationConfig, buildCssGradientFromShapeStyle, buildDuotoneFilter, buildDuotoneFilterId, buildEmbeddedFontStyles, buildFontFaceRule, buildHyperlinkPatch, buildPatternFillCss, buildPrintDocument, buildPropertiesPatch, buildShareUrl, bulletIndentPx, canStartBroadcast, canStartShare, canUseClipboard, clampCursorPosition, clampGifDimensions, clampNotesFontSize, clampStep, cn, collectAccessibilityIssues, collectElementText, collectSlideText, computeHandoutLayout, computeIsMobile, computeIsTablet, computePageCount, computeSlideIndices, computeTimerProgress, convertOmmlToMathMl, countAccessibilityIssues, defaultCssVars, defaultRadius, defaultThemeColors, deleteElementsByIds, derivePresenceList, duplicateElementById, durationOf, encodeGif, estimatePageCount, findInSlides, fontMimeForFormat, formatAutoNumber, formatCursorLabel, formatElapsed, formatPropertyDate, formatTime, fpsToFrameIntervalMs, generateBroadcastRoomId, generateCommentId, getContainerStyle, getDuotoneFilterDef, getImageSrc, getPatternSvg, getResolvedShapeClipPath, getResolvedShapeClipPathFor, getShapeFillStrokeStyle, getSlideBackgroundStyle, getSlideTransitionAnimations, getTextBlockStyle, groupIssuesBySeverity, hasExistingLink, headerLabel, isInjectableUrl, isPpactionUrl, isSigned, isUrlSafe, isValidRoomId, issueTrackKey, issueTypeLabel, moveElementBy, msToFrameDelayCs, normalizeFontFormat, normalizeSlidesPerPage, ommlToMathml, overallStatus, pendingElementStyles, pickSupportedMimeType, planGifFrames, planVideoSegments, presenceToCursors, provideViewerTheme, recordWebm, removeCommentFromList, renderToCanvas, replaceInSlides, replaceMatch, resizeElement, resolveFontVariant, resolveHyperlinkHref, resolveParagraphBullet, resolvePresenterNotes, resolveTransitionDuration, revealedElementStyles, routeOrthogonalConnector, sanitizeColor, sanitizeSlideIndex, sanitizeUserName, searchSlides, seedBroadcastFields, seedHyperlinkDraft, seedPropertiesDraft, seedShareFields, segmentFrameCount, sendBackward, sendToBack, setElementPosition, signatureCountLabel, signatureKey, signatureTimestamp, signerName, statusKind, statusLabel, themeStyle, themeToCssVars, toggleCommentResolvedInList, updateElementById, validatePrintSettings, validateRoomId, waypointsToPathD, worstStatus };
|
|
5182
5521
|
export type { AccessibilityIssueGroup, AnimationClickGroup, Box, BroadcastConfig, BroadcastDefaults, CSSProperties, CanvasSize, ClassValue, CollaborationConfig, CollaborationRole, Rect as ConnectorObstacle, Point as ConnectorPoint, ConnectorRouting, DocumentProperties, DuotoneFilterDef, EmbeddedFontStyles, FindOptions, FindResult, GifFrame, GifFramePlan, GifPlanOptions, HandoutSlidesPerPage, HyperlinkDraft, NotesSegmentViewModel, ObjectUrlFactory, OverallSignatureStatus, PresenterNotes, PrintColorMode, PrintDocumentOptions, PrintOrientation, PrintSettings, PrintSlideRange, PrintWhat, PropertiesDraft, RecordWebmOptions, RemoteCursor, RemotePresence, ReplaceResult, ResizeHandle, ResolvedFontVariant, ShareDefaults, ShareFormFields, SignatureStatusKind, SlideTransitionAnimations, StyleMap, TimerProgress, VideoPlanOptions, VideoSegmentPlan, ViewerTheme, ViewerThemeColors };
|