pptx-react-viewer 4.6.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.
- package/CHANGELOG.md +86 -0
- package/dist/{AiChatPanel-3C7GM6ZF.js → AiChatPanel-4LMJIJUU.js} +28 -28
- package/dist/AiChatPanel-4LMJIJUU.js.br +0 -0
- package/dist/AiChatPanel-4LMJIJUU.js.gz +0 -0
- package/dist/{AiChatPanel-L7DBCWE3.mjs → AiChatPanel-XWYLYN26.mjs} +4 -4
- package/dist/AiChatPanel-XWYLYN26.mjs.br +0 -0
- package/dist/AiChatPanel-XWYLYN26.mjs.gz +0 -0
- package/dist/{Model3DScene-IJ7YYTYU.mjs → Model3DScene-N6IZ7Q57.mjs} +1 -1
- package/dist/Model3DScene-N6IZ7Q57.mjs.br +0 -0
- package/dist/Model3DScene-N6IZ7Q57.mjs.gz +0 -0
- package/dist/{Model3DScene-USKNPWWH.js → Model3DScene-YAPQ5BCI.js} +2 -2
- package/dist/{Model3DScene-USKNPWWH.js.br → Model3DScene-YAPQ5BCI.js.br} +0 -0
- package/dist/Model3DScene-YAPQ5BCI.js.gz +0 -0
- package/dist/{chunk-ZAQFTO4P.mjs → chunk-KHEJXP4I.mjs} +1175 -149
- package/dist/chunk-KHEJXP4I.mjs.br +0 -0
- package/dist/chunk-KHEJXP4I.mjs.gz +0 -0
- package/dist/{chunk-3JUZOKFI.js → chunk-LTBTG2QB.js} +108 -96
- package/dist/chunk-LTBTG2QB.js.br +0 -0
- package/dist/chunk-LTBTG2QB.js.gz +0 -0
- package/dist/{chunk-ICEZL4TM.mjs → chunk-NPZOVIHG.mjs} +40855 -16211
- package/dist/chunk-NPZOVIHG.mjs.br +0 -0
- package/dist/chunk-NPZOVIHG.mjs.gz +0 -0
- package/dist/{chunk-DFSWCVRW.js → chunk-NV2H57Q4.js} +3083 -2057
- package/dist/chunk-NV2H57Q4.js.br +0 -0
- package/dist/chunk-NV2H57Q4.js.gz +0 -0
- package/dist/{chunk-VCAQSSGD.mjs → chunk-Q4XJSJYI.mjs} +1 -1
- package/dist/chunk-Q4XJSJYI.mjs.br +0 -0
- package/dist/chunk-Q4XJSJYI.mjs.gz +0 -0
- package/dist/{chunk-IBHIXBC5.js → chunk-Q7NWWIPQ.js} +890 -1091
- package/dist/chunk-Q7NWWIPQ.js.br +0 -0
- package/dist/chunk-Q7NWWIPQ.js.gz +0 -0
- package/dist/{chunk-Y4QUVWZC.js → chunk-SAYZSUNQ.js} +315 -274
- package/dist/chunk-SAYZSUNQ.js.br +0 -0
- package/dist/chunk-SAYZSUNQ.js.gz +0 -0
- package/dist/{chunk-INX3E37P.mjs → chunk-SOMUGI3Y.mjs} +84 -286
- package/dist/chunk-SOMUGI3Y.mjs.br +0 -0
- package/dist/chunk-SOMUGI3Y.mjs.gz +0 -0
- package/dist/{chunk-K6QHGABT.mjs → chunk-SSXGPYBF.mjs} +109 -68
- package/dist/chunk-SSXGPYBF.mjs.br +0 -0
- package/dist/chunk-SSXGPYBF.mjs.gz +0 -0
- package/dist/{chunk-5V5SMT5A.js → chunk-UTP22QYH.js} +5 -5
- package/dist/chunk-UTP22QYH.js.br +0 -0
- package/dist/chunk-UTP22QYH.js.gz +0 -0
- package/dist/{chunk-FZSYLXJT.js → chunk-YF2BQIW3.js} +40903 -16217
- package/dist/chunk-YF2BQIW3.js.br +0 -0
- package/dist/chunk-YF2BQIW3.js.gz +0 -0
- package/dist/{chunk-OOO4JL2N.mjs → chunk-YPDPSXPK.mjs} +108 -96
- package/dist/chunk-YPDPSXPK.mjs.br +0 -0
- package/dist/chunk-YPDPSXPK.mjs.gz +0 -0
- package/dist/i18n/de.cjs +134 -117
- package/dist/i18n/de.cjs.br +0 -0
- package/dist/i18n/de.cjs.gz +0 -0
- package/dist/i18n/de.mjs +134 -117
- package/dist/i18n/de.mjs.br +0 -0
- package/dist/i18n/de.mjs.gz +0 -0
- package/dist/i18n/es.cjs +134 -117
- package/dist/i18n/es.cjs.br +0 -0
- package/dist/i18n/es.cjs.gz +0 -0
- package/dist/i18n/es.mjs +134 -117
- package/dist/i18n/es.mjs.br +0 -0
- package/dist/i18n/es.mjs.gz +0 -0
- package/dist/i18n/fr.cjs +134 -117
- package/dist/i18n/fr.cjs.br +0 -0
- package/dist/i18n/fr.cjs.gz +0 -0
- package/dist/i18n/fr.mjs +134 -117
- package/dist/i18n/fr.mjs.br +0 -0
- package/dist/i18n/fr.mjs.gz +0 -0
- package/dist/i18n/zh-CN.cjs +111 -99
- package/dist/i18n/zh-CN.cjs.br +0 -0
- package/dist/i18n/zh-CN.cjs.gz +0 -0
- package/dist/i18n/zh-CN.mjs +111 -99
- package/dist/i18n/zh-CN.mjs.br +0 -0
- package/dist/i18n/zh-CN.mjs.gz +0 -0
- package/dist/i18n.js +4 -4
- package/dist/i18n.js.br +0 -0
- package/dist/i18n.js.gz +0 -0
- package/dist/i18n.mjs +1 -1
- package/dist/i18n.mjs.br +0 -0
- package/dist/i18n.mjs.gz +0 -0
- package/dist/index.d.ts +276 -18
- package/dist/index.js +63 -63
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +6 -6
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/internals.d.ts +329 -18
- package/dist/internals.js +105 -105
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/internals.mjs +4 -4
- package/dist/internals.mjs.br +0 -0
- package/dist/internals.mjs.gz +0 -0
- package/dist/pptx-viewer.css +1 -1
- package/dist/pptx-viewer.css.br +0 -0
- package/dist/pptx-viewer.css.gz +0 -0
- package/dist/viewer/index.d.ts +231 -16
- package/dist/viewer/index.js +27 -27
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +6 -6
- package/dist/viewer/index.mjs.br +2 -3
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +1 -1
- package/dist/AiChatPanel-3C7GM6ZF.js.br +0 -0
- package/dist/AiChatPanel-3C7GM6ZF.js.gz +0 -0
- package/dist/AiChatPanel-L7DBCWE3.mjs.br +0 -0
- package/dist/AiChatPanel-L7DBCWE3.mjs.gz +0 -0
- package/dist/Model3DScene-IJ7YYTYU.mjs.br +0 -0
- package/dist/Model3DScene-IJ7YYTYU.mjs.gz +0 -0
- package/dist/Model3DScene-USKNPWWH.js.gz +0 -0
- package/dist/chunk-3JUZOKFI.js.br +0 -0
- package/dist/chunk-3JUZOKFI.js.gz +0 -0
- package/dist/chunk-5V5SMT5A.js.br +0 -0
- package/dist/chunk-5V5SMT5A.js.gz +0 -0
- package/dist/chunk-DFSWCVRW.js.br +0 -0
- package/dist/chunk-DFSWCVRW.js.gz +0 -0
- package/dist/chunk-FZSYLXJT.js.br +0 -0
- package/dist/chunk-FZSYLXJT.js.gz +0 -0
- package/dist/chunk-IBHIXBC5.js.br +0 -0
- package/dist/chunk-IBHIXBC5.js.gz +0 -0
- package/dist/chunk-ICEZL4TM.mjs.br +0 -0
- package/dist/chunk-ICEZL4TM.mjs.gz +0 -0
- package/dist/chunk-INX3E37P.mjs.br +0 -0
- package/dist/chunk-INX3E37P.mjs.gz +0 -0
- package/dist/chunk-K6QHGABT.mjs.br +0 -0
- package/dist/chunk-K6QHGABT.mjs.gz +0 -0
- package/dist/chunk-OOO4JL2N.mjs.br +0 -0
- package/dist/chunk-OOO4JL2N.mjs.gz +0 -0
- package/dist/chunk-VCAQSSGD.mjs.br +0 -0
- package/dist/chunk-VCAQSSGD.mjs.gz +0 -0
- package/dist/chunk-Y4QUVWZC.js.br +0 -0
- package/dist/chunk-Y4QUVWZC.js.gz +0 -0
- package/dist/chunk-ZAQFTO4P.mjs.br +0 -0
- package/dist/chunk-ZAQFTO4P.mjs.gz +0 -0
package/dist/internals.d.ts
CHANGED
|
@@ -1295,6 +1295,27 @@ interface ShapeStyle {
|
|
|
1295
1295
|
* `authored-shape-style.ts`'s `effectIsPurelyStyleMatrix`.
|
|
1296
1296
|
*/
|
|
1297
1297
|
inheritedEffectStyle?: ShapeStyle;
|
|
1298
|
+
/**
|
|
1299
|
+
* Set by a style-matrix pick (the Shape Styles gallery): the shape's own
|
|
1300
|
+
* `spPr` fill, outline and effects were replaced by `<p:style>`, so the
|
|
1301
|
+
* writer clears whatever the retained `spPr` still authored before it
|
|
1302
|
+
* writes the (now reference-owned) style. Never parsed; editor state only.
|
|
1303
|
+
*/
|
|
1304
|
+
styleMatrixReset?: boolean;
|
|
1305
|
+
}
|
|
1306
|
+
/**
|
|
1307
|
+
* The result of resolving a `<p:style>` block against the loaded theme.
|
|
1308
|
+
*
|
|
1309
|
+
* `shapeStyle` is exactly what the load pipeline would have produced for a
|
|
1310
|
+
* shape whose `spPr` authors nothing and whose `<p:style>` is `styleXml`:
|
|
1311
|
+
* the flat fill/outline/effect values a renderer needs, the reference indices
|
|
1312
|
+
* and colours the writer re-emits, and the inheritance baselines that tell the
|
|
1313
|
+
* writer to leave `spPr` empty while the flat values still agree with them.
|
|
1314
|
+
*/
|
|
1315
|
+
interface ResolvedStyleMatrix {
|
|
1316
|
+
shapeStyle: ShapeStyle;
|
|
1317
|
+
/** The text colour `<a:fontRef>` names, resolved to hex. */
|
|
1318
|
+
fontColor?: string;
|
|
1298
1319
|
}
|
|
1299
1320
|
//#endregion
|
|
1300
1321
|
//#region src/core/types/text.d.ts
|
|
@@ -1483,8 +1504,16 @@ interface TextStyle {
|
|
|
1483
1504
|
textOutlineWidth?: number;
|
|
1484
1505
|
/** Text outline colour as hex string (`a:rPr > a:ln > a:solidFill`). */
|
|
1485
1506
|
textOutlineColor?: string;
|
|
1507
|
+
/** Text outline dash preset (`a:rPr > a:ln > a:prstDash/@val`), e.g. `dash`; absent for solid. */
|
|
1508
|
+
textOutlineDash?: string;
|
|
1486
1509
|
/** When true, the text body has no fill (`a:rPr > a:noFill`), producing hollow/outline-only text. */
|
|
1487
1510
|
textFillNone?: boolean;
|
|
1511
|
+
/**
|
|
1512
|
+
* When true, the run authored an EMPTY `<a:effectLst/>`: an explicit "no
|
|
1513
|
+
* effects" override that blocks an inherited shadow or glow. Kept so a
|
|
1514
|
+
* rewrite re-emits it instead of letting the inherited effect return.
|
|
1515
|
+
*/
|
|
1516
|
+
textEffectsExplicitNone?: boolean;
|
|
1488
1517
|
/** Superscript/subscript baseline shift as percentage (`a:rPr/@baseline`). Positive = super, negative = sub. */
|
|
1489
1518
|
baseline?: number;
|
|
1490
1519
|
/** Character spacing in hundredths of a point (`a:rPr/@spc`). */
|
|
@@ -1518,6 +1547,25 @@ interface TextStyle {
|
|
|
1518
1547
|
textFillPatternForeground?: string;
|
|
1519
1548
|
/** Text-level pattern background colour. */
|
|
1520
1549
|
textFillPatternBackground?: string;
|
|
1550
|
+
/**
|
|
1551
|
+
* Raw `a:rPr > a:blipFill` XML, preserved verbatim for round-trip
|
|
1552
|
+
* serialization AND as the input to the image resolution pass that fills
|
|
1553
|
+
* in {@link textFillBlipUrl} (parsing a run's fill happens synchronously,
|
|
1554
|
+
* with no zip/relationship access at that point; resolving the blip to a
|
|
1555
|
+
* displayable URL needs both, so it happens in a later async pass over
|
|
1556
|
+
* the slide's parsed elements, mirroring how a shape's OWN image fill is
|
|
1557
|
+
* resolved). A picture-filled text run (`a:rPr > a:blipFill`) was
|
|
1558
|
+
* documented as handled ("Handles gradient fills, pattern fills, and
|
|
1559
|
+
* image fills on text runs") but never actually parsed, so it silently
|
|
1560
|
+
* fell through to the run's plain `color` and rendered solid black
|
|
1561
|
+
* (COM-verified: `audit-text` slide 13's "PICTURE FILL" run shows the
|
|
1562
|
+
* fill image through the glyphs in PowerPoint).
|
|
1563
|
+
*/
|
|
1564
|
+
textFillBlipXml?: XmlObject;
|
|
1565
|
+
/** Resolved displayable URL for {@link textFillBlipXml}, or the archive-relative path when unresolved (lazy decode). */
|
|
1566
|
+
textFillBlipUrl?: string;
|
|
1567
|
+
/** Tiling mode for {@link textFillBlipUrl} (`a:blipFill/a:tile` present -> 'tile', else 'stretch'). */
|
|
1568
|
+
textFillBlipMode?: 'stretch' | 'tile';
|
|
1521
1569
|
hyperlink?: string;
|
|
1522
1570
|
/** Relationship ID for the hyperlink (`a:hlinkClick/@r:id`) — preserved for round-trip serialization. */
|
|
1523
1571
|
hyperlinkRId?: string;
|
|
@@ -1603,6 +1651,13 @@ interface TextStyle {
|
|
|
1603
1651
|
position: number;
|
|
1604
1652
|
align: 'l' | 'ctr' | 'r' | 'dec';
|
|
1605
1653
|
leader?: 'none' | 'dot' | 'hyphen' | 'underscore';
|
|
1654
|
+
/**
|
|
1655
|
+
* True when the source spelled out the schema-default `@algn="l"`, so the
|
|
1656
|
+
* writer re-emits it instead of treating it as an omitted default.
|
|
1657
|
+
*/
|
|
1658
|
+
alignAuthored?: boolean;
|
|
1659
|
+
/** True when the source spelled out the schema-default `@leader="none"`. */
|
|
1660
|
+
leaderAuthored?: boolean;
|
|
1606
1661
|
}>;
|
|
1607
1662
|
/**
|
|
1608
1663
|
* True when the paragraph's own `a:pPr` authored an EMPTY `<a:tabLst/>`
|
|
@@ -1966,6 +2021,19 @@ interface TextStyle {
|
|
|
1966
2021
|
* convention used for {@link bulletInfo} / {@link endParaRunProperties}).
|
|
1967
2022
|
*/
|
|
1968
2023
|
paragraphDefaultRunPropertiesXml?: XmlObject;
|
|
2024
|
+
/**
|
|
2025
|
+
* The bullet colour / size / typeface children (`a:buClrTx`, `a:buClr`,
|
|
2026
|
+
* `a:buSzTx`, `a:buSzPct`, `a:buSzPts`, `a:buFontTx`, `a:buFont`) a
|
|
2027
|
+
* paragraph authored in its own `<a:pPr>` WITHOUT a bullet type
|
|
2028
|
+
* (`a:buNone` / `a:buChar` / `a:buAutoNum` / `a:buBlip`), captured
|
|
2029
|
+
* verbatim in source order. Such a paragraph restyles an inherited bullet
|
|
2030
|
+
* rather than declaring one, so its {@link BulletInfo} resolves from the
|
|
2031
|
+
* cascade and is (correctly) not written back; without this capture the
|
|
2032
|
+
* paragraph's own override vanished on every rewrite.
|
|
2033
|
+
*
|
|
2034
|
+
* Only meaningful on a paragraph's own authored properties.
|
|
2035
|
+
*/
|
|
2036
|
+
paragraphBulletPropertiesXml?: XmlObject;
|
|
1969
2037
|
}
|
|
1970
2038
|
/**
|
|
1971
2039
|
* Structured bullet metadata attached to the first {@link TextSegment}
|
|
@@ -2222,6 +2290,22 @@ interface TextSegment {
|
|
|
2222
2290
|
* Used by the renderer to apply font family, colour, etc. to the `<rt>` element.
|
|
2223
2291
|
*/
|
|
2224
2292
|
rubyStyle?: TextStyle;
|
|
2293
|
+
/**
|
|
2294
|
+
* The parsed `a:rubyPr` node, kept verbatim so its attributes (`hps`,
|
|
2295
|
+
* `hpsRaise`, `hpsBaseText`, `lid`, ...) round-trip exactly; only an
|
|
2296
|
+
* edited {@link rubyAlignment} is written over it on save.
|
|
2297
|
+
*/
|
|
2298
|
+
rubyPropertiesXml?: XmlObject;
|
|
2299
|
+
/**
|
|
2300
|
+
* What each of a ruby run's two base-side `a:rPr`s authored on its own:
|
|
2301
|
+
* `outer` is the containing `a:r`'s, `base` the `a:rubyBase` run's. The
|
|
2302
|
+
* flat {@link style} merges both for rendering; these let the writer give
|
|
2303
|
+
* each `a:rPr` back only its own properties (plus any later edit).
|
|
2304
|
+
*/
|
|
2305
|
+
rubyRunAuthoredStyles?: {
|
|
2306
|
+
outer?: TextStyle;
|
|
2307
|
+
base?: TextStyle;
|
|
2308
|
+
};
|
|
2225
2309
|
}
|
|
2226
2310
|
//#endregion
|
|
2227
2311
|
//#region src/core/types/element-base.d.ts
|
|
@@ -3234,6 +3318,26 @@ type PptxChartMarkerSymbol = 'circle' | 'dash' | 'diamond' | 'dot' | 'none' | 'p
|
|
|
3234
3318
|
*/
|
|
3235
3319
|
type PptxChartScatterStyle = 'none' | 'line' | 'lineMarker' | 'marker' | 'smooth' | 'smoothMarker';
|
|
3236
3320
|
/** Shape properties extracted from c:spPr for chart formatting. */
|
|
3321
|
+
/**
|
|
3322
|
+
* A render-ready gradient fill from a chart `c:spPr/a:gradFill` (chart area,
|
|
3323
|
+
* plot area or series). Positions are 0..100; a linear gradient's `angle` is
|
|
3324
|
+
* in degrees clockwise from left-to-right (`a:lin/@ang`); a radial (`a:path`)
|
|
3325
|
+
* gradient centres on `focalPoint` (0..1 fractions of the box), the middle
|
|
3326
|
+
* when absent.
|
|
3327
|
+
*/
|
|
3328
|
+
interface PptxChartGradientFill {
|
|
3329
|
+
type: 'linear' | 'radial';
|
|
3330
|
+
stops: Array<{
|
|
3331
|
+
color: string;
|
|
3332
|
+
position: number;
|
|
3333
|
+
opacity?: number;
|
|
3334
|
+
}>;
|
|
3335
|
+
angle?: number;
|
|
3336
|
+
focalPoint?: {
|
|
3337
|
+
x: number;
|
|
3338
|
+
y: number;
|
|
3339
|
+
};
|
|
3340
|
+
}
|
|
3237
3341
|
interface PptxChartShapeProps {
|
|
3238
3342
|
fillColor?: string;
|
|
3239
3343
|
strokeColor?: string;
|
|
@@ -3559,6 +3663,12 @@ interface PptxChartSeries {
|
|
|
3559
3663
|
*/
|
|
3560
3664
|
idx?: number;
|
|
3561
3665
|
values: number[];
|
|
3666
|
+
/**
|
|
3667
|
+
* Series gradient fill (`c:ser/c:spPr/a:gradFill`), painted on every mark
|
|
3668
|
+
* of the series that has no per-point override. Render-only: the series'
|
|
3669
|
+
* own `c:spPr` round-trips untouched.
|
|
3670
|
+
*/
|
|
3671
|
+
gradientFill?: PptxChartGradientFill;
|
|
3562
3672
|
/**
|
|
3563
3673
|
* Per-series x values from `c:ser/c:xVal` (scatter and bubble series only).
|
|
3564
3674
|
*
|
|
@@ -3733,6 +3843,12 @@ interface PptxChartFilteredSeries {
|
|
|
3733
3843
|
* and `c:dLblPos`.
|
|
3734
3844
|
*/
|
|
3735
3845
|
interface PptxChartDataLabelOptions {
|
|
3846
|
+
/** Label box fill/outline (`c:dLbls/c:spPr`), see `chart-data-label-box.ts`. */
|
|
3847
|
+
labelShape?: PptxChartShapeProps;
|
|
3848
|
+
/** Callout geometry of the label box (`c15:spPr/a:prstGeom/@prst`, e.g. `wedgeRectCallout`). */
|
|
3849
|
+
calloutShape?: string;
|
|
3850
|
+
/** The chart15 extension's `c15:showLeaderLines`, which wins for a moved label's leader line. */
|
|
3851
|
+
extLeaderLines?: boolean;
|
|
3736
3852
|
/** Show the numeric value (`c:showVal`). */
|
|
3737
3853
|
showValue?: boolean;
|
|
3738
3854
|
/** Show the category name (`c:showCatName`). */
|
|
@@ -3858,6 +3974,10 @@ interface PptxChartStyle {
|
|
|
3858
3974
|
chartAreaFill?: string;
|
|
3859
3975
|
/** Plot-area fill from `c:plotArea/c:spPr`. See {@link chartAreaFill}. */
|
|
3860
3976
|
plotAreaFill?: string;
|
|
3977
|
+
/** Chart-area gradient (`c:chartSpace/c:spPr/a:gradFill`); wins over {@link chartAreaFill}. */
|
|
3978
|
+
chartAreaGradient?: PptxChartGradientFill;
|
|
3979
|
+
/** Plot-area gradient (`c:plotArea/c:spPr/a:gradFill`); wins over {@link plotAreaFill}. */
|
|
3980
|
+
plotAreaGradient?: PptxChartGradientFill;
|
|
3861
3981
|
/** Whether data labels are shown. */
|
|
3862
3982
|
hasDataLabels?: boolean;
|
|
3863
3983
|
/** Chart-level data-label content/position options (when `hasDataLabels`). */
|
|
@@ -4097,6 +4217,14 @@ interface PptxChartData {
|
|
|
4097
4217
|
style?: PptxChartStyle;
|
|
4098
4218
|
/** Grouping mode for bar/area/line charts: 'clustered' | 'stacked' | 'percentStacked' */
|
|
4099
4219
|
grouping?: 'clustered' | 'stacked' | 'percentStacked';
|
|
4220
|
+
/**
|
|
4221
|
+
* The source `c:grouping` was `standard`, which {@link grouping} folds into
|
|
4222
|
+
* `'clustered'` (a 2D bar chart draws the two the same). A 3D chart draws
|
|
4223
|
+
* `standard` differently: each series on its own depth row. The writer
|
|
4224
|
+
* emits `standard` again while `grouping` is still `'clustered'`, so the
|
|
4225
|
+
* chart round-trips unchanged.
|
|
4226
|
+
*/
|
|
4227
|
+
groupingStandard?: boolean;
|
|
4100
4228
|
/**
|
|
4101
4229
|
* Whether the first (or only) series varies its point colours
|
|
4102
4230
|
* (`c:varyColors/@val`). Pie/doughnut default this on; single-series
|
|
@@ -5494,6 +5622,14 @@ interface PptxSmartArtNode {
|
|
|
5494
5622
|
* quick-style variation) applied to every other node.
|
|
5495
5623
|
*/
|
|
5496
5624
|
coherent3DOff?: boolean;
|
|
5625
|
+
/**
|
|
5626
|
+
* The layout variables PowerPoint recorded for each presentation node
|
|
5627
|
+
* this point drives (`dgm:prSet/@presName` -> `dgm:presLayoutVars`
|
|
5628
|
+
* variable -> `@val`), e.g. `{ hierRoot1: { hierBranch: 'l' } }` for an
|
|
5629
|
+
* org-chart manager set to "Left Hanging". Read-only: the presentation
|
|
5630
|
+
* points themselves round-trip verbatim.
|
|
5631
|
+
*/
|
|
5632
|
+
presLayoutVarsByName?: Record<string, Record<string, string>>;
|
|
5497
5633
|
/**
|
|
5498
5634
|
* Per-run text + run-properties for the node's first paragraph, captured at
|
|
5499
5635
|
* parse time. When the joined run text still equals {@link text} (the node
|
|
@@ -5563,6 +5699,16 @@ interface PptxSmartArtQuickStyleLabel {
|
|
|
5563
5699
|
name: string;
|
|
5564
5700
|
/** Theme-resolved `dgm:style` refs for this label's role, when available. */
|
|
5565
5701
|
resolvedStyle?: PptxSmartArtResolvedStyleRef;
|
|
5702
|
+
/**
|
|
5703
|
+
* The label's own `dgm:scene3d` (per-shape camera + light rig). PowerPoint
|
|
5704
|
+
* copies it onto a shape's cached `a:scene3d` unless it is the default
|
|
5705
|
+
* front camera with a `threePt` light (see `applySmartArtQuickStyle3d`).
|
|
5706
|
+
*/
|
|
5707
|
+
scene3d?: Pptx3DScene;
|
|
5708
|
+
/** The label's own `dgm:sp3d` (bevel / extrusion / contour / material); absent when empty. */
|
|
5709
|
+
shape3d?: Pptx3DShape;
|
|
5710
|
+
/** The label's `dgm:txPr/a:sp3d` label-text extrusion (Bird's Eye Scene). */
|
|
5711
|
+
text3d?: Text3DStyle;
|
|
5566
5712
|
}
|
|
5567
5713
|
/** CT_CTStyleLabel metadata from a color-transform definition. */
|
|
5568
5714
|
interface PptxSmartArtColorStyleLabel {
|
|
@@ -5630,9 +5776,10 @@ interface PptxSmartArtQuickStyle extends PptxSmartArtDefinitionMetadata {
|
|
|
5630
5776
|
* for the "Scene" quick styles (Brick, Flat, Metallic, Sunset, Bird's Eye
|
|
5631
5777
|
* Scene). One camera renders the whole diagram; per-shape `a:scene3d` is
|
|
5632
5778
|
* absent for those styles (see `PptxSmartArtDrawingShape.scene3d`). Each
|
|
5633
|
-
* `dgm:styleLbl` also carries its own per-label `dgm:scene3d`/`dgm:sp3d
|
|
5634
|
-
*
|
|
5635
|
-
*
|
|
5779
|
+
* `dgm:styleLbl` also carries its own per-label `dgm:scene3d`/`dgm:sp3d`
|
|
5780
|
+
* ({@link PptxSmartArtQuickStyleLabel.scene3d} / `shape3d` / `text3d`),
|
|
5781
|
+
* which PowerPoint bakes onto each cached shape; they are re-applied when a
|
|
5782
|
+
* structural edit regenerates the shapes.
|
|
5636
5783
|
*/
|
|
5637
5784
|
scene3d?: Pptx3DScene;
|
|
5638
5785
|
}
|
|
@@ -5763,6 +5910,11 @@ interface PptxSmartArtDrawingShape extends PptxCustomPathProperties {
|
|
|
5763
5910
|
fillNone?: boolean;
|
|
5764
5911
|
/** Solid fill colour (hex). */
|
|
5765
5912
|
fillColor?: string;
|
|
5913
|
+
/**
|
|
5914
|
+
* Opacity (0..1) of the solid fill, from the colour's `a:alpha` (Basic Venn
|
|
5915
|
+
* paints its circles at 50% so overlaps blend). Absent when opaque.
|
|
5916
|
+
*/
|
|
5917
|
+
fillOpacity?: number;
|
|
5766
5918
|
/**
|
|
5767
5919
|
* Gradient fill stops when the cached shape uses `a:gradFill`. Positions are
|
|
5768
5920
|
* 0..100 (percent). Renderers emit an SVG/CSS gradient instead of a flat box.
|
|
@@ -7736,7 +7888,15 @@ type PptxAnimationTimingCurve = 'ease' | 'ease-in' | 'ease-out' | 'linear';
|
|
|
7736
7888
|
/** Repeat mode for animations. */
|
|
7737
7889
|
type PptxAnimationRepeatMode = 'untilNextClick' | 'untilEndOfSlide';
|
|
7738
7890
|
/** Animation trigger type from OOXML `p:cTn`. */
|
|
7739
|
-
type PptxAnimationTrigger = 'onClick' | 'onShapeClick' | 'onHover' | 'afterPrevious' | 'withPrevious' | 'afterDelay'
|
|
7891
|
+
type PptxAnimationTrigger = 'onClick' | 'onShapeClick' | 'onHover' | 'afterPrevious' | 'withPrevious' | 'afterDelay' |
|
|
7892
|
+
/**
|
|
7893
|
+
* Starts when a media element's playback reaches a named bookmark
|
|
7894
|
+
* (PowerPoint's "Trigger > On Bookmark"). The media element is
|
|
7895
|
+
* {@link PptxElementAnimation.triggerShapeId} and the bookmark
|
|
7896
|
+
* {@link PptxElementAnimation.triggerBookmark}; saved as an interactive
|
|
7897
|
+
* sequence gated on `p:cond evt="onMediaBookmark"` with a `p14:bmkTgt`.
|
|
7898
|
+
*/
|
|
7899
|
+
'onMediaBookmark';
|
|
7740
7900
|
/**
|
|
7741
7901
|
* Native animation kind. The historic shape-targeted preset animations are
|
|
7742
7902
|
* implicitly the default kind (`undefined`). Media animations (`p:audio`,
|
|
@@ -7889,8 +8049,13 @@ interface PptxNativeAnimation {
|
|
|
7889
8049
|
target?: PptxAnimationTarget;
|
|
7890
8050
|
/** Trigger type. */
|
|
7891
8051
|
trigger?: PptxAnimationTrigger;
|
|
7892
|
-
/**
|
|
8052
|
+
/**
|
|
8053
|
+
* Shape ID that triggers this animation: the clicked shape of an
|
|
8054
|
+
* interactive sequence, or the media element of an `onMediaBookmark` one.
|
|
8055
|
+
*/
|
|
7893
8056
|
triggerShapeId?: string;
|
|
8057
|
+
/** Bookmark name an `onMediaBookmark` interactive sequence waits for. */
|
|
8058
|
+
triggerBookmark?: string;
|
|
7894
8059
|
/** Whether this effect belongs to an OOXML `interactiveSeq`. */
|
|
7895
8060
|
interactiveSequence?: boolean;
|
|
7896
8061
|
/** Whether `p:endSync/p:rtn[@val="all"]` makes that sequence replayable. */
|
|
@@ -8389,12 +8554,15 @@ interface PptxAttributeAnimation {
|
|
|
8389
8554
|
/**
|
|
8390
8555
|
* `p:anim/@_p14:bounceEnd` (Office 2010 `p14` extension attribute,
|
|
8391
8556
|
* MS-OI29500), normalized to a 0-1 fraction of this behaviour's own
|
|
8392
|
-
* duration. PowerPoint's
|
|
8393
|
-
*
|
|
8394
|
-
*
|
|
8395
|
-
*
|
|
8396
|
-
* the
|
|
8397
|
-
*
|
|
8557
|
+
* duration. PowerPoint's "Bounce End" effect option (COM:
|
|
8558
|
+
* `Effect.Timing.BounceEnd` + `BounceEndIntensity`) writes this on the
|
|
8559
|
+
* position-ramp `p:anim` node(s): the share of the duration spent
|
|
8560
|
+
* BOUNCING at the end. Measured from PowerPoint's own CreateVideo frames,
|
|
8561
|
+
* the travel completes at `1 - bounceEnd` and the rest is a damped
|
|
8562
|
+
* oscillation about the final value (see shared's `animation-bounce-end`).
|
|
8563
|
+
* Mirrored verbatim by PowerPoint onto the enclosing
|
|
8564
|
+
* `p:cTn/@_p14:presetBounceEnd`. Absent for every animation that doesn't
|
|
8565
|
+
* use this effect option (the overwhelming majority).
|
|
8398
8566
|
*/
|
|
8399
8567
|
bounceEnd?: number;
|
|
8400
8568
|
}
|
|
@@ -8572,9 +8740,24 @@ interface PptxElementAnimation {
|
|
|
8572
8740
|
durationMs?: number;
|
|
8573
8741
|
delayMs?: number;
|
|
8574
8742
|
order?: number;
|
|
8743
|
+
/**
|
|
8744
|
+
* The {@link order} the loader derived from the slide's `p:timing` tree for
|
|
8745
|
+
* an entry whose `pptx:editorMeta` record authored no `@order`. The tree
|
|
8746
|
+
* already expresses that position (and every load re-derives it), so the
|
|
8747
|
+
* writer omits `@order` while `order` still equals this value; a reorder
|
|
8748
|
+
* changes `order` and the attribute is written again. Load-time bookkeeping
|
|
8749
|
+
* only; never set it by hand.
|
|
8750
|
+
*/
|
|
8751
|
+
orderFromTimeline?: number;
|
|
8575
8752
|
trigger?: PptxAnimationTrigger;
|
|
8576
|
-
/**
|
|
8753
|
+
/**
|
|
8754
|
+
* Shape ID that triggers this animation: the shape clicked for
|
|
8755
|
+
* `onShapeClick`, or the media element whose bookmark fires it for
|
|
8756
|
+
* `onMediaBookmark`.
|
|
8757
|
+
*/
|
|
8577
8758
|
triggerShapeId?: string;
|
|
8759
|
+
/** Bookmark name (`p14:bmk/@name`) an `onMediaBookmark` trigger waits for. */
|
|
8760
|
+
triggerBookmark?: string;
|
|
8578
8761
|
timingCurve?: PptxAnimationTimingCurve;
|
|
8579
8762
|
repeatCount?: number;
|
|
8580
8763
|
repeatMode?: PptxAnimationRepeatMode;
|
|
@@ -11150,6 +11333,8 @@ interface IPptxHandlerRuntime {
|
|
|
11150
11333
|
updateThemeColorScheme(colorScheme: PptxThemeColorScheme): Promise<void>;
|
|
11151
11334
|
updateThemeFontScheme(fontScheme: PptxThemeFontScheme): Promise<void>;
|
|
11152
11335
|
updateThemeName(name: string): Promise<void>;
|
|
11336
|
+
/** Resolve a `<p:style>` node against the loaded theme (see PptxHandlerRuntimeStyleMatrixResolve). */
|
|
11337
|
+
resolveStyleMatrixReferences(styleXml: XmlObject): ResolvedStyleMatrix;
|
|
11153
11338
|
applyTheme(colorScheme: PptxThemeColorScheme, fontScheme: PptxThemeFontScheme, themeName?: string): Promise<void>;
|
|
11154
11339
|
load(data: ArrayBuffer, options?: PptxHandlerLoadOptions): Promise<PptxData>;
|
|
11155
11340
|
getChartDataForGraphicFrame(slidePath: string, graphicFrame: XmlObject | undefined): Promise<PptxChartData | undefined>;
|
|
@@ -11445,6 +11630,14 @@ declare class PptxHandlerCore {
|
|
|
11445
11630
|
* @param name - New display name for the theme.
|
|
11446
11631
|
*/
|
|
11447
11632
|
updateThemeName(name: string): Promise<void>;
|
|
11633
|
+
/**
|
|
11634
|
+
* Resolve a `<p:style>` block (`a:lnRef` / `a:fillRef` / `a:effectRef` /
|
|
11635
|
+
* `a:fontRef`) against the loaded theme, exactly as the load path would for
|
|
11636
|
+
* a shape whose `spPr` authors nothing. Apply the returned `shapeStyle` to a
|
|
11637
|
+
* shape and it renders like PowerPoint's Shape Styles entry and saves as a
|
|
11638
|
+
* bare `<p:style>` with an empty `spPr`, which is what PowerPoint writes.
|
|
11639
|
+
*/
|
|
11640
|
+
resolveStyleMatrixReferences(styleXml: XmlObject): ResolvedStyleMatrix;
|
|
11448
11641
|
/**
|
|
11449
11642
|
* Apply a complete theme in one call (colour scheme + font scheme + optional name).
|
|
11450
11643
|
*
|
|
@@ -12337,6 +12530,15 @@ interface PictureBulletMarker {
|
|
|
12337
12530
|
imageRelId?: string;
|
|
12338
12531
|
}
|
|
12339
12532
|
//#endregion
|
|
12533
|
+
//#region src/render/text-east-asian-breaks.d.ts
|
|
12534
|
+
/** Which of the two behaviours a paragraph asks for. */
|
|
12535
|
+
interface EastAsianBreakOptions {
|
|
12536
|
+
/** `a:pPr/@hangingPunct="1"`. */
|
|
12537
|
+
hangingPunctuation: boolean;
|
|
12538
|
+
/** `a:pPr/@eaLnBrk="0"`: break between any two East Asian characters. */
|
|
12539
|
+
breakAnywhere: boolean;
|
|
12540
|
+
}
|
|
12541
|
+
//#endregion
|
|
12340
12542
|
//#region src/render/text-run-meta.d.ts
|
|
12341
12543
|
/** A run's resolved hyperlink target. */
|
|
12342
12544
|
interface RunHyperlink {
|
|
@@ -12510,6 +12712,8 @@ interface ParagraphRun {
|
|
|
12510
12712
|
* `paragraph-run-build.ts`).
|
|
12511
12713
|
*/
|
|
12512
12714
|
underlineWordPieces?: ScriptFontPiece[];
|
|
12715
|
+
/** The advance-carrying space after a hanging `、`/`。` (`text-east-asian-breaks`). */
|
|
12716
|
+
hangingSpace?: true;
|
|
12513
12717
|
/**
|
|
12514
12718
|
* `a:reflection` mirrored-sibling wrapper style for this run (the text-run
|
|
12515
12719
|
* counterpart of a shape/picture's `ComputedEffectStyle.reflection`), or
|
|
@@ -12593,6 +12797,12 @@ interface RenderParagraph {
|
|
|
12593
12797
|
* break rules, rendered differently in the other four bindings.
|
|
12594
12798
|
*/
|
|
12595
12799
|
paragraphStyle?: RunStyle;
|
|
12800
|
+
/**
|
|
12801
|
+
* `@hangingPunct` / `@eaLnBrk="0"` as resolved for this paragraph. The runs
|
|
12802
|
+
* above already carry their pieces; React, which rebuilds each segment's
|
|
12803
|
+
* pieces inside one span, re-applies `splitEastAsianBreaks` from this.
|
|
12804
|
+
*/
|
|
12805
|
+
eastAsianBreaks?: EastAsianBreakOptions;
|
|
12596
12806
|
}
|
|
12597
12807
|
//#endregion
|
|
12598
12808
|
//#region src/render/inline-list-types.d.ts
|
|
@@ -13356,8 +13566,12 @@ interface PresentationInkStroke {
|
|
|
13356
13566
|
}
|
|
13357
13567
|
/** A logical editor command produced by one key press. */
|
|
13358
13568
|
type EditorKeyActionName = 'undo' | 'redo' | 'copy' | 'cut' | 'paste' | 'duplicate' | 'delete' | 'selectAll' | 'group' | 'ungroup' | 'nudge' | 'prevSlide' | 'nextSlide' | 'escape' | 'find' | 'findReplace' | 'toggleShortcuts' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify' | 'increaseFontSize' | 'decreaseFontSize' | 'copyFormat' | 'pasteFormat' | 'newSlide' | 'hyperlink' | 'clearFormatting' | 'cycleSelectionNext' | 'cycleSelectionPrev' | 'pasteSpecial';
|
|
13569
|
+
//#endregion
|
|
13570
|
+
//#region src/render/merge-shapes/merge-shapes-menu.d.ts
|
|
13571
|
+
/** The right-click command id for each operation. */
|
|
13572
|
+
type MergeShapesCommandId = 'merge-union' | 'merge-combine' | 'merge-fragment' | 'merge-intersect' | 'merge-subtract';
|
|
13359
13573
|
/** Every command a canvas context menu can offer, in no particular order. */
|
|
13360
|
-
type ContextMenuCommandId = 'copy' | 'cut' | 'paste' | 'duplicate' | 'edit-text' | 'bring-forward' | 'send-backward' | 'bring-front' | 'send-back' | 'ai-ask' | 'ai-fix' | 'comment' | 'hyperlink' | 'table-insert-row-above' | 'table-insert-row-below' | 'table-delete-row' | 'table-insert-col-left' | 'table-insert-col-right' | 'table-delete-col' | 'table-merge-selected' | 'table-merge-right' | 'table-merge-down' | 'table-split' | 'group' | 'ungroup' | 'save-as-picture' | 'edit-alt-text' | 'size-and-position' | 'format-shape' | 'delete';
|
|
13574
|
+
type ContextMenuCommandId = 'copy' | 'cut' | 'paste' | 'duplicate' | 'edit-text' | 'edit-points' | 'bring-forward' | 'send-backward' | 'bring-front' | 'send-back' | 'ai-ask' | 'ai-fix' | 'comment' | 'hyperlink' | 'table-insert-row-above' | 'table-insert-row-below' | 'table-delete-row' | 'table-insert-col-left' | 'table-insert-col-right' | 'table-delete-col' | 'table-merge-selected' | 'table-merge-right' | 'table-merge-down' | 'table-split' | 'group' | 'ungroup' | 'crop' | MergeShapesCommandId | 'save-as-picture' | 'edit-alt-text' | 'size-and-position' | 'format-shape' | 'delete';
|
|
13361
13575
|
//#endregion
|
|
13362
13576
|
//#region src/render/canvas-context-menu-commands.d.ts
|
|
13363
13577
|
/**
|
|
@@ -13621,7 +13835,7 @@ interface AuthoredSlideRange {
|
|
|
13621
13835
|
* whole control cluster (zoom in/out/fit, prev/next) rather than each button
|
|
13622
13836
|
* in it, matching how hosts actually want to hide/keep them as a unit.
|
|
13623
13837
|
*/
|
|
13624
|
-
type ToolbarButtonId = 'share' | 'broadcast' | 'export' | 'undo' | 'redo' | 'record' | 'notes' | 'fullscreen' | 'zoom' | 'navigation';
|
|
13838
|
+
type ToolbarButtonId = 'share' | 'broadcast' | 'export' | 'undo' | 'redo' | 'record' | 'notes' | 'fullscreen' | 'zoom' | 'navigation' | 'mergeShapes' | 'crop';
|
|
13625
13839
|
/** A top-level ribbon tab. `record` intentionally shares its id with the quick-access Record button above: both surface the same recording feature, so hiding one hides the other. */
|
|
13626
13840
|
type ToolbarTabId = 'file' | 'home' | 'insert' | 'draw' | 'design' | 'transitions' | 'animations' | 'slideShow' | 'record' | 'review' | 'view' | 'help';
|
|
13627
13841
|
type ToolbarActionId = ToolbarButtonId | ToolbarTabId;
|
|
@@ -13827,6 +14041,12 @@ interface PrintSettings {
|
|
|
13827
14041
|
*/
|
|
13828
14042
|
scaleToFit?: boolean;
|
|
13829
14043
|
}
|
|
14044
|
+
/** Every command the Edit Points right-click menu can offer. */
|
|
14045
|
+
type EditPointsCommandId = 'add-point' | 'delete-point' | 'delete-segment' | 'open-path' | 'close-path' | 'smooth-point' | 'straight-point' | 'corner-point' | 'straight-segment' | 'curved-segment' | 'exit';
|
|
14046
|
+
//#endregion
|
|
14047
|
+
//#region src/render/edit-points/freeform-tool-geometry.d.ts
|
|
14048
|
+
/** The two click-to-place drawing tools. */
|
|
14049
|
+
type FreeformToolKind = 'freeformShape' | 'curve';
|
|
13830
14050
|
//#endregion
|
|
13831
14051
|
//#region src/render/options/viewer-options-controls.d.ts
|
|
13832
14052
|
/**
|
|
@@ -13897,6 +14117,11 @@ interface ContextMenuCustomization {
|
|
|
13897
14117
|
hiddenElementCommands?: readonly ContextMenuCommandId[];
|
|
13898
14118
|
/** Entries to remove from the empty-canvas menu. */
|
|
13899
14119
|
hiddenCanvasCommands?: readonly CanvasContextMenuCommandId[];
|
|
14120
|
+
/**
|
|
14121
|
+
* Entries to remove from the Edit Points menu (right-click a vertex or a
|
|
14122
|
+
* segment while editing a shape's points).
|
|
14123
|
+
*/
|
|
14124
|
+
hiddenEditPointsCommands?: readonly EditPointsCommandId[];
|
|
13900
14125
|
/** Remove the element context menu entirely. */
|
|
13901
14126
|
disableElementMenu?: boolean;
|
|
13902
14127
|
/** Remove the empty-canvas context menu entirely. */
|
|
@@ -13926,7 +14151,12 @@ interface KeyboardCustomization {
|
|
|
13926
14151
|
*/
|
|
13927
14152
|
type ViewerPanelId = 'statusBar' | 'slidesPane' | 'inspector' | 'notes' | 'quickAccessToolbar' | 'titleBar';
|
|
13928
14153
|
/** Feature areas that can be switched off as a whole. */
|
|
13929
|
-
type ViewerFeatureId = 'ai' | 'collaboration' | 'comments' | 'presentMode';
|
|
14154
|
+
type ViewerFeatureId = 'ai' | 'collaboration' | 'comments' | 'presentMode' | 'editPoints';
|
|
14155
|
+
/**
|
|
14156
|
+
* The click-to-place drawing tools of Insert > Shapes > Lines: Freeform:
|
|
14157
|
+
* Shape and Curve.
|
|
14158
|
+
*/
|
|
14159
|
+
type ViewerDrawingToolId = FreeformToolKind;
|
|
13930
14160
|
/** Dialogs (and the entry points that open them) a host can remove. */
|
|
13931
14161
|
type ViewerDialogId = 'options' | 'share' | 'broadcast' | 'print' | 'export';
|
|
13932
14162
|
/** Export formats offered by the File > Export page. */
|
|
@@ -13949,6 +14179,8 @@ interface ViewerCustomization {
|
|
|
13949
14179
|
hiddenDialogs?: readonly ViewerDialogId[];
|
|
13950
14180
|
/** Export formats to remove from File > Export. */
|
|
13951
14181
|
hiddenExportFormats?: readonly ViewerExportFormatId[];
|
|
14182
|
+
/** Drawing tools to remove from the Insert > Shapes gallery. */
|
|
14183
|
+
hiddenDrawingTools?: readonly ViewerDrawingToolId[];
|
|
13952
14184
|
}
|
|
13953
14185
|
//#endregion
|
|
13954
14186
|
//#region src/render/options/viewer-options-constraints.d.ts
|
|
@@ -14042,6 +14274,8 @@ interface ResolvedCustomization {
|
|
|
14042
14274
|
hiddenBackstageCards: ReadonlySet<BackstageCardId>;
|
|
14043
14275
|
hiddenElementCommands: ReadonlySet<ContextMenuCommandId>;
|
|
14044
14276
|
hiddenCanvasCommands: ReadonlySet<CanvasContextMenuCommandId>;
|
|
14277
|
+
hiddenEditPointsCommands: ReadonlySet<EditPointsCommandId>;
|
|
14278
|
+
hiddenDrawingTools: ReadonlySet<ViewerDrawingToolId>;
|
|
14045
14279
|
elementMenuEnabled: boolean;
|
|
14046
14280
|
canvasMenuEnabled: boolean;
|
|
14047
14281
|
hiddenPanels: ReadonlySet<ViewerPanelId>;
|
|
@@ -14166,6 +14400,33 @@ interface ViewportFitOptions {
|
|
|
14166
14400
|
/** Positive fit-factor ceiling; null allows enlargement without a ceiling. */
|
|
14167
14401
|
maxFitScale?: number | null;
|
|
14168
14402
|
}
|
|
14403
|
+
/** The element fields an Edit Points commit writes. */
|
|
14404
|
+
type EditPointsElementPatch = Pick<ShapePptxElement, 'x' | 'y' | 'width' | 'height' | 'shapeType' | 'shapeAdjustments' | 'pathData' | 'pathWidth' | 'pathHeight' | 'customGeometryPaths' | 'customGeometryRawData' | 'customGeometryAdjustHandlesXY' | 'customGeometryAdjustHandlesPolar' | 'customGeometryConnectionSites' | 'customGeometryTextRect'>;
|
|
14405
|
+
//#endregion
|
|
14406
|
+
//#region src/render/picture-crop/crop-geometry.d.ts
|
|
14407
|
+
/** An axis-aligned rectangle in slide pixels. */
|
|
14408
|
+
interface CropRect {
|
|
14409
|
+
x: number;
|
|
14410
|
+
y: number;
|
|
14411
|
+
width: number;
|
|
14412
|
+
height: number;
|
|
14413
|
+
}
|
|
14414
|
+
/** The four `a:srcRect` insets as fractions of the image (negative pads). */
|
|
14415
|
+
interface CropInsets {
|
|
14416
|
+
cropLeft: number;
|
|
14417
|
+
cropTop: number;
|
|
14418
|
+
cropRight: number;
|
|
14419
|
+
cropBottom: number;
|
|
14420
|
+
}
|
|
14421
|
+
/** What a crop edit writes back onto the picture element. */
|
|
14422
|
+
type CropElementUpdate = CropInsets & CropRect;
|
|
14423
|
+
/** The snapshot a crop session restores on cancel. */
|
|
14424
|
+
interface CropSession {
|
|
14425
|
+
elementId: string;
|
|
14426
|
+
original: CropElementUpdate;
|
|
14427
|
+
/** Insets the picture did not carry at all (no `a:srcRect` opinion). */
|
|
14428
|
+
absentInsets: readonly (keyof CropInsets)[];
|
|
14429
|
+
}
|
|
14169
14430
|
//#endregion
|
|
14170
14431
|
//#region src/web-components/select-value.d.ts
|
|
14171
14432
|
/** Public DOM shape used by all bindings; the element is not a native select. */
|
|
@@ -14359,7 +14620,7 @@ interface CanvasContextMenuState {
|
|
|
14359
14620
|
y: number;
|
|
14360
14621
|
}
|
|
14361
14622
|
/** Identifies an action triggered from the element right-click context menu. */
|
|
14362
|
-
type ElementContextMenuAction = 'copy' | 'cut' | 'paste' | 'duplicate' | 'delete' | 'bring-forward' | 'send-backward' | 'bring-front' | 'send-back' | 'bringForward' | 'sendBackward' | 'bringToFront' | 'sendToBack' | 'comment' | 'addComment' | 'group' | 'ungroup' | 'editPoints' | 'editHyperlink' | 'edit-text' | 'save-as-picture' | 'edit-alt-text' | 'size-and-position' | 'format-shape';
|
|
14623
|
+
type ElementContextMenuAction = 'copy' | 'cut' | 'paste' | 'duplicate' | 'delete' | 'bring-forward' | 'send-backward' | 'bring-front' | 'send-back' | 'bringForward' | 'sendBackward' | 'bringToFront' | 'sendToBack' | 'comment' | 'addComment' | 'group' | 'ungroup' | 'editPoints' | 'edit-points' | 'editHyperlink' | 'edit-text' | 'save-as-picture' | 'edit-alt-text' | 'size-and-position' | 'format-shape';
|
|
14363
14624
|
/**
|
|
14364
14625
|
* State of an active marquee (rubber-band) selection rectangle.
|
|
14365
14626
|
* Created when the user clicks and drags on the canvas background,
|
|
@@ -14448,6 +14709,8 @@ interface ToolbarProps {
|
|
|
14448
14709
|
tableEditorState?: TableCellEditorState | null;
|
|
14449
14710
|
editTemplateMode: boolean;
|
|
14450
14711
|
newShapeType: SupportedShapeType;
|
|
14712
|
+
/** The armed Freeform: Shape / Curve tool, or null. */
|
|
14713
|
+
activeFreeformTool?: FreeformToolKind | null;
|
|
14451
14714
|
activeTool: DrawingTool;
|
|
14452
14715
|
drawingColor: string;
|
|
14453
14716
|
drawingWidth: number;
|
|
@@ -14481,6 +14744,8 @@ interface ToolbarProps {
|
|
|
14481
14744
|
onRedo: () => void;
|
|
14482
14745
|
onToggleFindReplace: () => void;
|
|
14483
14746
|
onSetNewShapeType: (type: SupportedShapeType) => void;
|
|
14747
|
+
/** Arm (or, with null, disarm) a Freeform: Shape / Curve tool. */
|
|
14748
|
+
onArmFreeformTool?: (tool: FreeformToolKind | null) => void;
|
|
14484
14749
|
onAddTextBox: () => void;
|
|
14485
14750
|
onAddShape: () => void;
|
|
14486
14751
|
onAddTable: () => void;
|
|
@@ -14981,6 +15246,8 @@ interface UseElementManipulationInput {
|
|
|
14981
15246
|
* production, only in tests that do not exercise "Edit Text".
|
|
14982
15247
|
*/
|
|
14983
15248
|
onEditText?: (elementId: string) => void;
|
|
15249
|
+
/** Enter Edit Points mode on `elementId` (context menu "Edit Points"). */
|
|
15250
|
+
onEditPoints?: (elementId: string) => void;
|
|
14984
15251
|
/**
|
|
14985
15252
|
* Rasterise `elementId`'s own DOM node and download it as PNG ("Save as
|
|
14986
15253
|
* Picture"). Lives outside this hook because it needs the binding's
|
|
@@ -15669,6 +15936,31 @@ interface ViewerDialogsResult {
|
|
|
15669
15936
|
//#region src/viewer/hooks/useViewerDialogs.d.ts
|
|
15670
15937
|
declare function useViewerDialogs(input: UseViewerDialogsInput): ViewerDialogsResult;
|
|
15671
15938
|
//#endregion
|
|
15939
|
+
//#region src/viewer/hooks/useCropSessionState.d.ts
|
|
15940
|
+
interface CropSessionState {
|
|
15941
|
+
/** The open crop session, or null outside crop mode. */
|
|
15942
|
+
cropSession: CropSession | null;
|
|
15943
|
+
/** Mirror of `cropSession`, readable synchronously by the history gate. */
|
|
15944
|
+
cropSessionRef: React.MutableRefObject<CropSession | null>;
|
|
15945
|
+
/** Open or close the session; keeps the ref and the state in step. */
|
|
15946
|
+
setCropSession: (session: CropSession | null) => void;
|
|
15947
|
+
}
|
|
15948
|
+
//#endregion
|
|
15949
|
+
//#region src/viewer/hooks/useEditPointsState.d.ts
|
|
15950
|
+
/**
|
|
15951
|
+
* Viewer state for the two outline-authoring modes: Edit Points on one shape,
|
|
15952
|
+
* and the armed Freeform: Shape / Curve drawing tool. At most one is active;
|
|
15953
|
+
* arming a tool ends Edit Points and starting Edit Points disarms the tool.
|
|
15954
|
+
*/
|
|
15955
|
+
interface EditPointsModeState {
|
|
15956
|
+
/** The shape in Edit Points mode, or null. */
|
|
15957
|
+
editPointsElementId: string | null;
|
|
15958
|
+
setEditPointsElementId: (id: string | null) => void;
|
|
15959
|
+
/** The armed click-to-place drawing tool, or null. */
|
|
15960
|
+
activeFreeformTool: FreeformToolKind | null;
|
|
15961
|
+
setActiveFreeformTool: (tool: FreeformToolKind | null) => void;
|
|
15962
|
+
}
|
|
15963
|
+
//#endregion
|
|
15672
15964
|
//#region src/viewer/hooks/viewer-core-state-types.d.ts
|
|
15673
15965
|
/**
|
|
15674
15966
|
* Input parameters for the {@link useViewerCoreState} hook.
|
|
@@ -15687,7 +15979,7 @@ interface UseViewerCoreStateInput {
|
|
|
15687
15979
|
* that comprises the core viewer state. It is merged with {@link ViewerUIState}
|
|
15688
15980
|
* inside {@link useViewerState} to produce the unified {@link ViewerState}.
|
|
15689
15981
|
*/
|
|
15690
|
-
interface ViewerCoreState extends InlineEditingState {
|
|
15982
|
+
interface ViewerCoreState extends InlineEditingState, EditPointsModeState {
|
|
15691
15983
|
/** Ref to the outermost container `<div>` wrapping the viewer. */
|
|
15692
15984
|
containerRef: React$1.RefObject<HTMLDivElement | null>;
|
|
15693
15985
|
/** Hidden `<input type="file">` used to trigger image file selection. */
|
|
@@ -16034,7 +16326,7 @@ interface UseViewerStateInput {
|
|
|
16034
16326
|
* The unified viewer state: intersection of core state (slides, elements,
|
|
16035
16327
|
* refs, presentation metadata) and UI state (panel toggles, tools, grid/snap).
|
|
16036
16328
|
*/
|
|
16037
|
-
type ViewerState = ViewerCoreState & ViewerUIState;
|
|
16329
|
+
type ViewerState = ViewerCoreState & ViewerUIState & CropSessionState;
|
|
16038
16330
|
/**
|
|
16039
16331
|
* Composes core and UI state into a single unified state object.
|
|
16040
16332
|
*
|
|
@@ -16124,6 +16416,23 @@ interface TableStyleContext {
|
|
|
16124
16416
|
theme?: PptxTheme;
|
|
16125
16417
|
}
|
|
16126
16418
|
//#endregion
|
|
16419
|
+
//#region src/viewer/components/canvas/OutlineAuthoringLayer.d.ts
|
|
16420
|
+
/** Wiring for Edit Points and the Freeform: Shape / Curve tools. */
|
|
16421
|
+
interface OutlineAuthoringProps {
|
|
16422
|
+
/** The shape in Edit Points mode, or null. */
|
|
16423
|
+
editPointsElementId: string | null;
|
|
16424
|
+
/** Edit Points menu commands the host hid. */
|
|
16425
|
+
hiddenEditPointsCommands?: ReadonlySet<EditPointsCommandId>;
|
|
16426
|
+
/** Apply one Edit Points edit (one undo step). */
|
|
16427
|
+
onCommitEditPoints: (elementId: string, patch: EditPointsElementPatch) => void;
|
|
16428
|
+
onExitEditPoints: () => void;
|
|
16429
|
+
/** The armed drawing tool, or null. */
|
|
16430
|
+
freeformTool: FreeformToolKind | null;
|
|
16431
|
+
/** Insert a drawn freeform (the tool then disarms). */
|
|
16432
|
+
onFreeformCommit: (element: ShapePptxElement) => void;
|
|
16433
|
+
onFreeformCancel: () => void;
|
|
16434
|
+
}
|
|
16435
|
+
//#endregion
|
|
16127
16436
|
//#region src/viewer/components/canvas/canvas-types.d.ts
|
|
16128
16437
|
interface ZoomViewport {
|
|
16129
16438
|
canvasViewportRef: React$1.RefObject<HTMLDivElement | null>;
|
|
@@ -16271,6 +16580,7 @@ interface SlideCanvasProps {
|
|
|
16271
16580
|
* changes tween while the AI assistant is working (see AiFocusHighlightOverlay).
|
|
16272
16581
|
*/
|
|
16273
16582
|
aiActive?: boolean;
|
|
16583
|
+
outlineAuthoring?: OutlineAuthoringProps;
|
|
16274
16584
|
}
|
|
16275
16585
|
//#endregion
|
|
16276
16586
|
//#region src/viewer/hooks/useAutosave.d.ts
|
|
@@ -18217,6 +18527,7 @@ declare function useKeyboardShortcuts(input: UseKeyboardShortcutsInput): void;
|
|
|
18217
18527
|
interface MergeShapesHandlerInput {
|
|
18218
18528
|
activeSlide: PptxSlide | undefined;
|
|
18219
18529
|
activeSlideIndex: number;
|
|
18530
|
+
/** The selection in SELECTION order: the first entry's formatting survives. */
|
|
18220
18531
|
selectedElements: PptxElement[];
|
|
18221
18532
|
effectiveSelectedIds: string[];
|
|
18222
18533
|
setSelectedElementIds: React.Dispatch<React.SetStateAction<string[]>>;
|