pptx-angular-viewer 4.7.0 → 4.8.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.
Files changed (25) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/fesm2022/pptx-angular-viewer-chart-3d-view-scene-CM71j9A9.mjs +1703 -0
  3. package/fesm2022/pptx-angular-viewer-chart-3d-view-scene-CM71j9A9.mjs.map +1 -0
  4. package/fesm2022/{pptx-angular-viewer-chat-history-idb-D_SZnX0q.mjs → pptx-angular-viewer-chat-history-idb-7dyn_ZbD.mjs} +2 -2
  5. package/fesm2022/{pptx-angular-viewer-chat-history-idb-D_SZnX0q.mjs.map → pptx-angular-viewer-chat-history-idb-7dyn_ZbD.mjs.map} +1 -1
  6. package/fesm2022/{pptx-angular-viewer-pptx-angular-viewer-D3TADvW3.mjs → pptx-angular-viewer-pptx-angular-viewer-Cf08ueRA.mjs} +3769 -1247
  7. package/fesm2022/{pptx-angular-viewer-pptx-angular-viewer-D3TADvW3.mjs.map → pptx-angular-viewer-pptx-angular-viewer-Cf08ueRA.mjs.map} +1 -1
  8. package/fesm2022/pptx-angular-viewer-view-scene-Bn9SJZk9.mjs +862 -0
  9. package/fesm2022/pptx-angular-viewer-view-scene-Bn9SJZk9.mjs.map +1 -0
  10. package/fesm2022/pptx-angular-viewer.mjs +1 -1
  11. package/i18n/de.cjs +64 -96
  12. package/i18n/de.mjs +64 -96
  13. package/i18n/es.cjs +64 -96
  14. package/i18n/es.mjs +64 -96
  15. package/i18n/fr.cjs +64 -96
  16. package/i18n/fr.mjs +64 -96
  17. package/i18n/zh-CN.cjs +63 -95
  18. package/i18n/zh-CN.mjs +63 -95
  19. package/package.json +2 -2
  20. package/types/pptx-angular-viewer.d.ts +508 -77
  21. package/types/pptx-angular-viewer.d.ts.map +1 -1
  22. package/fesm2022/pptx-angular-viewer-chart-3d-view-scene-CFWKnfML.mjs +0 -470
  23. package/fesm2022/pptx-angular-viewer-chart-3d-view-scene-CFWKnfML.mjs.map +0 -1
  24. package/fesm2022/pptx-angular-viewer-view-scene-C5oUG9yl.mjs +0 -235
  25. package/fesm2022/pptx-angular-viewer-view-scene-C5oUG9yl.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import * as pptx_viewer_core from 'pptx-viewer-core';
