pptx-angular-viewer 3.8.0 → 3.10.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 +21 -0
- package/fesm2022/{pptx-angular-viewer-chat-history-idb-BxlsOXEi.mjs → pptx-angular-viewer-chat-history-idb-qAXI--lh.mjs} +2 -2
- package/fesm2022/{pptx-angular-viewer-chat-history-idb-BxlsOXEi.mjs.map → pptx-angular-viewer-chat-history-idb-qAXI--lh.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-3iTbE0x6.mjs → pptx-angular-viewer-pptx-angular-viewer-DSS3rJHH.mjs} +16501 -6720
- package/fesm2022/{pptx-angular-viewer-pptx-angular-viewer-3iTbE0x6.mjs.map → pptx-angular-viewer-pptx-angular-viewer-DSS3rJHH.mjs.map} +1 -1
- package/fesm2022/pptx-angular-viewer.mjs +1 -1
- package/package.json +3 -3
- package/pptx-angular-viewer.css +1 -1
- package/types/pptx-angular-viewer.d.ts +1058 -1073
- package/types/pptx-angular-viewer.d.ts.map +1 -1
- package/fesm2022/pptx-angular-viewer-index-BbiIOY_Y.mjs.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as pptx_viewer_core from 'pptx-viewer-core';
|
|
2
|
-
import { PptxThemePreset, PptxSlide, PptxElement, ShapeStyle, PptxTextWarpPreset, XmlObject, PptxChartSeries, PptxChartLegendTextStyle, PptxChartData, PptxChartDataLabelPosition, PptxChartType, PptxElementAnimation, PptxAnimationPreset, PptxAnimationSequence, PptxAnimationTrigger, PptxAnimationTimingCurve, PptxAnimationRepeatMode, PptxAnimationDirection, PptxAfterAnimationAction, ParsedTableStyleMap, PptxThemeColorScheme, PptxThemeFontScheme, TablePptxElement, PptxSection, OlePptxElement, TextSegment, TextStyle, PptxTransitionType, PptxSlideTransition, SmartArtLayoutType, SmartArtColorScheme, PptxSmartArtChrome, PptxSmartArtDrawingShape, SmartArtStyle, PptxSmartArtData, PptxThemeColorRef, PlaceholderDefaults, PptxEmbeddedFont, SmartArtLayout, AccessibilityIssueSeverity, AccessibilityIssue, AccessibilityIssueType, AccessibilityCheckOptions, ElementActionType, InkPptxElement, PptxComment, PptxChartBarDirection, MasterViewTab, MediaPptxElement, PptxTheme, PptxHandler, PptxData, PptxModernCommentAuthor, PptxCommentMention, PptxHeaderFooter, PptxCustomShow, PptxSlideMaster, PptxNotesMaster, PptxHandoutMaster, PptxPresentationProperties, PptxViewProperties, PptxCoreProperties, PptxAppProperties, PptxThemeOption, PptxCustomProperty, PptxTagCollection, ParsedSignature, PptxSaveFormat, PptxTableCell, PptxTableCellStyle, PptxTableRow, PptxTableData, SvgExportOptions, PptxGridSpacing, RenderedNode, RenderedCircleNode, RenderedPolygonNode, RenderedRectNode, SmartArtLayoutResult, Model3DPptxElement, ZoomPptxElement, ChartPptxElement, SmartArtPptxElement, PptxAnimationTimelineAnchor, MaterialPresetType, Text3DStyle, BevelPresetType, PptxBar3DShape, PptxChartDataLabelOptions, PptxChartAxisType, PptxChartAxisFormatting, PptxChartMarker, PptxChartDataPoint, PptxChartTrendline, PptxChartErrBars, PptxTextStyleLevels, SignatureStatus, ElementAction, PptxImageEffects, MediaBookmark, ColorMapAliasKey, ChartAxisEdit, ChartDataPointLabelEdit, PptxChartLegendPosition, PptxChartStyle, ChartAxisTitleStyleEdit, PptxChartMarkerSymbol, ChartGridlineStyleEdit, PptxSmartArtNode, PptxSmartArtNodeStyle, PptxLayoutPreview, MediaCaptionTrack, PptxMediaType } from 'pptx-viewer-core';
|
|
2
|
+
import { PptxThemePreset, PptxSlide, PptxElement, ShapeStyle, PptxTextWarpPreset, XmlObject, PptxChartSeries, PptxChartLegendTextStyle, PptxChartData, PptxChartDataLabelPosition, PptxChartType, PptxElementAnimation, PptxAnimationPreset, PptxAnimationSequence, PptxAnimationTrigger, PptxAnimationTimingCurve, PptxAnimationRepeatMode, PptxAnimationDirection, PptxAfterAnimationAction, ParsedTableStyleMap, PptxThemeColorScheme, PptxThemeFontScheme, TablePptxElement, PptxSection, OlePptxElement, TextSegment, TextStyle, PptxTransitionType, PptxSlideTransition, SmartArtLayoutType, SmartArtColorScheme, PptxSmartArtChrome, PptxSmartArtDrawingShape, SmartArtStyle, PptxSmartArtData, PptxThemeColorRef, PlaceholderDefaults, PptxEmbeddedFont, SmartArtLayout, AccessibilityIssueSeverity, AccessibilityIssue, AccessibilityIssueType, AccessibilityCheckOptions, ElementActionType, InkPptxElement, PptxComment, PptxChartBarDirection, MasterViewTab, MediaPptxElement, PptxTheme, PptxHandler, PptxData, PptxHandlerSaveOptions, PptxModernCommentAuthor, PptxCommentMention, PptxHeaderFooter, PptxCustomShow, PptxSlideMaster, PptxNotesMaster, PptxHandoutMaster, PptxPresentationProperties, PptxViewProperties, PptxCoreProperties, PptxAppProperties, PptxThemeOption, PptxCustomProperty, PptxTagCollection, ParsedSignature, PptxSaveFormat, PptxTableCell, PptxTableCellStyle, PptxTableRow, PptxTableData, SvgExportOptions, PptxGridSpacing, RenderedNode, RenderedCircleNode, RenderedPolygonNode, RenderedRectNode, SmartArtLayoutResult, Model3DPptxElement, ZoomPptxElement, ChartPptxElement, SmartArtPptxElement, PptxAnimationTimelineAnchor, MaterialPresetType, Text3DStyle, BevelPresetType, PptxBar3DShape, PptxChartDataLabelOptions, PptxChartAxisType, PptxChartAxisFormatting, PptxChartMarker, PptxChartDataPoint, PptxChartTrendline, PptxChartErrBars, PptxTextStyleLevels, SignatureStatus, ElementAction, PptxImageEffects, MediaBookmark, ColorMapAliasKey, ChartAxisEdit, ChartDataPointLabelEdit, PptxChartLegendPosition, PptxChartStyle, ChartAxisTitleStyleEdit, PptxChartMarkerSymbol, ChartGridlineStyleEdit, PptxSmartArtNode, PptxSmartArtNodeStyle, PptxLayoutPreview, MediaCaptionTrack, PptxMediaType } from 'pptx-viewer-core';
|
|
3
3
|
export { GroupResult, SWITCHABLE_LAYOUT_TYPES, UngroupResult, addSmartArtNode, addSmartArtNodeAsChild, chartDataChangeType, chartDataUpdatePoint, demoteSmartArtNode, formatAutoNumberMarker as formatAutoNumber, groupElements, promoteSmartArtNode, removeSmartArtNode, reorderSmartArtNode, switchSmartArtLayout, ungroupElements, updateSmartArtNodeText } from 'pptx-viewer-core';
|
|
4
4
|
import * as _angular_core from '@angular/core';
|
|
5
5
|
import { Signal, WritableSignal, OnDestroy, OnInit, AfterViewInit, OnChanges, SimpleChanges, InjectionToken, Provider } from '@angular/core';
|
|
@@ -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
|
*
|
|
@@ -1166,6 +817,45 @@ interface ChartSvgPatternDef {
|
|
|
1166
817
|
}
|
|
1167
818
|
type ChartSvgDef = ChartSvgPatternDef;
|
|
1168
819
|
|
|
820
|
+
/**
|
|
821
|
+
* Chart title rich text: per-run render spans and the flat-text-edit
|
|
822
|
+
* collapse rule.
|
|
823
|
+
*
|
|
824
|
+
* `PptxChartData.titleRuns` (core) carries the title's per-run bold/italic/
|
|
825
|
+
* size/colour, parsed from `c:title/c:tx/c:rich`; until this module, no
|
|
826
|
+
* binding read it, so a title with several differently-styled runs rendered
|
|
827
|
+
* (and re-saved) as one flat string in a single style. `resolveChartTitleRunSpans`
|
|
828
|
+
* gives every binding a framework-neutral list of `<tspan>` descriptors to
|
|
829
|
+
* draw instead of the single flat `vm.title` text node.
|
|
830
|
+
* `collapseChartTitleRunsForEdit` is the companion write-side rule: when an
|
|
831
|
+
* inspector's flat title-text field is edited, a MULTI-run body collapses to
|
|
832
|
+
* ONE run in the title's dominant style (the run covering most of the
|
|
833
|
+
* text), rather than leaving other runs' stale text behind - see
|
|
834
|
+
* `chart-title-serializer.ts`'s `runsStale` doc for why an edited `title`
|
|
835
|
+
* and an untouched `titleRuns` must not silently disagree. A single-run
|
|
836
|
+
* title is left to the flat `title` patch alone: core's serializer already
|
|
837
|
+
* patches that one run's text in place, preserving whatever formatting this
|
|
838
|
+
* narrow typed model does not carry (e.g. a `schemeClr` reference).
|
|
839
|
+
*
|
|
840
|
+
* @module chart-title-runs
|
|
841
|
+
*/
|
|
842
|
+
|
|
843
|
+
/** One resolved `<tspan>` for a chart title run. */
|
|
844
|
+
interface ChartTitleRunSpan {
|
|
845
|
+
/** This run's text (`a:t`). */
|
|
846
|
+
text: string;
|
|
847
|
+
/** `font-size`, in slide-px. */
|
|
848
|
+
fontSize: number;
|
|
849
|
+
/** `font-weight`. */
|
|
850
|
+
fontWeight: number;
|
|
851
|
+
/** `font-style`, only when the run is italic. */
|
|
852
|
+
fontStyle?: 'italic';
|
|
853
|
+
/** `fill`. */
|
|
854
|
+
fill: string;
|
|
855
|
+
/** `font-family`, only when the title names a typeface. */
|
|
856
|
+
fontFamily?: string;
|
|
857
|
+
}
|
|
858
|
+
|
|
1169
859
|
/**
|
|
1170
860
|
* chart-view-model-scale.ts: palette, value-range and axis-value helpers of
|
|
1171
861
|
* the chart engine. Split out of `chart-view-model.ts`, which re-exports
|
|
@@ -1372,6 +1062,8 @@ interface SvgLine {
|
|
|
1372
1062
|
dashArray?: string;
|
|
1373
1063
|
opacity?: number;
|
|
1374
1064
|
title?: string;
|
|
1065
|
+
/** Optional SVG transform (e.g. a chart-overlay connector's own rotation about its box centre). */
|
|
1066
|
+
transform?: string;
|
|
1375
1067
|
}
|
|
1376
1068
|
interface SvgText {
|
|
1377
1069
|
kind: 'text';
|
|
@@ -1400,6 +1092,8 @@ interface SvgPolygon {
|
|
|
1400
1092
|
dashArray?: string;
|
|
1401
1093
|
part?: ChartPartRef;
|
|
1402
1094
|
title?: string;
|
|
1095
|
+
/** Optional SVG transform (e.g. a chart-overlay shape's own rotation/flip about its box centre). */
|
|
1096
|
+
transform?: string;
|
|
1403
1097
|
}
|
|
1404
1098
|
interface SvgAreaGradient {
|
|
1405
1099
|
kind: 'areaGradient';
|
|
@@ -1455,6 +1149,14 @@ interface ChartViewModel {
|
|
|
1455
1149
|
* style part, then the viewer defaults). See `chart-title-style.ts`.
|
|
1456
1150
|
*/
|
|
1457
1151
|
titleStyle?: ChartTitleTextStyle;
|
|
1152
|
+
/**
|
|
1153
|
+
* Per-run `<tspan>` descriptors for a title with typed rich text
|
|
1154
|
+
* (`c:title/c:tx/c:rich`, `PptxChartData.titleRuns`). Present only when the
|
|
1155
|
+
* title carries typed runs; a projector should draw these INSTEAD of a
|
|
1156
|
+
* single flat `vm.title` text node when set, and fall back to `title` /
|
|
1157
|
+
* `titleStyle` otherwise. See `chart-title-runs.ts`.
|
|
1158
|
+
*/
|
|
1159
|
+
titleRunSpans?: ChartTitleRunSpan[];
|
|
1458
1160
|
/**
|
|
1459
1161
|
* SVG `fill` for the plot-area rect, resolved from `c:plotArea/c:spPr`.
|
|
1460
1162
|
* `undefined` means paint nothing and let the chart area show through.
|
|
@@ -1889,19 +1591,14 @@ declare function buildComboViewModel(element: PptxElement, chartData: PptxChartD
|
|
|
1889
1591
|
declare function buildStockViewModel(element: PptxElement, chartData: PptxChartData, categoryLabels: ReadonlyArray<string>): ChartViewModel;
|
|
1890
1592
|
|
|
1891
1593
|
/**
|
|
1892
|
-
*
|
|
1594
|
+
* Shared colour ramp and view-model chrome helpers for the surface and
|
|
1595
|
+
* treemap chart kinds.
|
|
1893
1596
|
*
|
|
1894
|
-
*
|
|
1895
|
-
*
|
|
1896
|
-
*
|
|
1897
|
-
* Produces a `ChartViewModel` (SVG primitives only, zero Angular dependencies)
|
|
1898
|
-
* that the Angular ChartRendererComponent template iterates over.
|
|
1899
|
-
*
|
|
1900
|
-
* Surface – isometric projection when the grid has ≥2 series and ≥2 categories,
|
|
1901
|
-
* flat colour-mapped grid otherwise.
|
|
1902
|
-
* 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.
|
|
1903
1600
|
*
|
|
1904
|
-
* @module chart-surface-
|
|
1601
|
+
* @module chart-surface-common
|
|
1905
1602
|
*/
|
|
1906
1603
|
|
|
1907
1604
|
/**
|
|
@@ -1916,15 +1613,45 @@ declare function surfaceColor(t: number): {
|
|
|
1916
1613
|
g: number;
|
|
1917
1614
|
b: number;
|
|
1918
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
|
+
|
|
1919
1632
|
/**
|
|
1920
1633
|
* Build the view-model for a surface chart.
|
|
1921
1634
|
*
|
|
1922
|
-
* Renders an isometric 3-D-like projection when the grid has
|
|
1923
|
-
*
|
|
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.
|
|
1924
1637
|
* Mirrors `renderSurfaceChart` / `renderIsometricSurfaceFallback` in React's
|
|
1925
1638
|
* `chart-surface-treemap.tsx`.
|
|
1926
1639
|
*/
|
|
1927
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
|
+
|
|
1928
1655
|
/**
|
|
1929
1656
|
* Build the view-model for a treemap chart.
|
|
1930
1657
|
*
|
|
@@ -1935,43 +1662,51 @@ declare function buildSurfaceViewModel(element: PptxElement, chartData: PptxChar
|
|
|
1935
1662
|
declare function buildTreemapViewModel(element: PptxElement, chartData: PptxChartData, categoryLabels: ReadonlyArray<string>): ChartViewModel;
|
|
1936
1663
|
|
|
1937
1664
|
/**
|
|
1938
|
-
*
|
|
1939
|
-
*
|
|
1940
|
-
* Ported from:
|
|
1941
|
-
* packages/react/src/viewer/utils/chart-waterfall-combo.tsx (waterfall only)
|
|
1942
|
-
* packages/react/src/viewer/utils/chart-map.tsx (regionMap)
|
|
1943
|
-
*
|
|
1944
|
-
* Produces a `ChartViewModel` (SVG primitives only, zero Angular dependencies)
|
|
1945
|
-
* that the Angular ChartRendererComponent template iterates over.
|
|
1665
|
+
* Region-label -> region-code alias lookup for the regionMap chart kind.
|
|
1946
1666
|
*
|
|
1947
|
-
*
|
|
1948
|
-
*
|
|
1949
|
-
*
|
|
1950
|
-
* 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.
|
|
1951
1670
|
*
|
|
1952
|
-
* @module chart-
|
|
1671
|
+
* @module chart-region-map-alias
|
|
1953
1672
|
*/
|
|
1673
|
+
/** Resolve a category label to a region key (case-insensitive). */
|
|
1674
|
+
declare function resolveRegionCode(label: string): string | undefined;
|
|
1954
1675
|
|
|
1955
1676
|
/**
|
|
1956
|
-
*
|
|
1677
|
+
* Colour-scale and colour-legend helpers for the regionMap chart kind.
|
|
1957
1678
|
*
|
|
1958
|
-
*
|
|
1959
|
-
*
|
|
1960
|
-
*
|
|
1961
|
-
* 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.
|
|
1962
1682
|
*
|
|
1963
|
-
*
|
|
1683
|
+
* @module chart-region-map-colors
|
|
1964
1684
|
*/
|
|
1965
|
-
|
|
1966
|
-
/** Resolve a category label to a region key (case-insensitive). */
|
|
1967
|
-
declare function resolveRegionCode(label: string): string | undefined;
|
|
1685
|
+
|
|
1968
1686
|
/**
|
|
1969
|
-
* 3-stop sequential colour scale: light (#dbeafe)
|
|
1687
|
+
* 3-stop sequential colour scale: light (#dbeafe) -> mid (#3b82f6) -> dark (#1e3a5f).
|
|
1970
1688
|
* Mirrors `sequentialColorScale` in React's `chart-map.tsx`.
|
|
1971
1689
|
*/
|
|
1972
1690
|
declare function sequentialColorScale(t: number): string;
|
|
1973
1691
|
/** Normalise a value to [0..1] within a min/max range. */
|
|
1974
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
|
+
|
|
1975
1710
|
/**
|
|
1976
1711
|
* Build the view-model for a regionMap (choropleth) chart.
|
|
1977
1712
|
*
|
|
@@ -1984,6 +1719,34 @@ declare function normalizeValue(value: number, min: number, max: number): number
|
|
|
1984
1719
|
*/
|
|
1985
1720
|
declare function buildRegionMapViewModel(element: PptxElement, chartData: PptxChartData, categoryLabels: ReadonlyArray<string>): ChartViewModel;
|
|
1986
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
|
+
|
|
1987
1750
|
/**
|
|
1988
1751
|
* chart-overlays-axis-titles.ts: `computeAxisTitlePrimitives`, building
|
|
1989
1752
|
* `SvgText[]` for the X and Y axis titles. Split out of chart-overlays.ts to
|
|
@@ -2422,17 +2185,13 @@ declare function revealedElementStyles(groups: readonly AnimationClickGroup[], s
|
|
|
2422
2185
|
declare function pendingElementStyles(groups: readonly AnimationClickGroup[], step: number): Map<string, CSSProperties>;
|
|
2423
2186
|
|
|
2424
2187
|
/**
|
|
2425
|
-
* `animation-timeline-
|
|
2426
|
-
*
|
|
2188
|
+
* `animation-timeline-build-descriptors` - staged-build (`p:bldChart` /
|
|
2189
|
+
* `p:bldDgm`) reveal descriptor types, split out of `animation-timeline-types`
|
|
2190
|
+
* to keep that module under the file-size limit. Re-exported from
|
|
2191
|
+
* `animation-timeline-types` so existing imports are unaffected.
|
|
2427
2192
|
*
|
|
2428
|
-
*
|
|
2429
|
-
* driven by `presetClass` / `presetId`), as opposed to the editor-level
|
|
2430
|
-
* {@link import('./animation-css').AnimationCssResult} model in `animation-css`
|
|
2431
|
-
* (driven by `PptxElementAnimation` preset strings). Both coexist in shared.
|
|
2432
|
-
*
|
|
2433
|
-
* @module render/animation-timeline-types
|
|
2193
|
+
* @module render/animation-timeline-build-descriptors
|
|
2434
2194
|
*/
|
|
2435
|
-
|
|
2436
2195
|
/**
|
|
2437
2196
|
* Normalized staged-reveal mode for a chart graphic frame, derived from the
|
|
2438
2197
|
* OOXML `a:bldChart/@bld` (or `p:bldOleChart/@bld`) token:
|
|
@@ -2466,12 +2225,12 @@ interface ChartRevealPoint {
|
|
|
2466
2225
|
* Playback-time chart reveal state derived from AUTHORED `p:graphicEl`
|
|
2467
2226
|
* indices (see `chart-reveal-descriptor`'s `resolveChartRevealDescriptor`),
|
|
2468
2227
|
* rather than from click-count/time progress. Present on
|
|
2469
|
-
* {@link ElementAnimationState.chartReveal}
|
|
2470
|
-
* chart-build step for the element carried index data;
|
|
2471
|
-
* this over the progress-based `build`/`ElementBuildState`
|
|
2472
|
-
* since it reflects the real authored reveal set (correct
|
|
2473
|
-
* reversed-order or gapped chart build), and falls back to `build`
|
|
2474
|
-
* absent.
|
|
2228
|
+
* {@link import('./animation-timeline-group').ElementAnimationState.chartReveal}
|
|
2229
|
+
* only when every fired chart-build step for the element carried index data;
|
|
2230
|
+
* a renderer prefers this over the progress-based `build`/`ElementBuildState`
|
|
2231
|
+
* path when present, since it reflects the real authored reveal set (correct
|
|
2232
|
+
* even for a reversed-order or gapped chart build), and falls back to `build`
|
|
2233
|
+
* when absent.
|
|
2475
2234
|
*/
|
|
2476
2235
|
interface ChartRevealDescriptor {
|
|
2477
2236
|
/**
|
|
@@ -2492,12 +2251,13 @@ interface ChartRevealDescriptor {
|
|
|
2492
2251
|
* Playback-time SmartArt diagram reveal state derived from AUTHORED
|
|
2493
2252
|
* `p:graphicEl/p:dgm/@id` indices (see `diagram-reveal-descriptor`'s
|
|
2494
2253
|
* `resolveDiagramRevealDescriptor`), rather than from click-count/time
|
|
2495
|
-
* progress. Present on
|
|
2496
|
-
*
|
|
2497
|
-
*
|
|
2498
|
-
*
|
|
2499
|
-
*
|
|
2500
|
-
*
|
|
2254
|
+
* progress. Present on
|
|
2255
|
+
* {@link import('./animation-timeline-group').ElementAnimationState.diagramReveal}
|
|
2256
|
+
* only when every fired diagram-build step for the element carried
|
|
2257
|
+
* `p:graphicEl` data. A SmartArt renderer prefers this over the
|
|
2258
|
+
* progress-based `build` / {@link ElementBuildState} path when present, since
|
|
2259
|
+
* it reflects the real authored reveal set (correct even for a
|
|
2260
|
+
* reversed-order or by-branch build), and falls back to `build` when absent.
|
|
2501
2261
|
*/
|
|
2502
2262
|
interface DiagramRevealDescriptor {
|
|
2503
2263
|
/**
|
|
@@ -2510,9 +2270,11 @@ interface DiagramRevealDescriptor {
|
|
|
2510
2270
|
nodeIds: ReadonlySet<string>;
|
|
2511
2271
|
}
|
|
2512
2272
|
/**
|
|
2513
|
-
* Playback-time staged-build state surfaced on
|
|
2514
|
-
*
|
|
2515
|
-
*
|
|
2273
|
+
* Playback-time staged-build state surfaced on
|
|
2274
|
+
* {@link import('./animation-timeline-group').ElementAnimationState}.
|
|
2275
|
+
* `progress` is the 0..1 fraction of the build revealed at the current
|
|
2276
|
+
* playback time; a consumer maps it to its own item COUNT (see
|
|
2277
|
+
* `revealedStageCount`).
|
|
2516
2278
|
*/
|
|
2517
2279
|
type ElementBuildState = {
|
|
2518
2280
|
kind: 'chart';
|
|
@@ -2523,6 +2285,75 @@ type ElementBuildState = {
|
|
|
2523
2285
|
mode: DiagramBuildMode;
|
|
2524
2286
|
progress: number;
|
|
2525
2287
|
};
|
|
2288
|
+
|
|
2289
|
+
/**
|
|
2290
|
+
* `animation-text-style-resolve` - resolves the discrete font-style / colour /
|
|
2291
|
+
* size override PowerPoint's font-style emphasis effects apply to their
|
|
2292
|
+
* target's text: Bold Flash, Bold Reveal, Underline, Brush On Underline,
|
|
2293
|
+
* Font Style / Change Font Style, Change Font Size, and the font-style `p:set`
|
|
2294
|
+
* siblings composed alongside Wave / Grow With Color / Teeter.
|
|
2295
|
+
*
|
|
2296
|
+
* PowerPoint authors these two ways, both already parsed by core:
|
|
2297
|
+
* - A `p:set` discrete (non-interpolated) assignment
|
|
2298
|
+
* ({@link PptxNativeAnimation.setAnimations}, ECMA-376 S19.5.79
|
|
2299
|
+
* CT_TLSetBehavior): the value snaps on once and holds until the effect's
|
|
2300
|
+
* `p:cTn/@fill` says otherwise (Bold Reveal, Underline / Brush On
|
|
2301
|
+
* Underline).
|
|
2302
|
+
* - A generic `p:anim` ramp ({@link PptxNativeAnimation.attributeAnimations},
|
|
2303
|
+
* ECMA-376 S19.5.2 CT_TLAnimateBehavior) whose `p:tavLst` stops are not
|
|
2304
|
+
* numerically interpolatable for a boolean attribute (Bold Flash): only the
|
|
2305
|
+
* LAST stop's value is meaningful, the same "snap at the end" reading
|
|
2306
|
+
* PowerPoint itself gives a discrete `calcMode` ramp.
|
|
2307
|
+
*
|
|
2308
|
+
* Ground truth (COM `AddEffect` + raw OOXML inspection, see
|
|
2309
|
+
* `animation-emphasis-ground-truth-early.ts`): `style.fontWeight` (bold),
|
|
2310
|
+
* `style.fontStyle` (italic), `style.textDecorationUnderline` (underline),
|
|
2311
|
+
* `style.fontSize` (a numeric ramp: this module reads its FIRST/LAST stop
|
|
2312
|
+
* ratio as {@link TextStyleAnimationDescriptor.fontScale}, a relative
|
|
2313
|
+
* multiplier rather than an absolute size, since a shape's runs may not all
|
|
2314
|
+
* share the authored effect's own reference size), and `style.color` (font
|
|
2315
|
+
* colour, distinct from `fillcolor`/`stroke.color`, which the existing
|
|
2316
|
+
* `p:animClr` colour-animation path already owns).
|
|
2317
|
+
*
|
|
2318
|
+
* Deliberately does NOT model a "during" vs "after" phase distinction: the
|
|
2319
|
+
* hold-vs-revert decision this effect's `p:cTn/@fill` makes is already
|
|
2320
|
+
* computed once, correctly, by `animation-fill-repeat.ts`'s
|
|
2321
|
+
* `shouldHoldEndState` (the exact same rule CSS-animation steps already use
|
|
2322
|
+
* to decide whether their final frame persists on cleanup) and surfaced on
|
|
2323
|
+
* {@link import('./animation-timeline-types').TimelineStep.holdEndState}.
|
|
2324
|
+
* `animation-text-style-state.ts` reuses that flag rather than recomputing
|
|
2325
|
+
* hold/revert semantics a second time here.
|
|
2326
|
+
*
|
|
2327
|
+
* @module render/animation-text-style-resolve
|
|
2328
|
+
*/
|
|
2329
|
+
|
|
2330
|
+
/**
|
|
2331
|
+
* Framework-neutral text-style override a font-style emphasis effect applies
|
|
2332
|
+
* on top of its target's own authored per-run bold/italic/underline/size/
|
|
2333
|
+
* colour. Every binding maps this onto its own text container so it OVERRIDES
|
|
2334
|
+
* the runs' inline styles (the runs carry explicit inline styles of their
|
|
2335
|
+
* own, so plain CSS inheritance cannot reach them).
|
|
2336
|
+
*/
|
|
2337
|
+
interface TextStyleAnimationDescriptor {
|
|
2338
|
+
bold?: boolean;
|
|
2339
|
+
italic?: boolean;
|
|
2340
|
+
underline?: boolean;
|
|
2341
|
+
/** Relative multiplier against each run's own authored font size. */
|
|
2342
|
+
fontScale?: number;
|
|
2343
|
+
color?: string;
|
|
2344
|
+
}
|
|
2345
|
+
|
|
2346
|
+
/**
|
|
2347
|
+
* `animation-timeline-group` - click-group and whole-timeline models
|
|
2348
|
+
* ({@link TimelineClickGroup}, {@link AnimationTimeline},
|
|
2349
|
+
* {@link ElementAnimationState}, {@link AnimationStyle}), split out of
|
|
2350
|
+
* `animation-timeline-types` to keep that module under the file-size limit.
|
|
2351
|
+
* Re-exported from `animation-timeline-types` so existing imports are
|
|
2352
|
+
* unaffected.
|
|
2353
|
+
*
|
|
2354
|
+
* @module render/animation-timeline-group
|
|
2355
|
+
*/
|
|
2356
|
+
|
|
2526
2357
|
/** Snapshot of a single element's animation state at a point in the timeline. */
|
|
2527
2358
|
interface ElementAnimationState {
|
|
2528
2359
|
/** Whether the element should be visible. */
|
|
@@ -2573,6 +2404,18 @@ interface ElementAnimationState {
|
|
|
2573
2404
|
* `stroke: inherit`. Absent/false means no active stroke-colour animation.
|
|
2574
2405
|
*/
|
|
2575
2406
|
animatesStroke?: boolean;
|
|
2407
|
+
/**
|
|
2408
|
+
* Active discrete font-style / colour / size override (see
|
|
2409
|
+
* {@link import('./animation-timeline-step').TimelineStep.textStyle}) a
|
|
2410
|
+
* font-style emphasis effect currently applies to this element's text,
|
|
2411
|
+
* OVERRIDING the runs' own inline bold/italic/underline/size/colour.
|
|
2412
|
+
* `animation-playback-engine.ts` writes this on step start and again on
|
|
2413
|
+
* cleanup (held in full when the effect's `p:cTn/@fill` holds its end
|
|
2414
|
+
* state, otherwise reverted); a text renderer maps it onto its run markup
|
|
2415
|
+
* via `buildTextStyleOverrideCss` (`animation-text-style-css.ts`). Absent
|
|
2416
|
+
* means no font-style emphasis effect is currently active on this element.
|
|
2417
|
+
*/
|
|
2418
|
+
textStyle?: TextStyleAnimationDescriptor;
|
|
2576
2419
|
}
|
|
2577
2420
|
|
|
2578
2421
|
/**
|
|
@@ -2998,12 +2841,22 @@ declare function computeGridSpacingPx(gridSpacing: GridSpacingEmu | undefined, f
|
|
|
2998
2841
|
|
|
2999
2842
|
/** Default slide stage colour when a slide carries no usable background. */
|
|
3000
2843
|
declare const DEFAULT_SLIDE_BACKGROUND = "#ffffff";
|
|
2844
|
+
/**
|
|
2845
|
+
* The slide's own pixel size, needed only to anchor a `shadeToTitle`
|
|
2846
|
+
* gradient on the title placeholder's bounds (see
|
|
2847
|
+
* `background-shade-to-title.ts`). Optional: a caller that omits it still
|
|
2848
|
+
* gets the plain authored gradient, matching this project's prior behaviour.
|
|
2849
|
+
*/
|
|
2850
|
+
interface SlideBackgroundSize {
|
|
2851
|
+
widthPx: number;
|
|
2852
|
+
heightPx: number;
|
|
2853
|
+
}
|
|
3001
2854
|
/**
|
|
3002
2855
|
* Build the background portion of the slide stage style from a slide's
|
|
3003
2856
|
* resolved background fields. Returns only `background-*` properties so the
|
|
3004
2857
|
* caller can spread it into the rest of the stage style.
|
|
3005
2858
|
*/
|
|
3006
|
-
declare function getSlideBackgroundStyle(slide: PptxSlide | undefined): CssStyleMap;
|
|
2859
|
+
declare function getSlideBackgroundStyle(slide: PptxSlide | undefined, slideSize?: SlideBackgroundSize): CssStyleMap;
|
|
3007
2860
|
|
|
3008
2861
|
/**
|
|
3009
2862
|
* editor-insert.ts: Pure factory functions for creating new slide elements.
|
|
@@ -3628,67 +3481,6 @@ interface FieldSubstitutionContext {
|
|
|
3628
3481
|
slideTitle?: string;
|
|
3629
3482
|
}
|
|
3630
3483
|
|
|
3631
|
-
/**
|
|
3632
|
-
* CSS-ready tab layout for one run's text, built on the pure positioning maths
|
|
3633
|
-
* in `text-tab-layout.ts`.
|
|
3634
|
-
*
|
|
3635
|
-
* `buildRunTabLines` is the "pure decision function" every binding maps
|
|
3636
|
-
* mechanically onto its own template: it splits a run's text on `\n`, lays out
|
|
3637
|
-
* each line's `\t`-separated pieces against the paragraph's tab stops, and
|
|
3638
|
-
* returns, per piece, CSS a binding spreads verbatim onto a nested span (plus
|
|
3639
|
-
* a ready-filled leader string for the gap before it). A binding renders
|
|
3640
|
-
* nothing but `pieces.map(...)`; the alignment/leader decision itself never
|
|
3641
|
-
* has to be reimplemented per framework.
|
|
3642
|
-
*/
|
|
3643
|
-
|
|
3644
|
-
/** One tabbed-line piece, ready to spread onto a binding's own span element. */
|
|
3645
|
-
interface TabbedRunPiece {
|
|
3646
|
-
text: string;
|
|
3647
|
-
/**
|
|
3648
|
-
* CSS for the span that wraps `text`: inline-block layout, this run's own
|
|
3649
|
-
* decoration repeated, and this piece's own PowerPoint advance-width
|
|
3650
|
-
* correction as `letter-spacing` (see `buildTabbedLine`). The piece is
|
|
3651
|
-
* nested inside the run's own span, and neither property inherits the way a
|
|
3652
|
-
* caller would want: `text-decoration-*` does not inherit into a nested
|
|
3653
|
-
* element at all (an ancestor's underline is drawn *through* its
|
|
3654
|
-
* descendants, but each descendant still computes `none` of its own), so a
|
|
3655
|
-
* caller passes the run's decoration subset (`nestedTextDecorationStyle`) to
|
|
3656
|
-
* have it repeated here; `letter-spacing` DOES inherit, which is exactly why
|
|
3657
|
-
* this piece sets it explicitly rather than only when non-zero - the run's
|
|
3658
|
-
* container span carries its own (wrong, whole-text) correction that would
|
|
3659
|
-
* otherwise leak in.
|
|
3660
|
-
*/
|
|
3661
|
-
style: RunStyle;
|
|
3662
|
-
/** CSS for the leader-fill span preceding this piece, or `undefined` when there is no gap to fill. */
|
|
3663
|
-
leaderStyle?: RunStyle;
|
|
3664
|
-
/** Leader glyphs sized to fill `leaderStyle`'s width. Present only alongside `leaderStyle`. */
|
|
3665
|
-
leaderText?: string;
|
|
3666
|
-
/**
|
|
3667
|
-
* `a:rPr/@u="words"` per-word/gap sub-pieces of THIS tab piece's own text
|
|
3668
|
-
* (see `splitWordsForUnderline`), present only when the run's underline is
|
|
3669
|
-
* `words`. A tab-separated piece is otherwise rendered as a single span
|
|
3670
|
-
* (`text` + `style`), which underlines it continuously - correct for a
|
|
3671
|
-
* one-word piece, but wrong for a piece like `"Hello World"` between two tab
|
|
3672
|
-
* stops, which needs a gap under the space. A binding renders one SIBLING
|
|
3673
|
-
* span per entry IN PLACE OF the piece's single `text` span: each entry's
|
|
3674
|
-
* `style` is the piece's own `style` (the same inline-block layout and
|
|
3675
|
-
* advance-width correction, so the line measures exactly as before), with
|
|
3676
|
-
* the underline stripped on a gap entry. They must be siblings, not spans
|
|
3677
|
-
* nested inside the piece span: an ancestor's underline is drawn through
|
|
3678
|
-
* every inline descendant, so a nested gap could not lose it. `text`/`style`
|
|
3679
|
-
* stay the continuous-underline fallback for a binding that does not
|
|
3680
|
-
* render this field.
|
|
3681
|
-
*/
|
|
3682
|
-
words?: Array<{
|
|
3683
|
-
text: string;
|
|
3684
|
-
style: RunStyle;
|
|
3685
|
-
}>;
|
|
3686
|
-
}
|
|
3687
|
-
/** One `\n`-split line of a run's tabbed text. */
|
|
3688
|
-
interface TabbedLineRun {
|
|
3689
|
-
pieces: TabbedRunPiece[];
|
|
3690
|
-
}
|
|
3691
|
-
|
|
3692
3484
|
/**
|
|
3693
3485
|
* The two halves of an in-place cross-dissolve, paired so a binding can
|
|
3694
3486
|
* composite them the way PowerPoint composites them: ADDITIVELY.
|
|
@@ -4753,7 +4545,7 @@ declare const SLIDE_TRANSITION_KEYFRAMES: string;
|
|
|
4753
4545
|
* is rendered faithfully by delegating to {@link getP14TransitionAnimations}
|
|
4754
4546
|
* (its `@keyframes` live in `p14-transition-keyframes` and are folded into
|
|
4755
4547
|
* `SLIDE_TRANSITION_KEYFRAMES`). The newer Office 2013+ (p15) cinematic family
|
|
4756
|
-
* (`cube`/`flip`/`rotate`/`orbit`/`fallOver`/`drape`/`curtains`/`wind`/
|
|
4548
|
+
* (`cube`/`box`/`flip`/`rotate`/`orbit`/`fallOver`/`drape`/`curtains`/`wind`/
|
|
4757
4549
|
* `prestige`/`fracture`/`crush`/`peelOff`/`pageCurlSingle`/`pageCurlDouble`/
|
|
4758
4550
|
* `airplane`/`origami`) is likewise rendered faithfully via
|
|
4759
4551
|
* {@link getCinematicTransitionAnimations} (its `@keyframes` live in
|
|
@@ -4771,7 +4563,7 @@ declare const SLIDE_TRANSITION_KEYFRAMES: string;
|
|
|
4771
4563
|
*
|
|
4772
4564
|
* Unknown types fall back to a symmetrical cross-fade.
|
|
4773
4565
|
*/
|
|
4774
|
-
declare function getSlideTransitionAnimations(type: PptxTransitionType, durationMs: number, direction: string | undefined, orient?: string | undefined, spokes?: number | undefined): SlideTransitionAnimations;
|
|
4566
|
+
declare function getSlideTransitionAnimations(type: PptxTransitionType, durationMs: number, direction: string | undefined, orient?: string | undefined, spokes?: number | undefined, pattern?: string | undefined): SlideTransitionAnimations;
|
|
4775
4567
|
|
|
4776
4568
|
/**
|
|
4777
4569
|
* `slide-transition-options` - the pure option catalogues backing every
|
|
@@ -5885,57 +5677,6 @@ declare function formatTime(date: Date): string;
|
|
|
5885
5677
|
*/
|
|
5886
5678
|
declare function formatElapsed(elapsedMs: number): string;
|
|
5887
5679
|
|
|
5888
|
-
/**
|
|
5889
|
-
* `text-build-spans` - framework-agnostic spec for rendering a staged text
|
|
5890
|
-
* build (by paragraph / word / letter).
|
|
5891
|
-
*
|
|
5892
|
-
* `expandTextBuildAnimations` splits one animation into per-paragraph,
|
|
5893
|
-
* per-word or per-character sub-animations keyed `<elementId>::p0` /
|
|
5894
|
-
* `::w0-3` / `::c0-7`. Something then has to split the RENDERED text the same
|
|
5895
|
-
* way and attach each sub-animation to its own span, or the build has no
|
|
5896
|
-
* visible effect and the whole box fades as one.
|
|
5897
|
-
*
|
|
5898
|
-
* React did that inline in JSX, which left the other four bindings with no
|
|
5899
|
-
* by-letter animation at all. This module returns the split as plain data so
|
|
5900
|
-
* every binding can render it with its own primitives - the same shape as
|
|
5901
|
-
* `notesSegmentsToSpans`.
|
|
5902
|
-
*
|
|
5903
|
-
* @module render/text-build-spans
|
|
5904
|
-
*/
|
|
5905
|
-
|
|
5906
|
-
/** One rendered piece of a staged text build. */
|
|
5907
|
-
interface TextBuildSpan<TStyle = unknown> {
|
|
5908
|
-
/**
|
|
5909
|
-
* The sub-animation id (`<elementId>::c0-3`), or `undefined` for the
|
|
5910
|
-
* whitespace between words, which is emitted verbatim and never animated.
|
|
5911
|
-
*/
|
|
5912
|
-
animId?: string;
|
|
5913
|
-
/** The text this span renders. */
|
|
5914
|
-
text: string;
|
|
5915
|
-
/** True when the sub-animation says the piece is not visible yet. */
|
|
5916
|
-
hidden: boolean;
|
|
5917
|
-
/** The CSS `animation` shorthand to apply, when one is running. */
|
|
5918
|
-
cssAnimation?: string;
|
|
5919
|
-
/**
|
|
5920
|
-
* The style of the run this piece came from, passed straight through. A
|
|
5921
|
-
* build splits the text but must not flatten its formatting: without this a
|
|
5922
|
-
* bold or coloured run turns plain for the duration of the animation.
|
|
5923
|
-
*/
|
|
5924
|
-
style?: TStyle;
|
|
5925
|
-
}
|
|
5926
|
-
/** How a paragraph's text is split for its build. */
|
|
5927
|
-
type TextBuildGranularity = 'paragraph' | 'word' | 'char';
|
|
5928
|
-
/** The spec for one paragraph of a staged text build. */
|
|
5929
|
-
interface TextBuildSpec<TStyle = unknown> {
|
|
5930
|
-
granularity: TextBuildGranularity;
|
|
5931
|
-
/** For a paragraph-level build, the single wrapper's id. */
|
|
5932
|
-
animId?: string;
|
|
5933
|
-
hidden?: boolean;
|
|
5934
|
-
cssAnimation?: string;
|
|
5935
|
-
/** For word/char builds, the pieces in render order. */
|
|
5936
|
-
spans?: TextBuildSpan<TStyle>[];
|
|
5937
|
-
}
|
|
5938
|
-
|
|
5939
5680
|
/**
|
|
5940
5681
|
* audience-content-store: IndexedDB-based storage for sharing PPTX content
|
|
5941
5682
|
* between the presenter tab and audience tab.
|
|
@@ -6422,6 +6163,41 @@ interface FlatTagRow {
|
|
|
6422
6163
|
tagIdx: number;
|
|
6423
6164
|
}
|
|
6424
6165
|
|
|
6166
|
+
/**
|
|
6167
|
+
* Which element kinds model an accessibility description (`altText`) and
|
|
6168
|
+
* title (`title`) on `p:cNvPr` (`@descr` / `@title`, `PptxNonVisualDescription`
|
|
6169
|
+
* in core), and a pure descriptor every binding's inspector can use to decide
|
|
6170
|
+
* whether to show the alt-text / title editing fields for the selected
|
|
6171
|
+
* element.
|
|
6172
|
+
*
|
|
6173
|
+
* Before this module existed, a picture's own alt-text field was the only
|
|
6174
|
+
* one any binding's inspector rendered; a plain shape, text box or connector
|
|
6175
|
+
* had nowhere to author the same PowerPoint Accessibility-pane text even
|
|
6176
|
+
* after core started parsing it. Centralising the "which element kinds get
|
|
6177
|
+
* which field" decision here means a new kind reaches every binding's
|
|
6178
|
+
* inspector by editing one set, not five.
|
|
6179
|
+
*
|
|
6180
|
+
* @module render/element-non-visual-description
|
|
6181
|
+
*/
|
|
6182
|
+
|
|
6183
|
+
/**
|
|
6184
|
+
* A pure descriptor of the accessibility editing fields a binding's
|
|
6185
|
+
* inspector should show for `element`, and the current values to bind them
|
|
6186
|
+
* to (empty string when unset, never `undefined`, so a binding can wire it
|
|
6187
|
+
* straight to a controlled text input). Mapping this onto a framework's own
|
|
6188
|
+
* form control is the only per-binding work.
|
|
6189
|
+
*/
|
|
6190
|
+
interface NonVisualDescriptionFields {
|
|
6191
|
+
/** Show an alt-text (description) editor for this element. */
|
|
6192
|
+
showAltText: boolean;
|
|
6193
|
+
/** Show a title editor for this element. */
|
|
6194
|
+
showTitle: boolean;
|
|
6195
|
+
/** Current alt-text value, or `''` when unset or not applicable. */
|
|
6196
|
+
altText: string;
|
|
6197
|
+
/** Current title value, or `''` when unset or not applicable. */
|
|
6198
|
+
title: string;
|
|
6199
|
+
}
|
|
6200
|
+
|
|
6425
6201
|
/**
|
|
6426
6202
|
* Pure, framework-agnostic helpers for freehand ink drawing, shared by every
|
|
6427
6203
|
* binding. No framework imports, so these can be unit-tested without TestBed.
|
|
@@ -6440,7 +6216,41 @@ interface InkPoint {
|
|
|
6440
6216
|
* data".
|
|
6441
6217
|
*/
|
|
6442
6218
|
pressure?: number;
|
|
6219
|
+
/**
|
|
6220
|
+
* Pen-tilt lean, in degrees, from `PointerEvent.tiltX`/`tiltY` on
|
|
6221
|
+
* supporting hardware (a mouse, or a stylus with no tilt sensor, reports a
|
|
6222
|
+
* constant 0). Optional and always captured as a pair: a binding that has
|
|
6223
|
+
* not wired tilt capture simply omits both, and {@link strokeToInkElement}
|
|
6224
|
+
* treats a constant `(0, 0)` reading the same way it treats a constant
|
|
6225
|
+
* pressure, i.e. as "no real tilt data" rather than authoring a channel
|
|
6226
|
+
* for it.
|
|
6227
|
+
*/
|
|
6228
|
+
tiltX?: number;
|
|
6229
|
+
tiltY?: number;
|
|
6230
|
+
}
|
|
6231
|
+
/**
|
|
6232
|
+
* Minimal shape of the browser `PointerEvent` fields {@link pointFromPointerEvent}
|
|
6233
|
+
* reads. Kept duck-typed (not `PointerEvent` itself) so this module has no DOM
|
|
6234
|
+
* lib dependency and is trivially unit-testable with a plain object.
|
|
6235
|
+
*/
|
|
6236
|
+
interface PointerEventLike {
|
|
6237
|
+
pressure?: number;
|
|
6238
|
+
tiltX?: number;
|
|
6239
|
+
tiltY?: number;
|
|
6443
6240
|
}
|
|
6241
|
+
/**
|
|
6242
|
+
* Attach a pointer event's pressure and tilt reading to an already
|
|
6243
|
+
* stage-mapped `{x, y}` position, producing the {@link InkPoint} every
|
|
6244
|
+
* binding's Draw-tab pointerdown/pointermove handler feeds into
|
|
6245
|
+
* {@link strokeToInkElement} (directly, or via an accumulated points array).
|
|
6246
|
+
*
|
|
6247
|
+
* Each binding computes `{x, y}` differently (its own stage rect + zoom
|
|
6248
|
+
* scale), which is why this only takes the already-local position rather than
|
|
6249
|
+
* a raw client-coordinate event; extracting `pressure`/`tiltX`/`tiltY`
|
|
6250
|
+
* verbatim onto that point is the one part every binding must do identically,
|
|
6251
|
+
* so it lives here instead of being re-typed out five times.
|
|
6252
|
+
*/
|
|
6253
|
+
declare function pointFromPointerEvent(x: number, y: number, event: PointerEventLike): InkPoint;
|
|
6444
6254
|
/**
|
|
6445
6255
|
* Convert an array of points into an SVG path `d` attribute string.
|
|
6446
6256
|
* - 0 points -> `''`
|
|
@@ -6469,6 +6279,11 @@ interface StrokeToInkElementOpts {
|
|
|
6469
6279
|
* the per-point pressure channel is attached as `inkPointPressures: [[...]]`
|
|
6470
6280
|
* so every binding's shared ink renderer (`ink-rendering.ts`) draws the
|
|
6471
6281
|
* stroke at variable width, identically to a stroke authored in React.
|
|
6282
|
+
* - When any point carries a genuinely non-zero `tiltX`/`tiltY` reading, the
|
|
6283
|
+
* raw per-point tilt channel is attached as `inkPointTiltX`/`inkPointTiltY`
|
|
6284
|
+
* so every binding's shared ink renderer (`ink-group-strokes.ts`) draws the
|
|
6285
|
+
* calligraphic nib lean, and the core save pipeline authors it as InkML
|
|
6286
|
+
* `OTx`/`OTy`.
|
|
6472
6287
|
*/
|
|
6473
6288
|
declare function strokeToInkElement(opts: StrokeToInkElementOpts): InkPptxElement | null;
|
|
6474
6289
|
|
|
@@ -6583,6 +6398,132 @@ interface InkStrokeAnimationStyle {
|
|
|
6583
6398
|
strokeDashoffset: string;
|
|
6584
6399
|
}
|
|
6585
6400
|
|
|
6401
|
+
/**
|
|
6402
|
+
* Pen-tilt calligraphic nib rendering.
|
|
6403
|
+
*
|
|
6404
|
+
* A stylus or digitizer pen can report its tilt (how far it leans off
|
|
6405
|
+
* perpendicular, and which way) alongside position and pressure. This module
|
|
6406
|
+
* turns that per-point tilt data into "nib marks": ellipses widened
|
|
6407
|
+
* perpendicular to the pen's lean direction, approximating the look of a
|
|
6408
|
+
* chisel-tip calligraphy pen. It is the tilt counterpart of the plain
|
|
6409
|
+
* pressure-circle rendering in `./ink-rendering`.
|
|
6410
|
+
*
|
|
6411
|
+
* Framework-agnostic: only depends on `./ink-rendering`'s point/width types,
|
|
6412
|
+
* so every binding (React, Vue, Angular, Svelte, Vanilla) consumes one copy.
|
|
6413
|
+
*
|
|
6414
|
+
* @module ink-tilt-nib
|
|
6415
|
+
*/
|
|
6416
|
+
|
|
6417
|
+
/**
|
|
6418
|
+
* One calligraphic nib mark: an ellipse whose wide axis sits perpendicular to
|
|
6419
|
+
* the pen's tilt-lean direction at that point, approximating a chisel-tip
|
|
6420
|
+
* nib. Degrades to a circle (`rPerp === rTilt`) wherever tilt magnitude is 0.
|
|
6421
|
+
*/
|
|
6422
|
+
interface NibMark {
|
|
6423
|
+
cx: number;
|
|
6424
|
+
cy: number;
|
|
6425
|
+
/** Radius along the tilt-lean direction (the nib's narrow axis). */
|
|
6426
|
+
rTilt: number;
|
|
6427
|
+
/** Radius perpendicular to the tilt-lean direction (the nib's wide axis). */
|
|
6428
|
+
rPerp: number;
|
|
6429
|
+
/**
|
|
6430
|
+
* Rotation, in degrees, to apply to an SVG `<ellipse rx={rPerp} ry={rTilt}>`
|
|
6431
|
+
* (e.g. via `transform="rotate(rotationDeg cx cy)"`) so its wide axis
|
|
6432
|
+
* points perpendicular to the lean direction.
|
|
6433
|
+
*/
|
|
6434
|
+
rotationDeg: number;
|
|
6435
|
+
}
|
|
6436
|
+
|
|
6437
|
+
/** One rendered stroke: a constant-width path, pressure circles, or tilt nib marks. */
|
|
6438
|
+
interface InkStrokeView {
|
|
6439
|
+
d: string;
|
|
6440
|
+
color: string;
|
|
6441
|
+
width: number;
|
|
6442
|
+
opacity: number;
|
|
6443
|
+
/** Per-point pressure circles; `null` renders the plain path. Mutually exclusive with `nibMarks`. */
|
|
6444
|
+
circles: PressureCircle[] | null;
|
|
6445
|
+
/**
|
|
6446
|
+
* Per-point calligraphic nib marks, built from the stroke's tilt channels;
|
|
6447
|
+
* `null` when the stroke declared no (or all-zero) tilt data, in which
|
|
6448
|
+
* case `circles` (or the plain path) renders as before this feature
|
|
6449
|
+
* existed.
|
|
6450
|
+
*/
|
|
6451
|
+
nibMarks: NibMark[] | null;
|
|
6452
|
+
}
|
|
6453
|
+
|
|
6454
|
+
/**
|
|
6455
|
+
* Live (in-progress) stroke preview for the Draw tool, shared by every
|
|
6456
|
+
* binding.
|
|
6457
|
+
*
|
|
6458
|
+
* Before this module, every binding's Draw overlay built its own live-preview
|
|
6459
|
+
* polyline `d` directly from the accumulated point list and stopped there: a
|
|
6460
|
+
* calligraphic pen-tilt lean or a pressure-variable width only ever appeared
|
|
6461
|
+
* once `pointerup` committed the stroke as an `InkPptxElement` and it
|
|
6462
|
+
* round-tripped through {@link buildInkGroupStrokes}. This function is the
|
|
6463
|
+
* "pointer still down" twin of that: given the SAME accumulated `InkPoint[]`
|
|
6464
|
+
* (with per-point pressure/tilt already attached by
|
|
6465
|
+
* {@link pointFromPointerEvent}), it makes the SAME render-mode decision
|
|
6466
|
+
* ({@link buildInkStrokeView}) a just-committed stroke would get, so a
|
|
6467
|
+
* calligraphic-nib or pressure-variable stroke looks identical before and
|
|
6468
|
+
* after `pointerup`. Every binding's Draw overlay maps the result the same
|
|
6469
|
+
* way its committed-stroke renderer already maps an `InkStrokeView` (plain
|
|
6470
|
+
* path / pressure circles / tilt nib marks).
|
|
6471
|
+
*
|
|
6472
|
+
* @module render/ink-live-preview
|
|
6473
|
+
*/
|
|
6474
|
+
|
|
6475
|
+
/** Options for {@link buildLiveInkStrokeView}. */
|
|
6476
|
+
interface LiveInkStrokeViewOpts {
|
|
6477
|
+
/**
|
|
6478
|
+
* Accumulated in-progress points, in the overlay's own stage-local
|
|
6479
|
+
* coordinate space. Unlike {@link strokeToInkElement}, these are NOT
|
|
6480
|
+
* translated to a bounding-box origin: a live preview draws directly over
|
|
6481
|
+
* the untranslated stage the same way the plain polyline it replaces
|
|
6482
|
+
* always did.
|
|
6483
|
+
*/
|
|
6484
|
+
points: InkPoint[];
|
|
6485
|
+
color: string;
|
|
6486
|
+
width: number;
|
|
6487
|
+
tool: 'pen' | 'highlighter' | 'freeform';
|
|
6488
|
+
}
|
|
6489
|
+
/**
|
|
6490
|
+
* Build the render view for an in-progress stroke, or `null` when there are
|
|
6491
|
+
* no points yet (nothing to draw).
|
|
6492
|
+
*
|
|
6493
|
+
* Mirrors {@link strokeToInkElement}'s pressure/tilt "did it capture real
|
|
6494
|
+
* data" decision, but skips the bounding-box translation and the
|
|
6495
|
+
* fewer-than-two-points rejection: a live preview must draw starting from the
|
|
6496
|
+
* very first point (a single dot is a valid in-progress state, unlike a
|
|
6497
|
+
* committed stroke, which requires at least two points to have a path at
|
|
6498
|
+
* all).
|
|
6499
|
+
*/
|
|
6500
|
+
declare function buildLiveInkStrokeView(opts: LiveInkStrokeViewOpts): InkStrokeView | null;
|
|
6501
|
+
|
|
6502
|
+
/**
|
|
6503
|
+
* Framework-neutral view model for a Draw-tab `InkPptxElement`'s own strokes.
|
|
6504
|
+
*
|
|
6505
|
+
* Mirrors `content-part-strokes.ts` (the same decision for a loaded
|
|
6506
|
+
* `p:contentPart`), but reads an `InkPptxElement`'s parallel per-path arrays
|
|
6507
|
+
* (`inkPaths`/`inkColors`/`inkWidths`/`inkOpacities`/`inkPointPressures`/
|
|
6508
|
+
* `inkPointTiltX`/`inkPointTiltY`) instead of a `ContentPartInkStroke[]`.
|
|
6509
|
+
*
|
|
6510
|
+
* Every binding used to hand-roll this exact pressure-circle decision (with
|
|
6511
|
+
* two subtly different legacy-fallback conditions: `inkWidths.length > 1` in
|
|
6512
|
+
* React/Angular vs. the more correct `inkWidths.length > el.inkPaths.length`
|
|
6513
|
+
* in Vue/Svelte/vanilla, since a per-PATH widths array of length 2 on a
|
|
6514
|
+
* 3-path stroke is not per-POINT legacy data), and none of them rendered a
|
|
6515
|
+
* tilt-driven calligraphic nib for this element type at all (only the loaded
|
|
6516
|
+
* `contentPart` path had it). One decision function closes both gaps for all
|
|
6517
|
+
* five bindings at once.
|
|
6518
|
+
*
|
|
6519
|
+
* @module render/ink-group-strokes
|
|
6520
|
+
*/
|
|
6521
|
+
|
|
6522
|
+
/** One rendered ink-group stroke, keyed for list rendering. */
|
|
6523
|
+
interface InkGroupStrokeView extends InkStrokeView {
|
|
6524
|
+
key: string;
|
|
6525
|
+
}
|
|
6526
|
+
|
|
6586
6527
|
/**
|
|
6587
6528
|
* Pure helper logic for mobile chrome state, shared by every binding.
|
|
6588
6529
|
*
|
|
@@ -8002,6 +7943,16 @@ interface ReadOnlyRecommendation {
|
|
|
8002
7943
|
readonly messageKey: string;
|
|
8003
7944
|
/** Whether a binding's "read-only" toggle should default to on. */
|
|
8004
7945
|
readonly defaultReadOnly: boolean;
|
|
7946
|
+
/**
|
|
7947
|
+
* Whether lifting this recommendation requires a correct password, rather
|
|
7948
|
+
* than a plain "Edit anyway". True only for a `modifyVerifier` that carries
|
|
7949
|
+
* a hash this viewer can actually check (`hashData` + `saltData` +
|
|
7950
|
+
* `algorithmName`, see `checkModifyPassword`). "Mark as Final" is purely
|
|
7951
|
+
* advisory and never requires one, and a `modifyVerifier` missing pieces of
|
|
7952
|
+
* its hash cannot be verified either way, so both fall back to the plain
|
|
7953
|
+
* "Edit anyway" a binding already had.
|
|
7954
|
+
*/
|
|
7955
|
+
readonly requiresPassword: boolean;
|
|
8005
7956
|
}
|
|
8006
7957
|
|
|
8007
7958
|
interface CompatibilityWarningToast {
|
|
@@ -9286,6 +9237,13 @@ interface ConnectOptions {
|
|
|
9286
9237
|
* edits would be dropped from the persisted deck.
|
|
9287
9238
|
*/
|
|
9288
9239
|
getTemplateElements?: () => TemplateElementsBySlideId;
|
|
9240
|
+
/**
|
|
9241
|
+
* Session-level save options (view properties, table styles, tags, deck
|
|
9242
|
+
* properties, ...), built the same way as the Save/Export path
|
|
9243
|
+
* (`buildDeckSaveOptions`). Without this the elected-writer write-back
|
|
9244
|
+
* dropped every session-level edit outside `slides`.
|
|
9245
|
+
*/
|
|
9246
|
+
getSaveOptions?: () => PptxHandlerSaveOptions;
|
|
9289
9247
|
}
|
|
9290
9248
|
|
|
9291
9249
|
declare class CollaborationService {
|
|
@@ -9318,6 +9276,7 @@ declare class CollaborationService {
|
|
|
9318
9276
|
private canvasHeight;
|
|
9319
9277
|
private getSourceBytes;
|
|
9320
9278
|
private getTemplateElements;
|
|
9279
|
+
private getSaveOptions;
|
|
9321
9280
|
private currentConfig;
|
|
9322
9281
|
private lastConfig;
|
|
9323
9282
|
private lastOptions;
|
|
@@ -9821,6 +9780,14 @@ declare class LoadContentService {
|
|
|
9821
9780
|
readonly themeColorMap: _angular_core.WritableSignal<Record<string, string> | undefined>;
|
|
9822
9781
|
/** Parsed table-style definitions from `ppt/tableStyles.xml` (banding/diagonals). */
|
|
9823
9782
|
readonly tableStyleMap: _angular_core.WritableSignal<ParsedTableStyleMap | undefined>;
|
|
9783
|
+
/** `ppt/tableStyles.xml`'s `<a:tblStyleLst @def>` default style GUID. */
|
|
9784
|
+
readonly tableStylesDefaultId: _angular_core.WritableSignal<string | undefined>;
|
|
9785
|
+
/**
|
|
9786
|
+
* Style GUIDs deleted from `tableStyleMap` via the table style editor,
|
|
9787
|
+
* pending removal from `ppt/tableStyles.xml` on the next save. See
|
|
9788
|
+
* `tableStyleSaveOptions` / `applyTableStyleDelete` in `pptx-viewer-shared`.
|
|
9789
|
+
*/
|
|
9790
|
+
readonly tableStylesToDelete: _angular_core.WritableSignal<string[]>;
|
|
9824
9791
|
/** Slide masters (for placeholder/background resolution). */
|
|
9825
9792
|
readonly slideMasters: _angular_core.WritableSignal<PptxSlideMaster[]>;
|
|
9826
9793
|
/** Notes master, including its editable element tree. */
|
|
@@ -9977,10 +9944,25 @@ declare class LoadNoticesService {
|
|
|
9977
9944
|
* host viewer's `canEdit`, the same way the Protected View lock does.
|
|
9978
9945
|
*/
|
|
9979
9946
|
readonly lockActive: _angular_core.Signal<boolean>;
|
|
9980
|
-
/**
|
|
9947
|
+
/** Whether the inline password prompt should render instead of the two buttons. */
|
|
9948
|
+
readonly passwordPromptOpen: _angular_core.WritableSignal<boolean>;
|
|
9949
|
+
/** Reason the last password attempt failed, or null before any attempt / after success. */
|
|
9950
|
+
readonly passwordError: _angular_core.WritableSignal<"wrong-password" | "unsupported-algorithm" | null>;
|
|
9951
|
+
/** True while {@link submitPassword}'s check is in flight (disables the form). */
|
|
9952
|
+
readonly checkingPassword: _angular_core.WritableSignal<boolean>;
|
|
9953
|
+
/**
|
|
9954
|
+
* "Edit anyway": lifts the recommendation's lock and hides the banner, or
|
|
9955
|
+
* (when `recommendation().requiresPassword` is set) opens the inline
|
|
9956
|
+
* password prompt instead of unlocking immediately.
|
|
9957
|
+
*/
|
|
9981
9958
|
editAnyway(): void;
|
|
9982
9959
|
/** "Dismiss": hides the banner but leaves any lock in place. */
|
|
9983
9960
|
dismissBanner(): void;
|
|
9961
|
+
/** Close the password prompt without unlocking. */
|
|
9962
|
+
cancelPasswordPrompt(): void;
|
|
9963
|
+
/** Check `password` against the deck's `modifyVerifier`; unlocks on a match. */
|
|
9964
|
+
submitPassword(password: string): Promise<void>;
|
|
9965
|
+
private unlock;
|
|
9984
9966
|
/** Deck-level plus every slide's compatibility warnings, deduped by code. */
|
|
9985
9967
|
readonly toasts: _angular_core.Signal<CompatibilityWarningToast[]>;
|
|
9986
9968
|
private readonly dismissedToastIds;
|
|
@@ -10844,6 +10826,13 @@ interface CollaborationSessionHost {
|
|
|
10844
10826
|
};
|
|
10845
10827
|
/** The loaded source `.pptx` bytes for elected-writer write-back, if any. */
|
|
10846
10828
|
readonly getSourceBytes: () => Uint8Array | null;
|
|
10829
|
+
/**
|
|
10830
|
+
* Session-level save options (view properties, table styles, tags, deck
|
|
10831
|
+
* properties, ...), built the same way as the Save/Export path. Without
|
|
10832
|
+
* this the elected-writer write-back dropped every session-level edit
|
|
10833
|
+
* outside `slides`.
|
|
10834
|
+
*/
|
|
10835
|
+
readonly getSaveOptions: () => PptxHandlerSaveOptions;
|
|
10847
10836
|
/** The current editable deck (seeds the sync baseline after connecting). */
|
|
10848
10837
|
readonly currentSlides: () => readonly PptxSlide[];
|
|
10849
10838
|
readonly emitStart: (config: CollaborationConfig) => void;
|
|
@@ -13252,6 +13241,18 @@ interface BridgeDeps {
|
|
|
13252
13241
|
getCoreProperties(): PptxCoreProperties | undefined;
|
|
13253
13242
|
/** Extended application properties (`docProps/app.xml`), loader-tracked. */
|
|
13254
13243
|
getAppProperties(): PptxAppProperties | undefined;
|
|
13244
|
+
/**
|
|
13245
|
+
* `ppt/viewProps.xml` (grid/snap/guides toggles), loader-tracked. Included
|
|
13246
|
+
* so the deck tools' `getDeckData`/`applyDeckData` seam sees the same
|
|
13247
|
+
* fields the main Save/Export path persists (`loader.saveSlides`).
|
|
13248
|
+
*/
|
|
13249
|
+
getViewProperties(): PptxViewProperties | undefined;
|
|
13250
|
+
/** Parsed `ppt/tableStyles.xml` map, loader-tracked. */
|
|
13251
|
+
getTableStyleMap(): ParsedTableStyleMap | undefined;
|
|
13252
|
+
/** `<a:tblStyleLst @def>` default style GUID, loader-tracked. */
|
|
13253
|
+
getTableStylesDefaultId(): string | undefined;
|
|
13254
|
+
/** `ppt/tags/*.xml` name/value metadata, loader-tracked. */
|
|
13255
|
+
getTagCollections(): readonly PptxTagCollection[];
|
|
13255
13256
|
/** Set the slide canvas size (px) and mark the deck dirty. */
|
|
13256
13257
|
setCanvasSize(size: {
|
|
13257
13258
|
width: number;
|
|
@@ -13267,6 +13268,14 @@ interface BridgeDeps {
|
|
|
13267
13268
|
setCoreProperties(props: PptxCoreProperties | undefined): void;
|
|
13268
13269
|
/** Replace the extended application properties and mark the deck dirty. */
|
|
13269
13270
|
setAppProperties(props: PptxAppProperties | undefined): void;
|
|
13271
|
+
/** Replace the view properties and mark the deck dirty. */
|
|
13272
|
+
setViewProperties(props: PptxViewProperties | undefined): void;
|
|
13273
|
+
/** Replace the table style map and mark the deck dirty. */
|
|
13274
|
+
setTableStyleMap(map: ParsedTableStyleMap | undefined): void;
|
|
13275
|
+
/** Replace the default table style GUID and mark the deck dirty. */
|
|
13276
|
+
setTableStylesDefaultId(id: string | undefined): void;
|
|
13277
|
+
/** Replace the tag collections and mark the deck dirty. */
|
|
13278
|
+
setTagCollections(tags: readonly PptxTagCollection[]): void;
|
|
13270
13279
|
/**
|
|
13271
13280
|
* The slides / elements the assistant should scope its work to (explicit AI
|
|
13272
13281
|
* picks, else a pinned focus, else the live canvas selection). When omitted,
|
|
@@ -13720,6 +13729,14 @@ declare class InkDrawingService {
|
|
|
13720
13729
|
readonly active: _angular_core.WritableSignal<boolean>;
|
|
13721
13730
|
/** SVG path `d` for the live stroke preview (updated on every pointer move). */
|
|
13722
13731
|
readonly liveInkPath: _angular_core.WritableSignal<string>;
|
|
13732
|
+
/**
|
|
13733
|
+
* The in-progress stroke's render view (plain path, pressure circles, or
|
|
13734
|
+
* tilt nib marks), from the shared `buildLiveInkStrokeView`: the same
|
|
13735
|
+
* decision `InkRendererComponent` makes for a committed stroke, fed the
|
|
13736
|
+
* SAME accumulated `points` {@link handlePointerUp} hands to
|
|
13737
|
+
* `strokeToInkElement`. `null` while idle.
|
|
13738
|
+
*/
|
|
13739
|
+
readonly liveStrokeView: _angular_core.WritableSignal<InkStrokeView | null>;
|
|
13723
13740
|
/** Accumulated points for the stroke currently being drawn. */
|
|
13724
13741
|
private points;
|
|
13725
13742
|
private host;
|
|
@@ -13728,6 +13745,15 @@ declare class InkDrawingService {
|
|
|
13728
13745
|
private requireHost;
|
|
13729
13746
|
/** True when a draw tool (anything but 'select') should own the current gesture. */
|
|
13730
13747
|
isDrawToolActive(): boolean;
|
|
13748
|
+
/** Narrow the ribbon's `DrawTool` to the pen/highlighter/freeform union `strokeToInkElement`/`buildLiveInkStrokeView` accept. */
|
|
13749
|
+
private resolveTool;
|
|
13750
|
+
/**
|
|
13751
|
+
* Recompute `liveInkPath`/`liveStrokeView` from the currently accumulated
|
|
13752
|
+
* points. Called after every pointerdown/pointermove so the preview shows
|
|
13753
|
+
* the same calligraphic-nib / pressure-circle decision a committed stroke
|
|
13754
|
+
* gets, while the pointer is still down.
|
|
13755
|
+
*/
|
|
13756
|
+
private syncLivePreview;
|
|
13731
13757
|
/**
|
|
13732
13758
|
* Handle a stage pointerdown while a draw tool is active: eraser hit-tests
|
|
13733
13759
|
* against ink elements (topmost wins); pen/highlighter/freeform begin a new
|
|
@@ -14365,359 +14391,108 @@ declare class SlideCanvasComponent implements SlideContext {
|
|
|
14365
14391
|
/**
|
|
14366
14392
|
* Bounds of a single selection, highlighted on both strips (PowerPoint shades
|
|
14367
14393
|
* the selected shape's span on its rulers). Multi-selection paints nothing,
|
|
14368
|
-
* matching React and Svelte.
|
|
14369
|
-
*/
|
|
14370
|
-
private readonly rulerHighlightBounds;
|
|
14371
|
-
/** Selected element extent (scaled px) highlighted on the horizontal strip. */
|
|
14372
|
-
readonly hRulerHighlight: _angular_core.Signal<{
|
|
14373
|
-
start: number;
|
|
14374
|
-
span: number;
|
|
14375
|
-
} | null>;
|
|
14376
|
-
/** Selected element extent (scaled px) highlighted on the vertical strip. */
|
|
14377
|
-
readonly vRulerHighlight: _angular_core.Signal<{
|
|
14378
|
-
start: number;
|
|
14379
|
-
span: number;
|
|
14380
|
-
} | null>;
|
|
14381
|
-
readonly stageStyle: _angular_core.Signal<StyleMap>;
|
|
14382
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlideCanvasComponent, never>;
|
|
14383
|
-
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>;
|
|
14384
|
-
}
|
|
14385
|
-
|
|
14386
|
-
/**
|
|
14387
|
-
* Renderer-injected shape-effect definitions that need a companion DOM node
|
|
14388
|
-
* (a soft-edge `<filter>` def, a DAG fill-overlay tint layer), plus the helper
|
|
14389
|
-
* that strips dangling `url(#…)` filter references.
|
|
14390
|
-
*
|
|
14391
|
-
* Kept out of `element-style.ts` so that module stays focused on producing the
|
|
14392
|
-
* base `[ngStyle]` maps. Mirrors the Vue/Svelte `ShapeEffectOverlay` split.
|
|
14393
|
-
*/
|
|
14394
|
-
|
|
14395
|
-
/** Injectable soft-edge `<filter>` descriptor (id + feather radius in px). */
|
|
14396
|
-
interface SoftEdgeFilterDef {
|
|
14397
|
-
id: string;
|
|
14398
|
-
radius: number;
|
|
14399
|
-
}
|
|
14400
|
-
/**
|
|
14401
|
-
* `a:reflection` mirrored-sibling descriptor: the wrapper style (position,
|
|
14402
|
-
* mirror transform, mask-image fade - see shared's `getReflectionWrapperStyle`)
|
|
14403
|
-
* plus the mirrored CONTENT to paint inside it. Cross-browser, unlike the
|
|
14404
|
-
* `-webkit-box-reflect` `element-style.ts` used to set (Firefox never
|
|
14405
|
-
* implemented that property, so reflections were invisible there entirely).
|
|
14406
|
-
*/
|
|
14407
|
-
interface ReflectionOverlay {
|
|
14408
|
-
wrapperStyle: ReflectionWrapperStyle;
|
|
14409
|
-
/** Set for a picture/image element: its actual photo, cloned. */
|
|
14410
|
-
imgSrc?: string;
|
|
14411
|
-
imgFitStyle?: Record<string, unknown>;
|
|
14412
|
-
/** Set for everything else: the resolved fill (colour/gradient/pattern/image). */
|
|
14413
|
-
fill?: ComputedFillStyle;
|
|
14414
|
-
}
|
|
14415
|
-
|
|
14416
|
-
/**
|
|
14417
|
-
* Angular's paragraph view model, built from the SHARED `buildParagraphs`.
|
|
14418
|
-
*
|
|
14419
|
-
* This module replaces the ~190-line hand-ported paragraph builder that used to
|
|
14420
|
-
* live inside `element-renderer.component.ts` (self-documented as "hand-ported
|
|
14421
|
-
* from `buildParagraphs`"). That copy had already drifted: it applied a
|
|
14422
|
-
* paragraph's bullet unconditionally, with none of shared's "suppress the
|
|
14423
|
-
* bullet on a paragraph with no visible text" rule, so a whitespace-only or
|
|
14424
|
-
* marker-only paragraph painted a stray bullet here and nothing elsewhere.
|
|
14425
|
-
*
|
|
14426
|
-
* It also replaces the segment walk that used to follow the shared call. Runs
|
|
14427
|
-
* carry their own `hyperlink` and `equation` now (see `text-run-meta`), so the
|
|
14428
|
-
* walk that re-attached those two facts by matching each run's characters back
|
|
14429
|
-
* onto the segment it came from is gone, and Vue, Svelte and Vanilla render
|
|
14430
|
-
* both from the same model instead of dropping them.
|
|
14431
|
-
*
|
|
14432
|
-
* What is left here is a pure rename: shared's neutral field names onto the
|
|
14433
|
-
* ones this binding's template already binds.
|
|
14434
|
-
*/
|
|
14435
|
-
/** A single rendered run inside an Angular paragraph. */
|
|
14436
|
-
interface TextRun {
|
|
14437
|
-
text: string;
|
|
14438
|
-
style: StyleMap;
|
|
14439
|
-
/** Safe `href` when this run carries a renderable hyperlink. */
|
|
14440
|
-
href?: string;
|
|
14441
|
-
/** Hyperlink tooltip / title text. */
|
|
14442
|
-
tooltip?: string;
|
|
14443
|
-
/** `<a target>`, from `a:hlinkClick/@tgtFrame` when authored, else `_blank`. */
|
|
14444
|
-
target?: string;
|
|
14445
|
-
/** `<a rel>` paired with {@link target}. */
|
|
14446
|
-
rel?: string;
|
|
14447
|
-
/** Parsed OMML for an inline equation run (rendered as MathML). */
|
|
14448
|
-
equationXml?: Record<string, unknown>;
|
|
14449
|
-
/** Optional equation number for numbered equations. */
|
|
14450
|
-
equationNumber?: string;
|
|
14451
|
-
/** `a:ruby` phonetic guide (furigana / pinyin) rendered above this run. */
|
|
14452
|
-
rubyText?: string;
|
|
14453
|
-
/** `[ngStyle]` map for the `<rt>` annotation (size / family / alignment). */
|
|
14454
|
-
rubyStyle?: StyleMap;
|
|
14455
|
-
/**
|
|
14456
|
-
* Per-script (`a:ea`/`a:cs`/`a:sym`) font-fallback pieces for this run's
|
|
14457
|
-
* text, when it authors a distinct east-Asian / complex-script / symbol
|
|
14458
|
-
* font the text actually needs. The template renders these as nested spans
|
|
14459
|
-
* instead of `text`. Absent for the common single-font case.
|
|
14460
|
-
*/
|
|
14461
|
-
scriptRuns?: ScriptFontPiece[];
|
|
14462
|
-
/**
|
|
14463
|
-
* Measured tab-stop layout for this run's text, present when it contains an
|
|
14464
|
-
* authored `\t` and the paragraph declares explicit tab stops. The template
|
|
14465
|
-
* renders these lines/pieces instead of `text`, honouring per-stop
|
|
14466
|
-
* alignment and leader glyphs a plain CSS `tab-size` cannot express.
|
|
14467
|
-
*/
|
|
14468
|
-
tabLines?: TabbedLineRun[];
|
|
14469
|
-
/**
|
|
14470
|
-
* `a:rPr/@u="words"` word/gap pieces of a RUBY run's base text (same shape
|
|
14471
|
-
* as `scriptRuns`, rendered the same way in place of `text`): the base text
|
|
14472
|
-
* stays one run so the annotation still reads over the whole thing, while
|
|
14473
|
-
* only the word entries carry the underline. Absent otherwise.
|
|
14474
|
-
*/
|
|
14475
|
-
underlineWordPieces?: ScriptFontPiece[];
|
|
14476
|
-
/**
|
|
14477
|
-
* `a:reflection` mirrored-sibling wrapper style for this run, or `undefined`
|
|
14478
|
-
* for the common no-reflection case - the text-run counterpart of a
|
|
14479
|
-
* shape/picture's `ReflectionOverlay` (`element-effect-defs.ts`). The
|
|
14480
|
-
* template renders a sibling `<span>` positioned/masked by this style,
|
|
14481
|
-
* painted with the same text, instead of the old `-webkit-box-reflect`
|
|
14482
|
-
* (Firefox never implemented that property).
|
|
14483
|
-
*/
|
|
14484
|
-
reflection?: ReflectionWrapperStyle;
|
|
14485
|
-
}
|
|
14486
|
-
/** A rendered paragraph: runs plus bullet + indent + spacing metadata. */
|
|
14487
|
-
interface Paragraph {
|
|
14488
|
-
runs: TextRun[];
|
|
14489
|
-
/** Bullet / number marker text, when this paragraph is a list item. */
|
|
14490
|
-
bulletMarker?: string;
|
|
14491
|
-
/** Resolved picture marker, or metadata for its accessible glyph fallback. */
|
|
14492
|
-
bulletPicture?: PictureBulletMarker;
|
|
14493
|
-
/** `[ngStyle]` map for the bullet marker (colour / font / hang width). */
|
|
14494
|
-
bulletStyle: StyleMap;
|
|
14495
|
-
/** Left indent in px (hanging-indent layout). */
|
|
14496
|
-
indentPx: number;
|
|
14497
|
-
/** `text-indent` in px (first-line / hanging indent), when authored. */
|
|
14498
|
-
textIndentPx?: number;
|
|
14499
|
-
/**
|
|
14500
|
-
* True when the paragraph has no runs and no bullet: an authored blank line
|
|
14501
|
-
* (`<a:p><a:endParaRPr/></a:p>`), which PowerPoint gives a full line box.
|
|
14502
|
-
* The template renders a `<br>` for it so the gap survives (issue #131).
|
|
14503
|
-
*/
|
|
14504
|
-
isEmpty?: boolean;
|
|
14505
|
-
/** Per-paragraph `line-height` from this paragraph's own `a:lnSpc`. */
|
|
14506
|
-
lineHeight?: number | string;
|
|
14507
|
-
/** `margin-top` in px from `a:spcBef` (space before), when overridden. */
|
|
14508
|
-
spaceBeforePx?: number;
|
|
14509
|
-
/** `margin-bottom` in px from `a:spcAft` (space after), when overridden. */
|
|
14510
|
-
spaceAfterPx?: number;
|
|
14511
|
-
/** `font-size` in px re-basing the paragraph's CSS line boxes onto its runs. */
|
|
14512
|
-
strutFontSizePx?: number;
|
|
14513
|
-
/**
|
|
14514
|
-
* This paragraph's own `text-align` / BiDi `direction` / kinsoku line-break
|
|
14515
|
-
* rules, when it overrides the body's. Bound with `[ngStyle]` under the
|
|
14516
|
-
* explicit geometry bindings, which win.
|
|
14517
|
-
*/
|
|
14518
|
-
paragraphStyle?: StyleMap;
|
|
14519
|
-
}
|
|
14520
|
-
|
|
14521
|
-
/**
|
|
14522
|
-
* Text-warp (WordArt) descriptor resolver for the Angular viewer.
|
|
14523
|
-
*
|
|
14524
|
-
* Angular port of:
|
|
14525
|
-
* packages/react/src/viewer/utils/text-warp-classifier.ts
|
|
14526
|
-
* packages/react/src/viewer/utils/text-warp-css.tsx
|
|
14527
|
-
* packages/react/src/viewer/utils/warp-text-renderer.tsx (descriptor shape)
|
|
14528
|
-
*
|
|
14529
|
-
* `getTextWarp(element)` resolves an element's OOXML `prstTxWarp` preset into a
|
|
14530
|
-
* `TextWarpDef` that the Angular template can consume without any React/HTML
|
|
14531
|
-
* string injection. The descriptor selects one of two rendering strategies:
|
|
14532
|
-
*
|
|
14533
|
-
* - `'path'` : SVG `<textPath>` along a curved/arc/circle path.
|
|
14534
|
-
* The `pathLines` array contains one entry per paragraph with a
|
|
14535
|
-
* pre-computed SVG `d` attribute. The template renders an inline
|
|
14536
|
-
* `<svg>` with `<defs><path>` + `<text><textPath href>`.
|
|
14537
|
-
*
|
|
14538
|
-
* - `'css'` : A whole-block CSS transform approximation. The template
|
|
14539
|
-
* applies `cssTransform` and `cssTransformOrigin` to the
|
|
14540
|
-
* existing `div.pptx-ng-text` wrapper (or a parent div) via
|
|
14541
|
-
* `[ngStyle]`. No SVG required.
|
|
14542
|
-
*
|
|
14543
|
-
* Presets classified as `'none'` (textNoShape, textPlain, unknown) return
|
|
14544
|
-
* `undefined` so callers can skip extra rendering without an allowlist check.
|
|
14545
|
-
*/
|
|
14546
|
-
|
|
14547
|
-
/** The four rendering strategy families. */
|
|
14548
|
-
type WarpCategory = WarpCategory$1;
|
|
14549
|
-
/**
|
|
14550
|
-
* Classify a warp preset into a rendering strategy category.
|
|
14551
|
-
*
|
|
14552
|
-
* Returns `'none'` for unknown or empty presets so callers can safely
|
|
14553
|
-
* skip rendering without an explicit allowlist check. Thin alias for the
|
|
14554
|
-
* shared `classifyTextWarp` helper.
|
|
14555
|
-
*/
|
|
14556
|
-
declare const getWarpCategory: (preset: string | undefined) => WarpCategory;
|
|
14557
|
-
|
|
14558
|
-
/**
|
|
14559
|
-
* A single pre-computed SVG path line for one text paragraph.
|
|
14560
|
-
*
|
|
14561
|
-
* The template renders this as:
|
|
14562
|
-
* `<path [id]="pathId" [attr.d]="d" fill="none" />`
|
|
14563
|
-
* inside `<defs>`, then references it with `<textPath [attr.href]="'#'+pathId">`.
|
|
14564
|
-
*/
|
|
14565
|
-
interface WarpPathLine {
|
|
14566
|
-
/** Unique DOM id for this `<path>` element (safe to use as `href` fragment). */
|
|
14567
|
-
pathId: string;
|
|
14568
|
-
/** SVG path data (`d` attribute). */
|
|
14569
|
-
d: string;
|
|
14570
|
-
/** The text segments that flow along this path. */
|
|
14571
|
-
segments: TextSegment[];
|
|
14572
|
-
}
|
|
14573
|
-
/**
|
|
14574
|
-
* Descriptor for SVG `<textPath>`-based warp rendering.
|
|
14575
|
-
*
|
|
14576
|
-
* One `WarpPathLine` per paragraph. The template renders an inline `<svg>`
|
|
14577
|
-
* covering the element bounds, defines each path in `<defs>`, then lays
|
|
14578
|
-
* `<text><textPath href="#pathId">` on each path.
|
|
14579
|
-
*/
|
|
14580
|
-
interface TextWarpPathDef {
|
|
14581
|
-
readonly strategy: 'path';
|
|
14582
|
-
/** OOXML preset name (e.g. `'textArchUp'`). */
|
|
14583
|
-
readonly preset: PptxTextWarpPreset;
|
|
14584
|
-
/** One entry per paragraph. */
|
|
14585
|
-
readonly pathLines: WarpPathLine[];
|
|
14586
|
-
/** Element pixel width (for `<svg width>`). */
|
|
14587
|
-
readonly width: number;
|
|
14588
|
-
/** Element pixel height (for `<svg height>`). */
|
|
14589
|
-
readonly height: number;
|
|
14590
|
-
/** SVG `text-anchor` value derived from paragraph alignment. */
|
|
14591
|
-
readonly textAnchor: 'start' | 'middle' | 'end';
|
|
14592
|
-
/** SVG `<textPath startOffset>` value (e.g. `"0%"`, `"50%"`, `"100%"`). */
|
|
14593
|
-
readonly startOffset: string;
|
|
14594
|
-
/** Base font size in points from the element's text style. */
|
|
14595
|
-
readonly baseFontSize: number;
|
|
14596
|
-
/** Base font family string (already CSS-ready). */
|
|
14597
|
-
readonly baseFontFamily: string;
|
|
14598
|
-
/** Base text fill colour (hex). */
|
|
14599
|
-
readonly baseColor: string;
|
|
14394
|
+
* matching React and Svelte.
|
|
14395
|
+
*/
|
|
14396
|
+
private readonly rulerHighlightBounds;
|
|
14397
|
+
/** Selected element extent (scaled px) highlighted on the horizontal strip. */
|
|
14398
|
+
readonly hRulerHighlight: _angular_core.Signal<{
|
|
14399
|
+
start: number;
|
|
14400
|
+
span: number;
|
|
14401
|
+
} | null>;
|
|
14402
|
+
/** Selected element extent (scaled px) highlighted on the vertical strip. */
|
|
14403
|
+
readonly vRulerHighlight: _angular_core.Signal<{
|
|
14404
|
+
start: number;
|
|
14405
|
+
span: number;
|
|
14406
|
+
} | null>;
|
|
14407
|
+
readonly stageStyle: _angular_core.Signal<StyleMap>;
|
|
14408
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SlideCanvasComponent, never>;
|
|
14409
|
+
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>;
|
|
14600
14410
|
}
|
|
14411
|
+
|
|
14601
14412
|
/**
|
|
14602
|
-
*
|
|
14413
|
+
* Renderer-injected shape-effect definitions that need a companion DOM node
|
|
14414
|
+
* (a soft-edge `<filter>` def, a DAG fill-overlay tint layer), plus the helper
|
|
14415
|
+
* that strips dangling `url(#…)` filter references.
|
|
14603
14416
|
*
|
|
14604
|
-
*
|
|
14605
|
-
* `
|
|
14417
|
+
* Kept out of `element-style.ts` so that module stays focused on producing the
|
|
14418
|
+
* base `[ngStyle]` maps. Mirrors the Vue/Svelte `ShapeEffectOverlay` split.
|
|
14606
14419
|
*/
|
|
14607
|
-
|
|
14608
|
-
|
|
14609
|
-
|
|
14610
|
-
|
|
14611
|
-
|
|
14612
|
-
readonly cssTransform: string;
|
|
14613
|
-
/** CSS `transform-origin` string (e.g. `"left center"`). */
|
|
14614
|
-
readonly cssTransformOrigin: string;
|
|
14420
|
+
|
|
14421
|
+
/** Injectable soft-edge `<filter>` descriptor (id + feather radius in px). */
|
|
14422
|
+
interface SoftEdgeFilterDef {
|
|
14423
|
+
id: string;
|
|
14424
|
+
radius: number;
|
|
14615
14425
|
}
|
|
14616
|
-
/** Union of the two warp rendering strategies. */
|
|
14617
|
-
type TextWarpDef = TextWarpPathDef | TextWarpCssDef;
|
|
14618
14426
|
/**
|
|
14619
|
-
*
|
|
14620
|
-
*
|
|
14621
|
-
* `
|
|
14427
|
+
* `a:reflection` mirrored-sibling wrapper style descriptor (position, mirror
|
|
14428
|
+
* transform, mask-image fade - see shared's `getReflectionWrapperStyle`).
|
|
14429
|
+
* Cross-browser, unlike the `-webkit-box-reflect` `element-style.ts` used to
|
|
14430
|
+
* set (Firefox never implemented that property, so reflections were invisible
|
|
14431
|
+
* there entirely).
|
|
14622
14432
|
*
|
|
14623
|
-
*
|
|
14624
|
-
*
|
|
14625
|
-
*
|
|
14626
|
-
*
|
|
14627
|
-
*
|
|
14628
|
-
* React's warp-text-renderer.
|
|
14629
|
-
* @returns A `TextWarpDef` with `strategy: 'path'` for SVG textPath warps, or
|
|
14630
|
-
* `strategy: 'css'` for CSS-transform approximations.
|
|
14433
|
+
* The mirrored CONTENT is no longer carried here: `ReflectionMirrorContentComponent`
|
|
14434
|
+
* (`reflection-mirror-content.component.ts`) paints the element's own fill,
|
|
14435
|
+
* outline, text body and - for a group - its children directly from
|
|
14436
|
+
* `element`, rather than this descriptor only ever offering a resolved fill
|
|
14437
|
+
* (or a picture's `<img>` src) to paint a flat box with.
|
|
14631
14438
|
*/
|
|
14632
|
-
|
|
14439
|
+
interface ReflectionOverlay {
|
|
14440
|
+
wrapperStyle: ReflectionWrapperStyle;
|
|
14441
|
+
}
|
|
14633
14442
|
|
|
14634
14443
|
/**
|
|
14635
14444
|
* ElementRendererComponent: Angular port of the React `ElementRenderer.tsx`
|
|
14636
|
-
* and the Vue `ElementRenderer.vue`.
|
|
14637
|
-
*
|
|
14638
|
-
*
|
|
14639
|
-
*
|
|
14640
|
-
*
|
|
14641
|
-
*
|
|
14642
|
-
* - `table` → HTML `<table>`
|
|
14643
|
-
* - `smartArt` → SVG drawing-shapes / node-text fallback
|
|
14644
|
-
* - `ink` → SVG ink strokes
|
|
14645
|
-
* - `ole` → embedded-object preview / icon
|
|
14646
|
-
* - `model3d` → interactive three.js scene when the optional
|
|
14647
|
-
* `three` peer is present, else poster / placeholder
|
|
14648
|
-
* - `zoom` → slide/section zoom thumbnail
|
|
14649
|
-
* - `picture` / `image` → `<img>`
|
|
14650
|
-
* - `media` → native `<video>`/`<audio>` playback, poster fallback
|
|
14651
|
-
* - `group` → recursive children (self-referencing selector)
|
|
14652
|
-
* - everything else → labelled placeholder (defensive fallback)
|
|
14445
|
+
* and the Vue `ElementRenderer.vue`. Dispatches by `element().type`:
|
|
14446
|
+
* `connector`/`group` (self-recursive) stay here; `picture`/`image` goes to
|
|
14447
|
+
* `ImageRendererComponent`; `text`/`shape` goes to
|
|
14448
|
+
* `ElementRendererShapeComponent`; everything else goes to
|
|
14449
|
+
* `ElementRendererGraphicsComponent`; an unmatched type falls back to a
|
|
14450
|
+
* labelled placeholder.
|
|
14653
14451
|
*/
|
|
14654
14452
|
declare class ElementRendererComponent {
|
|
14655
14453
|
readonly element: _angular_core.InputSignal<PptxElement>;
|
|
14656
14454
|
readonly mediaDataUrls: _angular_core.InputSignal<Map<string, string>>;
|
|
14657
14455
|
readonly zIndex: _angular_core.InputSignal<number>;
|
|
14658
14456
|
/**
|
|
14659
|
-
* Host opt-in to the Three.js SmartArt renderer
|
|
14660
|
-
* viewer
|
|
14661
|
-
* the viewer subtree (thumbnails, export) default to the SVG renderer.
|
|
14457
|
+
* Host opt-in to the Three.js SmartArt renderer. Optional so renderers used
|
|
14458
|
+
* outside the viewer subtree (thumbnails, export) default to the SVG one.
|
|
14662
14459
|
*/
|
|
14663
14460
|
private readonly smartArt3DService;
|
|
14664
14461
|
/**
|
|
14665
|
-
* Native-animation playback
|
|
14666
|
-
*
|
|
14667
|
-
* the same renderer in the editor / thumbnails / export resolves to `null` and
|
|
14668
|
-
* renders with no animation state. Mirrors the Vue `injectPresentationElementStates`
|
|
14669
|
-
* provide/inject and React's threaded `presentationElementStates` prop.
|
|
14462
|
+
* Native-animation playback, present only inside a running presentation.
|
|
14463
|
+
* Optional so the editor/thumbnails/export render with no animation state.
|
|
14670
14464
|
*/
|
|
14671
14465
|
private readonly playback;
|
|
14672
14466
|
private readonly translate;
|
|
14673
|
-
/**
|
|
14674
|
-
* Optional so this renderer still works outside a `PowerPointViewerComponent`
|
|
14675
|
-
* host (thumbnails, export): a text-run hyperlink click is then never
|
|
14676
|
-
* confirmed, matching the option's own default meaning ("not configured").
|
|
14677
|
-
*/
|
|
14678
|
-
private readonly viewerOpts;
|
|
14679
14467
|
readonly smartArt3D: _angular_core.Signal<boolean>;
|
|
14680
|
-
/**
|
|
14681
|
-
* Whether the Selection Pane has hidden this element. Drives the empty first
|
|
14682
|
-
* `@case` in the template; see the comment there for why nothing is rendered
|
|
14683
|
-
* rather than rendered-and-hidden.
|
|
14684
|
-
*/
|
|
14468
|
+
/** Whether the Selection Pane has hidden this element; see the empty first `@case`. */
|
|
14685
14469
|
readonly isHidden: _angular_core.Signal<boolean>;
|
|
14686
|
-
/** Obstacle rects (
|
|
14470
|
+
/** Obstacle rects (slide coords) for connector A* routing. */
|
|
14687
14471
|
readonly obstacles: _angular_core.InputSignal<readonly RouterRect[]>;
|
|
14688
14472
|
readonly canvasWidth: _angular_core.InputSignal<number>;
|
|
14689
14473
|
readonly canvasHeight: _angular_core.InputSignal<number>;
|
|
14690
14474
|
/**
|
|
14691
14475
|
* When true (default), the element host carries the framework-neutral
|
|
14692
14476
|
* `data-pptx-element="true"` contract attribute (used by selection + the
|
|
14693
|
-
* shared e2e specs). Thumbnail
|
|
14694
|
-
* so they don't pollute the contract selectors, mirroring React
|
|
14695
|
-
* the main editing canvas exposes the element contract (thumbnails use a
|
|
14696
|
-
* separate lightweight renderer).
|
|
14477
|
+
* shared e2e specs). Thumbnail/preview/presentation canvases pass `false`
|
|
14478
|
+
* so they don't pollute the contract selectors, mirroring React.
|
|
14697
14479
|
*/
|
|
14698
14480
|
readonly interactive: _angular_core.InputSignal<boolean>;
|
|
14699
14481
|
/**
|
|
14700
|
-
* Emit the `data-pptx-element` marker even though `interactive` is false
|
|
14701
|
-
*
|
|
14702
|
-
* interaction-locked
|
|
14703
|
-
*
|
|
14704
|
-
* element contract", not "editable right now"), matching the other bindings.
|
|
14482
|
+
* Emit the `data-pptx-element` marker even though `interactive` is false:
|
|
14483
|
+
* the marker means "carries the element contract", not "editable right
|
|
14484
|
+
* now", so an interaction-locked template (master/layout) element still
|
|
14485
|
+
* sets it, matching the other bindings.
|
|
14705
14486
|
*/
|
|
14706
14487
|
readonly marked: _angular_core.InputSignal<boolean>;
|
|
14707
14488
|
/**
|
|
14708
14489
|
* When true (default), the rendered node carries `data-element-id`.
|
|
14709
14490
|
*
|
|
14710
14491
|
* Turned OFF by the miniature surfaces that paint EVERY slide at once
|
|
14711
|
-
* (thumbnail rail,
|
|
14712
|
-
*
|
|
14713
|
-
*
|
|
14714
|
-
*
|
|
14715
|
-
* query resolved the wrong slide. React solved the same hazard by giving
|
|
14716
|
-
* thumbnails a separate `StaticElementRenderer` that stamps no id at all
|
|
14717
|
-
* ("exposing their ids there would put two nodes with the same id in the
|
|
14718
|
-
* document"); this input is Angular's equivalent, since it reuses the live
|
|
14719
|
-
* renderer for its miniatures.
|
|
14720
|
-
*
|
|
14492
|
+
* (thumbnail rail, slide sorter, presenter navigator, ...): those put one
|
|
14493
|
+
* node per element per slide into the document, so without this an id
|
|
14494
|
+
* would resolve to the wrong slide's copy. React's equivalent hazard is
|
|
14495
|
+
* why `StaticElementRenderer` stamps no id at all for its miniatures.
|
|
14721
14496
|
* Distinct from {@link interactive}: the presentation stage is not
|
|
14722
14497
|
* interactive but MUST keep its ids, because the morph engine's generated
|
|
14723
14498
|
* keyframe CSS selects on them.
|
|
@@ -14729,73 +14504,57 @@ declare class ElementRendererComponent {
|
|
|
14729
14504
|
readonly elementMarked: _angular_core.Signal<boolean>;
|
|
14730
14505
|
/**
|
|
14731
14506
|
* `pointer-events: none` while this render is not interactive, mirroring
|
|
14732
|
-
* React's `pointer-events-none`
|
|
14733
|
-
*
|
|
14734
|
-
* `data-pptx-element
|
|
14735
|
-
*
|
|
14736
|
-
*
|
|
14737
|
-
*
|
|
14738
|
-
*
|
|
14739
|
-
* handler's id-based gate did, which kept selection/drag from acting on it
|
|
14740
|
-
* but left the element itself indistinguishable from an interactive one to
|
|
14741
|
-
* anything reading its computed style (e.g. `e2e/template-editing.spec.ts`).
|
|
14507
|
+
* React's `pointer-events-none` class on the same condition. This is the
|
|
14508
|
+
* piece `editTemplateMode` actually depends on: {@link marked} keeps a
|
|
14509
|
+
* locked template element findable via `data-pptx-element`, but only this
|
|
14510
|
+
* stops clicks/drags from reaching it (without it a layout/master shape
|
|
14511
|
+
* stayed fully clickable with `editTemplateMode` off, indistinguishable
|
|
14512
|
+
* from an interactive one to anything reading its computed style, e.g.
|
|
14513
|
+
* `e2e/template-editing.spec.ts`).
|
|
14742
14514
|
*/
|
|
14743
14515
|
readonly rootPointerEvents: _angular_core.Signal<"none" | null>;
|
|
14744
14516
|
/**
|
|
14745
|
-
* True only on the live presentation stage
|
|
14746
|
-
*
|
|
14747
|
-
* children so nested media autoplays too). False everywhere else.
|
|
14517
|
+
* True only on the live presentation stage, so a slide's media autoplays
|
|
14518
|
+
* when it becomes active (and nested group children autoplay too).
|
|
14748
14519
|
*/
|
|
14749
14520
|
readonly presenting: _angular_core.InputSignal<boolean>;
|
|
14750
|
-
/** Whether inline editing (
|
|
14521
|
+
/** Whether inline editing (table-cell text input, etc.) is enabled. */
|
|
14751
14522
|
readonly editable: _angular_core.InputSignal<boolean>;
|
|
14752
14523
|
/**
|
|
14753
14524
|
* OOXML field-substitution context (slide number, date/time, header/footer,
|
|
14754
|
-
* slide title, custom doc properties)
|
|
14755
|
-
*
|
|
14756
|
-
* runs resolve to display text, mirroring React's `fieldContext`.
|
|
14525
|
+
* slide title, custom doc properties), threaded down (incl. to recursive
|
|
14526
|
+
* group children) so field runs resolve to display text.
|
|
14757
14527
|
*/
|
|
14758
14528
|
readonly fieldContext: _angular_core.InputSignal<FieldSubstitutionContext | undefined>;
|
|
14759
14529
|
/**
|
|
14760
14530
|
* The elements of the slide being painted, threaded down (including to
|
|
14761
|
-
* recursive group children) alongside {@link fieldContext}.
|
|
14762
|
-
*
|
|
14763
|
-
*
|
|
14764
|
-
*
|
|
14765
|
-
* which
|
|
14766
|
-
* (taken from its `activeSlide.elements` prop). Left empty by a host that
|
|
14767
|
-
* renders an element outside any slide, in which case a linked box falls back
|
|
14768
|
-
* to its own authored segments.
|
|
14531
|
+
* recursive group children) alongside {@link fieldContext}. Needed only by
|
|
14532
|
+
* `a:linkedTxbx` chains: a text box in a linked chain renders the slice of
|
|
14533
|
+
* the chain's text the preceding boxes could not hold, computable only
|
|
14534
|
+
* from its SIBLINGS. Mirrors React's `slideElements`. Left empty outside
|
|
14535
|
+
* any slide, in which case a linked box falls back to its own segments.
|
|
14769
14536
|
*/
|
|
14770
14537
|
readonly slideElements: _angular_core.InputSignal<readonly PptxElement[]>;
|
|
14771
14538
|
/**
|
|
14772
|
-
* When true, inherited master/layout
|
|
14773
|
-
*
|
|
14774
|
-
*
|
|
14775
|
-
* no effect at all when false, so default rendering is untouched.
|
|
14539
|
+
* When true, inherited master/layout elements get a visual affordance
|
|
14540
|
+
* (amber outline + reduced opacity) signalling they are now editable. No
|
|
14541
|
+
* effect on normal slide elements or when false.
|
|
14776
14542
|
*/
|
|
14777
14543
|
readonly editTemplateMode: _angular_core.InputSignal<boolean>;
|
|
14778
14544
|
/**
|
|
14779
|
-
* The enclosing group's fill (`GroupPptxElement.groupFill`),
|
|
14780
|
-
*
|
|
14781
|
-
* (`fillMode === 'group'`) inherits the group's resolved fill.
|
|
14545
|
+
* The enclosing group's fill (`GroupPptxElement.groupFill`), so a child
|
|
14546
|
+
* painted with `a:grpFill` inherits the group's resolved fill.
|
|
14782
14547
|
*/
|
|
14783
14548
|
readonly parentGroupFill: _angular_core.InputSignal<ShapeStyle | undefined>;
|
|
14784
14549
|
/**
|
|
14785
14550
|
* The element currently open in the element-level inline text editor
|
|
14786
14551
|
* (the `<textarea data-inline-editor>` overlay in `slide-canvas.component`),
|
|
14787
|
-
* or `null
|
|
14788
|
-
*
|
|
14789
|
-
*
|
|
14790
|
-
*
|
|
14791
|
-
* layering the two: without this, this component kept painting the
|
|
14792
|
-
* element's normal text UNDERNEATH the editor overlay, and the editor's
|
|
14793
|
-
* own translucent background let it show through as a duplicate, offset
|
|
14794
|
-
* "text shadow" (issue #182).
|
|
14552
|
+
* or `null`. Mirrors React's `ElementBody.renderBody`, which swaps its
|
|
14553
|
+
* static text render out for the inline editor rather than layering the
|
|
14554
|
+
* two: without this the element's normal text painted UNDERNEATH the
|
|
14555
|
+
* editor overlay, showing through as a duplicate "text shadow" (issue #182).
|
|
14795
14556
|
*/
|
|
14796
14557
|
readonly editingElementId: _angular_core.InputSignal<string | null>;
|
|
14797
|
-
/** This exact element is open in the element-level inline text editor right now. */
|
|
14798
|
-
readonly isBeingInlineEdited: _angular_core.Signal<boolean>;
|
|
14799
14558
|
/** Emitted when a table cell's text edit is committed. */
|
|
14800
14559
|
readonly cellCommit: _angular_core.OutputEmitterRef<{
|
|
14801
14560
|
id: string;
|
|
@@ -14806,126 +14565,55 @@ declare class ElementRendererComponent {
|
|
|
14806
14565
|
id: string;
|
|
14807
14566
|
tableData: PptxTableData;
|
|
14808
14567
|
}>;
|
|
14809
|
-
/** Duotone SVG `<filter>` descriptor
|
|
14568
|
+
/** Duotone SVG `<filter>` descriptor, if any. */
|
|
14810
14569
|
readonly duotoneFilter: _angular_core.Signal<pptx_angular_viewer.DuotoneFilterDef | undefined>;
|
|
14811
14570
|
/**
|
|
14812
|
-
* Soft-edge feather `<filter>` descriptor (id + radius). The template
|
|
14813
|
-
* a matching `<filter>`
|
|
14814
|
-
*
|
|
14571
|
+
* Soft-edge feather `<filter>` descriptor (id + radius). The template
|
|
14572
|
+
* injects a matching `<filter>` def so `filter: url(#soft-edge-<id>)`
|
|
14573
|
+
* resolves. Undefined otherwise.
|
|
14815
14574
|
*/
|
|
14816
14575
|
readonly softEdgeFilter: _angular_core.Signal<SoftEdgeFilterDef | undefined>;
|
|
14817
14576
|
/**
|
|
14818
|
-
*
|
|
14819
|
-
*
|
|
14820
|
-
|
|
14821
|
-
|
|
14822
|
-
* Stroked SVG outline: a gradient / pattern `a:ln`, or a stroke-only ("open")
|
|
14823
|
-
* preset such as `line` or `arc`, neither of which a CSS border can paint.
|
|
14824
|
-
*/
|
|
14825
|
-
readonly gradientOutline: _angular_core.Signal<StrokeOutline | undefined>;
|
|
14826
|
-
/** viewBox in the element's PAINTED box, which the path data is authored in. */
|
|
14827
|
-
readonly outlineViewBox: _angular_core.Signal<string>;
|
|
14828
|
-
/**
|
|
14829
|
-
* Transparent outline hit band for an unfilled, textless shape. Its container
|
|
14830
|
-
* is `pointer-events: none` so clicks fall through to whatever it is drawn
|
|
14831
|
-
* over; this opts the OUTLINE back in (same trick as the connector target).
|
|
14832
|
-
*/
|
|
14833
|
-
readonly hollowHit: _angular_core.Signal<HollowHitOutline | undefined>;
|
|
14834
|
-
readonly fillOverlay: _angular_core.Signal<FillOverlayCss | undefined>;
|
|
14835
|
-
/**
|
|
14836
|
-
* `a:reflection` mirrored-sibling descriptor, or `undefined` when the
|
|
14837
|
-
* element has no reflection. See `element-effect-defs.ts`'s
|
|
14838
|
-
* `getReflectionOverlay`.
|
|
14577
|
+
* `a:reflection` mirrored-sibling descriptor, or `undefined`. Used by the
|
|
14578
|
+
* `group` branch below (a group reflects its whole composited subtree);
|
|
14579
|
+
* `ElementRendererShapeComponent` recomputes its own copy locally instead,
|
|
14580
|
+
* mirroring how `ImageRendererComponent` already does the same.
|
|
14839
14581
|
*/
|
|
14840
14582
|
readonly reflection: _angular_core.Signal<ReflectionOverlay | undefined>;
|
|
14841
|
-
/**
|
|
14842
|
-
* Per-sub-path fill overlay for a multi-sub-path preset or custom geometry,
|
|
14843
|
-
* or `undefined` when a single merged fill is correct (the ordinary case).
|
|
14844
|
-
*/
|
|
14845
|
-
readonly subpathFill: _angular_core.Signal<SubpathFillOverlay | undefined>;
|
|
14846
|
-
/** `viewBox` for the sub-path fill overlay, in its own coordinate space. */
|
|
14847
|
-
readonly subpathFillViewBox: _angular_core.Signal<string | undefined>;
|
|
14848
|
-
/**
|
|
14849
|
-
* Outline ring + slight transparency applied to inherited template
|
|
14850
|
-
* (master/layout) elements while editTemplateMode is on. Empty otherwise, so
|
|
14851
|
-
* normal rendering is never altered.
|
|
14852
|
-
*/
|
|
14853
|
-
readonly templateAffordanceStyle: _angular_core.Signal<StyleMap>;
|
|
14854
14583
|
/**
|
|
14855
14584
|
* This element's native-animation playback state, or `undefined` outside a
|
|
14856
|
-
* running presentation. Drives the staged chart
|
|
14857
|
-
* `p:animClr` fill
|
|
14858
|
-
* connector renderers), mirroring React's per-element `animationState`.
|
|
14585
|
+
* running presentation. Drives the staged chart/SmartArt build reveal and
|
|
14586
|
+
* the `p:animClr` fill/stroke relinquish.
|
|
14859
14587
|
*/
|
|
14860
14588
|
readonly animationState: _angular_core.Signal<ElementAnimationState | undefined>;
|
|
14861
14589
|
/**
|
|
14862
|
-
*
|
|
14863
|
-
*
|
|
14864
|
-
*
|
|
14865
|
-
*
|
|
14866
|
-
|
|
14867
|
-
|
|
14868
|
-
|
|
14869
|
-
|
|
14870
|
-
|
|
14871
|
-
|
|
14872
|
-
|
|
14873
|
-
*/
|
|
14874
|
-
protected onHyperlinkClick(event: MouseEvent, href: string): void;
|
|
14875
|
-
/** Whole-paragraph text, for the paragraph-level build wrapper. */
|
|
14876
|
-
protected paragraphText(para: Paragraph): string;
|
|
14877
|
-
/** Style for one build piece, merged over the run's own style. */
|
|
14878
|
-
protected buildSpanStyle(span: {
|
|
14879
|
-
style?: StyleMap;
|
|
14880
|
-
hidden?: boolean;
|
|
14881
|
-
cssAnimation?: string;
|
|
14882
|
-
}): {
|
|
14883
|
-
[x: string]: string | number;
|
|
14884
|
-
};
|
|
14590
|
+
* A font-style emphasis effect (Bold Flash, Bold Reveal, Underline, Change
|
|
14591
|
+
* Font Style/Size) overrides the runs' own inline bold/italic/underline/
|
|
14592
|
+
* size, which plain CSS inheritance cannot reach. See
|
|
14593
|
+
* `animation-text-style-css.ts`. NOT gated on `hasTextProperties`: a table
|
|
14594
|
+
* cell, a chart title/label/legend, and a SmartArt node caption all
|
|
14595
|
+
* animate this way too, and shared's selector scopes itself to this
|
|
14596
|
+
* element's `data-element-id`, which every branch below carries.
|
|
14597
|
+
*/
|
|
14598
|
+
readonly textStyleOverrideCss: _angular_core.Signal<string | undefined>;
|
|
14599
|
+
/** Live per-sub-element animation states for the staged text-build split. */
|
|
14600
|
+
readonly subElementAnimStates: _angular_core.Signal<Map<string, ElementAnimationState> | undefined>;
|
|
14885
14601
|
readonly containerStyle: _angular_core.Signal<StyleMap>;
|
|
14602
|
+
/** Fill/stroke/effects container style; see `buildShapeContainerStyle`'s doc. */
|
|
14886
14603
|
readonly shapeContainerStyle: _angular_core.Signal<StyleMap>;
|
|
14887
|
-
readonly textStyle: _angular_core.Signal<StyleMap>;
|
|
14888
|
-
/** Text-warp (WordArt) descriptor for the element, if any. */
|
|
14889
|
-
readonly textWarp: _angular_core.Signal<pptx_angular_viewer.TextWarpDef | undefined>;
|
|
14890
|
-
/** Only the SVG-textPath warp variant (for the `<svg>` overlay branch). */
|
|
14891
|
-
readonly pathWarp: _angular_core.Signal<TextWarpPathDef | undefined>;
|
|
14892
|
-
/** Text block 3D scene style (a:bodyPr/a:scene3d), mirroring React's ElementBody. */
|
|
14893
|
-
readonly scene3dStyle: _angular_core.Signal<StyleMap | undefined>;
|
|
14894
|
-
/**
|
|
14895
|
-
* Text block style, folding in a CSS-transform warp and the 3D scene
|
|
14896
|
-
* (perspective + rotation) when present. The warp transform and the scene
|
|
14897
|
-
* transform are composed rather than clobbering each other.
|
|
14898
|
-
*/
|
|
14899
|
-
readonly warpedTextStyle: _angular_core.Signal<StyleMap>;
|
|
14900
14604
|
readonly children: _angular_core.Signal<PptxElement[]>;
|
|
14901
14605
|
/**
|
|
14902
14606
|
* The fill handed to this group's `a:grpFill` children as their
|
|
14903
|
-
* `parentGroupFill`; undefined for non-group elements.
|
|
14904
|
-
*
|
|
14905
|
-
*
|
|
14906
|
-
*
|
|
14907
|
-
* ANCESTOR that has a fill, so a shape inside a fill-less nested group came
|
|
14908
|
-
* out transparent. (The old copy justified itself with "shared is only
|
|
14909
|
-
* vendored at build time", but this component already imports a dozen shared
|
|
14910
|
-
* symbols from the vendored barrel.)
|
|
14607
|
+
* `parentGroupFill`; undefined for non-group elements. Uses the shared
|
|
14608
|
+
* helper, not a hand-inlined copy: `a:grpFill` resolves against the
|
|
14609
|
+
* nearest ANCESTOR that has a fill, so a naive "this group's own fill
|
|
14610
|
+
* only" version left a shape inside a fill-less nested group transparent.
|
|
14911
14611
|
*/
|
|
14912
14612
|
readonly childParentGroupFill: _angular_core.Signal<ShapeStyle | undefined>;
|
|
14913
14613
|
readonly isShapeLike: _angular_core.Signal<boolean>;
|
|
14914
14614
|
readonly isImageLike: _angular_core.Signal<boolean>;
|
|
14915
|
-
|
|
14916
|
-
readonly
|
|
14917
|
-
/**
|
|
14918
|
-
* An empty inherited placeholder's greyed-out hint ("Click to add title"),
|
|
14919
|
-
* or null when it should not be shown. `editable` is only ever set true on
|
|
14920
|
-
* the live editing canvas (Present Mode leaves it at its `false` default,
|
|
14921
|
-
* and the thumbnail rail passes it explicitly false), matching shared's
|
|
14922
|
-
* `'edit'`-only surface: PowerPoint never prints, presents or thumbnails
|
|
14923
|
-
* this authoring hint.
|
|
14924
|
-
*/
|
|
14925
|
-
readonly placeholderPrompt: _angular_core.Signal<{
|
|
14926
|
-
text: string;
|
|
14927
|
-
style: StyleMap;
|
|
14928
|
-
} | null>;
|
|
14615
|
+
/** Element kinds routed to `ElementRendererGraphicsComponent`; see `GRAPHICS_ELEMENT_TYPES`. */
|
|
14616
|
+
readonly isGraphicsElement: _angular_core.Signal<boolean>;
|
|
14929
14617
|
readonly placeholderLabel: _angular_core.Signal<any>;
|
|
14930
14618
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ElementRendererComponent, never>;
|
|
14931
14619
|
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>;
|
|
@@ -14981,6 +14669,13 @@ declare class ConnectorRendererComponent {
|
|
|
14981
14669
|
* outside a running presentation.
|
|
14982
14670
|
*/
|
|
14983
14671
|
readonly animationState: _angular_core.InputSignal<ElementAnimationState | undefined>;
|
|
14672
|
+
/**
|
|
14673
|
+
* Scoped `!important` CSS override for an active font-style emphasis effect
|
|
14674
|
+
* (Bold Flash, Bold Reveal, Underline, Change Font Style/Size), built by the
|
|
14675
|
+
* parent `ElementRendererComponent` (`buildTextStyleOverrideCss`) so a
|
|
14676
|
+
* connector's own caption animates the same way a shape's text does.
|
|
14677
|
+
*/
|
|
14678
|
+
readonly textStyleOverrideCss: _angular_core.InputSignal<string | undefined>;
|
|
14984
14679
|
/** All derived geometry, recomputed on every input change. */
|
|
14985
14680
|
readonly geo: _angular_core.Signal<ConnectorGeometry>;
|
|
14986
14681
|
readonly viewBox: _angular_core.Signal<string>;
|
|
@@ -15007,7 +14702,7 @@ declare class ConnectorRendererComponent {
|
|
|
15007
14702
|
readonly connectorSegments: _angular_core.Signal<TextSegment[] | undefined>;
|
|
15008
14703
|
readonly connectorTextStyle: _angular_core.Signal<TextStyle | undefined>;
|
|
15009
14704
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConnectorRendererComponent, never>;
|
|
15010
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConnectorRendererComponent, "pptx-connector-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "obstacles": { "alias": "obstacles"; "required": false; "isSignal": true; }; "canvasWidth": { "alias": "canvasWidth"; "required": false; "isSignal": true; }; "canvasHeight": { "alias": "canvasHeight"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "marked": { "alias": "marked"; "required": false; "isSignal": true; }; "exposeElementId": { "alias": "exposeElementId"; "required": false; "isSignal": true; }; "animationState": { "alias": "animationState"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
14705
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConnectorRendererComponent, "pptx-connector-renderer", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "obstacles": { "alias": "obstacles"; "required": false; "isSignal": true; }; "canvasWidth": { "alias": "canvasWidth"; "required": false; "isSignal": true; }; "canvasHeight": { "alias": "canvasHeight"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "marked": { "alias": "marked"; "required": false; "isSignal": true; }; "exposeElementId": { "alias": "exposeElementId"; "required": false; "isSignal": true; }; "animationState": { "alias": "animationState"; "required": false; "isSignal": true; }; "textStyleOverrideCss": { "alias": "textStyleOverrideCss"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
15011
14706
|
}
|
|
15012
14707
|
/** One parallel stroke of a (possibly compound) connector line. */
|
|
15013
14708
|
interface ConnectorStrand {
|
|
@@ -15071,6 +14766,17 @@ declare class ConnectorTextOverlayComponent {
|
|
|
15071
14766
|
|
|
15072
14767
|
declare class ChartRendererComponent {
|
|
15073
14768
|
readonly element: _angular_core.InputSignal<PptxElement>;
|
|
14769
|
+
/**
|
|
14770
|
+
* An untargeted bar3D extrusion face whose fill is picture-only samples a
|
|
14771
|
+
* colour from the picture ASYNCHRONOUSLY (see `chart-bar3d-face-picture-
|
|
14772
|
+
* sample.ts`'s module doc for the COM-verified ground truth this
|
|
14773
|
+
* reproduces); `buildChartViewModel` only ever sees whatever is already
|
|
14774
|
+
* cached. This signal is bumped by the shared (non-Angular) sample cache
|
|
14775
|
+
* whenever one resolves, and `vm` below reads it purely to establish a
|
|
14776
|
+
* signal dependency, forcing `computed` to rebuild once a sample lands.
|
|
14777
|
+
*/
|
|
14778
|
+
private readonly sampleVersion;
|
|
14779
|
+
constructor();
|
|
15074
14780
|
readonly vm: _angular_core.Signal<ChartViewModel>;
|
|
15075
14781
|
readonly viewBox: _angular_core.Signal<string>;
|
|
15076
14782
|
readonly swatchSize = 10;
|
|
@@ -15143,6 +14849,12 @@ declare class ChartElementViewComponent {
|
|
|
15143
14849
|
private readonly titleEditor;
|
|
15144
14850
|
/** In-flight vertical value drag, or null. */
|
|
15145
14851
|
private dragSession;
|
|
14852
|
+
/**
|
|
14853
|
+
* In-flight pie/doughnut slice, radar vertex, or stacked segment drag, or
|
|
14854
|
+
* null. Runs through a parallel state machine (no single vertical value
|
|
14855
|
+
* axis), never both at once.
|
|
14856
|
+
*/
|
|
14857
|
+
private markDragSession;
|
|
15146
14858
|
/** Local drag preview: rendered instead of the committed data mid-drag. */
|
|
15147
14859
|
private readonly previewData;
|
|
15148
14860
|
/** Live value under the pointer mid-drag (drives the floating badge). */
|
|
@@ -15152,24 +14864,26 @@ declare class ChartElementViewComponent {
|
|
|
15152
14864
|
private readonly chartData;
|
|
15153
14865
|
/**
|
|
15154
14866
|
* Opt-in interactive 3D surface scene (camera orbit/zoom via OrbitControls).
|
|
15155
|
-
*
|
|
15156
|
-
*
|
|
14867
|
+
* Click-to-select only: the grid is a single mesh with no per-cell geometry
|
|
14868
|
+
* to drag a value against, so value-drag editing stays SVG-only (see the
|
|
14869
|
+
* shared `SurfaceChart3DInteraction` doc comment).
|
|
15157
14870
|
*/
|
|
15158
14871
|
protected readonly use3D: _angular_core.Signal<boolean>;
|
|
15159
14872
|
protected readonly isSurfaceKind: _angular_core.Signal<boolean>;
|
|
15160
14873
|
/**
|
|
15161
14874
|
* Opt-in interactive 3D bar scene (real box meshes, camera orbit/zoom via
|
|
15162
|
-
* OrbitControls).
|
|
15163
|
-
*
|
|
15164
|
-
*
|
|
15165
|
-
*
|
|
14875
|
+
* OrbitControls). Clustered boxes are click-to-select AND drag-to-value
|
|
14876
|
+
* (`onChartPart3DSelect`/`onChart3DValueDragCommit` below); stacked/
|
|
14877
|
+
* percentStacked boxes are select-only. `chartType` is checked directly
|
|
14878
|
+
* (NOT via `resolveChartKind`, which folds `bar`/`bar3D` onto the same
|
|
14879
|
+
* 'bar' kind), so a plain 2-D bar chart never mounts the 3D scene.
|
|
15166
14880
|
*/
|
|
15167
14881
|
protected readonly use3DBar: _angular_core.Signal<boolean>;
|
|
15168
14882
|
protected readonly isBar3DKind: _angular_core.Signal<boolean>;
|
|
15169
14883
|
/**
|
|
15170
14884
|
* Opt-in interactive 3D line/area scenes (tube path / ribbon meshes, camera
|
|
15171
|
-
* orbit/zoom via OrbitControls).
|
|
15172
|
-
*
|
|
14885
|
+
* orbit/zoom via OrbitControls). Point markers are click-to-select AND
|
|
14886
|
+
* drag-to-value, same as the bar scene above.
|
|
15173
14887
|
*/
|
|
15174
14888
|
protected readonly use3DLine: _angular_core.Signal<boolean>;
|
|
15175
14889
|
protected readonly isLine3DKind: _angular_core.Signal<boolean>;
|
|
@@ -15177,11 +14891,11 @@ declare class ChartElementViewComponent {
|
|
|
15177
14891
|
protected readonly isArea3DKind: _angular_core.Signal<boolean>;
|
|
15178
14892
|
/**
|
|
15179
14893
|
* Opt-in interactive 3D pie scene (real wedge meshes, camera orbit/zoom via
|
|
15180
|
-
* OrbitControls).
|
|
15181
|
-
*
|
|
15182
|
-
* `
|
|
15183
|
-
* 'pie' kind), so a
|
|
15184
|
-
* scene.
|
|
14894
|
+
* OrbitControls). Click-to-select only: a pie/doughnut slice has no single
|
|
14895
|
+
* value axis to drag along (see the shared `PieChart3DInteraction` doc
|
|
14896
|
+
* comment). `chartType` is checked directly (NOT via `resolveChartKind`,
|
|
14897
|
+
* which folds `pie`/`pie3D`/`doughnut` onto the same 'pie' kind), so a
|
|
14898
|
+
* plain 2-D pie or doughnut chart never mounts the 3D scene.
|
|
15185
14899
|
*/
|
|
15186
14900
|
protected readonly use3DPie: _angular_core.Signal<boolean>;
|
|
15187
14901
|
protected readonly isPie3DKind: _angular_core.Signal<boolean>;
|
|
@@ -15199,8 +14913,13 @@ declare class ChartElementViewComponent {
|
|
|
15199
14913
|
*/
|
|
15200
14914
|
protected readonly renderedElement: _angular_core.Signal<PptxElement>;
|
|
15201
14915
|
protected readonly dragBadge: _angular_core.Signal<string>;
|
|
15202
|
-
/** The part selected for THIS chart, or null.
|
|
15203
|
-
|
|
14916
|
+
/** The part selected for THIS chart, or null. Also fed to the 3D chart
|
|
14917
|
+
* renderers so an external selection change (inspector, keyboard) re-applies
|
|
14918
|
+
* the mesh highlight in the mounted scene. */
|
|
14919
|
+
protected readonly selectedPart: _angular_core.Signal<ChartPartRef | null>;
|
|
14920
|
+
/** Active font-style emphasis override for a 3D chart scene's own axis
|
|
14921
|
+
* labels (bar3D/line3D/area3D/surface3D; pie3D draws none). */
|
|
14922
|
+
protected readonly chartTextStyle: _angular_core.Signal<TextStyleAnimationDescriptor | undefined>;
|
|
15204
14923
|
constructor();
|
|
15205
14924
|
protected onPointerDown(event: PointerEvent): void;
|
|
15206
14925
|
protected onPointerMove(event: PointerEvent): void;
|
|
@@ -15208,6 +14927,34 @@ declare class ChartElementViewComponent {
|
|
|
15208
14927
|
/** Cancel an in-flight value drag with Escape (document-level, like React). */
|
|
15209
14928
|
protected onEscape(): void;
|
|
15210
14929
|
private endDrag;
|
|
14930
|
+
/**
|
|
14931
|
+
* A 3D scene's own click-to-select fired (or empty space, clearing). Routes
|
|
14932
|
+
* to the SAME `ChartPartSelectionService` the 2D `onPointerDown` above uses,
|
|
14933
|
+
* so the inspector reacts identically to a 3D mark. Gated on `canEdit()`
|
|
14934
|
+
* exactly like the 2D path: every read-only mount of this same chart
|
|
14935
|
+
* element (thumbnail rail, export) shares the one injected service
|
|
14936
|
+
* instance, so an un-gated write here would fight the canvas copy's
|
|
14937
|
+
* selection (see the constructor's `clearForElement` effect comment).
|
|
14938
|
+
*/
|
|
14939
|
+
protected onChartPart3DSelect(part: ChartPartRef | null): void;
|
|
14940
|
+
/**
|
|
14941
|
+
* Live value while dragging a 3D mark. Only drives the floating badge
|
|
14942
|
+
* (`dragValue`/`dragBadge`, shared with the 2D drag UI): unlike the 2D SVG
|
|
14943
|
+
* drag, previewing the new value in the mesh itself would require
|
|
14944
|
+
* re-mounting the WebGL scene on every pointer-move, which would tear down
|
|
14945
|
+
* the in-flight pointer capture the shared scene's own drag state machine
|
|
14946
|
+
* relies on.
|
|
14947
|
+
*/
|
|
14948
|
+
protected onChart3DValueDragPreview(event: {
|
|
14949
|
+
part: ChartPartRef;
|
|
14950
|
+
value: number;
|
|
14951
|
+
}): void;
|
|
14952
|
+
/** Final value from a 3D mark drag: commits through the same channel the
|
|
14953
|
+
* 2D value-drag / mark-drag paths use above. */
|
|
14954
|
+
protected onChart3DValueDragCommit(event: {
|
|
14955
|
+
part: ChartPartRef;
|
|
14956
|
+
value: number;
|
|
14957
|
+
}): void;
|
|
15211
14958
|
protected onDblClick(event: MouseEvent): void;
|
|
15212
14959
|
protected onTitleInput(event: Event): void;
|
|
15213
14960
|
protected onTitleKeydown(event: KeyboardEvent): void;
|
|
@@ -15537,28 +15284,6 @@ declare class SmartArtRendererComponent {
|
|
|
15537
15284
|
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>;
|
|
15538
15285
|
}
|
|
15539
15286
|
|
|
15540
|
-
/** Resolved per-stroke data used to render a single `<path>` (or circle set). */
|
|
15541
|
-
interface InkStroke {
|
|
15542
|
-
d: string;
|
|
15543
|
-
color: string;
|
|
15544
|
-
width: number;
|
|
15545
|
-
opacity: number;
|
|
15546
|
-
/**
|
|
15547
|
-
* When present, render as pressure-sensitive circles instead of a plain
|
|
15548
|
-
* constant-width `<path>`. Empty/absent means a constant-width stroke.
|
|
15549
|
-
*/
|
|
15550
|
-
circles?: PressureCircle[];
|
|
15551
|
-
}
|
|
15552
|
-
/**
|
|
15553
|
-
* Narrow `element` to `InkPptxElement` and return the resolved per-stroke
|
|
15554
|
-
* array, or an empty array when the element is not an ink element.
|
|
15555
|
-
*/
|
|
15556
|
-
declare function buildInkStrokes(element: PptxElement): InkStroke[];
|
|
15557
|
-
/** Minimum SVG viewport dimension (clamp to ≥ 1 to avoid degenerate viewBox). */
|
|
15558
|
-
declare function inkViewBox(element: PptxElement): string;
|
|
15559
|
-
/** Wrapper `[ngStyle]`-compatible style for the ink container `<div>`. */
|
|
15560
|
-
declare function buildInkContainerStyle(element: PptxElement, zIndex: number): StyleMap;
|
|
15561
|
-
|
|
15562
15287
|
/**
|
|
15563
15288
|
* InkRendererComponent: Angular port of the Vue `InkRenderer.vue`
|
|
15564
15289
|
* (and the React `renderInk` inside `InkGroupRenderers.tsx`), viewer-first
|
|
@@ -15609,7 +15334,7 @@ declare class InkRendererComponent {
|
|
|
15609
15334
|
readonly elementIdAttr: _angular_core.Signal<string | null>;
|
|
15610
15335
|
readonly replayKeyframes = "@keyframes pptx-ink-replay {\n from { stroke-dashoffset: var(--ink-path-length); }\n to { stroke-dashoffset: 0; }\n}";
|
|
15611
15336
|
readonly containerStyle: _angular_core.Signal<StyleMap>;
|
|
15612
|
-
readonly strokes: _angular_core.Signal<
|
|
15337
|
+
readonly strokes: _angular_core.Signal<InkGroupStrokeView[]>;
|
|
15613
15338
|
readonly replayStyles: _angular_core.Signal<InkStrokeAnimationStyle[]>;
|
|
15614
15339
|
readonly viewBox: _angular_core.Signal<string>;
|
|
15615
15340
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<InkRendererComponent, never>;
|
|
@@ -16078,6 +15803,11 @@ declare class AnimationPlaybackService {
|
|
|
16078
15803
|
*/
|
|
16079
15804
|
setSlide(slide: PptxSlide | undefined, showWithAnimation?: boolean, options?: {
|
|
16080
15805
|
completed?: boolean;
|
|
15806
|
+
/** The slide canvas size (px), for a `p:anim` formula needing the animated shape's real box. */
|
|
15807
|
+
slideWidthPx?: number;
|
|
15808
|
+
slideHeightPx?: number;
|
|
15809
|
+
/** The deck's resolved theme colour map, for a scheme-colour (`a:schemeClr`) animation stop. */
|
|
15810
|
+
themeColorMap?: Readonly<Record<string, string>>;
|
|
16081
15811
|
}): void;
|
|
16082
15812
|
/**
|
|
16083
15813
|
* True while the active slide shows its builds as already complete because
|
|
@@ -16387,6 +16117,18 @@ interface ShowNavigatorDeps {
|
|
|
16387
16117
|
/** The slide at the CURRENT index (a computed over `currentIndex`). */
|
|
16388
16118
|
currentSlide: () => PptxSlide | undefined;
|
|
16389
16119
|
showWithAnimation: () => boolean | undefined;
|
|
16120
|
+
/**
|
|
16121
|
+
* The slide canvas size (px), for a `p:anim` formula needing the animated
|
|
16122
|
+
* shape's real box (e.g. Grow And Turn's `-#ppt_w/2` fly-in). Optional so a
|
|
16123
|
+
* host constructed before this existed still compiles; omitting it just
|
|
16124
|
+
* keeps the pre-existing fallback behaviour.
|
|
16125
|
+
*/
|
|
16126
|
+
canvasSize?: () => {
|
|
16127
|
+
width: number;
|
|
16128
|
+
height: number;
|
|
16129
|
+
};
|
|
16130
|
+
/** The deck's resolved theme colour map, for a scheme-colour (`a:schemeClr`) animation stop. */
|
|
16131
|
+
themeColorMap?: () => Readonly<Record<string, string>> | undefined;
|
|
16390
16132
|
playback: AnimationPlaybackService;
|
|
16391
16133
|
annotations: PresentationAnnotationsService;
|
|
16392
16134
|
/** Publish a committed index change to the host's `indexChange` output. */
|
|
@@ -16593,6 +16335,13 @@ declare class PresentationOverlayComponent implements OnInit {
|
|
|
16593
16335
|
* it, external-hyperlink clicks are simply never confirmed.
|
|
16594
16336
|
*/
|
|
16595
16337
|
private readonly viewerOpts;
|
|
16338
|
+
/**
|
|
16339
|
+
* Optional for the same reason as {@link viewerOpts}. Its `themeColorMap`
|
|
16340
|
+
* signal lets `AnimationPlaybackService.setSlide` resolve a scheme-colour
|
|
16341
|
+
* (`a:schemeClr`) animation stop; absent it, such a stop falls back to the
|
|
16342
|
+
* canned preset timing exactly as before.
|
|
16343
|
+
*/
|
|
16344
|
+
private readonly loadContent;
|
|
16596
16345
|
readonly slides: _angular_core.InputSignal<PptxSlide[]>;
|
|
16597
16346
|
readonly canvasSize: _angular_core.InputSignal<CanvasSize>;
|
|
16598
16347
|
readonly mediaDataUrls: _angular_core.InputSignal<Map<string, string>>;
|
|
@@ -17062,6 +16811,12 @@ declare class InspectorPanelComponent {
|
|
|
17062
16811
|
/** Whether mutation controls in the inspector are enabled. */
|
|
17063
16812
|
readonly canEdit: _angular_core.InputSignal<boolean>;
|
|
17064
16813
|
protected readonly editor: EditorStateService;
|
|
16814
|
+
/**
|
|
16815
|
+
* Optional: absent in a standalone-thumbnail/export render context.
|
|
16816
|
+
* Feeds the table properties panel's "Edit style..." (`tableStyleMap`),
|
|
16817
|
+
* see {@link onTableStyleMapChange} / {@link onDeleteTableStyle}.
|
|
16818
|
+
*/
|
|
16819
|
+
protected readonly loader: LoadContentService | null;
|
|
17065
16820
|
/** Reactive viewport / pointer flags (drives the bottom-sheet layout). */
|
|
17066
16821
|
protected readonly mobile: IsMobileService;
|
|
17067
16822
|
/** "Recent colours" row backing the fill/stroke/text colour pickers below. */
|
|
@@ -17132,6 +16887,14 @@ declare class InspectorPanelComponent {
|
|
|
17132
16887
|
/** The selected element narrowed to a chart, or undefined. */
|
|
17133
16888
|
protected readonly chartEl: _angular_core.Signal<ChartPptxElement | undefined>;
|
|
17134
16889
|
protected readonly imageEl: _angular_core.Signal<PptxElement | undefined>;
|
|
16890
|
+
/**
|
|
16891
|
+
* The selected element, or `undefined`, gating
|
|
16892
|
+
* `AccessibilityTextPanelComponent` (alt text / title) via shared's
|
|
16893
|
+
* `shouldShowAccessibilitySection`: true for a plain shape, text box,
|
|
16894
|
+
* connector, and every graphic-frame kind (table/chart/smartArt/media/ole).
|
|
16895
|
+
* A picture's own alt text lives in `imageEl` above instead.
|
|
16896
|
+
*/
|
|
16897
|
+
protected readonly accessibilityTextEl: _angular_core.Signal<PptxElement | undefined>;
|
|
17135
16898
|
protected readonly mediaEl: _angular_core.Signal<MediaPptxElement | undefined>;
|
|
17136
16899
|
/** The selected element narrowed to SmartArt, or undefined. */
|
|
17137
16900
|
protected readonly smartArtEl: _angular_core.Signal<SmartArtPptxElement | undefined>;
|
|
@@ -17150,6 +16913,18 @@ declare class InspectorPanelComponent {
|
|
|
17150
16913
|
protected onPatch(patch: Partial<PptxElement>): void;
|
|
17151
16914
|
/** Commit a fully-replaced element (table/chart data editors) as one history entry. */
|
|
17152
16915
|
protected onElementReplace(updated: PptxElement): void;
|
|
16916
|
+
/**
|
|
16917
|
+
* Table style DEFINITION edits ("Edit style...") are a whole-map
|
|
16918
|
+
* replacement or a delete, never a per-element patch, so they bypass
|
|
16919
|
+
* {@link onElementReplace} entirely and write straight to the loader's
|
|
16920
|
+
* `tableStyleMap`/`tableStylesToDelete` signals. `applyTableStyleMapChange`/
|
|
16921
|
+
* `applyTableStyleDelete` (shared) keep `tableStylesToDelete` in sync, the
|
|
16922
|
+
* accumulator {@link LoadContentService.saveSlides} forwards via
|
|
16923
|
+
* `tableStyleSaveOptions`.
|
|
16924
|
+
*/
|
|
16925
|
+
protected onTableStyleMapChange(nextMap: ParsedTableStyleMap): void;
|
|
16926
|
+
/** Record a styleId for save-time removal from `ppt/tableStyles.xml`. */
|
|
16927
|
+
protected onDeleteTableStyle(styleId: string): void;
|
|
17153
16928
|
/** The active slide's element-animation list (animations live on the slide). */
|
|
17154
16929
|
protected readonly slideAnimations: _angular_core.Signal<readonly PptxElementAnimation[]>;
|
|
17155
16930
|
/** Read-only anchors for the active slide's deck-native effect groups. */
|
|
@@ -17780,6 +17555,15 @@ declare class TablePropertiesComponent {
|
|
|
17780
17555
|
readonly canEdit: _angular_core.InputSignal<boolean>;
|
|
17781
17556
|
/** Emits the fully-updated element after any edit. */
|
|
17782
17557
|
readonly elementChange: _angular_core.OutputEmitterRef<TablePptxElement>;
|
|
17558
|
+
/**
|
|
17559
|
+
* The deck's parsed `ppt/tableStyles.xml` map, for "Edit style...". `undefined`
|
|
17560
|
+
* means the host has not wired the table-style-editor feature through; the
|
|
17561
|
+
* launcher then simply does not render its button.
|
|
17562
|
+
*/
|
|
17563
|
+
readonly tableStyleMap: _angular_core.InputSignal<ParsedTableStyleMap | undefined>;
|
|
17564
|
+
readonly tableStyleMapChange: _angular_core.OutputEmitterRef<ParsedTableStyleMap>;
|
|
17565
|
+
/** Record a styleId for save-time removal from `ppt/tableStyles.xml`. */
|
|
17566
|
+
readonly deleteTableStyle: _angular_core.OutputEmitterRef<string>;
|
|
17783
17567
|
protected readonly toggles: readonly {
|
|
17784
17568
|
key: TableBooleanFlag;
|
|
17785
17569
|
labelKey: string;
|
|
@@ -17796,9 +17580,11 @@ declare class TablePropertiesComponent {
|
|
|
17796
17580
|
protected onEvenRows(): void;
|
|
17797
17581
|
protected onColWidth(index: number, event: Event): void;
|
|
17798
17582
|
protected onRowHeight(index: number, event: Event): void;
|
|
17583
|
+
/** A newly-created style (from "Edit style...") becomes this table's style. */
|
|
17584
|
+
protected onAssignStyle(styleId: string): void;
|
|
17799
17585
|
private emit;
|
|
17800
17586
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TablePropertiesComponent, never>;
|
|
17801
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TablePropertiesComponent, "pptx-table-properties", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; }, { "elementChange": "elementChange"; }, never, never, true, never>;
|
|
17587
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TablePropertiesComponent, "pptx-table-properties", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "tableStyleMap": { "alias": "tableStyleMap"; "required": false; "isSignal": true; }; }, { "elementChange": "elementChange"; "tableStyleMapChange": "tableStyleMapChange"; "deleteTableStyle": "deleteTableStyle"; }, never, never, true, never>;
|
|
17802
17588
|
}
|
|
17803
17589
|
|
|
17804
17590
|
/** Cell-style keys whose value is a colour string (edited via `<input type=color>`). */
|
|
@@ -18043,6 +17829,13 @@ declare class ChartTypeSelectorComponent {
|
|
|
18043
17829
|
protected readonly groupingOptions: readonly ChartOption<"clustered" | "stacked" | "percentStacked" | undefined>[];
|
|
18044
17830
|
protected readonly data: _angular_core.Signal<PptxChartData | undefined>;
|
|
18045
17831
|
protected readonly supportsGrouping: _angular_core.Signal<boolean>;
|
|
17832
|
+
/**
|
|
17833
|
+
* The type shown as selected. "Pareto" has no `PptxChartType` of its own
|
|
17834
|
+
* (docs/guide/limitations.md's ChartEx row): it is `chartType: 'histogram'`
|
|
17835
|
+
* plus a `paretoLine`-layout series, so reading `chartType` raw would show
|
|
17836
|
+
* "Histogram" for a chart the user picked "Pareto" for.
|
|
17837
|
+
*/
|
|
17838
|
+
protected readonly displayedType: _angular_core.Signal<ChartTypeSelectValue | undefined>;
|
|
18046
17839
|
protected onTitle(event: Event): void;
|
|
18047
17840
|
protected onType(event: Event): void;
|
|
18048
17841
|
protected onGrouping(event: Event): void;
|
|
@@ -19381,6 +19174,29 @@ declare class ImagePropertiesPanelComponent {
|
|
|
19381
19174
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ImagePropertiesPanelComponent, "pptx-image-properties-panel", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; }, { "patch": "patch"; }, never, never, true, never>;
|
|
19382
19175
|
}
|
|
19383
19176
|
|
|
19177
|
+
/**
|
|
19178
|
+
* Alt text / title editor for a plain shape, text box, connector, or any
|
|
19179
|
+
* graphic-frame kind (table/chart/smartArt/media/ole), at parity with
|
|
19180
|
+
* React's `AccessibilityTextSection` and Vue's `AccessibilityPanel.vue`.
|
|
19181
|
+
*
|
|
19182
|
+
* A picture's own alt text field lives in `ImagePropertiesPanelComponent`;
|
|
19183
|
+
* `shouldShowAccessibilitySection` (shared) decides which other element
|
|
19184
|
+
* kinds get this panel at all, and `getNonVisualDescriptionFields` (shared)
|
|
19185
|
+
* decides which of its two fields apply, so this component stays a thin
|
|
19186
|
+
* view.
|
|
19187
|
+
*/
|
|
19188
|
+
declare class AccessibilityTextPanelComponent {
|
|
19189
|
+
readonly element: _angular_core.InputSignal<PptxElement>;
|
|
19190
|
+
readonly patch: _angular_core.OutputEmitterRef<Partial<PptxElement>>;
|
|
19191
|
+
protected readonly fields: _angular_core.Signal<NonVisualDescriptionFields>;
|
|
19192
|
+
/** Whether the selected element kind should show this panel at all. */
|
|
19193
|
+
static supports(element: PptxElement): boolean;
|
|
19194
|
+
protected onAltText(event: Event): void;
|
|
19195
|
+
protected onTitle(event: Event): void;
|
|
19196
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AccessibilityTextPanelComponent, never>;
|
|
19197
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AccessibilityTextPanelComponent, "pptx-accessibility-text-panel", never, { "element": { "alias": "element"; "required": true; "isSignal": true; }; }, { "patch": "patch"; }, never, never, true, never>;
|
|
19198
|
+
}
|
|
19199
|
+
|
|
19384
19200
|
declare class MediaPropertiesPanelComponent {
|
|
19385
19201
|
readonly element: _angular_core.InputSignal<MediaPptxElement>;
|
|
19386
19202
|
readonly canEdit: _angular_core.InputSignal<boolean>;
|
|
@@ -20347,7 +20163,7 @@ declare class AccountPageComponent {
|
|
|
20347
20163
|
readonly accountAuth: _angular_core.InputSignal<AccountAuthConfig | undefined>;
|
|
20348
20164
|
private readonly translate;
|
|
20349
20165
|
protected readonly swatches: readonly string[];
|
|
20350
|
-
protected readonly version = "3.
|
|
20166
|
+
protected readonly version = "3.9.0";
|
|
20351
20167
|
protected readonly profile: _angular_core.WritableSignal<ViewerProfile>;
|
|
20352
20168
|
protected readonly initial: _angular_core.Signal<string>;
|
|
20353
20169
|
protected readonly usage: _angular_core.WritableSignal<LocalStorageUsageSummary | null>;
|
|
@@ -21190,30 +21006,171 @@ interface PresenterNotes {
|
|
|
21190
21006
|
declare function resolvePresenterNotes(slide: PptxSlide | undefined): PresenterNotes;
|
|
21191
21007
|
|
|
21192
21008
|
/**
|
|
21193
|
-
*
|
|
21009
|
+
* True two-curve WordArt envelope descriptor (inflate/deflate/can) for the
|
|
21010
|
+
* Angular viewer. Split out of `text-warp.ts` to keep that file under the
|
|
21011
|
+
* repo's per-file line budget.
|
|
21012
|
+
*
|
|
21013
|
+
* Unlike `TextWarpPathDef` (a shared-baseline SVG `<textPath>`), glyph HEIGHT
|
|
21014
|
+
* varies with horizontal position here: each glyph carries its own `matrix`
|
|
21015
|
+
* transform, computed by `buildGlyphEnvelope` (`pptx-viewer-shared`) from the
|
|
21016
|
+
* preset's top/bottom envelope curves sampled across the glyph's own width.
|
|
21017
|
+
*/
|
|
21018
|
+
|
|
21019
|
+
/** One glyph of an envelope-warped (inflate/deflate/can) line. */
|
|
21020
|
+
interface WarpGlyph {
|
|
21021
|
+
readonly char: string;
|
|
21022
|
+
readonly x: number;
|
|
21023
|
+
readonly y: number;
|
|
21024
|
+
/** SVG `matrix(1 b 0 d 0 f)` mapping the nominal band onto the envelope curve. */
|
|
21025
|
+
readonly transform: string;
|
|
21026
|
+
readonly fill: string;
|
|
21027
|
+
readonly fontWeight: 400 | 700;
|
|
21028
|
+
readonly fontStyle: 'italic' | 'normal';
|
|
21029
|
+
readonly fontFamily: string;
|
|
21030
|
+
readonly fontSize: number;
|
|
21031
|
+
/**
|
|
21032
|
+
* Present only when this glyph needed more than one rendered piece (see
|
|
21033
|
+
* `chooseGlyphSliceCount` in pptx-viewer-shared): a very wide glyph on a
|
|
21034
|
+
* strongly-curved envelope, where `transform` alone misses how much the
|
|
21035
|
+
* curve bends within the glyph's own width. Absent for an ordinary
|
|
21036
|
+
* caption, in which case the template renders exactly one `<text>` with
|
|
21037
|
+
* `transform`, unchanged from before slicing existed.
|
|
21038
|
+
*/
|
|
21039
|
+
readonly slices?: EnvelopeGlyphSlice[];
|
|
21040
|
+
/**
|
|
21041
|
+
* Deterministic clip-id prefix for this glyph's slices (unique across
|
|
21042
|
+
* every WordArt element on the page: element id + line + glyph index).
|
|
21043
|
+
* The template appends `-s{index}` per slice.
|
|
21044
|
+
*/
|
|
21045
|
+
readonly clipIdPrefix: string;
|
|
21046
|
+
}
|
|
21047
|
+
/** Descriptor for the true two-curve envelope renderer. One `<text>` per glyph. */
|
|
21048
|
+
interface TextWarpGlyphDef {
|
|
21049
|
+
readonly strategy: 'glyph';
|
|
21050
|
+
readonly preset: PptxTextWarpPreset;
|
|
21051
|
+
readonly width: number;
|
|
21052
|
+
readonly height: number;
|
|
21053
|
+
readonly glyphs: WarpGlyph[];
|
|
21054
|
+
}
|
|
21055
|
+
|
|
21056
|
+
/**
|
|
21057
|
+
* Text-warp (WordArt) descriptor resolver for the Angular viewer.
|
|
21058
|
+
*
|
|
21059
|
+
* Angular port of:
|
|
21060
|
+
* packages/react/src/viewer/utils/text-warp-classifier.ts
|
|
21061
|
+
* packages/react/src/viewer/utils/warp-text-renderer.tsx (descriptor shape)
|
|
21062
|
+
*
|
|
21063
|
+
* `getTextWarp(element)` resolves an element's OOXML `prstTxWarp` preset into a
|
|
21064
|
+
* `TextWarpDef` that the Angular template can consume without any React/HTML
|
|
21065
|
+
* string injection. Every classified preset (`textNoShape`/`textPlain`/unknown
|
|
21066
|
+
* excluded) now resolves to `strategy: 'path'`: SVG `<textPath>` along a
|
|
21067
|
+
* curved/arc/circle/bent baseline. The `pathLines` array contains one entry
|
|
21068
|
+
* per paragraph with a pre-computed SVG `d` attribute; the template renders an
|
|
21069
|
+
* inline `<svg>` with `<defs><path>` + `<text><textPath href>`.
|
|
21070
|
+
*
|
|
21071
|
+
* `strategy: 'css'` (a whole-block CSS transform approximation applied to the
|
|
21072
|
+
* `div.pptx-ng-text` wrapper) is no longer produced: `warp-path-generators.ts`
|
|
21073
|
+
* used to expose a NARROWER, LOCAL `shouldUseSvgWarp` that deliberately
|
|
21074
|
+
* excluded the envelope (inflate/deflate/can) and simple (slant/fade/cascade)
|
|
21075
|
+
* families, so this function fell back to a CSS-transform approximation for
|
|
21076
|
+
* them - a cross-binding parity bug, since React and Vanilla import shared's
|
|
21077
|
+
* BROAD `shouldUseSvgWarp` directly and already rendered those presets as true
|
|
21078
|
+
* SVG textPath. `warp-path-generators.ts` now re-exports the broad shared set,
|
|
21079
|
+
* so every classified preset takes the `'path'` branch. `TextWarpCssDef` /
|
|
21080
|
+
* `'css'` stay in the `TextWarpDef` union for API stability; nothing produces
|
|
21081
|
+
* one any more.
|
|
21194
21082
|
*
|
|
21195
|
-
*
|
|
21196
|
-
* `
|
|
21197
|
-
|
|
21198
|
-
|
|
21083
|
+
* Presets classified as `'none'` (textNoShape, textPlain, unknown) return
|
|
21084
|
+
* `undefined` so callers can skip extra rendering without an allowlist check.
|
|
21085
|
+
*/
|
|
21086
|
+
|
|
21087
|
+
/** The four rendering strategy families. */
|
|
21088
|
+
type WarpCategory = WarpCategory$1;
|
|
21089
|
+
/**
|
|
21090
|
+
* Classify a warp preset into a rendering strategy category.
|
|
21199
21091
|
*
|
|
21200
|
-
* `
|
|
21201
|
-
*
|
|
21202
|
-
*
|
|
21203
|
-
* `SVG_WARP_PRESETS` is a broader set (every path-renderable preset), so it must
|
|
21204
|
-
* not be substituted here; doing so would route envelope/simple presets to
|
|
21205
|
-
* `<textPath>` and break the css-strategy routing (and its tests).
|
|
21092
|
+
* Returns `'none'` for unknown or empty presets so callers can safely
|
|
21093
|
+
* skip rendering without an explicit allowlist check. Thin alias for the
|
|
21094
|
+
* shared `classifyTextWarp` helper.
|
|
21206
21095
|
*/
|
|
21096
|
+
declare const getWarpCategory: (preset: string | undefined) => WarpCategory;
|
|
21207
21097
|
|
|
21208
21098
|
/**
|
|
21209
|
-
*
|
|
21210
|
-
*
|
|
21211
|
-
*
|
|
21212
|
-
*
|
|
21099
|
+
* A single pre-computed SVG path line for one text paragraph.
|
|
21100
|
+
*
|
|
21101
|
+
* The template renders this as:
|
|
21102
|
+
* `<path [id]="pathId" [attr.d]="d" fill="none" />`
|
|
21103
|
+
* inside `<defs>`, then references it with `<textPath [attr.href]="'#'+pathId">`.
|
|
21213
21104
|
*/
|
|
21214
|
-
|
|
21215
|
-
/**
|
|
21216
|
-
|
|
21105
|
+
interface WarpPathLine {
|
|
21106
|
+
/** Unique DOM id for this `<path>` element (safe to use as `href` fragment). */
|
|
21107
|
+
pathId: string;
|
|
21108
|
+
/** SVG path data (`d` attribute). */
|
|
21109
|
+
d: string;
|
|
21110
|
+
/** The text segments that flow along this path. */
|
|
21111
|
+
segments: TextSegment[];
|
|
21112
|
+
}
|
|
21113
|
+
/**
|
|
21114
|
+
* Descriptor for SVG `<textPath>`-based warp rendering.
|
|
21115
|
+
*
|
|
21116
|
+
* One `WarpPathLine` per paragraph. The template renders an inline `<svg>`
|
|
21117
|
+
* covering the element bounds, defines each path in `<defs>`, then lays
|
|
21118
|
+
* `<text><textPath href="#pathId">` on each path.
|
|
21119
|
+
*/
|
|
21120
|
+
interface TextWarpPathDef {
|
|
21121
|
+
readonly strategy: 'path';
|
|
21122
|
+
/** OOXML preset name (e.g. `'textArchUp'`). */
|
|
21123
|
+
readonly preset: PptxTextWarpPreset;
|
|
21124
|
+
/** One entry per paragraph. */
|
|
21125
|
+
readonly pathLines: WarpPathLine[];
|
|
21126
|
+
/** Element pixel width (for `<svg width>`). */
|
|
21127
|
+
readonly width: number;
|
|
21128
|
+
/** Element pixel height (for `<svg height>`). */
|
|
21129
|
+
readonly height: number;
|
|
21130
|
+
/** SVG `text-anchor` value derived from paragraph alignment. */
|
|
21131
|
+
readonly textAnchor: 'start' | 'middle' | 'end';
|
|
21132
|
+
/** SVG `<textPath startOffset>` value (e.g. `"0%"`, `"50%"`, `"100%"`). */
|
|
21133
|
+
readonly startOffset: string;
|
|
21134
|
+
/** Base font size in points from the element's text style. */
|
|
21135
|
+
readonly baseFontSize: number;
|
|
21136
|
+
/** Base font family string (already CSS-ready). */
|
|
21137
|
+
readonly baseFontFamily: string;
|
|
21138
|
+
/** Base text fill colour (hex). */
|
|
21139
|
+
readonly baseColor: string;
|
|
21140
|
+
}
|
|
21141
|
+
/**
|
|
21142
|
+
* Descriptor for CSS-transform-based warp rendering.
|
|
21143
|
+
*
|
|
21144
|
+
* The template applies `cssTransform` + `cssTransformOrigin` on the
|
|
21145
|
+
* `div.pptx-ng-text` wrapper (or a containing div) via `[ngStyle]`.
|
|
21146
|
+
*/
|
|
21147
|
+
interface TextWarpCssDef {
|
|
21148
|
+
readonly strategy: 'css';
|
|
21149
|
+
/** OOXML preset name (e.g. `'textSlantUp'`). */
|
|
21150
|
+
readonly preset: PptxTextWarpPreset;
|
|
21151
|
+
/** CSS `transform` string (e.g. `"perspective(500px) rotateY(8deg) skewY(-4deg)"`). */
|
|
21152
|
+
readonly cssTransform: string;
|
|
21153
|
+
/** CSS `transform-origin` string (e.g. `"left center"`). */
|
|
21154
|
+
readonly cssTransformOrigin: string;
|
|
21155
|
+
}
|
|
21156
|
+
|
|
21157
|
+
/** Union of the warp rendering strategies. */
|
|
21158
|
+
type TextWarpDef = TextWarpPathDef | TextWarpCssDef | TextWarpGlyphDef;
|
|
21159
|
+
/**
|
|
21160
|
+
* Resolve a `PptxElement`'s text warp preset into a `TextWarpDef` descriptor,
|
|
21161
|
+
* or `undefined` when the element carries no warp (or the preset is `textNoShape` /
|
|
21162
|
+
* `textPlain` / unknown).
|
|
21163
|
+
*
|
|
21164
|
+
* @param element Any `PptxElement`. Elements without text properties always
|
|
21165
|
+
* return `undefined`.
|
|
21166
|
+
* @param fieldContext Optional OOXML field-substitution context. When given,
|
|
21167
|
+
* field runs (slide number, date/time, footer, ...) in the warp
|
|
21168
|
+
* paragraphs are resolved to their display text, mirroring
|
|
21169
|
+
* React's warp-text-renderer.
|
|
21170
|
+
* @returns A `TextWarpDef` with `strategy: 'path'` for a classified preset,
|
|
21171
|
+
* or `undefined` for `textNoShape`/`textPlain`/an unknown preset.
|
|
21172
|
+
*/
|
|
21173
|
+
declare function getTextWarp(element: PptxElement, fieldContext?: FieldSubstitutionContext): TextWarpDef | undefined;
|
|
21217
21174
|
|
|
21218
21175
|
/**
|
|
21219
21176
|
* Generate an inline SVG string for an OOXML preset pattern fill.
|
|
@@ -21750,13 +21707,24 @@ declare class SmartArt3DRendererComponent implements OnDestroy {
|
|
|
21750
21707
|
* SVG fallback branch is drawn into. Set only by the main interactive canvas.
|
|
21751
21708
|
*/
|
|
21752
21709
|
readonly markElement: _angular_core.InputSignal<boolean>;
|
|
21710
|
+
/**
|
|
21711
|
+
* Active font-style emphasis override (Bold Flash, Bold Reveal, Underline,
|
|
21712
|
+
* Change Font Style/Size) for every node's caption, driven by native-
|
|
21713
|
+
* animation playback. Mirrors `ChartElementViewComponent`'s `textStyle`
|
|
21714
|
+
* threading for the 3D chart scenes: a canvas-texture caption has no DOM
|
|
21715
|
+
* text node the CSS-injection path (`buildTextStyleOverrideCss`) can reach,
|
|
21716
|
+
* so the scene's own `setTextStyle` handle method is the only way in.
|
|
21717
|
+
*/
|
|
21718
|
+
readonly textStyle: _angular_core.InputSignal<TextStyleAnimationDescriptor | undefined>;
|
|
21753
21719
|
private readonly canvas;
|
|
21754
21720
|
private readonly containerEl;
|
|
21755
21721
|
private readonly nodeEditor3d;
|
|
21756
21722
|
/** `true` until the 3D scene is known to be mountable; renders the SVG fallback. */
|
|
21757
21723
|
readonly useFallback: _angular_core.WritableSignal<boolean>;
|
|
21758
21724
|
private readonly mountFn;
|
|
21759
|
-
|
|
21725
|
+
/** The live mounted handle, or `null` while unmounted. A signal so
|
|
21726
|
+
* `setTextStyle` re-applies as soon as it (or the input) changes. */
|
|
21727
|
+
private readonly handle;
|
|
21760
21728
|
protected readonly editState: _angular_core.WritableSignal<InlineEditState | null>;
|
|
21761
21729
|
/** Live draft text, updated on every input event. */
|
|
21762
21730
|
protected draftText: string;
|
|
@@ -21787,7 +21755,7 @@ declare class SmartArt3DRendererComponent implements OnDestroy {
|
|
|
21787
21755
|
private applyCommit;
|
|
21788
21756
|
ngOnDestroy(): void;
|
|
21789
21757
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SmartArt3DRendererComponent, never>;
|
|
21790
|
-
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>;
|
|
21758
|
+
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>;
|
|
21791
21759
|
}
|
|
21792
21760
|
|
|
21793
21761
|
declare class SmartArtPreviewComponent {
|
|
@@ -23011,8 +22979,13 @@ declare function rulerHighlight(start: number | undefined, span: number | undefi
|
|
|
23011
22979
|
* Serialize the current Y.Doc slide state (with the separated master/layout
|
|
23012
22980
|
* template elements merged back) into `.pptx` bytes. `sourceBytes` seeds the
|
|
23013
22981
|
* handler so package parts the CRDT does not carry (media, fonts, rels) survive.
|
|
22982
|
+
*
|
|
22983
|
+
* `saveOptions` carries the session-level save options (view properties,
|
|
22984
|
+
* table styles, tags, deck properties, ...) built the same way as the
|
|
22985
|
+
* Save/Export path (`buildDeckSaveOptions`). Without it the write-back
|
|
22986
|
+
* dropped every session-level edit outside `slides`.
|
|
23014
22987
|
*/
|
|
23015
|
-
declare function serializeWriteBack(ydoc: YDocLike, sourceBytes: Uint8Array, templateElements: TemplateElementsBySlideId): Promise<Uint8Array>;
|
|
22988
|
+
declare function serializeWriteBack(ydoc: YDocLike, sourceBytes: Uint8Array, templateElements: TemplateElementsBySlideId, saveOptions?: PptxHandlerSaveOptions): Promise<Uint8Array>;
|
|
23016
22989
|
/**
|
|
23017
22990
|
* Debounced elected-writer write-back. Only the session `owner` with an
|
|
23018
22991
|
* `onWriteBack` callback schedules anything; each new change resets the timer,
|
|
@@ -23020,10 +22993,22 @@ declare function serializeWriteBack(ydoc: YDocLike, sourceBytes: Uint8Array, tem
|
|
|
23020
22993
|
*/
|
|
23021
22994
|
declare class WriteBackScheduler {
|
|
23022
22995
|
private timer;
|
|
23023
|
-
schedule(config: CollaborationConfig | null, ydoc: YDocLike | null, getSourceBytes: (() => Uint8Array | null) | null, getTemplateElements: (() => TemplateElementsBySlideId) | null): void;
|
|
22996
|
+
schedule(config: CollaborationConfig | null, ydoc: YDocLike | null, getSourceBytes: (() => Uint8Array | null) | null, getTemplateElements: (() => TemplateElementsBySlideId) | null, getSaveOptions?: (() => PptxHandlerSaveOptions) | null): void;
|
|
23024
22997
|
cancel(): void;
|
|
23025
22998
|
}
|
|
23026
22999
|
|
|
23000
|
+
/** Resolved per-stroke data used to render a single `<path>`, circle set, or nib-mark set. */
|
|
23001
|
+
type InkStroke = InkGroupStrokeView;
|
|
23002
|
+
/**
|
|
23003
|
+
* Narrow `element` to `InkPptxElement` and return the resolved per-stroke
|
|
23004
|
+
* array, or an empty array when the element is not an ink element.
|
|
23005
|
+
*/
|
|
23006
|
+
declare function buildInkStrokes(element: PptxElement): InkStroke[];
|
|
23007
|
+
/** Minimum SVG viewport dimension (clamp to ≥ 1 to avoid degenerate viewBox). */
|
|
23008
|
+
declare function inkViewBox(element: PptxElement): string;
|
|
23009
|
+
/** Wrapper `[ngStyle]`-compatible style for the ink container `<div>`. */
|
|
23010
|
+
declare function buildInkContainerStyle(element: PptxElement, zIndex: number): StyleMap;
|
|
23011
|
+
|
|
23027
23012
|
/**
|
|
23028
23013
|
* Pure (Angular-free) helpers for the `<a:clrChange>` colour-change image
|
|
23029
23014
|
* effect. Kept out of the component so they can be unit-tested without TestBed
|
|
@@ -23682,6 +23667,6 @@ declare function thumbnailHeight(canvasW: number, canvasH: number, thumbW: numbe
|
|
|
23682
23667
|
*/
|
|
23683
23668
|
declare function gridColumns(containerW: number, thumbW: number, gap: number, maxCols: number): number;
|
|
23684
23669
|
|
|
23685
|
-
export { AFTER_ANIMATION_VALUES, ALIGN_OPTIONS, ANIMATION_PRESET_CATEGORIES, AUDIENCE_HASH, AUDIENCE_NONCE_KEY, AVATAR_COLOR_SWATCHES, AXIS_LABEL_COLOR, AccessibilityPanelComponent, AccessibilityService, 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 };
|
|
23686
|
-
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 };
|
|
23670
|
+
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, 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, 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, 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 };
|
|
23671
|
+
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 };
|
|
23687
23672
|
//# sourceMappingURL=pptx-angular-viewer.d.ts.map
|