pptx-angular-viewer 3.9.0 → 3.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/fesm2022/{pptx-angular-viewer-chat-history-idb-BHSiNfjU.mjs → pptx-angular-viewer-chat-history-idb-HlR4XrKD.mjs} +2 -2
- package/fesm2022/{pptx-angular-viewer-chat-history-idb-BHSiNfjU.mjs.map → pptx-angular-viewer-chat-history-idb-HlR4XrKD.mjs.map} +1 -1
- package/fesm2022/{pptx-angular-viewer-index-BbiIOY_Y.mjs → pptx-angular-viewer-index-PoHn1XJd.mjs} +81 -23
- package/fesm2022/pptx-angular-viewer-index-PoHn1XJd.mjs.map +1 -0
- package/fesm2022/{pptx-angular-viewer-pptx-angular-viewer-BzS7I0F9.mjs → pptx-angular-viewer-pptx-angular-viewer-C1wF12EK.mjs} +17222 -7968
- package/fesm2022/{pptx-angular-viewer-pptx-angular-viewer-BzS7I0F9.mjs.map → pptx-angular-viewer-pptx-angular-viewer-C1wF12EK.mjs.map} +1 -1
- package/fesm2022/pptx-angular-viewer.mjs +1 -1
- package/package.json +9 -9
- package/pptx-angular-viewer.css +1 -1
- package/types/pptx-angular-viewer.d.ts +1076 -1228
- package/types/pptx-angular-viewer.d.ts.map +1 -1
- package/fesm2022/pptx-angular-viewer-index-BbiIOY_Y.mjs.map +0 -1
|
@@ -374,39 +374,6 @@ declare const DEFAULT_FILL_COLOR = "#3b82f6";
|
|
|
374
374
|
/** Fallback shape stroke colour. */
|
|
375
375
|
declare const DEFAULT_STROKE_COLOR = "#1f2937";
|
|
376
376
|
|
|
377
|
-
/**
|
|
378
|
-
* `hollow-shape-hit-test`: making an UNFILLED shape click-through.
|
|
379
|
-
*
|
|
380
|
-
* PowerPoint hit-tests an unfilled shape on its OUTLINE and its TEXT only: a
|
|
381
|
-
* bare frame drawn over a chart is a border you can grab, not a pane that
|
|
382
|
-
* swallows every click inside it. The web does not work that way - a
|
|
383
|
-
* `background: transparent` box still hit-tests across its whole border box -
|
|
384
|
-
* so a `<a:noFill/>` rectangle laid over other content stole every click meant
|
|
385
|
-
* for what was underneath it, and those elements could only be selected by
|
|
386
|
-
* moving the frame out of the way (issue #132 deck, slide 5, where a panel
|
|
387
|
-
* frame sat over a bar chart and two text boxes).
|
|
388
|
-
*
|
|
389
|
-
* The fix mirrors `connector-hit-target`, which solves the same problem from the
|
|
390
|
-
* other direction: the container goes `pointer-events: none` and a TRANSPARENT
|
|
391
|
-
* stroke along the shape's own outline opts that outline back in with
|
|
392
|
-
* `pointer-events: stroke`. `pointer-events` inherits, so a descendant
|
|
393
|
-
* re-enabling itself under a `none` ancestor works by construction.
|
|
394
|
-
*
|
|
395
|
-
* Deliberately narrow: only a shape with NO text qualifies. An unfilled TEXT
|
|
396
|
-
* box is also outline-only in PowerPoint, but its text must stay clickable and
|
|
397
|
-
* that is a much larger behavioural change than the reported bug needs.
|
|
398
|
-
*
|
|
399
|
-
* @module render/hollow-shape-hit-test
|
|
400
|
-
*/
|
|
401
|
-
|
|
402
|
-
/** Geometry and band width for a hollow shape's transparent outline target. */
|
|
403
|
-
interface HollowHitOutline {
|
|
404
|
-
/** SVG path data for the shape's own outline. */
|
|
405
|
-
readonly d: string;
|
|
406
|
-
/** Width of the transparent stroke painted along it. */
|
|
407
|
-
readonly strokeWidth: number;
|
|
408
|
-
}
|
|
409
|
-
|
|
410
377
|
/**
|
|
411
378
|
* Shape geometry helpers — Vue port of the React package's
|
|
412
379
|
* `viewer/utils/resolved-shape-clip-path.ts` cascade.
|
|
@@ -555,279 +522,6 @@ declare function buildPatternFillCss(style: ShapeStyle | undefined): {
|
|
|
555
522
|
backgroundImage: string;
|
|
556
523
|
backgroundColor: string;
|
|
557
524
|
} | undefined;
|
|
558
|
-
/** Result of {@link getComputedFillStyle}. */
|
|
559
|
-
interface ComputedFillStyle {
|
|
560
|
-
backgroundColor?: string;
|
|
561
|
-
backgroundImage?: string;
|
|
562
|
-
backgroundSize?: string;
|
|
563
|
-
backgroundPosition?: string;
|
|
564
|
-
backgroundRepeat?: string;
|
|
565
|
-
/** Carried through for renderers that need to inject pattern defs. */
|
|
566
|
-
svgFilter?: {
|
|
567
|
-
id: string;
|
|
568
|
-
markup: string;
|
|
569
|
-
};
|
|
570
|
-
}
|
|
571
|
-
|
|
572
|
-
/**
|
|
573
|
-
* `path="rect"` SVG paint server: the true nested-rectangle (Chebyshev)
|
|
574
|
-
* gradient field, as a `<pattern>` whose tile is the same normalised SVG
|
|
575
|
-
* image {@link ./path-gradient-rect.ts} builds for the CSS `background-image`
|
|
576
|
-
* path.
|
|
577
|
-
*
|
|
578
|
-
* Split out of `svg-gradient-paint.ts` (which stays focused on the
|
|
579
|
-
* `<linearGradient>` / `<radialGradient>` paint servers SVG can express
|
|
580
|
-
* natively) to keep both files under this repo's ~300-LOC guideline.
|
|
581
|
-
*
|
|
582
|
-
* @module svg-gradient-rect-path
|
|
583
|
-
*/
|
|
584
|
-
|
|
585
|
-
/**
|
|
586
|
-
* A `path="rect"` gradient's true nested-rectangle field, painted as a
|
|
587
|
-
* `<pattern>` whose single tile is stretched to the shape's own box
|
|
588
|
-
* (`patternUnits="objectBoundingBox"`, `width`/`height` 1, the `<image>`
|
|
589
|
-
* itself `preserveAspectRatio="none"`).
|
|
590
|
-
*
|
|
591
|
-
* SVG's native `<radialGradient>` can only express an ellipse, which is a
|
|
592
|
-
* visibly wrong approximation for a rect-path gradient near a non-square
|
|
593
|
-
* shape's corners (see `path-gradient-rect.ts`'s module doc), so a freeform
|
|
594
|
-
* (`a:custGeom`) shape with `a:path type="rect"` needs this distinct paint
|
|
595
|
-
* server instead of an elliptical `SvgRadialGradientDef`.
|
|
596
|
-
*/
|
|
597
|
-
interface SvgRectPathGradientDef {
|
|
598
|
-
kind: 'rectPath';
|
|
599
|
-
id: string;
|
|
600
|
-
/** `data:image/svg+xml,...` of the nested-rectangle band field. */
|
|
601
|
-
href: string;
|
|
602
|
-
}
|
|
603
|
-
|
|
604
|
-
/**
|
|
605
|
-
* SVG `<pattern>` paint server for a preset pattern OUTLINE (`a:ln/a:pattFill`).
|
|
606
|
-
*
|
|
607
|
-
* Split out of `svg-gradient-paint.ts` to keep that file (and this one) under
|
|
608
|
-
* this repo's ~300-LOC guideline; both are part of the same "freeform shape
|
|
609
|
-
* needs a real SVG paint server, not a flattened representative colour"
|
|
610
|
-
* effort (see that module's header).
|
|
611
|
-
*
|
|
612
|
-
* @module svg-stroke-pattern-paint
|
|
613
|
-
*/
|
|
614
|
-
|
|
615
|
-
/**
|
|
616
|
-
* An SVG `<pattern>` paint server for a preset pattern OUTLINE.
|
|
617
|
-
*
|
|
618
|
-
* The tile is carried as a data-URI `<image>` rather than inline primitives so
|
|
619
|
-
* every binding can render the `<pattern>` from plain attribute bindings, with
|
|
620
|
-
* no raw-markup injection (which Angular's template sanitiser would fight).
|
|
621
|
-
*/
|
|
622
|
-
interface SvgPatternDef {
|
|
623
|
-
kind: 'pattern';
|
|
624
|
-
id: string;
|
|
625
|
-
/** Tile size in user-space px; the pattern repeats on this grid. */
|
|
626
|
-
width: number;
|
|
627
|
-
height: number;
|
|
628
|
-
/** `data:image/svg+xml,…` of one rendered tile. */
|
|
629
|
-
href: string;
|
|
630
|
-
}
|
|
631
|
-
|
|
632
|
-
/**
|
|
633
|
-
* OOXML gradient fill (`a:gradFill`) → SVG paint server.
|
|
634
|
-
*
|
|
635
|
-
* The CSS resolvers in `fill-style.ts` cover every shape a binding paints as an
|
|
636
|
-
* HTML box (a `background-image` clipped by `clip-path`). Freeform geometry is
|
|
637
|
-
* different: `a:custGeom` shapes are painted as a real SVG `<path>`, and an SVG
|
|
638
|
-
* `fill` attribute cannot take a CSS gradient. Renderers therefore fell back to
|
|
639
|
-
* the parser's *representative* solid colour, so a freeform authored with a
|
|
640
|
-
* left-to-right fade rendered as one flat block and any transparent region of
|
|
641
|
-
* the gradient became opaque (issue #132).
|
|
642
|
-
*
|
|
643
|
-
* This module converts the same structured `ShapeStyle` gradient data into an
|
|
644
|
-
* SVG `<linearGradient>` / `<radialGradient>` descriptor plus the `url(#id)`
|
|
645
|
-
* reference to put in `fill`. It stays framework-agnostic: JSX/template
|
|
646
|
-
* bindings read {@link SvgGradientDef} and emit their own elements, while
|
|
647
|
-
* string-building bindings can use {@link svgGradientMarkup}.
|
|
648
|
-
*
|
|
649
|
-
* Reference: ECMA-376 Part 1, §20.1.8.35 (gradFill) and §20.1.8.49 (path).
|
|
650
|
-
*/
|
|
651
|
-
|
|
652
|
-
/** One `<stop>` of an SVG gradient. */
|
|
653
|
-
interface SvgGradientStopDef {
|
|
654
|
-
/** Stop offset as a fraction of the gradient line (0-1). */
|
|
655
|
-
offset: number;
|
|
656
|
-
/** Stop colour as `#RRGGBB`. */
|
|
657
|
-
color: string;
|
|
658
|
-
/** Stop alpha (0-1). Omitted when the stop is fully opaque. */
|
|
659
|
-
opacity?: number;
|
|
660
|
-
}
|
|
661
|
-
/** An SVG `<linearGradient>` in `objectBoundingBox` units. */
|
|
662
|
-
interface SvgLinearGradientDef {
|
|
663
|
-
kind: 'linear';
|
|
664
|
-
id: string;
|
|
665
|
-
x1: number;
|
|
666
|
-
y1: number;
|
|
667
|
-
x2: number;
|
|
668
|
-
y2: number;
|
|
669
|
-
stops: SvgGradientStopDef[];
|
|
670
|
-
}
|
|
671
|
-
/** An SVG `<radialGradient>` in `objectBoundingBox` units. */
|
|
672
|
-
interface SvgRadialGradientDef {
|
|
673
|
-
kind: 'radial';
|
|
674
|
-
id: string;
|
|
675
|
-
cx: number;
|
|
676
|
-
cy: number;
|
|
677
|
-
r: number;
|
|
678
|
-
stops: SvgGradientStopDef[];
|
|
679
|
-
}
|
|
680
|
-
|
|
681
|
-
/** Either flavour of SVG gradient produced by {@link buildSvgGradientDef}. */
|
|
682
|
-
type SvgGradientDef = SvgLinearGradientDef | SvgRadialGradientDef | SvgRectPathGradientDef;
|
|
683
|
-
|
|
684
|
-
/**
|
|
685
|
-
* Stroked SVG OUTLINES: gradient/pattern lines (`a:ln/a:gradFill`,
|
|
686
|
-
* `a:ln/a:pattFill`), stroke-only ("open") preset geometry, and centred
|
|
687
|
-
* (`a:ln/@algn="ctr"`) solid lines.
|
|
688
|
-
*
|
|
689
|
-
* Every binding paints a shape's outline as a CSS `border`, which can only take
|
|
690
|
-
* a single flat colour, can only outline a BOX, and - because `box-sizing:
|
|
691
|
-
* border-box` puts the whole border INSIDE the element's declared box - can only
|
|
692
|
-
* express `a:ln/@algn="in"`. That breaks three ways:
|
|
693
|
-
*
|
|
694
|
-
* - A gradient outline was rendered with the parser's averaged `strokeColor`
|
|
695
|
-
* (two-tone came out flat, fade-to-transparent came out opaque), and a
|
|
696
|
-
* patterned outline with the pattern's foreground alone, so the hatching
|
|
697
|
-
* disappeared entirely.
|
|
698
|
-
* - An open preset (`<a:prstGeom prst="line"/>`, the connector family, `arc`,
|
|
699
|
-
* …) has no region to fill and no box to outline, so a CSS border drew a
|
|
700
|
-
* RECTANGLE where PowerPoint draws a line or an arc. See
|
|
701
|
-
* `./stroke-only-preset`.
|
|
702
|
-
* - `@algn="ctr"` is PowerPoint's DEFAULT (an omitted `@algn` means `ctr`, not
|
|
703
|
-
* `in`): the line straddles the shape's path, half outside the box and half
|
|
704
|
-
* over the fill. A `border-box` CSS border cannot straddle anything - it can
|
|
705
|
-
* only sit flush with the box edge - so every bordered shape at the default
|
|
706
|
-
* alignment rendered `strokeWidth / 2` too small on each edge. An SVG
|
|
707
|
-
* `<path>` stroke is centred on the path by definition, so routing the
|
|
708
|
-
* default-aligned case through this same overlay is the fix; `@algn="in"`
|
|
709
|
-
* keeps the cheap `border-box` CSS border, which is already exactly right.
|
|
710
|
-
*
|
|
711
|
-
* CSS has no way to fix any of these in place - `border-image` ignores
|
|
712
|
-
* `border-radius` and cannot follow a `clip-path`, and no CSS property centres a
|
|
713
|
-
* border on the box edge - so the outline is instead stroked as a real SVG path
|
|
714
|
-
* laid over the element, using the shape's own resolved geometry. This module
|
|
715
|
-
* turns an element into everything a binding needs for that overlay; the
|
|
716
|
-
* bindings supply only the ~10 lines of view layer.
|
|
717
|
-
*/
|
|
718
|
-
|
|
719
|
-
/** The paint server an outline is stroked with: a gradient or a pattern. */
|
|
720
|
-
type StrokeOutlinePaint = SvgGradientDef | SvgPatternDef;
|
|
721
|
-
/**
|
|
722
|
-
* One parallel stroke of a compound (`a:ln/@cmpd`) line: its width, and its
|
|
723
|
-
* perpendicular offset from the centre line in element px. A single line is one
|
|
724
|
-
* strand at offset `0`.
|
|
725
|
-
*/
|
|
726
|
-
interface StrokeOutlineStrand {
|
|
727
|
-
strokeWidth: number;
|
|
728
|
-
offset: number;
|
|
729
|
-
}
|
|
730
|
-
/** Everything needed to stroke one shape's outline as an SVG overlay. */
|
|
731
|
-
interface StrokeOutline {
|
|
732
|
-
/** Path data in the element's own pixel space (viewBox `0 0 width height`). */
|
|
733
|
-
d: string;
|
|
734
|
-
/**
|
|
735
|
-
* Paint server to define in `<defs>`, or `undefined` when the outline is
|
|
736
|
-
* stroked with a flat colour (an open preset with an ordinary solid line).
|
|
737
|
-
*/
|
|
738
|
-
paint: StrokeOutlinePaint | undefined;
|
|
739
|
-
/** Ready-to-use SVG `stroke` value: `url(#…)` for a paint server, else a colour. */
|
|
740
|
-
stroke: string;
|
|
741
|
-
strokeWidth: number;
|
|
742
|
-
/** Parallel strands to emit; one entry unless the line is compound. */
|
|
743
|
-
strands: readonly StrokeOutlineStrand[];
|
|
744
|
-
/** SVG `stroke-dasharray`, or `undefined` for a solid line. */
|
|
745
|
-
dashArray: string | undefined;
|
|
746
|
-
lineCap: 'butt' | 'round' | 'square';
|
|
747
|
-
lineJoin: 'round' | 'bevel' | 'miter';
|
|
748
|
-
}
|
|
749
|
-
|
|
750
|
-
/**
|
|
751
|
-
* Pure paint-decision logic for per-sub-path geometry, shared by custom
|
|
752
|
-
* geometry (`a:custGeom`) AND multi-sub-path preset shapes (`a:prstGeom`).
|
|
753
|
-
*
|
|
754
|
-
* Kept free of any view-layer concern (JSX, Vue/Angular templates, DOM) so it
|
|
755
|
-
* is unit-testable in isolation; each binding's SVG emission is a thin ~10-line
|
|
756
|
-
* mapping over its result. Originally lived only in the React package
|
|
757
|
-
* (`viewer/utils/vector-subpath-paint.ts`), which meant Vue and Vanilla (and,
|
|
758
|
-
* for preset shapes, every binding including React) had no way to honour a
|
|
759
|
-
* sub-path's own `@fill`/`@stroke` flags: they flattened every sub-path into
|
|
760
|
-
* one merged path with a single element-level fill, so a stroke-only sub-path
|
|
761
|
-
* inside a filled shape (an open eye/mouth on `smileyFace`) or a shading
|
|
762
|
-
* sub-path (`lighten`/`darken`, the bevel highlight on `actionButton*`) either
|
|
763
|
-
* rendered filled-and-distorted or vanished outright.
|
|
764
|
-
*
|
|
765
|
-
* Both geometry kinds evaluate to the exact same per-sub-path shape -
|
|
766
|
-
* `{ d, fillMode, stroke }` - which is what lets ONE function
|
|
767
|
-
* ({@link buildSubpathPaints}) paint either: `customGeometryPathsToSvgSubpaths`
|
|
768
|
-
* (core) already returns that shape for custom geometry, and preset geometry's
|
|
769
|
-
* `PresetSubpathResult` (`{ d, fill, stroke }`, from core's
|
|
770
|
-
* `evaluatePresetShape`) is a one-line rename away - see
|
|
771
|
-
* `./subpath-fill-overlay`, which resolves *which* elements need this
|
|
772
|
-
* treatment and calls this to build the actual paints.
|
|
773
|
-
*/
|
|
774
|
-
|
|
775
|
-
/** Resolved paint intent for a single geometry sub-path. */
|
|
776
|
-
interface SubpathPaint {
|
|
777
|
-
/** SVG path data for this sub-path. */
|
|
778
|
-
d: string;
|
|
779
|
-
/** Resolved fill paint, or `'none'` when this sub-path opts out of fill. */
|
|
780
|
-
fill: string;
|
|
781
|
-
/** Whether this sub-path draws its stroke (`@stroke` !== 0). */
|
|
782
|
-
stroked: boolean;
|
|
783
|
-
}
|
|
784
|
-
|
|
785
|
-
/**
|
|
786
|
-
* Per-sub-path FILL overlay: the shared mechanism behind two structurally
|
|
787
|
-
* identical bugs.
|
|
788
|
-
*
|
|
789
|
-
* Both custom geometry (`a:custGeom`) and preset geometry (`a:prstGeom`) can
|
|
790
|
-
* carry several sub-paths, each with its own `@fill` mode
|
|
791
|
-
* (`norm`/`lighten`/`lightenLess`/`darken`/`darkenLess`/`none`) and `@stroke`
|
|
792
|
-
* flag. Every binding paints a shape as ONE box: a single CSS
|
|
793
|
-
* `background-color` clipped to a single merged `clip-path` built by
|
|
794
|
-
* concatenating every sub-path's `d` together (`getResolvedShapeClipPath`,
|
|
795
|
-
* `buildCustomGeometryClipPath`). That merge is lossy two ways:
|
|
796
|
-
*
|
|
797
|
-
* - It discards each sub-path's own `@fill`, so a preset's shading/bevel
|
|
798
|
-
* sub-paths (`lighten`/`darken`, e.g. every `actionButton*`, curved arrows,
|
|
799
|
-
* `bevel`, `foldedCorner`) paint as flat instead of shaded, and a `fill="none"`
|
|
800
|
-
* sub-path (`smileyFace`'s eyes/mouth) paints FILLED instead of as an open
|
|
801
|
-
* stroke - because `clip-path` auto-closes every sub-path.
|
|
802
|
-
* - It cannot vary the fill AT ALL across sub-paths, so it is architecturally
|
|
803
|
-
* incapable of the above regardless of which colour is chosen.
|
|
804
|
-
*
|
|
805
|
-
* The fix is the same for both: paint the affected element as layered SVG
|
|
806
|
-
* `<path>`s, each carrying its own resolved fill, instead of one CSS box. This
|
|
807
|
-
* module decides WHICH elements need that (an element needs it only when at
|
|
808
|
-
* least one sub-path's mode is not `norm`/unset, or it opts out of its stroke)
|
|
809
|
-
* and builds the paints via the shared `./vector-subpath-paint`; a binding's
|
|
810
|
-
* `ShapeEffectOverlay` renders the result as an `<svg>` sibling to the shape
|
|
811
|
-
* box (mirroring `buildStrokeOutline`), and `getComputedFillStyle`
|
|
812
|
-
* ({@link suppressesCssFill}) drops the CSS background so the flat colour does
|
|
813
|
-
* not show underneath.
|
|
814
|
-
*
|
|
815
|
-
* Restricted to a solid (or absent) fill: a gradient/pattern/image fill keeps
|
|
816
|
-
* the existing single merged clip-path box, since neither geometry kind's
|
|
817
|
-
* sub-paths can carry an independent paint SERVER (only a solid, mode-shifted
|
|
818
|
-
* colour), and the common case for both bug classes - shading/bevel highlights,
|
|
819
|
-
* `smileyFace`'s eyes - is a solid theme colour.
|
|
820
|
-
*/
|
|
821
|
-
|
|
822
|
-
/** Everything a binding needs to paint an element's per-sub-path fill overlay. */
|
|
823
|
-
interface SubpathFillOverlay {
|
|
824
|
-
/** One paint per sub-path, in authoring order. */
|
|
825
|
-
readonly paints: readonly SubpathPaint[];
|
|
826
|
-
/** `viewBox` width, in the same coordinate space as every `paints[].d`. */
|
|
827
|
-
readonly viewBoxWidth: number;
|
|
828
|
-
/** `viewBox` height, in the same coordinate space as every `paints[].d`. */
|
|
829
|
-
readonly viewBoxHeight: number;
|
|
830
|
-
}
|
|
831
525
|
|
|
832
526
|
/**
|
|
833
527
|
* Stroke/dash normalisation, compound-line box-shadow generation, SVG
|
|
@@ -838,59 +532,6 @@ interface SubpathFillOverlay {
|
|
|
838
532
|
/** A neutral CSS map (framework `CSSProperties` are structurally compatible). */
|
|
839
533
|
type CssStyleMap = Record<string, string | number>;
|
|
840
534
|
|
|
841
|
-
/**
|
|
842
|
-
* Per-run inline-style builder for rendered text runs (framework-agnostic).
|
|
843
|
-
*
|
|
844
|
-
* Maps a `TextSegment`'s `TextStyle` onto a neutral CSS record that every
|
|
845
|
-
* binding applies to its own run span. React included: its `text-segment-render`
|
|
846
|
-
* now starts from this record and re-resolves only the handful of properties it
|
|
847
|
-
* derives more precisely (colour/size/family fallbacks, PANOSE substitution,
|
|
848
|
-
* the `@baseline` percentage, the `@kern` threshold, per-run BiDi), each of
|
|
849
|
-
* which is documented there as a gap in this module rather than a preference.
|
|
850
|
-
* Split out of `text-paragraphs` to keep each module focused and small; this
|
|
851
|
-
* module itself later split its letter-spacing/split helpers into
|
|
852
|
-
* `text-run-spacing.ts`, its hollow-text fill decision into
|
|
853
|
-
* `text-run-hollow.ts`, and its nested-decoration / underline-variant helpers
|
|
854
|
-
* into `text-run-decoration.ts`, for the same reason.
|
|
855
|
-
*/
|
|
856
|
-
|
|
857
|
-
/** A plain CSS style map (keys are CSS properties; binding-agnostic). */
|
|
858
|
-
type RunStyle = Record<string, string | number>;
|
|
859
|
-
|
|
860
|
-
/**
|
|
861
|
-
* Per-script (`a:ea` / `a:cs` / `a:sym`) font fallback for one run, as a pure
|
|
862
|
-
* decision function every binding maps onto its own nested-span markup.
|
|
863
|
-
*
|
|
864
|
-
* OOXML authors up to four typefaces per run (`a:latin`, `a:ea`, `a:cs`,
|
|
865
|
-
* `a:sym`), and PowerPoint paints each Unicode script category in ITS OWN
|
|
866
|
-
* font, not the run's `a:latin` face. This was React-only
|
|
867
|
-
* (`renderScriptAwareText` in `text-segment-render.tsx`): the other four
|
|
868
|
-
* bindings applied only `a:latin` to the whole run, so CJK, Arabic, Hebrew and
|
|
869
|
-
* Thai text rendered in the wrong typeface (or the browser's serif default)
|
|
870
|
-
* in Vue, Angular, Svelte and Vanilla.
|
|
871
|
-
*
|
|
872
|
-
* `resolveScriptFontSet` resolves the four faces (PANOSE-substituted, with the
|
|
873
|
-
* run falling back to the text body's own declaration); `splitRunByScriptFont`
|
|
874
|
-
* segments a run's text by script and returns, per piece, the CSS a binding
|
|
875
|
-
* spreads onto a nested span. A binding does nothing but map that descriptor:
|
|
876
|
-
* render `text` plain when a piece carries no `style` override, or a nested
|
|
877
|
-
* span with `style` when it does.
|
|
878
|
-
*/
|
|
879
|
-
|
|
880
|
-
/** One script-tagged piece of a run's text, ready for a binding's nested span. */
|
|
881
|
-
interface ScriptFontPiece {
|
|
882
|
-
text: string;
|
|
883
|
-
/**
|
|
884
|
-
* CSS for a nested span wrapping `text`, or `undefined` when this piece
|
|
885
|
-
* needs no span at all (its script's font equals the run's own, so plain
|
|
886
|
-
* text renders identically). When present it carries the `fontFamily`
|
|
887
|
-
* override plus the run's own decoration subset, repeated because
|
|
888
|
-
* `text-decoration-*` does not inherit into a nested span (see
|
|
889
|
-
* `nestedTextDecorationStyle`).
|
|
890
|
-
*/
|
|
891
|
-
style?: RunStyle;
|
|
892
|
-
}
|
|
893
|
-
|
|
894
535
|
/**
|
|
895
536
|
* `a:reflection` compositing: a real, cross-browser mirrored copy of an
|
|
896
537
|
* element rather than `-webkit-box-reflect`.
|
|
@@ -999,23 +640,9 @@ interface LineShadowParams {
|
|
|
999
640
|
color: string;
|
|
1000
641
|
opacity: number;
|
|
1001
642
|
}
|
|
1002
|
-
/**
|
|
1003
|
-
* A fill-overlay tint layer: the overlay {@link https://developer.mozilla.org/en-US/docs/Web/CSS/color colour}
|
|
1004
|
-
* (an `rgba()` string carrying the overlay's alpha) plus the `mix-blend-mode`
|
|
1005
|
-
* used to composite it over the element. Unlike the whole-element
|
|
1006
|
-
* {@link getEffectDagBlendMode} proxy, this describes a *separate* coloured
|
|
1007
|
-
* layer the integrator should paint on top of the element (e.g. an absolutely
|
|
1008
|
-
* positioned pseudo-element / child), so the tint colour is actually rendered.
|
|
1009
|
-
*/
|
|
1010
|
-
interface FillOverlayCss {
|
|
1011
|
-
/** Overlay colour as an `rgba()`/hex string (already includes opacity). */
|
|
1012
|
-
color: string;
|
|
1013
|
-
/** `mix-blend-mode` for the overlay layer (`normal` for the `over` blend). */
|
|
1014
|
-
blendMode: string;
|
|
1015
|
-
}
|
|
1016
643
|
|
|
1017
644
|
/**
|
|
1018
|
-
* Text warp / WordArt logic
|
|
645
|
+
* Text warp / WordArt logic: Vue port of the React
|
|
1019
646
|
* `viewer/utils/warp-path-generators.ts` + `text-warp-classifier.ts`.
|
|
1020
647
|
*
|
|
1021
648
|
* Pure, framework-agnostic helpers that classify an OOXML `prstTxWarp` preset
|
|
@@ -1030,12 +657,26 @@ interface FillOverlayCss {
|
|
|
1030
657
|
|
|
1031
658
|
/**
|
|
1032
659
|
* Rendering-strategy category for a warp preset.
|
|
1033
|
-
* - `path`: renders along an SVG `<textPath>` (arcs, waves, circles
|
|
1034
|
-
*
|
|
1035
|
-
* - `
|
|
660
|
+
* - `path`: renders along an SVG `<textPath>` (arcs, waves, circles,
|
|
661
|
+
* slant/fade/cascade, …)
|
|
662
|
+
* - `envelope`: non-uniform vertical stretch (inflate/deflate/can). Also
|
|
663
|
+
* renders along an SVG `<textPath>`; kept as its own category
|
|
664
|
+
* for documentation/grouping only (see {@link ENVELOPE_PRESETS}).
|
|
665
|
+
* - `simple`: unused (kept for API stability; no preset classifies here
|
|
666
|
+
* any more, see {@link SIMPLE_PRESETS}).
|
|
1036
667
|
* - `none`: no warp (`textNoShape`, `textPlain`, unknown)
|
|
668
|
+
*
|
|
669
|
+
* Every classified preset (`path` and `envelope` alike) should be routed to
|
|
670
|
+
* SVG `<textPath>` rendering via {@link shouldUseSvgWarp}; a binding that
|
|
671
|
+
* instead branches on this category to decide path-vs-CSS-transform will
|
|
672
|
+
* wrongly fall back to a flat CSS-transform approximation for the `envelope`
|
|
673
|
+
* family. Use `shouldUseSvgWarp` for that decision, not `classifyTextWarp`.
|
|
1037
674
|
*/
|
|
1038
675
|
type WarpCategory$1 = 'path' | 'envelope' | 'simple' | 'none';
|
|
676
|
+
/** Presets that require SVG textPath rendering (all others fall back to flat). */
|
|
677
|
+
declare const SVG_WARP_PRESETS: ReadonlySet<string>;
|
|
678
|
+
/** Returns `true` when the preset should use SVG `<textPath>` rendering. */
|
|
679
|
+
declare function shouldUseSvgWarp(preset: PptxTextWarpPreset | undefined): boolean;
|
|
1039
680
|
/**
|
|
1040
681
|
* Build the SVG path `d` attribute for a warp preset at a given line position.
|
|
1041
682
|
*
|
|
@@ -1055,6 +696,16 @@ declare function buildWarpPath(preset: PptxTextWarpPreset, width: number, height
|
|
|
1055
696
|
*/
|
|
1056
697
|
declare const getWarpPath: typeof buildWarpPath;
|
|
1057
698
|
|
|
699
|
+
/** One rendered piece of a glyph: clipped to its own x-band, its own affine fit. */
|
|
700
|
+
interface EnvelopeGlyphSlice {
|
|
701
|
+
/** Left edge of this slice's clip rect, in the glyph's own (pre-transform) x. */
|
|
702
|
+
clipX0: number;
|
|
703
|
+
/** Right edge of this slice's clip rect, in the glyph's own (pre-transform) x. */
|
|
704
|
+
clipX1: number;
|
|
705
|
+
/** Same `matrix(1 b 0 d 0 f)` form as {@link glyphEnvelopeMatrix}, fit to this slice's own edges. */
|
|
706
|
+
transform: string;
|
|
707
|
+
}
|
|
708
|
+
|
|
1058
709
|
/**
|
|
1059
710
|
* omml-to-mathml.ts — pure OMML → MathML conversion.
|
|
1060
711
|
*
|
|
@@ -1411,6 +1062,8 @@ interface SvgLine {
|
|
|
1411
1062
|
dashArray?: string;
|
|
1412
1063
|
opacity?: number;
|
|
1413
1064
|
title?: string;
|
|
1065
|
+
/** Optional SVG transform (e.g. a chart-overlay connector's own rotation about its box centre). */
|
|
1066
|
+
transform?: string;
|
|
1414
1067
|
}
|
|
1415
1068
|
interface SvgText {
|
|
1416
1069
|
kind: 'text';
|
|
@@ -1439,6 +1092,8 @@ interface SvgPolygon {
|
|
|
1439
1092
|
dashArray?: string;
|
|
1440
1093
|
part?: ChartPartRef;
|
|
1441
1094
|
title?: string;
|
|
1095
|
+
/** Optional SVG transform (e.g. a chart-overlay shape's own rotation/flip about its box centre). */
|
|
1096
|
+
transform?: string;
|
|
1442
1097
|
}
|
|
1443
1098
|
interface SvgAreaGradient {
|
|
1444
1099
|
kind: 'areaGradient';
|
|
@@ -1936,19 +1591,14 @@ declare function buildComboViewModel(element: PptxElement, chartData: PptxChartD
|
|
|
1936
1591
|
declare function buildStockViewModel(element: PptxElement, chartData: PptxChartData, categoryLabels: ReadonlyArray<string>): ChartViewModel;
|
|
1937
1592
|
|
|
1938
1593
|
/**
|
|
1939
|
-
*
|
|
1594
|
+
* Shared colour ramp and view-model chrome helpers for the surface and
|
|
1595
|
+
* treemap chart kinds.
|
|
1940
1596
|
*
|
|
1941
|
-
*
|
|
1942
|
-
*
|
|
1943
|
-
*
|
|
1944
|
-
* Produces a `ChartViewModel` (SVG primitives only, zero Angular dependencies)
|
|
1945
|
-
* that the Angular ChartRendererComponent template iterates over.
|
|
1946
|
-
*
|
|
1947
|
-
* Surface – isometric projection when the grid has ≥2 series and ≥2 categories,
|
|
1948
|
-
* flat colour-mapped grid otherwise.
|
|
1949
|
-
* Treemap – slice-and-dice rectangles sorted largest-first with inline labels.
|
|
1597
|
+
* Split out of `chart-surface-treemap.ts` (which re-exports `surfaceColor`)
|
|
1598
|
+
* to keep that file's several chart-kind builders each under the repo's
|
|
1599
|
+
* per-file line budget.
|
|
1950
1600
|
*
|
|
1951
|
-
* @module chart-surface-
|
|
1601
|
+
* @module chart-surface-common
|
|
1952
1602
|
*/
|
|
1953
1603
|
|
|
1954
1604
|
/**
|
|
@@ -1963,15 +1613,45 @@ declare function surfaceColor(t: number): {
|
|
|
1963
1613
|
g: number;
|
|
1964
1614
|
b: number;
|
|
1965
1615
|
};
|
|
1616
|
+
|
|
1617
|
+
/**
|
|
1618
|
+
* Flat colour-mapped grid view-model builder for the surface chart kind (the
|
|
1619
|
+
* fallback used when the grid has fewer than 2 series or 2 categories), plus
|
|
1620
|
+
* the `buildSurfaceViewModel` dispatcher between it and the isometric builder.
|
|
1621
|
+
*
|
|
1622
|
+
* Split out of `chart-surface-treemap.ts` (which re-exports
|
|
1623
|
+
* `buildSurfaceViewModel`) to keep that file's several chart-kind builders
|
|
1624
|
+
* each under the repo's per-file line budget.
|
|
1625
|
+
*
|
|
1626
|
+
* Ported from:
|
|
1627
|
+
* packages/react/src/viewer/utils/chart-surface-treemap.tsx (renderSurfaceChart)
|
|
1628
|
+
*
|
|
1629
|
+
* @module chart-surface-flat
|
|
1630
|
+
*/
|
|
1631
|
+
|
|
1966
1632
|
/**
|
|
1967
1633
|
* Build the view-model for a surface chart.
|
|
1968
1634
|
*
|
|
1969
|
-
* Renders an isometric 3-D-like projection when the grid has
|
|
1970
|
-
*
|
|
1635
|
+
* Renders an isometric 3-D-like projection when the grid has >= 2 series and
|
|
1636
|
+
* >= 2 categories; falls back to a flat colour-mapped grid otherwise.
|
|
1971
1637
|
* Mirrors `renderSurfaceChart` / `renderIsometricSurfaceFallback` in React's
|
|
1972
1638
|
* `chart-surface-treemap.tsx`.
|
|
1973
1639
|
*/
|
|
1974
1640
|
declare function buildSurfaceViewModel(element: PptxElement, chartData: PptxChartData, categoryLabels: ReadonlyArray<string>): ChartViewModel;
|
|
1641
|
+
|
|
1642
|
+
/**
|
|
1643
|
+
* View-model builder for the treemap chart kind.
|
|
1644
|
+
*
|
|
1645
|
+
* Split out of `chart-surface-treemap.ts` (which re-exports this) to keep
|
|
1646
|
+
* that file's several chart-kind builders each under the repo's per-file
|
|
1647
|
+
* line budget.
|
|
1648
|
+
*
|
|
1649
|
+
* Ported from:
|
|
1650
|
+
* packages/react/src/viewer/utils/chart-surface-treemap.tsx (renderTreemapChart)
|
|
1651
|
+
*
|
|
1652
|
+
* @module chart-treemap-view
|
|
1653
|
+
*/
|
|
1654
|
+
|
|
1975
1655
|
/**
|
|
1976
1656
|
* Build the view-model for a treemap chart.
|
|
1977
1657
|
*
|
|
@@ -1982,43 +1662,51 @@ declare function buildSurfaceViewModel(element: PptxElement, chartData: PptxChar
|
|
|
1982
1662
|
declare function buildTreemapViewModel(element: PptxElement, chartData: PptxChartData, categoryLabels: ReadonlyArray<string>): ChartViewModel;
|
|
1983
1663
|
|
|
1984
1664
|
/**
|
|
1985
|
-
*
|
|
1986
|
-
*
|
|
1987
|
-
* Ported from:
|
|
1988
|
-
* packages/react/src/viewer/utils/chart-waterfall-combo.tsx (waterfall only)
|
|
1989
|
-
* packages/react/src/viewer/utils/chart-map.tsx (regionMap)
|
|
1990
|
-
*
|
|
1991
|
-
* Produces a `ChartViewModel` (SVG primitives only, zero Angular dependencies)
|
|
1992
|
-
* that the Angular ChartRendererComponent template iterates over.
|
|
1665
|
+
* Region-label -> region-code alias lookup for the regionMap chart kind.
|
|
1993
1666
|
*
|
|
1994
|
-
*
|
|
1995
|
-
*
|
|
1996
|
-
*
|
|
1997
|
-
* the first data series; unmatched regions fall back to a table.
|
|
1667
|
+
* Split out of `chart-waterfall-map.ts` (which re-exports `resolveRegionCode`)
|
|
1668
|
+
* to keep that file's two unrelated chart kinds (waterfall, regionMap) each
|
|
1669
|
+
* under the repo's per-file line budget.
|
|
1998
1670
|
*
|
|
1999
|
-
* @module chart-
|
|
1671
|
+
* @module chart-region-map-alias
|
|
2000
1672
|
*/
|
|
1673
|
+
/** Resolve a category label to a region key (case-insensitive). */
|
|
1674
|
+
declare function resolveRegionCode(label: string): string | undefined;
|
|
2001
1675
|
|
|
2002
1676
|
/**
|
|
2003
|
-
*
|
|
1677
|
+
* Colour-scale and colour-legend helpers for the regionMap chart kind.
|
|
2004
1678
|
*
|
|
2005
|
-
*
|
|
2006
|
-
*
|
|
2007
|
-
*
|
|
2008
|
-
* Dashed connector lines join adjacent bar tops/bottoms.
|
|
1679
|
+
* Split out of `chart-waterfall-map.ts` (which re-exports `sequentialColorScale`
|
|
1680
|
+
* / `normalizeValue`) to keep that file's two unrelated chart kinds (waterfall,
|
|
1681
|
+
* regionMap) each under the repo's per-file line budget.
|
|
2009
1682
|
*
|
|
2010
|
-
*
|
|
1683
|
+
* @module chart-region-map-colors
|
|
2011
1684
|
*/
|
|
2012
|
-
|
|
2013
|
-
/** Resolve a category label to a region key (case-insensitive). */
|
|
2014
|
-
declare function resolveRegionCode(label: string): string | undefined;
|
|
1685
|
+
|
|
2015
1686
|
/**
|
|
2016
|
-
* 3-stop sequential colour scale: light (#dbeafe)
|
|
1687
|
+
* 3-stop sequential colour scale: light (#dbeafe) -> mid (#3b82f6) -> dark (#1e3a5f).
|
|
2017
1688
|
* Mirrors `sequentialColorScale` in React's `chart-map.tsx`.
|
|
2018
1689
|
*/
|
|
2019
1690
|
declare function sequentialColorScale(t: number): string;
|
|
2020
1691
|
/** Normalise a value to [0..1] within a min/max range. */
|
|
2021
1692
|
declare function normalizeValue(value: number, min: number, max: number): number;
|
|
1693
|
+
|
|
1694
|
+
/**
|
|
1695
|
+
* View-model builder for the regionMap (choropleth) chart kind.
|
|
1696
|
+
*
|
|
1697
|
+
* Split out of `chart-waterfall-map.ts` (which re-exports this) to keep that
|
|
1698
|
+
* file's two unrelated chart kinds (waterfall, regionMap) each under the
|
|
1699
|
+
* repo's per-file line budget.
|
|
1700
|
+
*
|
|
1701
|
+
* Ported from:
|
|
1702
|
+
* packages/react/src/viewer/utils/chart-map.tsx
|
|
1703
|
+
*
|
|
1704
|
+
* RegionMap - choropleth SVG with simplified world region outlines coloured by
|
|
1705
|
+
* the first data series; unmatched regions fall back to a table.
|
|
1706
|
+
*
|
|
1707
|
+
* @module chart-region-map-view
|
|
1708
|
+
*/
|
|
1709
|
+
|
|
2022
1710
|
/**
|
|
2023
1711
|
* Build the view-model for a regionMap (choropleth) chart.
|
|
2024
1712
|
*
|
|
@@ -2031,6 +1719,34 @@ declare function normalizeValue(value: number, min: number, max: number): number
|
|
|
2031
1719
|
*/
|
|
2032
1720
|
declare function buildRegionMapViewModel(element: PptxElement, chartData: PptxChartData, categoryLabels: ReadonlyArray<string>): ChartViewModel;
|
|
2033
1721
|
|
|
1722
|
+
/**
|
|
1723
|
+
* View-model builder for the waterfall chart kind.
|
|
1724
|
+
*
|
|
1725
|
+
* Split out of `chart-waterfall-map.ts` (which re-exports this) to keep that
|
|
1726
|
+
* file's two unrelated chart kinds (waterfall, regionMap) each under the
|
|
1727
|
+
* repo's per-file line budget.
|
|
1728
|
+
*
|
|
1729
|
+
* Ported from:
|
|
1730
|
+
* packages/react/src/viewer/utils/chart-waterfall-combo.tsx (waterfall only)
|
|
1731
|
+
*
|
|
1732
|
+
* Waterfall - running-total bars with positive/negative/total colouring and
|
|
1733
|
+
* dashed connector lines between bars.
|
|
1734
|
+
*
|
|
1735
|
+
* @module chart-waterfall-view
|
|
1736
|
+
*/
|
|
1737
|
+
|
|
1738
|
+
/**
|
|
1739
|
+
* Build the view-model for a waterfall chart.
|
|
1740
|
+
*
|
|
1741
|
+
* Each bar starts from the running total of all previous values; the last bar
|
|
1742
|
+
* shows the grand total (reset to 0 base). Positive values get a green fill,
|
|
1743
|
+
* negative values get a red fill, and the final total bar uses indigo.
|
|
1744
|
+
* Dashed connector lines join adjacent bar tops/bottoms.
|
|
1745
|
+
*
|
|
1746
|
+
* Mirrors `renderWaterfallChart` in React's `chart-waterfall-combo.tsx`.
|
|
1747
|
+
*/
|
|
1748
|
+
declare function buildWaterfallViewModel(element: PptxElement, chartData: PptxChartData, categoryLabels: ReadonlyArray<string>): ChartViewModel;
|
|
1749
|
+
|
|
2034
1750
|
/**
|
|
2035
1751
|
* chart-overlays-axis-titles.ts: `computeAxisTitlePrimitives`, building
|
|
2036
1752
|
* `SvgText[]` for the X and Y axis titles. Split out of chart-overlays.ts to
|
|
@@ -2279,16 +1995,19 @@ declare function removeElementAnimation(animations: PptxElementAnimation[], elem
|
|
|
2279
1995
|
* a way to choose "no sound" or a new audio file, with the choice actually
|
|
2280
1996
|
* landing in the saved OOXML.
|
|
2281
1997
|
*
|
|
2282
|
-
*
|
|
2283
|
-
*
|
|
2284
|
-
*
|
|
2285
|
-
*
|
|
2286
|
-
*
|
|
2287
|
-
*
|
|
2288
|
-
*
|
|
2289
|
-
*
|
|
2290
|
-
*
|
|
2291
|
-
*
|
|
1998
|
+
* Two kinds of pick exist. A **stock** pick names one of PowerPoint's 19
|
|
1999
|
+
* built-in gallery sounds (see `effect-sound-catalogue.ts`); Microsoft's own
|
|
2000
|
+
* WAV assets cannot be redistributed, so `effect-sound-synth.ts` synthesises
|
|
2001
|
+
* a DOM-free placeholder and this module stages it with the catalogue's
|
|
2002
|
+
* canonical `@_name` so the SAVED deck is byte-for-byte what PowerPoint
|
|
2003
|
+
* itself recognises as that stock sound (COM-verified, see the catalogue
|
|
2004
|
+
* module's doc comment). A **custom** pick is a sound the user chooses from
|
|
2005
|
+
* their own files, with no catalogue match. Either way the result is a
|
|
2006
|
+
* `dataUrl` staged as a *pending* embed (mirrors `imageData` / `mediaData`):
|
|
2007
|
+
* `PptxHandlerRuntimeSaveSlideWriter`'s `embedPendingAnimationSounds`
|
|
2008
|
+
* converts it to real archive bytes and mints an `audio` relationship on
|
|
2009
|
+
* save, at which point `soundRId` / `soundPath` become the resolved
|
|
2010
|
+
* reference and `soundData` is cleared.
|
|
2292
2011
|
*
|
|
2293
2012
|
* @module render/animation-sound-authoring
|
|
2294
2013
|
*/
|
|
@@ -2299,6 +2018,12 @@ interface EffectSoundPick$1 {
|
|
|
2299
2018
|
dataUrl: string;
|
|
2300
2019
|
/** Display name (e.g. the file's original name), shown by the picker. */
|
|
2301
2020
|
fileName?: string;
|
|
2021
|
+
/**
|
|
2022
|
+
* The `@_name` PowerPoint should write for this sound. Set for a stock
|
|
2023
|
+
* gallery pick to the catalogue's canonical file name (e.g.
|
|
2024
|
+
* `"CHIMES.WAV"`); absent for a custom file pick with no meaningful name.
|
|
2025
|
+
*/
|
|
2026
|
+
soundName?: string;
|
|
2302
2027
|
}
|
|
2303
2028
|
/** Framework-neutral descriptor of an effect's current sound state. */
|
|
2304
2029
|
interface EffectSoundState {
|
|
@@ -2310,6 +2035,13 @@ interface EffectSoundState {
|
|
|
2310
2035
|
* already on the deck when it was opened.
|
|
2311
2036
|
*/
|
|
2312
2037
|
fileName?: string;
|
|
2038
|
+
/**
|
|
2039
|
+
* The matching stock-gallery id (`effect-sound-catalogue.ts`) when the
|
|
2040
|
+
* current sound's `soundName` names one of PowerPoint's 19 built-in
|
|
2041
|
+
* sounds, so the picker can show that entry selected instead of falling
|
|
2042
|
+
* back to a raw file name. Absent for a custom sound or "no sound".
|
|
2043
|
+
*/
|
|
2044
|
+
catalogueId?: string;
|
|
2313
2045
|
}
|
|
2314
2046
|
/**
|
|
2315
2047
|
* Derive the sound picker's current state for one element's animation entry.
|
|
@@ -2317,6 +2049,12 @@ interface EffectSoundState {
|
|
|
2317
2049
|
* panel only shows the sound row once an effect exists).
|
|
2318
2050
|
*/
|
|
2319
2051
|
declare function getEffectSoundState(slideAnimations: readonly PptxElementAnimation[], elementId: string): EffectSoundState;
|
|
2052
|
+
/**
|
|
2053
|
+
* Stage one of PowerPoint's 19 built-in stock sounds (`catalogueId`, e.g.
|
|
2054
|
+
* `"chime"`) as the effect's pending sound. Returns the input array unchanged
|
|
2055
|
+
* when `catalogueId` does not match a catalogue entry.
|
|
2056
|
+
*/
|
|
2057
|
+
declare function setEffectStockSound(anims: readonly PptxElementAnimation[], elementId: string, catalogueId: string): PptxElementAnimation[];
|
|
2320
2058
|
/**
|
|
2321
2059
|
* Stage a newly-picked sound file on the element's animation entry, or clear
|
|
2322
2060
|
* it entirely when `pick` is `undefined` ("No sound"). Either way, any
|
|
@@ -2361,6 +2099,63 @@ declare function setAfterAnimation(anims: readonly PptxElementAnimation[], eleme
|
|
|
2361
2099
|
*/
|
|
2362
2100
|
declare function setAfterAnimationColor(anims: readonly PptxElementAnimation[], elementId: string, color: string): PptxElementAnimation[];
|
|
2363
2101
|
|
|
2102
|
+
/**
|
|
2103
|
+
* `effect-sound-catalogue`: PowerPoint's built-in stock sound gallery (the 19
|
|
2104
|
+
* entries under Animation "Effect Options... > Sound" and under
|
|
2105
|
+
* "Transitions > Sound"), as pure framework-neutral data.
|
|
2106
|
+
*
|
|
2107
|
+
* Microsoft's own WAV assets (`C:\Program Files\Microsoft Office\root\
|
|
2108
|
+
* Office16\Media\*.WAV`) cannot be redistributed, so `effect-sound-synth.ts`
|
|
2109
|
+
* synthesises a distinct, recognisable placeholder for each entry instead.
|
|
2110
|
+
* What DOES matter for interop is {@link EffectSoundCatalogueEntry.canonicalName}:
|
|
2111
|
+
* COM-verified against real PowerPoint 2016 (2026-09-06,
|
|
2112
|
+
* `Effect.EffectInformation.SoundEffect.ImportFromFile` and
|
|
2113
|
+
* `Slide.SlideShowTransition.SoundEffect.ImportFromFile`), importing one of
|
|
2114
|
+
* PowerPoint's own stock WAVs writes ONLY a relationship plus this exact
|
|
2115
|
+
* upper-case file name into the `@_name` attribute (`p:snd`/`p:sndTgt`).
|
|
2116
|
+
* There is no separate "this is a built-in sound" flag anywhere in the
|
|
2117
|
+
* schema, nor anything PowerPoint itself writes: reopening the ground-truth
|
|
2118
|
+
* file and reading `EffectInformation.SoundEffect.Name`/`.Type` back
|
|
2119
|
+
* confirmed name-matching alone is what PowerPoint's own object model uses.
|
|
2120
|
+
* Writing the same canonical name against our own synthesised bytes is
|
|
2121
|
+
* therefore both necessary and sufficient for PowerPoint to recognise a deck
|
|
2122
|
+
* we saved as carrying that stock sound.
|
|
2123
|
+
*
|
|
2124
|
+
* The 19 names were read directly off a real Office install's MEDIA folder
|
|
2125
|
+
* (`APPLAUSE.WAV` .. `WIND.WAV`) and match PowerPoint's own gallery order
|
|
2126
|
+
* (alphabetical by display name).
|
|
2127
|
+
*
|
|
2128
|
+
* @module render/effect-sound-catalogue
|
|
2129
|
+
*/
|
|
2130
|
+
/** One entry of PowerPoint's built-in stock sound gallery. */
|
|
2131
|
+
interface EffectSoundCatalogueEntry {
|
|
2132
|
+
/** Stable id used by the picker UI and `effect-sound-synth.ts`'s generator map. */
|
|
2133
|
+
id: string;
|
|
2134
|
+
/** i18n key for the display label, e.g. `pptx.animation.sound.chime`. */
|
|
2135
|
+
i18nKey: string;
|
|
2136
|
+
/** The exact `@_name` PowerPoint writes for this stock sound (COM-verified). */
|
|
2137
|
+
canonicalName: string;
|
|
2138
|
+
}
|
|
2139
|
+
/** PowerPoint's own stock sound gallery, in its own (alphabetical) order. */
|
|
2140
|
+
declare const EFFECT_SOUND_CATALOGUE: readonly EffectSoundCatalogueEntry[];
|
|
2141
|
+
|
|
2142
|
+
/** A synthesised stock sound, ready to embed or play. */
|
|
2143
|
+
interface EffectSoundAsset {
|
|
2144
|
+
/** Catalogue id, e.g. `"chime"`. */
|
|
2145
|
+
id: string;
|
|
2146
|
+
/** The canonical PowerPoint file name (also the OOXML `@_name` to write). */
|
|
2147
|
+
fileName: string;
|
|
2148
|
+
/** Raw 16-bit mono WAV bytes. */
|
|
2149
|
+
bytes: Uint8Array;
|
|
2150
|
+
/** `data:audio/wav;base64,...` form of {@link bytes}, ready for playback or staging as a pending embed. */
|
|
2151
|
+
dataUrl: string;
|
|
2152
|
+
}
|
|
2153
|
+
/**
|
|
2154
|
+
* Synthesise (or return the cached synthesis of) the stock sound named by
|
|
2155
|
+
* `id`. Returns `undefined` for an id absent from the catalogue.
|
|
2156
|
+
*/
|
|
2157
|
+
declare function getEffectSoundAsset(id: string): EffectSoundAsset | undefined;
|
|
2158
|
+
|
|
2364
2159
|
/**
|
|
2365
2160
|
* `animation-preset-labels`: the naming layer over the two animation preset
|
|
2366
2161
|
* vocabularies, so no binding ever prints a wire token where an effect name
|
|
@@ -2469,74 +2264,13 @@ declare function revealedElementStyles(groups: readonly AnimationClickGroup[], s
|
|
|
2469
2264
|
declare function pendingElementStyles(groups: readonly AnimationClickGroup[], step: number): Map<string, CSSProperties>;
|
|
2470
2265
|
|
|
2471
2266
|
/**
|
|
2472
|
-
* `animation-
|
|
2473
|
-
*
|
|
2474
|
-
*
|
|
2475
|
-
*
|
|
2476
|
-
* siblings composed alongside Wave / Grow With Color / Teeter.
|
|
2477
|
-
*
|
|
2478
|
-
* PowerPoint authors these two ways, both already parsed by core:
|
|
2479
|
-
* - A `p:set` discrete (non-interpolated) assignment
|
|
2480
|
-
* ({@link PptxNativeAnimation.setAnimations}, ECMA-376 S19.5.79
|
|
2481
|
-
* CT_TLSetBehavior): the value snaps on once and holds until the effect's
|
|
2482
|
-
* `p:cTn/@fill` says otherwise (Bold Reveal, Underline / Brush On
|
|
2483
|
-
* Underline).
|
|
2484
|
-
* - A generic `p:anim` ramp ({@link PptxNativeAnimation.attributeAnimations},
|
|
2485
|
-
* ECMA-376 S19.5.2 CT_TLAnimateBehavior) whose `p:tavLst` stops are not
|
|
2486
|
-
* numerically interpolatable for a boolean attribute (Bold Flash): only the
|
|
2487
|
-
* LAST stop's value is meaningful, the same "snap at the end" reading
|
|
2488
|
-
* PowerPoint itself gives a discrete `calcMode` ramp.
|
|
2489
|
-
*
|
|
2490
|
-
* Ground truth (COM `AddEffect` + raw OOXML inspection, see
|
|
2491
|
-
* `animation-emphasis-ground-truth-early.ts`): `style.fontWeight` (bold),
|
|
2492
|
-
* `style.fontStyle` (italic), `style.textDecorationUnderline` (underline),
|
|
2493
|
-
* `style.fontSize` (a numeric ramp: this module reads its FIRST/LAST stop
|
|
2494
|
-
* ratio as {@link TextStyleAnimationDescriptor.fontScale}, a relative
|
|
2495
|
-
* multiplier rather than an absolute size, since a shape's runs may not all
|
|
2496
|
-
* share the authored effect's own reference size), and `style.color` (font
|
|
2497
|
-
* colour, distinct from `fillcolor`/`stroke.color`, which the existing
|
|
2498
|
-
* `p:animClr` colour-animation path already owns).
|
|
2267
|
+
* `animation-timeline-build-descriptors` - staged-build (`p:bldChart` /
|
|
2268
|
+
* `p:bldDgm`) reveal descriptor types, split out of `animation-timeline-types`
|
|
2269
|
+
* to keep that module under the file-size limit. Re-exported from
|
|
2270
|
+
* `animation-timeline-types` so existing imports are unaffected.
|
|
2499
2271
|
*
|
|
2500
|
-
*
|
|
2501
|
-
* hold-vs-revert decision this effect's `p:cTn/@fill` makes is already
|
|
2502
|
-
* computed once, correctly, by `animation-fill-repeat.ts`'s
|
|
2503
|
-
* `shouldHoldEndState` (the exact same rule CSS-animation steps already use
|
|
2504
|
-
* to decide whether their final frame persists on cleanup) and surfaced on
|
|
2505
|
-
* {@link import('./animation-timeline-types').TimelineStep.holdEndState}.
|
|
2506
|
-
* `animation-text-style-state.ts` reuses that flag rather than recomputing
|
|
2507
|
-
* hold/revert semantics a second time here.
|
|
2508
|
-
*
|
|
2509
|
-
* @module render/animation-text-style-resolve
|
|
2510
|
-
*/
|
|
2511
|
-
|
|
2512
|
-
/**
|
|
2513
|
-
* Framework-neutral text-style override a font-style emphasis effect applies
|
|
2514
|
-
* on top of its target's own authored per-run bold/italic/underline/size/
|
|
2515
|
-
* colour. Every binding maps this onto its own text container so it OVERRIDES
|
|
2516
|
-
* the runs' inline styles (the runs carry explicit inline styles of their
|
|
2517
|
-
* own, so plain CSS inheritance cannot reach them).
|
|
2272
|
+
* @module render/animation-timeline-build-descriptors
|
|
2518
2273
|
*/
|
|
2519
|
-
interface TextStyleAnimationDescriptor {
|
|
2520
|
-
bold?: boolean;
|
|
2521
|
-
italic?: boolean;
|
|
2522
|
-
underline?: boolean;
|
|
2523
|
-
/** Relative multiplier against each run's own authored font size. */
|
|
2524
|
-
fontScale?: number;
|
|
2525
|
-
color?: string;
|
|
2526
|
-
}
|
|
2527
|
-
|
|
2528
|
-
/**
|
|
2529
|
-
* `animation-timeline-types` — pure interfaces for the native-animation
|
|
2530
|
-
* (OOXML `p:timing` tree) playback engine shared by every binding.
|
|
2531
|
-
*
|
|
2532
|
-
* These describe the *parsed* native animation model (`PptxNativeAnimation`,
|
|
2533
|
-
* driven by `presetClass` / `presetId`), as opposed to the editor-level
|
|
2534
|
-
* {@link import('./animation-css').AnimationCssResult} model in `animation-css`
|
|
2535
|
-
* (driven by `PptxElementAnimation` preset strings). Both coexist in shared.
|
|
2536
|
-
*
|
|
2537
|
-
* @module render/animation-timeline-types
|
|
2538
|
-
*/
|
|
2539
|
-
|
|
2540
2274
|
/**
|
|
2541
2275
|
* Normalized staged-reveal mode for a chart graphic frame, derived from the
|
|
2542
2276
|
* OOXML `a:bldChart/@bld` (or `p:bldOleChart/@bld`) token:
|
|
@@ -2570,12 +2304,12 @@ interface ChartRevealPoint {
|
|
|
2570
2304
|
* Playback-time chart reveal state derived from AUTHORED `p:graphicEl`
|
|
2571
2305
|
* indices (see `chart-reveal-descriptor`'s `resolveChartRevealDescriptor`),
|
|
2572
2306
|
* rather than from click-count/time progress. Present on
|
|
2573
|
-
* {@link ElementAnimationState.chartReveal}
|
|
2574
|
-
* chart-build step for the element carried index data;
|
|
2575
|
-
* this over the progress-based `build`/`ElementBuildState`
|
|
2576
|
-
* since it reflects the real authored reveal set (correct
|
|
2577
|
-
* reversed-order or gapped chart build), and falls back to `build`
|
|
2578
|
-
* absent.
|
|
2307
|
+
* {@link import('./animation-timeline-group').ElementAnimationState.chartReveal}
|
|
2308
|
+
* only when every fired chart-build step for the element carried index data;
|
|
2309
|
+
* a renderer prefers this over the progress-based `build`/`ElementBuildState`
|
|
2310
|
+
* path when present, since it reflects the real authored reveal set (correct
|
|
2311
|
+
* even for a reversed-order or gapped chart build), and falls back to `build`
|
|
2312
|
+
* when absent.
|
|
2579
2313
|
*/
|
|
2580
2314
|
interface ChartRevealDescriptor {
|
|
2581
2315
|
/**
|
|
@@ -2596,12 +2330,13 @@ interface ChartRevealDescriptor {
|
|
|
2596
2330
|
* Playback-time SmartArt diagram reveal state derived from AUTHORED
|
|
2597
2331
|
* `p:graphicEl/p:dgm/@id` indices (see `diagram-reveal-descriptor`'s
|
|
2598
2332
|
* `resolveDiagramRevealDescriptor`), rather than from click-count/time
|
|
2599
|
-
* progress. Present on
|
|
2600
|
-
*
|
|
2601
|
-
*
|
|
2602
|
-
*
|
|
2603
|
-
*
|
|
2604
|
-
*
|
|
2333
|
+
* progress. Present on
|
|
2334
|
+
* {@link import('./animation-timeline-group').ElementAnimationState.diagramReveal}
|
|
2335
|
+
* only when every fired diagram-build step for the element carried
|
|
2336
|
+
* `p:graphicEl` data. A SmartArt renderer prefers this over the
|
|
2337
|
+
* progress-based `build` / {@link ElementBuildState} path when present, since
|
|
2338
|
+
* it reflects the real authored reveal set (correct even for a
|
|
2339
|
+
* reversed-order or by-branch build), and falls back to `build` when absent.
|
|
2605
2340
|
*/
|
|
2606
2341
|
interface DiagramRevealDescriptor {
|
|
2607
2342
|
/**
|
|
@@ -2614,9 +2349,11 @@ interface DiagramRevealDescriptor {
|
|
|
2614
2349
|
nodeIds: ReadonlySet<string>;
|
|
2615
2350
|
}
|
|
2616
2351
|
/**
|
|
2617
|
-
* Playback-time staged-build state surfaced on
|
|
2618
|
-
*
|
|
2619
|
-
*
|
|
2352
|
+
* Playback-time staged-build state surfaced on
|
|
2353
|
+
* {@link import('./animation-timeline-group').ElementAnimationState}.
|
|
2354
|
+
* `progress` is the 0..1 fraction of the build revealed at the current
|
|
2355
|
+
* playback time; a consumer maps it to its own item COUNT (see
|
|
2356
|
+
* `revealedStageCount`).
|
|
2620
2357
|
*/
|
|
2621
2358
|
type ElementBuildState = {
|
|
2622
2359
|
kind: 'chart';
|
|
@@ -2627,6 +2364,75 @@ type ElementBuildState = {
|
|
|
2627
2364
|
mode: DiagramBuildMode;
|
|
2628
2365
|
progress: number;
|
|
2629
2366
|
};
|
|
2367
|
+
|
|
2368
|
+
/**
|
|
2369
|
+
* `animation-text-style-resolve` - resolves the discrete font-style / colour /
|
|
2370
|
+
* size override PowerPoint's font-style emphasis effects apply to their
|
|
2371
|
+
* target's text: Bold Flash, Bold Reveal, Underline, Brush On Underline,
|
|
2372
|
+
* Font Style / Change Font Style, Change Font Size, and the font-style `p:set`
|
|
2373
|
+
* siblings composed alongside Wave / Grow With Color / Teeter.
|
|
2374
|
+
*
|
|
2375
|
+
* PowerPoint authors these two ways, both already parsed by core:
|
|
2376
|
+
* - A `p:set` discrete (non-interpolated) assignment
|
|
2377
|
+
* ({@link PptxNativeAnimation.setAnimations}, ECMA-376 S19.5.79
|
|
2378
|
+
* CT_TLSetBehavior): the value snaps on once and holds until the effect's
|
|
2379
|
+
* `p:cTn/@fill` says otherwise (Bold Reveal, Underline / Brush On
|
|
2380
|
+
* Underline).
|
|
2381
|
+
* - A generic `p:anim` ramp ({@link PptxNativeAnimation.attributeAnimations},
|
|
2382
|
+
* ECMA-376 S19.5.2 CT_TLAnimateBehavior) whose `p:tavLst` stops are not
|
|
2383
|
+
* numerically interpolatable for a boolean attribute (Bold Flash): only the
|
|
2384
|
+
* LAST stop's value is meaningful, the same "snap at the end" reading
|
|
2385
|
+
* PowerPoint itself gives a discrete `calcMode` ramp.
|
|
2386
|
+
*
|
|
2387
|
+
* Ground truth (COM `AddEffect` + raw OOXML inspection, see
|
|
2388
|
+
* `animation-emphasis-ground-truth-early.ts`): `style.fontWeight` (bold),
|
|
2389
|
+
* `style.fontStyle` (italic), `style.textDecorationUnderline` (underline),
|
|
2390
|
+
* `style.fontSize` (a numeric ramp: this module reads its FIRST/LAST stop
|
|
2391
|
+
* ratio as {@link TextStyleAnimationDescriptor.fontScale}, a relative
|
|
2392
|
+
* multiplier rather than an absolute size, since a shape's runs may not all
|
|
2393
|
+
* share the authored effect's own reference size), and `style.color` (font
|
|
2394
|
+
* colour, distinct from `fillcolor`/`stroke.color`, which the existing
|
|
2395
|
+
* `p:animClr` colour-animation path already owns).
|
|
2396
|
+
*
|
|
2397
|
+
* Deliberately does NOT model a "during" vs "after" phase distinction: the
|
|
2398
|
+
* hold-vs-revert decision this effect's `p:cTn/@fill` makes is already
|
|
2399
|
+
* computed once, correctly, by `animation-fill-repeat.ts`'s
|
|
2400
|
+
* `shouldHoldEndState` (the exact same rule CSS-animation steps already use
|
|
2401
|
+
* to decide whether their final frame persists on cleanup) and surfaced on
|
|
2402
|
+
* {@link import('./animation-timeline-types').TimelineStep.holdEndState}.
|
|
2403
|
+
* `animation-text-style-state.ts` reuses that flag rather than recomputing
|
|
2404
|
+
* hold/revert semantics a second time here.
|
|
2405
|
+
*
|
|
2406
|
+
* @module render/animation-text-style-resolve
|
|
2407
|
+
*/
|
|
2408
|
+
|
|
2409
|
+
/**
|
|
2410
|
+
* Framework-neutral text-style override a font-style emphasis effect applies
|
|
2411
|
+
* on top of its target's own authored per-run bold/italic/underline/size/
|
|
2412
|
+
* colour. Every binding maps this onto its own text container so it OVERRIDES
|
|
2413
|
+
* the runs' inline styles (the runs carry explicit inline styles of their
|
|
2414
|
+
* own, so plain CSS inheritance cannot reach them).
|
|
2415
|
+
*/
|
|
2416
|
+
interface TextStyleAnimationDescriptor {
|
|
2417
|
+
bold?: boolean;
|
|
2418
|
+
italic?: boolean;
|
|
2419
|
+
underline?: boolean;
|
|
2420
|
+
/** Relative multiplier against each run's own authored font size. */
|
|
2421
|
+
fontScale?: number;
|
|
2422
|
+
color?: string;
|
|
2423
|
+
}
|
|
2424
|
+
|
|
2425
|
+
/**
|
|
2426
|
+
* `animation-timeline-group` - click-group and whole-timeline models
|
|
2427
|
+
* ({@link TimelineClickGroup}, {@link AnimationTimeline},
|
|
2428
|
+
* {@link ElementAnimationState}, {@link AnimationStyle}), split out of
|
|
2429
|
+
* `animation-timeline-types` to keep that module under the file-size limit.
|
|
2430
|
+
* Re-exported from `animation-timeline-types` so existing imports are
|
|
2431
|
+
* unaffected.
|
|
2432
|
+
*
|
|
2433
|
+
* @module render/animation-timeline-group
|
|
2434
|
+
*/
|
|
2435
|
+
|
|
2630
2436
|
/** Snapshot of a single element's animation state at a point in the timeline. */
|
|
2631
2437
|
interface ElementAnimationState {
|
|
2632
2438
|
/** Whether the element should be visible. */
|
|
@@ -2679,14 +2485,14 @@ interface ElementAnimationState {
|
|
|
2679
2485
|
animatesStroke?: boolean;
|
|
2680
2486
|
/**
|
|
2681
2487
|
* Active discrete font-style / colour / size override (see
|
|
2682
|
-
* {@link TimelineStep.textStyle}) a
|
|
2683
|
-
* applies to this element's text,
|
|
2684
|
-
* bold/italic/underline/size/colour.
|
|
2685
|
-
* this on step start and again on
|
|
2686
|
-
* `p:cTn/@fill` holds its end
|
|
2687
|
-
* maps it onto its run markup
|
|
2688
|
-
* (`animation-text-style-css.ts`). Absent
|
|
2689
|
-
* effect is currently active on this element.
|
|
2488
|
+
* {@link import('./animation-timeline-step').TimelineStep.textStyle}) a
|
|
2489
|
+
* font-style emphasis effect currently applies to this element's text,
|
|
2490
|
+
* OVERRIDING the runs' own inline bold/italic/underline/size/colour.
|
|
2491
|
+
* `animation-playback-engine.ts` writes this on step start and again on
|
|
2492
|
+
* cleanup (held in full when the effect's `p:cTn/@fill` holds its end
|
|
2493
|
+
* state, otherwise reverted); a text renderer maps it onto its run markup
|
|
2494
|
+
* via `buildTextStyleOverrideCss` (`animation-text-style-css.ts`). Absent
|
|
2495
|
+
* means no font-style emphasis effect is currently active on this element.
|
|
2690
2496
|
*/
|
|
2691
2497
|
textStyle?: TextStyleAnimationDescriptor;
|
|
2692
2498
|
}
|
|
@@ -3114,12 +2920,22 @@ declare function computeGridSpacingPx(gridSpacing: GridSpacingEmu | undefined, f
|
|
|
3114
2920
|
|
|
3115
2921
|
/** Default slide stage colour when a slide carries no usable background. */
|
|
3116
2922
|
declare const DEFAULT_SLIDE_BACKGROUND = "#ffffff";
|
|
2923
|
+
/**
|
|
2924
|
+
* The slide's own pixel size, needed only to anchor a `shadeToTitle`
|
|
2925
|
+
* gradient on the title placeholder's bounds (see
|
|
2926
|
+
* `background-shade-to-title.ts`). Optional: a caller that omits it still
|
|
2927
|
+
* gets the plain authored gradient, matching this project's prior behaviour.
|
|
2928
|
+
*/
|
|
2929
|
+
interface SlideBackgroundSize {
|
|
2930
|
+
widthPx: number;
|
|
2931
|
+
heightPx: number;
|
|
2932
|
+
}
|
|
3117
2933
|
/**
|
|
3118
2934
|
* Build the background portion of the slide stage style from a slide's
|
|
3119
2935
|
* resolved background fields. Returns only `background-*` properties so the
|
|
3120
2936
|
* caller can spread it into the rest of the stage style.
|
|
3121
2937
|
*/
|
|
3122
|
-
declare function getSlideBackgroundStyle(slide: PptxSlide | undefined): CssStyleMap;
|
|
2938
|
+
declare function getSlideBackgroundStyle(slide: PptxSlide | undefined, slideSize?: SlideBackgroundSize): CssStyleMap;
|
|
3123
2939
|
|
|
3124
2940
|
/**
|
|
3125
2941
|
* editor-insert.ts: Pure factory functions for creating new slide elements.
|
|
@@ -3483,7 +3299,7 @@ declare function isBrowserOpenableMime(mime?: string): boolean;
|
|
|
3483
3299
|
* `package` and `unknown` from the core type both collapse to `'unknown'` here
|
|
3484
3300
|
* so that every branch is guaranteed to have a colour and label.
|
|
3485
3301
|
*/
|
|
3486
|
-
type ResolvedOleType = 'excel' | 'word' | 'pdf' | 'visio' | 'mathtype' | 'unknown';
|
|
3302
|
+
type ResolvedOleType = 'excel' | 'word' | 'powerpoint' | 'pdf' | 'visio' | 'mathtype' | 'unknown';
|
|
3487
3303
|
/**
|
|
3488
3304
|
* Resolve the OLE application type from `oleObjectType`, falling back to a
|
|
3489
3305
|
* case-insensitive substring match on `oleProgId`.
|
|
@@ -3744,67 +3560,6 @@ interface FieldSubstitutionContext {
|
|
|
3744
3560
|
slideTitle?: string;
|
|
3745
3561
|
}
|
|
3746
3562
|
|
|
3747
|
-
/**
|
|
3748
|
-
* CSS-ready tab layout for one run's text, built on the pure positioning maths
|
|
3749
|
-
* in `text-tab-layout.ts`.
|
|
3750
|
-
*
|
|
3751
|
-
* `buildRunTabLines` is the "pure decision function" every binding maps
|
|
3752
|
-
* mechanically onto its own template: it splits a run's text on `\n`, lays out
|
|
3753
|
-
* each line's `\t`-separated pieces against the paragraph's tab stops, and
|
|
3754
|
-
* returns, per piece, CSS a binding spreads verbatim onto a nested span (plus
|
|
3755
|
-
* a ready-filled leader string for the gap before it). A binding renders
|
|
3756
|
-
* nothing but `pieces.map(...)`; the alignment/leader decision itself never
|
|
3757
|
-
* has to be reimplemented per framework.
|
|
3758
|
-
*/
|
|
3759
|
-
|
|
3760
|
-
/** One tabbed-line piece, ready to spread onto a binding's own span element. */
|
|
3761
|
-
interface TabbedRunPiece {
|
|
3762
|
-
text: string;
|
|
3763
|
-
/**
|
|
3764
|
-
* CSS for the span that wraps `text`: inline-block layout, this run's own
|
|
3765
|
-
* decoration repeated, and this piece's own PowerPoint advance-width
|
|
3766
|
-
* correction as `letter-spacing` (see `buildTabbedLine`). The piece is
|
|
3767
|
-
* nested inside the run's own span, and neither property inherits the way a
|
|
3768
|
-
* caller would want: `text-decoration-*` does not inherit into a nested
|
|
3769
|
-
* element at all (an ancestor's underline is drawn *through* its
|
|
3770
|
-
* descendants, but each descendant still computes `none` of its own), so a
|
|
3771
|
-
* caller passes the run's decoration subset (`nestedTextDecorationStyle`) to
|
|
3772
|
-
* have it repeated here; `letter-spacing` DOES inherit, which is exactly why
|
|
3773
|
-
* this piece sets it explicitly rather than only when non-zero - the run's
|
|
3774
|
-
* container span carries its own (wrong, whole-text) correction that would
|
|
3775
|
-
* otherwise leak in.
|
|
3776
|
-
*/
|
|
3777
|
-
style: RunStyle;
|
|
3778
|
-
/** CSS for the leader-fill span preceding this piece, or `undefined` when there is no gap to fill. */
|
|
3779
|
-
leaderStyle?: RunStyle;
|
|
3780
|
-
/** Leader glyphs sized to fill `leaderStyle`'s width. Present only alongside `leaderStyle`. */
|
|
3781
|
-
leaderText?: string;
|
|
3782
|
-
/**
|
|
3783
|
-
* `a:rPr/@u="words"` per-word/gap sub-pieces of THIS tab piece's own text
|
|
3784
|
-
* (see `splitWordsForUnderline`), present only when the run's underline is
|
|
3785
|
-
* `words`. A tab-separated piece is otherwise rendered as a single span
|
|
3786
|
-
* (`text` + `style`), which underlines it continuously - correct for a
|
|
3787
|
-
* one-word piece, but wrong for a piece like `"Hello World"` between two tab
|
|
3788
|
-
* stops, which needs a gap under the space. A binding renders one SIBLING
|
|
3789
|
-
* span per entry IN PLACE OF the piece's single `text` span: each entry's
|
|
3790
|
-
* `style` is the piece's own `style` (the same inline-block layout and
|
|
3791
|
-
* advance-width correction, so the line measures exactly as before), with
|
|
3792
|
-
* the underline stripped on a gap entry. They must be siblings, not spans
|
|
3793
|
-
* nested inside the piece span: an ancestor's underline is drawn through
|
|
3794
|
-
* every inline descendant, so a nested gap could not lose it. `text`/`style`
|
|
3795
|
-
* stay the continuous-underline fallback for a binding that does not
|
|
3796
|
-
* render this field.
|
|
3797
|
-
*/
|
|
3798
|
-
words?: Array<{
|
|
3799
|
-
text: string;
|
|
3800
|
-
style: RunStyle;
|
|
3801
|
-
}>;
|
|
3802
|
-
}
|
|
3803
|
-
/** One `\n`-split line of a run's tabbed text. */
|
|
3804
|
-
interface TabbedLineRun {
|
|
3805
|
-
pieces: TabbedRunPiece[];
|
|
3806
|
-
}
|
|
3807
|
-
|
|
3808
3563
|
/**
|
|
3809
3564
|
* The two halves of an in-place cross-dissolve, paired so a binding can
|
|
3810
3565
|
* composite them the way PowerPoint composites them: ADDITIVELY.
|
|
@@ -4869,7 +4624,7 @@ declare const SLIDE_TRANSITION_KEYFRAMES: string;
|
|
|
4869
4624
|
* is rendered faithfully by delegating to {@link getP14TransitionAnimations}
|
|
4870
4625
|
* (its `@keyframes` live in `p14-transition-keyframes` and are folded into
|
|
4871
4626
|
* `SLIDE_TRANSITION_KEYFRAMES`). The newer Office 2013+ (p15) cinematic family
|
|
4872
|
-
* (`cube`/`flip`/`rotate`/`orbit`/`fallOver`/`drape`/`curtains`/`wind`/
|
|
4627
|
+
* (`cube`/`box`/`flip`/`rotate`/`orbit`/`fallOver`/`drape`/`curtains`/`wind`/
|
|
4873
4628
|
* `prestige`/`fracture`/`crush`/`peelOff`/`pageCurlSingle`/`pageCurlDouble`/
|
|
4874
4629
|
* `airplane`/`origami`) is likewise rendered faithfully via
|
|
4875
4630
|
* {@link getCinematicTransitionAnimations} (its `@keyframes` live in
|
|
@@ -4887,7 +4642,7 @@ declare const SLIDE_TRANSITION_KEYFRAMES: string;
|
|
|
4887
4642
|
*
|
|
4888
4643
|
* Unknown types fall back to a symmetrical cross-fade.
|
|
4889
4644
|
*/
|
|
4890
|
-
declare function getSlideTransitionAnimations(type: PptxTransitionType, durationMs: number, direction: string | undefined, orient?: string | undefined, spokes?: number | undefined): SlideTransitionAnimations;
|
|
4645
|
+
declare function getSlideTransitionAnimations(type: PptxTransitionType, durationMs: number, direction: string | undefined, orient?: string | undefined, spokes?: number | undefined, pattern?: string | undefined): SlideTransitionAnimations;
|
|
4891
4646
|
|
|
4892
4647
|
/**
|
|
4893
4648
|
* `slide-transition-options` - the pure option catalogues backing every
|
|
@@ -4941,6 +4696,16 @@ interface SlideTransitionValueOption<T extends string> {
|
|
|
4941
4696
|
* slide save writer). Once that happens `soundRId`/`soundPath` are populated
|
|
4942
4697
|
* and `soundData` is cleared, exactly like `imagePath` for a picture.
|
|
4943
4698
|
*
|
|
4699
|
+
* WHY the stock gallery needed no core changes: `PptxSlideTransition.soundName`
|
|
4700
|
+
* and its write side (`slide-transition-xml.ts`'s `buildTransitionSound`)
|
|
4701
|
+
* already round-trip an OOXML `@_name`, which is exactly what COM-verified
|
|
4702
|
+
* ground truth (PowerPoint 2016, `SlideShowTransition.SoundEffect.
|
|
4703
|
+
* ImportFromFile`, 2026-09-06) showed PowerPoint itself writes for a stock
|
|
4704
|
+
* sound: `<p:snd r:embed="rIdN" name="APPLAUSE.WAV"/>`, no separate
|
|
4705
|
+
* "built-in" flag anywhere. {@link applyTransitionStockSound} only needed to
|
|
4706
|
+
* add an AUTHORING path that stages one of `effect-sound-catalogue.ts`'s 19
|
|
4707
|
+
* synthesised sounds with its canonical name.
|
|
4708
|
+
*
|
|
4944
4709
|
* @module render/slide-transition-sound
|
|
4945
4710
|
*/
|
|
4946
4711
|
|
|
@@ -5713,16 +5478,17 @@ interface SlideSizeSelectionDescriptor {
|
|
|
5713
5478
|
* working loader unreachable in practice. Whenever the loader learns a format,
|
|
5714
5479
|
* exactly one list has to change.
|
|
5715
5480
|
*
|
|
5716
|
-
* ## Read many, write
|
|
5481
|
+
* ## Read many, write several
|
|
5717
5482
|
*
|
|
5718
5483
|
* Input is a superset of output. We READ `.pptx`, `.ppsx`, `.pptm`, `.potx`,
|
|
5719
|
-
* legacy binary `.ppt` and portable `pptx-viewer-json`; we WRITE
|
|
5720
|
-
*
|
|
5721
|
-
*
|
|
5722
|
-
*
|
|
5723
|
-
* rather than keeping
|
|
5724
|
-
* `report.
|
|
5725
|
-
* the kind of
|
|
5484
|
+
* legacy binary `.ppt` and portable `pptx-viewer-json`; we WRITE the OpenXML
|
|
5485
|
+
* family plus legacy binary `.ppt` (via `packages/core/src/core/ppt/writer/`,
|
|
5486
|
+
* a real MS-PPT/OLE2 encoder, not a stub). `savedPresentationFileName`
|
|
5487
|
+
* REPLACES the source extension with the extension of the format actually
|
|
5488
|
+
* being written rather than keeping the source's: a deck opened as
|
|
5489
|
+
* `report.pptx` and saved back as `.ppt` (or vice versa) must have its name
|
|
5490
|
+
* agree with its bytes, which is the kind of mismatch PowerPoint itself
|
|
5491
|
+
* refuses to open.
|
|
5726
5492
|
*
|
|
5727
5493
|
* This module deliberately imports nothing, so any layer (render, export, a
|
|
5728
5494
|
* binding, a host app) can depend on it without risking an import cycle.
|
|
@@ -5751,10 +5517,14 @@ declare const PPTX_OPEN_ACCEPT: string;
|
|
|
5751
5517
|
* before it hands bytes to the loader.
|
|
5752
5518
|
*/
|
|
5753
5519
|
declare function isSupportedPresentationFile(name: string | null | undefined): boolean;
|
|
5754
|
-
/**
|
|
5520
|
+
/**
|
|
5521
|
+
* True for the binary PowerPoint 97-2003 family. `.ppt` itself is now also a
|
|
5522
|
+
* SAVE target (see {@link SavedPresentationFormat}); `.pps`/`.pot` (97-2003
|
|
5523
|
+
* show/template) remain read-only siblings sharing the same record format.
|
|
5524
|
+
*/
|
|
5755
5525
|
declare function isLegacyBinaryPresentation(name: string | null | undefined): boolean;
|
|
5756
|
-
/** The formats the save path can produce.
|
|
5757
|
-
type SavedPresentationFormat = 'pptx' | 'ppsx' | 'pptm';
|
|
5526
|
+
/** The formats the save path can produce. */
|
|
5527
|
+
type SavedPresentationFormat = 'pptx' | 'ppsx' | 'pptm' | 'ppt';
|
|
5758
5528
|
/**
|
|
5759
5529
|
* The stem of a presentation file name: directories and any loadable extension
|
|
5760
5530
|
* removed. `C:\decks\report.ppt` becomes `report`; a name with no recognised
|
|
@@ -5766,9 +5536,10 @@ declare function presentationBaseName(sourceName: string | null | undefined, fal
|
|
|
5766
5536
|
* The name a saved copy should be offered under: the source stem plus the
|
|
5767
5537
|
* extension of the format actually being written.
|
|
5768
5538
|
*
|
|
5769
|
-
* This is what turns `report.ppt` into `report.pptx` on Save As
|
|
5770
|
-
*
|
|
5771
|
-
* the
|
|
5539
|
+
* This is what turns `report.ppt` into `report.pptx` on a regular Save As,
|
|
5540
|
+
* and `report.pptx` into `report.ppt` when the user explicitly picks the
|
|
5541
|
+
* PowerPoint 97-2003 format. Keeping the source extension would mislabel the
|
|
5542
|
+
* bytes either way.
|
|
5772
5543
|
*/
|
|
5773
5544
|
declare function savedPresentationFileName(sourceName: string | null | undefined, format?: SavedPresentationFormat): string;
|
|
5774
5545
|
|
|
@@ -6001,57 +5772,6 @@ declare function formatTime(date: Date): string;
|
|
|
6001
5772
|
*/
|
|
6002
5773
|
declare function formatElapsed(elapsedMs: number): string;
|
|
6003
5774
|
|
|
6004
|
-
/**
|
|
6005
|
-
* `text-build-spans` - framework-agnostic spec for rendering a staged text
|
|
6006
|
-
* build (by paragraph / word / letter).
|
|
6007
|
-
*
|
|
6008
|
-
* `expandTextBuildAnimations` splits one animation into per-paragraph,
|
|
6009
|
-
* per-word or per-character sub-animations keyed `<elementId>::p0` /
|
|
6010
|
-
* `::w0-3` / `::c0-7`. Something then has to split the RENDERED text the same
|
|
6011
|
-
* way and attach each sub-animation to its own span, or the build has no
|
|
6012
|
-
* visible effect and the whole box fades as one.
|
|
6013
|
-
*
|
|
6014
|
-
* React did that inline in JSX, which left the other four bindings with no
|
|
6015
|
-
* by-letter animation at all. This module returns the split as plain data so
|
|
6016
|
-
* every binding can render it with its own primitives - the same shape as
|
|
6017
|
-
* `notesSegmentsToSpans`.
|
|
6018
|
-
*
|
|
6019
|
-
* @module render/text-build-spans
|
|
6020
|
-
*/
|
|
6021
|
-
|
|
6022
|
-
/** One rendered piece of a staged text build. */
|
|
6023
|
-
interface TextBuildSpan<TStyle = unknown> {
|
|
6024
|
-
/**
|
|
6025
|
-
* The sub-animation id (`<elementId>::c0-3`), or `undefined` for the
|
|
6026
|
-
* whitespace between words, which is emitted verbatim and never animated.
|
|
6027
|
-
*/
|
|
6028
|
-
animId?: string;
|
|
6029
|
-
/** The text this span renders. */
|
|
6030
|
-
text: string;
|
|
6031
|
-
/** True when the sub-animation says the piece is not visible yet. */
|
|
6032
|
-
hidden: boolean;
|
|
6033
|
-
/** The CSS `animation` shorthand to apply, when one is running. */
|
|
6034
|
-
cssAnimation?: string;
|
|
6035
|
-
/**
|
|
6036
|
-
* The style of the run this piece came from, passed straight through. A
|
|
6037
|
-
* build splits the text but must not flatten its formatting: without this a
|
|
6038
|
-
* bold or coloured run turns plain for the duration of the animation.
|
|
6039
|
-
*/
|
|
6040
|
-
style?: TStyle;
|
|
6041
|
-
}
|
|
6042
|
-
/** How a paragraph's text is split for its build. */
|
|
6043
|
-
type TextBuildGranularity = 'paragraph' | 'word' | 'char';
|
|
6044
|
-
/** The spec for one paragraph of a staged text build. */
|
|
6045
|
-
interface TextBuildSpec<TStyle = unknown> {
|
|
6046
|
-
granularity: TextBuildGranularity;
|
|
6047
|
-
/** For a paragraph-level build, the single wrapper's id. */
|
|
6048
|
-
animId?: string;
|
|
6049
|
-
hidden?: boolean;
|
|
6050
|
-
cssAnimation?: string;
|
|
6051
|
-
/** For word/char builds, the pieces in render order. */
|
|
6052
|
-
spans?: TextBuildSpan<TStyle>[];
|
|
6053
|
-
}
|
|
6054
|
-
|
|
6055
5775
|
/**
|
|
6056
5776
|
* audience-content-store: IndexedDB-based storage for sharing PPTX content
|
|
6057
5777
|
* between the presenter tab and audience tab.
|
|
@@ -6591,7 +6311,41 @@ interface InkPoint {
|
|
|
6591
6311
|
* data".
|
|
6592
6312
|
*/
|
|
6593
6313
|
pressure?: number;
|
|
6314
|
+
/**
|
|
6315
|
+
* Pen-tilt lean, in degrees, from `PointerEvent.tiltX`/`tiltY` on
|
|
6316
|
+
* supporting hardware (a mouse, or a stylus with no tilt sensor, reports a
|
|
6317
|
+
* constant 0). Optional and always captured as a pair: a binding that has
|
|
6318
|
+
* not wired tilt capture simply omits both, and {@link strokeToInkElement}
|
|
6319
|
+
* treats a constant `(0, 0)` reading the same way it treats a constant
|
|
6320
|
+
* pressure, i.e. as "no real tilt data" rather than authoring a channel
|
|
6321
|
+
* for it.
|
|
6322
|
+
*/
|
|
6323
|
+
tiltX?: number;
|
|
6324
|
+
tiltY?: number;
|
|
6594
6325
|
}
|
|
6326
|
+
/**
|
|
6327
|
+
* Minimal shape of the browser `PointerEvent` fields {@link pointFromPointerEvent}
|
|
6328
|
+
* reads. Kept duck-typed (not `PointerEvent` itself) so this module has no DOM
|
|
6329
|
+
* lib dependency and is trivially unit-testable with a plain object.
|
|
6330
|
+
*/
|
|
6331
|
+
interface PointerEventLike {
|
|
6332
|
+
pressure?: number;
|
|
6333
|
+
tiltX?: number;
|
|
6334
|
+
tiltY?: number;
|
|
6335
|
+
}
|
|
6336
|
+
/**
|
|
6337
|
+
* Attach a pointer event's pressure and tilt reading to an already
|
|
6338
|
+
* stage-mapped `{x, y}` position, producing the {@link InkPoint} every
|
|
6339
|
+
* binding's Draw-tab pointerdown/pointermove handler feeds into
|
|
6340
|
+
* {@link strokeToInkElement} (directly, or via an accumulated points array).
|
|
6341
|
+
*
|
|
6342
|
+
* Each binding computes `{x, y}` differently (its own stage rect + zoom
|
|
6343
|
+
* scale), which is why this only takes the already-local position rather than
|
|
6344
|
+
* a raw client-coordinate event; extracting `pressure`/`tiltX`/`tiltY`
|
|
6345
|
+
* verbatim onto that point is the one part every binding must do identically,
|
|
6346
|
+
* so it lives here instead of being re-typed out five times.
|
|
6347
|
+
*/
|
|
6348
|
+
declare function pointFromPointerEvent(x: number, y: number, event: PointerEventLike): InkPoint;
|
|
6595
6349
|
/**
|
|
6596
6350
|
* Convert an array of points into an SVG path `d` attribute string.
|
|
6597
6351
|
* - 0 points -> `''`
|
|
@@ -6620,6 +6374,11 @@ interface StrokeToInkElementOpts {
|
|
|
6620
6374
|
* the per-point pressure channel is attached as `inkPointPressures: [[...]]`
|
|
6621
6375
|
* so every binding's shared ink renderer (`ink-rendering.ts`) draws the
|
|
6622
6376
|
* stroke at variable width, identically to a stroke authored in React.
|
|
6377
|
+
* - When any point carries a genuinely non-zero `tiltX`/`tiltY` reading, the
|
|
6378
|
+
* raw per-point tilt channel is attached as `inkPointTiltX`/`inkPointTiltY`
|
|
6379
|
+
* so every binding's shared ink renderer (`ink-group-strokes.ts`) draws the
|
|
6380
|
+
* calligraphic nib lean, and the core save pipeline authors it as InkML
|
|
6381
|
+
* `OTx`/`OTy`.
|
|
6623
6382
|
*/
|
|
6624
6383
|
declare function strokeToInkElement(opts: StrokeToInkElementOpts): InkPptxElement | null;
|
|
6625
6384
|
|
|
@@ -6734,6 +6493,132 @@ interface InkStrokeAnimationStyle {
|
|
|
6734
6493
|
strokeDashoffset: string;
|
|
6735
6494
|
}
|
|
6736
6495
|
|
|
6496
|
+
/**
|
|
6497
|
+
* Pen-tilt calligraphic nib rendering.
|
|
6498
|
+
*
|
|
6499
|
+
* A stylus or digitizer pen can report its tilt (how far it leans off
|
|
6500
|
+
* perpendicular, and which way) alongside position and pressure. This module
|
|
6501
|
+
* turns that per-point tilt data into "nib marks": ellipses widened
|
|
6502
|
+
* perpendicular to the pen's lean direction, approximating the look of a
|
|
6503
|
+
* chisel-tip calligraphy pen. It is the tilt counterpart of the plain
|
|
6504
|
+
* pressure-circle rendering in `./ink-rendering`.
|
|
6505
|
+
*
|
|
6506
|
+
* Framework-agnostic: only depends on `./ink-rendering`'s point/width types,
|
|
6507
|
+
* so every binding (React, Vue, Angular, Svelte, Vanilla) consumes one copy.
|
|
6508
|
+
*
|
|
6509
|
+
* @module ink-tilt-nib
|
|
6510
|
+
*/
|
|
6511
|
+
|
|
6512
|
+
/**
|
|
6513
|
+
* One calligraphic nib mark: an ellipse whose wide axis sits perpendicular to
|
|
6514
|
+
* the pen's tilt-lean direction at that point, approximating a chisel-tip
|
|
6515
|
+
* nib. Degrades to a circle (`rPerp === rTilt`) wherever tilt magnitude is 0.
|
|
6516
|
+
*/
|
|
6517
|
+
interface NibMark {
|
|
6518
|
+
cx: number;
|
|
6519
|
+
cy: number;
|
|
6520
|
+
/** Radius along the tilt-lean direction (the nib's narrow axis). */
|
|
6521
|
+
rTilt: number;
|
|
6522
|
+
/** Radius perpendicular to the tilt-lean direction (the nib's wide axis). */
|
|
6523
|
+
rPerp: number;
|
|
6524
|
+
/**
|
|
6525
|
+
* Rotation, in degrees, to apply to an SVG `<ellipse rx={rPerp} ry={rTilt}>`
|
|
6526
|
+
* (e.g. via `transform="rotate(rotationDeg cx cy)"`) so its wide axis
|
|
6527
|
+
* points perpendicular to the lean direction.
|
|
6528
|
+
*/
|
|
6529
|
+
rotationDeg: number;
|
|
6530
|
+
}
|
|
6531
|
+
|
|
6532
|
+
/** One rendered stroke: a constant-width path, pressure circles, or tilt nib marks. */
|
|
6533
|
+
interface InkStrokeView {
|
|
6534
|
+
d: string;
|
|
6535
|
+
color: string;
|
|
6536
|
+
width: number;
|
|
6537
|
+
opacity: number;
|
|
6538
|
+
/** Per-point pressure circles; `null` renders the plain path. Mutually exclusive with `nibMarks`. */
|
|
6539
|
+
circles: PressureCircle[] | null;
|
|
6540
|
+
/**
|
|
6541
|
+
* Per-point calligraphic nib marks, built from the stroke's tilt channels;
|
|
6542
|
+
* `null` when the stroke declared no (or all-zero) tilt data, in which
|
|
6543
|
+
* case `circles` (or the plain path) renders as before this feature
|
|
6544
|
+
* existed.
|
|
6545
|
+
*/
|
|
6546
|
+
nibMarks: NibMark[] | null;
|
|
6547
|
+
}
|
|
6548
|
+
|
|
6549
|
+
/**
|
|
6550
|
+
* Live (in-progress) stroke preview for the Draw tool, shared by every
|
|
6551
|
+
* binding.
|
|
6552
|
+
*
|
|
6553
|
+
* Before this module, every binding's Draw overlay built its own live-preview
|
|
6554
|
+
* polyline `d` directly from the accumulated point list and stopped there: a
|
|
6555
|
+
* calligraphic pen-tilt lean or a pressure-variable width only ever appeared
|
|
6556
|
+
* once `pointerup` committed the stroke as an `InkPptxElement` and it
|
|
6557
|
+
* round-tripped through {@link buildInkGroupStrokes}. This function is the
|
|
6558
|
+
* "pointer still down" twin of that: given the SAME accumulated `InkPoint[]`
|
|
6559
|
+
* (with per-point pressure/tilt already attached by
|
|
6560
|
+
* {@link pointFromPointerEvent}), it makes the SAME render-mode decision
|
|
6561
|
+
* ({@link buildInkStrokeView}) a just-committed stroke would get, so a
|
|
6562
|
+
* calligraphic-nib or pressure-variable stroke looks identical before and
|
|
6563
|
+
* after `pointerup`. Every binding's Draw overlay maps the result the same
|
|
6564
|
+
* way its committed-stroke renderer already maps an `InkStrokeView` (plain
|
|
6565
|
+
* path / pressure circles / tilt nib marks).
|
|
6566
|
+
*
|
|
6567
|
+
* @module render/ink-live-preview
|
|
6568
|
+
*/
|
|
6569
|
+
|
|
6570
|
+
/** Options for {@link buildLiveInkStrokeView}. */
|
|
6571
|
+
interface LiveInkStrokeViewOpts {
|
|
6572
|
+
/**
|
|
6573
|
+
* Accumulated in-progress points, in the overlay's own stage-local
|
|
6574
|
+
* coordinate space. Unlike {@link strokeToInkElement}, these are NOT
|
|
6575
|
+
* translated to a bounding-box origin: a live preview draws directly over
|
|
6576
|
+
* the untranslated stage the same way the plain polyline it replaces
|
|
6577
|
+
* always did.
|
|
6578
|
+
*/
|
|
6579
|
+
points: InkPoint[];
|
|
6580
|
+
color: string;
|
|
6581
|
+
width: number;
|
|
6582
|
+
tool: 'pen' | 'highlighter' | 'freeform';
|
|
6583
|
+
}
|
|
6584
|
+
/**
|
|
6585
|
+
* Build the render view for an in-progress stroke, or `null` when there are
|
|
6586
|
+
* no points yet (nothing to draw).
|
|
6587
|
+
*
|
|
6588
|
+
* Mirrors {@link strokeToInkElement}'s pressure/tilt "did it capture real
|
|
6589
|
+
* data" decision, but skips the bounding-box translation and the
|
|
6590
|
+
* fewer-than-two-points rejection: a live preview must draw starting from the
|
|
6591
|
+
* very first point (a single dot is a valid in-progress state, unlike a
|
|
6592
|
+
* committed stroke, which requires at least two points to have a path at
|
|
6593
|
+
* all).
|
|
6594
|
+
*/
|
|
6595
|
+
declare function buildLiveInkStrokeView(opts: LiveInkStrokeViewOpts): InkStrokeView | null;
|
|
6596
|
+
|
|
6597
|
+
/**
|
|
6598
|
+
* Framework-neutral view model for a Draw-tab `InkPptxElement`'s own strokes.
|
|
6599
|
+
*
|
|
6600
|
+
* Mirrors `content-part-strokes.ts` (the same decision for a loaded
|
|
6601
|
+
* `p:contentPart`), but reads an `InkPptxElement`'s parallel per-path arrays
|
|
6602
|
+
* (`inkPaths`/`inkColors`/`inkWidths`/`inkOpacities`/`inkPointPressures`/
|
|
6603
|
+
* `inkPointTiltX`/`inkPointTiltY`) instead of a `ContentPartInkStroke[]`.
|
|
6604
|
+
*
|
|
6605
|
+
* Every binding used to hand-roll this exact pressure-circle decision (with
|
|
6606
|
+
* two subtly different legacy-fallback conditions: `inkWidths.length > 1` in
|
|
6607
|
+
* React/Angular vs. the more correct `inkWidths.length > el.inkPaths.length`
|
|
6608
|
+
* in Vue/Svelte/vanilla, since a per-PATH widths array of length 2 on a
|
|
6609
|
+
* 3-path stroke is not per-POINT legacy data), and none of them rendered a
|
|
6610
|
+
* tilt-driven calligraphic nib for this element type at all (only the loaded
|
|
6611
|
+
* `contentPart` path had it). One decision function closes both gaps for all
|
|
6612
|
+
* five bindings at once.
|
|
6613
|
+
*
|
|
6614
|
+
* @module render/ink-group-strokes
|
|
6615
|
+
*/
|
|
6616
|
+
|
|
6617
|
+
/** One rendered ink-group stroke, keyed for list rendering. */
|
|
6618
|
+
interface InkGroupStrokeView extends InkStrokeView {
|
|
6619
|
+
key: string;
|
|
6620
|
+
}
|
|
6621
|
+
|
|
6737
6622
|
/**
|
|
6738
6623
|
* Pure helper logic for mobile chrome state, shared by every binding.
|
|
6739
6624
|
*
|
|
@@ -8153,6 +8038,18 @@ interface ReadOnlyRecommendation {
|
|
|
8153
8038
|
readonly messageKey: string;
|
|
8154
8039
|
/** Whether a binding's "read-only" toggle should default to on. */
|
|
8155
8040
|
readonly defaultReadOnly: boolean;
|
|
8041
|
+
/**
|
|
8042
|
+
* Whether lifting this recommendation requires a correct password, rather
|
|
8043
|
+
* than a plain "Edit anyway". True only for a `modifyVerifier` that carries
|
|
8044
|
+
* a hash this viewer can actually check (`hashData` plus a resolvable
|
|
8045
|
+
* algorithm, see `checkModifyPassword`; `saltData` is optional and NOT
|
|
8046
|
+
* required, a missing salt is still checkable). "Mark as Final" is purely
|
|
8047
|
+
* advisory and never requires one, and a `modifyVerifier` with no hash at
|
|
8048
|
+
* all, or naming an algorithm this viewer does not implement, cannot be
|
|
8049
|
+
* verified either way, so both fall back to the plain "Edit anyway" a
|
|
8050
|
+
* binding already had.
|
|
8051
|
+
*/
|
|
8052
|
+
readonly requiresPassword: boolean;
|
|
8156
8053
|
}
|
|
8157
8054
|
|
|
8158
8055
|
interface CompatibilityWarningToast {
|
|
@@ -9012,7 +8909,7 @@ declare class AccessibilityService {
|
|
|
9012
8909
|
/** Replace the check options. */
|
|
9013
8910
|
setOptions(options: AccessibilityCheckOptions): void;
|
|
9014
8911
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AccessibilityService, never>;
|
|
9015
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
8912
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
9016
8913
|
}
|
|
9017
8914
|
|
|
9018
8915
|
/** Live selection accessors the store reads to derive the follow-selection focus. */
|
|
@@ -9113,7 +9010,7 @@ declare class AiPanelStore {
|
|
|
9113
9010
|
/** Apply the host's change-animation config (duration / colour / toggles). */
|
|
9114
9011
|
configureChangeAnimation(config?: AiChangeAnimationConfig): void;
|
|
9115
9012
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AiPanelStore, never>;
|
|
9116
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
9013
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
9117
9014
|
}
|
|
9118
9015
|
|
|
9119
9016
|
/** Live host accessors the recovery probe reads (all reactive). */
|
|
@@ -9150,7 +9047,7 @@ declare class AutosaveRecoveryService {
|
|
|
9150
9047
|
/** The user declined: drop the snapshot. */
|
|
9151
9048
|
discard(): void;
|
|
9152
9049
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AutosaveRecoveryService, never>;
|
|
9153
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
9050
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
9154
9051
|
}
|
|
9155
9052
|
|
|
9156
9053
|
/** Lifecycle status of the autosave engine (mirrors React's `AutosaveStatus`). */
|
|
@@ -9231,7 +9128,7 @@ declare class AutosaveService {
|
|
|
9231
9128
|
private doAutosave;
|
|
9232
9129
|
private clearTimer;
|
|
9233
9130
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AutosaveService, never>;
|
|
9234
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
9131
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
9235
9132
|
}
|
|
9236
9133
|
|
|
9237
9134
|
/**
|
|
@@ -9522,7 +9419,7 @@ declare class CollaborationService {
|
|
|
9522
9419
|
followUser(clientId: number | null): void;
|
|
9523
9420
|
private scheduleWriteBack;
|
|
9524
9421
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CollaborationService, never>;
|
|
9525
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
9422
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
9526
9423
|
}
|
|
9527
9424
|
|
|
9528
9425
|
/** The trimmed text plus the mention spans an add/reply submit carries. */
|
|
@@ -9808,7 +9705,7 @@ declare class EditorStateService {
|
|
|
9808
9705
|
private newId;
|
|
9809
9706
|
private idCounter;
|
|
9810
9707
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EditorStateService, never>;
|
|
9811
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
9708
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
9812
9709
|
}
|
|
9813
9710
|
|
|
9814
9711
|
/** Payload emitted when the user confirms an insert. */
|
|
@@ -9917,7 +9814,7 @@ declare class IsMobileService {
|
|
|
9917
9814
|
/** Scroll the focused editable into the area above the keyboard, if needed. */
|
|
9918
9815
|
private _scrollFocusedIntoView;
|
|
9919
9816
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IsMobileService, never>;
|
|
9920
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
9817
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
9921
9818
|
}
|
|
9922
9819
|
|
|
9923
9820
|
/**
|
|
@@ -10125,7 +10022,7 @@ declare class LoadContentService {
|
|
|
10125
10022
|
private disposeHandler;
|
|
10126
10023
|
private revokeBlobUrls;
|
|
10127
10024
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoadContentService, never>;
|
|
10128
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
10025
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
10129
10026
|
}
|
|
10130
10027
|
|
|
10131
10028
|
declare class LoadNoticesService {
|
|
@@ -10144,10 +10041,25 @@ declare class LoadNoticesService {
|
|
|
10144
10041
|
* host viewer's `canEdit`, the same way the Protected View lock does.
|
|
10145
10042
|
*/
|
|
10146
10043
|
readonly lockActive: _angular_core.Signal<boolean>;
|
|
10147
|
-
/**
|
|
10044
|
+
/** Whether the inline password prompt should render instead of the two buttons. */
|
|
10045
|
+
readonly passwordPromptOpen: _angular_core.WritableSignal<boolean>;
|
|
10046
|
+
/** Reason the last password attempt failed, or null before any attempt / after success. */
|
|
10047
|
+
readonly passwordError: _angular_core.WritableSignal<"wrong-password" | "unsupported-algorithm" | null>;
|
|
10048
|
+
/** True while {@link submitPassword}'s check is in flight (disables the form). */
|
|
10049
|
+
readonly checkingPassword: _angular_core.WritableSignal<boolean>;
|
|
10050
|
+
/**
|
|
10051
|
+
* "Edit anyway": lifts the recommendation's lock and hides the banner, or
|
|
10052
|
+
* (when `recommendation().requiresPassword` is set) opens the inline
|
|
10053
|
+
* password prompt instead of unlocking immediately.
|
|
10054
|
+
*/
|
|
10148
10055
|
editAnyway(): void;
|
|
10149
10056
|
/** "Dismiss": hides the banner but leaves any lock in place. */
|
|
10150
10057
|
dismissBanner(): void;
|
|
10058
|
+
/** Close the password prompt without unlocking. */
|
|
10059
|
+
cancelPasswordPrompt(): void;
|
|
10060
|
+
/** Check `password` against the deck's `modifyVerifier`; unlocks on a match. */
|
|
10061
|
+
submitPassword(password: string): Promise<void>;
|
|
10062
|
+
private unlock;
|
|
10151
10063
|
/** Deck-level plus every slide's compatibility warnings, deduped by code. */
|
|
10152
10064
|
readonly toasts: _angular_core.Signal<CompatibilityWarningToast[]>;
|
|
10153
10065
|
private readonly dismissedToastIds;
|
|
@@ -10160,7 +10072,7 @@ declare class LoadNoticesService {
|
|
|
10160
10072
|
/** Reset both notices' dismissed/lifted state for a newly loaded deck. */
|
|
10161
10073
|
resetForLoad(): void;
|
|
10162
10074
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LoadNoticesService, never>;
|
|
10163
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
10075
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
10164
10076
|
}
|
|
10165
10077
|
|
|
10166
10078
|
/** Which mobile sheet/panel is currently active (highlights its button). */
|
|
@@ -10283,7 +10195,7 @@ declare class PresenterWindowService {
|
|
|
10283
10195
|
connectAudience(onSlide: (index: number) => void, onExit: () => void): () => void;
|
|
10284
10196
|
private disposeWindow;
|
|
10285
10197
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PresenterWindowService, never>;
|
|
10286
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
10198
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
10287
10199
|
}
|
|
10288
10200
|
|
|
10289
10201
|
/**
|
|
@@ -10341,7 +10253,7 @@ declare class PrintService {
|
|
|
10341
10253
|
*/
|
|
10342
10254
|
private _open;
|
|
10343
10255
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PrintService, never>;
|
|
10344
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
10256
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
10345
10257
|
}
|
|
10346
10258
|
|
|
10347
10259
|
declare class RecentColorsService {
|
|
@@ -10360,7 +10272,7 @@ declare class RecentColorsService {
|
|
|
10360
10272
|
*/
|
|
10361
10273
|
push(hex: string): void;
|
|
10362
10274
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RecentColorsService, never>;
|
|
10363
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
10275
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
10364
10276
|
}
|
|
10365
10277
|
|
|
10366
10278
|
/**
|
|
@@ -10953,7 +10865,7 @@ declare class ViewerCanvasEditingService {
|
|
|
10953
10865
|
tableData: PptxTableData;
|
|
10954
10866
|
}): void;
|
|
10955
10867
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerCanvasEditingService, never>;
|
|
10956
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
10868
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
10957
10869
|
}
|
|
10958
10870
|
|
|
10959
10871
|
/** Live host accessors the cursor broadcast needs. */
|
|
@@ -10988,7 +10900,7 @@ declare class ViewerCollabCursorService {
|
|
|
10988
10900
|
*/
|
|
10989
10901
|
onPointerMove(event: PointerEvent): void;
|
|
10990
10902
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerCollabCursorService, never>;
|
|
10991
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
10903
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
10992
10904
|
}
|
|
10993
10905
|
|
|
10994
10906
|
/** Seed values for the Share dialog's start form. */
|
|
@@ -11088,7 +11000,7 @@ declare class ViewerCollaborationSessionService {
|
|
|
11088
11000
|
onBroadcastStart(config: BroadcastConfig): void;
|
|
11089
11001
|
onBroadcastStop(): void;
|
|
11090
11002
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerCollaborationSessionService, never>;
|
|
11091
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
11003
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
11092
11004
|
}
|
|
11093
11005
|
|
|
11094
11006
|
declare class ViewerCustomShowsService {
|
|
@@ -11210,7 +11122,7 @@ declare class ViewerCustomShowsService {
|
|
|
11210
11122
|
/** Write an edited list back into the deck's key space (relationship ids). */
|
|
11211
11123
|
private commit;
|
|
11212
11124
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerCustomShowsService, never>;
|
|
11213
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
11125
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
11214
11126
|
}
|
|
11215
11127
|
|
|
11216
11128
|
declare class ViewerDialogsService {
|
|
@@ -11282,7 +11194,7 @@ declare class ViewerDialogsService {
|
|
|
11282
11194
|
/** Open the equation editor to edit an existing element's equation. */
|
|
11283
11195
|
openEquationEdit(elementId: string, omml: Record<string, unknown>): void;
|
|
11284
11196
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerDialogsService, never>;
|
|
11285
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
11197
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
11286
11198
|
}
|
|
11287
11199
|
|
|
11288
11200
|
/** Live host accessors the document-properties controller needs. */
|
|
@@ -11315,7 +11227,7 @@ declare class ViewerDocumentPropertiesService {
|
|
|
11315
11227
|
/** Apply a hyperlink edit to the selected element (one history entry). */
|
|
11316
11228
|
onHyperlinkSave(patch: Partial<PptxElement>): void;
|
|
11317
11229
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerDocumentPropertiesService, never>;
|
|
11318
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
11230
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
11319
11231
|
}
|
|
11320
11232
|
|
|
11321
11233
|
/** Live accessors the export loop needs from the host component. */
|
|
@@ -11396,7 +11308,7 @@ declare class ViewerExportService {
|
|
|
11396
11308
|
*/
|
|
11397
11309
|
private captureSlideDataUrl;
|
|
11398
11310
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerExportService, never>;
|
|
11399
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
11311
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
11400
11312
|
}
|
|
11401
11313
|
|
|
11402
11314
|
/** Live host accessors the file-IO controller needs. */
|
|
@@ -11452,6 +11364,8 @@ declare class ViewerFileIOService {
|
|
|
11452
11364
|
saveAsPptx(): Promise<void>;
|
|
11453
11365
|
saveAsPpsx(): Promise<void>;
|
|
11454
11366
|
saveAsPptm(): Promise<void>;
|
|
11367
|
+
/** Legacy binary PowerPoint 97-2003 `.ppt`; `saveAs` picks the OLE2 MIME type. */
|
|
11368
|
+
saveAsPpt(): Promise<void>;
|
|
11455
11369
|
/**
|
|
11456
11370
|
* File > Export > Export as JSON: serialise the live deck (templates merged
|
|
11457
11371
|
* back in when editing) to `pptx-viewer-json` and trigger the download.
|
|
@@ -11464,7 +11378,7 @@ declare class ViewerFileIOService {
|
|
|
11464
11378
|
*/
|
|
11465
11379
|
openFile(): void;
|
|
11466
11380
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerFileIOService, never>;
|
|
11467
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
11381
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
11468
11382
|
}
|
|
11469
11383
|
|
|
11470
11384
|
/** Emitted when the user changes the find query or the case-sensitive toggle. */
|
|
@@ -11557,7 +11471,7 @@ declare class ViewerFindReplaceService {
|
|
|
11557
11471
|
/** Re-run the search over the editable deck and refresh the match list. */
|
|
11558
11472
|
private refreshResults;
|
|
11559
11473
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerFindReplaceService, never>;
|
|
11560
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
11474
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
11561
11475
|
}
|
|
11562
11476
|
|
|
11563
11477
|
/** Live selection/slide accessors the painter needs from the host component. */
|
|
@@ -11598,7 +11512,7 @@ declare class ViewerFormatPainterService {
|
|
|
11598
11512
|
/** Apply a picked colour to the selected shape's fill, else copy to clipboard. */
|
|
11599
11513
|
private applyEyedropperColor;
|
|
11600
11514
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerFormatPainterService, never>;
|
|
11601
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
11515
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
11602
11516
|
}
|
|
11603
11517
|
|
|
11604
11518
|
/** The explicit right-docked tool panels a ribbon/bottom-bar button can toggle. */
|
|
@@ -11684,9 +11598,21 @@ declare class ViewerInspectorPanelService {
|
|
|
11684
11598
|
* open/closed state, matching React's and Vue's independent open/close
|
|
11685
11599
|
* toggle (closing/opening is not tied to selection changes).
|
|
11686
11600
|
*/
|
|
11601
|
+
/**
|
|
11602
|
+
* Monotonic counter bumped by {@link openAnimationPanel}; the inspector
|
|
11603
|
+
* panel reacts to every change by expanding its Animation section, so a
|
|
11604
|
+
* user who collapsed it by hand gets it back on the next ribbon click.
|
|
11605
|
+
*/
|
|
11606
|
+
readonly animationPanelRequest: _angular_core.WritableSignal<number>;
|
|
11607
|
+
/**
|
|
11608
|
+
* Ribbon "Animation Panel": surface the format view like
|
|
11609
|
+
* {@link openFormatPanel} AND expand the inspector's Animation section
|
|
11610
|
+
* (React's `onOpenAnimationPanel` lands on those controls directly).
|
|
11611
|
+
*/
|
|
11612
|
+
openAnimationPanel(): void;
|
|
11687
11613
|
toggleFormatPanel(): void;
|
|
11688
11614
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerInspectorPanelService, never>;
|
|
11689
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
11615
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
11690
11616
|
}
|
|
11691
11617
|
|
|
11692
11618
|
/** Live host accessors the mobile-insert action needs. */
|
|
@@ -11720,7 +11646,7 @@ declare class ViewerMobileSheetService {
|
|
|
11720
11646
|
*/
|
|
11721
11647
|
onMobileInsert(): void;
|
|
11722
11648
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerMobileSheetService, never>;
|
|
11723
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
11649
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
11724
11650
|
}
|
|
11725
11651
|
|
|
11726
11652
|
declare class ViewerOptionsService {
|
|
@@ -11790,7 +11716,7 @@ declare class ViewerOptionsService {
|
|
|
11790
11716
|
/** Options > Save > "cache retention": prune snapshots older than N days. */
|
|
11791
11717
|
pruneExpiredCache(): Promise<void>;
|
|
11792
11718
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerOptionsService, never>;
|
|
11793
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
11719
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
11794
11720
|
}
|
|
11795
11721
|
|
|
11796
11722
|
/** A single {x, y} coordinate in slide-space pixels. */
|
|
@@ -11920,7 +11846,7 @@ declare class ViewerPresentationModeService {
|
|
|
11920
11846
|
/** Presentation exited with ink on it: offer the keep/discard prompt. */
|
|
11921
11847
|
onPresentationAnnotationsExit(map: SlideAnnotationMap): void;
|
|
11922
11848
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerPresentationModeService, never>;
|
|
11923
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
11849
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
11924
11850
|
}
|
|
11925
11851
|
|
|
11926
11852
|
declare class ViewerThemeGalleryService {
|
|
@@ -11943,7 +11869,7 @@ declare class ViewerThemeGalleryService {
|
|
|
11943
11869
|
applyThemePreset(preset: PptxThemePreset): void;
|
|
11944
11870
|
applyCustomTheme(colorScheme: PptxThemeColorScheme, fontScheme: PptxThemeFontScheme, name: string): void;
|
|
11945
11871
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerThemeGalleryService, never>;
|
|
11946
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
11872
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
11947
11873
|
}
|
|
11948
11874
|
|
|
11949
11875
|
declare class ViewerZoomService {
|
|
@@ -11959,7 +11885,7 @@ declare class ViewerZoomService {
|
|
|
11959
11885
|
zoomOut(): void;
|
|
11960
11886
|
zoomReset(): void;
|
|
11961
11887
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerZoomService, never>;
|
|
11962
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
11888
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
11963
11889
|
}
|
|
11964
11890
|
|
|
11965
11891
|
/**
|
|
@@ -12753,7 +12679,7 @@ declare class AreaChart3DService {
|
|
|
12753
12679
|
/** `true` when an area3D chart should render via the Three.js scene. */
|
|
12754
12680
|
readonly enabled: _angular_core.WritableSignal<boolean>;
|
|
12755
12681
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AreaChart3DService, never>;
|
|
12756
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
12682
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
12757
12683
|
}
|
|
12758
12684
|
|
|
12759
12685
|
/**
|
|
@@ -12769,7 +12695,7 @@ declare class BarChart3DService {
|
|
|
12769
12695
|
/** `true` when a bar3D chart should render via the Three.js scene. */
|
|
12770
12696
|
readonly enabled: _angular_core.WritableSignal<boolean>;
|
|
12771
12697
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<BarChart3DService, never>;
|
|
12772
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
12698
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
12773
12699
|
}
|
|
12774
12700
|
|
|
12775
12701
|
/** A selected chart sub-part, scoped to the chart element that owns it. */
|
|
@@ -12787,7 +12713,7 @@ declare class ChartPartSelectionService {
|
|
|
12787
12713
|
/** Clear the selection when it belongs to the given chart element. */
|
|
12788
12714
|
clearForElement(elementId: string): void;
|
|
12789
12715
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartPartSelectionService, never>;
|
|
12790
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
12716
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
12791
12717
|
}
|
|
12792
12718
|
|
|
12793
12719
|
/**
|
|
@@ -12809,7 +12735,7 @@ declare class CustomFontsService {
|
|
|
12809
12735
|
/** Record a newly registered family, ignoring one already present. */
|
|
12810
12736
|
register(family: string): void;
|
|
12811
12737
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CustomFontsService, never>;
|
|
12812
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
12738
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
12813
12739
|
}
|
|
12814
12740
|
|
|
12815
12741
|
declare class EmbeddedFontsService {
|
|
@@ -12848,7 +12774,7 @@ declare class EmbeddedFontsService {
|
|
|
12848
12774
|
private removeStyleElement;
|
|
12849
12775
|
private revokeObjectUrls;
|
|
12850
12776
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EmbeddedFontsService, never>;
|
|
12851
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
12777
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
12852
12778
|
}
|
|
12853
12779
|
|
|
12854
12780
|
declare class ExportService {
|
|
@@ -12919,7 +12845,7 @@ declare class ExportService {
|
|
|
12919
12845
|
*/
|
|
12920
12846
|
exportCanvasesToWebm(canvases: HTMLCanvasElement[], slideDurationMs: number, fileName: string, signal?: AbortSignal, onProgress?: (current: number, total: number) => void): Promise<void>;
|
|
12921
12847
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ExportService, never>;
|
|
12922
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
12848
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
12923
12849
|
}
|
|
12924
12850
|
|
|
12925
12851
|
/**
|
|
@@ -12953,7 +12879,7 @@ declare class FieldContextService {
|
|
|
12953
12879
|
*/
|
|
12954
12880
|
forSlide(slide: PptxSlide | undefined): FieldSubstitutionContext;
|
|
12955
12881
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FieldContextService, never>;
|
|
12956
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
12882
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
12957
12883
|
}
|
|
12958
12884
|
|
|
12959
12885
|
/** DOM id of the managed `<link>` element (binding-specific, like the style ids). */
|
|
@@ -12976,7 +12902,7 @@ declare class GoogleWebfontsService {
|
|
|
12976
12902
|
dispose(): void;
|
|
12977
12903
|
private removeLinkElement;
|
|
12978
12904
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<GoogleWebfontsService, never>;
|
|
12979
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
12905
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
12980
12906
|
}
|
|
12981
12907
|
|
|
12982
12908
|
/**
|
|
@@ -12992,7 +12918,7 @@ declare class LineChart3DService {
|
|
|
12992
12918
|
/** `true` when a line3D chart should render via the Three.js scene. */
|
|
12993
12919
|
readonly enabled: _angular_core.WritableSignal<boolean>;
|
|
12994
12920
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LineChart3DService, never>;
|
|
12995
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
12921
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
12996
12922
|
}
|
|
12997
12923
|
|
|
12998
12924
|
/**
|
|
@@ -13008,7 +12934,7 @@ declare class PieChart3DService {
|
|
|
13008
12934
|
/** `true` when a pie3D chart should render via the Three.js scene. */
|
|
13009
12935
|
readonly enabled: _angular_core.WritableSignal<boolean>;
|
|
13010
12936
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PieChart3DService, never>;
|
|
13011
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
12937
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
13012
12938
|
}
|
|
13013
12939
|
|
|
13014
12940
|
/**
|
|
@@ -13024,7 +12950,7 @@ declare class SmartArt3DService {
|
|
|
13024
12950
|
/** `true` when SmartArt should render via the Three.js scene. */
|
|
13025
12951
|
readonly enabled: _angular_core.WritableSignal<boolean>;
|
|
13026
12952
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SmartArt3DService, never>;
|
|
13027
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
12953
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
13028
12954
|
}
|
|
13029
12955
|
|
|
13030
12956
|
/**
|
|
@@ -13040,7 +12966,7 @@ declare class SurfaceChart3DService {
|
|
|
13040
12966
|
/** `true` when a surface chart should render via the Three.js scene. */
|
|
13041
12967
|
readonly enabled: _angular_core.WritableSignal<boolean>;
|
|
13042
12968
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SurfaceChart3DService, never>;
|
|
13043
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
12969
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
13044
12970
|
}
|
|
13045
12971
|
|
|
13046
12972
|
/** A selected table cell (and optional Shift+Click range) on one table element. */
|
|
@@ -13082,7 +13008,7 @@ declare class TableSelectionService {
|
|
|
13082
13008
|
/** Clear the selection when it belongs to `elementId` (e.g. element deleted). */
|
|
13083
13009
|
clearFor(elementId: string): void;
|
|
13084
13010
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableSelectionService, never>;
|
|
13085
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
13011
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
13086
13012
|
}
|
|
13087
13013
|
|
|
13088
13014
|
declare class ViewerCompareService {
|
|
@@ -13105,7 +13031,7 @@ declare class ViewerCompareService {
|
|
|
13105
13031
|
acceptAll(): void;
|
|
13106
13032
|
private diffAt;
|
|
13107
13033
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerCompareService, never>;
|
|
13108
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
13034
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
13109
13035
|
}
|
|
13110
13036
|
|
|
13111
13037
|
/** Live host accessors the shortcut handler consults. */
|
|
@@ -13153,7 +13079,7 @@ declare class ViewerKeyboardService {
|
|
|
13153
13079
|
*/
|
|
13154
13080
|
private handleEscape;
|
|
13155
13081
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerKeyboardService, never>;
|
|
13156
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
13082
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
13157
13083
|
}
|
|
13158
13084
|
|
|
13159
13085
|
/** Live host accessors the gesture recogniser consults. */
|
|
@@ -13177,7 +13103,7 @@ declare class ViewerTouchGesturesService {
|
|
|
13177
13103
|
*/
|
|
13178
13104
|
setup(mainEl: () => HTMLElement | undefined, host: TouchGesturesHost): void;
|
|
13179
13105
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewerTouchGesturesService, never>;
|
|
13180
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
13106
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
13181
13107
|
}
|
|
13182
13108
|
|
|
13183
13109
|
/**
|
|
@@ -13219,7 +13145,7 @@ declare class ZoomTargetService {
|
|
|
13219
13145
|
*/
|
|
13220
13146
|
lookup(targetSlideIndex: number): ZoomTargetInfo | undefined;
|
|
13221
13147
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZoomTargetService, never>;
|
|
13222
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
13148
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
13223
13149
|
}
|
|
13224
13150
|
|
|
13225
13151
|
/**
|
|
@@ -13319,7 +13245,7 @@ declare class AiChatService {
|
|
|
13319
13245
|
private reportNewToolTargets;
|
|
13320
13246
|
private refreshProposals;
|
|
13321
13247
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AiChatService, never>;
|
|
13322
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
13248
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
13323
13249
|
}
|
|
13324
13250
|
|
|
13325
13251
|
interface AiHistoryInitDeps {
|
|
@@ -13350,7 +13276,7 @@ declare class AiHistoryService implements OnDestroy {
|
|
|
13350
13276
|
clearCurrent(): void;
|
|
13351
13277
|
private syncActiveId;
|
|
13352
13278
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AiHistoryService, never>;
|
|
13353
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
13279
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
13354
13280
|
}
|
|
13355
13281
|
|
|
13356
13282
|
declare class AiChatPanelComponent {
|
|
@@ -13775,6 +13701,7 @@ declare class RibbonComponent {
|
|
|
13775
13701
|
readonly save: _angular_core.OutputEmitterRef<void>;
|
|
13776
13702
|
readonly savePpsx: _angular_core.OutputEmitterRef<void>;
|
|
13777
13703
|
readonly savePptm: _angular_core.OutputEmitterRef<void>;
|
|
13704
|
+
readonly savePpt: _angular_core.OutputEmitterRef<void>;
|
|
13778
13705
|
/** Emitted when the user toggles the slides panel from the top bar. */
|
|
13779
13706
|
readonly toggleSidebar: _angular_core.OutputEmitterRef<void>;
|
|
13780
13707
|
/** Emitted when the user clicks the AI assistant Sparkles toggle. */
|
|
@@ -13810,6 +13737,8 @@ declare class RibbonComponent {
|
|
|
13810
13737
|
readonly replace: _angular_core.OutputEmitterRef<void>;
|
|
13811
13738
|
/** Design/Transitions/Animations tabs want the right-docked Inspector panel opened. */
|
|
13812
13739
|
readonly toggleInspector: _angular_core.OutputEmitterRef<void>;
|
|
13740
|
+
/** Animations tab "Animation Panel": open the Inspector with its Animation section expanded. */
|
|
13741
|
+
readonly openAnimationPanel: _angular_core.OutputEmitterRef<void>;
|
|
13813
13742
|
/** Draw tab tool state changed (tool/colour/width); UI-only, no ink back-end yet. */
|
|
13814
13743
|
readonly drawToolChange: _angular_core.OutputEmitterRef<DrawToolState>;
|
|
13815
13744
|
/** Emitted when the user clicks "Browse Themes" in the Design tab. */
|
|
@@ -13873,7 +13802,7 @@ declare class RibbonComponent {
|
|
|
13873
13802
|
/** Forward the Review proofing toggle to the viewer-owned live state. */
|
|
13874
13803
|
protected setSpellCheck(enabled: boolean): void;
|
|
13875
13804
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonComponent, never>;
|
|
13876
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonComponent, "pptx-ribbon", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "zoomPercent": { "alias": "zoomPercent"; "required": false; "isSignal": true; }; "formatPainterActive": { "alias": "formatPainterActive"; "required": false; "isSignal": true; }; "canActivateFormatPainter": { "alias": "canActivateFormatPainter"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "hasMacros": { "alias": "hasMacros"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showRulers": { "alias": "showRulers"; "required": false; "isSignal": true; }; "showGuides": { "alias": "showGuides"; "required": false; "isSignal": true; }; "snapToGrid": { "alias": "snapToGrid"; "required": false; "isSignal": true; }; "snapToShape": { "alias": "snapToShape"; "required": false; "isSignal": true; }; "eyedropperActive": { "alias": "eyedropperActive"; "required": false; "isSignal": true; }; "themeGalleryOpen": { "alias": "themeGalleryOpen"; "required": false; "isSignal": true; }; "sidebarCollapsed": { "alias": "sidebarCollapsed"; "required": false; "isSignal": true; }; "inspectorOpen": { "alias": "inspectorOpen"; "required": false; "isSignal": true; }; "commentsOpen": { "alias": "commentsOpen"; "required": false; "isSignal": true; }; "commentCount": { "alias": "commentCount"; "required": false; "isSignal": true; }; "findOpen": { "alias": "findOpen"; "required": false; "isSignal": true; }; "collabConnected": { "alias": "collabConnected"; "required": false; "isSignal": true; }; "connectedCount": { "alias": "connectedCount"; "required": false; "isSignal": true; }; "spellCheckEnabled": { "alias": "spellCheckEnabled"; "required": false; "isSignal": true; }; "showSubtitles": { "alias": "showSubtitles"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; "aiEnabled": { "alias": "aiEnabled"; "required": false; "isSignal": true; }; "aiPanelOpen": { "alias": "aiPanelOpen"; "required": false; "isSignal": true; }; "accountAuth": { "alias": "accountAuth"; "required": false; "isSignal": true; }; "activeSlideHidden": { "alias": "activeSlideHidden"; "required": false; "isSignal": true; }; }, { "prev": "prev"; "next": "next"; "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "zoomReset": "zoomReset"; "find": "find"; "present": "present"; "presenter": "presenter"; "record": "record"; "presentFromBeginning": "presentFromBeginning"; "rehearseTimings": "rehearseTimings"; "toggleSubtitles": "toggleSubtitles"; "openSubtitleSettings": "openSubtitleSettings"; "recordFromBeginning": "recordFromBeginning"; "recordFromCurrent": "recordFromCurrent"; "spellCheckChange": "spellCheckChange"; "share": "share"; "broadcast": "broadcast"; "openFile": "openFile"; "openRecentFile": "openRecentFile"; "createPresentation": "createPresentation"; "save": "save"; "savePpsx": "savePpsx"; "savePptm": "savePptm"; "toggleSidebar": "toggleSidebar"; "toggleAiPanel": "toggleAiPanel"; "signatures": "signatures"; "info": "info"; "print": "print"; "comments": "comments"; "a11y": "a11y"; "shortcuts": "shortcuts"; "versionHistory": "versionHistory"; "passwordProtection": "passwordProtection"; "fontEmbedding": "fontEmbedding"; "link": "link"; "openSorter": "openSorter"; "openReadingView": "openReadingView"; "openOutlineView": "openOutlineView"; "openMasterView": "openMasterView"; "toggleNotes": "toggleNotes"; "toggleFormatPainter": "toggleFormatPainter"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "exportJson": "exportJson"; "copySlideAsImage": "copySlideAsImage"; "replace": "replace"; "toggleInspector": "toggleInspector"; "drawToolChange": "drawToolChange"; "toggleThemeGallery": "toggleThemeGallery"; "editTheme": "editTheme"; "openSlideSize": "openSlideSize"; "toggleGrid": "toggleGrid"; "toggleRulers": "toggleRulers"; "toggleGuides": "toggleGuides"; "toggleSelectionPane": "toggleSelectionPane"; "openCustomShows": "openCustomShows"; "toggleSnapToGrid": "toggleSnapToGrid"; "toggleSnapToShape": "toggleSnapToShape"; "addGuide": "addGuide"; "zoomToFit": "zoomToFit"; "toggleEyedropper": "toggleEyedropper"; "openSmartArtDialog": "openSmartArtDialog"; "openTemplateGallery": "openTemplateGallery"; "openEquationDialog": "openEquationDialog"; "openSetUpSlideShow": "openSetUpSlideShow"; "toggleHideSlide": "toggleHideSlide"; "openCompare": "openCompare"; "openPassword": "openPassword"; "openFontEmbedding": "openFontEmbedding"; "openVersionHistory": "openVersionHistory"; "openShortcuts": "openShortcuts"; "openSettings": "openSettings"; }, never, never, true, never>;
|
|
13805
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonComponent, "pptx-ribbon", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "zoomPercent": { "alias": "zoomPercent"; "required": false; "isSignal": true; }; "formatPainterActive": { "alias": "formatPainterActive"; "required": false; "isSignal": true; }; "canActivateFormatPainter": { "alias": "canActivateFormatPainter"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "hasMacros": { "alias": "hasMacros"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showRulers": { "alias": "showRulers"; "required": false; "isSignal": true; }; "showGuides": { "alias": "showGuides"; "required": false; "isSignal": true; }; "snapToGrid": { "alias": "snapToGrid"; "required": false; "isSignal": true; }; "snapToShape": { "alias": "snapToShape"; "required": false; "isSignal": true; }; "eyedropperActive": { "alias": "eyedropperActive"; "required": false; "isSignal": true; }; "themeGalleryOpen": { "alias": "themeGalleryOpen"; "required": false; "isSignal": true; }; "sidebarCollapsed": { "alias": "sidebarCollapsed"; "required": false; "isSignal": true; }; "inspectorOpen": { "alias": "inspectorOpen"; "required": false; "isSignal": true; }; "commentsOpen": { "alias": "commentsOpen"; "required": false; "isSignal": true; }; "commentCount": { "alias": "commentCount"; "required": false; "isSignal": true; }; "findOpen": { "alias": "findOpen"; "required": false; "isSignal": true; }; "collabConnected": { "alias": "collabConnected"; "required": false; "isSignal": true; }; "connectedCount": { "alias": "connectedCount"; "required": false; "isSignal": true; }; "spellCheckEnabled": { "alias": "spellCheckEnabled"; "required": false; "isSignal": true; }; "showSubtitles": { "alias": "showSubtitles"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; "aiEnabled": { "alias": "aiEnabled"; "required": false; "isSignal": true; }; "aiPanelOpen": { "alias": "aiPanelOpen"; "required": false; "isSignal": true; }; "accountAuth": { "alias": "accountAuth"; "required": false; "isSignal": true; }; "activeSlideHidden": { "alias": "activeSlideHidden"; "required": false; "isSignal": true; }; }, { "prev": "prev"; "next": "next"; "zoomIn": "zoomIn"; "zoomOut": "zoomOut"; "zoomReset": "zoomReset"; "find": "find"; "present": "present"; "presenter": "presenter"; "record": "record"; "presentFromBeginning": "presentFromBeginning"; "rehearseTimings": "rehearseTimings"; "toggleSubtitles": "toggleSubtitles"; "openSubtitleSettings": "openSubtitleSettings"; "recordFromBeginning": "recordFromBeginning"; "recordFromCurrent": "recordFromCurrent"; "spellCheckChange": "spellCheckChange"; "share": "share"; "broadcast": "broadcast"; "openFile": "openFile"; "openRecentFile": "openRecentFile"; "createPresentation": "createPresentation"; "save": "save"; "savePpsx": "savePpsx"; "savePptm": "savePptm"; "savePpt": "savePpt"; "toggleSidebar": "toggleSidebar"; "toggleAiPanel": "toggleAiPanel"; "signatures": "signatures"; "info": "info"; "print": "print"; "comments": "comments"; "a11y": "a11y"; "shortcuts": "shortcuts"; "versionHistory": "versionHistory"; "passwordProtection": "passwordProtection"; "fontEmbedding": "fontEmbedding"; "link": "link"; "openSorter": "openSorter"; "openReadingView": "openReadingView"; "openOutlineView": "openOutlineView"; "openMasterView": "openMasterView"; "toggleNotes": "toggleNotes"; "toggleFormatPainter": "toggleFormatPainter"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "exportJson": "exportJson"; "copySlideAsImage": "copySlideAsImage"; "replace": "replace"; "toggleInspector": "toggleInspector"; "openAnimationPanel": "openAnimationPanel"; "drawToolChange": "drawToolChange"; "toggleThemeGallery": "toggleThemeGallery"; "editTheme": "editTheme"; "openSlideSize": "openSlideSize"; "toggleGrid": "toggleGrid"; "toggleRulers": "toggleRulers"; "toggleGuides": "toggleGuides"; "toggleSelectionPane": "toggleSelectionPane"; "openCustomShows": "openCustomShows"; "toggleSnapToGrid": "toggleSnapToGrid"; "toggleSnapToShape": "toggleSnapToShape"; "addGuide": "addGuide"; "zoomToFit": "zoomToFit"; "toggleEyedropper": "toggleEyedropper"; "openSmartArtDialog": "openSmartArtDialog"; "openTemplateGallery": "openTemplateGallery"; "openEquationDialog": "openEquationDialog"; "openSetUpSlideShow": "openSetUpSlideShow"; "toggleHideSlide": "toggleHideSlide"; "openCompare": "openCompare"; "openPassword": "openPassword"; "openFontEmbedding": "openFontEmbedding"; "openVersionHistory": "openVersionHistory"; "openShortcuts": "openShortcuts"; "openSettings": "openSettings"; }, never, never, true, never>;
|
|
13877
13806
|
}
|
|
13878
13807
|
|
|
13879
13808
|
/** The eight resize-handle positions around a selection box. */
|
|
@@ -13914,6 +13843,14 @@ declare class InkDrawingService {
|
|
|
13914
13843
|
readonly active: _angular_core.WritableSignal<boolean>;
|
|
13915
13844
|
/** SVG path `d` for the live stroke preview (updated on every pointer move). */
|
|
13916
13845
|
readonly liveInkPath: _angular_core.WritableSignal<string>;
|
|
13846
|
+
/**
|
|
13847
|
+
* The in-progress stroke's render view (plain path, pressure circles, or
|
|
13848
|
+
* tilt nib marks), from the shared `buildLiveInkStrokeView`: the same
|
|
13849
|
+
* decision `InkRendererComponent` makes for a committed stroke, fed the
|
|
13850
|
+
* SAME accumulated `points` {@link handlePointerUp} hands to
|
|
13851
|
+
* `strokeToInkElement`. `null` while idle.
|
|
13852
|
+
*/
|
|
13853
|
+
readonly liveStrokeView: _angular_core.WritableSignal<InkStrokeView | null>;
|
|
13917
13854
|
/** Accumulated points for the stroke currently being drawn. */
|
|
13918
13855
|
private points;
|
|
13919
13856
|
private host;
|
|
@@ -13922,6 +13859,15 @@ declare class InkDrawingService {
|
|
|
13922
13859
|
private requireHost;
|
|
13923
13860
|
/** True when a draw tool (anything but 'select') should own the current gesture. */
|
|
13924
13861
|
isDrawToolActive(): boolean;
|
|
13862
|
+
/** Narrow the ribbon's `DrawTool` to the pen/highlighter/freeform union `strokeToInkElement`/`buildLiveInkStrokeView` accept. */
|
|
13863
|
+
private resolveTool;
|
|
13864
|
+
/**
|
|
13865
|
+
* Recompute `liveInkPath`/`liveStrokeView` from the currently accumulated
|
|
13866
|
+
* points. Called after every pointerdown/pointermove so the preview shows
|
|
13867
|
+
* the same calligraphic-nib / pressure-circle decision a committed stroke
|
|
13868
|
+
* gets, while the pointer is still down.
|
|
13869
|
+
*/
|
|
13870
|
+
private syncLivePreview;
|
|
13925
13871
|
/**
|
|
13926
13872
|
* Handle a stage pointerdown while a draw tool is active: eraser hit-tests
|
|
13927
13873
|
* against ink elements (topmost wins); pen/highlighter/freeform begin a new
|
|
@@ -13933,7 +13879,7 @@ declare class InkDrawingService {
|
|
|
13933
13879
|
/** Finalise the in-progress stroke and emit it. Returns false when no stroke was active (caller should fall through). */
|
|
13934
13880
|
handlePointerUp(): boolean;
|
|
13935
13881
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<InkDrawingService, never>;
|
|
13936
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
13882
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
13937
13883
|
}
|
|
13938
13884
|
|
|
13939
13885
|
/** A user-created guide line dragged from a ruler strip. */
|
|
@@ -13994,7 +13940,7 @@ declare class RulerGuidesService {
|
|
|
13994
13940
|
/** End the guide drag. Returns false when no guide drag was in progress (caller should fall through). */
|
|
13995
13941
|
handlePointerUp(): boolean;
|
|
13996
13942
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RulerGuidesService, never>;
|
|
13997
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
13943
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
13998
13944
|
}
|
|
13999
13945
|
|
|
14000
13946
|
/**
|
|
@@ -14569,349 +14515,98 @@ declare class SlideCanvasComponent implements SlideContext {
|
|
|
14569
14515
|
} | null>;
|
|
14570
14516
|
/** Selected element extent (scaled px) highlighted on the vertical strip. */
|
|
14571
14517
|
readonly vRulerHighlight: _angular_core.Signal<{
|
|
14572
|
-
start: number;
|
|
14573
|
-
span: number;
|
|
14574
|
-
} | null>;
|
|
14575
|
-
readonly stageStyle: _angular_core.Signal<StyleMap>;
|
|
14576
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlideCanvasComponent, never>;
|
|
14577
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlideCanvasComponent, "pptx-slide-canvas", never, { "slide": { "alias": "slide"; "required": false; "isSignal": true; }; "canvasSize": { "alias": "canvasSize"; "required": true; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "zoom": { "alias": "zoom"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showRulers": { "alias": "showRulers"; "required": false; "isSignal": true; }; "rulerUnit": { "alias": "rulerUnit"; "required": false; "isSignal": true; }; "showGuides": { "alias": "showGuides"; "required": false; "isSignal": true; }; "snapToGrid": { "alias": "snapToGrid"; "required": false; "isSignal": true; }; "gridSpacing": { "alias": "gridSpacing"; "required": false; "isSignal": true; }; "snapToShape": { "alias": "snapToShape"; "required": false; "isSignal": true; }; "guideCommand": { "alias": "guideCommand"; "required": false; "isSignal": true; }; "spellCheck": { "alias": "spellCheck"; "required": false; "isSignal": true; }; "snapToGuides": { "alias": "snapToGuides"; "required": false; "isSignal": true; }; "autoFit": { "alias": "autoFit"; "required": false; "isSignal": true; }; "transparentBackground": { "alias": "transparentBackground"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "exposeElementIds": { "alias": "exposeElementIds"; "required": false; "isSignal": true; }; "presenting": { "alias": "presenting"; "required": false; "isSignal": true; }; "selectedIds": { "alias": "selectedIds"; "required": false; "isSignal": true; }; "editingId": { "alias": "editingId"; "required": false; "isSignal": true; }; "editTemplateMode": { "alias": "editTemplateMode"; "required": false; "isSignal": true; }; "templateElements": { "alias": "templateElements"; "required": false; "isSignal": true; }; "aiHighlights": { "alias": "aiHighlights"; "required": false; "isSignal": true; }; "aiActive": { "alias": "aiActive"; "required": false; "isSignal": true; }; "aiActiveSlideIndex": { "alias": "aiActiveSlideIndex"; "required": false; "isSignal": true; }; "aiChangeBatch": { "alias": "aiChangeBatch"; "required": false; "isSignal": true; }; "aiPickMode": { "alias": "aiPickMode"; "required": false; "isSignal": true; }; "drawTool": { "alias": "drawTool"; "required": false; "isSignal": true; }; "drawColor": { "alias": "drawColor"; "required": false; "isSignal": true; }; "drawWidth": { "alias": "drawWidth"; "required": false; "isSignal": true; }; }, { "elementSelect": "elementSelect"; "backgroundClick": "backgroundClick"; "transformStart": "transformStart"; "transformUpdate": "transformUpdate"; "transformEnd": "transformEnd"; "adjustUpdate": "adjustUpdate"; "connectorEndpointUpdate": "connectorEndpointUpdate"; "contextMenu": "contextMenu"; "textEditStart": "textEditStart"; "textCommit": "textCommit"; "textInput": "textInput"; "textCancel": "textCancel"; "textFormat": "textFormat"; "rotateUpdate": "rotateUpdate"; "marqueeSelect": "marqueeSelect"; "inkStrokeComplete": "inkStrokeComplete"; "eraserHit": "eraserHit"; "cellCommit": "cellCommit"; "tableChange": "tableChange"; }, never, ["*"], true, never>;
|
|
14578
|
-
}
|
|
14579
|
-
|
|
14580
|
-
/**
|
|
14581
|
-
* Renderer-injected shape-effect definitions that need a companion DOM node
|
|
14582
|
-
* (a soft-edge `<filter>` def, a DAG fill-overlay tint layer), plus the helper
|
|
14583
|
-
* that strips dangling `url(#…)` filter references.
|
|
14584
|
-
*
|
|
14585
|
-
* Kept out of `element-style.ts` so that module stays focused on producing the
|
|
14586
|
-
* base `[ngStyle]` maps. Mirrors the Vue/Svelte `ShapeEffectOverlay` split.
|
|
14587
|
-
*/
|
|
14588
|
-
|
|
14589
|
-
/** Injectable soft-edge `<filter>` descriptor (id + feather radius in px). */
|
|
14590
|
-
interface SoftEdgeFilterDef {
|
|
14591
|
-
id: string;
|
|
14592
|
-
radius: number;
|
|
14593
|
-
}
|
|
14594
|
-
/**
|
|
14595
|
-
* `a:reflection` mirrored-sibling descriptor: the wrapper style (position,
|
|
14596
|
-
* mirror transform, mask-image fade - see shared's `getReflectionWrapperStyle`)
|
|
14597
|
-
* plus the mirrored CONTENT to paint inside it. Cross-browser, unlike the
|
|
14598
|
-
* `-webkit-box-reflect` `element-style.ts` used to set (Firefox never
|
|
14599
|
-
* implemented that property, so reflections were invisible there entirely).
|
|
14600
|
-
*/
|
|
14601
|
-
interface ReflectionOverlay {
|
|
14602
|
-
wrapperStyle: ReflectionWrapperStyle;
|
|
14603
|
-
/** Set for a picture/image element: its actual photo, cloned. */
|
|
14604
|
-
imgSrc?: string;
|
|
14605
|
-
imgFitStyle?: Record<string, unknown>;
|
|
14606
|
-
/** Set for everything else: the resolved fill (colour/gradient/pattern/image). */
|
|
14607
|
-
fill?: ComputedFillStyle;
|
|
14608
|
-
}
|
|
14609
|
-
|
|
14610
|
-
/**
|
|
14611
|
-
* Angular's paragraph view model, built from the SHARED `buildParagraphs`.
|
|
14612
|
-
*
|
|
14613
|
-
* This module replaces the ~190-line hand-ported paragraph builder that used to
|
|
14614
|
-
* live inside `element-renderer.component.ts` (self-documented as "hand-ported
|
|
14615
|
-
* from `buildParagraphs`"). That copy had already drifted: it applied a
|
|
14616
|
-
* paragraph's bullet unconditionally, with none of shared's "suppress the
|
|
14617
|
-
* bullet on a paragraph with no visible text" rule, so a whitespace-only or
|
|
14618
|
-
* marker-only paragraph painted a stray bullet here and nothing elsewhere.
|
|
14619
|
-
*
|
|
14620
|
-
* It also replaces the segment walk that used to follow the shared call. Runs
|
|
14621
|
-
* carry their own `hyperlink` and `equation` now (see `text-run-meta`), so the
|
|
14622
|
-
* walk that re-attached those two facts by matching each run's characters back
|
|
14623
|
-
* onto the segment it came from is gone, and Vue, Svelte and Vanilla render
|
|
14624
|
-
* both from the same model instead of dropping them.
|
|
14625
|
-
*
|
|
14626
|
-
* What is left here is a pure rename: shared's neutral field names onto the
|
|
14627
|
-
* ones this binding's template already binds.
|
|
14628
|
-
*/
|
|
14629
|
-
/** A single rendered run inside an Angular paragraph. */
|
|
14630
|
-
interface TextRun {
|
|
14631
|
-
text: string;
|
|
14632
|
-
style: StyleMap;
|
|
14633
|
-
/** Safe `href` when this run carries a renderable hyperlink. */
|
|
14634
|
-
href?: string;
|
|
14635
|
-
/** Hyperlink tooltip / title text. */
|
|
14636
|
-
tooltip?: string;
|
|
14637
|
-
/** `<a target>`, from `a:hlinkClick/@tgtFrame` when authored, else `_blank`. */
|
|
14638
|
-
target?: string;
|
|
14639
|
-
/** `<a rel>` paired with {@link target}. */
|
|
14640
|
-
rel?: string;
|
|
14641
|
-
/** Parsed OMML for an inline equation run (rendered as MathML). */
|
|
14642
|
-
equationXml?: Record<string, unknown>;
|
|
14643
|
-
/** Optional equation number for numbered equations. */
|
|
14644
|
-
equationNumber?: string;
|
|
14645
|
-
/** `a:ruby` phonetic guide (furigana / pinyin) rendered above this run. */
|
|
14646
|
-
rubyText?: string;
|
|
14647
|
-
/** `[ngStyle]` map for the `<rt>` annotation (size / family / alignment). */
|
|
14648
|
-
rubyStyle?: StyleMap;
|
|
14649
|
-
/**
|
|
14650
|
-
* Per-script (`a:ea`/`a:cs`/`a:sym`) font-fallback pieces for this run's
|
|
14651
|
-
* text, when it authors a distinct east-Asian / complex-script / symbol
|
|
14652
|
-
* font the text actually needs. The template renders these as nested spans
|
|
14653
|
-
* instead of `text`. Absent for the common single-font case.
|
|
14654
|
-
*/
|
|
14655
|
-
scriptRuns?: ScriptFontPiece[];
|
|
14656
|
-
/**
|
|
14657
|
-
* Measured tab-stop layout for this run's text, present when it contains an
|
|
14658
|
-
* authored `\t` and the paragraph declares explicit tab stops. The template
|
|
14659
|
-
* renders these lines/pieces instead of `text`, honouring per-stop
|
|
14660
|
-
* alignment and leader glyphs a plain CSS `tab-size` cannot express.
|
|
14661
|
-
*/
|
|
14662
|
-
tabLines?: TabbedLineRun[];
|
|
14663
|
-
/**
|
|
14664
|
-
* `a:rPr/@u="words"` word/gap pieces of a RUBY run's base text (same shape
|
|
14665
|
-
* as `scriptRuns`, rendered the same way in place of `text`): the base text
|
|
14666
|
-
* stays one run so the annotation still reads over the whole thing, while
|
|
14667
|
-
* only the word entries carry the underline. Absent otherwise.
|
|
14668
|
-
*/
|
|
14669
|
-
underlineWordPieces?: ScriptFontPiece[];
|
|
14670
|
-
/**
|
|
14671
|
-
* `a:reflection` mirrored-sibling wrapper style for this run, or `undefined`
|
|
14672
|
-
* for the common no-reflection case - the text-run counterpart of a
|
|
14673
|
-
* shape/picture's `ReflectionOverlay` (`element-effect-defs.ts`). The
|
|
14674
|
-
* template renders a sibling `<span>` positioned/masked by this style,
|
|
14675
|
-
* painted with the same text, instead of the old `-webkit-box-reflect`
|
|
14676
|
-
* (Firefox never implemented that property).
|
|
14677
|
-
*/
|
|
14678
|
-
reflection?: ReflectionWrapperStyle;
|
|
14679
|
-
}
|
|
14680
|
-
/** A rendered paragraph: runs plus bullet + indent + spacing metadata. */
|
|
14681
|
-
interface Paragraph {
|
|
14682
|
-
runs: TextRun[];
|
|
14683
|
-
/** Bullet / number marker text, when this paragraph is a list item. */
|
|
14684
|
-
bulletMarker?: string;
|
|
14685
|
-
/** Resolved picture marker, or metadata for its accessible glyph fallback. */
|
|
14686
|
-
bulletPicture?: PictureBulletMarker;
|
|
14687
|
-
/** `[ngStyle]` map for the bullet marker (colour / font / hang width). */
|
|
14688
|
-
bulletStyle: StyleMap;
|
|
14689
|
-
/** Left indent in px (hanging-indent layout). */
|
|
14690
|
-
indentPx: number;
|
|
14691
|
-
/** `text-indent` in px (first-line / hanging indent), when authored. */
|
|
14692
|
-
textIndentPx?: number;
|
|
14693
|
-
/**
|
|
14694
|
-
* True when the paragraph has no runs and no bullet: an authored blank line
|
|
14695
|
-
* (`<a:p><a:endParaRPr/></a:p>`), which PowerPoint gives a full line box.
|
|
14696
|
-
* The template renders a `<br>` for it so the gap survives (issue #131).
|
|
14697
|
-
*/
|
|
14698
|
-
isEmpty?: boolean;
|
|
14699
|
-
/** Per-paragraph `line-height` from this paragraph's own `a:lnSpc`. */
|
|
14700
|
-
lineHeight?: number | string;
|
|
14701
|
-
/** `margin-top` in px from `a:spcBef` (space before), when overridden. */
|
|
14702
|
-
spaceBeforePx?: number;
|
|
14703
|
-
/** `margin-bottom` in px from `a:spcAft` (space after), when overridden. */
|
|
14704
|
-
spaceAfterPx?: number;
|
|
14705
|
-
/** `font-size` in px re-basing the paragraph's CSS line boxes onto its runs. */
|
|
14706
|
-
strutFontSizePx?: number;
|
|
14707
|
-
/**
|
|
14708
|
-
* This paragraph's own `text-align` / BiDi `direction` / kinsoku line-break
|
|
14709
|
-
* rules, when it overrides the body's. Bound with `[ngStyle]` under the
|
|
14710
|
-
* explicit geometry bindings, which win.
|
|
14711
|
-
*/
|
|
14712
|
-
paragraphStyle?: StyleMap;
|
|
14713
|
-
}
|
|
14714
|
-
|
|
14715
|
-
/**
|
|
14716
|
-
* Text-warp (WordArt) descriptor resolver for the Angular viewer.
|
|
14717
|
-
*
|
|
14718
|
-
* Angular port of:
|
|
14719
|
-
* packages/react/src/viewer/utils/text-warp-classifier.ts
|
|
14720
|
-
* packages/react/src/viewer/utils/text-warp-css.tsx
|
|
14721
|
-
* packages/react/src/viewer/utils/warp-text-renderer.tsx (descriptor shape)
|
|
14722
|
-
*
|
|
14723
|
-
* `getTextWarp(element)` resolves an element's OOXML `prstTxWarp` preset into a
|
|
14724
|
-
* `TextWarpDef` that the Angular template can consume without any React/HTML
|
|
14725
|
-
* string injection. The descriptor selects one of two rendering strategies:
|
|
14726
|
-
*
|
|
14727
|
-
* - `'path'` : SVG `<textPath>` along a curved/arc/circle path.
|
|
14728
|
-
* The `pathLines` array contains one entry per paragraph with a
|
|
14729
|
-
* pre-computed SVG `d` attribute. The template renders an inline
|
|
14730
|
-
* `<svg>` with `<defs><path>` + `<text><textPath href>`.
|
|
14731
|
-
*
|
|
14732
|
-
* - `'css'` : A whole-block CSS transform approximation. The template
|
|
14733
|
-
* applies `cssTransform` and `cssTransformOrigin` to the
|
|
14734
|
-
* existing `div.pptx-ng-text` wrapper (or a parent div) via
|
|
14735
|
-
* `[ngStyle]`. No SVG required.
|
|
14736
|
-
*
|
|
14737
|
-
* Presets classified as `'none'` (textNoShape, textPlain, unknown) return
|
|
14738
|
-
* `undefined` so callers can skip extra rendering without an allowlist check.
|
|
14739
|
-
*/
|
|
14740
|
-
|
|
14741
|
-
/** The four rendering strategy families. */
|
|
14742
|
-
type WarpCategory = WarpCategory$1;
|
|
14743
|
-
/**
|
|
14744
|
-
* Classify a warp preset into a rendering strategy category.
|
|
14745
|
-
*
|
|
14746
|
-
* Returns `'none'` for unknown or empty presets so callers can safely
|
|
14747
|
-
* skip rendering without an explicit allowlist check. Thin alias for the
|
|
14748
|
-
* shared `classifyTextWarp` helper.
|
|
14749
|
-
*/
|
|
14750
|
-
declare const getWarpCategory: (preset: string | undefined) => WarpCategory;
|
|
14751
|
-
|
|
14752
|
-
/**
|
|
14753
|
-
* A single pre-computed SVG path line for one text paragraph.
|
|
14754
|
-
*
|
|
14755
|
-
* The template renders this as:
|
|
14756
|
-
* `<path [id]="pathId" [attr.d]="d" fill="none" />`
|
|
14757
|
-
* inside `<defs>`, then references it with `<textPath [attr.href]="'#'+pathId">`.
|
|
14758
|
-
*/
|
|
14759
|
-
interface WarpPathLine {
|
|
14760
|
-
/** Unique DOM id for this `<path>` element (safe to use as `href` fragment). */
|
|
14761
|
-
pathId: string;
|
|
14762
|
-
/** SVG path data (`d` attribute). */
|
|
14763
|
-
d: string;
|
|
14764
|
-
/** The text segments that flow along this path. */
|
|
14765
|
-
segments: TextSegment[];
|
|
14518
|
+
start: number;
|
|
14519
|
+
span: number;
|
|
14520
|
+
} | null>;
|
|
14521
|
+
readonly stageStyle: _angular_core.Signal<StyleMap>;
|
|
14522
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlideCanvasComponent, never>;
|
|
14523
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SlideCanvasComponent, "pptx-slide-canvas", never, { "slide": { "alias": "slide"; "required": false; "isSignal": true; }; "canvasSize": { "alias": "canvasSize"; "required": true; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "zoom": { "alias": "zoom"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "showGrid": { "alias": "showGrid"; "required": false; "isSignal": true; }; "showRulers": { "alias": "showRulers"; "required": false; "isSignal": true; }; "rulerUnit": { "alias": "rulerUnit"; "required": false; "isSignal": true; }; "showGuides": { "alias": "showGuides"; "required": false; "isSignal": true; }; "snapToGrid": { "alias": "snapToGrid"; "required": false; "isSignal": true; }; "gridSpacing": { "alias": "gridSpacing"; "required": false; "isSignal": true; }; "snapToShape": { "alias": "snapToShape"; "required": false; "isSignal": true; }; "guideCommand": { "alias": "guideCommand"; "required": false; "isSignal": true; }; "spellCheck": { "alias": "spellCheck"; "required": false; "isSignal": true; }; "snapToGuides": { "alias": "snapToGuides"; "required": false; "isSignal": true; }; "autoFit": { "alias": "autoFit"; "required": false; "isSignal": true; }; "transparentBackground": { "alias": "transparentBackground"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "exposeElementIds": { "alias": "exposeElementIds"; "required": false; "isSignal": true; }; "presenting": { "alias": "presenting"; "required": false; "isSignal": true; }; "selectedIds": { "alias": "selectedIds"; "required": false; "isSignal": true; }; "editingId": { "alias": "editingId"; "required": false; "isSignal": true; }; "editTemplateMode": { "alias": "editTemplateMode"; "required": false; "isSignal": true; }; "templateElements": { "alias": "templateElements"; "required": false; "isSignal": true; }; "aiHighlights": { "alias": "aiHighlights"; "required": false; "isSignal": true; }; "aiActive": { "alias": "aiActive"; "required": false; "isSignal": true; }; "aiActiveSlideIndex": { "alias": "aiActiveSlideIndex"; "required": false; "isSignal": true; }; "aiChangeBatch": { "alias": "aiChangeBatch"; "required": false; "isSignal": true; }; "aiPickMode": { "alias": "aiPickMode"; "required": false; "isSignal": true; }; "drawTool": { "alias": "drawTool"; "required": false; "isSignal": true; }; "drawColor": { "alias": "drawColor"; "required": false; "isSignal": true; }; "drawWidth": { "alias": "drawWidth"; "required": false; "isSignal": true; }; }, { "elementSelect": "elementSelect"; "backgroundClick": "backgroundClick"; "transformStart": "transformStart"; "transformUpdate": "transformUpdate"; "transformEnd": "transformEnd"; "adjustUpdate": "adjustUpdate"; "connectorEndpointUpdate": "connectorEndpointUpdate"; "contextMenu": "contextMenu"; "textEditStart": "textEditStart"; "textCommit": "textCommit"; "textInput": "textInput"; "textCancel": "textCancel"; "textFormat": "textFormat"; "rotateUpdate": "rotateUpdate"; "marqueeSelect": "marqueeSelect"; "inkStrokeComplete": "inkStrokeComplete"; "eraserHit": "eraserHit"; "cellCommit": "cellCommit"; "tableChange": "tableChange"; }, never, ["*"], true, never>;
|
|
14766
14524
|
}
|
|
14525
|
+
|
|
14767
14526
|
/**
|
|
14768
|
-
*
|
|
14527
|
+
* Renderer-injected shape-effect definitions that need a companion DOM node
|
|
14528
|
+
* (a soft-edge `<filter>` def, a DAG fill-overlay tint layer), plus the helper
|
|
14529
|
+
* that strips dangling `url(#…)` filter references.
|
|
14769
14530
|
*
|
|
14770
|
-
*
|
|
14771
|
-
*
|
|
14772
|
-
* `<text><textPath href="#pathId">` on each path.
|
|
14531
|
+
* Kept out of `element-style.ts` so that module stays focused on producing the
|
|
14532
|
+
* base `[ngStyle]` maps. Mirrors the Vue/Svelte `ShapeEffectOverlay` split.
|
|
14773
14533
|
*/
|
|
14774
|
-
|
|
14775
|
-
|
|
14776
|
-
|
|
14777
|
-
|
|
14778
|
-
|
|
14779
|
-
readonly pathLines: WarpPathLine[];
|
|
14780
|
-
/** Element pixel width (for `<svg width>`). */
|
|
14781
|
-
readonly width: number;
|
|
14782
|
-
/** Element pixel height (for `<svg height>`). */
|
|
14783
|
-
readonly height: number;
|
|
14784
|
-
/** SVG `text-anchor` value derived from paragraph alignment. */
|
|
14785
|
-
readonly textAnchor: 'start' | 'middle' | 'end';
|
|
14786
|
-
/** SVG `<textPath startOffset>` value (e.g. `"0%"`, `"50%"`, `"100%"`). */
|
|
14787
|
-
readonly startOffset: string;
|
|
14788
|
-
/** Base font size in points from the element's text style. */
|
|
14789
|
-
readonly baseFontSize: number;
|
|
14790
|
-
/** Base font family string (already CSS-ready). */
|
|
14791
|
-
readonly baseFontFamily: string;
|
|
14792
|
-
/** Base text fill colour (hex). */
|
|
14793
|
-
readonly baseColor: string;
|
|
14534
|
+
|
|
14535
|
+
/** Injectable soft-edge `<filter>` descriptor (id + feather radius in px). */
|
|
14536
|
+
interface SoftEdgeFilterDef {
|
|
14537
|
+
id: string;
|
|
14538
|
+
radius: number;
|
|
14794
14539
|
}
|
|
14795
14540
|
/**
|
|
14796
|
-
*
|
|
14541
|
+
* `a:reflection` mirrored-sibling wrapper style descriptor (position, mirror
|
|
14542
|
+
* transform, mask-image fade - see shared's `getReflectionWrapperStyle`).
|
|
14543
|
+
* Cross-browser, unlike the `-webkit-box-reflect` `element-style.ts` used to
|
|
14544
|
+
* set (Firefox never implemented that property, so reflections were invisible
|
|
14545
|
+
* there entirely).
|
|
14797
14546
|
*
|
|
14798
|
-
* The
|
|
14799
|
-
* `
|
|
14547
|
+
* The mirrored CONTENT is no longer carried here: `ReflectionMirrorContentComponent`
|
|
14548
|
+
* (`reflection-mirror-content.component.ts`) paints the element's own fill,
|
|
14549
|
+
* outline, text body and - for a group - its children directly from
|
|
14550
|
+
* `element`, rather than this descriptor only ever offering a resolved fill
|
|
14551
|
+
* (or a picture's `<img>` src) to paint a flat box with.
|
|
14800
14552
|
*/
|
|
14801
|
-
interface
|
|
14802
|
-
|
|
14803
|
-
/** OOXML preset name (e.g. `'textSlantUp'`). */
|
|
14804
|
-
readonly preset: PptxTextWarpPreset;
|
|
14805
|
-
/** CSS `transform` string (e.g. `"perspective(500px) rotateY(8deg) skewY(-4deg)"`). */
|
|
14806
|
-
readonly cssTransform: string;
|
|
14807
|
-
/** CSS `transform-origin` string (e.g. `"left center"`). */
|
|
14808
|
-
readonly cssTransformOrigin: string;
|
|
14553
|
+
interface ReflectionOverlay {
|
|
14554
|
+
wrapperStyle: ReflectionWrapperStyle;
|
|
14809
14555
|
}
|
|
14810
|
-
/** Union of the two warp rendering strategies. */
|
|
14811
|
-
type TextWarpDef = TextWarpPathDef | TextWarpCssDef;
|
|
14812
|
-
/**
|
|
14813
|
-
* Resolve a `PptxElement`'s text warp preset into a `TextWarpDef` descriptor,
|
|
14814
|
-
* or `undefined` when the element carries no warp (or the preset is `textNoShape` /
|
|
14815
|
-
* `textPlain` / unknown).
|
|
14816
|
-
*
|
|
14817
|
-
* @param element Any `PptxElement`. Elements without text properties always
|
|
14818
|
-
* return `undefined`.
|
|
14819
|
-
* @param fieldContext Optional OOXML field-substitution context. When given,
|
|
14820
|
-
* field runs (slide number, date/time, footer, ...) in the warp
|
|
14821
|
-
* paragraphs are resolved to their display text, mirroring
|
|
14822
|
-
* React's warp-text-renderer.
|
|
14823
|
-
* @returns A `TextWarpDef` with `strategy: 'path'` for SVG textPath warps, or
|
|
14824
|
-
* `strategy: 'css'` for CSS-transform approximations.
|
|
14825
|
-
*/
|
|
14826
|
-
declare function getTextWarp(element: PptxElement, fieldContext?: FieldSubstitutionContext): TextWarpDef | undefined;
|
|
14827
14556
|
|
|
14828
14557
|
/**
|
|
14829
14558
|
* ElementRendererComponent: Angular port of the React `ElementRenderer.tsx`
|
|
14830
|
-
* and the Vue `ElementRenderer.vue`.
|
|
14831
|
-
*
|
|
14832
|
-
*
|
|
14833
|
-
*
|
|
14834
|
-
*
|
|
14835
|
-
*
|
|
14836
|
-
* - `table` → HTML `<table>`
|
|
14837
|
-
* - `smartArt` → SVG drawing-shapes / node-text fallback
|
|
14838
|
-
* - `ink` → SVG ink strokes
|
|
14839
|
-
* - `ole` → embedded-object preview / icon
|
|
14840
|
-
* - `model3d` → interactive three.js scene when the optional
|
|
14841
|
-
* `three` peer is present, else poster / placeholder
|
|
14842
|
-
* - `zoom` → slide/section zoom thumbnail
|
|
14843
|
-
* - `picture` / `image` → `<img>`
|
|
14844
|
-
* - `media` → native `<video>`/`<audio>` playback, poster fallback
|
|
14845
|
-
* - `group` → recursive children (self-referencing selector)
|
|
14846
|
-
* - everything else → labelled placeholder (defensive fallback)
|
|
14559
|
+
* and the Vue `ElementRenderer.vue`. Dispatches by `element().type`:
|
|
14560
|
+
* `connector`/`group` (self-recursive) stay here; `picture`/`image` goes to
|
|
14561
|
+
* `ImageRendererComponent`; `text`/`shape` goes to
|
|
14562
|
+
* `ElementRendererShapeComponent`; everything else goes to
|
|
14563
|
+
* `ElementRendererGraphicsComponent`; an unmatched type falls back to a
|
|
14564
|
+
* labelled placeholder.
|
|
14847
14565
|
*/
|
|
14848
14566
|
declare class ElementRendererComponent {
|
|
14849
14567
|
readonly element: _angular_core.InputSignal<PptxElement>;
|
|
14850
14568
|
readonly mediaDataUrls: _angular_core.InputSignal<Map<string, string>>;
|
|
14851
14569
|
readonly zIndex: _angular_core.InputSignal<number>;
|
|
14852
14570
|
/**
|
|
14853
|
-
* Host opt-in to the Three.js SmartArt renderer
|
|
14854
|
-
* viewer
|
|
14855
|
-
* the viewer subtree (thumbnails, export) default to the SVG renderer.
|
|
14571
|
+
* Host opt-in to the Three.js SmartArt renderer. Optional so renderers used
|
|
14572
|
+
* outside the viewer subtree (thumbnails, export) default to the SVG one.
|
|
14856
14573
|
*/
|
|
14857
14574
|
private readonly smartArt3DService;
|
|
14858
14575
|
/**
|
|
14859
|
-
* Native-animation playback
|
|
14860
|
-
*
|
|
14861
|
-
* the same renderer in the editor / thumbnails / export resolves to `null` and
|
|
14862
|
-
* renders with no animation state. Mirrors the Vue `injectPresentationElementStates`
|
|
14863
|
-
* provide/inject and React's threaded `presentationElementStates` prop.
|
|
14576
|
+
* Native-animation playback, present only inside a running presentation.
|
|
14577
|
+
* Optional so the editor/thumbnails/export render with no animation state.
|
|
14864
14578
|
*/
|
|
14865
14579
|
private readonly playback;
|
|
14866
14580
|
private readonly translate;
|
|
14867
|
-
/**
|
|
14868
|
-
* Optional so this renderer still works outside a `PowerPointViewerComponent`
|
|
14869
|
-
* host (thumbnails, export): a text-run hyperlink click is then never
|
|
14870
|
-
* confirmed, matching the option's own default meaning ("not configured").
|
|
14871
|
-
*/
|
|
14872
|
-
private readonly viewerOpts;
|
|
14873
14581
|
readonly smartArt3D: _angular_core.Signal<boolean>;
|
|
14874
|
-
/**
|
|
14875
|
-
* Whether the Selection Pane has hidden this element. Drives the empty first
|
|
14876
|
-
* `@case` in the template; see the comment there for why nothing is rendered
|
|
14877
|
-
* rather than rendered-and-hidden.
|
|
14878
|
-
*/
|
|
14582
|
+
/** Whether the Selection Pane has hidden this element; see the empty first `@case`. */
|
|
14879
14583
|
readonly isHidden: _angular_core.Signal<boolean>;
|
|
14880
|
-
/** Obstacle rects (
|
|
14584
|
+
/** Obstacle rects (slide coords) for connector A* routing. */
|
|
14881
14585
|
readonly obstacles: _angular_core.InputSignal<readonly RouterRect[]>;
|
|
14882
14586
|
readonly canvasWidth: _angular_core.InputSignal<number>;
|
|
14883
14587
|
readonly canvasHeight: _angular_core.InputSignal<number>;
|
|
14884
14588
|
/**
|
|
14885
14589
|
* When true (default), the element host carries the framework-neutral
|
|
14886
14590
|
* `data-pptx-element="true"` contract attribute (used by selection + the
|
|
14887
|
-
* shared e2e specs). Thumbnail
|
|
14888
|
-
* so they don't pollute the contract selectors, mirroring React
|
|
14889
|
-
* the main editing canvas exposes the element contract (thumbnails use a
|
|
14890
|
-
* separate lightweight renderer).
|
|
14591
|
+
* shared e2e specs). Thumbnail/preview/presentation canvases pass `false`
|
|
14592
|
+
* so they don't pollute the contract selectors, mirroring React.
|
|
14891
14593
|
*/
|
|
14892
14594
|
readonly interactive: _angular_core.InputSignal<boolean>;
|
|
14893
14595
|
/**
|
|
14894
|
-
* Emit the `data-pptx-element` marker even though `interactive` is false
|
|
14895
|
-
*
|
|
14896
|
-
* interaction-locked
|
|
14897
|
-
*
|
|
14898
|
-
* element contract", not "editable right now"), matching the other bindings.
|
|
14596
|
+
* Emit the `data-pptx-element` marker even though `interactive` is false:
|
|
14597
|
+
* the marker means "carries the element contract", not "editable right
|
|
14598
|
+
* now", so an interaction-locked template (master/layout) element still
|
|
14599
|
+
* sets it, matching the other bindings.
|
|
14899
14600
|
*/
|
|
14900
14601
|
readonly marked: _angular_core.InputSignal<boolean>;
|
|
14901
14602
|
/**
|
|
14902
14603
|
* When true (default), the rendered node carries `data-element-id`.
|
|
14903
14604
|
*
|
|
14904
14605
|
* Turned OFF by the miniature surfaces that paint EVERY slide at once
|
|
14905
|
-
* (thumbnail rail,
|
|
14906
|
-
*
|
|
14907
|
-
*
|
|
14908
|
-
*
|
|
14909
|
-
* query resolved the wrong slide. React solved the same hazard by giving
|
|
14910
|
-
* thumbnails a separate `StaticElementRenderer` that stamps no id at all
|
|
14911
|
-
* ("exposing their ids there would put two nodes with the same id in the
|
|
14912
|
-
* document"); this input is Angular's equivalent, since it reuses the live
|
|
14913
|
-
* renderer for its miniatures.
|
|
14914
|
-
*
|
|
14606
|
+
* (thumbnail rail, slide sorter, presenter navigator, ...): those put one
|
|
14607
|
+
* node per element per slide into the document, so without this an id
|
|
14608
|
+
* would resolve to the wrong slide's copy. React's equivalent hazard is
|
|
14609
|
+
* why `StaticElementRenderer` stamps no id at all for its miniatures.
|
|
14915
14610
|
* Distinct from {@link interactive}: the presentation stage is not
|
|
14916
14611
|
* interactive but MUST keep its ids, because the morph engine's generated
|
|
14917
14612
|
* keyframe CSS selects on them.
|
|
@@ -14923,73 +14618,57 @@ declare class ElementRendererComponent {
|
|
|
14923
14618
|
readonly elementMarked: _angular_core.Signal<boolean>;
|
|
14924
14619
|
/**
|
|
14925
14620
|
* `pointer-events: none` while this render is not interactive, mirroring
|
|
14926
|
-
* React's `pointer-events-none`
|
|
14927
|
-
*
|
|
14928
|
-
* `data-pptx-element
|
|
14929
|
-
*
|
|
14930
|
-
*
|
|
14931
|
-
*
|
|
14932
|
-
*
|
|
14933
|
-
* handler's id-based gate did, which kept selection/drag from acting on it
|
|
14934
|
-
* but left the element itself indistinguishable from an interactive one to
|
|
14935
|
-
* anything reading its computed style (e.g. `e2e/template-editing.spec.ts`).
|
|
14621
|
+
* React's `pointer-events-none` class on the same condition. This is the
|
|
14622
|
+
* piece `editTemplateMode` actually depends on: {@link marked} keeps a
|
|
14623
|
+
* locked template element findable via `data-pptx-element`, but only this
|
|
14624
|
+
* stops clicks/drags from reaching it (without it a layout/master shape
|
|
14625
|
+
* stayed fully clickable with `editTemplateMode` off, indistinguishable
|
|
14626
|
+
* from an interactive one to anything reading its computed style, e.g.
|
|
14627
|
+
* `e2e/template-editing.spec.ts`).
|
|
14936
14628
|
*/
|
|
14937
14629
|
readonly rootPointerEvents: _angular_core.Signal<"none" | null>;
|
|
14938
14630
|
/**
|
|
14939
|
-
* True only on the live presentation stage
|
|
14940
|
-
*
|
|
14941
|
-
* children so nested media autoplays too). False everywhere else.
|
|
14631
|
+
* True only on the live presentation stage, so a slide's media autoplays
|
|
14632
|
+
* when it becomes active (and nested group children autoplay too).
|
|
14942
14633
|
*/
|
|
14943
14634
|
readonly presenting: _angular_core.InputSignal<boolean>;
|
|
14944
|
-
/** Whether inline editing (
|
|
14635
|
+
/** Whether inline editing (table-cell text input, etc.) is enabled. */
|
|
14945
14636
|
readonly editable: _angular_core.InputSignal<boolean>;
|
|
14946
14637
|
/**
|
|
14947
14638
|
* OOXML field-substitution context (slide number, date/time, header/footer,
|
|
14948
|
-
* slide title, custom doc properties)
|
|
14949
|
-
*
|
|
14950
|
-
* runs resolve to display text, mirroring React's `fieldContext`.
|
|
14639
|
+
* slide title, custom doc properties), threaded down (incl. to recursive
|
|
14640
|
+
* group children) so field runs resolve to display text.
|
|
14951
14641
|
*/
|
|
14952
14642
|
readonly fieldContext: _angular_core.InputSignal<FieldSubstitutionContext | undefined>;
|
|
14953
14643
|
/**
|
|
14954
14644
|
* The elements of the slide being painted, threaded down (including to
|
|
14955
|
-
* recursive group children) alongside {@link fieldContext}.
|
|
14956
|
-
*
|
|
14957
|
-
*
|
|
14958
|
-
*
|
|
14959
|
-
* which
|
|
14960
|
-
* (taken from its `activeSlide.elements` prop). Left empty by a host that
|
|
14961
|
-
* renders an element outside any slide, in which case a linked box falls back
|
|
14962
|
-
* to its own authored segments.
|
|
14645
|
+
* recursive group children) alongside {@link fieldContext}. Needed only by
|
|
14646
|
+
* `a:linkedTxbx` chains: a text box in a linked chain renders the slice of
|
|
14647
|
+
* the chain's text the preceding boxes could not hold, computable only
|
|
14648
|
+
* from its SIBLINGS. Mirrors React's `slideElements`. Left empty outside
|
|
14649
|
+
* any slide, in which case a linked box falls back to its own segments.
|
|
14963
14650
|
*/
|
|
14964
14651
|
readonly slideElements: _angular_core.InputSignal<readonly PptxElement[]>;
|
|
14965
14652
|
/**
|
|
14966
|
-
* When true, inherited master/layout
|
|
14967
|
-
*
|
|
14968
|
-
*
|
|
14969
|
-
* no effect at all when false, so default rendering is untouched.
|
|
14653
|
+
* When true, inherited master/layout elements get a visual affordance
|
|
14654
|
+
* (amber outline + reduced opacity) signalling they are now editable. No
|
|
14655
|
+
* effect on normal slide elements or when false.
|
|
14970
14656
|
*/
|
|
14971
14657
|
readonly editTemplateMode: _angular_core.InputSignal<boolean>;
|
|
14972
14658
|
/**
|
|
14973
|
-
* The enclosing group's fill (`GroupPptxElement.groupFill`),
|
|
14974
|
-
*
|
|
14975
|
-
* (`fillMode === 'group'`) inherits the group's resolved fill.
|
|
14659
|
+
* The enclosing group's fill (`GroupPptxElement.groupFill`), so a child
|
|
14660
|
+
* painted with `a:grpFill` inherits the group's resolved fill.
|
|
14976
14661
|
*/
|
|
14977
14662
|
readonly parentGroupFill: _angular_core.InputSignal<ShapeStyle | undefined>;
|
|
14978
14663
|
/**
|
|
14979
14664
|
* The element currently open in the element-level inline text editor
|
|
14980
14665
|
* (the `<textarea data-inline-editor>` overlay in `slide-canvas.component`),
|
|
14981
|
-
* or `null
|
|
14982
|
-
*
|
|
14983
|
-
*
|
|
14984
|
-
*
|
|
14985
|
-
* layering the two: without this, this component kept painting the
|
|
14986
|
-
* element's normal text UNDERNEATH the editor overlay, and the editor's
|
|
14987
|
-
* own translucent background let it show through as a duplicate, offset
|
|
14988
|
-
* "text shadow" (issue #182).
|
|
14666
|
+
* or `null`. Mirrors React's `ElementBody.renderBody`, which swaps its
|
|
14667
|
+
* static text render out for the inline editor rather than layering the
|
|
14668
|
+
* two: without this the element's normal text painted UNDERNEATH the
|
|
14669
|
+
* editor overlay, showing through as a duplicate "text shadow" (issue #182).
|
|
14989
14670
|
*/
|
|
14990
14671
|
readonly editingElementId: _angular_core.InputSignal<string | null>;
|
|
14991
|
-
/** This exact element is open in the element-level inline text editor right now. */
|
|
14992
|
-
readonly isBeingInlineEdited: _angular_core.Signal<boolean>;
|
|
14993
14672
|
/** Emitted when a table cell's text edit is committed. */
|
|
14994
14673
|
readonly cellCommit: _angular_core.OutputEmitterRef<{
|
|
14995
14674
|
id: string;
|
|
@@ -15000,137 +14679,55 @@ declare class ElementRendererComponent {
|
|
|
15000
14679
|
id: string;
|
|
15001
14680
|
tableData: PptxTableData;
|
|
15002
14681
|
}>;
|
|
15003
|
-
/** Duotone SVG `<filter>` descriptor
|
|
14682
|
+
/** Duotone SVG `<filter>` descriptor, if any. */
|
|
15004
14683
|
readonly duotoneFilter: _angular_core.Signal<pptx_angular_viewer.DuotoneFilterDef | undefined>;
|
|
15005
14684
|
/**
|
|
15006
|
-
* Soft-edge feather `<filter>` descriptor (id + radius). The template
|
|
15007
|
-
* a matching `<filter>`
|
|
15008
|
-
*
|
|
14685
|
+
* Soft-edge feather `<filter>` descriptor (id + radius). The template
|
|
14686
|
+
* injects a matching `<filter>` def so `filter: url(#soft-edge-<id>)`
|
|
14687
|
+
* resolves. Undefined otherwise.
|
|
15009
14688
|
*/
|
|
15010
14689
|
readonly softEdgeFilter: _angular_core.Signal<SoftEdgeFilterDef | undefined>;
|
|
15011
14690
|
/**
|
|
15012
|
-
*
|
|
15013
|
-
*
|
|
15014
|
-
|
|
15015
|
-
|
|
15016
|
-
* Stroked SVG outline: a gradient / pattern `a:ln`, or a stroke-only ("open")
|
|
15017
|
-
* preset such as `line` or `arc`, neither of which a CSS border can paint.
|
|
15018
|
-
*/
|
|
15019
|
-
readonly gradientOutline: _angular_core.Signal<StrokeOutline | undefined>;
|
|
15020
|
-
/** viewBox in the element's PAINTED box, which the path data is authored in. */
|
|
15021
|
-
readonly outlineViewBox: _angular_core.Signal<string>;
|
|
15022
|
-
/**
|
|
15023
|
-
* Transparent outline hit band for an unfilled, textless shape. Its container
|
|
15024
|
-
* is `pointer-events: none` so clicks fall through to whatever it is drawn
|
|
15025
|
-
* over; this opts the OUTLINE back in (same trick as the connector target).
|
|
15026
|
-
*/
|
|
15027
|
-
readonly hollowHit: _angular_core.Signal<HollowHitOutline | undefined>;
|
|
15028
|
-
readonly fillOverlay: _angular_core.Signal<FillOverlayCss | undefined>;
|
|
15029
|
-
/**
|
|
15030
|
-
* `a:reflection` mirrored-sibling descriptor, or `undefined` when the
|
|
15031
|
-
* element has no reflection. See `element-effect-defs.ts`'s
|
|
15032
|
-
* `getReflectionOverlay`.
|
|
14691
|
+
* `a:reflection` mirrored-sibling descriptor, or `undefined`. Used by the
|
|
14692
|
+
* `group` branch below (a group reflects its whole composited subtree);
|
|
14693
|
+
* `ElementRendererShapeComponent` recomputes its own copy locally instead,
|
|
14694
|
+
* mirroring how `ImageRendererComponent` already does the same.
|
|
15033
14695
|
*/
|
|
15034
14696
|
readonly reflection: _angular_core.Signal<ReflectionOverlay | undefined>;
|
|
15035
|
-
/**
|
|
15036
|
-
* Per-sub-path fill overlay for a multi-sub-path preset or custom geometry,
|
|
15037
|
-
* or `undefined` when a single merged fill is correct (the ordinary case).
|
|
15038
|
-
*/
|
|
15039
|
-
readonly subpathFill: _angular_core.Signal<SubpathFillOverlay | undefined>;
|
|
15040
|
-
/** `viewBox` for the sub-path fill overlay, in its own coordinate space. */
|
|
15041
|
-
readonly subpathFillViewBox: _angular_core.Signal<string | undefined>;
|
|
15042
|
-
/**
|
|
15043
|
-
* Outline ring + slight transparency applied to inherited template
|
|
15044
|
-
* (master/layout) elements while editTemplateMode is on. Empty otherwise, so
|
|
15045
|
-
* normal rendering is never altered.
|
|
15046
|
-
*/
|
|
15047
|
-
readonly templateAffordanceStyle: _angular_core.Signal<StyleMap>;
|
|
15048
14697
|
/**
|
|
15049
14698
|
* This element's native-animation playback state, or `undefined` outside a
|
|
15050
|
-
* running presentation. Drives the staged chart
|
|
15051
|
-
* `p:animClr` fill
|
|
15052
|
-
* connector renderers), mirroring React's per-element `animationState`.
|
|
14699
|
+
* running presentation. Drives the staged chart/SmartArt build reveal and
|
|
14700
|
+
* the `p:animClr` fill/stroke relinquish.
|
|
15053
14701
|
*/
|
|
15054
14702
|
readonly animationState: _angular_core.Signal<ElementAnimationState | undefined>;
|
|
15055
14703
|
/**
|
|
15056
14704
|
* A font-style emphasis effect (Bold Flash, Bold Reveal, Underline, Change
|
|
15057
14705
|
* Font Style/Size) overrides the runs' own inline bold/italic/underline/
|
|
15058
|
-
* size, which plain CSS inheritance cannot reach
|
|
15059
|
-
*
|
|
15060
|
-
*
|
|
15061
|
-
*
|
|
15062
|
-
*
|
|
15063
|
-
* branch of the template below carries on its own root.
|
|
14706
|
+
* size, which plain CSS inheritance cannot reach. See
|
|
14707
|
+
* `animation-text-style-css.ts`. NOT gated on `hasTextProperties`: a table
|
|
14708
|
+
* cell, a chart title/label/legend, and a SmartArt node caption all
|
|
14709
|
+
* animate this way too, and shared's selector scopes itself to this
|
|
14710
|
+
* element's `data-element-id`, which every branch below carries.
|
|
15064
14711
|
*/
|
|
15065
14712
|
readonly textStyleOverrideCss: _angular_core.Signal<string | undefined>;
|
|
15066
|
-
/**
|
|
15067
|
-
|
|
15068
|
-
* or `undefined` entries to render the runs normally. PowerPoint's "Animate
|
|
15069
|
-
* text: By letter" needs the rendered text split to match the per-character
|
|
15070
|
-
* sub-animations, otherwise the whole box just fades as one.
|
|
15071
|
-
*/
|
|
15072
|
-
readonly textBuildSpecs: _angular_core.Signal<(TextBuildSpec<StyleMap> | undefined)[]>;
|
|
15073
|
-
/**
|
|
15074
|
-
* Trust Center > "Confirm before opening external hyperlinks" gate for a
|
|
15075
|
-
* text-run hyperlink (`<a class="pptx-ng-link">`). The anchor's own `href` /
|
|
15076
|
-
* `target="_blank"` still does the actual navigation; this only vetoes it
|
|
15077
|
-
* via `preventDefault()` when the user declines the prompt.
|
|
15078
|
-
*/
|
|
15079
|
-
protected onHyperlinkClick(event: MouseEvent, href: string): void;
|
|
15080
|
-
/** Whole-paragraph text, for the paragraph-level build wrapper. */
|
|
15081
|
-
protected paragraphText(para: Paragraph): string;
|
|
15082
|
-
/** Style for one build piece, merged over the run's own style. */
|
|
15083
|
-
protected buildSpanStyle(span: {
|
|
15084
|
-
style?: StyleMap;
|
|
15085
|
-
hidden?: boolean;
|
|
15086
|
-
cssAnimation?: string;
|
|
15087
|
-
}): {
|
|
15088
|
-
[x: string]: string | number;
|
|
15089
|
-
};
|
|
14713
|
+
/** Live per-sub-element animation states for the staged text-build split. */
|
|
14714
|
+
readonly subElementAnimStates: _angular_core.Signal<Map<string, ElementAnimationState> | undefined>;
|
|
15090
14715
|
readonly containerStyle: _angular_core.Signal<StyleMap>;
|
|
14716
|
+
/** Fill/stroke/effects container style; see `buildShapeContainerStyle`'s doc. */
|
|
15091
14717
|
readonly shapeContainerStyle: _angular_core.Signal<StyleMap>;
|
|
15092
|
-
readonly textStyle: _angular_core.Signal<StyleMap>;
|
|
15093
|
-
/** Text-warp (WordArt) descriptor for the element, if any. */
|
|
15094
|
-
readonly textWarp: _angular_core.Signal<pptx_angular_viewer.TextWarpDef | undefined>;
|
|
15095
|
-
/** Only the SVG-textPath warp variant (for the `<svg>` overlay branch). */
|
|
15096
|
-
readonly pathWarp: _angular_core.Signal<TextWarpPathDef | undefined>;
|
|
15097
|
-
/** Text block 3D scene style (a:bodyPr/a:scene3d), mirroring React's ElementBody. */
|
|
15098
|
-
readonly scene3dStyle: _angular_core.Signal<StyleMap | undefined>;
|
|
15099
|
-
/**
|
|
15100
|
-
* Text block style, folding in a CSS-transform warp and the 3D scene
|
|
15101
|
-
* (perspective + rotation) when present. The warp transform and the scene
|
|
15102
|
-
* transform are composed rather than clobbering each other.
|
|
15103
|
-
*/
|
|
15104
|
-
readonly warpedTextStyle: _angular_core.Signal<StyleMap>;
|
|
15105
14718
|
readonly children: _angular_core.Signal<PptxElement[]>;
|
|
15106
14719
|
/**
|
|
15107
14720
|
* The fill handed to this group's `a:grpFill` children as their
|
|
15108
|
-
* `parentGroupFill`; undefined for non-group elements.
|
|
15109
|
-
*
|
|
15110
|
-
*
|
|
15111
|
-
*
|
|
15112
|
-
* ANCESTOR that has a fill, so a shape inside a fill-less nested group came
|
|
15113
|
-
* out transparent. (The old copy justified itself with "shared is only
|
|
15114
|
-
* vendored at build time", but this component already imports a dozen shared
|
|
15115
|
-
* symbols from the vendored barrel.)
|
|
14721
|
+
* `parentGroupFill`; undefined for non-group elements. Uses the shared
|
|
14722
|
+
* helper, not a hand-inlined copy: `a:grpFill` resolves against the
|
|
14723
|
+
* nearest ANCESTOR that has a fill, so a naive "this group's own fill
|
|
14724
|
+
* only" version left a shape inside a fill-less nested group transparent.
|
|
15116
14725
|
*/
|
|
15117
14726
|
readonly childParentGroupFill: _angular_core.Signal<ShapeStyle | undefined>;
|
|
15118
14727
|
readonly isShapeLike: _angular_core.Signal<boolean>;
|
|
15119
14728
|
readonly isImageLike: _angular_core.Signal<boolean>;
|
|
15120
|
-
|
|
15121
|
-
readonly
|
|
15122
|
-
/**
|
|
15123
|
-
* An empty inherited placeholder's greyed-out hint ("Click to add title"),
|
|
15124
|
-
* or null when it should not be shown. `editable` is only ever set true on
|
|
15125
|
-
* the live editing canvas (Present Mode leaves it at its `false` default,
|
|
15126
|
-
* and the thumbnail rail passes it explicitly false), matching shared's
|
|
15127
|
-
* `'edit'`-only surface: PowerPoint never prints, presents or thumbnails
|
|
15128
|
-
* this authoring hint.
|
|
15129
|
-
*/
|
|
15130
|
-
readonly placeholderPrompt: _angular_core.Signal<{
|
|
15131
|
-
text: string;
|
|
15132
|
-
style: StyleMap;
|
|
15133
|
-
} | null>;
|
|
14729
|
+
/** Element kinds routed to `ElementRendererGraphicsComponent`; see `GRAPHICS_ELEMENT_TYPES`. */
|
|
14730
|
+
readonly isGraphicsElement: _angular_core.Signal<boolean>;
|
|
15134
14731
|
readonly placeholderLabel: _angular_core.Signal<any>;
|
|
15135
14732
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ElementRendererComponent, never>;
|
|
15136
14733
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ElementRendererComponent, "pptx-element-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "mediaDataUrls": { "alias": "mediaDataUrls"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "obstacles": { "alias": "obstacles"; "required": false; "isSignal": true; }; "canvasWidth": { "alias": "canvasWidth"; "required": false; "isSignal": true; }; "canvasHeight": { "alias": "canvasHeight"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "marked": { "alias": "marked"; "required": false; "isSignal": true; }; "exposeElementId": { "alias": "exposeElementId"; "required": false; "isSignal": true; }; "presenting": { "alias": "presenting"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "fieldContext": { "alias": "fieldContext"; "required": false; "isSignal": true; }; "slideElements": { "alias": "slideElements"; "required": false; "isSignal": true; }; "editTemplateMode": { "alias": "editTemplateMode"; "required": false; "isSignal": true; }; "parentGroupFill": { "alias": "parentGroupFill"; "required": false; "isSignal": true; }; "editingElementId": { "alias": "editingElementId"; "required": false; "isSignal": true; }; }, { "cellCommit": "cellCommit"; "tableChange": "tableChange"; }, never, never, true, never>;
|
|
@@ -15283,6 +14880,17 @@ declare class ConnectorTextOverlayComponent {
|
|
|
15283
14880
|
|
|
15284
14881
|
declare class ChartRendererComponent {
|
|
15285
14882
|
readonly element: _angular_core.InputSignal<PptxElement>;
|
|
14883
|
+
/**
|
|
14884
|
+
* An untargeted bar3D extrusion face whose fill is picture-only samples a
|
|
14885
|
+
* colour from the picture ASYNCHRONOUSLY (see `chart-bar3d-face-picture-
|
|
14886
|
+
* sample.ts`'s module doc for the COM-verified ground truth this
|
|
14887
|
+
* reproduces); `buildChartViewModel` only ever sees whatever is already
|
|
14888
|
+
* cached. This signal is bumped by the shared (non-Angular) sample cache
|
|
14889
|
+
* whenever one resolves, and `vm` below reads it purely to establish a
|
|
14890
|
+
* signal dependency, forcing `computed` to rebuild once a sample lands.
|
|
14891
|
+
*/
|
|
14892
|
+
private readonly sampleVersion;
|
|
14893
|
+
constructor();
|
|
15286
14894
|
readonly vm: _angular_core.Signal<ChartViewModel>;
|
|
15287
14895
|
readonly viewBox: _angular_core.Signal<string>;
|
|
15288
14896
|
readonly swatchSize = 10;
|
|
@@ -15370,24 +14978,26 @@ declare class ChartElementViewComponent {
|
|
|
15370
14978
|
private readonly chartData;
|
|
15371
14979
|
/**
|
|
15372
14980
|
* Opt-in interactive 3D surface scene (camera orbit/zoom via OrbitControls).
|
|
15373
|
-
*
|
|
15374
|
-
*
|
|
14981
|
+
* Click-to-select only: the grid is a single mesh with no per-cell geometry
|
|
14982
|
+
* to drag a value against, so value-drag editing stays SVG-only (see the
|
|
14983
|
+
* shared `SurfaceChart3DInteraction` doc comment).
|
|
15375
14984
|
*/
|
|
15376
14985
|
protected readonly use3D: _angular_core.Signal<boolean>;
|
|
15377
14986
|
protected readonly isSurfaceKind: _angular_core.Signal<boolean>;
|
|
15378
14987
|
/**
|
|
15379
14988
|
* Opt-in interactive 3D bar scene (real box meshes, camera orbit/zoom via
|
|
15380
|
-
* OrbitControls).
|
|
15381
|
-
*
|
|
15382
|
-
*
|
|
15383
|
-
*
|
|
14989
|
+
* OrbitControls). Clustered boxes are click-to-select AND drag-to-value
|
|
14990
|
+
* (`onChartPart3DSelect`/`onChart3DValueDragCommit` below); stacked/
|
|
14991
|
+
* percentStacked boxes are select-only. `chartType` is checked directly
|
|
14992
|
+
* (NOT via `resolveChartKind`, which folds `bar`/`bar3D` onto the same
|
|
14993
|
+
* 'bar' kind), so a plain 2-D bar chart never mounts the 3D scene.
|
|
15384
14994
|
*/
|
|
15385
14995
|
protected readonly use3DBar: _angular_core.Signal<boolean>;
|
|
15386
14996
|
protected readonly isBar3DKind: _angular_core.Signal<boolean>;
|
|
15387
14997
|
/**
|
|
15388
14998
|
* Opt-in interactive 3D line/area scenes (tube path / ribbon meshes, camera
|
|
15389
|
-
* orbit/zoom via OrbitControls).
|
|
15390
|
-
*
|
|
14999
|
+
* orbit/zoom via OrbitControls). Point markers are click-to-select AND
|
|
15000
|
+
* drag-to-value, same as the bar scene above.
|
|
15391
15001
|
*/
|
|
15392
15002
|
protected readonly use3DLine: _angular_core.Signal<boolean>;
|
|
15393
15003
|
protected readonly isLine3DKind: _angular_core.Signal<boolean>;
|
|
@@ -15395,11 +15005,11 @@ declare class ChartElementViewComponent {
|
|
|
15395
15005
|
protected readonly isArea3DKind: _angular_core.Signal<boolean>;
|
|
15396
15006
|
/**
|
|
15397
15007
|
* Opt-in interactive 3D pie scene (real wedge meshes, camera orbit/zoom via
|
|
15398
|
-
* OrbitControls).
|
|
15399
|
-
*
|
|
15400
|
-
* `
|
|
15401
|
-
* 'pie' kind), so a
|
|
15402
|
-
* scene.
|
|
15008
|
+
* OrbitControls). Click-to-select only: a pie/doughnut slice has no single
|
|
15009
|
+
* value axis to drag along (see the shared `PieChart3DInteraction` doc
|
|
15010
|
+
* comment). `chartType` is checked directly (NOT via `resolveChartKind`,
|
|
15011
|
+
* which folds `pie`/`pie3D`/`doughnut` onto the same 'pie' kind), so a
|
|
15012
|
+
* plain 2-D pie or doughnut chart never mounts the 3D scene.
|
|
15403
15013
|
*/
|
|
15404
15014
|
protected readonly use3DPie: _angular_core.Signal<boolean>;
|
|
15405
15015
|
protected readonly isPie3DKind: _angular_core.Signal<boolean>;
|
|
@@ -15417,8 +15027,13 @@ declare class ChartElementViewComponent {
|
|
|
15417
15027
|
*/
|
|
15418
15028
|
protected readonly renderedElement: _angular_core.Signal<PptxElement>;
|
|
15419
15029
|
protected readonly dragBadge: _angular_core.Signal<string>;
|
|
15420
|
-
/** The part selected for THIS chart, or null.
|
|
15421
|
-
|
|
15030
|
+
/** The part selected for THIS chart, or null. Also fed to the 3D chart
|
|
15031
|
+
* renderers so an external selection change (inspector, keyboard) re-applies
|
|
15032
|
+
* the mesh highlight in the mounted scene. */
|
|
15033
|
+
protected readonly selectedPart: _angular_core.Signal<ChartPartRef | null>;
|
|
15034
|
+
/** Active font-style emphasis override for a 3D chart scene's own axis
|
|
15035
|
+
* labels (bar3D/line3D/area3D/surface3D; pie3D draws none). */
|
|
15036
|
+
protected readonly chartTextStyle: _angular_core.Signal<TextStyleAnimationDescriptor | undefined>;
|
|
15422
15037
|
constructor();
|
|
15423
15038
|
protected onPointerDown(event: PointerEvent): void;
|
|
15424
15039
|
protected onPointerMove(event: PointerEvent): void;
|
|
@@ -15426,6 +15041,34 @@ declare class ChartElementViewComponent {
|
|
|
15426
15041
|
/** Cancel an in-flight value drag with Escape (document-level, like React). */
|
|
15427
15042
|
protected onEscape(): void;
|
|
15428
15043
|
private endDrag;
|
|
15044
|
+
/**
|
|
15045
|
+
* A 3D scene's own click-to-select fired (or empty space, clearing). Routes
|
|
15046
|
+
* to the SAME `ChartPartSelectionService` the 2D `onPointerDown` above uses,
|
|
15047
|
+
* so the inspector reacts identically to a 3D mark. Gated on `canEdit()`
|
|
15048
|
+
* exactly like the 2D path: every read-only mount of this same chart
|
|
15049
|
+
* element (thumbnail rail, export) shares the one injected service
|
|
15050
|
+
* instance, so an un-gated write here would fight the canvas copy's
|
|
15051
|
+
* selection (see the constructor's `clearForElement` effect comment).
|
|
15052
|
+
*/
|
|
15053
|
+
protected onChartPart3DSelect(part: ChartPartRef | null): void;
|
|
15054
|
+
/**
|
|
15055
|
+
* Live value while dragging a 3D mark. Only drives the floating badge
|
|
15056
|
+
* (`dragValue`/`dragBadge`, shared with the 2D drag UI): unlike the 2D SVG
|
|
15057
|
+
* drag, previewing the new value in the mesh itself would require
|
|
15058
|
+
* re-mounting the WebGL scene on every pointer-move, which would tear down
|
|
15059
|
+
* the in-flight pointer capture the shared scene's own drag state machine
|
|
15060
|
+
* relies on.
|
|
15061
|
+
*/
|
|
15062
|
+
protected onChart3DValueDragPreview(event: {
|
|
15063
|
+
part: ChartPartRef;
|
|
15064
|
+
value: number;
|
|
15065
|
+
}): void;
|
|
15066
|
+
/** Final value from a 3D mark drag: commits through the same channel the
|
|
15067
|
+
* 2D value-drag / mark-drag paths use above. */
|
|
15068
|
+
protected onChart3DValueDragCommit(event: {
|
|
15069
|
+
part: ChartPartRef;
|
|
15070
|
+
value: number;
|
|
15071
|
+
}): void;
|
|
15429
15072
|
protected onDblClick(event: MouseEvent): void;
|
|
15430
15073
|
protected onTitleInput(event: Event): void;
|
|
15431
15074
|
protected onTitleKeydown(event: KeyboardEvent): void;
|
|
@@ -15755,28 +15398,6 @@ declare class SmartArtRendererComponent {
|
|
|
15755
15398
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SmartArtRendererComponent, "pptx-smart-art-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "animationState": { "alias": "animationState"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
15756
15399
|
}
|
|
15757
15400
|
|
|
15758
|
-
/** Resolved per-stroke data used to render a single `<path>` (or circle set). */
|
|
15759
|
-
interface InkStroke {
|
|
15760
|
-
d: string;
|
|
15761
|
-
color: string;
|
|
15762
|
-
width: number;
|
|
15763
|
-
opacity: number;
|
|
15764
|
-
/**
|
|
15765
|
-
* When present, render as pressure-sensitive circles instead of a plain
|
|
15766
|
-
* constant-width `<path>`. Empty/absent means a constant-width stroke.
|
|
15767
|
-
*/
|
|
15768
|
-
circles?: PressureCircle[];
|
|
15769
|
-
}
|
|
15770
|
-
/**
|
|
15771
|
-
* Narrow `element` to `InkPptxElement` and return the resolved per-stroke
|
|
15772
|
-
* array, or an empty array when the element is not an ink element.
|
|
15773
|
-
*/
|
|
15774
|
-
declare function buildInkStrokes(element: PptxElement): InkStroke[];
|
|
15775
|
-
/** Minimum SVG viewport dimension (clamp to ≥ 1 to avoid degenerate viewBox). */
|
|
15776
|
-
declare function inkViewBox(element: PptxElement): string;
|
|
15777
|
-
/** Wrapper `[ngStyle]`-compatible style for the ink container `<div>`. */
|
|
15778
|
-
declare function buildInkContainerStyle(element: PptxElement, zIndex: number): StyleMap;
|
|
15779
|
-
|
|
15780
15401
|
/**
|
|
15781
15402
|
* InkRendererComponent: Angular port of the Vue `InkRenderer.vue`
|
|
15782
15403
|
* (and the React `renderInk` inside `InkGroupRenderers.tsx`), viewer-first
|
|
@@ -15827,7 +15448,7 @@ declare class InkRendererComponent {
|
|
|
15827
15448
|
readonly elementIdAttr: _angular_core.Signal<string | null>;
|
|
15828
15449
|
readonly replayKeyframes = "@keyframes pptx-ink-replay {\n from { stroke-dashoffset: var(--ink-path-length); }\n to { stroke-dashoffset: 0; }\n}";
|
|
15829
15450
|
readonly containerStyle: _angular_core.Signal<StyleMap>;
|
|
15830
|
-
readonly strokes: _angular_core.Signal<
|
|
15451
|
+
readonly strokes: _angular_core.Signal<InkGroupStrokeView[]>;
|
|
15831
15452
|
readonly replayStyles: _angular_core.Signal<InkStrokeAnimationStyle[]>;
|
|
15832
15453
|
readonly viewBox: _angular_core.Signal<string>;
|
|
15833
15454
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<InkRendererComponent, never>;
|
|
@@ -16296,6 +15917,11 @@ declare class AnimationPlaybackService {
|
|
|
16296
15917
|
*/
|
|
16297
15918
|
setSlide(slide: PptxSlide | undefined, showWithAnimation?: boolean, options?: {
|
|
16298
15919
|
completed?: boolean;
|
|
15920
|
+
/** The slide canvas size (px), for a `p:anim` formula needing the animated shape's real box. */
|
|
15921
|
+
slideWidthPx?: number;
|
|
15922
|
+
slideHeightPx?: number;
|
|
15923
|
+
/** The deck's resolved theme colour map, for a scheme-colour (`a:schemeClr`) animation stop. */
|
|
15924
|
+
themeColorMap?: Readonly<Record<string, string>>;
|
|
16299
15925
|
}): void;
|
|
16300
15926
|
/**
|
|
16301
15927
|
* True while the active slide shows its builds as already complete because
|
|
@@ -16318,7 +15944,7 @@ declare class AnimationPlaybackService {
|
|
|
16318
15944
|
/** Reset a hover shape's sequence so the next hover replays it. */
|
|
16319
15945
|
handleHoverEnd(shapeId: string): void;
|
|
16320
15946
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AnimationPlaybackService, never>;
|
|
16321
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
15947
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
16322
15948
|
}
|
|
16323
15949
|
|
|
16324
15950
|
declare class PresentationAnnotationsService {
|
|
@@ -16451,7 +16077,7 @@ declare class PresentationAnnotationsService {
|
|
|
16451
16077
|
private _flushCurrentSlide;
|
|
16452
16078
|
private _clearToolbarTimer;
|
|
16453
16079
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PresentationAnnotationsService, never>;
|
|
16454
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
16080
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
16455
16081
|
}
|
|
16456
16082
|
|
|
16457
16083
|
/**
|
|
@@ -16605,6 +16231,18 @@ interface ShowNavigatorDeps {
|
|
|
16605
16231
|
/** The slide at the CURRENT index (a computed over `currentIndex`). */
|
|
16606
16232
|
currentSlide: () => PptxSlide | undefined;
|
|
16607
16233
|
showWithAnimation: () => boolean | undefined;
|
|
16234
|
+
/**
|
|
16235
|
+
* The slide canvas size (px), for a `p:anim` formula needing the animated
|
|
16236
|
+
* shape's real box (e.g. Grow And Turn's `-#ppt_w/2` fly-in). Optional so a
|
|
16237
|
+
* host constructed before this existed still compiles; omitting it just
|
|
16238
|
+
* keeps the pre-existing fallback behaviour.
|
|
16239
|
+
*/
|
|
16240
|
+
canvasSize?: () => {
|
|
16241
|
+
width: number;
|
|
16242
|
+
height: number;
|
|
16243
|
+
};
|
|
16244
|
+
/** The deck's resolved theme colour map, for a scheme-colour (`a:schemeClr`) animation stop. */
|
|
16245
|
+
themeColorMap?: () => Readonly<Record<string, string>> | undefined;
|
|
16608
16246
|
playback: AnimationPlaybackService;
|
|
16609
16247
|
annotations: PresentationAnnotationsService;
|
|
16610
16248
|
/** Publish a committed index change to the host's `indexChange` output. */
|
|
@@ -16811,6 +16449,13 @@ declare class PresentationOverlayComponent implements OnInit {
|
|
|
16811
16449
|
* it, external-hyperlink clicks are simply never confirmed.
|
|
16812
16450
|
*/
|
|
16813
16451
|
private readonly viewerOpts;
|
|
16452
|
+
/**
|
|
16453
|
+
* Optional for the same reason as {@link viewerOpts}. Its `themeColorMap`
|
|
16454
|
+
* signal lets `AnimationPlaybackService.setSlide` resolve a scheme-colour
|
|
16455
|
+
* (`a:schemeClr`) animation stop; absent it, such a stop falls back to the
|
|
16456
|
+
* canned preset timing exactly as before.
|
|
16457
|
+
*/
|
|
16458
|
+
private readonly loadContent;
|
|
16814
16459
|
readonly slides: _angular_core.InputSignal<PptxSlide[]>;
|
|
16815
16460
|
readonly canvasSize: _angular_core.InputSignal<CanvasSize>;
|
|
16816
16461
|
readonly mediaDataUrls: _angular_core.InputSignal<Map<string, string>>;
|
|
@@ -17280,6 +16925,20 @@ declare class InspectorPanelComponent {
|
|
|
17280
16925
|
/** Whether mutation controls in the inspector are enabled. */
|
|
17281
16926
|
readonly canEdit: _angular_core.InputSignal<boolean>;
|
|
17282
16927
|
protected readonly editor: EditorStateService;
|
|
16928
|
+
/**
|
|
16929
|
+
* Optional: absent when the panel is rendered outside a viewer. The ribbon's
|
|
16930
|
+
* "Animation Panel" bumps {@link ViewerInspectorPanelService.animationPanelRequest};
|
|
16931
|
+
* every bump expands the Animation section below, so the effect-sound and
|
|
16932
|
+
* after-animation rows are visible the way React's and Vue's inspectors
|
|
16933
|
+
* show them (their animation controls are never behind a collapsed group).
|
|
16934
|
+
*/
|
|
16935
|
+
private readonly inspectorPane;
|
|
16936
|
+
/**
|
|
16937
|
+
* The ribbon request count at which the user last collapsed the Animation
|
|
16938
|
+
* section by hand (`null` = not collapsed). Resets whenever a different
|
|
16939
|
+
* element is selected, so each selection starts from the automatic rule.
|
|
16940
|
+
*/
|
|
16941
|
+
private readonly animationManuallyClosedAt;
|
|
17283
16942
|
/**
|
|
17284
16943
|
* Optional: absent in a standalone-thumbnail/export render context.
|
|
17285
16944
|
* Feeds the table properties panel's "Edit style..." (`tableStyleMap`),
|
|
@@ -17357,13 +17016,11 @@ declare class InspectorPanelComponent {
|
|
|
17357
17016
|
protected readonly chartEl: _angular_core.Signal<ChartPptxElement | undefined>;
|
|
17358
17017
|
protected readonly imageEl: _angular_core.Signal<PptxElement | undefined>;
|
|
17359
17018
|
/**
|
|
17360
|
-
* The selected element
|
|
17361
|
-
* `
|
|
17362
|
-
*
|
|
17363
|
-
*
|
|
17364
|
-
*
|
|
17365
|
-
* the shared descriptor recognises), so it does not duplicate a
|
|
17366
|
-
* table/chart/smartArt/media/ole panel's own alt-text UI.
|
|
17019
|
+
* The selected element, or `undefined`, gating
|
|
17020
|
+
* `AccessibilityTextPanelComponent` (alt text / title) via shared's
|
|
17021
|
+
* `shouldShowAccessibilitySection`: true for a plain shape, text box,
|
|
17022
|
+
* connector, and every graphic-frame kind (table/chart/smartArt/media/ole).
|
|
17023
|
+
* A picture's own alt text lives in `imageEl` above instead.
|
|
17367
17024
|
*/
|
|
17368
17025
|
protected readonly accessibilityTextEl: _angular_core.Signal<PptxElement | undefined>;
|
|
17369
17026
|
protected readonly mediaEl: _angular_core.Signal<MediaPptxElement | undefined>;
|
|
@@ -17398,6 +17055,19 @@ declare class InspectorPanelComponent {
|
|
|
17398
17055
|
protected onDeleteTableStyle(styleId: string): void;
|
|
17399
17056
|
/** The active slide's element-animation list (animations live on the slide). */
|
|
17400
17057
|
protected readonly slideAnimations: _angular_core.Signal<readonly PptxElementAnimation[]>;
|
|
17058
|
+
/**
|
|
17059
|
+
* The Animation section starts expanded for an element that already carries
|
|
17060
|
+
* an effect, so its authoring rows (effect sound, after-animation, timing)
|
|
17061
|
+
* are visible on selection the way React's and Vue's inspectors show them;
|
|
17062
|
+
* the ribbon's "Animation Panel" expands it on demand for any element. A
|
|
17063
|
+
* manual collapse sticks until the next ribbon request (the request counter
|
|
17064
|
+
* moves past the value recorded at collapse time), so the section really
|
|
17065
|
+
* re-opens on every click. Pure signals, no DOM effect: the panel stays
|
|
17066
|
+
* constructible in a plain injector (this package's TestBed-free tests).
|
|
17067
|
+
*/
|
|
17068
|
+
protected readonly animationSectionOpen: _angular_core.Signal<boolean>;
|
|
17069
|
+
/** `<details>` toggle: remember a manual collapse against the current ribbon request count. */
|
|
17070
|
+
protected onAnimationSectionToggle(event: Event): void;
|
|
17401
17071
|
/** Read-only anchors for the active slide's deck-native effect groups. */
|
|
17402
17072
|
protected readonly slideAnimationTimelineAnchors: _angular_core.Signal<readonly PptxAnimationTimelineAnchor[]>;
|
|
17403
17073
|
protected readonly slideElements: _angular_core.Signal<readonly PptxElement[]>;
|
|
@@ -18300,6 +17970,13 @@ declare class ChartTypeSelectorComponent {
|
|
|
18300
17970
|
protected readonly groupingOptions: readonly ChartOption<"clustered" | "stacked" | "percentStacked" | undefined>[];
|
|
18301
17971
|
protected readonly data: _angular_core.Signal<PptxChartData | undefined>;
|
|
18302
17972
|
protected readonly supportsGrouping: _angular_core.Signal<boolean>;
|
|
17973
|
+
/**
|
|
17974
|
+
* The type shown as selected. "Pareto" has no `PptxChartType` of its own
|
|
17975
|
+
* (docs/guide/limitations.md's ChartEx row): it is `chartType: 'histogram'`
|
|
17976
|
+
* plus a `paretoLine`-layout series, so reading `chartType` raw would show
|
|
17977
|
+
* "Histogram" for a chart the user picked "Pareto" for.
|
|
17978
|
+
*/
|
|
17979
|
+
protected readonly displayedType: _angular_core.Signal<ChartTypeSelectValue | undefined>;
|
|
18303
17980
|
protected onTitle(event: Event): void;
|
|
18304
17981
|
protected onType(event: Event): void;
|
|
18305
17982
|
protected onGrouping(event: Event): void;
|
|
@@ -18767,6 +18444,7 @@ declare class AnimationAuthorPanelComponent {
|
|
|
18767
18444
|
protected onMotionPathChange(presetId: string): void;
|
|
18768
18445
|
protected onDirectionChange(dir: PptxAnimationDirection): void;
|
|
18769
18446
|
protected onEffectSoundPick(pick: EffectSoundPick | undefined): void;
|
|
18447
|
+
protected onEffectStockSoundPick(catalogueId: string): void;
|
|
18770
18448
|
protected onAfterAnimationChange(action: PptxAfterAnimationAction): void;
|
|
18771
18449
|
protected onAfterAnimationColorChange(color: string): void;
|
|
18772
18450
|
/**
|
|
@@ -19399,7 +19077,7 @@ declare class CommentsService {
|
|
|
19399
19077
|
*/
|
|
19400
19078
|
resolveComment(id: string): PptxComment[] | null;
|
|
19401
19079
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CommentsService, never>;
|
|
19402
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
19080
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
19403
19081
|
}
|
|
19404
19082
|
|
|
19405
19083
|
declare class SignaturesPanelComponent {
|
|
@@ -19495,7 +19173,7 @@ declare class SignaturesService {
|
|
|
19495
19173
|
/** Clear all inspected signatures (e.g. when a new file loads). */
|
|
19496
19174
|
clear(): void;
|
|
19497
19175
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SignaturesService, never>;
|
|
19498
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
19176
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
19499
19177
|
}
|
|
19500
19178
|
|
|
19501
19179
|
declare class AccessibilityPanelComponent {
|
|
@@ -19639,21 +19317,21 @@ declare class ImagePropertiesPanelComponent {
|
|
|
19639
19317
|
}
|
|
19640
19318
|
|
|
19641
19319
|
/**
|
|
19642
|
-
* Alt text / title editor for a plain shape, text box
|
|
19643
|
-
*
|
|
19644
|
-
* `AccessibilityPanel.vue`.
|
|
19320
|
+
* Alt text / title editor for a plain shape, text box, connector, or any
|
|
19321
|
+
* graphic-frame kind (table/chart/smartArt/media/ole), at parity with
|
|
19322
|
+
* React's `AccessibilityTextSection` and Vue's `AccessibilityPanel.vue`.
|
|
19645
19323
|
*
|
|
19646
19324
|
* A picture's own alt text field lives in `ImagePropertiesPanelComponent`;
|
|
19647
|
-
*
|
|
19648
|
-
*
|
|
19649
|
-
*
|
|
19650
|
-
*
|
|
19325
|
+
* `shouldShowAccessibilitySection` (shared) decides which other element
|
|
19326
|
+
* kinds get this panel at all, and `getNonVisualDescriptionFields` (shared)
|
|
19327
|
+
* decides which of its two fields apply, so this component stays a thin
|
|
19328
|
+
* view.
|
|
19651
19329
|
*/
|
|
19652
19330
|
declare class AccessibilityTextPanelComponent {
|
|
19653
19331
|
readonly element: _angular_core.InputSignal<PptxElement>;
|
|
19654
19332
|
readonly patch: _angular_core.OutputEmitterRef<Partial<PptxElement>>;
|
|
19655
19333
|
protected readonly fields: _angular_core.Signal<NonVisualDescriptionFields>;
|
|
19656
|
-
/** Whether the selected element kind
|
|
19334
|
+
/** Whether the selected element kind should show this panel at all. */
|
|
19657
19335
|
static supports(element: PptxElement): boolean;
|
|
19658
19336
|
protected onAltText(event: Event): void;
|
|
19659
19337
|
protected onTitle(event: Event): void;
|
|
@@ -20627,7 +20305,7 @@ declare class AccountPageComponent {
|
|
|
20627
20305
|
readonly accountAuth: _angular_core.InputSignal<AccountAuthConfig | undefined>;
|
|
20628
20306
|
private readonly translate;
|
|
20629
20307
|
protected readonly swatches: readonly string[];
|
|
20630
|
-
protected readonly version = "3.
|
|
20308
|
+
protected readonly version = "3.10.0";
|
|
20631
20309
|
protected readonly profile: _angular_core.WritableSignal<ViewerProfile>;
|
|
20632
20310
|
protected readonly initial: _angular_core.Signal<string>;
|
|
20633
20311
|
protected readonly usage: _angular_core.WritableSignal<LocalStorageUsageSummary | null>;
|
|
@@ -21470,30 +21148,171 @@ interface PresenterNotes {
|
|
|
21470
21148
|
declare function resolvePresenterNotes(slide: PptxSlide | undefined): PresenterNotes;
|
|
21471
21149
|
|
|
21472
21150
|
/**
|
|
21473
|
-
*
|
|
21151
|
+
* True two-curve WordArt envelope descriptor (inflate/deflate/can) for the
|
|
21152
|
+
* Angular viewer. Split out of `text-warp.ts` to keep that file under the
|
|
21153
|
+
* repo's per-file line budget.
|
|
21154
|
+
*
|
|
21155
|
+
* Unlike `TextWarpPathDef` (a shared-baseline SVG `<textPath>`), glyph HEIGHT
|
|
21156
|
+
* varies with horizontal position here: each glyph carries its own `matrix`
|
|
21157
|
+
* transform, computed by `buildGlyphEnvelope` (`pptx-viewer-shared`) from the
|
|
21158
|
+
* preset's top/bottom envelope curves sampled across the glyph's own width.
|
|
21159
|
+
*/
|
|
21160
|
+
|
|
21161
|
+
/** One glyph of an envelope-warped (inflate/deflate/can) line. */
|
|
21162
|
+
interface WarpGlyph {
|
|
21163
|
+
readonly char: string;
|
|
21164
|
+
readonly x: number;
|
|
21165
|
+
readonly y: number;
|
|
21166
|
+
/** SVG `matrix(1 b 0 d 0 f)` mapping the nominal band onto the envelope curve. */
|
|
21167
|
+
readonly transform: string;
|
|
21168
|
+
readonly fill: string;
|
|
21169
|
+
readonly fontWeight: 400 | 700;
|
|
21170
|
+
readonly fontStyle: 'italic' | 'normal';
|
|
21171
|
+
readonly fontFamily: string;
|
|
21172
|
+
readonly fontSize: number;
|
|
21173
|
+
/**
|
|
21174
|
+
* Present only when this glyph needed more than one rendered piece (see
|
|
21175
|
+
* `chooseGlyphSliceCount` in pptx-viewer-shared): a very wide glyph on a
|
|
21176
|
+
* strongly-curved envelope, where `transform` alone misses how much the
|
|
21177
|
+
* curve bends within the glyph's own width. Absent for an ordinary
|
|
21178
|
+
* caption, in which case the template renders exactly one `<text>` with
|
|
21179
|
+
* `transform`, unchanged from before slicing existed.
|
|
21180
|
+
*/
|
|
21181
|
+
readonly slices?: EnvelopeGlyphSlice[];
|
|
21182
|
+
/**
|
|
21183
|
+
* Deterministic clip-id prefix for this glyph's slices (unique across
|
|
21184
|
+
* every WordArt element on the page: element id + line + glyph index).
|
|
21185
|
+
* The template appends `-s{index}` per slice.
|
|
21186
|
+
*/
|
|
21187
|
+
readonly clipIdPrefix: string;
|
|
21188
|
+
}
|
|
21189
|
+
/** Descriptor for the true two-curve envelope renderer. One `<text>` per glyph. */
|
|
21190
|
+
interface TextWarpGlyphDef {
|
|
21191
|
+
readonly strategy: 'glyph';
|
|
21192
|
+
readonly preset: PptxTextWarpPreset;
|
|
21193
|
+
readonly width: number;
|
|
21194
|
+
readonly height: number;
|
|
21195
|
+
readonly glyphs: WarpGlyph[];
|
|
21196
|
+
}
|
|
21197
|
+
|
|
21198
|
+
/**
|
|
21199
|
+
* Text-warp (WordArt) descriptor resolver for the Angular viewer.
|
|
21200
|
+
*
|
|
21201
|
+
* Angular port of:
|
|
21202
|
+
* packages/react/src/viewer/utils/text-warp-classifier.ts
|
|
21203
|
+
* packages/react/src/viewer/utils/warp-text-renderer.tsx (descriptor shape)
|
|
21204
|
+
*
|
|
21205
|
+
* `getTextWarp(element)` resolves an element's OOXML `prstTxWarp` preset into a
|
|
21206
|
+
* `TextWarpDef` that the Angular template can consume without any React/HTML
|
|
21207
|
+
* string injection. Every classified preset (`textNoShape`/`textPlain`/unknown
|
|
21208
|
+
* excluded) now resolves to `strategy: 'path'`: SVG `<textPath>` along a
|
|
21209
|
+
* curved/arc/circle/bent baseline. The `pathLines` array contains one entry
|
|
21210
|
+
* per paragraph with a pre-computed SVG `d` attribute; the template renders an
|
|
21211
|
+
* inline `<svg>` with `<defs><path>` + `<text><textPath href>`.
|
|
21212
|
+
*
|
|
21213
|
+
* `strategy: 'css'` (a whole-block CSS transform approximation applied to the
|
|
21214
|
+
* `div.pptx-ng-text` wrapper) is no longer produced: `warp-path-generators.ts`
|
|
21215
|
+
* used to expose a NARROWER, LOCAL `shouldUseSvgWarp` that deliberately
|
|
21216
|
+
* excluded the envelope (inflate/deflate/can) and simple (slant/fade/cascade)
|
|
21217
|
+
* families, so this function fell back to a CSS-transform approximation for
|
|
21218
|
+
* them - a cross-binding parity bug, since React and Vanilla import shared's
|
|
21219
|
+
* BROAD `shouldUseSvgWarp` directly and already rendered those presets as true
|
|
21220
|
+
* SVG textPath. `warp-path-generators.ts` now re-exports the broad shared set,
|
|
21221
|
+
* so every classified preset takes the `'path'` branch. `TextWarpCssDef` /
|
|
21222
|
+
* `'css'` stay in the `TextWarpDef` union for API stability; nothing produces
|
|
21223
|
+
* one any more.
|
|
21474
21224
|
*
|
|
21475
|
-
*
|
|
21476
|
-
* `
|
|
21477
|
-
|
|
21478
|
-
|
|
21225
|
+
* Presets classified as `'none'` (textNoShape, textPlain, unknown) return
|
|
21226
|
+
* `undefined` so callers can skip extra rendering without an allowlist check.
|
|
21227
|
+
*/
|
|
21228
|
+
|
|
21229
|
+
/** The four rendering strategy families. */
|
|
21230
|
+
type WarpCategory = WarpCategory$1;
|
|
21231
|
+
/**
|
|
21232
|
+
* Classify a warp preset into a rendering strategy category.
|
|
21479
21233
|
*
|
|
21480
|
-
* `
|
|
21481
|
-
*
|
|
21482
|
-
*
|
|
21483
|
-
* `SVG_WARP_PRESETS` is a broader set (every path-renderable preset), so it must
|
|
21484
|
-
* not be substituted here; doing so would route envelope/simple presets to
|
|
21485
|
-
* `<textPath>` and break the css-strategy routing (and its tests).
|
|
21234
|
+
* Returns `'none'` for unknown or empty presets so callers can safely
|
|
21235
|
+
* skip rendering without an explicit allowlist check. Thin alias for the
|
|
21236
|
+
* shared `classifyTextWarp` helper.
|
|
21486
21237
|
*/
|
|
21238
|
+
declare const getWarpCategory: (preset: string | undefined) => WarpCategory;
|
|
21487
21239
|
|
|
21488
21240
|
/**
|
|
21489
|
-
*
|
|
21490
|
-
*
|
|
21491
|
-
*
|
|
21492
|
-
*
|
|
21241
|
+
* A single pre-computed SVG path line for one text paragraph.
|
|
21242
|
+
*
|
|
21243
|
+
* The template renders this as:
|
|
21244
|
+
* `<path [id]="pathId" [attr.d]="d" fill="none" />`
|
|
21245
|
+
* inside `<defs>`, then references it with `<textPath [attr.href]="'#'+pathId">`.
|
|
21493
21246
|
*/
|
|
21494
|
-
|
|
21495
|
-
/**
|
|
21496
|
-
|
|
21247
|
+
interface WarpPathLine {
|
|
21248
|
+
/** Unique DOM id for this `<path>` element (safe to use as `href` fragment). */
|
|
21249
|
+
pathId: string;
|
|
21250
|
+
/** SVG path data (`d` attribute). */
|
|
21251
|
+
d: string;
|
|
21252
|
+
/** The text segments that flow along this path. */
|
|
21253
|
+
segments: TextSegment[];
|
|
21254
|
+
}
|
|
21255
|
+
/**
|
|
21256
|
+
* Descriptor for SVG `<textPath>`-based warp rendering.
|
|
21257
|
+
*
|
|
21258
|
+
* One `WarpPathLine` per paragraph. The template renders an inline `<svg>`
|
|
21259
|
+
* covering the element bounds, defines each path in `<defs>`, then lays
|
|
21260
|
+
* `<text><textPath href="#pathId">` on each path.
|
|
21261
|
+
*/
|
|
21262
|
+
interface TextWarpPathDef {
|
|
21263
|
+
readonly strategy: 'path';
|
|
21264
|
+
/** OOXML preset name (e.g. `'textArchUp'`). */
|
|
21265
|
+
readonly preset: PptxTextWarpPreset;
|
|
21266
|
+
/** One entry per paragraph. */
|
|
21267
|
+
readonly pathLines: WarpPathLine[];
|
|
21268
|
+
/** Element pixel width (for `<svg width>`). */
|
|
21269
|
+
readonly width: number;
|
|
21270
|
+
/** Element pixel height (for `<svg height>`). */
|
|
21271
|
+
readonly height: number;
|
|
21272
|
+
/** SVG `text-anchor` value derived from paragraph alignment. */
|
|
21273
|
+
readonly textAnchor: 'start' | 'middle' | 'end';
|
|
21274
|
+
/** SVG `<textPath startOffset>` value (e.g. `"0%"`, `"50%"`, `"100%"`). */
|
|
21275
|
+
readonly startOffset: string;
|
|
21276
|
+
/** Base font size in points from the element's text style. */
|
|
21277
|
+
readonly baseFontSize: number;
|
|
21278
|
+
/** Base font family string (already CSS-ready). */
|
|
21279
|
+
readonly baseFontFamily: string;
|
|
21280
|
+
/** Base text fill colour (hex). */
|
|
21281
|
+
readonly baseColor: string;
|
|
21282
|
+
}
|
|
21283
|
+
/**
|
|
21284
|
+
* Descriptor for CSS-transform-based warp rendering.
|
|
21285
|
+
*
|
|
21286
|
+
* The template applies `cssTransform` + `cssTransformOrigin` on the
|
|
21287
|
+
* `div.pptx-ng-text` wrapper (or a containing div) via `[ngStyle]`.
|
|
21288
|
+
*/
|
|
21289
|
+
interface TextWarpCssDef {
|
|
21290
|
+
readonly strategy: 'css';
|
|
21291
|
+
/** OOXML preset name (e.g. `'textSlantUp'`). */
|
|
21292
|
+
readonly preset: PptxTextWarpPreset;
|
|
21293
|
+
/** CSS `transform` string (e.g. `"perspective(500px) rotateY(8deg) skewY(-4deg)"`). */
|
|
21294
|
+
readonly cssTransform: string;
|
|
21295
|
+
/** CSS `transform-origin` string (e.g. `"left center"`). */
|
|
21296
|
+
readonly cssTransformOrigin: string;
|
|
21297
|
+
}
|
|
21298
|
+
|
|
21299
|
+
/** Union of the warp rendering strategies. */
|
|
21300
|
+
type TextWarpDef = TextWarpPathDef | TextWarpCssDef | TextWarpGlyphDef;
|
|
21301
|
+
/**
|
|
21302
|
+
* Resolve a `PptxElement`'s text warp preset into a `TextWarpDef` descriptor,
|
|
21303
|
+
* or `undefined` when the element carries no warp (or the preset is `textNoShape` /
|
|
21304
|
+
* `textPlain` / unknown).
|
|
21305
|
+
*
|
|
21306
|
+
* @param element Any `PptxElement`. Elements without text properties always
|
|
21307
|
+
* return `undefined`.
|
|
21308
|
+
* @param fieldContext Optional OOXML field-substitution context. When given,
|
|
21309
|
+
* field runs (slide number, date/time, footer, ...) in the warp
|
|
21310
|
+
* paragraphs are resolved to their display text, mirroring
|
|
21311
|
+
* React's warp-text-renderer.
|
|
21312
|
+
* @returns A `TextWarpDef` with `strategy: 'path'` for a classified preset,
|
|
21313
|
+
* or `undefined` for `textNoShape`/`textPlain`/an unknown preset.
|
|
21314
|
+
*/
|
|
21315
|
+
declare function getTextWarp(element: PptxElement, fieldContext?: FieldSubstitutionContext): TextWarpDef | undefined;
|
|
21497
21316
|
|
|
21498
21317
|
/**
|
|
21499
21318
|
* Generate an inline SVG string for an OOXML preset pattern fill.
|
|
@@ -21568,7 +21387,7 @@ declare class CanvasFitService {
|
|
|
21568
21387
|
*/
|
|
21569
21388
|
recompute(): void;
|
|
21570
21389
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CanvasFitService, never>;
|
|
21571
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
21390
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
21572
21391
|
}
|
|
21573
21392
|
|
|
21574
21393
|
/**
|
|
@@ -21604,7 +21423,7 @@ declare class ZoomNavigationService {
|
|
|
21604
21423
|
*/
|
|
21605
21424
|
navigateToZoomTarget(targetSlideIndex: number): void;
|
|
21606
21425
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZoomNavigationService, never>;
|
|
21607
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
21426
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
21608
21427
|
}
|
|
21609
21428
|
|
|
21610
21429
|
/**
|
|
@@ -22030,13 +21849,24 @@ declare class SmartArt3DRendererComponent implements OnDestroy {
|
|
|
22030
21849
|
* SVG fallback branch is drawn into. Set only by the main interactive canvas.
|
|
22031
21850
|
*/
|
|
22032
21851
|
readonly markElement: _angular_core.InputSignal<boolean>;
|
|
21852
|
+
/**
|
|
21853
|
+
* Active font-style emphasis override (Bold Flash, Bold Reveal, Underline,
|
|
21854
|
+
* Change Font Style/Size) for every node's caption, driven by native-
|
|
21855
|
+
* animation playback. Mirrors `ChartElementViewComponent`'s `textStyle`
|
|
21856
|
+
* threading for the 3D chart scenes: a canvas-texture caption has no DOM
|
|
21857
|
+
* text node the CSS-injection path (`buildTextStyleOverrideCss`) can reach,
|
|
21858
|
+
* so the scene's own `setTextStyle` handle method is the only way in.
|
|
21859
|
+
*/
|
|
21860
|
+
readonly textStyle: _angular_core.InputSignal<TextStyleAnimationDescriptor | undefined>;
|
|
22033
21861
|
private readonly canvas;
|
|
22034
21862
|
private readonly containerEl;
|
|
22035
21863
|
private readonly nodeEditor3d;
|
|
22036
21864
|
/** `true` until the 3D scene is known to be mountable; renders the SVG fallback. */
|
|
22037
21865
|
readonly useFallback: _angular_core.WritableSignal<boolean>;
|
|
22038
21866
|
private readonly mountFn;
|
|
22039
|
-
|
|
21867
|
+
/** The live mounted handle, or `null` while unmounted. A signal so
|
|
21868
|
+
* `setTextStyle` re-applies as soon as it (or the input) changes. */
|
|
21869
|
+
private readonly handle;
|
|
22040
21870
|
protected readonly editState: _angular_core.WritableSignal<InlineEditState | null>;
|
|
22041
21871
|
/** Live draft text, updated on every input event. */
|
|
22042
21872
|
protected draftText: string;
|
|
@@ -22067,7 +21897,7 @@ declare class SmartArt3DRendererComponent implements OnDestroy {
|
|
|
22067
21897
|
private applyCommit;
|
|
22068
21898
|
ngOnDestroy(): void;
|
|
22069
21899
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SmartArt3DRendererComponent, never>;
|
|
22070
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SmartArt3DRendererComponent, "pptx-smart-art-3d-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "markElement": { "alias": "markElement"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
21900
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SmartArt3DRendererComponent, "pptx-smart-art-3d-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "markElement": { "alias": "markElement"; "required": false; "isSignal": true; }; "textStyle": { "alias": "textStyle"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
22071
21901
|
}
|
|
22072
21902
|
|
|
22073
21903
|
declare class SmartArtPreviewComponent {
|
|
@@ -22397,6 +22227,8 @@ declare class RibbonAnimationsSectionComponent {
|
|
|
22397
22227
|
readonly canEdit: _angular_core.InputSignal<boolean>;
|
|
22398
22228
|
readonly present: _angular_core.OutputEmitterRef<void>;
|
|
22399
22229
|
readonly toggleInspector: _angular_core.OutputEmitterRef<void>;
|
|
22230
|
+
/** "Animation Panel": open the inspector and expand its Animation section. */
|
|
22231
|
+
readonly openAnimationPanel: _angular_core.OutputEmitterRef<void>;
|
|
22400
22232
|
protected hasSel(): boolean;
|
|
22401
22233
|
protected canAuthor(): boolean;
|
|
22402
22234
|
/** The path the one-click "Path Animation" command applies. */
|
|
@@ -22422,7 +22254,7 @@ declare class RibbonAnimationsSectionComponent {
|
|
|
22422
22254
|
/** Remove all animations from the selected element. */
|
|
22423
22255
|
protected removeAnim(): void;
|
|
22424
22256
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonAnimationsSectionComponent, never>;
|
|
22425
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonAnimationsSectionComponent, "pptx-ribbon-animations-section", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, { "present": "present"; "toggleInspector": "toggleInspector"; }, never, never, true, never>;
|
|
22257
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonAnimationsSectionComponent, "pptx-ribbon-animations-section", never, { "slideIndex": { "alias": "slideIndex"; "required": false; "isSignal": true; }; "selectedElement": { "alias": "selectedElement"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, { "present": "present"; "toggleInspector": "toggleInspector"; "openAnimationPanel": "openAnimationPanel"; }, never, never, true, never>;
|
|
22426
22258
|
}
|
|
22427
22259
|
|
|
22428
22260
|
declare class RibbonArrangeSectionComponent {
|
|
@@ -22554,6 +22386,7 @@ declare class RibbonFileSectionComponent {
|
|
|
22554
22386
|
readonly save: _angular_core.OutputEmitterRef<void>;
|
|
22555
22387
|
readonly savePpsx: _angular_core.OutputEmitterRef<void>;
|
|
22556
22388
|
readonly savePptm: _angular_core.OutputEmitterRef<void>;
|
|
22389
|
+
readonly savePpt: _angular_core.OutputEmitterRef<void>;
|
|
22557
22390
|
readonly exportPng: _angular_core.OutputEmitterRef<void>;
|
|
22558
22391
|
readonly exportPdf: _angular_core.OutputEmitterRef<void>;
|
|
22559
22392
|
readonly exportGif: _angular_core.OutputEmitterRef<void>;
|
|
@@ -22613,7 +22446,7 @@ declare class RibbonFileSectionComponent {
|
|
|
22613
22446
|
*/
|
|
22614
22447
|
private pageActions;
|
|
22615
22448
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonFileSectionComponent, never>;
|
|
22616
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonFileSectionComponent, "pptx-ribbon-file-section", never, { "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "hasMacros": { "alias": "hasMacros"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; "recentPresentationsCount": { "alias": "recentPresentationsCount"; "required": false; "isSignal": true; }; "accountAuth": { "alias": "accountAuth"; "required": false; "isSignal": true; }; }, { "close": "close"; "createPresentation": "createPresentation"; "openFile": "openFile"; "openRecentFile": "openRecentFile"; "save": "save"; "savePpsx": "savePpsx"; "savePptm": "savePptm"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "exportJson": "exportJson"; "copySlideAsImage": "copySlideAsImage"; "print": "print"; "info": "info"; "signatures": "signatures"; "replace": "replace"; "openPassword": "openPassword"; "openFontEmbedding": "openFontEmbedding"; "openVersionHistory": "openVersionHistory"; "share": "share"; "options": "options"; }, never, never, true, never>;
|
|
22449
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonFileSectionComponent, "pptx-ribbon-file-section", never, { "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "hasMacros": { "alias": "hasMacros"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; "recentPresentationsCount": { "alias": "recentPresentationsCount"; "required": false; "isSignal": true; }; "accountAuth": { "alias": "accountAuth"; "required": false; "isSignal": true; }; }, { "close": "close"; "createPresentation": "createPresentation"; "openFile": "openFile"; "openRecentFile": "openRecentFile"; "save": "save"; "savePpsx": "savePpsx"; "savePptm": "savePptm"; "savePpt": "savePpt"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "exportJson": "exportJson"; "copySlideAsImage": "copySlideAsImage"; "print": "print"; "info": "info"; "signatures": "signatures"; "replace": "replace"; "openPassword": "openPassword"; "openFontEmbedding": "openFontEmbedding"; "openVersionHistory": "openVersionHistory"; "share": "share"; "options": "options"; }, never, never, true, never>;
|
|
22617
22450
|
}
|
|
22618
22451
|
|
|
22619
22452
|
declare class RibbonFontControlsComponent {
|
|
@@ -22944,6 +22777,7 @@ declare class RibbonPrimaryRowComponent {
|
|
|
22944
22777
|
readonly save: _angular_core.OutputEmitterRef<void>;
|
|
22945
22778
|
readonly savePpsx: _angular_core.OutputEmitterRef<void>;
|
|
22946
22779
|
readonly savePptm: _angular_core.OutputEmitterRef<void>;
|
|
22780
|
+
readonly savePpt: _angular_core.OutputEmitterRef<void>;
|
|
22947
22781
|
readonly copySlideAsImage: _angular_core.OutputEmitterRef<void>;
|
|
22948
22782
|
readonly shortcuts: _angular_core.OutputEmitterRef<void>;
|
|
22949
22783
|
readonly versionHistory: _angular_core.OutputEmitterRef<void>;
|
|
@@ -22966,7 +22800,7 @@ declare class RibbonPrimaryRowComponent {
|
|
|
22966
22800
|
protected onDocumentPointerDown(event: PointerEvent): void;
|
|
22967
22801
|
protected onOverflow(key: string): void;
|
|
22968
22802
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<RibbonPrimaryRowComponent, never>;
|
|
22969
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonPrimaryRowComponent, "pptx-ribbon-primary-row", never, { "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "sidebarCollapsed": { "alias": "sidebarCollapsed"; "required": false; "isSignal": true; }; "inspectorOpen": { "alias": "inspectorOpen"; "required": false; "isSignal": true; }; "commentsOpen": { "alias": "commentsOpen"; "required": false; "isSignal": true; }; "commentCount": { "alias": "commentCount"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; "aiEnabled": { "alias": "aiEnabled"; "required": false; "isSignal": true; }; "aiPanelOpen": { "alias": "aiPanelOpen"; "required": false; "isSignal": true; }; }, { "toggleSidebar": "toggleSidebar"; "toggleAiPanel": "toggleAiPanel"; "toggleComments": "toggleComments"; "present": "present"; "presenter": "presenter"; "broadcast": "broadcast"; "openCustomShows": "openCustomShows"; "toggleInspector": "toggleInspector"; "openSettings": "openSettings"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "print": "print"; "info": "info"; "a11y": "a11y"; "save": "save"; "savePpsx": "savePpsx"; "savePptm": "savePptm"; "copySlideAsImage": "copySlideAsImage"; "shortcuts": "shortcuts"; "versionHistory": "versionHistory"; "passwordProtection": "passwordProtection"; "fontEmbedding": "fontEmbedding"; "digitalSignatures": "digitalSignatures"; }, never, never, true, never>;
|
|
22803
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<RibbonPrimaryRowComponent, "pptx-ribbon-primary-row", never, { "slideCount": { "alias": "slideCount"; "required": false; "isSignal": true; }; "sidebarCollapsed": { "alias": "sidebarCollapsed"; "required": false; "isSignal": true; }; "inspectorOpen": { "alias": "inspectorOpen"; "required": false; "isSignal": true; }; "commentsOpen": { "alias": "commentsOpen"; "required": false; "isSignal": true; }; "commentCount": { "alias": "commentCount"; "required": false; "isSignal": true; }; "hiddenActions": { "alias": "hiddenActions"; "required": false; "isSignal": true; }; "aiEnabled": { "alias": "aiEnabled"; "required": false; "isSignal": true; }; "aiPanelOpen": { "alias": "aiPanelOpen"; "required": false; "isSignal": true; }; }, { "toggleSidebar": "toggleSidebar"; "toggleAiPanel": "toggleAiPanel"; "toggleComments": "toggleComments"; "present": "present"; "presenter": "presenter"; "broadcast": "broadcast"; "openCustomShows": "openCustomShows"; "toggleInspector": "toggleInspector"; "openSettings": "openSettings"; "exportPng": "exportPng"; "exportPdf": "exportPdf"; "exportGif": "exportGif"; "exportVideo": "exportVideo"; "print": "print"; "info": "info"; "a11y": "a11y"; "save": "save"; "savePpsx": "savePpsx"; "savePptm": "savePptm"; "savePpt": "savePpt"; "copySlideAsImage": "copySlideAsImage"; "shortcuts": "shortcuts"; "versionHistory": "versionHistory"; "passwordProtection": "passwordProtection"; "fontEmbedding": "fontEmbedding"; "digitalSignatures": "digitalSignatures"; }, never, never, true, never>;
|
|
22970
22804
|
}
|
|
22971
22805
|
|
|
22972
22806
|
declare class RibbonReviewSectionComponent {
|
|
@@ -23095,6 +22929,8 @@ declare class RibbonTransitionsSectionComponent {
|
|
|
23095
22929
|
/** What the Sound `<select>` shows: the picked file's name, None, or the browse entry. */
|
|
23096
22930
|
protected readonly soundOptions: _angular_core.Signal<TransitionSoundOption[]>;
|
|
23097
22931
|
protected readonly soundSelectedValue: _angular_core.Signal<string>;
|
|
22932
|
+
protected readonly stockSoundId: _angular_core.Signal<string | undefined>;
|
|
22933
|
+
protected onSoundPreview(): void;
|
|
23098
22934
|
/**
|
|
23099
22935
|
* Sound writes a raw `Partial<PptxSlideTransition>` straight onto the
|
|
23100
22936
|
* active slide rather than going through the ribbon draft: the picked
|
|
@@ -23309,6 +23145,18 @@ declare class WriteBackScheduler {
|
|
|
23309
23145
|
cancel(): void;
|
|
23310
23146
|
}
|
|
23311
23147
|
|
|
23148
|
+
/** Resolved per-stroke data used to render a single `<path>`, circle set, or nib-mark set. */
|
|
23149
|
+
type InkStroke = InkGroupStrokeView;
|
|
23150
|
+
/**
|
|
23151
|
+
* Narrow `element` to `InkPptxElement` and return the resolved per-stroke
|
|
23152
|
+
* array, or an empty array when the element is not an ink element.
|
|
23153
|
+
*/
|
|
23154
|
+
declare function buildInkStrokes(element: PptxElement): InkStroke[];
|
|
23155
|
+
/** Minimum SVG viewport dimension (clamp to ≥ 1 to avoid degenerate viewBox). */
|
|
23156
|
+
declare function inkViewBox(element: PptxElement): string;
|
|
23157
|
+
/** Wrapper `[ngStyle]`-compatible style for the ink container `<div>`. */
|
|
23158
|
+
declare function buildInkContainerStyle(element: PptxElement, zIndex: number): StyleMap;
|
|
23159
|
+
|
|
23312
23160
|
/**
|
|
23313
23161
|
* Pure (Angular-free) helpers for the `<a:clrChange>` colour-change image
|
|
23314
23162
|
* effect. Kept out of the component so they can be unit-tested without TestBed
|
|
@@ -23967,6 +23815,6 @@ declare function thumbnailHeight(canvasW: number, canvasH: number, thumbW: numbe
|
|
|
23967
23815
|
*/
|
|
23968
23816
|
declare function gridColumns(containerW: number, thumbW: number, gap: number, maxCols: number): number;
|
|
23969
23817
|
|
|
23970
|
-
export { AFTER_ANIMATION_VALUES, ALIGN_OPTIONS, ANIMATION_PRESET_CATEGORIES, AUDIENCE_HASH, AUDIENCE_NONCE_KEY, AVATAR_COLOR_SWATCHES, AXIS_LABEL_COLOR, AccessibilityPanelComponent, AccessibilityService, AccessibilityTextPanelComponent, AccountPageComponent, ActionSettingsPanelComponent, AdvancedChartEditorComponent, AiChangeOverlayComponent, AiChatPanelComponent, AiChatService, AiComposerComponent, AiFocusBarComponent, AiFocusHighlightOverlayComponent, AiHistoryMenuComponent, AiHistoryService, AiMessageListComponent, AiPanelStore, AiProposalCardComponent, AiSettingsSectionComponent, AiToolCallCardComponent, AnimationAuthorPanelComponent, AnimationPanelComponent, AnimationPlaybackService, AutosaveRecoveryDialogComponent, AutosaveService, BroadcastDialogComponent, CHART_EDITOR_STYLES, CURSOR_PALETTE, CanvasFitService, ChartAxisOptionsComponent, ChartAxisStyleOptionsComponent, ChartComboTypeOptionsComponent, ChartDataEditorComponent, ChartDataLabelOptionsComponent, ChartDatapointMarkerOptionsComponent, ChartDatapointOptionsComponent, ChartDisplayOptionsComponent, ChartElementViewComponent, ChartErrorBarOptionsComponent, ChartMarkerOptionsComponent, ChartPartSelectionService, ChartPrimitivesComponent, ChartRendererComponent, ChartTrendlineOptionsComponent, ChartTypeSelectorComponent, CollaborationCursorsComponent, CollaborationService, ColorChangedImageComponent, CommentMarkersOverlayComponent, CommentsPanelComponent, CommentsService, ComparePanelComponent, ConnectorRendererComponent, ConnectorTextOverlayComponent, CustomShowsComponent, DEFAULT_BOUNDS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_COLOR_SCHEME, DEFAULT_FILL_COLOR, DEFAULT_LAYOUT, DEFAULT_PALETTE$1 as DEFAULT_PALETTE, DEFAULT_PATTERN_FILL_PRESET, DEFAULT_PRINT_SETTINGS, DEFAULT_SLIDE_BACKGROUND, DEFAULT_STROKE_COLOR, DEFAULT_STYLE, DEFAULT_TABLE_ROW_HEIGHT, DEFAULT_TEXT_COLOR, DEFAULT_VIEWER_PROFILE, DIRECTIONAL_PRESETS, DIRECTION_OPTIONS, DocumentPropertiesCardComponent, EMBEDDED_FONTS_STYLE_ID, EMPHASIS_PRESETS, ENTRANCE_PRESETS, TEMPLATES as EQUATION_TEMPLATES, EXIT_PRESETS, EditorContextMenuComponent, EditorHistory, EditorStateService, EditorToolbarComponent, EffectsPanelComponent, ElementRendererComponent, EmbeddedFontsService, EncryptedFileDialogComponent, EquationEditorDialogComponent, EquationRendererComponent, EquationTemplateGalleryComponent, ExportProgressModalComponent, ExportService, FieldContextService, FindBarComponent, FindReplaceBarComponent, FollowModeBarComponent, FontEmbeddingListComponent, FontEmbeddingPanelComponent, GALLERY_THEME_PRESETS, GOOGLE_WEBFONTS_LINK_ID, GRIDLINE_COLOR, GoogleWebfontsService, GradientPickerComponent, HANDOUT_OPTIONS, HeaderFooterDialogComponent, HyperlinkDialogComponent, ImagePropertiesPanelComponent, InkDrawingService, InkRendererComponent, InsertSmartArtDialogComponent, InspectorPaneHeaderComponent, InspectorPanelComponent, IsMobileService, KeepAnnotationsDialogComponent, LOCALE_CATALOG, LONG_PRESS_DURATION_MS, LONG_PRESS_MOVE_TOLERANCE_PX, LoadContentService, LocalPresencePublisher, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, MOTION_PATH_COLUMNS, MediaPreviewComponent, MediaPropertiesPanelComponent, MediaRendererComponent, MediaTrimTimelineComponent, MobileBottomBarComponent, MobileMenuSheetComponent, MobilePresenterViewComponent, MobileSheetComponent, MobileSlidesSheetComponent, MobileToolbarComponent, ModalDialogComponent, Model3DRendererComponent, NotesHandoutCardComponent, NotesPanelComponent, NotesToolbarComponent, OleRendererComponent, OutlineViewOverlayComponent, POWER_POINT_VIEWER_PROVIDERS, PPTX_OPEN_ACCEPT, PRESENTATION_OPEN_EXTENSIONS, PRESENTER_CHANNEL_NAME, PRESENTER_MSG_ORIGIN, PRESENTER_TIMER_SEGMENT_MS, PX_PER_CM, PX_PER_INCH, PasswordProtectionDialogComponent, PasswordStrengthMeterComponent, PowerPointViewerComponent, PresentToolbarAutoHide, PresentationAnnotationOverlayComponent, PresentationAnnotationsService, PresentationOverlayComponent, PresentationPropertiesPanelComponent, PresentationSettingsCardComponent, PresentationSubtitleBarComponent, PresentationToolbarComponent, PresentationTransitionOverlayComponent, PresenterViewComponent, PresenterWindowService, PrintDialogComponent, PrintService, PrintSettingsPanelComponent, PropertiesDialogComponent, REPEAT_MODE_OPTIONS, RESIZE_HANDLES, RULER_FONT_SIZE, RULER_THICKNESS, ReadingViewOverlayComponent, RemoteSelectionOverlayComponent, RibbonAnimationGalleryComponent, RibbonAnimationsSectionComponent, RibbonArrangeSectionComponent, RibbonColorPopoverComponent, RibbonComponent, RibbonDesignSectionComponent, RibbonDrawSectionComponent, RibbonDrawingGroupComponent, RibbonEditingSectionComponent, RibbonFileSectionComponent, RibbonFontControlsComponent, RibbonHomeSectionComponent, RibbonHyperlinkButtonComponent, RibbonInsertFieldsComponent, RibbonInsertSectionComponent, RibbonMotionPathGalleryComponent, RibbonParagraphControlsComponent, RibbonPrimaryRowComponent, RibbonReviewSectionComponent, RibbonShapeExtrasComponent, RibbonSlideshowSectionComponent, RibbonTransitionsSectionComponent, RibbonViewSectionComponent, RulerGuidesService, SEQUENCE_OPTIONS, SEVERITY_GROUPS, SEVERITY_LABELS, SHORTCUT_REFERENCE_ITEMS, SLIDE_TRANSITION_KEYFRAMES, DEFAULT_PALETTE as SMARTART_DEFAULT_PALETTE, PALETTES as SMARTART_PALETTES, SMART_ART_COLOR_SCHEMES, SMART_ART_STYLE_OPTIONS, SUB_ITEM_LABEL, SVG_WARP_PRESETS, SWIPE_MAX_VERTICAL_PX, SWIPE_THRESHOLD_PX, SelectionPaneComponent, SetUpSlideShowDialogComponent, SettingsAppearanceTabComponent, SettingsDialogComponent, SettingsLanguageTabComponent, ShareDialogComponent, ShortcutPanelComponent, ShowOptionsFieldsetComponent, ShowSlidesFieldsetComponent, SignatureStrippedDialogComponent, SignaturesPanelComponent, SignaturesService, SlideBackgroundCardComponent, SlideCanvasComponent, SlideDefaultInspectorComponent, SlideDiffChangesComponent, SlideDiffRowComponent, SlideDiffThumbnailsComponent, SlideSizeCardComponent, SlideSorterOverlayComponent, SlideThemeOverridePanelComponent, SlideTransitionCardComponent, SlidesPanelComponent, SmartArt3DRendererComponent, SmartArt3DService, SmartArtPreviewComponent, SmartArtPropertiesComponent, SmartArtRendererComponent, StatusBarComponent, TABLE_STRUCTURE_TOGGLES, TEXT_3D_BOTTOM_BEVEL_KEYS, TEXT_3D_TOP_BEVEL_KEYS, TEXT_DIRECTION_OPTIONS, THEME_CATALOG, TIMING_CURVE_OPTIONS, TRIGGER_OPTIONS, TYPE_LABELS, TableCellAdvancedFillComponent, TableCellFormattingComponent, TableDataEditorComponent, TablePropertiesComponent, TableRendererComponent, TableResizeOverlayComponent, TableSelectionService, TagsCardComponent, Text3DBevelSectionComponent, Text3DPanelComponent, TextAdvancedPanelComponent, ThemeEditorFieldsComponent, ThemeGalleryComponent, ThemeSelectorCardComponent, TitleBarComponent, TitleBarSearchComponent, TransitionDirectionPickerComponent, TransitionPreviewComponent, VALIGN_OPTIONS, VIEWER_THEME, VersionHistoryPanelComponent, ViewerCanvasEditingService, ViewerCollabCursorService, ViewerCollaborationSessionService, ViewerCompareService, ViewerCustomShowsService, ViewerDialogsService, ViewerDocumentPropertiesService, ViewerExportService, ViewerExtraDialogsComponent, ViewerFileIOService, ViewerFindReplaceService, ViewerFormatPainterService, ViewerInspectorPanelService, ViewerKeyboardService, ViewerMobileSheetService, ViewerPresentationModeService, ViewerThemeGalleryService, ViewerTouchGesturesService, ViewerZoomService, WEBM_MIME_CANDIDATES, WriteBackScheduler, ZERO_LINE_COLOR, ZoomNavigationService, ZoomRendererComponent, ZoomTargetService, addCategory, addCommentToList, addGradientStopPatch, addItem, addSeries, addSubItem, advanceStep, affordanceElements, aiToggleVisible, alignPatch, animationFor, animationPresetLabelKey, annotationMapToInkInserts, applyAcceptedDiff, applyAnimationPreset, applyFindReplacements, applyFormatToElement, applyMove, applyResize, asMediaElement, assignUserColor, attachShowVisibilityPause, attachTouchGestures, axisTickValues, beginNodeEdit, bevelSizePatch, boolFromEvent, bringForward, bringToFront, buildBarActions, buildBroadcastConfig, buildBroadcastViewerUrl, buildCategoryLabels, buildCellParagraphs, buildChartViewModel, buildChatLogExport, buildChatLogMarkdown, buildChromeStyle, buildClearHyperlinkPatch, buildClickGroups, buildColStyles, buildCollaborationConfig, buildComboViewModel, buildCssGradientFromShapeStyle, buildDuotoneFilter, buildDuotoneFilterId, buildEmbeddedFontStyles, buildEquationElement, buildEquationSegment, buildFallbackViewModel, buildFontFaceRule, buildGradientFillCss, buildGridlinesAndLabels, buildHyperlinkPatch, buildInkContainerStyle, buildInkStrokes, buildLegend, buildMarkTooltip, buildModel3DContainerStyle, buildModel3DViewModel, buildOleActionModel, buildOleInfoRows, buildPatternFillCss, buildPieViewModel, buildPrintHtmlDocument as buildPrintDocument, buildPropertiesPatch, buildRadarViewModel, buildRegionMapViewModel, buildSaveSlides, buildShareUrl, buildSmartArtInsertElement, buildSmartArtNodes, buildStockViewModel, buildSurfaceViewModel, buildTableViewModel, buildTreemapViewModel, buildTrimFragment, buildWaterfallViewModel, buildZeroLine, buildZoomContainerStyle, buildZoomViewModel, bulletIndentPx, canAddTopLevelNode, canEditSmartArtNodes, canGroupSelection, canRemoveTopLevelNode, canSetStrokeWidth, canStartBroadcast, canStartShare, canUngroupSelection, canUseClipboard, captionDisplayText, cellRunStyle, cellStyleToStyleMap, cellTdStyle, changeCountLabel, changeIcon, characterSpacingPatch, chartPreserveAspectRatio, checkFontAvailable, clampCursorPosition, clampGifDimensions, clampIndex, clampNotesFontSize, clampScale, clampStep, clearAllLocalViewerData, clearAudienceContent, cn, collectAccessibilityIssues, collectElementText, collectSlideText, collectStoredChats, collectUsedFontFamilies, columnWidthStyle, commitNodeText, computeAlign, computeAxisTitlePrimitives, computeBarRects, computeBubbleRadius, computeCornerHandle, computeDistribute, computeDrawingViewBox, computeErrorBarPrimitives, computeFocusTargets, computeGridSpacingPx, computeHandleBoxes, computeHandoutLayout, computeIsMobile, computeIsTablet, computeLinePoints, computeLinearRegression, computePageCount, computePieLayout, computePieSlicePath, computePieSlices, computePlotLayout, computeRSquared, computeRadarPoints, computeResizeHandleBoxes, computeRotateHandleBox, computeScatterDots, computeScatterXDomain, computeSelectionBoxes, computeSingleSelected, computeSlideIndices, computeSnap, computeStackedBarRects, computeStackedValueRange, computeTrendlinePrimitives, computeValueRange, convertOmmlToMathMl, copyFormatFromElement, countAccessibilityIssues, countAnnotationStrokes, createAngularAiBridge, createCustomShow, createSwipeDismissDrag, createWebrtcBundle, createWebsocketBundle, cssObjectToStyleMap, currentColorScheme, currentLayout, currentStyle, defaultCssVars, defaultRadius, defaultThemeColors, deleteElementsByIds, deleteVersion as deleteRecoveryVersion, demoteNode, deriveModel3DBlobUrl, derivePresenceList, describeSmartArtBounds, disableGlowPatch, disableInnerShadowPatch, disableOuterShadowPatch, disableReflectionPatch, disableSoftEdgePatch, duplicateElementById, durationOf, effectsStateOf, enableGlowPatch, enableInnerShadowPatch, enableOuterShadowPatch, enableReflectionPatch, enableSoftEdgePatch, encodeGif, endShowMediaCleanup, estimatePageCount, exitPresentationFullscreen, exportAiChatLogs, extractPathPoints, eyedropperAvailable, fillColorOf, findInSlides, findOwningSlideIndex, findSlideIndexByElementId, firstVisibleIndex, fitPolynomial, fitZoom, focusTargetChips, fontMimeForFormat, fontSizeOf, forgetSessionDeck, formatAxisValue, formatBytes, formatCursorLabel, formatElapsed, formatFileSize, formatPropertyDate, formatTime, fpsToFrameIntervalMs, generateBroadcastRoomId, generateCommentId, generateCustomShowId, generatePressureCircles, generateTicks, getClrChangeParams, getContainerStyle, getDuotoneFilterDef, getEffectSoundState, getImageSrc, getLocalStorageUsageSummary, getOleAriaLabel, getOleBadgeLabel, getOleDisplayName, getOleDownloadFileName, getOleTypeColor, getOleTypeLabel, getPasswordStrength, getPatternSvg, getPlaceholderStyle, getVersions as getRecoveryVersions, getResolvedShapeClipPath, getResolvedShapeClipPathFor, getSessionTabId, getShapeFillStrokeStyle, getSlideBackgroundStyle, getSlideTransitionAnimations, getSmartArtNodeBounds, getSpeechRecognitionCtor, getTextBlockStyle, getTextWarp, getTouchDistance, getWarpCategory, getWarpPath, gradientStateFromStyle, gradientStateOf, gradientStatePatch, gradientStopColorCommitPatch, gridColumns, groupIssuesBySeverity, hasAnimation, hasCopyableFormat, hasExistingLink, hasExitedFullscreen, hasGradientFill, hasPressureVariation, hasVisibleSlideAfter, headerLabel, imageDimensions, inkViewBox, insertTableElementColumn as insertColumn, insertTableElementRow as insertRow, interpolateWidth, isAudienceTab, isBold, isBrowserOpenableMime, isChildNode, isElementInteractive, isInjectableUrl, isItalic, isLegacyBinaryPresentation, isPpactionUrl, isPresenterMessage, isSigned, isSupportedPresentationFile, isTextElement, isTwoTableFocus, isUnderline, isUrlSafe, isValidRoomId, isViewportBackgroundPressTarget, isZoomActivationKey, issueTrackKey, issueTypeLabel, keyToLabel, lastVisibleIndex, latexToMathml, layoutConnectorPaints, layoutNodeLabels, linePointsToSvgString, lineSpacingPatch, loadAudienceContent, loadSessionDeck, mediaFallbackFor, mediaSurfaceFor, mergeCaptionResults, mergeDown, mergeRight, mergeSelection, mergeTablesDirective, moveElementBy, moveNodeDown, moveNodeUp, msToFrameDelayCs, narrowToCircle, narrowToPolygon, narrowToRect, newChartElement, newEquationElement, newPresetShapeElement, newShapeElement, newSmartArtElement, newTableElement, newTextElement, nextVisibleIndex, nodeBold, nodeEditBox, nodeFillColor, nodeFontColor, nodeIdFromKey, nodeItalic, nodeStyle, normalizeFontFormat, normalizeSlidesPerPage, normalizeValue, numFromEvent, ommlToMathml, ooxmlDashToCssBorderStyle, openNativeEyeDropper, overallStatus, paletteColor, parseAudienceNonce, parseNodeTextarea, partitionSlides, patchChartData, patchChartStyle, patchTableData, patchTextStyle, patternPresetOptions, pendingElementStyles, pickColorByClickFallback, pickFile, pickSupportedMimeType, planGifFrames, planVideoSegments, pointsToSvgPathD, presenceToCursors, presentationBaseName, presentationStageStyle, presenterTimerProgress, presetByLayout, presetsForCategory, pressuresToWidths, prevVisibleIndex, projectDrawingShapes, promoteNode, provideViewerTheme, radarAngle, radarRingPoints, readAsDataUrl, recordWebm, registerCrossSlideAudio, rememberSessionDeck, removeAnimation, removeCategory, removeTableElementColumn as removeColumn, removeCommentFromList, removeElementAnimation, removeGradientStopPatch, removeNode, removeTableElementRow as removeRow, removeSeries, renderToCanvas, reorderAnimationDown, reorderAnimationUp, replaceInSlides, replaceMatch, requestPresentationFullscreen, resizeElement, resolveCaptionTracks, resolveChartKind, resolveFontVariant, resolveHyperlinkHref, resolveInteractiveElementId, resolveMediaSrc, resolveOleType, resolveParagraphBullet, resolvePresenterNotes, resolveProfileInitial, resolveRegionCode, resolveRibbonCanGroup, resolveSlideAutoAdvanceMs, resolvePalette as resolveSmartArtPalette, resolveThemeCatalogEntry, resolveTransitionDuration, restoreSessionDeck, revealedElementStyles, routeOrthogonalConnector, rowStyle, rulerDragToGuidePosition, rulerHighlight, rulerStripTicks, sampleColorFromSlide, sanitizeColor, sanitizeSlideIndex, sanitizeUserName, saveViewerProfile, savedPresentationFileName, scanAvailableFonts, searchSlides, seedBroadcastFields, seedHyperlinkDraft, seedPropertiesDraft, seedShareFields, segmentFrameCount, selectValue, sendBackward, sendToBack, sequentialColorScale, serializeWriteBack, seriesColor, setAfterAnimation, setAfterAnimationColor, setAnimationEmphasis, setAnimationEntrance, setAnimationExit, setAxis, setAxisLogScale, setAxisTitleStyle, setCategoryLabel, setCellText, setColorScheme, setDataLabels, setDataPointExplosion, setDataPointFill, setDataPointLabel, setDataPointMarker, setDelay, setDirection, setDuration, setEffectSound, setElementPosition, setGridlineStyle, setLayout, setLegend, setNodeStyle, setNodeText, setRepeatCount, setRepeatMode, setSequence, setSeriesChartType, setSeriesColor, setSeriesErrorBars, setSeriesMarker, setSeriesName, setSeriesTrendline, setSeriesValue, setStyle, setTimingCurve, setTitle, setTrigger, setTriggerShapeId, shapeStylePatch, sheetAfterNavigate, shouldBlockClickAdvance, shouldUseSvgWarp, showDirectionPicker, showsTemplateAffordance, signatureCountLabel, signatureKey, signatureTimestamp, signerName, statusLabel as slideDiffStatusLabel, slideNumberOf, slidesWithReappliedLayout, smartArtNodes, paletteColour as smartArtPaletteColour, snapToGridStep, splitCursorCell, splitMergedCell, statusKind, statusLabel$1 as statusLabel, storeAudienceContent, stringFromEvent, strokeColorOf, strokeToInkElement, strokeWidthOf, styleShadowFilter, surfaceColor, textAdvancedPatch, textAdvancedStateFromStyle, textAdvancedStateOf, textColorOf, textDirectionPatch, textFontSizePatch, textStyleOf, textStylePatch, themeStyle, themeToCssVars, thumbnailHeight, thumbnailZoom, toggleCommentResolvedInList, toggleNodeBold, toggleNodeItalic, toggleSheet, topLevelNodeCount, transformSelectedTextCase, translationsEn, updateElementById, updateGlowPatch, updateGradientStopPatch, updateInnerShadowPatch, updateOuterShadowPatch, updateReflectionPatch, vAlignPatch, validatePassword, validatePrintSettings, validateRoomId, valueToY, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, waypointsToPathD, withManualLayouts, worstStatus, zoomTargetSlideIndex };
|
|
23971
|
-
export type { AccessibilityIssueGroup, AccountAuthConfig, ActionDescriptor, ActiveShow, AiCanvasHighlight, AiChatInitState, AiHistoryInitDeps, AiLogChat, AiLogExport, AiLogFormat, AiLogMessage, AiPanelSelectionAccessors, AlignBox, AlignMode, AnimationClickGroup, AnimationGroup, AnimationPresetCategory, AnimationPresetEntry, AnimationPresetPick, AnnotationInkInsert, AnnotationStroke, AttachTouchGesturesConfig, AuthoredRange, AwarenessLike, BarRect, Box, BridgeDeps, BroadcastConfig, BroadcastDefaults, BubbleRadiusOptions, CSSProperties, CanvasSize, CellCoord, CellParagraph, CellTextRun, ChartPartRef, ChartPartSelection, ChartSvgDef, ChartSvgPatternDef, ChartValueDrag, ChartViewModel, ClassValue, ClrChangeParams, CollaborationConfig, CollaborationRole, RouterRect as ConnectorObstacle, RouterPoint as ConnectorPoint, ConnectorRouting, CopiedFormat, CornerHandleBox, CustomShow, CustomThemeEdit, DestroyableYDoc, DiagonalBorderInfo, DistributeMode, DocumentProperties, DrawingViewBox, DuotoneFilterDef, EffectSoundState, EffectsState, EmbeddedFontStyles, EquationTemplate, EyedropperResult, FindOptions, FindResult, FocusChip, FocusSelectionInput, GifFrame, GifFramePlan, GifPlanOptions, GlowState, GradientState, GradientStop$1 as GradientStop, HandleBox, HandoutSlidesPerPage, HyperlinkDraft, InkPoint, InkStroke, InlineEditState, InnerShadowState, LegendEntry, LinePoint, LinearFit, LocalIdentity, LocalStorageUsageSummary, LocaleCatalogEntry, MobileSheetKey, Model3DViewModel, MotionPathColumn, MotionPathEntry, NodeEditBox, NotesSegmentViewModel, ObjectUrlFactory, OleActionModel, OleInfoRow, OuterShadowState, OutlineCommit, OverallSignatureStatus, PartitionedSlides, PathPoint, PieSliceGeometry, PieSliceOptions, PlotLayout, PlotLayoutOptions, PositionUpdate, PowerPointViewerAPI, PptxAiBridge, PptxAiConfig, PptxAiConnection, PptxAiContextStrategy, PptxAiElementUpdate, PptxAiToolName, PptxAiUIMessage, PptxAiWritePolicy, PresentToolbarAction, PresentationTool, PresenterExitMessage, PresenterMessage, PresenterNotes, PresenterSlideChangeMessage, PresenterTimerProgress, PressureCircle, PrintColorMode, PrintHtmlDocumentOptions as PrintDocumentOptions, PrintOrientation, PrintSettings, PrintSlideRange, PrintWhat, PropertiesDraft, ProposalView, ProviderBundle, ProviderLike, RadarPoint, RecordWebmOptions, RecoveryVersion, ReflectionState, RemoteCursor, SanitizedPresence as RemotePresence, RenderedShape, ReplaceResult, ResizeHandle, ResolvedCaptionTrack, ResolvedFontVariant, ResolvedOleType, RulerUnit, SavedPresentationFormat, ScatterDot, ScatterXDomain, SelectionBox, SessionDeck, ShapeStyleChanges, ShareDefaults$1 as ShareDefaults, ShareFormFields, ShortcutReferenceItem, SignatureStatusKind, SlideInspectorTab, SlideTransitionAnimations, SmartArtInsertEvent, SmartArtNodeBounds, SnapBox, SnapGuide, SnapResult, SoftEdgeState, SpeechAlternative, SpeechRecognitionCtor, SpeechRecognitionEventLite, SpeechRecognitionLite, SpeechResult, SpeechResultList, SpeechSupportState, StagedProposal, StrokeToInkElementOpts, StyleMap, SupportedChartKind, SvgAreaGradient, SvgCircle, SvgLine, SvgPath, SvgPolygon, SvgPolyline, SvgPrimitive, SvgRect, SvgText, SwipeDismissDrag, TableBooleanFlag, TableCellSelection, TableCellViewModel, TableRowViewModel, TemplateElementsBySlideId, Text3DBevelKeys, TextAdvancedChanges, TextAdvancedState, TextStyleChanges, TextWarpCssDef, TextWarpDef, TextWarpPathDef, ThemeCatalogEntry, Tick, ToolbarActionId, TouchGestureCallbacks, TranslationKey, ValueRange, VideoPlanOptions, VideoSegmentPlan, ViewerMode, ViewerProfile, ViewerSettings, ViewerTheme, ViewerThemeColors, ZoomTranslate, ZoomViewModel };
|
|
23818
|
+
export { AFTER_ANIMATION_VALUES, ALIGN_OPTIONS, ANIMATION_PRESET_CATEGORIES, AUDIENCE_HASH, AUDIENCE_NONCE_KEY, AVATAR_COLOR_SWATCHES, AXIS_LABEL_COLOR, AccessibilityPanelComponent, AccessibilityService, AccessibilityTextPanelComponent, AccountPageComponent, ActionSettingsPanelComponent, AdvancedChartEditorComponent, AiChangeOverlayComponent, AiChatPanelComponent, AiChatService, AiComposerComponent, AiFocusBarComponent, AiFocusHighlightOverlayComponent, AiHistoryMenuComponent, AiHistoryService, AiMessageListComponent, AiPanelStore, AiProposalCardComponent, AiSettingsSectionComponent, AiToolCallCardComponent, AnimationAuthorPanelComponent, AnimationPanelComponent, AnimationPlaybackService, AutosaveRecoveryDialogComponent, AutosaveService, BroadcastDialogComponent, CHART_EDITOR_STYLES, CURSOR_PALETTE, CanvasFitService, ChartAxisOptionsComponent, ChartAxisStyleOptionsComponent, ChartComboTypeOptionsComponent, ChartDataEditorComponent, ChartDataLabelOptionsComponent, ChartDatapointMarkerOptionsComponent, ChartDatapointOptionsComponent, ChartDisplayOptionsComponent, ChartElementViewComponent, ChartErrorBarOptionsComponent, ChartMarkerOptionsComponent, ChartPartSelectionService, ChartPrimitivesComponent, ChartRendererComponent, ChartTrendlineOptionsComponent, ChartTypeSelectorComponent, CollaborationCursorsComponent, CollaborationService, ColorChangedImageComponent, CommentMarkersOverlayComponent, CommentsPanelComponent, CommentsService, ComparePanelComponent, ConnectorRendererComponent, ConnectorTextOverlayComponent, CustomShowsComponent, DEFAULT_BOUNDS, DEFAULT_BROADCAST_SERVER_URL, DEFAULT_CANVAS_HEIGHT, DEFAULT_CANVAS_WIDTH, DEFAULT_COLOR_SCHEME, DEFAULT_FILL_COLOR, DEFAULT_LAYOUT, DEFAULT_PALETTE$1 as DEFAULT_PALETTE, DEFAULT_PATTERN_FILL_PRESET, DEFAULT_PRINT_SETTINGS, DEFAULT_SLIDE_BACKGROUND, DEFAULT_STROKE_COLOR, DEFAULT_STYLE, DEFAULT_TABLE_ROW_HEIGHT, DEFAULT_TEXT_COLOR, DEFAULT_VIEWER_PROFILE, DIRECTIONAL_PRESETS, DIRECTION_OPTIONS, DocumentPropertiesCardComponent, EFFECT_SOUND_CATALOGUE, EMBEDDED_FONTS_STYLE_ID, EMPHASIS_PRESETS, ENTRANCE_PRESETS, TEMPLATES as EQUATION_TEMPLATES, EXIT_PRESETS, EditorContextMenuComponent, EditorHistory, EditorStateService, EditorToolbarComponent, EffectsPanelComponent, ElementRendererComponent, EmbeddedFontsService, EncryptedFileDialogComponent, EquationEditorDialogComponent, EquationRendererComponent, EquationTemplateGalleryComponent, ExportProgressModalComponent, ExportService, FieldContextService, FindBarComponent, FindReplaceBarComponent, FollowModeBarComponent, FontEmbeddingListComponent, FontEmbeddingPanelComponent, GALLERY_THEME_PRESETS, GOOGLE_WEBFONTS_LINK_ID, GRIDLINE_COLOR, GoogleWebfontsService, GradientPickerComponent, HANDOUT_OPTIONS, HeaderFooterDialogComponent, HyperlinkDialogComponent, ImagePropertiesPanelComponent, InkDrawingService, InkRendererComponent, InsertSmartArtDialogComponent, InspectorPaneHeaderComponent, InspectorPanelComponent, IsMobileService, KeepAnnotationsDialogComponent, LOCALE_CATALOG, LONG_PRESS_DURATION_MS, LONG_PRESS_MOVE_TOLERANCE_PX, LoadContentService, LocalPresencePublisher, MAX_ZOOM_SCALE, MIN_ZOOM_SCALE, MOTION_PATH_COLUMNS, MediaPreviewComponent, MediaPropertiesPanelComponent, MediaRendererComponent, MediaTrimTimelineComponent, MobileBottomBarComponent, MobileMenuSheetComponent, MobilePresenterViewComponent, MobileSheetComponent, MobileSlidesSheetComponent, MobileToolbarComponent, ModalDialogComponent, Model3DRendererComponent, NotesHandoutCardComponent, NotesPanelComponent, NotesToolbarComponent, OleRendererComponent, OutlineViewOverlayComponent, POWER_POINT_VIEWER_PROVIDERS, PPTX_OPEN_ACCEPT, PRESENTATION_OPEN_EXTENSIONS, PRESENTER_CHANNEL_NAME, PRESENTER_MSG_ORIGIN, PRESENTER_TIMER_SEGMENT_MS, PX_PER_CM, PX_PER_INCH, PasswordProtectionDialogComponent, PasswordStrengthMeterComponent, PowerPointViewerComponent, PresentToolbarAutoHide, PresentationAnnotationOverlayComponent, PresentationAnnotationsService, PresentationOverlayComponent, PresentationPropertiesPanelComponent, PresentationSettingsCardComponent, PresentationSubtitleBarComponent, PresentationToolbarComponent, PresentationTransitionOverlayComponent, PresenterViewComponent, PresenterWindowService, PrintDialogComponent, PrintService, PrintSettingsPanelComponent, PropertiesDialogComponent, REPEAT_MODE_OPTIONS, RESIZE_HANDLES, RULER_FONT_SIZE, RULER_THICKNESS, ReadingViewOverlayComponent, RemoteSelectionOverlayComponent, RibbonAnimationGalleryComponent, RibbonAnimationsSectionComponent, RibbonArrangeSectionComponent, RibbonColorPopoverComponent, RibbonComponent, RibbonDesignSectionComponent, RibbonDrawSectionComponent, RibbonDrawingGroupComponent, RibbonEditingSectionComponent, RibbonFileSectionComponent, RibbonFontControlsComponent, RibbonHomeSectionComponent, RibbonHyperlinkButtonComponent, RibbonInsertFieldsComponent, RibbonInsertSectionComponent, RibbonMotionPathGalleryComponent, RibbonParagraphControlsComponent, RibbonPrimaryRowComponent, RibbonReviewSectionComponent, RibbonShapeExtrasComponent, RibbonSlideshowSectionComponent, RibbonTransitionsSectionComponent, RibbonViewSectionComponent, RulerGuidesService, SEQUENCE_OPTIONS, SEVERITY_GROUPS, SEVERITY_LABELS, SHORTCUT_REFERENCE_ITEMS, SLIDE_TRANSITION_KEYFRAMES, DEFAULT_PALETTE as SMARTART_DEFAULT_PALETTE, PALETTES as SMARTART_PALETTES, SMART_ART_COLOR_SCHEMES, SMART_ART_STYLE_OPTIONS, SUB_ITEM_LABEL, SVG_WARP_PRESETS, SWIPE_MAX_VERTICAL_PX, SWIPE_THRESHOLD_PX, SelectionPaneComponent, SetUpSlideShowDialogComponent, SettingsAppearanceTabComponent, SettingsDialogComponent, SettingsLanguageTabComponent, ShareDialogComponent, ShortcutPanelComponent, ShowOptionsFieldsetComponent, ShowSlidesFieldsetComponent, SignatureStrippedDialogComponent, SignaturesPanelComponent, SignaturesService, SlideBackgroundCardComponent, SlideCanvasComponent, SlideDefaultInspectorComponent, SlideDiffChangesComponent, SlideDiffRowComponent, SlideDiffThumbnailsComponent, SlideSizeCardComponent, SlideSorterOverlayComponent, SlideThemeOverridePanelComponent, SlideTransitionCardComponent, SlidesPanelComponent, SmartArt3DRendererComponent, SmartArt3DService, SmartArtPreviewComponent, SmartArtPropertiesComponent, SmartArtRendererComponent, StatusBarComponent, TABLE_STRUCTURE_TOGGLES, TEXT_3D_BOTTOM_BEVEL_KEYS, TEXT_3D_TOP_BEVEL_KEYS, TEXT_DIRECTION_OPTIONS, THEME_CATALOG, TIMING_CURVE_OPTIONS, TRIGGER_OPTIONS, TYPE_LABELS, TableCellAdvancedFillComponent, TableCellFormattingComponent, TableDataEditorComponent, TablePropertiesComponent, TableRendererComponent, TableResizeOverlayComponent, TableSelectionService, TagsCardComponent, Text3DBevelSectionComponent, Text3DPanelComponent, TextAdvancedPanelComponent, ThemeEditorFieldsComponent, ThemeGalleryComponent, ThemeSelectorCardComponent, TitleBarComponent, TitleBarSearchComponent, TransitionDirectionPickerComponent, TransitionPreviewComponent, VALIGN_OPTIONS, VIEWER_THEME, VersionHistoryPanelComponent, ViewerCanvasEditingService, ViewerCollabCursorService, ViewerCollaborationSessionService, ViewerCompareService, ViewerCustomShowsService, ViewerDialogsService, ViewerDocumentPropertiesService, ViewerExportService, ViewerExtraDialogsComponent, ViewerFileIOService, ViewerFindReplaceService, ViewerFormatPainterService, ViewerInspectorPanelService, ViewerKeyboardService, ViewerMobileSheetService, ViewerPresentationModeService, ViewerThemeGalleryService, ViewerTouchGesturesService, ViewerZoomService, WEBM_MIME_CANDIDATES, WriteBackScheduler, ZERO_LINE_COLOR, ZoomNavigationService, ZoomRendererComponent, ZoomTargetService, addCategory, addCommentToList, addGradientStopPatch, addItem, addSeries, addSubItem, advanceStep, affordanceElements, aiToggleVisible, alignPatch, animationFor, animationPresetLabelKey, annotationMapToInkInserts, applyAcceptedDiff, applyAnimationPreset, applyFindReplacements, applyFormatToElement, applyMove, applyResize, asMediaElement, assignUserColor, attachShowVisibilityPause, attachTouchGestures, axisTickValues, beginNodeEdit, bevelSizePatch, boolFromEvent, bringForward, bringToFront, buildBarActions, buildBroadcastConfig, buildBroadcastViewerUrl, buildCategoryLabels, buildCellParagraphs, buildChartViewModel, buildChatLogExport, buildChatLogMarkdown, buildChromeStyle, buildClearHyperlinkPatch, buildClickGroups, buildColStyles, buildCollaborationConfig, buildComboViewModel, buildCssGradientFromShapeStyle, buildDuotoneFilter, buildDuotoneFilterId, buildEmbeddedFontStyles, buildEquationElement, buildEquationSegment, buildFallbackViewModel, buildFontFaceRule, buildGradientFillCss, buildGridlinesAndLabels, buildHyperlinkPatch, buildInkContainerStyle, buildInkStrokes, buildLegend, buildLiveInkStrokeView, buildMarkTooltip, buildModel3DContainerStyle, buildModel3DViewModel, buildOleActionModel, buildOleInfoRows, buildPatternFillCss, buildPieViewModel, buildPrintHtmlDocument as buildPrintDocument, buildPropertiesPatch, buildRadarViewModel, buildRegionMapViewModel, buildSaveSlides, buildShareUrl, buildSmartArtInsertElement, buildSmartArtNodes, buildStockViewModel, buildSurfaceViewModel, buildTableViewModel, buildTreemapViewModel, buildTrimFragment, buildWaterfallViewModel, buildZeroLine, buildZoomContainerStyle, buildZoomViewModel, bulletIndentPx, canAddTopLevelNode, canEditSmartArtNodes, canGroupSelection, canRemoveTopLevelNode, canSetStrokeWidth, canStartBroadcast, canStartShare, canUngroupSelection, canUseClipboard, captionDisplayText, cellRunStyle, cellStyleToStyleMap, cellTdStyle, changeCountLabel, changeIcon, characterSpacingPatch, chartPreserveAspectRatio, checkFontAvailable, clampCursorPosition, clampGifDimensions, clampIndex, clampNotesFontSize, clampScale, clampStep, clearAllLocalViewerData, clearAudienceContent, cn, collectAccessibilityIssues, collectElementText, collectSlideText, collectStoredChats, collectUsedFontFamilies, columnWidthStyle, commitNodeText, computeAlign, computeAxisTitlePrimitives, computeBarRects, computeBubbleRadius, computeCornerHandle, computeDistribute, computeDrawingViewBox, computeErrorBarPrimitives, computeFocusTargets, computeGridSpacingPx, computeHandleBoxes, computeHandoutLayout, computeIsMobile, computeIsTablet, computeLinePoints, computeLinearRegression, computePageCount, computePieLayout, computePieSlicePath, computePieSlices, computePlotLayout, computeRSquared, computeRadarPoints, computeResizeHandleBoxes, computeRotateHandleBox, computeScatterDots, computeScatterXDomain, computeSelectionBoxes, computeSingleSelected, computeSlideIndices, computeSnap, computeStackedBarRects, computeStackedValueRange, computeTrendlinePrimitives, computeValueRange, convertOmmlToMathMl, copyFormatFromElement, countAccessibilityIssues, countAnnotationStrokes, createAngularAiBridge, createCustomShow, createSwipeDismissDrag, createWebrtcBundle, createWebsocketBundle, cssObjectToStyleMap, currentColorScheme, currentLayout, currentStyle, defaultCssVars, defaultRadius, defaultThemeColors, deleteElementsByIds, deleteVersion as deleteRecoveryVersion, demoteNode, deriveModel3DBlobUrl, derivePresenceList, describeSmartArtBounds, disableGlowPatch, disableInnerShadowPatch, disableOuterShadowPatch, disableReflectionPatch, disableSoftEdgePatch, duplicateElementById, durationOf, effectsStateOf, enableGlowPatch, enableInnerShadowPatch, enableOuterShadowPatch, enableReflectionPatch, enableSoftEdgePatch, encodeGif, endShowMediaCleanup, estimatePageCount, exitPresentationFullscreen, exportAiChatLogs, extractPathPoints, eyedropperAvailable, fillColorOf, findInSlides, findOwningSlideIndex, findSlideIndexByElementId, firstVisibleIndex, fitPolynomial, fitZoom, focusTargetChips, fontMimeForFormat, fontSizeOf, forgetSessionDeck, formatAxisValue, formatBytes, formatCursorLabel, formatElapsed, formatFileSize, formatPropertyDate, formatTime, fpsToFrameIntervalMs, generateBroadcastRoomId, generateCommentId, generateCustomShowId, generatePressureCircles, generateTicks, getClrChangeParams, getContainerStyle, getDuotoneFilterDef, getEffectSoundAsset, getEffectSoundState, getImageSrc, getLocalStorageUsageSummary, getOleAriaLabel, getOleBadgeLabel, getOleDisplayName, getOleDownloadFileName, getOleTypeColor, getOleTypeLabel, getPasswordStrength, getPatternSvg, getPlaceholderStyle, getVersions as getRecoveryVersions, getResolvedShapeClipPath, getResolvedShapeClipPathFor, getSessionTabId, getShapeFillStrokeStyle, getSlideBackgroundStyle, getSlideTransitionAnimations, getSmartArtNodeBounds, getSpeechRecognitionCtor, getTextBlockStyle, getTextWarp, getTouchDistance, getWarpCategory, getWarpPath, gradientStateFromStyle, gradientStateOf, gradientStatePatch, gradientStopColorCommitPatch, gridColumns, groupIssuesBySeverity, hasAnimation, hasCopyableFormat, hasExistingLink, hasExitedFullscreen, hasGradientFill, hasPressureVariation, hasVisibleSlideAfter, headerLabel, imageDimensions, inkViewBox, insertTableElementColumn as insertColumn, insertTableElementRow as insertRow, interpolateWidth, isAudienceTab, isBold, isBrowserOpenableMime, isChildNode, isElementInteractive, isInjectableUrl, isItalic, isLegacyBinaryPresentation, isPpactionUrl, isPresenterMessage, isSigned, isSupportedPresentationFile, isTextElement, isTwoTableFocus, isUnderline, isUrlSafe, isValidRoomId, isViewportBackgroundPressTarget, isZoomActivationKey, issueTrackKey, issueTypeLabel, keyToLabel, lastVisibleIndex, latexToMathml, layoutConnectorPaints, layoutNodeLabels, linePointsToSvgString, lineSpacingPatch, loadAudienceContent, loadSessionDeck, mediaFallbackFor, mediaSurfaceFor, mergeCaptionResults, mergeDown, mergeRight, mergeSelection, mergeTablesDirective, moveElementBy, moveNodeDown, moveNodeUp, msToFrameDelayCs, narrowToCircle, narrowToPolygon, narrowToRect, newChartElement, newEquationElement, newPresetShapeElement, newShapeElement, newSmartArtElement, newTableElement, newTextElement, nextVisibleIndex, nodeBold, nodeEditBox, nodeFillColor, nodeFontColor, nodeIdFromKey, nodeItalic, nodeStyle, normalizeFontFormat, normalizeSlidesPerPage, normalizeValue, numFromEvent, ommlToMathml, ooxmlDashToCssBorderStyle, openNativeEyeDropper, overallStatus, paletteColor, parseAudienceNonce, parseNodeTextarea, partitionSlides, patchChartData, patchChartStyle, patchTableData, patchTextStyle, patternPresetOptions, pendingElementStyles, pickColorByClickFallback, pickFile, pickSupportedMimeType, planGifFrames, planVideoSegments, pointFromPointerEvent, pointsToSvgPathD, presenceToCursors, presentationBaseName, presentationStageStyle, presenterTimerProgress, presetByLayout, presetsForCategory, pressuresToWidths, prevVisibleIndex, projectDrawingShapes, promoteNode, provideViewerTheme, radarAngle, radarRingPoints, readAsDataUrl, recordWebm, registerCrossSlideAudio, rememberSessionDeck, removeAnimation, removeCategory, removeTableElementColumn as removeColumn, removeCommentFromList, removeElementAnimation, removeGradientStopPatch, removeNode, removeTableElementRow as removeRow, removeSeries, renderToCanvas, reorderAnimationDown, reorderAnimationUp, replaceInSlides, replaceMatch, requestPresentationFullscreen, resizeElement, resolveCaptionTracks, resolveChartKind, resolveFontVariant, resolveHyperlinkHref, resolveInteractiveElementId, resolveMediaSrc, resolveOleType, resolveParagraphBullet, resolvePresenterNotes, resolveProfileInitial, resolveRegionCode, resolveRibbonCanGroup, resolveSlideAutoAdvanceMs, resolvePalette as resolveSmartArtPalette, resolveThemeCatalogEntry, resolveTransitionDuration, restoreSessionDeck, revealedElementStyles, routeOrthogonalConnector, rowStyle, rulerDragToGuidePosition, rulerHighlight, rulerStripTicks, sampleColorFromSlide, sanitizeColor, sanitizeSlideIndex, sanitizeUserName, saveViewerProfile, savedPresentationFileName, scanAvailableFonts, searchSlides, seedBroadcastFields, seedHyperlinkDraft, seedPropertiesDraft, seedShareFields, segmentFrameCount, selectValue, sendBackward, sendToBack, sequentialColorScale, serializeWriteBack, seriesColor, setAfterAnimation, setAfterAnimationColor, setAnimationEmphasis, setAnimationEntrance, setAnimationExit, setAxis, setAxisLogScale, setAxisTitleStyle, setCategoryLabel, setCellText, setColorScheme, setDataLabels, setDataPointExplosion, setDataPointFill, setDataPointLabel, setDataPointMarker, setDelay, setDirection, setDuration, setEffectSound, setEffectStockSound, setElementPosition, setGridlineStyle, setLayout, setLegend, setNodeStyle, setNodeText, setRepeatCount, setRepeatMode, setSequence, setSeriesChartType, setSeriesColor, setSeriesErrorBars, setSeriesMarker, setSeriesName, setSeriesTrendline, setSeriesValue, setStyle, setTimingCurve, setTitle, setTrigger, setTriggerShapeId, shapeStylePatch, sheetAfterNavigate, shouldBlockClickAdvance, shouldUseSvgWarp, showDirectionPicker, showsTemplateAffordance, signatureCountLabel, signatureKey, signatureTimestamp, signerName, statusLabel as slideDiffStatusLabel, slideNumberOf, slidesWithReappliedLayout, smartArtNodes, paletteColour as smartArtPaletteColour, snapToGridStep, splitCursorCell, splitMergedCell, statusKind, statusLabel$1 as statusLabel, storeAudienceContent, stringFromEvent, strokeColorOf, strokeToInkElement, strokeWidthOf, styleShadowFilter, surfaceColor, textAdvancedPatch, textAdvancedStateFromStyle, textAdvancedStateOf, textColorOf, textDirectionPatch, textFontSizePatch, textStyleOf, textStylePatch, themeStyle, themeToCssVars, thumbnailHeight, thumbnailZoom, toggleCommentResolvedInList, toggleNodeBold, toggleNodeItalic, toggleSheet, topLevelNodeCount, transformSelectedTextCase, translationsEn, updateElementById, updateGlowPatch, updateGradientStopPatch, updateInnerShadowPatch, updateOuterShadowPatch, updateReflectionPatch, vAlignPatch, validatePassword, validatePrintSettings, validateRoomId, valueToY, vermilionDarkColors, vermilionDarkTheme, vermilionLightColors, vermilionLightTheme, vermilionRadius, waypointsToPathD, withManualLayouts, worstStatus, zoomTargetSlideIndex };
|
|
23819
|
+
export type { AccessibilityIssueGroup, AccountAuthConfig, ActionDescriptor, ActiveShow, AiCanvasHighlight, AiChatInitState, AiHistoryInitDeps, AiLogChat, AiLogExport, AiLogFormat, AiLogMessage, AiPanelSelectionAccessors, AlignBox, AlignMode, AnimationClickGroup, AnimationGroup, AnimationPresetCategory, AnimationPresetEntry, AnimationPresetPick, AnnotationInkInsert, AnnotationStroke, AttachTouchGesturesConfig, AuthoredRange, AwarenessLike, BarRect, Box, BridgeDeps, BroadcastConfig, BroadcastDefaults, BubbleRadiusOptions, CSSProperties, CanvasSize, CellCoord, CellParagraph, CellTextRun, ChartPartRef, ChartPartSelection, ChartSvgDef, ChartSvgPatternDef, ChartValueDrag, ChartViewModel, ClassValue, ClrChangeParams, CollaborationConfig, CollaborationRole, RouterRect as ConnectorObstacle, RouterPoint as ConnectorPoint, ConnectorRouting, CopiedFormat, CornerHandleBox, CustomShow, CustomThemeEdit, DestroyableYDoc, DiagonalBorderInfo, DistributeMode, DocumentProperties, DrawingViewBox, DuotoneFilterDef, EffectSoundState, EffectsState, EmbeddedFontStyles, EquationTemplate, EyedropperResult, FindOptions, FindResult, FocusChip, FocusSelectionInput, GifFrame, GifFramePlan, GifPlanOptions, GlowState, GradientState, GradientStop$1 as GradientStop, HandleBox, HandoutSlidesPerPage, HyperlinkDraft, InkPoint, InkStroke, InkStrokeView, InlineEditState, InnerShadowState, LegendEntry, LinePoint, LinearFit, LocalIdentity, LocalStorageUsageSummary, LocaleCatalogEntry, MobileSheetKey, Model3DViewModel, MotionPathColumn, MotionPathEntry, NodeEditBox, NotesSegmentViewModel, ObjectUrlFactory, OleActionModel, OleInfoRow, OuterShadowState, OutlineCommit, OverallSignatureStatus, PartitionedSlides, PathPoint, PieSliceGeometry, PieSliceOptions, PlotLayout, PlotLayoutOptions, PositionUpdate, PowerPointViewerAPI, PptxAiBridge, PptxAiConfig, PptxAiConnection, PptxAiContextStrategy, PptxAiElementUpdate, PptxAiToolName, PptxAiUIMessage, PptxAiWritePolicy, PresentToolbarAction, PresentationTool, PresenterExitMessage, PresenterMessage, PresenterNotes, PresenterSlideChangeMessage, PresenterTimerProgress, PressureCircle, PrintColorMode, PrintHtmlDocumentOptions as PrintDocumentOptions, PrintOrientation, PrintSettings, PrintSlideRange, PrintWhat, PropertiesDraft, ProposalView, ProviderBundle, ProviderLike, RadarPoint, RecordWebmOptions, RecoveryVersion, ReflectionState, RemoteCursor, SanitizedPresence as RemotePresence, RenderedShape, ReplaceResult, ResizeHandle, ResolvedCaptionTrack, ResolvedFontVariant, ResolvedOleType, RulerUnit, SavedPresentationFormat, ScatterDot, ScatterXDomain, SelectionBox, SessionDeck, ShapeStyleChanges, ShareDefaults$1 as ShareDefaults, ShareFormFields, ShortcutReferenceItem, SignatureStatusKind, SlideInspectorTab, SlideTransitionAnimations, SmartArtInsertEvent, SmartArtNodeBounds, SnapBox, SnapGuide, SnapResult, SoftEdgeState, SpeechAlternative, SpeechRecognitionCtor, SpeechRecognitionEventLite, SpeechRecognitionLite, SpeechResult, SpeechResultList, SpeechSupportState, StagedProposal, StrokeToInkElementOpts, StyleMap, SupportedChartKind, SvgAreaGradient, SvgCircle, SvgLine, SvgPath, SvgPolygon, SvgPolyline, SvgPrimitive, SvgRect, SvgText, SwipeDismissDrag, TableBooleanFlag, TableCellSelection, TableCellViewModel, TableRowViewModel, TemplateElementsBySlideId, Text3DBevelKeys, TextAdvancedChanges, TextAdvancedState, TextStyleChanges, TextWarpCssDef, TextWarpDef, TextWarpPathDef, ThemeCatalogEntry, Tick, ToolbarActionId, TouchGestureCallbacks, TranslationKey, ValueRange, VideoPlanOptions, VideoSegmentPlan, ViewerMode, ViewerProfile, ViewerSettings, ViewerTheme, ViewerThemeColors, ZoomTranslate, ZoomViewModel };
|
|
23972
23820
|
//# sourceMappingURL=pptx-angular-viewer.d.ts.map
|