2
- import { PptxThemePreset, PptxElement, PptxSlide, ShapeStyle, PptxTextWarpPreset, XmlObject, PptxChartSeries, PptxChartLegendTextStyle, PptxChartMarkerSymbol, PptxChartDataPointPicture, PptxChartData, PptxChartDataLabelPosition, PptxChartType, PptxElementAnimation, PptxAnimationPreset, PptxAnimationSequence, PptxAnimationTrigger, PptxAnimationTimingCurve, PptxAnimationRepeatMode, PptxAnimationDirection, PptxAfterAnimationAction, ParsedTableStyleMap, PptxThemeColorScheme, PptxThemeFontScheme, TablePptxElement, PptxSection, OlePptxElement, TextSegment, TextStyle, PptxTransitionType, PptxSlideTransition, PptxBar3DShape, SmartArtLayoutType, SmartArtColorScheme, PptxSmartArtChrome, PptxSmartArtDrawingShape, SmartArtStyle, PptxSmartArtData, PptxThemeColorRef, PlaceholderDefaults, PptxEmbeddedFont, SmartArtLayout, AccessibilityIssueSeverity, AccessibilityIssue, AccessibilityIssueType, AccessibilityCheckOptions, ElementActionType, InkPptxElement, PptxComment, PptxChartBarDirection, ImagePptxElement, MasterViewTab, PptxHeaderFooter, PptxPresentationProperties, PptxViewProperties, PptxCustomShow, PptxCoreProperties, PptxAppProperties, PptxCustomProperty, PptxTagCollection, PptxSlideMaster, PptxNotesMaster, PptxHandoutMaster, PptxSlideSize, PptxSaveFormat, MediaPptxElement, PptxTheme, PptxHandler, PptxData, PptxHandlerSaveOptions, PptxModernCommentAuthor, PptxCommentMention, PptxThemeOption, ParsedSignature, PptxLayoutPreview, PptxTableCell, PptxTableCellStyle, PptxTableRow, PptxTableData, SvgExportOptions, PptxLayoutOption, PptxGridSpacing, ChartPptxElement, RenderedNode, RenderedCircleNode, RenderedPolygonNode, RenderedRectNode, SmartArtLayoutResult, Model3DPptxElement, ZoomPptxElement, SmartArtPptxElement, PptxAnimationTimelineAnchor, MaterialPresetType, Text3DStyle, BevelPresetType, PptxChartDataLabelOptions, PptxChartAxisType, PptxChartAxisFormatting, PptxChartMarker, PptxChartDataPoint, PptxChartTrendline, PptxChartErrBars, PptxTextStyleLevels, SignatureStatus, ElementAction, PptxImageEffects, MediaBookmark, ColorMapAliasKey, ChartAxisEdit, ChartDataPointLabelEdit, PptxChartLegendPosition, PptxChartStyle, ChartAxisTitleStyleEdit, ChartGridlineStyleEdit, PptxSmartArtNode, PptxSmartArtNodeStyle, MediaCaptionTrack, PptxMediaType } from 'pptx-viewer-core';
2
+ import { PptxThemePreset, PptxElement, PptxSlide, ShapeStyle, PptxTextWarpPreset, XmlObject, PptxChartSeries, PptxChartLegendTextStyle, PptxChartMarkerSymbol, PptxChartDataPointPicture, PptxChartData, PptxChartDataLabelPosition, PptxChartType, PptxElementAnimation, PptxAnimationPreset, PptxAnimationSequence, PptxAnimationTrigger, PptxAnimationTimingCurve, PptxAnimationRepeatMode, PptxAnimationDirection, PptxAfterAnimationAction, ParsedTableStyleMap, PptxThemeColorScheme, PptxThemeFontScheme, TablePptxElement, PptxSection, OlePptxElement, TextSegment, TextStyle, PptxTransitionType, PptxSlideTransition, PptxBar3DShape, SmartArtLayoutType, PptxSmartArtDrawingShape, SmartArtColorScheme, PptxSmartArtChrome, SmartArtStyle, PptxSmartArtData, PptxThemeColorRef, PlaceholderDefaults, PptxEmbeddedFont, SmartArtLayout, AccessibilityIssueSeverity, AccessibilityIssue, AccessibilityIssueType, AccessibilityCheckOptions, ElementActionType, InkPptxElement, PptxComment, PptxChartBarDirection, ImagePptxElement, MasterViewTab, PptxHeaderFooter, PptxPresentationProperties, PptxViewProperties, PptxCustomShow, PptxCoreProperties, PptxAppProperties, PptxCustomProperty, PptxTagCollection, PptxSlideMaster, PptxNotesMaster, PptxHandoutMaster, PptxSlideSize, PptxSaveFormat, MediaPptxElement, PptxTheme, PptxHandler, PptxData, PptxHandlerSaveOptions, PptxModernCommentAuthor, PptxCommentMention, PptxThemeOption, ParsedSignature, PptxLayoutPreview, PptxTableCell, PptxTableCellStyle, PptxTableRow, PptxTableData, SvgExportOptions, PptxLayoutOption, PptxGridSpacing, ChartPptxElement, RenderedNode, RenderedCircleNode, RenderedPolygonNode, RenderedRectNode, SmartArtLayoutResult, Model3DPptxElement, ZoomPptxElement, SmartArtPptxElement, PptxAnimationTimelineAnchor, MaterialPresetType, Text3DStyle, BevelPresetType, PptxChartDataLabelOptions, PptxChartAxisType, PptxChartAxisFormatting, PptxChartMarker, PptxChartDataPoint, PptxChartTrendline, PptxChartErrBars, PptxTextStyleLevels, SignatureStatus, ElementAction, PptxImageEffects, MediaBookmark, ColorMapAliasKey, ChartAxisEdit, ChartDataPointLabelEdit, PptxChartLegendPosition, PptxChartStyle, ChartAxisTitleStyleEdit, ChartGridlineStyleEdit, PptxSmartArtNode, PptxSmartArtNodeStyle, 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 { Doc } from 'yjs';
5
5
  import * as _angular_core from '@angular/core';
@@ -4124,6 +4124,51 @@ interface ElementBulletPatch {
4124
4124
  textStyle?: TextStyle;
4125
4125
  }
4126
4126
 
4127
+ /**
4128
+ * East Asian line breaking the browser cannot be asked for in CSS: PowerPoint's
4129
+ * hanging punctuation (`a:pPr/@hangingPunct`) and its kinsoku switch
4130
+ * (`a:pPr/@eaLnBrk`).
4131
+ *
4132
+ * Ground truth (PowerPoint COM, Slide.Export of 20pt Yu Gothic paragraphs in
4133
+ * boxes a fraction of an em too narrow for the next character):
4134
+ *
4135
+ * - `hangingPunct="1"` keeps an overflowing `、` `。` `,` `.` on the line,
4136
+ * drawn past the right margin. NOTHING else hangs: closing brackets
4137
+ * (`)` `」` `』` `】` `〉` `》`), `!` `?` `:` `・`, the prolonged-sound
4138
+ * mark and small kana all wrap exactly as with `hangingPunct="0"`, pulling
4139
+ * the preceding character down with them.
4140
+ * - `eaLnBrk="0"` switches the kinsoku rules off: a line may then start with
4141
+ * `」`, `。`, `、` or a small kana, i.e. East Asian text breaks between any
4142
+ * two characters. Latin words still break only between words.
4143
+ *
4144
+ * Only Safari implements CSS `hanging-punctuation`, and CSS `line-break:
4145
+ * anywhere` / `word-break: break-all` also split Latin words, so both are done
4146
+ * in the run text instead, as pieces every binding already renders:
4147
+ *
4148
+ * - A hanging character becomes a zero-inline-size `inline-block` (so the
4149
+ * line breaker never counts it), glued to the character before it with a
4150
+ * WORD JOINER (so it cannot be pushed to the next line on its own), and
4151
+ * followed by an ordinary space whose `word-spacing` makes it exactly the
4152
+ * punctuation's own advance. Mid-line that space restores the advance, so
4153
+ * nothing moves; at a line end it is trailing white space, which CSS hangs
4154
+ * or collapses, so the punctuation paints past the margin, as in PowerPoint.
4155
+ * (A negative margin does not work: Chromium decides a break before
4156
+ * applying an inline's end margin.)
4157
+ * - With kinsoku off, a ZERO WIDTH SPACE between two East Asian characters
4158
+ * is a break opportunity no kinsoku rule can veto (UAX #14 LB8 outranks the
4159
+ * "no break before closing punctuation" rules).
4160
+ *
4161
+ * @module text-east-asian-breaks
4162
+ */
4163
+
4164
+ /** Which of the two behaviours a paragraph asks for. */
4165
+ interface EastAsianBreakOptions {
4166
+ /** `a:pPr/@hangingPunct="1"`. */
4167
+ hangingPunctuation: boolean;
4168
+ /** `a:pPr/@eaLnBrk="0"`: break between any two East Asian characters. */
4169
+ breakAnywhere: boolean;
4170
+ }
4171
+
4127
4172
  /**
4128
4173
  * Per-run facts a rendered paragraph carries besides its text and CSS: the
4129
4174
  * run's HYPERLINK and its inline EQUATION (framework-agnostic).
@@ -4354,6 +4399,8 @@ interface ParagraphRun {
4354
4399
  * `paragraph-run-build.ts`).
4355
4400
  */
4356
4401
  underlineWordPieces?: ScriptFontPiece[];
4402
+ /** The advance-carrying space after a hanging `、`/`。` (`text-east-asian-breaks`). */
4403
+ hangingSpace?: true;
4357
4404
  /**
4358
4405
  * `a:reflection` mirrored-sibling wrapper style for this run (the text-run
4359
4406
  * counterpart of a shape/picture's `ComputedEffectStyle.reflection`), or
@@ -4437,6 +4484,12 @@ interface RenderParagraph {
4437
4484
  * break rules, rendered differently in the other four bindings.
4438
4485
  */
4439
4486
  paragraphStyle?: RunStyle;
4487
+ /**
4488
+ * `@hangingPunct` / `@eaLnBrk="0"` as resolved for this paragraph. The runs
4489
+ * above already carry their pieces; React, which rebuilds each segment's
4490
+ * pieces inside one span, re-applies `splitEastAsianBreaks` from this.
4491
+ */
4492
+ eastAsianBreaks?: EastAsianBreakOptions;
4440
4493
  }
