pptx-angular-viewer 1.1.55 → 1.1.57
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/CHANGELOG.md +7 -0
- package/README.md +17 -0
- package/fesm2022/pptx-angular-viewer.mjs +11966 -7382
- package/fesm2022/pptx-angular-viewer.mjs.map +1 -1
- package/package.json +3 -2
- package/pptx-angular-viewer.css +1 -1
- package/types/pptx-angular-viewer.d.ts +410 -249
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { Signal, OnDestroy, OnInit, OnChanges, SimpleChanges, InjectionToken, Provider } from '@angular/core';
|
|
2
|
+
import { Signal, WritableSignal, OnDestroy, OnInit, OnChanges, SimpleChanges, InjectionToken, Provider } from '@angular/core';
|
|
3
3
|
import * as pptx_viewer_core from 'pptx-viewer-core';
|
|
4
|
-
import { PptxElement, ShapeStyle, PptxTextWarpPreset, XmlObject, PptxElementAnimation, PptxSlide, TextSegment, TextStyle, PptxTransitionType, PptxEmbeddedFont, AccessibilityIssueSeverity, AccessibilityIssue, AccessibilityIssueType, AccessibilityCheckOptions, PptxComment, SmartArtLayout, PptxTheme, PptxSlideMaster, PptxCoreProperties, PptxCustomProperty, PptxHeaderFooter, ParsedSignature, PptxTableCell, PptxTableData,
|
|
4
|
+
import { PptxElement, ShapeStyle, PptxTextWarpPreset, XmlObject, PptxElementAnimation, PptxSlide, TextSegment, TextStyle, PptxTransitionType, PptxEmbeddedFont, AccessibilityIssueSeverity, AccessibilityIssue, AccessibilityIssueType, AccessibilityCheckOptions, PptxComment, SmartArtLayout, PptxTheme, PptxSlideMaster, PptxCoreProperties, PptxCustomProperty, PptxHeaderFooter, ParsedSignature, PptxTableCell, PptxTableData, PptxCustomShow, PptxPresentationProperties, PptxThemePreset, InkPptxElement, Model3DPptxElement, ZoomPptxElement, PptxSlideTransition, TablePptxElement, ChartPptxElement, SmartArtPptxElement, PptxSmartArtData, PptxTableCellStyle, PptxChartDataLabelOptions, PptxChartAxisType, PptxChartAxisFormatting, PptxChartSeries, PptxChartType, PptxChartDataPoint, PptxChartTrendline, PptxChartErrBars, PptxAnimationPreset, PptxAnimationTrigger, PptxAnimationTimingCurve, PptxAnimationRepeatMode, PptxAnimationDirection, PptxAnimationSequence, SignatureStatus } 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';
|
|
@@ -391,10 +391,11 @@ declare function ommlToMathml(omml: OmmlNode | string): string;
|
|
|
391
391
|
* Vue, and Angular consume one source of truth instead of duplicating the
|
|
392
392
|
* (long) option arrays.
|
|
393
393
|
*
|
|
394
|
-
*
|
|
395
|
-
*
|
|
396
|
-
*
|
|
397
|
-
*
|
|
394
|
+
* Each option carries both a plain-ASCII `label` (for non-i18n consumers) and
|
|
395
|
+
* a `labelKey` (a `pptx.chart.*` dotted key resolvable via each binding's
|
|
396
|
+
* translation function, defined in `pptx-viewer-shared/i18n`). The `labelKey`
|
|
397
|
+
* values mirror React's local `chart-panel-constants.ts`, which keeps its own
|
|
398
|
+
* copy of these tables for historical reasons but resolves to the same keys.
|
|
398
399
|
*/
|
|
399
400
|
|
|
400
401
|
/** Display units selectable for a value axis (empty string = none). */
|
|
@@ -419,6 +420,7 @@ type ChartGridlineDashValue = '' | 'solid' | 'dash' | 'dot' | 'dashDot' | 'lgDas
|
|
|
419
420
|
interface ChartOption<V> {
|
|
420
421
|
value: V;
|
|
421
422
|
label: string;
|
|
423
|
+
labelKey: string;
|
|
422
424
|
}
|
|
423
425
|
|
|
424
426
|
/**
|
|
@@ -1293,6 +1295,16 @@ interface ConnectorGeometry {
|
|
|
1293
1295
|
strokeColor: string;
|
|
1294
1296
|
strokeOpacity: number;
|
|
1295
1297
|
dashArray: string | undefined;
|
|
1298
|
+
/** SVG `stroke-linecap`, derived from the connector's `a:ln/@cap`. */
|
|
1299
|
+
strokeLinecap: 'butt' | 'round' | 'square';
|
|
1300
|
+
/**
|
|
1301
|
+
* Perpendicular offsets (px) for each parallel strand of a compound
|
|
1302
|
+
* (double/triple) line. A single line yields `[0]`. Strands render the same
|
|
1303
|
+
* path/line translated vertically by each offset.
|
|
1304
|
+
*/
|
|
1305
|
+
compoundOffsets: number[];
|
|
1306
|
+
/** Per-strand stroke widths, index-aligned with {@link compoundOffsets}. */
|
|
1307
|
+
compoundWidths: number[];
|
|
1296
1308
|
/** SVG width (clamped to at least 1). */
|
|
1297
1309
|
svgW: number;
|
|
1298
1310
|
/** SVG height (clamped to at least 1). */
|
|
@@ -2759,73 +2771,6 @@ declare class EditorStateService {
|
|
|
2759
2771
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<EditorStateService>;
|
|
2760
2772
|
}
|
|
2761
2773
|
|
|
2762
|
-
/** Emitted when the user changes the find query or the case-sensitive toggle. */
|
|
2763
|
-
interface FindEvent {
|
|
2764
|
-
query: string;
|
|
2765
|
-
matchCase: boolean;
|
|
2766
|
-
}
|
|
2767
|
-
/** Emitted when the user confirms a replacement action. */
|
|
2768
|
-
interface ReplaceEvent {
|
|
2769
|
-
query: string;
|
|
2770
|
-
replacement: string;
|
|
2771
|
-
matchCase: boolean;
|
|
2772
|
-
}
|
|
2773
|
-
declare class FindReplaceBarComponent {
|
|
2774
|
-
/**
|
|
2775
|
-
* Total number of matches found across all slides for the current query.
|
|
2776
|
-
* Kept at 0 when no search has been performed yet.
|
|
2777
|
-
*/
|
|
2778
|
-
readonly matchCount: _angular_core.InputSignal<number>;
|
|
2779
|
-
/**
|
|
2780
|
-
* Zero-based index of the currently highlighted match.
|
|
2781
|
-
* Used to derive the 1-based display counter.
|
|
2782
|
-
*/
|
|
2783
|
-
readonly matchIndex: _angular_core.InputSignal<number>;
|
|
2784
|
-
/**
|
|
2785
|
-
* Emitted whenever the find query or the case-sensitive toggle changes.
|
|
2786
|
-
* The parent should run `findInSlides` and update `matchCount`/`matchIndex`.
|
|
2787
|
-
*/
|
|
2788
|
-
readonly find: _angular_core.OutputEmitterRef<FindEvent>;
|
|
2789
|
-
/**
|
|
2790
|
-
* Emitted when the user clicks ↑ / ↓ or presses Enter in the find input.
|
|
2791
|
-
* Payload is `1` (next) or `-1` (previous).
|
|
2792
|
-
* The parent advances `matchIndex` and navigates to the matching slide.
|
|
2793
|
-
*/
|
|
2794
|
-
readonly navigate: _angular_core.OutputEmitterRef<1 | -1>;
|
|
2795
|
-
/**
|
|
2796
|
-
* Emitted when the user clicks "Replace" (single match).
|
|
2797
|
-
* The parent calls `replaceMatch(...)` on `EditorStateService`.
|
|
2798
|
-
*/
|
|
2799
|
-
readonly replaceOne: _angular_core.OutputEmitterRef<ReplaceEvent>;
|
|
2800
|
-
/**
|
|
2801
|
-
* Emitted when the user clicks "Replace All".
|
|
2802
|
-
* The parent calls `replaceInSlides(...)` and commits the result to history.
|
|
2803
|
-
*/
|
|
2804
|
-
readonly replaceAll: _angular_core.OutputEmitterRef<ReplaceEvent>;
|
|
2805
|
-
/** Emitted when the user closes the bar (Escape or ✕ button). */
|
|
2806
|
-
readonly close: _angular_core.OutputEmitterRef<void>;
|
|
2807
|
-
private readonly findInputRef;
|
|
2808
|
-
/** Current text in the find input. */
|
|
2809
|
-
readonly query: _angular_core.WritableSignal<string>;
|
|
2810
|
-
/** Current text in the replacement input. */
|
|
2811
|
-
readonly replacement: _angular_core.WritableSignal<string>;
|
|
2812
|
-
/** Whether the search should be case-sensitive. */
|
|
2813
|
-
readonly matchCase: _angular_core.WritableSignal<boolean>;
|
|
2814
|
-
/** 1-based display index for the counter (e.g. "2 / 5"). Clamps to bounds. */
|
|
2815
|
-
readonly displayIndex: _angular_core.Signal<number>;
|
|
2816
|
-
/** Escape anywhere on the document closes the bar. */
|
|
2817
|
-
onDocumentKeydown(event: KeyboardEvent): void;
|
|
2818
|
-
onQueryInput(event: Event): void;
|
|
2819
|
-
onReplacementInput(event: Event): void;
|
|
2820
|
-
toggleCase(): void;
|
|
2821
|
-
emitReplaceOne(): void;
|
|
2822
|
-
emitReplaceAll(): void;
|
|
2823
|
-
/** Focus the find input (called by the parent after toggling the bar open). */
|
|
2824
|
-
focusFindInput(): void;
|
|
2825
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FindReplaceBarComponent, never>;
|
|
2826
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FindReplaceBarComponent, "pptx-find-replace-bar", never, { "matchCount": { "alias": "matchCount"; "required": false; "isSignal": true; }; "matchIndex": { "alias": "matchIndex"; "required": false; "isSignal": true; }; }, { "find": "find"; "navigate": "navigate"; "replaceOne": "replaceOne"; "replaceAll": "replaceAll"; "close": "close"; }, never, never, true, never>;
|
|
2827
|
-
}
|
|
2828
|
-
|
|
2829
2774
|
/** Payload emitted when the user confirms an insert. */
|
|
2830
2775
|
interface SmartArtInsertEvent {
|
|
2831
2776
|
layout: SmartArtLayout;
|
|
@@ -2981,7 +2926,7 @@ type MobileBarSheet = 'slides' | 'inspector' | 'comments' | 'notes' | null;
|
|
|
2981
2926
|
/** Internal action descriptor used to build the bar. */
|
|
2982
2927
|
interface BarAction {
|
|
2983
2928
|
key: NonNullable<MobileBarSheet> | 'insert';
|
|
2984
|
-
|
|
2929
|
+
labelKey: string;
|
|
2985
2930
|
/** SVG path data for the icon (24 × 24 view-box). */
|
|
2986
2931
|
svgPath: string;
|
|
2987
2932
|
disabled: boolean;
|
|
@@ -3483,6 +3428,99 @@ declare class TableRendererComponent {
|
|
|
3483
3428
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableRendererComponent, "pptx-table-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; }, { "cellCommit": "cellCommit"; "tableChange": "tableChange"; }, never, never, true, never>;
|
|
3484
3429
|
}
|
|
3485
3430
|
|
|
3431
|
+
/** Seed values for the Share dialog's start form. */
|
|
3432
|
+
interface ShareDefaults$1 {
|
|
3433
|
+
roomId?: string;
|
|
3434
|
+
userName?: string;
|
|
3435
|
+
serverUrl?: string;
|
|
3436
|
+
}
|
|
3437
|
+
/** Host accessors/emitters a service cannot own (inputs + outputs). */
|
|
3438
|
+
interface CollaborationSessionHost {
|
|
3439
|
+
readonly authorName: () => string | undefined;
|
|
3440
|
+
readonly shareDefaults: () => ShareDefaults$1 | undefined;
|
|
3441
|
+
readonly getTemplateElements: () => TemplateElementsBySlideId;
|
|
3442
|
+
readonly emitStart: (config: CollaborationConfig) => void;
|
|
3443
|
+
readonly emitStop: () => void;
|
|
3444
|
+
}
|
|
3445
|
+
declare class ViewerCollaborationSessionService {
|
|
3446
|
+
private readonly collab;
|
|
3447
|
+
/** Share (collaboration) dialog visibility. */
|
|
3448
|
+
readonly showShare: _angular_core.WritableSignal<boolean>;
|
|
3449
|
+
/** Broadcast dialog visibility. */
|
|
3450
|
+
readonly showBroadcast: _angular_core.WritableSignal<boolean>;
|
|
3451
|
+
/**
|
|
3452
|
+
* Room/server of the currently active session, used to build the shareable
|
|
3453
|
+
* join/follow links shown in the dialogs. Null when no session is active.
|
|
3454
|
+
*/
|
|
3455
|
+
private readonly activeSession;
|
|
3456
|
+
private host;
|
|
3457
|
+
/** Wire the host inputs/outputs (called once from the component constructor). */
|
|
3458
|
+
bind(host: CollaborationSessionHost): void;
|
|
3459
|
+
private requireHost;
|
|
3460
|
+
/** Browser location used to assemble share/follow URLs (omitted in SSR). */
|
|
3461
|
+
private browserLocation;
|
|
3462
|
+
/** Shareable join link for the active collaboration session. */
|
|
3463
|
+
readonly shareUrl: _angular_core.Signal<string>;
|
|
3464
|
+
/** Shareable follow link for the active broadcast. */
|
|
3465
|
+
readonly broadcastViewerUrl: _angular_core.Signal<string>;
|
|
3466
|
+
/**
|
|
3467
|
+
* Seed values for the Share dialog: the host-supplied `shareDefaults`, with
|
|
3468
|
+
* `userName` falling back to `authorName` (then "You") so the local user's
|
|
3469
|
+
* name pre-fills the form. Mirrors React/Vue.
|
|
3470
|
+
*/
|
|
3471
|
+
readonly shareDialogDefaults: _angular_core.Signal<ShareDefaults$1>;
|
|
3472
|
+
/**
|
|
3473
|
+
* Connect / disconnect real-time collaboration when the host `collaboration`
|
|
3474
|
+
* input changes (called from the component's effect).
|
|
3475
|
+
*/
|
|
3476
|
+
syncHostConfig(config: CollaborationConfig | undefined): void;
|
|
3477
|
+
/** Start a real-time collaboration session from the share dialog config. */
|
|
3478
|
+
onShareStart(config: CollaborationConfig): void;
|
|
3479
|
+
onShareStop(): void;
|
|
3480
|
+
/** Start broadcasting (presenter as session owner) from the broadcast config. */
|
|
3481
|
+
onBroadcastStart(config: BroadcastConfig): void;
|
|
3482
|
+
onBroadcastStop(): void;
|
|
3483
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerCollaborationSessionService, never>;
|
|
3484
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ViewerCollaborationSessionService>;
|
|
3485
|
+
}
|
|
3486
|
+
|
|
3487
|
+
declare class ViewerCustomShowsService {
|
|
3488
|
+
private readonly loader;
|
|
3489
|
+
/** Whether the custom-shows dialog is open. */
|
|
3490
|
+
readonly showDialog: _angular_core.WritableSignal<boolean>;
|
|
3491
|
+
/** The list of user-defined custom shows for this session. */
|
|
3492
|
+
readonly shows: _angular_core.WritableSignal<readonly CustomShow[]>;
|
|
3493
|
+
/** The id of the currently active custom show, or null. */
|
|
3494
|
+
readonly activeId: _angular_core.WritableSignal<string | null>;
|
|
3495
|
+
/** Active-slide index of the host viewer (bound from the component). */
|
|
3496
|
+
private activeSlideIndex;
|
|
3497
|
+
/** Wire the host's active-slide-index accessor (called once from the constructor). */
|
|
3498
|
+
bind(activeSlideIndex: () => number): void;
|
|
3499
|
+
/** Custom shows mapped to the core shape consumed by set-up-slide-show. */
|
|
3500
|
+
readonly pptxCustomShows: _angular_core.Signal<PptxCustomShow[]>;
|
|
3501
|
+
/** Slides shown in presentation mode: the active custom show, else the full deck. */
|
|
3502
|
+
readonly presentationSlides: _angular_core.Signal<PptxSlide[]>;
|
|
3503
|
+
/** Start index into {@link presentationSlides}: first slide of a custom show, else the active slide. */
|
|
3504
|
+
readonly presentationStartIndex: _angular_core.Signal<number>;
|
|
3505
|
+
onCreate(show: {
|
|
3506
|
+
name: string;
|
|
3507
|
+
slideIds: string[];
|
|
3508
|
+
}): void;
|
|
3509
|
+
onRemove(id: string): void;
|
|
3510
|
+
onUpdate(show: {
|
|
3511
|
+
id: string;
|
|
3512
|
+
name: string;
|
|
3513
|
+
slideIds: string[];
|
|
3514
|
+
}): void;
|
|
3515
|
+
/**
|
|
3516
|
+
* The active custom show's slides, in its defined order, or null when no show
|
|
3517
|
+
* is active (or it resolves to nothing). Used to filter the presentation.
|
|
3518
|
+
*/
|
|
3519
|
+
private resolveActiveShowSlides;
|
|
3520
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerCustomShowsService, never>;
|
|
3521
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ViewerCustomShowsService>;
|
|
3522
|
+
}
|
|
3523
|
+
|
|
3486
3524
|
declare class ViewerDialogsService {
|
|
3487
3525
|
/** Equation editor dialog visibility. */
|
|
3488
3526
|
readonly showEquation: _angular_core.WritableSignal<boolean>;
|
|
@@ -3530,6 +3568,201 @@ declare class ViewerDialogsService {
|
|
|
3530
3568
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ViewerDialogsService>;
|
|
3531
3569
|
}
|
|
3532
3570
|
|
|
3571
|
+
/** Live accessors the export loop needs from the host component. */
|
|
3572
|
+
interface ExportHost {
|
|
3573
|
+
/** The component's active-slide index (read + written to flip the live stage). */
|
|
3574
|
+
readonly activeSlideIndex: WritableSignal<number>;
|
|
3575
|
+
/** Current slide count of the displayed deck. */
|
|
3576
|
+
readonly slideCount: () => number;
|
|
3577
|
+
/** The full deck (templates merged back) for the print job. */
|
|
3578
|
+
readonly mergedSlides: () => readonly PptxSlide[];
|
|
3579
|
+
/** Resolve the live slide-stage element, or `undefined` when not mounted. */
|
|
3580
|
+
readonly resolveStage: () => HTMLElement | undefined;
|
|
3581
|
+
}
|
|
3582
|
+
declare class ViewerExportService {
|
|
3583
|
+
private readonly exportSvc;
|
|
3584
|
+
private readonly loader;
|
|
3585
|
+
private readonly print;
|
|
3586
|
+
/** True while a PNG/PDF export is in progress (disables the buttons). */
|
|
3587
|
+
readonly exporting: WritableSignal<boolean>;
|
|
3588
|
+
/** Export-progress modal state (PDF / GIF / WebM). */
|
|
3589
|
+
readonly modalOpen: WritableSignal<boolean>;
|
|
3590
|
+
readonly modalTitle: WritableSignal<string>;
|
|
3591
|
+
readonly progress: WritableSignal<number>;
|
|
3592
|
+
readonly statusMessage: WritableSignal<string>;
|
|
3593
|
+
/** Cooperative cancellation: the capture loop checks `signal.aborted`. */
|
|
3594
|
+
private abort;
|
|
3595
|
+
private host;
|
|
3596
|
+
/** Wire the live host accessors (called once from the component constructor). */
|
|
3597
|
+
bind(host: ExportHost): void;
|
|
3598
|
+
private requireHost;
|
|
3599
|
+
/** Export the current slide as a PNG download. */
|
|
3600
|
+
exportPng(): Promise<void>;
|
|
3601
|
+
/**
|
|
3602
|
+
* Export every slide to a multi-page PDF. Each slide is made the live stage,
|
|
3603
|
+
* given a render tick to settle, captured to a canvas, then the original
|
|
3604
|
+
* slide is restored. Progress + Cancel drive the export-progress modal.
|
|
3605
|
+
*/
|
|
3606
|
+
exportPdf(): Promise<void>;
|
|
3607
|
+
/** Export every slide as an animated GIF (2s per slide). */
|
|
3608
|
+
exportGif(): Promise<void>;
|
|
3609
|
+
/** Export every slide as a WebM video (3s per slide) via MediaRecorder. */
|
|
3610
|
+
exportVideo(): Promise<void>;
|
|
3611
|
+
/** Run a print job for the chosen settings, rasterising each slide off the live stage. */
|
|
3612
|
+
onPrint(settings: PrintSettings): Promise<void>;
|
|
3613
|
+
/** User pressed Cancel: abort the loop and close the modal. */
|
|
3614
|
+
onCancelExport(): void;
|
|
3615
|
+
/**
|
|
3616
|
+
* Open the progress modal and arm a fresh `AbortController` for an export.
|
|
3617
|
+
* Returns the controller whose `signal` the capture loop checks per slide.
|
|
3618
|
+
*/
|
|
3619
|
+
private beginExport;
|
|
3620
|
+
/** Tear down the progress modal + export-in-flight state. */
|
|
3621
|
+
private endExport;
|
|
3622
|
+
/**
|
|
3623
|
+
* Render every slide to a canvas (each made the live stage in turn), reporting
|
|
3624
|
+
* per-slide progress and bailing out cooperatively when `abortSignal.aborted`.
|
|
3625
|
+
*/
|
|
3626
|
+
private captureSlideCanvases;
|
|
3627
|
+
/** Flip the live stage to `index`, let it settle, and capture it to a PNG data URL. */
|
|
3628
|
+
private captureSlideDataUrl;
|
|
3629
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerExportService, never>;
|
|
3630
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ViewerExportService>;
|
|
3631
|
+
}
|
|
3632
|
+
|
|
3633
|
+
/** Emitted when the user changes the find query or the case-sensitive toggle. */
|
|
3634
|
+
interface FindEvent {
|
|
3635
|
+
query: string;
|
|
3636
|
+
matchCase: boolean;
|
|
3637
|
+
}
|
|
3638
|
+
/** Emitted when the user confirms a replacement action. */
|
|
3639
|
+
interface ReplaceEvent {
|
|
3640
|
+
query: string;
|
|
3641
|
+
replacement: string;
|
|
3642
|
+
matchCase: boolean;
|
|
3643
|
+
}
|
|
3644
|
+
declare class FindReplaceBarComponent {
|
|
3645
|
+
/**
|
|
3646
|
+
* Total number of matches found across all slides for the current query.
|
|
3647
|
+
* Kept at 0 when no search has been performed yet.
|
|
3648
|
+
*/
|
|
3649
|
+
readonly matchCount: _angular_core.InputSignal<number>;
|
|
3650
|
+
/**
|
|
3651
|
+
* Zero-based index of the currently highlighted match.
|
|
3652
|
+
* Used to derive the 1-based display counter.
|
|
3653
|
+
*/
|
|
3654
|
+
readonly matchIndex: _angular_core.InputSignal<number>;
|
|
3655
|
+
/**
|
|
3656
|
+
* Emitted whenever the find query or the case-sensitive toggle changes.
|
|
3657
|
+
* The parent should run `findInSlides` and update `matchCount`/`matchIndex`.
|
|
3658
|
+
*/
|
|
3659
|
+
readonly find: _angular_core.OutputEmitterRef<FindEvent>;
|
|
3660
|
+
/**
|
|
3661
|
+
* Emitted when the user clicks ↑ / ↓ or presses Enter in the find input.
|
|
3662
|
+
* Payload is `1` (next) or `-1` (previous).
|
|
3663
|
+
* The parent advances `matchIndex` and navigates to the matching slide.
|
|
3664
|
+
*/
|
|
3665
|
+
readonly navigate: _angular_core.OutputEmitterRef<1 | -1>;
|
|
3666
|
+
/**
|
|
3667
|
+
* Emitted when the user clicks "Replace" (single match).
|
|
3668
|
+
* The parent calls `replaceMatch(...)` on `EditorStateService`.
|
|
3669
|
+
*/
|
|
3670
|
+
readonly replaceOne: _angular_core.OutputEmitterRef<ReplaceEvent>;
|
|
3671
|
+
/**
|
|
3672
|
+
* Emitted when the user clicks "Replace All".
|
|
3673
|
+
* The parent calls `replaceInSlides(...)` and commits the result to history.
|
|
3674
|
+
*/
|
|
3675
|
+
readonly replaceAll: _angular_core.OutputEmitterRef<ReplaceEvent>;
|
|
3676
|
+
/** Emitted when the user closes the bar (Escape or ✕ button). */
|
|
3677
|
+
readonly close: _angular_core.OutputEmitterRef<void>;
|
|
3678
|
+
private readonly findInputRef;
|
|
3679
|
+
/** Current text in the find input. */
|
|
3680
|
+
readonly query: _angular_core.WritableSignal<string>;
|
|
3681
|
+
/** Current text in the replacement input. */
|
|
3682
|
+
readonly replacement: _angular_core.WritableSignal<string>;
|
|
3683
|
+
/** Whether the search should be case-sensitive. */
|
|
3684
|
+
readonly matchCase: _angular_core.WritableSignal<boolean>;
|
|
3685
|
+
/** 1-based display index for the counter (e.g. "2 / 5"). Clamps to bounds. */
|
|
3686
|
+
readonly displayIndex: _angular_core.Signal<number>;
|
|
3687
|
+
/** Escape anywhere on the document closes the bar. */
|
|
3688
|
+
onDocumentKeydown(event: KeyboardEvent): void;
|
|
3689
|
+
onQueryInput(event: Event): void;
|
|
3690
|
+
onReplacementInput(event: Event): void;
|
|
3691
|
+
toggleCase(): void;
|
|
3692
|
+
emitReplaceOne(): void;
|
|
3693
|
+
emitReplaceAll(): void;
|
|
3694
|
+
/** Focus the find input (called by the parent after toggling the bar open). */
|
|
3695
|
+
focusFindInput(): void;
|
|
3696
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FindReplaceBarComponent, never>;
|
|
3697
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FindReplaceBarComponent, "pptx-find-replace-bar", never, { "matchCount": { "alias": "matchCount"; "required": false; "isSignal": true; }; "matchIndex": { "alias": "matchIndex"; "required": false; "isSignal": true; }; }, { "find": "find"; "navigate": "navigate"; "replaceOne": "replaceOne"; "replaceAll": "replaceAll"; "close": "close"; }, never, never, true, never>;
|
|
3698
|
+
}
|
|
3699
|
+
|
|
3700
|
+
declare class ViewerFindReplaceService {
|
|
3701
|
+
private readonly editor;
|
|
3702
|
+
/** Find-in-slides bar visibility. */
|
|
3703
|
+
readonly showFind: _angular_core.WritableSignal<boolean>;
|
|
3704
|
+
/** Find-and-replace bar visibility (edit mode only). */
|
|
3705
|
+
readonly showFindReplace: _angular_core.WritableSignal<boolean>;
|
|
3706
|
+
readonly results: _angular_core.WritableSignal<readonly FindResult[]>;
|
|
3707
|
+
readonly activeIndex: _angular_core.WritableSignal<number>;
|
|
3708
|
+
private matchCase;
|
|
3709
|
+
/** Navigate the viewer to a slide index (bound from the host component). */
|
|
3710
|
+
private goTo;
|
|
3711
|
+
/** Wire the host's slide-navigation callback (called once from the constructor). */
|
|
3712
|
+
bind(goTo: (index: number) => void): void;
|
|
3713
|
+
/** Open the find/replace bar (mutually exclusive with the find-only bar). */
|
|
3714
|
+
openFindReplace(): void;
|
|
3715
|
+
onFind(evt: FindEvent): void;
|
|
3716
|
+
onNavigate(dir: 1 | -1): void;
|
|
3717
|
+
onReplaceOne(evt: ReplaceEvent): void;
|
|
3718
|
+
onReplaceAll(evt: ReplaceEvent): void;
|
|
3719
|
+
/** Re-run the search over the editable deck and refresh the match list. */
|
|
3720
|
+
private refreshResults;
|
|
3721
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerFindReplaceService, never>;
|
|
3722
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ViewerFindReplaceService>;
|
|
3723
|
+
}
|
|
3724
|
+
|
|
3725
|
+
/** Live selection/slide accessors the painter needs from the host component. */
|
|
3726
|
+
interface FormatPainterHost {
|
|
3727
|
+
readonly selectedElement: () => PptxElement | null;
|
|
3728
|
+
readonly activeSlideIndex: () => number;
|
|
3729
|
+
readonly findActiveElement: (id: string) => PptxElement | undefined;
|
|
3730
|
+
}
|
|
3731
|
+
declare class ViewerFormatPainterService {
|
|
3732
|
+
private readonly editor;
|
|
3733
|
+
/** True while the painter is armed (next element click applies the copied format). */
|
|
3734
|
+
readonly active: _angular_core.WritableSignal<boolean>;
|
|
3735
|
+
/** Whether the eyedropper is currently active. */
|
|
3736
|
+
readonly eyedropperActive: _angular_core.WritableSignal<boolean>;
|
|
3737
|
+
/** Format copied from the source element when the painter was armed. */
|
|
3738
|
+
private copiedFormat;
|
|
3739
|
+
private host;
|
|
3740
|
+
/** Wire the host selection/slide accessors (called once from the constructor). */
|
|
3741
|
+
bind(host: FormatPainterHost): void;
|
|
3742
|
+
private requireHost;
|
|
3743
|
+
/** Whether the painter can be armed: exactly one selected element with copyable format. */
|
|
3744
|
+
readonly canActivate: _angular_core.Signal<boolean>;
|
|
3745
|
+
/** Toggle the format painter: arm from the current selection, or disarm. */
|
|
3746
|
+
toggle(): void;
|
|
3747
|
+
/** Disarm the painter and drop the copied format. */
|
|
3748
|
+
cancel(): void;
|
|
3749
|
+
/** Apply the copied format to a target element (shape/text style only; one history entry). */
|
|
3750
|
+
applyToTarget(id: string): void;
|
|
3751
|
+
/**
|
|
3752
|
+
* Activate the eyedropper to pick a colour from the screen. Uses the native
|
|
3753
|
+
* EyeDropper API where available (Chrome/Edge); on Firefox/Safari it falls
|
|
3754
|
+
* back to a one-shot click that samples the slide DOM under the pointer.
|
|
3755
|
+
* When a shape/text/connector/image element is selected, applies the colour
|
|
3756
|
+
* to its fill; otherwise copies it to the clipboard. No-ops when the user
|
|
3757
|
+
* cancels (Escape) or nothing paintable is under the pointer.
|
|
3758
|
+
*/
|
|
3759
|
+
toggleEyedropper(): Promise<void>;
|
|
3760
|
+
/** Apply a picked colour to the selected shape's fill, else copy to clipboard. */
|
|
3761
|
+
private applyEyedropperColor;
|
|
3762
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerFormatPainterService, never>;
|
|
3763
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ViewerFormatPainterService>;
|
|
3764
|
+
}
|
|
3765
|
+
|
|
3533
3766
|
/**
|
|
3534
3767
|
* PowerPointViewerComponent: Angular port of the React `PowerPointViewer.tsx`
|
|
3535
3768
|
* and Vue `PowerPointViewer.vue`.
|
|
@@ -3624,23 +3857,18 @@ declare class PowerPointViewerComponent {
|
|
|
3624
3857
|
protected readonly presenterWindow: PresenterWindowService;
|
|
3625
3858
|
protected readonly dialogs: ViewerDialogsService;
|
|
3626
3859
|
private readonly compareSvc;
|
|
3860
|
+
protected readonly xport: ViewerExportService;
|
|
3861
|
+
protected readonly findReplace: ViewerFindReplaceService;
|
|
3862
|
+
protected readonly customShowsCtl: ViewerCustomShowsService;
|
|
3863
|
+
protected readonly session: ViewerCollaborationSessionService;
|
|
3864
|
+
protected readonly formatPainter: ViewerFormatPainterService;
|
|
3865
|
+
private readonly keyboard;
|
|
3627
3866
|
/** Handle on the secondary-dialog host (keep-annotations prompt). */
|
|
3628
3867
|
private readonly extraDialogs;
|
|
3629
3868
|
/** Surface the encrypted-file notice dialog alongside the inline fallback. */
|
|
3630
3869
|
private readonly encryptedNotice;
|
|
3631
|
-
/** Custom shows mapped to the core shape consumed by set-up-slide-show. */
|
|
3632
|
-
protected readonly pptxCustomShows: _angular_core.Signal<PptxCustomShow[]>;
|
|
3633
3870
|
/** The `<main>` host; used to locate the live `.pptx-ng-canvas-stage`. */
|
|
3634
3871
|
private readonly mainEl;
|
|
3635
|
-
/** True while a PNG/PDF export is in progress (disables the buttons). */
|
|
3636
|
-
protected readonly exporting: _angular_core.WritableSignal<boolean>;
|
|
3637
|
-
/** Export-progress modal state (PDF / GIF / WebM). */
|
|
3638
|
-
protected readonly exportModalOpen: _angular_core.WritableSignal<boolean>;
|
|
3639
|
-
protected readonly exportModalTitle: _angular_core.WritableSignal<string>;
|
|
3640
|
-
protected readonly exportProgress: _angular_core.WritableSignal<number>;
|
|
3641
|
-
protected readonly exportStatusMessage: _angular_core.WritableSignal<string>;
|
|
3642
|
-
/** Cooperative cancellation: the capture loop checks `signal.aborted`. */
|
|
3643
|
-
private exportAbort;
|
|
3644
3872
|
protected readonly activeSlideIndex: _angular_core.WritableSignal<number>;
|
|
3645
3873
|
/** Slides to display: the editable deck when `canEdit`, else the loaded deck. */
|
|
3646
3874
|
protected readonly displaySlides: _angular_core.Signal<readonly PptxSlide[]>;
|
|
@@ -3674,19 +3902,12 @@ declare class PowerPointViewerComponent {
|
|
|
3674
3902
|
protected readonly showNotes: _angular_core.WritableSignal<boolean>;
|
|
3675
3903
|
/** Whether the left slides panel is collapsed (top-bar sidebar toggle). */
|
|
3676
3904
|
protected readonly slidesPanelCollapsed: _angular_core.WritableSignal<boolean>;
|
|
3677
|
-
/** Find-in-slides bar visibility. */
|
|
3678
|
-
protected readonly showFind: _angular_core.WritableSignal<boolean>;
|
|
3679
|
-
/** Find-and-replace bar state (edit mode only). */
|
|
3680
|
-
protected readonly showFindReplace: _angular_core.WritableSignal<boolean>;
|
|
3681
3905
|
/** Active drawing tool (from the ribbon Draw tab). */
|
|
3682
3906
|
protected readonly activeDrawTool: _angular_core.WritableSignal<"pen" | "highlighter" | "eraser" | "select" | "freeform">;
|
|
3683
3907
|
/** Active ink stroke colour. */
|
|
3684
3908
|
protected readonly activeDrawColor: _angular_core.WritableSignal<string>;
|
|
3685
3909
|
/** Active ink stroke width in stage pixels. */
|
|
3686
3910
|
protected readonly activeDrawWidth: _angular_core.WritableSignal<number>;
|
|
3687
|
-
protected readonly findResults: _angular_core.WritableSignal<readonly FindResult[]>;
|
|
3688
|
-
protected readonly findActiveIndex: _angular_core.WritableSignal<number>;
|
|
3689
|
-
private findMatchCase;
|
|
3690
3911
|
/** Active right-docked tool panel (comments / accessibility / selection), or null. */
|
|
3691
3912
|
protected readonly activePanel: _angular_core.WritableSignal<"comments" | "accessibility" | "signatures" | "selection" | null>;
|
|
3692
3913
|
/**
|
|
@@ -3703,8 +3924,8 @@ declare class PowerPointViewerComponent {
|
|
|
3703
3924
|
protected readonly inspectorPaneOpen: _angular_core.Signal<boolean>;
|
|
3704
3925
|
/** Inspector content, but null on mobile once the user has swiped it away. */
|
|
3705
3926
|
protected readonly visibleInspectorKind: _angular_core.Signal<"slide" | "element" | "comments" | "accessibility" | "signatures" | "selection" | null>;
|
|
3706
|
-
/** Accessible
|
|
3707
|
-
protected readonly inspectorLabel: _angular_core.Signal<"" | "
|
|
3927
|
+
/** Accessible-label translation key for the inspector host, by active content. */
|
|
3928
|
+
protected readonly inspectorLabel: _angular_core.Signal<"" | "pptx.toolbar.comments" | "pptx.accessibility.title" | "pptx.viewer.digitalSignatures" | "pptx.selectionPane.title" | "pptx.viewer.elementProperties" | "pptx.viewer.slideProperties">;
|
|
3708
3929
|
/**
|
|
3709
3930
|
* Which mobile bottom-bar slot is currently "active" (highlighted). The
|
|
3710
3931
|
* comments panel maps to the Comments slot; an open notes strip maps to
|
|
@@ -3716,34 +3937,6 @@ declare class PowerPointViewerComponent {
|
|
|
3716
3937
|
protected readonly showProperties: _angular_core.WritableSignal<boolean>;
|
|
3717
3938
|
/** Hyperlink-edit dialog visibility. */
|
|
3718
3939
|
protected readonly showHyperlink: _angular_core.WritableSignal<boolean>;
|
|
3719
|
-
/** Share (collaboration) dialog visibility. */
|
|
3720
|
-
protected readonly showShare: _angular_core.WritableSignal<boolean>;
|
|
3721
|
-
/** Broadcast dialog visibility. */
|
|
3722
|
-
protected readonly showBroadcast: _angular_core.WritableSignal<boolean>;
|
|
3723
|
-
/**
|
|
3724
|
-
* Room/server of the currently active session, used to build the shareable
|
|
3725
|
-
* join/follow links shown in the dialogs. Null when no session is active.
|
|
3726
|
-
*/
|
|
3727
|
-
protected readonly activeSession: _angular_core.WritableSignal<{
|
|
3728
|
-
roomId: string;
|
|
3729
|
-
serverUrl: string;
|
|
3730
|
-
} | null>;
|
|
3731
|
-
/** Browser location used to assemble share/follow URLs (omitted in SSR). */
|
|
3732
|
-
private readonly browserLocation;
|
|
3733
|
-
/** Shareable join link for the active collaboration session. */
|
|
3734
|
-
protected readonly shareUrl: _angular_core.Signal<string>;
|
|
3735
|
-
/** Shareable follow link for the active broadcast. */
|
|
3736
|
-
protected readonly broadcastViewerUrl: _angular_core.Signal<string>;
|
|
3737
|
-
/**
|
|
3738
|
-
* Seed values for the Share dialog: the host-supplied {@link shareDefaults},
|
|
3739
|
-
* with `userName` falling back to {@link authorName} (then "You") so the
|
|
3740
|
-
* local user's name pre-fills the form. Mirrors React/Vue.
|
|
3741
|
-
*/
|
|
3742
|
-
protected readonly shareDialogDefaults: _angular_core.Signal<{
|
|
3743
|
-
roomId?: string;
|
|
3744
|
-
userName?: string;
|
|
3745
|
-
serverUrl?: string;
|
|
3746
|
-
}>;
|
|
3747
3940
|
/** Local overrides applied to document properties via the Info dialog. */
|
|
3748
3941
|
private readonly coreOverride;
|
|
3749
3942
|
/** Comments on the active slide. */
|
|
@@ -3765,27 +3958,10 @@ declare class PowerPointViewerComponent {
|
|
|
3765
3958
|
protected readonly showGuides: _angular_core.WritableSignal<boolean>;
|
|
3766
3959
|
/** Whether snap-to-grid is active on the editor canvas. */
|
|
3767
3960
|
protected readonly snapToGrid: _angular_core.WritableSignal<boolean>;
|
|
3768
|
-
/** Whether the eyedropper is currently active. */
|
|
3769
|
-
protected readonly eyedropperActive: _angular_core.WritableSignal<boolean>;
|
|
3770
3961
|
/** Whether the theme-gallery overlay is visible (Design → Browse Themes). */
|
|
3771
3962
|
protected readonly showThemeGallery: _angular_core.WritableSignal<boolean>;
|
|
3772
|
-
/** Whether the custom-shows dialog is open. */
|
|
3773
|
-
protected readonly showCustomShows: _angular_core.WritableSignal<boolean>;
|
|
3774
3963
|
/** Whether the Insert SmartArt gallery dialog is open. */
|
|
3775
3964
|
protected readonly showSmartArtInsert: _angular_core.WritableSignal<boolean>;
|
|
3776
|
-
/** The list of user-defined custom shows for this session. */
|
|
3777
|
-
protected readonly customShows: _angular_core.WritableSignal<readonly CustomShow[]>;
|
|
3778
|
-
/** The id of the currently active custom show, or null. */
|
|
3779
|
-
protected readonly activeCustomShowId: _angular_core.WritableSignal<string | null>;
|
|
3780
|
-
/**
|
|
3781
|
-
* The active custom show's slides, in its defined order, or null when no show
|
|
3782
|
-
* is active (or it resolves to nothing). Used to filter the presentation.
|
|
3783
|
-
*/
|
|
3784
|
-
private resolveActiveShowSlides;
|
|
3785
|
-
/** Slides shown in presentation mode: the active custom show, else the full deck. */
|
|
3786
|
-
protected readonly presentationSlides: _angular_core.Signal<PptxSlide[]>;
|
|
3787
|
-
/** Start index into {@link presentationSlides}: first slide of a custom show, else the active slide. */
|
|
3788
|
-
protected readonly presentationStartIndex: _angular_core.Signal<number>;
|
|
3789
3965
|
/** The `name` property of the loaded deck's theme (for check-mark in gallery). */
|
|
3790
3966
|
protected readonly activeThemeName: _angular_core.Signal<string | undefined>;
|
|
3791
3967
|
/**
|
|
@@ -3797,12 +3973,6 @@ declare class PowerPointViewerComponent {
|
|
|
3797
3973
|
protected readonly slidePropsKey: _angular_core.Signal<string>;
|
|
3798
3974
|
/** The single selected element on the active slide (for the inspector). */
|
|
3799
3975
|
protected readonly selectedElement: _angular_core.Signal<PptxElement | null>;
|
|
3800
|
-
/** True while the painter is armed (next element click applies the copied format). */
|
|
3801
|
-
protected readonly formatPainterActive: _angular_core.WritableSignal<boolean>;
|
|
3802
|
-
/** Format copied from the source element when the painter was armed. */
|
|
3803
|
-
private copiedFormat;
|
|
3804
|
-
/** Whether the painter can be armed: exactly one selected element with copyable format. */
|
|
3805
|
-
protected readonly canActivateFormatPainter: _angular_core.Signal<boolean>;
|
|
3806
3976
|
/**
|
|
3807
3977
|
* Built-in File ▸ Open override of the `content` input. The native picker
|
|
3808
3978
|
* sets this to swap the deck in place; a fresh `content` input clears it so
|
|
@@ -3834,20 +4004,6 @@ declare class PowerPointViewerComponent {
|
|
|
3834
4004
|
* baseline.
|
|
3835
4005
|
*/
|
|
3836
4006
|
applyThemePreset(preset: PptxThemePreset): void;
|
|
3837
|
-
/** Open the find/replace bar (mutually exclusive with the find-only bar). */
|
|
3838
|
-
protected openFindReplace(): void;
|
|
3839
|
-
/** Re-run the search over the editable deck and refresh the match list. */
|
|
3840
|
-
private refreshFindResults;
|
|
3841
|
-
protected onFindReplaceFind(evt: FindEvent): void;
|
|
3842
|
-
protected onFindReplaceNavigate(dir: 1 | -1): void;
|
|
3843
|
-
protected onFindReplaceReplaceOne(evt: ReplaceEvent): void;
|
|
3844
|
-
protected onFindReplaceReplaceAll(evt: ReplaceEvent): void;
|
|
3845
|
-
/** Start a real-time collaboration session from the share dialog config. */
|
|
3846
|
-
protected onShareStart(config: CollaborationConfig): void;
|
|
3847
|
-
protected onShareStop(): void;
|
|
3848
|
-
/** Start broadcasting (presenter as session owner) from the broadcast config. */
|
|
3849
|
-
protected onBroadcastStart(config: BroadcastConfig): void;
|
|
3850
|
-
protected onBroadcastStop(): void;
|
|
3851
4007
|
/**
|
|
3852
4008
|
* Wire the framework-agnostic touch-gesture recogniser to the `<main>` canvas
|
|
3853
4009
|
* host once it is in the DOM. Mirrors React's `useTouchGestures` wiring:
|
|
@@ -3953,17 +4109,6 @@ declare class PowerPointViewerComponent {
|
|
|
3953
4109
|
protected onInkStrokeComplete(ink: InkPptxElement): void;
|
|
3954
4110
|
/** Receive an eraser hit and delete the targeted ink element. */
|
|
3955
4111
|
protected onEraserHit(id: string): void;
|
|
3956
|
-
/**
|
|
3957
|
-
* Activate the eyedropper to pick a colour from the screen. Uses the native
|
|
3958
|
-
* EyeDropper API where available (Chrome/Edge); on Firefox/Safari it falls
|
|
3959
|
-
* back to a one-shot click that samples the slide DOM under the pointer.
|
|
3960
|
-
* When a shape/text/connector/image element is selected, applies the colour
|
|
3961
|
-
* to its fill; otherwise copies it to the clipboard. No-ops when the user
|
|
3962
|
-
* cancels (Escape) or nothing paintable is under the pointer.
|
|
3963
|
-
*/
|
|
3964
|
-
protected onToggleEyedropper(): Promise<void>;
|
|
3965
|
-
/** Apply a picked colour to the selected shape's fill, else copy to clipboard. */
|
|
3966
|
-
private applyEyedropperColor;
|
|
3967
4112
|
/** Append a comment to the active slide (one history entry). */
|
|
3968
4113
|
onCommentAdd(text: string): void;
|
|
3969
4114
|
/** Remove a comment from the active slide. */
|
|
@@ -3978,10 +4123,6 @@ declare class PowerPointViewerComponent {
|
|
|
3978
4123
|
onPropertiesSave(patch: Partial<PptxCoreProperties>): void;
|
|
3979
4124
|
/** Apply a hyperlink edit to the selected element (one history entry). */
|
|
3980
4125
|
onHyperlinkSave(patch: Partial<PptxElement>): void;
|
|
3981
|
-
/** Run a print job for the chosen settings, rasterising each slide off the live stage. */
|
|
3982
|
-
onPrint(settings: PrintSettings): Promise<void>;
|
|
3983
|
-
/** Flip the live stage to `index`, let it settle, and capture it to a PNG data URL. */
|
|
3984
|
-
private captureSlideDataUrl;
|
|
3985
4126
|
/**
|
|
3986
4127
|
* Handle an element press from the canvas. Additive (Shift/Ctrl) toggles
|
|
3987
4128
|
* membership; a plain press selects the element (keeping it selected if it
|
|
@@ -3993,12 +4134,6 @@ declare class PowerPointViewerComponent {
|
|
|
3993
4134
|
}): void;
|
|
3994
4135
|
/** Empty-stage press: disarm the painter if armed, else clear the selection. */
|
|
3995
4136
|
onBackgroundClick(): void;
|
|
3996
|
-
/** Toggle the format painter: arm from the current selection, or disarm. */
|
|
3997
|
-
toggleFormatPainter(): void;
|
|
3998
|
-
/** Disarm the painter and drop the copied format. */
|
|
3999
|
-
cancelFormatPainter(): void;
|
|
4000
|
-
/** Apply the copied format to a target element (shape/text style only; one history entry). */
|
|
4001
|
-
private applyFormatToTarget;
|
|
4002
4137
|
/** Right-click: select the element under the cursor and open the menu. */
|
|
4003
4138
|
onContextMenu(event: {
|
|
4004
4139
|
id: string | null;
|
|
@@ -4020,16 +4155,6 @@ declare class PowerPointViewerComponent {
|
|
|
4020
4155
|
* assigns one; the insert is a single undo/redo history entry.
|
|
4021
4156
|
*/
|
|
4022
4157
|
protected onInsertSmartArt(event: SmartArtInsertEvent): void;
|
|
4023
|
-
onCustomShowCreate(show: {
|
|
4024
|
-
name: string;
|
|
4025
|
-
slideIds: string[];
|
|
4026
|
-
}): void;
|
|
4027
|
-
onCustomShowRemove(id: string): void;
|
|
4028
|
-
onCustomShowUpdate(show: {
|
|
4029
|
-
id: string;
|
|
4030
|
-
name: string;
|
|
4031
|
-
slideIds: string[];
|
|
4032
|
-
}): void;
|
|
4033
4158
|
/** Commit an inline text edit: replace the element's text (one history entry). */
|
|
4034
4159
|
onTextCommit(event: {
|
|
4035
4160
|
id: string;
|
|
@@ -4054,38 +4179,12 @@ declare class PowerPointViewerComponent {
|
|
|
4054
4179
|
}): void;
|
|
4055
4180
|
/**
|
|
4056
4181
|
* Editing keyboard shortcuts (only when `canEdit` and not typing in a
|
|
4057
|
-
* field or presenting)
|
|
4058
|
-
*
|
|
4182
|
+
* field or presenting). The decorator must live on the component; the logic
|
|
4183
|
+
* is delegated to {@link ViewerKeyboardService}.
|
|
4059
4184
|
*/
|
|
4060
4185
|
onKeyDown(event: KeyboardEvent): void;
|
|
4061
4186
|
/** Resolve the live slide-stage element within `<main>`. */
|
|
4062
4187
|
private stageElement;
|
|
4063
|
-
/** Export the current slide as a PNG download. */
|
|
4064
|
-
exportPng(): Promise<void>;
|
|
4065
|
-
/**
|
|
4066
|
-
* Open the progress modal and arm a fresh `AbortController` for an export.
|
|
4067
|
-
* Returns the controller whose `signal` the capture loop checks per slide.
|
|
4068
|
-
*/
|
|
4069
|
-
private beginExport;
|
|
4070
|
-
/** Tear down the progress modal + export-in-flight state. */
|
|
4071
|
-
private endExport;
|
|
4072
|
-
/** User pressed Cancel: abort the loop and close the modal. */
|
|
4073
|
-
onCancelExport(): void;
|
|
4074
|
-
/**
|
|
4075
|
-
* Render every slide to a canvas (each made the live stage in turn), reporting
|
|
4076
|
-
* per-slide progress and bailing out cooperatively when `abortSignal.aborted`.
|
|
4077
|
-
*/
|
|
4078
|
-
private captureSlideCanvases;
|
|
4079
|
-
/**
|
|
4080
|
-
* Export every slide to a multi-page PDF. Each slide is made the live stage,
|
|
4081
|
-
* given a render tick to settle, captured to a canvas, then the original
|
|
4082
|
-
* slide is restored. Progress + Cancel drive the export-progress modal.
|
|
4083
|
-
*/
|
|
4084
|
-
exportPdf(): Promise<void>;
|
|
4085
|
-
/** Export every slide as an animated GIF (2s per slide). */
|
|
4086
|
-
exportGif(): Promise<void>;
|
|
4087
|
-
/** Export every slide as a WebM video (3s per slide) via MediaRecorder. */
|
|
4088
|
-
exportVideo(): Promise<void>;
|
|
4089
4188
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PowerPointViewerComponent, never>;
|
|
4090
4189
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PowerPointViewerComponent, "pptx-viewer", never, { "content": { "alias": "content"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "filePath": { "alias": "filePath"; "required": false; "isSignal": true; }; "collaboration": { "alias": "collaboration"; "required": false; "isSignal": true; }; "authorName": { "alias": "authorName"; "required": false; "isSignal": true; }; "shareDefaults": { "alias": "shareDefaults"; "required": false; "isSignal": true; }; "onOpenFile": { "alias": "onOpenFile"; "required": false; "isSignal": true; }; "smartArt3D": { "alias": "smartArt3D"; "required": false; "isSignal": true; }; }, { "activeSlideChange": "activeSlideChange"; "dirtyChange": "dirtyChange"; "contentChange": "contentChange"; "propertiesChange": "propertiesChange"; "startCollaboration": "startCollaboration"; "stopCollaboration": "stopCollaboration"; }, never, never, true, never>;
|
|
4091
4190
|
}
|
|
@@ -4616,7 +4715,7 @@ interface Paragraph {
|
|
|
4616
4715
|
* - `model3d` → poster / placeholder (no three.js)
|
|
4617
4716
|
* - `zoom` → slide/section zoom thumbnail
|
|
4618
4717
|
* - `picture` / `image` → `<img>`
|
|
4619
|
-
* - `media` →
|
|
4718
|
+
* - `media` → native `<video>`/`<audio>` playback, poster fallback
|
|
4620
4719
|
* - `group` → recursive children (self-referencing selector)
|
|
4621
4720
|
* - everything else → labelled placeholder (TODO, see PORTING.md)
|
|
4622
4721
|
*
|
|
@@ -4730,9 +4829,10 @@ declare class ElementRendererComponent {
|
|
|
4730
4829
|
*
|
|
4731
4830
|
* All path/style math lives in `connector-path.ts` / `connector-routing.ts`
|
|
4732
4831
|
* (pure TS, no Angular dependency) so it can be unit-tested without TestBed.
|
|
4832
|
+
* Compound (double/triple) lines render as parallel strands and line caps map
|
|
4833
|
+
* from `a:ln/@cap`; both derive from the shared connector geometry.
|
|
4733
4834
|
*
|
|
4734
|
-
* Not yet ported (TODO, see PORTING.md):
|
|
4735
|
-
* shadows/glow.
|
|
4835
|
+
* Not yet ported (TODO, see PORTING.md): line shadows/glow.
|
|
4736
4836
|
*/
|
|
4737
4837
|
declare class ConnectorRendererComponent {
|
|
4738
4838
|
readonly element: _angular_core.InputSignal<PptxElement>;
|
|
@@ -4746,6 +4846,13 @@ declare class ConnectorRendererComponent {
|
|
|
4746
4846
|
/** All derived geometry, recomputed on every input change. */
|
|
4747
4847
|
readonly geo: _angular_core.Signal<ConnectorGeometry>;
|
|
4748
4848
|
readonly viewBox: _angular_core.Signal<string>;
|
|
4849
|
+
/**
|
|
4850
|
+
* Parallel strokes for compound (double/triple) line styles. A single line
|
|
4851
|
+
* yields one strand at offset 0. Each strand carries its own width and is
|
|
4852
|
+
* translated perpendicular to the line; only the first strand paints the
|
|
4853
|
+
* start marker and only the last paints the end marker.
|
|
4854
|
+
*/
|
|
4855
|
+
readonly strands: _angular_core.Signal<ConnectorStrand[]>;
|
|
4749
4856
|
private readonly textProps;
|
|
4750
4857
|
readonly connectorText: _angular_core.Signal<string | undefined>;
|
|
4751
4858
|
readonly connectorSegments: _angular_core.Signal<TextSegment[] | undefined>;
|
|
@@ -4753,6 +4860,14 @@ declare class ConnectorRendererComponent {
|
|
|
4753
4860
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConnectorRendererComponent, never>;
|
|
4754
4861
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConnectorRendererComponent, "pptx-connector-renderer", never, { "element": { "alias": "element"; "required": true; "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; }; }, {}, never, never, true, never>;
|
|
4755
4862
|
}
|
|
4863
|
+
/** One parallel stroke of a (possibly compound) connector line. */
|
|
4864
|
+
interface ConnectorStrand {
|
|
4865
|
+
key: number;
|
|
4866
|
+
width: number;
|
|
4867
|
+
transform: string | null;
|
|
4868
|
+
markerStart: string | null;
|
|
4869
|
+
markerEnd: string | null;
|
|
4870
|
+
}
|
|
4756
4871
|
|
|
4757
4872
|
/** A `TextSegment` pre-processed with its computed inline style. */
|
|
4758
4873
|
interface StyledSegment {
|
|
@@ -4921,6 +5036,7 @@ declare class SmartArtRendererComponent {
|
|
|
4921
5036
|
*/
|
|
4922
5037
|
private readonly editor;
|
|
4923
5038
|
private readonly injector;
|
|
5039
|
+
private readonly translate;
|
|
4924
5040
|
/** The node currently being edited on the canvas, or null. */
|
|
4925
5041
|
protected readonly editState: _angular_core.WritableSignal<InlineEditState | null>;
|
|
4926
5042
|
/** The mounted `<textarea>` for the active node edit, if any. */
|
|
@@ -5008,19 +5124,23 @@ declare class SmartArtRendererComponent {
|
|
|
5008
5124
|
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; }; }, {}, never, never, true, never>;
|
|
5009
5125
|
}
|
|
5010
5126
|
|
|
5011
|
-
/**
|
|
5012
|
-
|
|
5013
|
-
|
|
5014
|
-
|
|
5015
|
-
|
|
5016
|
-
|
|
5017
|
-
*/
|
|
5018
|
-
/** Resolved per-stroke data used to render a single `<path>`. */
|
|
5127
|
+
/** A circle representing a single pressure point on an ink stroke. */
|
|
5128
|
+
interface PressureCircle {
|
|
5129
|
+
cx: number;
|
|
5130
|
+
cy: number;
|
|
5131
|
+
r: number;
|
|
5132
|
+
}
|
|
5133
|
+
/** Resolved per-stroke data used to render a single `<path>` (or circle set). */
|
|
5019
5134
|
interface InkStroke {
|
|
5020
5135
|
d: string;
|
|
5021
5136
|
color: string;
|
|
5022
5137
|
width: number;
|
|
5023
5138
|
opacity: number;
|
|
5139
|
+
/**
|
|
5140
|
+
* When present, render as pressure-sensitive circles instead of a plain
|
|
5141
|
+
* constant-width `<path>`. Empty/absent means a constant-width stroke.
|
|
5142
|
+
*/
|
|
5143
|
+
circles?: PressureCircle[];
|
|
5024
5144
|
}
|
|
5025
5145
|
|
|
5026
5146
|
/**
|
|
@@ -5033,9 +5153,13 @@ interface InkStroke {
|
|
|
5033
5153
|
* width, and opacity resolved from the parallel `inkColors`/`inkWidths`/
|
|
5034
5154
|
* `inkOpacities` arrays.
|
|
5035
5155
|
*
|
|
5036
|
-
*
|
|
5037
|
-
*
|
|
5038
|
-
*
|
|
5156
|
+
* Pressure-sensitive variable-width strokes (`inkPointPressures`, or a varying
|
|
5157
|
+
* `inkWidths` array) are rendered as a set of filled `<circle>` elements whose
|
|
5158
|
+
* radii follow the per-point pressure, matching React's `renderInk`. Strokes
|
|
5159
|
+
* without pressure variation degrade to a plain constant-width `<path>`.
|
|
5160
|
+
*
|
|
5161
|
+
* Not ported (TODO, see PORTING.md): ink replay animation and the
|
|
5162
|
+
* highlighter/eraser tool blend modes.
|
|
5039
5163
|
*
|
|
5040
5164
|
* All non-trivial pure computation lives in `ink-renderer-helpers.ts` (no
|
|
5041
5165
|
* Angular dependency) so it can be unit-tested without TestBed.
|
|
@@ -6103,11 +6227,11 @@ declare class TableCellAdvancedFillComponent {
|
|
|
6103
6227
|
readonly styleChange: _angular_core.OutputEmitterRef<Partial<PptxTableCellStyle>>;
|
|
6104
6228
|
protected readonly fillModes: {
|
|
6105
6229
|
value: "none" | "solid" | "gradient" | "pattern";
|
|
6106
|
-
|
|
6230
|
+
i18nKey: string;
|
|
6107
6231
|
}[];
|
|
6108
6232
|
protected readonly gradientTypes: {
|
|
6109
6233
|
value: string;
|
|
6110
|
-
|
|
6234
|
+
i18nKey: string;
|
|
6111
6235
|
}[];
|
|
6112
6236
|
protected readonly patterns: ("horz" | "vert" | "pct5" | "pct10" | "pct20" | "pct25" | "pct30" | "pct40" | "pct50" | "pct60" | "pct70" | "pct75" | "pct80" | "pct90" | "ltHorz" | "dkHorz" | "narHorz" | "wdHorz" | "ltVert" | "dkVert" | "narVert" | "wdVert" | "dashHorz" | "dashVert" | "cross" | "dnDiag" | "ltDnDiag" | "dkDnDiag" | "wdDnDiag" | "dashDnDiag" | "upDiag" | "ltUpDiag" | "dkUpDiag" | "wdUpDiag" | "dashUpDiag" | "diagCross" | "smCheck" | "lgCheck" | "smGrid" | "lgGrid" | "dotGrid" | "smConfetti" | "lgConfetti" | "horzBrick" | "diagBrick" | "solidDmnd" | "openDmnd" | "dotDmnd" | "plaid" | "sphere" | "weave" | "divot" | "shingle" | "wave" | "trellis" | "zigZag")[];
|
|
6113
6237
|
protected readonly margins: ReadonlyArray<{
|
|
@@ -6229,6 +6353,7 @@ declare class ChartDataLabelOptionsComponent {
|
|
|
6229
6353
|
protected readonly contentOptions: readonly {
|
|
6230
6354
|
key: ChartDataLabelContentKey;
|
|
6231
6355
|
label: string;
|
|
6356
|
+
labelKey: string;
|
|
6232
6357
|
}[];
|
|
6233
6358
|
protected readonly positionOptions: readonly ChartOption<ChartDataLabelPositionValue>[];
|
|
6234
6359
|
protected readonly style: _angular_core.Signal<pptx_viewer_core.PptxChartStyle>;
|
|
@@ -6239,10 +6364,10 @@ declare class ChartDataLabelOptionsComponent {
|
|
|
6239
6364
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartDataLabelOptionsComponent, "pptx-chart-data-label-options", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, { "elementChange": "elementChange"; }, never, never, true, never>;
|
|
6240
6365
|
}
|
|
6241
6366
|
|
|
6242
|
-
/** Axis kinds the inspector exposes, with their label and whether they scale. */
|
|
6367
|
+
/** Axis kinds the inspector exposes, with their label key and whether they scale. */
|
|
6243
6368
|
interface AxisRow$1 {
|
|
6244
6369
|
type: PptxChartAxisType;
|
|
6245
|
-
|
|
6370
|
+
labelKey: string;
|
|
6246
6371
|
hasScale: boolean;
|
|
6247
6372
|
axis: PptxChartAxisFormatting;
|
|
6248
6373
|
}
|
|
@@ -6252,7 +6377,7 @@ declare class ChartAxisOptionsComponent {
|
|
|
6252
6377
|
readonly elementChange: _angular_core.OutputEmitterRef<ChartPptxElement>;
|
|
6253
6378
|
protected readonly scaleFields: readonly {
|
|
6254
6379
|
key: "min" | "max" | "majorUnit" | "minorUnit";
|
|
6255
|
-
|
|
6380
|
+
labelKey: string;
|
|
6256
6381
|
}[];
|
|
6257
6382
|
protected readonly displayUnitOptions: readonly ChartOption<ChartDisplayUnitsValue>[];
|
|
6258
6383
|
protected readonly tickPositionOptions: readonly ChartOption<ChartTickLabelPosition>[];
|
|
@@ -6272,7 +6397,7 @@ declare class ChartAxisOptionsComponent {
|
|
|
6272
6397
|
|
|
6273
6398
|
interface AxisRow {
|
|
6274
6399
|
type: PptxChartAxisType;
|
|
6275
|
-
|
|
6400
|
+
labelKey: string;
|
|
6276
6401
|
hasScale: boolean;
|
|
6277
6402
|
axis: PptxChartAxisFormatting;
|
|
6278
6403
|
}
|
|
@@ -6401,35 +6526,43 @@ declare class AnimationAuthorPanelComponent {
|
|
|
6401
6526
|
protected readonly entrancePresets: readonly {
|
|
6402
6527
|
value: PptxAnimationPreset;
|
|
6403
6528
|
label: string;
|
|
6529
|
+
labelKey: string;
|
|
6404
6530
|
}[];
|
|
6405
6531
|
protected readonly exitPresets: readonly {
|
|
6406
6532
|
value: PptxAnimationPreset;
|
|
6407
6533
|
label: string;
|
|
6534
|
+
labelKey: string;
|
|
6408
6535
|
}[];
|
|
6409
6536
|
protected readonly emphasisPresets: readonly {
|
|
6410
6537
|
value: PptxAnimationPreset;
|
|
6411
6538
|
label: string;
|
|
6539
|
+
labelKey: string;
|
|
6412
6540
|
}[];
|
|
6413
6541
|
protected readonly triggerOptions: readonly {
|
|
6414
6542
|
value: PptxAnimationTrigger;
|
|
6415
6543
|
label: string;
|
|
6544
|
+
labelKey: string;
|
|
6416
6545
|
}[];
|
|
6417
6546
|
protected readonly timingCurveOptions: readonly {
|
|
6418
6547
|
value: PptxAnimationTimingCurve;
|
|
6419
6548
|
label: string;
|
|
6549
|
+
labelKey: string;
|
|
6420
6550
|
}[];
|
|
6421
6551
|
protected readonly repeatModeOptions: readonly {
|
|
6422
6552
|
value: "none" | PptxAnimationRepeatMode;
|
|
6423
6553
|
label: string;
|
|
6554
|
+
labelKey: string;
|
|
6424
6555
|
}[];
|
|
6425
6556
|
protected readonly directionOptions: readonly {
|
|
6426
6557
|
value: PptxAnimationDirection;
|
|
6427
6558
|
label: string;
|
|
6559
|
+
labelKey: string;
|
|
6428
6560
|
arrow: string;
|
|
6429
6561
|
}[];
|
|
6430
6562
|
protected readonly sequenceOptions: readonly {
|
|
6431
6563
|
value: PptxAnimationSequence;
|
|
6432
6564
|
label: string;
|
|
6565
|
+
labelKey: string;
|
|
6433
6566
|
}[];
|
|
6434
6567
|
/**
|
|
6435
6568
|
* Changes only when a *different* element is selected. Used as the
|
|
@@ -6492,8 +6625,8 @@ declare class AnimationAuthorPanelComponent {
|
|
|
6492
6625
|
/** Descriptor for a single menu row. */
|
|
6493
6626
|
interface MenuRow {
|
|
6494
6627
|
key: string;
|
|
6495
|
-
|
|
6496
|
-
|
|
6628
|
+
labelKey: string;
|
|
6629
|
+
sublabelKey?: string;
|
|
6497
6630
|
/** SVG path data (24 × 24 view-box). */
|
|
6498
6631
|
svgPath: string;
|
|
6499
6632
|
disabled?: boolean;
|
|
@@ -7462,7 +7595,9 @@ declare class BroadcastDialogComponent {
|
|
|
7462
7595
|
readonly serverUrl: _angular_core.WritableSignal<string>;
|
|
7463
7596
|
readonly copied: _angular_core.WritableSignal<boolean>;
|
|
7464
7597
|
readonly canStart: _angular_core.Signal<boolean>;
|
|
7465
|
-
readonly
|
|
7598
|
+
private readonly broadcastingTitle;
|
|
7599
|
+
private readonly startTitle;
|
|
7600
|
+
readonly dialogTitle: _angular_core.Signal<any>;
|
|
7466
7601
|
readonly canCopy: _angular_core.Signal<boolean>;
|
|
7467
7602
|
constructor();
|
|
7468
7603
|
asValue(event: Event): string;
|
|
@@ -7559,7 +7694,7 @@ declare class EquationEditorDialogComponent {
|
|
|
7559
7694
|
/** True when editing an existing equation (drives the title / button label). */
|
|
7560
7695
|
readonly isEditing: _angular_core.Signal<boolean>;
|
|
7561
7696
|
/** Header title: edit vs insert. */
|
|
7562
|
-
readonly dialogTitle: _angular_core.Signal<"
|
|
7697
|
+
readonly dialogTitle: _angular_core.Signal<"pptx.equation.editTitle" | "pptx.equation.insertTitle">;
|
|
7563
7698
|
/** Live OMML compiled from the current LaTeX ({} on failure / empty input). */
|
|
7564
7699
|
private readonly omml;
|
|
7565
7700
|
/** Whether there is a renderable equation (drives preview + insert enabling). */
|
|
@@ -7601,6 +7736,7 @@ declare class EquationTemplateGalleryComponent {
|
|
|
7601
7736
|
/** Templates with pre-computed MathML previews (built once). */
|
|
7602
7737
|
protected readonly templates: ReadonlyArray<EquationTemplate & {
|
|
7603
7738
|
mathml: SafeHtml;
|
|
7739
|
+
i18nKey: string;
|
|
7604
7740
|
}>;
|
|
7605
7741
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EquationTemplateGalleryComponent, never>;
|
|
7606
7742
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EquationTemplateGalleryComponent, "pptx-equation-template-gallery", never, { "activeLatex": { "alias": "activeLatex"; "required": false; "isSignal": true; }; }, { "select": "select"; }, never, never, true, never>;
|
|
@@ -7945,7 +8081,6 @@ declare class KeepAnnotationsDialogComponent {
|
|
|
7945
8081
|
readonly keep: _angular_core.OutputEmitterRef<void>;
|
|
7946
8082
|
/** Fired when the user discards the annotations (also on dismiss). */
|
|
7947
8083
|
readonly discard: _angular_core.OutputEmitterRef<void>;
|
|
7948
|
-
readonly description: _angular_core.Signal<string>;
|
|
7949
8084
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KeepAnnotationsDialogComponent, never>;
|
|
7950
8085
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KeepAnnotationsDialogComponent, "pptx-keep-annotations-dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "annotationCount": { "alias": "annotationCount"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; }, { "keep": "keep"; "discard": "discard"; }, never, never, true, never>;
|
|
7951
8086
|
}
|
|
@@ -7959,7 +8094,6 @@ declare class SignatureStrippedDialogComponent {
|
|
|
7959
8094
|
readonly confirm: _angular_core.OutputEmitterRef<void>;
|
|
7960
8095
|
/** Fired when the user backs out (also on dismiss). */
|
|
7961
8096
|
readonly cancel: _angular_core.OutputEmitterRef<void>;
|
|
7962
|
-
readonly message: _angular_core.Signal<string>;
|
|
7963
8097
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SignatureStrippedDialogComponent, never>;
|
|
7964
8098
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SignatureStrippedDialogComponent, "pptx-signature-stripped-dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "signatureCount": { "alias": "signatureCount"; "required": false; "isSignal": true; }; }, { "confirm": "confirm"; "cancel": "cancel"; }, never, never, true, never>;
|
|
7965
8099
|
}
|
|
@@ -8058,15 +8192,15 @@ declare class PrintSettingsPanelComponent {
|
|
|
8058
8192
|
protected readonly handoutOptions: HandoutSlidesPerPage[];
|
|
8059
8193
|
protected readonly printWhatOptions: {
|
|
8060
8194
|
value: PrintWhat;
|
|
8061
|
-
|
|
8195
|
+
labelKey: string;
|
|
8062
8196
|
}[];
|
|
8063
8197
|
protected readonly orientationOptions: {
|
|
8064
8198
|
value: PrintOrientation;
|
|
8065
|
-
|
|
8199
|
+
labelKey: string;
|
|
8066
8200
|
}[];
|
|
8067
8201
|
protected readonly colorModeOptions: {
|
|
8068
8202
|
value: PrintColorMode;
|
|
8069
|
-
|
|
8203
|
+
labelKey: string;
|
|
8070
8204
|
}[];
|
|
8071
8205
|
/** Emit a settings patch. */
|
|
8072
8206
|
emit(patch: Partial<PrintSettings>): void;
|
|
@@ -8181,6 +8315,9 @@ declare class PresentationSubtitleBarComponent implements OnChanges {
|
|
|
8181
8315
|
readonly visible: _angular_core.InputSignal<boolean>;
|
|
8182
8316
|
private readonly _captionText;
|
|
8183
8317
|
private readonly _supportState;
|
|
8318
|
+
/** Reactive translated caption strings (used inside the recognition wiring). */
|
|
8319
|
+
private readonly listeningLabel;
|
|
8320
|
+
private readonly notSupportedLabel;
|
|
8184
8321
|
/** The text string rendered in the caption bar. */
|
|
8185
8322
|
protected readonly displayText: _angular_core.WritableSignal<string>;
|
|
8186
8323
|
/**
|
|
@@ -8592,5 +8729,29 @@ declare function themeStyle(theme: ViewerTheme | undefined): Record<string, stri
|
|
|
8592
8729
|
type ClassValue = string | number | false | null | undefined;
|
|
8593
8730
|
declare function cn(...values: ClassValue[]): string;
|
|
8594
8731
|
|
|
8595
|
-
|
|
8596
|
-
|
|
8732
|
+
/**
|
|
8733
|
+
* The canonical English UI-string dictionary for pptx-viewer. None of the
|
|
8734
|
+
* React/Vue/Angular binding packages ship translations themselves - each
|
|
8735
|
+
* only calls its framework's translation function (react-i18next's `t()`,
|
|
8736
|
+
* vue-i18n's `t()`, ngx-translate's `TranslateService`/`translate` pipe)
|
|
8737
|
+
* against dotted `pptx.*` keys. The host app supplies the dictionary; this
|
|
8738
|
+
* module is that dictionary for the demos, shared so all three stay in sync
|
|
8739
|
+
* instead of drifting into three separate copies.
|
|
8740
|
+
*/
|
|
8741
|
+
declare const translationsEn: Record<string, string>;
|
|
8742
|
+
/**
|
|
8743
|
+
* Every key in the English dictionary. A new locale dictionary typed as
|
|
8744
|
+
* `Record<TranslationKey, string>` gets a compile error for any key it's
|
|
8745
|
+
* missing or misspells, so translation contributions stay complete without a
|
|
8746
|
+
* separate parity test.
|
|
8747
|
+
*/
|
|
8748
|
+
type TranslationKey = keyof typeof translationsEn;
|
|
8749
|
+
/**
|
|
8750
|
+
* Convert a dotted translation key to a human-readable label when no
|
|
8751
|
+
* explicit dictionary entry exists yet. Takes the last segment and converts
|
|
8752
|
+
* camelCase to Title Case, e.g. "pptx.slideSorter.zoomIn" -> "Zoom In".
|
|
8753
|
+
*/
|
|
8754
|
+
declare function keyToLabel(key: string): string;
|
|
8755
|
+
|
|
8756
|
+
export { AUDIENCE_HASH, AUDIENCE_NONCE_KEY, AccessibilityPanelComponent, AccessibilityService, AdvancedChartEditorComponent, AnimationAuthorPanelComponent, AnimationPanelComponent, AnimationPlaybackService, BroadcastDialogComponent, CURSOR_PALETTE, ChartAxisOptionsComponent, ChartAxisStyleOptionsComponent, ChartComboTypeOptionsComponent, ChartDataEditorComponent, ChartDataLabelOptionsComponent, ChartDatapointOptionsComponent, ChartDisplayOptionsComponent, ChartErrorBarOptionsComponent, ChartMarkerOptionsComponent, ChartRendererComponent, ChartTrendlineOptionsComponent, CollaborationCursorsComponent, CollaborationService, CommentsPanelComponent, CommentsService, ComparePanelComponent, 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, TEMPLATES as EQUATION_TEMPLATES, EditorContextMenuComponent, EditorHistory, EditorStateService, EditorToolbarComponent, EffectsPanelComponent, ElementRendererComponent, EmbeddedFontsService, EncryptedFileDialogComponent, EquationEditorDialogComponent, EquationRendererComponent, EquationTemplateGalleryComponent, ExportService, FindBarComponent, FindReplaceBarComponent, FontEmbeddingListComponent, FontEmbeddingPanelComponent, GradientPickerComponent, HANDOUT_OPTIONS, HyperlinkDialogComponent, InkRendererComponent, InspectorPanelComponent, IsMobileService, KeepAnnotationsDialogComponent, LoadContentService, MobileBottomBarComponent, MobileMenuSheetComponent, MobilePresenterViewComponent, MobileSheetComponent, MobileSlidesSheetComponent, MobileToolbarComponent, ModalDialogComponent, Model3DRendererComponent, NotesPanelComponent, OleRendererComponent, PRESENTER_CHANNEL_NAME, PRESENTER_MSG_ORIGIN, PasswordProtectionDialogComponent, PasswordStrengthMeterComponent, PowerPointViewerComponent, PresentationAnnotationOverlayComponent, PresentationAnnotationsService, PresentationOverlayComponent, PresentationSubtitleBarComponent, PresentationTransitionOverlayComponent, PresenterViewComponent, PresenterWindowService, PrintDialogComponent, PrintService, PrintSettingsPanelComponent, PropertiesDialogComponent, RESIZE_HANDLES, SEVERITY_GROUPS, SEVERITY_LABELS, SLIDE_TRANSITION_KEYFRAMES, SVG_WARP_PRESETS, SetUpSlideShowDialogComponent, ShareDialogComponent, ShortcutPanelComponent, ShowOptionsFieldsetComponent, ShowSlidesFieldsetComponent, SignatureStrippedDialogComponent, SignaturesPanelComponent, SignaturesService, SlideCanvasComponent, SlideDiffChangesComponent, SlideDiffRowComponent, SlideDiffThumbnailsComponent, SlideSorterOverlayComponent, SlidesPanelComponent, SmartArtRendererComponent, StatusBarComponent, TYPE_LABELS, TableCellAdvancedFillComponent, TableCellFormattingComponent, TableDataEditorComponent, TablePropertiesComponent, TableRendererComponent, TableResizeOverlayComponent, TableSelectionService, TextAdvancedPanelComponent, VIEWER_THEME, VersionHistoryPanelComponent, ViewerCompareService, ViewerDialogsService, ViewerExtraDialogsComponent, WEBM_MIME_CANDIDATES, ZoomRendererComponent, addCommentToList, advanceStep, annotationMapToInkInserts, applyAcceptedDiff, applyFindReplacements, applyFormatToElement, applyMove, applyResize, assignUserColor, bringForward, bringToFront, buildBroadcastConfig, buildBroadcastViewerUrl, buildClearHyperlinkPatch, buildClickGroups, buildCollaborationConfig, buildCssGradientFromShapeStyle, buildDuotoneFilter, buildDuotoneFilterId, buildEmbeddedFontStyles, buildEquationElement, buildEquationSegment, buildFontFaceRule, buildHyperlinkPatch, buildPatternFillCss, buildPrintHtmlDocument as buildPrintDocument, buildPropertiesPatch, buildShareUrl, bulletIndentPx, canStartBroadcast, canStartShare, canUseClipboard, changeCountLabel, changeIcon, checkFontAvailable, clampCursorPosition, clampGifDimensions, clampNotesFontSize, clampStep, clearAudienceContent, cn, collectAccessibilityIssues, collectElementText, collectSlideText, collectUsedFontFamilies, computeHandoutLayout, computeIsMobile, computeIsTablet, computePageCount, computeSlideIndices, computeTimerProgress, convertOmmlToMathMl, copyFormatFromElement, countAccessibilityIssues, countAnnotationStrokes, defaultCssVars, defaultRadius, defaultThemeColors, deleteElementsByIds, deleteVersion as deleteRecoveryVersion, derivePresenceList, duplicateElementById, durationOf, encodeGif, estimatePageCount, findInSlides, fontMimeForFormat, formatAutoNumber, formatCursorLabel, formatElapsed, formatFileSize, formatPropertyDate, formatTime, fpsToFrameIntervalMs, generateBroadcastRoomId, generateCommentId, getContainerStyle, getDuotoneFilterDef, getImageSrc, getPasswordStrength, getPatternSvg, getVersions as getRecoveryVersions, getResolvedShapeClipPath, getResolvedShapeClipPathFor, getShapeFillStrokeStyle, getSlideBackgroundStyle, getSlideTransitionAnimations, getTextBlockStyle, getTextWarp, getWarpCategory, getWarpPath, groupIssuesBySeverity, hasCopyableFormat, hasExistingLink, headerLabel, isAudienceTab, isInjectableUrl, isPpactionUrl, isPresenterMessage, isSigned, isUrlSafe, isValidRoomId, issueTrackKey, issueTypeLabel, keyToLabel, latexToMathml, loadAudienceContent, moveElementBy, msToFrameDelayCs, normalizeFontFormat, normalizeSlidesPerPage, ommlToMathml, overallStatus, parseAudienceNonce, pendingElementStyles, pickSupportedMimeType, planGifFrames, planVideoSegments, presenceToCursors, provideViewerTheme, recordWebm, removeCommentFromList, renderToCanvas, replaceInSlides, replaceMatch, resizeElement, resolveFontVariant, resolveHyperlinkHref, resolveParagraphBullet, resolvePresenterNotes, resolveTransitionDuration, revealedElementStyles, routeOrthogonalConnector, sanitizeColor, sanitizeSlideIndex, sanitizeUserName, scanAvailableFonts, searchSlides, seedBroadcastFields, seedHyperlinkDraft, seedPropertiesDraft, seedShareFields, segmentFrameCount, sendBackward, sendToBack, setElementPosition, shouldUseSvgWarp, signatureCountLabel, signatureKey, signatureTimestamp, signerName, statusLabel as slideDiffStatusLabel, slideNumberOf, statusKind, statusLabel$1 as statusLabel, storeAudienceContent, themeStyle, themeToCssVars, toggleCommentResolvedInList, translationsEn, updateElementById, validatePassword, validatePrintSettings, validateRoomId, waypointsToPathD, worstStatus };
|
|
8757
|
+
export type { AccessibilityIssueGroup, AnimationClickGroup, AnnotationInkInsert, AnnotationStroke, Box, BroadcastConfig, BroadcastDefaults, CSSProperties, CanvasSize, ClassValue, CollaborationConfig, CollaborationRole, RouterRect as ConnectorObstacle, RouterPoint as ConnectorPoint, ConnectorRouting, CopiedFormat, DocumentProperties, DuotoneFilterDef, EmbeddedFontStyles, EquationTemplate, FindOptions, FindResult, GifFrame, GifFramePlan, GifPlanOptions, HandoutSlidesPerPage, HyperlinkDraft, NotesSegmentViewModel, ObjectUrlFactory, OverallSignatureStatus, PresentationTool, PresenterExitMessage, PresenterMessage, PresenterNotes, PresenterSlideChangeMessage, PrintColorMode, PrintHtmlDocumentOptions as PrintDocumentOptions, PrintOrientation, PrintSettings, PrintSlideRange, PrintWhat, PropertiesDraft, RecordWebmOptions, RecoveryVersion, RemoteCursor, SanitizedPresence as RemotePresence, ReplaceResult, ResizeHandle, ResolvedFontVariant, ShareDefaults, ShareFormFields, SignatureStatusKind, SlideTransitionAnimations, StyleMap, TableCellSelection, TextWarpCssDef, TextWarpDef, TextWarpPathDef, TimerProgress, TranslationKey, VideoPlanOptions, VideoSegmentPlan, ViewerTheme, ViewerThemeColors };
|