4441
4494
 
4442
4495
  /** Current editor payload. Missing segments explicitly denotes plain-text fallback. */
@@ -5974,6 +6027,92 @@ declare const P14_TRANSITION_KEYFRAMES_ALL = "\n/* \u2500\u2500 Conveyor (transl
5974
6027
  */
5975
6028
  declare function getP14TransitionAnimations(type: PptxTransitionType, durationMs: number, direction: string | undefined, orient?: string | undefined, pattern?: string | undefined): SlideTransitionAnimations | undefined;
5976
6029
 
6030
+ /**
6031
+ * Pure model types for the lit (bevel / scene quick style) SmartArt 3D path.
6032
+ *
6033
+ * Split out of `smartart-3d-types.ts` to keep both under the repo's LOC
6034
+ * budget. Every length is in layout pixels (the drawing's own EMU / 9525),
6035
+ * every angle in degrees, and every point in the mesh-local, y-up space the
6036
+ * mesh's `outline` uses.
6037
+ *
6038
+ * @module render/smartart-3d-solid-types
6039
+ */
6040
+ /** A point in mesh-local 2D space (y-up). */
6041
+ interface SolidPoint2 {
6042
+ x: number;
6043
+ y: number;
6044
+ }
6045
+ /** One `a:bevelT` / `a:bevelB`, in layout pixels. */
6046
+ interface SmartArt3DBevel {
6047
+ /** Inset of the bevel from the outline (`@w`). */
6048
+ width: number;
6049
+ /** Relief of the bevel (`@h`). */
6050
+ height: number;
6051
+ /** `@prst` profile token (`circle` when absent, per ECMA-376). */
6052
+ profile: string;
6053
+ }
6054
+ /** A shape's resolved `a:sp3d`, in layout pixels. */
6055
+ interface SmartArt3DSolid {
6056
+ bevelTop?: SmartArt3DBevel;
6057
+ bevelBottom?: SmartArt3DBevel;
6058
+ /** Extrusion depth behind the front face (`@extrusionH`). */
6059
+ extrusion: number;
6060
+ /** Side-wall colour (`a:extrusionClr`), `#rrggbb`; the fill colour when absent. */
6061
+ extrusionColor?: string;
6062
+ /** Contour rim width around the whole solid (`@contourW`). */
6063
+ contourWidth: number;
6064
+ /** Contour colour (`a:contourClr`), `#rrggbb`. */
6065
+ contourColor?: string;
6066
+ /** `@prstMaterial` token. */
6067
+ material: string;
6068
+ }
6069
+ /** One gradient stop, `offset` in 0..1. */
6070
+ interface SmartArt3DGradientStop {
6071
+ offset: number;
6072
+ color: string;
6073
+ }
6074
+ /**
6075
+ * A shape's gradient fill, in mesh-local space: linear from `from` to `to`,
6076
+ * or radial around `from` with the distance to `to` as its radius.
6077
+ */
6078
+ interface SmartArt3DGradient {
6079
+ kind: 'linear' | 'radial';
6080
+ from: SolidPoint2;
6081
+ to: SolidPoint2;
6082
+ stops: SmartArt3DGradientStop[];
6083
+ }
6084
+ /** The light rig (`a:lightRig`) a lit SmartArt scene is shaded with. */
6085
+ interface SmartArt3DLighting {
6086
+ /** `@rig` token, e.g. `threePt`, `flat`, `morning`. */
6087
+ rig: string;
6088
+ /** `@dir` token, e.g. `t`, `tl`. */
6089
+ direction: string;
6090
+ /** Rig revolution about the view axis (`a:rot/@rev`), degrees. */
6091
+ revDeg: number;
6092
+ }
6093
+ /**
6094
+ * The whole-diagram camera of a scene quick style (`dgm:styleDef/dgm:scene3d`).
6095
+ *
6096
+ * The diagram is rotated about its own centre by `latDeg` (about x), `lonDeg`
6097
+ * (about y) and `revDeg` (roll about the view axis), then projected either in
6098
+ * parallel or through a pinhole placed `distance` layout px away, and
6099
+ * finally scaled by `zoom`.
6100
+ */
6101
+ interface SmartArt3DCamera {
6102
+ projection: 'orthographic' | 'perspective';
6103
+ latDeg: number;
6104
+ lonDeg: number;
6105
+ revDeg: number;
6106
+ /**
6107
+ * Camera distance from the diagram centre in layout px (`perspective`
6108
+ * only). Absolute, like PowerPoint's: a larger diagram shows stronger
6109
+ * perspective under the same preset.
6110
+ */
6111
+ distance: number;
6112
+ /** `a:camera/@zoom` as a fraction (1 = 100%). */
6113
+ zoom: number;
6114
+ }
6115
+
5977
6116
  /**
5978
6117
  * Three.js SmartArt renderer - pure model types (phase 1: extruded layouts).
5979
6118
  *
@@ -5987,6 +6126,7 @@ declare function getP14TransitionAnimations(type: PptxTransitionType, durationMs
5987
6126
  * front face of every extruded block facing +z. Layout (SVG) space is y-down
5988
6127
  * with the origin at the top-left; the model builder performs the flip.
5989
6128
  */
6129
+
5990
6130
  /** A point in the world's XZ-agnostic 2D outline space (y-up). */
5991
6131
  interface Point2 {
5992
6132
  x: number;
@@ -6067,6 +6207,13 @@ interface SmartArt3DMesh {
6067
6207
  halfWidth: number;
6068
6208
  /** Half-height of the footprint. */
6069
6209
  halfHeight: number;
6210
+ /**
6211
+ * Lit solid (bevel / extrusion / contour) from the cached shape's `a:sp3d`,
6212
+ * for the `'bevel'` and `'scene'` style categories. Absent: a flat face.
6213
+ */
6214
+ solid?: SmartArt3DSolid;
6215
+ /** Gradient fill to paint instead of {@link fill}, when the shape has one. */
6216
+ gradient?: SmartArt3DGradient;
6070
6217
  }
6071
6218
  /**
6072
6219
  * A multi-line text label, pre-laid-out to match the 2D SVG projection
@@ -6093,6 +6240,14 @@ interface SmartArt3DTextBlock {
6093
6240
  fontFamily?: string;
6094
6241
  fontWeight?: number;
6095
6242
  fontStyle?: 'normal' | 'italic';
6243
+ /**
6244
+ * The label's own extrusion (`a:bodyPr/a:sp3d`, e.g. Bird's Eye Scene),
6245
+ * in layout px toward the viewer: the letters stand this far off the
6246
+ * shape face, and their sides are drawn in {@link extrusionColor} (the
6247
+ * text colour when absent).
6248
+ */
6249
+ extrusion?: number;
6250
+ extrusionColor?: string;
6096
6251
  }
6097
6252
  /** A connector poly-line drawn between meshes on the base plane. */
6098
6253
  interface SmartArt3DConnector {
@@ -6115,10 +6270,11 @@ type SmartArt3DFamily = 'list' | 'process' | 'cycle' | 'hierarchy' | 'matrix' |
6115
6270
  * Which PowerPoint quick-style family this model was built for, so the scene
6116
6271
  * builder can pick the right camera/shading/geometry pipeline: `'flat'`
6117
6272
  * (unlit, zero-depth, orthographic matching the 2D viewBox), `'bevel'`
6118
- * (per-shape `orthographicFront` camera + `shape3d` bevel/material, not yet
6119
- * built by any model builder), or `'scene'` (one whole-diagram camera from
6120
- * the quick style, not yet built). Undefined for the legacy layout-engine
6121
- * model (`buildSmartArt3DModel`), which predates this distinction.
6273
+ * (per-shape `orthographicFront` camera + lit `a:sp3d` bevel/material), or
6274
+ * `'scene'` (one whole-diagram camera from the quick style, lit extruded
6275
+ * solids). See `resolveSmartArt3DStylePath`. Undefined for the legacy
6276
+ * layout-engine model (`buildSmartArt3DModel`), which predates this
6277
+ * distinction.
6122
6278
  */
6123
6279
  type SmartArt3DStyleCategory = 'flat' | 'bevel' | 'scene';
6124
6280
  /** The complete pure 3D model for one SmartArt element. */
@@ -6132,6 +6288,10 @@ interface SmartArt3DModel {
6132
6288
  background?: string;
6133
6289
  /** See {@link SmartArt3DStyleCategory}. */
6134
6290
  styleCategory?: SmartArt3DStyleCategory;
6291
+ /** Whole-diagram camera (`'scene'` only). */
6292
+ camera?: SmartArt3DCamera;
6293
+ /** Light rig the lit solids are shaded with (`'bevel'` / `'scene'`). */
6294
+ lighting?: SmartArt3DLighting;
6135
6295
  }
6136
6296
 
6137
6297
  /**
@@ -6384,6 +6544,267 @@ interface BarChart3DSceneOptions {
6384
6544
  picture?: BarBoxPictureContext;
6385
6545
  }
6386
6546
 
6547
+ /**
6548
+ * Axis labels for the right-angle-axes 3D bar chart
6549
+ * (`chart-3d-oblique-layout.ts`), placed where PowerPoint puts them: off the
6550
+ * FRONT edges of the box, not off the back wall.
6551
+ *
6552
+ * - Value labels: along the front edge of the wall that carries the value
6553
+ * gridlines (left edge for columns, bottom edge for a horizontal chart).
6554
+ * - Category labels: centred on each category along the other front edge.
6555
+ * - `standard` grouping: one series label per depth row, off the right end of
6556
+ * the floor (columns only; PowerPoint's horizontal standard bar has no row
6557
+ * axis labels in its default layout).
6558
+ *
6559
+ * @module chart-3d-oblique-labels
6560
+ */
6561
+
6562
+ /** One label, in chart px. */
6563
+ interface ObliqueLabel {
6564
+ role: 'value' | 'category' | 'series';
6565
+ text: string;
6566
+ x: number;
6567
+ y: number;
6568
+ anchor: 'start' | 'middle' | 'end';
6569
+ /** `central` centres the text on `y`. */
6570
+ baseline: 'central' | 'hanging';
6571
+ fontSize: number;
6572
+ }
6573
+
6574
+ /**
6575
+ * World-space types of the right-angle-axes 3D bar chart layout
6576
+ * (`chart-3d-oblique-layout.ts`).
6577
+ *
6578
+ * @module chart-3d-oblique-types
6579
+ */
6580
+
6581
+ /** One bar as a world-space box. */
6582
+ interface ObliqueBar {
6583
+ x: number;
6584
+ y: number;
6585
+ z: number;
6586
+ /** Extent along world X / Y / Z. */
6587
+ w: number;
6588
+ h: number;
6589
+ d: number;
6590
+ color: string;
6591
+ seriesIndex: number;
6592
+ categoryIndex: number;
6593
+ value: number;
6594
+ /** Resolved `c:shape` (per-series `c:ser/c:shape`, else the chart's). */
6595
+ shape: PptxBar3DShape;
6596
+ /** Cross-section radius at the bar's baseline / value end, as a fraction of the full footprint. */
6597
+ taper: ObliqueTaper;
6598
+ }
6599
+ /** How a shaped bar narrows along the value axis (1 = full footprint, 0 = a point). */
6600
+ interface ObliqueTaper {
6601
+ bottom: number;
6602
+ top: number;
6603
+ }
6604
+ /** A gridline segment in world space. */
6605
+ interface ObliqueGridline {
6606
+ from: readonly [number, number, number];
6607
+ to: readonly [number, number, number];
6608
+ }
6609
+ interface ObliqueChartLayout {
6610
+ horizontal: boolean;
6611
+ grouping: 'clustered' | 'stacked' | 'percentStacked' | 'standard';
6612
+ /** Chart px of world (0, 0, 0): the front-bottom-left corner of the floor. */
6613
+ origin: {
6614
+ x: number;
6615
+ y: number;
6616
+ };
6617
+ /** Screen shift per world unit of depth: `(sin rotY, -sin rotX)`. */
6618
+ shear: {
6619
+ x: number;
6620
+ y: number;
6621
+ };
6622
+ box: {
6623
+ w: number;
6624
+ h: number;
6625
+ d: number;
6626
+ };
6627
+ range: {
6628
+ min: number;
6629
+ max: number;
6630
+ majorUnit: number;
6631
+ };
6632
+ /** Chart px per value unit along the value axis. */
6633
+ valueScale: number;
6634
+ bars: ObliqueBar[];
6635
+ gridlines: ObliqueGridline[];
6636
+ labels: ObliqueLabel[];
6637
+ }
6638
+
6639
+ /**
6640
+ * Axis labels for the perspective 3D chart layout (`chart-3d-persp-layout.ts`),
6641
+ * placed where PowerPoint puts them (offsets measured on `gt/chart-10,11`):
6642
+ *
6643
+ * - Value labels: right-aligned 8pt left of the box's front-left edge.
6644
+ * - Category labels: centred below the front floor edge, 9pt left and 17pt
6645
+ * down from their point on it.
6646
+ * - Series (depth-row) labels: left-aligned off the right floor edge, 9pt right
6647
+ * and 4pt up from their row's centre on it.
6648
+ *
6649
+ * @module chart-3d-persp-labels
6650
+ */
6651
+
6652
+ /** One label, in chart px. */
6653
+ interface PerspLabel {
6654
+ role: 'value' | 'category' | 'series';
6655
+ text: string;
6656
+ x: number;
6657
+ y: number;
6658
+ anchor: 'start' | 'middle' | 'end';
6659
+ fontSize: number;
6660
+ }
6661
+
6662
+ /**
6663
+ * PowerPoint's perspective 3D chart camera (`c:view3D/@rAngAx=0`: line3D,
6664
+ * area3D, surface3D), as a pure projection plus its three.js camera.
6665
+ *
6666
+ * Fitted to PowerPoint's own exports of the three-d-parity deck: the ends and
6667
+ * corners of every wall gridline in `gt/chart-10..12,16` were traced and a
6668
+ * camera fitted to them (0.4-2pt RMS per chart):
6669
+ *
6670
+ * - The plot is a box `w x h x d` (x categories, y values, z depth away from
6671
+ * the viewer). It is yawed by `rotY` about its vertical centre line, then
6672
+ * pitched toward the viewer by `0.92 * rotX` (the fitted pitch was
6673
+ * 13.6-14.0 degrees for every `rotX = 15` chart).
6674
+ * - The camera looks at the box centre from `diagonal / (2 tan(fov / 2))`
6675
+ * away, `fov` being `c:view3D/c:perspective` in degrees (default 30): the
6676
+ * box's bounding sphere just fills the field of view. The fitted distances
6677
+ * were 1.8-1.9 box diagonals.
6678
+ *
6679
+ * A box point `(x, y, z)` (origin at the front-bottom-left corner) lands at
6680
+ * chart px `(cx + f X / Z, cy - f Y / Z)`, `(X, Y, Z)` being the point in
6681
+ * camera space; {@link fitPerspView} picks `f`, `cx`, `cy` so the box fills a
6682
+ * target rect.
6683
+ *
6684
+ * @module chart-3d-persp-view
6685
+ */
6686
+
6687
+ interface PerspBox {
6688
+ w: number;
6689
+ h: number;
6690
+ d: number;
6691
+ }
6692
+ interface PerspCamera {
6693
+ box: PerspBox;
6694
+ /** Yaw (`rotY`) in radians: positive brings the box's right end toward the viewer. */
6695
+ yaw: number;
6696
+ /** Pitch in radians: positive tips the top of the box away (the viewer looks down). */
6697
+ pitch: number;
6698
+ /** Camera distance from the box centre, world units. */
6699
+ dist: number;
6700
+ }
6701
+ interface PerspView extends PerspCamera {
6702
+ /** Focal length: chart px per world unit at unit depth. */
6703
+ focal: number;
6704
+ /** Chart px of the box centre. */
6705
+ cx: number;
6706
+ cy: number;
6707
+ }
6708
+
6709
+ /**
6710
+ * PowerPoint's perspective 3D chart layout (`c:view3D/@rAngAx=0`) for the
6711
+ * cartesian families (line3D, area3D, surface3D): the plot box, the camera
6712
+ * that frames it (`chart-3d-persp-view.ts`), the value axis, where each
6713
+ * category and depth row sits, and the wall gridlines.
6714
+ *
6715
+ * Calibrated against `gt/chart-10..13,16`:
6716
+ *
6717
+ * - The box is 1 unit wide (categories), `boxHeight` tall and one category
6718
+ * slot deep per depth row: a mark (area slab, line ribbon) is
6719
+ * `slot / (1 + gapWidth)` deep and each row `mark * (1 + gapDepth)`, which
6720
+ * with the 150/150 defaults is exactly one slot (fitted: 0.94-1.04).
6721
+ * `standard` grouping (and line3D) gives each series a row, series 1 in
6722
+ * front; stacked groupings share one row. A surface spans the whole floor.
6723
+ * - Categories sit at the slot centres (`c:crossBetween="between"`) or on the
6724
+ * slot edges, first and last on the walls (`midCat`, area and surface's
6725
+ * default).
6726
+ * - The value axis has no headroom (data topping out at 35 gets 0..35).
6727
+ * - The box fills a plot rect calibrated from the same exports, centred and
6728
+ * floor-aligned; walls carry gridlines only, the floor its two outer edges.
6729
+ *
6730
+ * @module chart-3d-persp-layout
6731
+ */
6732
+
6733
+ type PerspKind = 'line' | 'area' | 'surface' | 'bar';
6734
+ type PerspGrouping = 'standard' | 'clustered' | 'stacked' | 'percentStacked';
6735
+ /** A gridline segment in box space. */
6736
+ interface PerspGridline {
6737
+ from: readonly [number, number, number];
6738
+ to: readonly [number, number, number];
6739
+ }
6740
+ interface PerspChartLayout {
6741
+ kind: PerspKind;
6742
+ grouping: PerspGrouping;
6743
+ view: PerspView;
6744
+ range: {
6745
+ min: number;
6746
+ max: number;
6747
+ majorUnit: number;
6748
+ };
6749
+ /** Box units per value unit. */
6750
+ valueScale: number;
6751
+ /** Box x of each category. */
6752
+ categoryX: number[];
6753
+ /** Number of depth rows and each row's depth. */
6754
+ rows: number;
6755
+ rowDepth: number;
6756
+ /** Depth of a slab or ribbon, centred in its row. */
6757
+ markDepth: number;
6758
+ /** Series colours, by series index. */
6759
+ colors: string[];
6760
+ gridlines: PerspGridline[];
6761
+ labels: PerspLabel[];
6762
+ }
6763
+
6764
+ /**
6765
+ * PowerPoint's 3-D Pie (`c:pie3DChart`) as a disc in the perspective chart
6766
+ * camera (`chart-3d-persp-view.ts`), fitted to `gt/chart-14,15`:
6767
+ *
6768
+ * - The pie is a puck of radius 1 and thickness `0.23` (box `2 x 0.23 x 2`,
6769
+ * scaled by `c:view3D/@hPercent`), pitched `0.91 * rotX` toward the viewer
6770
+ * (27.2 degrees fitted for rotX 30) and seen from `1.38` box diagonals: a
6771
+ * closer camera than the cartesian charts use, so the front of the pie is
6772
+ * visibly larger than the back.
6773
+ * - The first slice starts at 12 o'clock (plus `c:firstSliceAng`) and slices
6774
+ * run clockwise seen from above.
6775
+ * - The unexploded puck fits the plot rect; exploding shrinks the radius by
6776
+ * `1 / (1 + explosion)` and moves each slice out along its bisector by its
6777
+ * own explosion, so an exploded pie keeps the same footprint.
6778
+ *
6779
+ * @module chart-3d-pie-layout
6780
+ */
6781
+
6782
+ interface PieSlice {
6783
+ pointIndex: number;
6784
+ value: number;
6785
+ color: string;
6786
+ /** Clockwise from 12 o'clock, radians. */
6787
+ startAngle: number;
6788
+ endAngle: number;
6789
+ /** Box-space offset of the exploded slice. */
6790
+ offset: {
6791
+ x: number;
6792
+ z: number;
6793
+ };
6794
+ }
6795
+ interface PieChartLayout {
6796
+ view: PerspView;
6797
+ /** Box-space centre of the pie's top face (its bottom face sits on y = 0). */
6798
+ center: {
6799
+ x: number;
6800
+ y: number;
6801
+ z: number;
6802
+ };
6803
+ radius: number;
6804
+ thickness: number;
6805
+ slices: PieSlice[];
6806
+ }
6807
+
6387
6808
  /**
6388
6809
  * chart-3d-projection.ts: resolve a chart's `c:view3D` into the projection
6389
6810
  * PowerPoint actually draws it with.
@@ -6616,43 +7037,29 @@ interface SurfaceChart3DSceneOptions {
6616
7037
  */
6617
7038
 
6618
7039
  /**
6619
- * One `bar3D` box: front-face rectangle in the flat 2D view-model's own SVG
6620
- * pixel space (already gap-width/clustering/stacking-correct), extruded
6621
- * backward in world Z by `depthMagnitude`.
7040
+ * A right-angle-axes `bar3D` chart laid out as a real box in world space
7041
+ * (walls, gridlines, bars, axis labels); see `chart-3d-oblique-layout.ts`.
6622
7042
  */
6623
- interface Chart3DBarBox {
6624
- x: number;
6625
- y: number;
6626
- w: number;
6627
- h: number;
6628
- color: string;
6629
- seriesIndex: number;
6630
- categoryIndex: number;
6631
- /** The point's authored value (hover tooltip, drag start). */
6632
- value: number;
6633
- shape: PptxBar3DShape | undefined;
6634
- /**
6635
- * World-Z extrusion depth (SVG px units), the SAME quantity the flat 2D
6636
- * fallback's `chart-3d-depth.ts#computeDepthVector` uses for its
6637
- * `magnitude`. Every box in a supported (`clustered` / `stacked` /
6638
- * `percentStacked`) grouping shares one chart-wide depth: those groupings
6639
- * keep every series COPLANAR (one Z plane), matching PowerPoint's own
6640
- * `gt/chart-01.webp` (no visible per-series depth separation). `standard`
6641
- * grouping (each series its own full depth ROW, see `gt/chart-04.webp`)
6642
- * is NOT yet modelled; see the chart track's progress log.
6643
- */
6644
- depthMagnitude: number;
7043
+ interface Chart3DObliqueGeometry {
7044
+ kind: 'oblique';
7045
+ layout: ObliqueChartLayout;
6645
7046
  }
6646
- interface Chart3DBarGeometry {
6647
- kind: 'bar';
6648
- boxes: readonly Chart3DBarBox[];
7047
+ /** A perspective (`rAngAx=0`) line / area chart on PowerPoint's box (`chart-3d-persp-layout.ts`). */
7048
+ interface Chart3DPerspGeometry {
7049
+ kind: 'perspective';
7050
+ layout: PerspChartLayout;
6649
7051
  }
6650
- /** `null` until a chart type/grouping's oblique geometry is implemented; the scene then uses {@link Chart3DSpec.perspective}. */
6651
- type Chart3DGeometry = Chart3DBarGeometry | null;
7052
+ /** A 3-D Pie on PowerPoint's fitted perspective camera (`chart-3d-pie-layout.ts`). */
7053
+ interface Chart3DPieGeometry {
7054
+ kind: 'pie';
7055
+ layout: PieChartLayout;
7056
+ }
7057
+ /** `null` until a chart type's geometry is implemented; the scene then uses {@link Chart3DSpec.perspective}. */
7058
+ type Chart3DGeometry = Chart3DObliqueGeometry | Chart3DPerspGeometry | Chart3DPieGeometry | null;
6652
7059
  /**
6653
7060
  * The perspective scene a chart falls back to when the oblique geometry does
6654
- * not cover it yet (line/area/pie/surface, and bar3D's `standard` grouping,
6655
- * horizontal bars and round shapes). Each is a hosted scene module from the
7061
+ * not cover it (line/area/pie/surface, and a bar3D chart without right-angle
7062
+ * axes). Each is a hosted scene module from the
6656
7063
  * pre-`<pptx-three-view>` renderer, now drawn through the shared renderer.
6657
7064
  */
6658
7065
  type Chart3DPerspectiveScene = {
@@ -6761,6 +7168,61 @@ declare function canAddTopLevelNode(layout: SmartArtLayoutType | undefined, topL
6761
7168
  /** Whether removing a top-level node keeps the count at or above the min. */
6762
7169
  declare function canRemoveTopLevelNode(layout: SmartArtLayoutType | undefined, topLevelCount: number): boolean;
6763
7170
 
7171
+ /**
7172
+ * SVG gradient paint servers for cached SmartArt drawing shapes (`a:gradFill`).
7173
+ * Split out of `smartart-drawing.ts`.
7174
+ *
7175
+ * @module render/smartart-drawing-gradient
7176
+ */
7177
+
7178
+ /** One stop of a cached shape's gradient fill, ready to place as an SVG `<stop>`. */
7179
+ interface RenderedGradientStop {
7180
+ /** Percentage offset, e.g. `"37%"`. */
7181
+ offset: string;
7182
+ color: string;
7183
+ opacity?: number;
7184
+ }
7185
+ /**
7186
+ * A gradient paint server for a cached shape, in SVG terms.
7187
+ *
7188
+ * The OOXML angle is already converted to the axis endpoints here, because a
7189
+ * gradient is not expressible as a plain `fill` string: the binding has to emit
7190
+ * a `<defs>` entry and reference it. Keeping the geometry on this side means the
7191
+ * conversion happens once instead of once per binding.
7192
+ */
7193
+ interface RenderedGradient {
7194
+ /** Element id to emit and reference; unique within the diagram. */
7195
+ id: string;
7196
+ kind: 'linear' | 'radial';
7197
+ /** Axis endpoints as percentages (`kind === 'linear'`). */
7198
+ x1?: string;
7199
+ y1?: string;
7200
+ x2?: string;
7201
+ y2?: string;
7202
+ /** Centre and radius as percentages (`kind === 'radial'`). */
7203
+ cx?: string;
7204
+ cy?: string;
7205
+ r?: string;
7206
+ stops: RenderedGradientStop[];
7207
+ }
7208
+
7209
+ /**
7210
+ * The SVG `viewBox` that fits a SmartArt drawing's cached shapes. Split out of
7211
+ * `smartart-drawing.ts`.
7212
+ *
7213
+ * @module render/smartart-drawing-viewbox
7214
+ */
7215
+
7216
+ /** SVG `viewBox` bounding-box derived from all drawing shapes. */
7217
+ interface DrawingViewBox {
7218
+ minX: number;
7219
+ minY: number;
7220
+ width: number;
7221
+ height: number;
7222
+ }
7223
+ /** Compute the SVG viewBox that fits all drawing shapes, rebasing to (0, 0). */
7224
+ declare function computeDrawingViewBox(shapes: readonly PptxSmartArtDrawingShape[]): DrawingViewBox;
7225
+
6764
7226
  /**
6765
7227
  * Line layout for centred SVG labels (SmartArt nodes and cached shapes).
6766
7228
  *
@@ -6793,6 +7255,7 @@ interface SvgTextLine {
6793
7255
 
6794
7256
  /** Built-in named colour palettes (mirrors the Vue/React `PALETTES`). */
6795
7257
  declare const PALETTES: Record<SmartArtColorScheme, string[]>;
7258
+
6796
7259
  declare const DEFAULT_PALETTE: string[];
6797
7260
  /** Pick a colour from `palette`, wrapping `index` around its length. */
6798
7261
  declare function paletteColour(index: number, palette: string[]): string;
@@ -6813,36 +7276,6 @@ declare function buildChromeStyle(chrome: PptxSmartArtChrome | undefined): CssSt
6813
7276
  * primitive cannot leave four bindings behind.
6814
7277
  */
6815
7278
  type RenderedShapeKind = 'image' | 'ellipse' | 'path' | 'rect';
6816
- /** One stop of a cached shape's gradient fill, ready to place as an SVG `<stop>`. */
6817
- interface RenderedGradientStop {
6818
- /** Percentage offset, e.g. `"37%"`. */
6819
- offset: string;
6820
- color: string;
6821
- opacity?: number;
6822
- }
6823
- /**
6824
- * A gradient paint server for a cached shape, in SVG terms.
6825
- *
6826
- * The OOXML angle is already converted to the axis endpoints here, because a
6827
- * gradient is not expressible as a plain `fill` string: the binding has to emit
6828
- * a `<defs>` entry and reference it. Keeping the geometry on this side means the
6829
- * conversion happens once instead of once per binding.
6830
- */
6831
- interface RenderedGradient {
6832
- /** Element id to emit and reference; unique within the diagram. */
6833
- id: string;
6834
- kind: 'linear' | 'radial';
6835
- /** Axis endpoints as percentages (`kind === 'linear'`). */
6836
- x1?: string;
6837
- y1?: string;
6838
- x2?: string;
6839
- y2?: string;
6840
- /** Centre and radius as percentages (`kind === 'radial'`). */
6841
- cx?: string;
6842
- cy?: string;
6843
- r?: string;
6844
- stops: RenderedGradientStop[];
6845
- }
6846
7279
  /** Projected view-model for a single pre-computed drawing shape. */
6847
7280
  interface RenderedShape {
6848
7281
  key: string;
@@ -6865,6 +7298,11 @@ interface RenderedShape {
6865
7298
  cy: number;
6866
7299
  /** Paint for the body, or `'none'` when the shape declares `a:noFill`. */
6867
7300
  fill: string;
7301
+ /**
7302
+ * Opacity (0..1) to paint a solid {@link fill} at, from the cached colour's
7303
+ * `a:alpha`; absent when opaque. Maps onto SVG `fill-opacity`.
7304
+ */
7305
+ fillOpacity?: number;
6868
7306
  stroke: string;
6869
7307
  strokeWidth: number;
6870
7308
  transform: string | undefined;
@@ -6892,15 +7330,6 @@ interface RenderedShape {
6892
7330
  fontWeight?: number;
6893
7331
  fontStyle?: 'normal' | 'italic';
6894
7332
  }
6895
- /** SVG `viewBox` bounding-box derived from all drawing shapes. */
6896
- interface DrawingViewBox {
6897
- minX: number;
6898
- minY: number;
6899
- width: number;
6900
- height: number;
6901
- }
6902
- /** Compute the SVG viewBox that fits all drawing shapes, rebasing to (0, 0). */
6903
- declare function computeDrawingViewBox(shapes: readonly PptxSmartArtDrawingShape[]): DrawingViewBox;
6904
7333
  /**
6905
7334
  * Project raw `PptxSmartArtDrawingShape`s into `RenderedShape` view-models,
6906
7335
  * rebasing positions relative to the viewBox origin.
@@ -21661,6 +22090,8 @@ declare class AnimationAuthorPanelComponent {
21661
22090
  protected readonly elementKey: _angular_core.Signal<string>;
21662
22091
  /** The animation entry for the currently selected element, if any. */
21663
22092
  protected readonly current: _angular_core.Signal<PptxElementAnimation | undefined>;
22093
+ /** Unset curve shows as `linear`: that is what the writer saves and PowerPoint plays. */
22094
+ protected readonly currentTimingCurve: _angular_core.Signal<pptx_viewer_core.PptxAnimationTimingCurve>;
21664
22095
  /** True when the element has at least one effect (entrance/exit/emphasis). */
21665
22096
  protected readonly currentHasAnimation: _angular_core.Signal<boolean>;
21666
22097
  /** True when the active preset exposes a direction picker. */
@@ -23710,7 +24141,7 @@ declare class AccountPageComponent {
23710
24141
  readonly accountAuth: _angular_core.InputSignal<AccountAuthConfig | undefined>;
23711
24142
  private readonly translate;
23712
24143
  protected readonly swatches: readonly string[];
23713
- protected readonly version = "4.6.0";
24144
+ protected readonly version = "4.7.0";
23714
24145
  protected readonly profile: _angular_core.WritableSignal<ViewerProfile>;
23715
24146
  protected readonly initial: _angular_core.Signal<string>;
23716
24147
  protected readonly usage: _angular_core.WritableSignal<LocalStorageUsageSummary | null>;