pptx-react-viewer 3.8.0 → 3.9.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 +8 -0
- package/dist/{AiChatPanel-XLQM4BQJ.js → AiChatPanel-3A42W7RW.js} +25 -25
- package/dist/AiChatPanel-3A42W7RW.js.br +0 -0
- package/dist/AiChatPanel-3A42W7RW.js.gz +0 -0
- package/dist/{AiChatPanel-A5DCEHTO.mjs → AiChatPanel-II6VOOAL.mjs} +4 -4
- package/dist/AiChatPanel-II6VOOAL.mjs.br +0 -0
- package/dist/AiChatPanel-II6VOOAL.mjs.gz +0 -0
- package/dist/{Area3DChartScene-5CMEMIBI.mjs → Area3DChartScene-JM3CQ3WQ.mjs} +21 -4
- package/dist/Area3DChartScene-JM3CQ3WQ.mjs.br +0 -0
- package/dist/Area3DChartScene-JM3CQ3WQ.mjs.gz +0 -0
- package/dist/{Area3DChartScene-RZ3V3WOR.js → Area3DChartScene-XJK4ZA4R.js} +21 -4
- package/dist/Area3DChartScene-XJK4ZA4R.js.br +0 -0
- package/dist/Area3DChartScene-XJK4ZA4R.js.gz +0 -0
- package/dist/{Bar3DChartScene-KHCQ6TEC.js → Bar3DChartScene-RGRZY5P6.js} +21 -4
- package/dist/Bar3DChartScene-RGRZY5P6.js.br +0 -0
- package/dist/Bar3DChartScene-RGRZY5P6.js.gz +0 -0
- package/dist/{Bar3DChartScene-H3MYUJKV.mjs → Bar3DChartScene-VNFWI2QG.mjs} +21 -4
- package/dist/Bar3DChartScene-VNFWI2QG.mjs.br +0 -0
- package/dist/Bar3DChartScene-VNFWI2QG.mjs.gz +0 -0
- package/dist/{Line3DChartScene-YFRPJHDX.mjs → Line3DChartScene-GXOWGIFJ.mjs} +21 -4
- package/dist/Line3DChartScene-GXOWGIFJ.mjs.br +0 -0
- package/dist/Line3DChartScene-GXOWGIFJ.mjs.gz +0 -0
- package/dist/{Line3DChartScene-QEACF3U3.js → Line3DChartScene-MEY42DBF.js} +21 -4
- package/dist/Line3DChartScene-MEY42DBF.js.br +0 -0
- package/dist/Line3DChartScene-MEY42DBF.js.gz +0 -0
- package/dist/{Model3DScene-QQWKGJ3T.js → Model3DScene-MWXTGHDM.js} +2 -2
- package/dist/Model3DScene-MWXTGHDM.js.br +0 -0
- package/dist/Model3DScene-MWXTGHDM.js.gz +0 -0
- package/dist/{Model3DScene-O24KP723.mjs → Model3DScene-WJ3MMIZH.mjs} +1 -1
- package/dist/Model3DScene-WJ3MMIZH.mjs.br +0 -0
- package/dist/Model3DScene-WJ3MMIZH.mjs.gz +0 -0
- package/dist/{PieChart3DScene-L3MHKQHW.js → PieChart3DScene-FJJGOQIS.js} +15 -4
- package/dist/PieChart3DScene-FJJGOQIS.js.br +0 -0
- package/dist/PieChart3DScene-FJJGOQIS.js.gz +0 -0
- package/dist/{PieChart3DScene-CI6CW22C.mjs → PieChart3DScene-WXJEDYMK.mjs} +15 -4
- package/dist/PieChart3DScene-WXJEDYMK.mjs.br +0 -0
- package/dist/PieChart3DScene-WXJEDYMK.mjs.gz +0 -0
- package/dist/{SmartArt3DScene-ZO3KFDI2.js → SmartArt3DScene-BK7QN3WT.js} +85 -23
- package/dist/SmartArt3DScene-BK7QN3WT.js.br +0 -0
- package/dist/SmartArt3DScene-BK7QN3WT.js.gz +0 -0
- package/dist/{SmartArt3DScene-XCFVGCXE.mjs → SmartArt3DScene-ODKCGJBO.mjs} +85 -23
- package/dist/SmartArt3DScene-ODKCGJBO.mjs.br +0 -0
- package/dist/SmartArt3DScene-ODKCGJBO.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-JUXRC3K2.mjs → SurfaceChart3DScene-IKPE2SVE.mjs} +19 -4
- package/dist/SurfaceChart3DScene-IKPE2SVE.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-IKPE2SVE.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-5IER6VFW.js → SurfaceChart3DScene-VDK3F224.js} +19 -4
- package/dist/SurfaceChart3DScene-VDK3F224.js.br +0 -0
- package/dist/SurfaceChart3DScene-VDK3F224.js.gz +0 -0
- package/dist/{chunk-4222CHFH.js → chunk-3NIJ5HIZ.js} +3187 -2514
- package/dist/chunk-3NIJ5HIZ.js.br +0 -0
- package/dist/chunk-3NIJ5HIZ.js.gz +0 -0
- package/dist/{chunk-RNP5HP4L.mjs → chunk-3Y63XPIN.mjs} +1 -1
- package/dist/chunk-3Y63XPIN.mjs.br +0 -0
- package/dist/{chunk-RNP5HP4L.mjs.gz → chunk-3Y63XPIN.mjs.gz} +0 -0
- package/dist/{chunk-DE3S3UHX.js → chunk-5CPGDXD6.js} +518 -442
- package/dist/chunk-5CPGDXD6.js.br +0 -0
- package/dist/chunk-5CPGDXD6.js.gz +0 -0
- package/dist/{chunk-PFPKBNNZ.mjs → chunk-76Z3X6JX.mjs} +1189 -516
- package/dist/chunk-76Z3X6JX.mjs.br +0 -0
- package/dist/chunk-76Z3X6JX.mjs.gz +0 -0
- package/dist/chunk-DNR6CH6I.js +30 -0
- package/dist/chunk-DNR6CH6I.js.br +0 -0
- package/dist/chunk-DNR6CH6I.js.gz +0 -0
- package/dist/{chunk-SN5EUDIT.js → chunk-G3JPCRKN.js} +13644 -7350
- package/dist/chunk-G3JPCRKN.js.br +0 -0
- package/dist/chunk-G3JPCRKN.js.gz +0 -0
- package/dist/{chunk-FRZIBZTE.mjs → chunk-JBSAKP4Z.mjs} +15 -0
- package/dist/chunk-JBSAKP4Z.mjs.br +0 -0
- package/dist/{chunk-FRZIBZTE.mjs.gz → chunk-JBSAKP4Z.mjs.gz} +0 -0
- package/dist/{chunk-F5NPGNMA.js → chunk-K6Q6KLA6.js} +5 -5
- package/dist/chunk-K6Q6KLA6.js.br +0 -0
- package/dist/chunk-K6Q6KLA6.js.gz +0 -0
- package/dist/{chunk-QWA5YEIZ.js → chunk-LBJAVP3H.js} +194 -178
- package/dist/chunk-LBJAVP3H.js.br +0 -0
- package/dist/chunk-LBJAVP3H.js.gz +0 -0
- package/dist/{chunk-RHWQKZLB.mjs → chunk-NTWFXLZX.mjs} +23 -7
- package/dist/chunk-NTWFXLZX.mjs.br +0 -0
- package/dist/chunk-NTWFXLZX.mjs.gz +0 -0
- package/dist/{chunk-UPJW34YG.mjs → chunk-PCCM7NVY.mjs} +85 -9
- package/dist/chunk-PCCM7NVY.mjs.br +0 -0
- package/dist/chunk-PCCM7NVY.mjs.gz +0 -0
- package/dist/chunk-T6GFCLSM.mjs +27 -0
- package/dist/chunk-T6GFCLSM.mjs.br +4 -0
- package/dist/chunk-T6GFCLSM.mjs.gz +0 -0
- package/dist/{chunk-L3ZIBQEB.js → chunk-TEVGDXVW.js} +15 -0
- package/dist/chunk-TEVGDXVW.js.br +0 -0
- package/dist/{chunk-L3ZIBQEB.js.gz → chunk-TEVGDXVW.js.gz} +0 -0
- package/dist/{chunk-6IMB5DNJ.mjs → chunk-VQX7G75Z.mjs} +13621 -7340
- package/dist/chunk-VQX7G75Z.mjs.br +0 -0
- package/dist/chunk-VQX7G75Z.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 +388 -80
- package/dist/index.js +47 -47
- 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 +445 -81
- package/dist/internals.d.ts.map +1 -1
- package/dist/internals.js +79 -79
- 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 +338 -43
- 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 +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/package.json +2 -2
- package/dist/AiChatPanel-A5DCEHTO.mjs.br +0 -0
- package/dist/AiChatPanel-A5DCEHTO.mjs.gz +0 -0
- package/dist/AiChatPanel-XLQM4BQJ.js.br +0 -0
- package/dist/AiChatPanel-XLQM4BQJ.js.gz +0 -0
- package/dist/Area3DChartScene-5CMEMIBI.mjs.br +0 -0
- package/dist/Area3DChartScene-5CMEMIBI.mjs.gz +0 -0
- package/dist/Area3DChartScene-RZ3V3WOR.js.br +0 -0
- package/dist/Area3DChartScene-RZ3V3WOR.js.gz +0 -0
- package/dist/Bar3DChartScene-H3MYUJKV.mjs.br +0 -0
- package/dist/Bar3DChartScene-H3MYUJKV.mjs.gz +0 -0
- package/dist/Bar3DChartScene-KHCQ6TEC.js.br +0 -0
- package/dist/Bar3DChartScene-KHCQ6TEC.js.gz +0 -0
- package/dist/Line3DChartScene-QEACF3U3.js.br +0 -0
- package/dist/Line3DChartScene-QEACF3U3.js.gz +0 -0
- package/dist/Line3DChartScene-YFRPJHDX.mjs.br +0 -0
- package/dist/Line3DChartScene-YFRPJHDX.mjs.gz +0 -0
- package/dist/Model3DScene-O24KP723.mjs.br +0 -0
- package/dist/Model3DScene-O24KP723.mjs.gz +0 -0
- package/dist/Model3DScene-QQWKGJ3T.js.br +0 -0
- package/dist/Model3DScene-QQWKGJ3T.js.gz +0 -0
- package/dist/PieChart3DScene-CI6CW22C.mjs.br +0 -0
- package/dist/PieChart3DScene-CI6CW22C.mjs.gz +0 -0
- package/dist/PieChart3DScene-L3MHKQHW.js.br +0 -0
- package/dist/PieChart3DScene-L3MHKQHW.js.gz +0 -0
- package/dist/SmartArt3DScene-XCFVGCXE.mjs.br +0 -0
- package/dist/SmartArt3DScene-XCFVGCXE.mjs.gz +0 -0
- package/dist/SmartArt3DScene-ZO3KFDI2.js.br +0 -0
- package/dist/SmartArt3DScene-ZO3KFDI2.js.gz +0 -0
- package/dist/SurfaceChart3DScene-5IER6VFW.js.br +0 -0
- package/dist/SurfaceChart3DScene-5IER6VFW.js.gz +0 -0
- package/dist/SurfaceChart3DScene-JUXRC3K2.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-JUXRC3K2.mjs.gz +0 -0
- package/dist/chunk-4222CHFH.js.br +0 -0
- package/dist/chunk-4222CHFH.js.gz +0 -0
- package/dist/chunk-6IMB5DNJ.mjs.br +0 -0
- package/dist/chunk-6IMB5DNJ.mjs.gz +0 -0
- package/dist/chunk-DE3S3UHX.js.br +0 -0
- package/dist/chunk-DE3S3UHX.js.gz +0 -0
- package/dist/chunk-F5NPGNMA.js.br +0 -0
- package/dist/chunk-F5NPGNMA.js.gz +0 -0
- package/dist/chunk-FRZIBZTE.mjs.br +0 -0
- package/dist/chunk-L3ZIBQEB.js.br +0 -0
- package/dist/chunk-PFPKBNNZ.mjs.br +0 -0
- package/dist/chunk-PFPKBNNZ.mjs.gz +0 -0
- package/dist/chunk-QWA5YEIZ.js.br +0 -0
- package/dist/chunk-QWA5YEIZ.js.gz +0 -0
- package/dist/chunk-RHWQKZLB.mjs.br +0 -0
- package/dist/chunk-RHWQKZLB.mjs.gz +0 -0
- package/dist/chunk-RNP5HP4L.mjs.br +0 -0
- package/dist/chunk-SN5EUDIT.js.br +0 -0
- package/dist/chunk-SN5EUDIT.js.gz +0 -0
- package/dist/chunk-UPJW34YG.mjs.br +0 -0
- package/dist/chunk-UPJW34YG.mjs.gz +0 -0
package/dist/viewer/index.d.ts
CHANGED
|
@@ -2147,6 +2147,29 @@ interface PptxElementBase {
|
|
|
2147
2147
|
y: number;
|
|
2148
2148
|
width: number;
|
|
2149
2149
|
height: number;
|
|
2150
|
+
/**
|
|
2151
|
+
* The exact EMU integer `x` was parsed from (the `a:off/@_x` this
|
|
2152
|
+
* element's own `a:xfrm` carried on load), when the parser could resolve
|
|
2153
|
+
* one. `x` itself is always `Math.round(xEmu / EMU_PER_PX)` at parse
|
|
2154
|
+
* time, but that rounding is lossy: re-deriving EMU from `x` on save
|
|
2155
|
+
* (`Math.round(x * EMU_PER_PX)`) can drift from the original value by up
|
|
2156
|
+
* to half a pixel's worth of EMU on every load/save cycle even when
|
|
2157
|
+
* nothing touched this element. Kept alongside `x` (not instead of it) so
|
|
2158
|
+
* every consumer that only cares about on-screen position is unaffected;
|
|
2159
|
+
* only the save-side xfrm writer (`resolveXfrmEmu` in
|
|
2160
|
+
* `xfrm-emu-resolution.ts`) reads this, and only when `x` still equals
|
|
2161
|
+
* `Math.round(xEmu / EMU_PER_PX)` (i.e. nothing moved this element since
|
|
2162
|
+
* load) does it re-emit `xEmu` verbatim instead of re-quantizing `x`.
|
|
2163
|
+
* `undefined` for an SDK-created element or one whose transform could not
|
|
2164
|
+
* be resolved to a usable `a:off` on load.
|
|
2165
|
+
*/
|
|
2166
|
+
xEmu?: number;
|
|
2167
|
+
/** The exact EMU integer `y` was parsed from (`a:off/@_y`). See {@link xEmu}. */
|
|
2168
|
+
yEmu?: number;
|
|
2169
|
+
/** The exact EMU integer `width` was parsed from (`a:ext/@_cx`). See {@link xEmu}. */
|
|
2170
|
+
widthEmu?: number;
|
|
2171
|
+
/** The exact EMU integer `height` was parsed from (`a:ext/@_cy`). See {@link xEmu}. */
|
|
2172
|
+
heightEmu?: number;
|
|
2150
2173
|
rotation?: number;
|
|
2151
2174
|
/** Skew along the X axis in degrees (parsed from `@_skewX` in 1/60000ths of a degree). */
|
|
2152
2175
|
skewX?: number;
|
|
@@ -2666,6 +2689,21 @@ interface PptxChartUserShapeGroupTransform {
|
|
|
2666
2689
|
cx: number;
|
|
2667
2690
|
cy: number;
|
|
2668
2691
|
};
|
|
2692
|
+
/**
|
|
2693
|
+
* The group's own rotation in degrees (`a:xfrm/@rot`, stored in 60,000ths
|
|
2694
|
+
* of a degree), when present. Rotates the whole group, and everything
|
|
2695
|
+
* grouped inside it, as a rigid body about the CENTRE of the group's own
|
|
2696
|
+
* box ({@link off}/{@link ext}); see `flattenChartUserShapes` in
|
|
2697
|
+
* `chart-user-shapes-parser.ts` for how this composes onto each contained
|
|
2698
|
+
* leaf's own {@link PptxChartUserShapeGroupChild.rotation}. Verified
|
|
2699
|
+
* against real PowerPoint (COM): a `cdr:grpSp`'s `cdr:grpSpPr/a:xfrm` does
|
|
2700
|
+
* carry `rot` the same way an ordinary shape's does.
|
|
2701
|
+
*/
|
|
2702
|
+
rotation?: number;
|
|
2703
|
+
/** The group's own horizontal flip (`a:xfrm/@flipH`), when present; composes onto children by XOR, see {@link rotation}'s doc. */
|
|
2704
|
+
flipH?: boolean;
|
|
2705
|
+
/** The group's own vertical flip (`a:xfrm/@flipV`), when present; composes onto children by XOR, see {@link rotation}'s doc. */
|
|
2706
|
+
flipV?: boolean;
|
|
2669
2707
|
}
|
|
2670
2708
|
/**
|
|
2671
2709
|
* One shape grouped inside a `cdr:grpSp` (or a nested `cdr:grpSp` itself).
|
|
@@ -2697,6 +2735,23 @@ interface PptxChartUserShapeGroupChild {
|
|
|
2697
2735
|
strokeWidth?: number;
|
|
2698
2736
|
/** Text paragraphs of the shape's `txBody`, when present. */
|
|
2699
2737
|
paragraphs?: PptxChartUserShapeParagraph[];
|
|
2738
|
+
/**
|
|
2739
|
+
* A `pic` child's alt text (`cdr:nvPicPr/cdr:cNvPr/@descr`), when present.
|
|
2740
|
+
* Editable independently of {@link rawXml}'s otherwise-verbatim content:
|
|
2741
|
+
* the serializer patches only this attribute onto the cloned raw node.
|
|
2742
|
+
*/
|
|
2743
|
+
altText?: string;
|
|
2744
|
+
/**
|
|
2745
|
+
* This child's OWN rotation in degrees (`a:xfrm/@rot`), when present.
|
|
2746
|
+
* Composes with every enclosing group's own
|
|
2747
|
+
* {@link PptxChartUserShapeGroupTransform.rotation} (added) to produce the
|
|
2748
|
+
* leaf's final on-screen rotation; see `flattenChartUserShapes`.
|
|
2749
|
+
*/
|
|
2750
|
+
rotation?: number;
|
|
2751
|
+
/** This child's OWN horizontal flip (`a:xfrm/@flipH`); composes with an ancestor group's flip by XOR. */
|
|
2752
|
+
flipH?: boolean;
|
|
2753
|
+
/** This child's OWN vertical flip (`a:xfrm/@flipV`); composes with an ancestor group's flip by XOR. */
|
|
2754
|
+
flipV?: boolean;
|
|
2700
2755
|
/**
|
|
2701
2756
|
* Verbatim source XML of a `pic`/`graphicFrame` child, or of this node
|
|
2702
2757
|
* itself when `kind === 'grpSp'` and the nested group is untouched since
|
|
@@ -2755,6 +2810,29 @@ interface PptxChartUserShape {
|
|
|
2755
2810
|
strokeWidth?: number;
|
|
2756
2811
|
/** Text paragraphs of the shape's `txBody`, when present. */
|
|
2757
2812
|
paragraphs?: PptxChartUserShapeParagraph[];
|
|
2813
|
+
/**
|
|
2814
|
+
* A `pic` anchor's alt text (`cdr:nvPicPr/cdr:cNvPr/@descr`), when
|
|
2815
|
+
* present. Editable independently of {@link rawXml}'s otherwise-verbatim
|
|
2816
|
+
* content: the serializer patches only this attribute onto the cloned
|
|
2817
|
+
* raw node, so a picture's blip and other markup are untouched.
|
|
2818
|
+
*/
|
|
2819
|
+
altText?: string;
|
|
2820
|
+
/**
|
|
2821
|
+
* This shape's OWN rotation in degrees (`a:xfrm/@rot`, on `spPr/a:xfrm`
|
|
2822
|
+
* for `sp`/`cxnSp`/`pic`, or directly on a top-level `graphicFrame`'s own
|
|
2823
|
+
* `a:xfrm`), when present. A top-level anchor's position/size is governed
|
|
2824
|
+
* by {@link from}/{@link to}/{@link ext}, never by this `a:xfrm`'s own
|
|
2825
|
+
* `off`/`ext` (see {@link rawXml}'s doc), but `rot`/`flipH`/`flipV` on that
|
|
2826
|
+
* same `a:xfrm` DO apply visually: verified against real PowerPoint (COM),
|
|
2827
|
+
* which writes e.g. `<a:xfrm rot="1800000"><a:off .../><a:ext .../></a:xfrm>`
|
|
2828
|
+
* on a rotated overlay shape's `spPr`, with the `off`/`ext` values
|
|
2829
|
+
* unrelated to the anchor's own `cdr:from`/`cdr:to`.
|
|
2830
|
+
*/
|
|
2831
|
+
rotation?: number;
|
|
2832
|
+
/** This shape's OWN horizontal flip (`a:xfrm/@flipH`); see {@link rotation}'s doc. */
|
|
2833
|
+
flipH?: boolean;
|
|
2834
|
+
/** This shape's OWN vertical flip (`a:xfrm/@flipV`); see {@link rotation}'s doc. */
|
|
2835
|
+
flipV?: boolean;
|
|
2758
2836
|
/**
|
|
2759
2837
|
* Verbatim source XML of a `pic` or `graphicFrame` anchor child (the
|
|
2760
2838
|
* `cdr:pic` / `cdr:graphicFrame` node itself, not the enclosing anchor),
|
|
@@ -2784,7 +2862,7 @@ interface PptxChartUserShape {
|
|
|
2784
2862
|
* @example
|
|
2785
2863
|
* ```ts
|
|
2786
2864
|
* const type: PptxChartType = "bar";
|
|
2787
|
-
* // => "bar"
|
|
2865
|
+
* // => "bar": one of: "bar" | "line" | "pie" | "doughnut" | "area" | "scatter" | …
|
|
2788
2866
|
* ```
|
|
2789
2867
|
*/
|
|
2790
2868
|
type PptxChartType = 'bar' | 'line' | 'pie' | 'ofPie' | 'doughnut' | 'area' | 'scatter' | 'bubble' | 'radar' | 'stock' | 'bar3D' | 'line3D' | 'pie3D' | 'area3D' | 'surface' | 'histogram' | 'waterfall' | 'funnel' | 'treemap' | 'sunburst' | 'boxWhisker' | 'regionMap' | 'combo' | 'unknown';
|
|
@@ -2819,7 +2897,7 @@ type PptxBar3DShape = 'box' | 'cone' | 'coneToMax' | 'cylinder' | 'pyramid' | 'p
|
|
|
2819
2897
|
* @example
|
|
2820
2898
|
* ```ts
|
|
2821
2899
|
* const type: PptxChartTrendlineType = "linear";
|
|
2822
|
-
* // => "linear"
|
|
2900
|
+
* // => "linear": one of: "linear" | "exponential" | "logarithmic" | "polynomial" | "power" | "movingAvg"
|
|
2823
2901
|
* ```
|
|
2824
2902
|
*/
|
|
2825
2903
|
type PptxChartTrendlineType = 'linear' | 'exponential' | 'logarithmic' | 'polynomial' | 'power' | 'movingAvg';
|
|
@@ -2870,7 +2948,7 @@ type PptxChartErrBarType = 'both' | 'minus' | 'plus';
|
|
|
2870
2948
|
* @example
|
|
2871
2949
|
* ```ts
|
|
2872
2950
|
* const valType: PptxChartErrValType = "percentage";
|
|
2873
|
-
* // => "percentage"
|
|
2951
|
+
* // => "percentage": one of: "cust" | "fixedVal" | "percentage" | "stdDev" | "stdErr"
|
|
2874
2952
|
* ```
|
|
2875
2953
|
*/
|
|
2876
2954
|
type PptxChartErrValType = 'cust' | 'fixedVal' | 'percentage' | 'stdDev' | 'stdErr';
|
|
@@ -2989,6 +3067,14 @@ interface PptxChartDataPoint {
|
|
|
2989
3067
|
bubble3D?: boolean;
|
|
2990
3068
|
/** Per-point picture-fill flags (`c:dPt/c:pictureOptions`). */
|
|
2991
3069
|
picture?: PptxChartDataPointPicture;
|
|
3070
|
+
/**
|
|
3071
|
+
* This point's identity GUID (`c:dPt/c:extLst/c:ext/c16:uniqueId/@val`,
|
|
3072
|
+
* the Office 2014+ `{C3380CC4-5D6E-409C-BE32-E72D297353CC}` chart
|
|
3073
|
+
* extension), read-only here: an edited point keeps its existing
|
|
3074
|
+
* `c:extLst` as passthrough (see `chart-datapoint-serializer.ts`), so this
|
|
3075
|
+
* field exists for introspection rather than round-trip.
|
|
3076
|
+
*/
|
|
3077
|
+
uniqueId?: string;
|
|
2992
3078
|
}
|
|
2993
3079
|
/** Schema values accepted by `c:dLblPos`. */
|
|
2994
3080
|
type PptxChartDataLabelPosition = 'bestFit' | 'b' | 'ctr' | 'inBase' | 'inEnd' | 'l' | 'outEnd' | 'r' | 't';
|
|
@@ -3065,7 +3151,7 @@ interface PptxChartAxisFormatting extends PptxChartAxisLabelFormatting {
|
|
|
3065
3151
|
axPos?: 'b' | 'l' | 'r' | 't';
|
|
3066
3152
|
/** Unique axis identifier (c:axId/@val) used to link series to axes. */
|
|
3067
3153
|
axisId?: number;
|
|
3068
|
-
/** Cross-axis identifier
|
|
3154
|
+
/** Cross-axis identifier: the axis this axis crosses. */
|
|
3069
3155
|
crossAxisId?: number;
|
|
3070
3156
|
/** Automatic crossing mode (`c:crosses`). Mutually exclusive with `crossesAt`. */
|
|
3071
3157
|
crosses?: 'autoZero' | 'min' | 'max';
|
|
@@ -3317,6 +3403,54 @@ interface PptxChartSeries {
|
|
|
3317
3403
|
waterfallOptions?: PptxChartWaterfallOptions;
|
|
3318
3404
|
regionMapOptions?: PptxChartRegionMapOptions;
|
|
3319
3405
|
treemapOptions?: PptxChartTreemapOptions;
|
|
3406
|
+
/**
|
|
3407
|
+
* Series-level picture-fill flags (`c:ser/c:pictureOptions`), legal
|
|
3408
|
+
* wherever a per-point `c:dPt/c:pictureOptions` is (CT_BarSer): paints
|
|
3409
|
+
* EVERY point in the series with one picture unless a `c:dPt` overrides it
|
|
3410
|
+
* for that point alone. A point's own {@link PptxChartDataPoint.picture}
|
|
3411
|
+
* takes precedence entirely (not merged field-by-field) when it resolves
|
|
3412
|
+
* its own image; renderers fall back to this series-level picture only
|
|
3413
|
+
* when the point has none of its own.
|
|
3414
|
+
*/
|
|
3415
|
+
picture?: PptxChartDataPointPicture;
|
|
3416
|
+
/**
|
|
3417
|
+
* This series' identity GUID (`c:ser/c:extLst/c:ext/c16:uniqueId/@val`,
|
|
3418
|
+
* the Office 2014+ `{C3380CC4-5D6E-409C-BE32-E72D297353CC}` chart
|
|
3419
|
+
* extension). PowerPoint uses it to track a series across edits and
|
|
3420
|
+
* collaborators independent of its `c:idx`/`c:order` position (the same
|
|
3421
|
+
* role animation targeting and CRDT reconciliation need). An edited
|
|
3422
|
+
* existing series keeps its own `c:extLst` as passthrough; a NEW series
|
|
3423
|
+
* added by cloning an existing one as a template is given a freshly
|
|
3424
|
+
* generated id rather than duplicating the template's (see
|
|
3425
|
+
* `regenerateClonedUniqueId` in `chart-series-identity.ts`), since two
|
|
3426
|
+
* series sharing one identity is exactly what this extension exists to
|
|
3427
|
+
* prevent.
|
|
3428
|
+
*/
|
|
3429
|
+
uniqueId?: string;
|
|
3430
|
+
}
|
|
3431
|
+
/**
|
|
3432
|
+
* A series PowerPoint's "Chart Filters" feature hid from the plot while
|
|
3433
|
+
* keeping it in the workbook (`c:<type>Chart/c:extLst/c:ext
|
|
3434
|
+
* [@uri={02D57815-91ED-43cb-92C2-25804820EDAC}]/c15:filtered<Type>Series
|
|
3435
|
+
* /c15:ser`). Read-mostly: {@link PptxChartData.filteredSeries} exists for
|
|
3436
|
+
* introspection (AI tools, "unhide filtered series" UI) and round-trips as
|
|
3437
|
+
* passthrough through the preserved chart XML when untouched. See
|
|
3438
|
+
* `utils/chart-filtered-series.ts` for the parse rules and the idx-collision
|
|
3439
|
+
* fix this modelling enables on save.
|
|
3440
|
+
*/
|
|
3441
|
+
interface PptxChartFilteredSeries {
|
|
3442
|
+
/** `c15:ser/c:idx/@val`, the workbook column position this series still occupies. */
|
|
3443
|
+
idx: number;
|
|
3444
|
+
/** `c15:ser/c:order/@val`, defaulting to {@link idx} when absent. */
|
|
3445
|
+
order: number;
|
|
3446
|
+
/** Series name, from the hidden series' own `c:tx` cache. */
|
|
3447
|
+
name?: string;
|
|
3448
|
+
/** Category labels, from the hidden series' own `c:cat` cache. */
|
|
3449
|
+
categories?: string[];
|
|
3450
|
+
/** Data values, from the hidden series' own `c:val` cache. */
|
|
3451
|
+
values?: number[];
|
|
3452
|
+
/** This hidden series' own identity GUID (`c16:uniqueId`), when present. */
|
|
3453
|
+
uniqueId?: string;
|
|
3320
3454
|
}
|
|
3321
3455
|
/**
|
|
3322
3456
|
* Chart-level data-label options (`c:dLbls` directly under a chart-type
|
|
@@ -3340,6 +3474,19 @@ interface PptxChartDataLabelOptions {
|
|
|
3340
3474
|
separator?: string;
|
|
3341
3475
|
/** Show leader lines where supported (`c:showLeaderLines`). */
|
|
3342
3476
|
showLeaderLines?: boolean;
|
|
3477
|
+
/**
|
|
3478
|
+
* Leader-line stroke styling for offset (pie/doughnut `outEnd`/`bestFit`)
|
|
3479
|
+
* labels. Resolved from the base `c:leaderLines/c:spPr` when present, else
|
|
3480
|
+
* falling back to the Office 2013+ chart15 extension's mirror
|
|
3481
|
+
* (`c:extLst/c:ext/c15:leaderLines/c:spPr`, uri
|
|
3482
|
+
* `{CE6537A1-D6FC-4f65-9D91-7224C49458BB}`), which is the one PowerPoint
|
|
3483
|
+
* itself treats as authoritative when both are present. Confirmed against
|
|
3484
|
+
* `e2e/fixtures/issue-132-gradient-fill.pptx` and
|
|
3485
|
+
* `e2e/fixtures/issue-132-hr-deck.pptx`, both of which write only the
|
|
3486
|
+
* extension form. `undefined` leaves the renderer's own default leader-line
|
|
3487
|
+
* stroke.
|
|
3488
|
+
*/
|
|
3489
|
+
leaderLineStyle?: PptxChartShapeProps;
|
|
3343
3490
|
/**
|
|
3344
3491
|
* Label position (`c:dLblPos`). Valid values depend on the chart type
|
|
3345
3492
|
* (`ctr`, `inEnd`, `inBase`, `outEnd`, `bestFit`, `l`, `r`, `t`, `b`).
|
|
@@ -3493,12 +3640,12 @@ interface PptxBubbleChartOptions {
|
|
|
3493
3640
|
*
|
|
3494
3641
|
* All fields are optional and round-trip verbatim.
|
|
3495
3642
|
*
|
|
3496
|
-
* - {@link rotX}
|
|
3497
|
-
* - {@link rotY}
|
|
3498
|
-
* - {@link depthPercent}
|
|
3499
|
-
* - {@link rAngAx}
|
|
3500
|
-
* - {@link perspective}
|
|
3501
|
-
* - {@link hPercent}
|
|
3643
|
+
* - {@link rotX}: X-axis rotation in degrees (-90…90).
|
|
3644
|
+
* - {@link rotY}: Y-axis rotation in degrees (0…360).
|
|
3645
|
+
* - {@link depthPercent}: chart depth as a percentage of base width.
|
|
3646
|
+
* - {@link rAngAx}: `true` if axes meet at right angles.
|
|
3647
|
+
* - {@link perspective}: perspective angle in degrees (0…240).
|
|
3648
|
+
* - {@link hPercent}: height as a percentage of chart width.
|
|
3502
3649
|
*/
|
|
3503
3650
|
interface PptxChartView3D {
|
|
3504
3651
|
rotX?: number;
|
|
@@ -3512,12 +3659,17 @@ interface PptxChartView3D {
|
|
|
3512
3659
|
* Chart "chrome" flags from `c:chart` that round-trip cleanly even when
|
|
3513
3660
|
* rendering ignores them.
|
|
3514
3661
|
*
|
|
3515
|
-
* - {@link autoTitleDeleted}
|
|
3662
|
+
* - {@link autoTitleDeleted}: `c:autoTitleDeleted/@val`. Suppresses the
|
|
3516
3663
|
* auto-generated title for single-series charts.
|
|
3517
|
-
* - {@link dispBlanksAs}
|
|
3664
|
+
* - {@link dispBlanksAs}: `c:dispBlanksAs/@val`. How blank cells
|
|
3518
3665
|
* render: `"gap"`, `"zero"`, or `"span"`.
|
|
3519
|
-
* - {@link showDLblsOverMax}
|
|
3666
|
+
* - {@link showDLblsOverMax}: `c:showDLblsOverMax/@val`. Keeps data
|
|
3520
3667
|
* labels visible for points exceeding the value-axis maximum.
|
|
3668
|
+
* - {@link dispNaAsBlank}: the Office 2017+ chart extension
|
|
3669
|
+
* `c:extLst/c:ext/c16r3:dataDisplayOptions16/c16r3:dispNaAsBlank/@val`
|
|
3670
|
+
* (uri `{56B9EC1D-385E-4148-901F-78D8002777C0}`), PowerPoint's "Show #N/A
|
|
3671
|
+
* as an empty cell" chart option. Confirmed against real corpus markup
|
|
3672
|
+
* (`e2e/fixtures/chart-data-fidelity.pptx`).
|
|
3521
3673
|
*
|
|
3522
3674
|
* `c:plotVisOnly` lives on {@link PptxChartData.plotVisibleOnly} and is
|
|
3523
3675
|
* intentionally not duplicated here.
|
|
@@ -3526,6 +3678,7 @@ interface PptxChartChrome {
|
|
|
3526
3678
|
autoTitleDeleted?: boolean;
|
|
3527
3679
|
dispBlanksAs?: 'gap' | 'zero' | 'span';
|
|
3528
3680
|
showDLblsOverMax?: boolean;
|
|
3681
|
+
dispNaAsBlank?: boolean;
|
|
3529
3682
|
}
|
|
3530
3683
|
/** Manual chart placement from `c:layout/c:manualLayout` (CT_ManualLayout). */
|
|
3531
3684
|
interface PptxChartManualLayout {
|
|
@@ -3621,6 +3774,13 @@ interface PptxChartData {
|
|
|
3621
3774
|
categoryLevels?: string[][];
|
|
3622
3775
|
dateCategories?: PptxChartDateCategories;
|
|
3623
3776
|
series: PptxChartSeries[];
|
|
3777
|
+
/**
|
|
3778
|
+
* Series hidden from the plot by PowerPoint's "Chart Filters" feature
|
|
3779
|
+
* (Series tab) but still present in the workbook, aggregated across every
|
|
3780
|
+
* chart-type container (combo charts can carry more than one). Absent
|
|
3781
|
+
* when the chart has no such extension. See {@link PptxChartFilteredSeries}.
|
|
3782
|
+
*/
|
|
3783
|
+
filteredSeries?: PptxChartFilteredSeries[];
|
|
3624
3784
|
/** Chart style/formatting metadata. */
|
|
3625
3785
|
style?: PptxChartStyle;
|
|
3626
3786
|
/** Grouping mode for bar/area/line charts: 'clustered' | 'stacked' | 'percentStacked' */
|
|
@@ -3744,9 +3904,9 @@ interface PptxChartData {
|
|
|
3744
3904
|
/**
|
|
3745
3905
|
* Color cycling method from the chart color style part's `meth` attribute.
|
|
3746
3906
|
*
|
|
3747
|
-
* - `"cycle"
|
|
3748
|
-
* - `"withinLinear"
|
|
3749
|
-
* - `"acrossLinear"
|
|
3907
|
+
* - `"cycle"`: repeat the palette colours in order (default)
|
|
3908
|
+
* - `"withinLinear"`: gradient within each series
|
|
3909
|
+
* - `"acrossLinear"`: gradient across series
|
|
3750
3910
|
*/
|
|
3751
3911
|
colorMethod?: 'cycle' | 'withinLinear' | 'acrossLinear';
|
|
3752
3912
|
/** Internal source color-style part path used for lossless dirty saves. */
|
|
@@ -6309,13 +6469,14 @@ interface MediaPptxElement extends PptxElementBase {
|
|
|
6309
6469
|
*/
|
|
6310
6470
|
isLinked?: boolean;
|
|
6311
6471
|
/**
|
|
6312
|
-
* Accessibility description from `p:nvGraphicFramePr/p:cNvPr/@descr
|
|
6313
|
-
*
|
|
6314
|
-
*
|
|
6315
|
-
*
|
|
6472
|
+
* Accessibility description. Read from `p:nvGraphicFramePr/p:cNvPr/@descr`
|
|
6473
|
+
* for the `p:graphicFrame`-shaped (SDK-created) media form, or from
|
|
6474
|
+
* `p:nvPicPr/p:cNvPr/@descr` for the `p:pic`-shaped media form (real
|
|
6475
|
+
* PowerPoint's usual authoring shape for a video/audio placeholder); see
|
|
6476
|
+
* `PptxHandlerRuntimePictureParsing.ts`.
|
|
6316
6477
|
*/
|
|
6317
6478
|
altText?: string;
|
|
6318
|
-
/** Accessibility title from `p:
|
|
6479
|
+
/** Accessibility title, from the same `@title` attribute on whichever `p:cNvPr` the media form uses. Same scope note as {@link altText}. */
|
|
6319
6480
|
title?: string;
|
|
6320
6481
|
/** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
|
|
6321
6482
|
extensionXml?: PptxGraphicFrameExtension[];
|
|
@@ -6342,6 +6503,46 @@ interface GroupPptxElement extends PptxElementBase {
|
|
|
6342
6503
|
children: PptxElement[];
|
|
6343
6504
|
/** Fill style extracted from the group's `p:grpSpPr`, used for `a:grpFill` inheritance. */
|
|
6344
6505
|
groupFill?: ShapeStyle;
|
|
6506
|
+
/**
|
|
6507
|
+
* The SAME `p:grpSpPr` extraction as {@link groupFill}, kept whenever the
|
|
6508
|
+
* group carries a `p:grpSpPr` at all, regardless of whether it resolved to
|
|
6509
|
+
* a paintable fill.
|
|
6510
|
+
*
|
|
6511
|
+
* `groupFill` is `undefined` unless the group has a real fill, because
|
|
6512
|
+
* `getGroupChildParentFill`/`groupChildInheritedFill` (the `a:grpFill`
|
|
6513
|
+
* inheritance chain) must keep chaining through an ancestor's fill when
|
|
6514
|
+
* THIS group has none of its own. A group whose `p:grpSpPr` authors only
|
|
6515
|
+
* `a:effectLst` (shadow/glow/soft-edge/reflection, no fill) needs those
|
|
6516
|
+
* effects to still reach the renderer, so they are kept here under a name
|
|
6517
|
+
* that carries no fill-inheritance meaning. Currently only reflection is
|
|
6518
|
+
* read from it (`getComputedEffectStyle`); the rest of `a:effectLst` on a
|
|
6519
|
+
* group remains unsupported.
|
|
6520
|
+
*/
|
|
6521
|
+
groupEffectStyle?: ShapeStyle;
|
|
6522
|
+
/**
|
|
6523
|
+
* Exact EMU the group's own `a:chOff`/`a:chExt` (the coordinate space its
|
|
6524
|
+
* CHILDREN are authored in) were parsed from, alongside {@link
|
|
6525
|
+
* PptxElementBase.xEmu} etc for the group's own placement in its PARENT's
|
|
6526
|
+
* space. `undefined` when the source carried no usable `a:chOff`/`a:chExt`
|
|
6527
|
+
* (an SDK-created group, or one whose `a:xfrm` had no child-space data).
|
|
6528
|
+
*
|
|
6529
|
+
* Used by `group-xfrm-preservation.ts`'s `hasCapturedChildSpace` to decide
|
|
6530
|
+
* whether this group's original `a:chOff`/`a:chExt` can be re-emitted
|
|
6531
|
+
* verbatim (always true once captured, regardless of whether anything in
|
|
6532
|
+
* the subtree has moved or resized - only its DIRECT children's
|
|
6533
|
+
* `a:off`/`a:ext` are recomputed, via `invertChildIntoGroupSpace`, when
|
|
6534
|
+
* something changed), instead of the normalized `chOff 0,0` / `chExt ==
|
|
6535
|
+
* ext` space the writer falls back to when this is `undefined` (or
|
|
6536
|
+
* degenerate). See `group-shape-geometry.ts`'s module doc for why a group
|
|
6537
|
+
* needs two coordinate systems at all.
|
|
6538
|
+
*/
|
|
6539
|
+
chOffXEmu?: number;
|
|
6540
|
+
/** See {@link chOffXEmu}. */
|
|
6541
|
+
chOffYEmu?: number;
|
|
6542
|
+
/** See {@link chOffXEmu}. */
|
|
6543
|
+
chExtWidthEmu?: number;
|
|
6544
|
+
/** See {@link chOffXEmu}. */
|
|
6545
|
+
chExtHeightEmu?: number;
|
|
6345
6546
|
}
|
|
6346
6547
|
/**
|
|
6347
6548
|
* A freehand ink / drawing stroke captured with a stylus or mouse.
|
|
@@ -6370,6 +6571,24 @@ interface InkPptxElement extends PptxElementBase {
|
|
|
6370
6571
|
* variable-width strokes that reflect stylus/pen pressure.
|
|
6371
6572
|
*/
|
|
6372
6573
|
inkPointPressures?: number[][];
|
|
6574
|
+
/**
|
|
6575
|
+
* Per-path arrays of per-point pen-tilt lean direction (degrees, straight
|
|
6576
|
+
* from `PointerEvent.tiltX` on supporting hardware).
|
|
6577
|
+
*
|
|
6578
|
+
* Each entry corresponds to the path at the same index in `inkPaths`, and
|
|
6579
|
+
* is paired positionally with {@link inkPointTiltY}. Present only when at
|
|
6580
|
+
* least one point in the stroke reported a genuinely non-zero tilt: a
|
|
6581
|
+
* device that never reports tilt (a mouse, or a stylus with no tilt
|
|
6582
|
+
* sensor) leaves both arrays absent, the same way `inkPointPressures` is
|
|
6583
|
+
* omitted when pressure never varies. When present, the renderer converts
|
|
6584
|
+
* the raw `(tiltX, tiltY)` vector into a lean angle + magnitude (see
|
|
6585
|
+
* `pptx-viewer-shared`'s `tiltChannelsFromVectors`) and widens the stroke
|
|
6586
|
+
* perpendicular to the lean direction, approximating a chisel-tip
|
|
6587
|
+
* calligraphy nib.
|
|
6588
|
+
*/
|
|
6589
|
+
inkPointTiltX?: number[][];
|
|
6590
|
+
/** Per-path, per-point pen-tilt lean direction (degrees), paired with {@link inkPointTiltX}. */
|
|
6591
|
+
inkPointTiltY?: number[][];
|
|
6373
6592
|
/** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
|
|
6374
6593
|
extensionXml?: PptxGraphicFrameExtension[];
|
|
6375
6594
|
}
|
|
@@ -6403,6 +6622,20 @@ interface ContentPartInkStroke {
|
|
|
6403
6622
|
* {@link tiltAngles}.
|
|
6404
6623
|
*/
|
|
6405
6624
|
tiltMagnitudes?: number[];
|
|
6625
|
+
/**
|
|
6626
|
+
* Which InkML channel pair {@link tiltAngles}/{@link tiltMagnitudes} were
|
|
6627
|
+
* decoded from: `'azimuthAltitude'` when the source declared `AZIMUTH`
|
|
6628
|
+
* (optionally paired with `ALTITUDE`); omitted (implying `OTx`/`OTy`, i.e.
|
|
6629
|
+
* `'vector'`) otherwise, including for tilt this library itself captured
|
|
6630
|
+
* from the Draw tool's `PointerEvent.tiltX`/`tiltY`.
|
|
6631
|
+
*
|
|
6632
|
+
* A save that has to rewrite this content part's InkML (see
|
|
6633
|
+
* `inkml-content-part-writer.ts`) uses this to re-declare the SAME channel
|
|
6634
|
+
* pair the file already used, rather than always converting to `OTx`/`OTy`;
|
|
6635
|
+
* the rendered lean is identical either way; only the written channel
|
|
6636
|
+
* NAMES differ.
|
|
6637
|
+
*/
|
|
6638
|
+
tiltEncoding?: 'vector' | 'azimuthAltitude';
|
|
6406
6639
|
}
|
|
6407
6640
|
/**
|
|
6408
6641
|
* A content-part element wrapped in `mc:AlternateContent`.
|
|
@@ -7227,17 +7460,28 @@ interface PptxNativeAnimation {
|
|
|
7227
7460
|
*/
|
|
7228
7461
|
afterEffect?: boolean;
|
|
7229
7462
|
/**
|
|
7230
|
-
* "After animation" end-state behaviour
|
|
7231
|
-
*
|
|
7232
|
-
*
|
|
7233
|
-
*
|
|
7234
|
-
*
|
|
7235
|
-
*
|
|
7236
|
-
*
|
|
7463
|
+
* "After animation" end-state behaviour: dim-to-colour, hide-after-
|
|
7464
|
+
* animation, or hide-on-next-click. Populated directly by the
|
|
7465
|
+
* native-timing parser (`native-animation-after-effect.ts`) when the
|
|
7466
|
+
* effect's `p:cTn/p:subTnLst` carries PowerPoint's genuine after-effect
|
|
7467
|
+
* shape, so a real-world deck's build shows up here even with no
|
|
7468
|
+
* `pptx:editorMeta`. `applyAfterAnimationFromEditorList` in
|
|
7469
|
+
* `pptx-viewer-shared` overrides this from the matching
|
|
7470
|
+
* {@link PptxElementAnimation.afterAnimation} entry when the editor's
|
|
7471
|
+
* per-element animation list has one (the model the animation panel
|
|
7472
|
+
* writes `afterAnimation` into), so an edit through our own UI always wins.
|
|
7237
7473
|
*/
|
|
7238
7474
|
afterAnimationAction?: PptxAfterAnimationAction;
|
|
7239
|
-
/** Dim-to color hex, present when {@link afterAnimationAction} is `dimToColor`. */
|
|
7475
|
+
/** Dim-to color hex, present when {@link afterAnimationAction} is `dimToColor` AND the dim target is an already-resolved `a:srgbClr`. */
|
|
7240
7476
|
afterAnimationColor?: string;
|
|
7477
|
+
/**
|
|
7478
|
+
* The typed theme reference when a `dimToColor` target is an `a:schemeClr`
|
|
7479
|
+
* (e.g. `accent2`) instead of `a:srgbClr`: this parse layer has no theme to
|
|
7480
|
+
* resolve it to sRGB with (see {@link afterAnimationColor}'s doc), so a
|
|
7481
|
+
* playback consumer resolves this against the deck's theme colour map.
|
|
7482
|
+
* Mutually exclusive with {@link afterAnimationColor} being set.
|
|
7483
|
+
*/
|
|
7484
|
+
afterAnimationColorRef?: PptxThemeColorRef;
|
|
7241
7485
|
/**
|
|
7242
7486
|
* Parsed `p:animEffect` filter descriptor. `presetId`/`presetClass` remain
|
|
7243
7487
|
* the primary effect selector (see `resolveEffect` in `pptx-viewer-shared`);
|
|
@@ -7369,13 +7613,46 @@ interface PptxAnimationKeyframe {
|
|
|
7369
7613
|
* fidelity; consumers may use it to drive computed animation values.
|
|
7370
7614
|
*/
|
|
7371
7615
|
fmla?: string;
|
|
7616
|
+
/**
|
|
7617
|
+
* The typed theme reference when a `p:val/p:clrVal` stop is an
|
|
7618
|
+
* `a:schemeClr` (e.g. `accent1`), including any `tint`/`shade`/`lumMod`/
|
|
7619
|
+
* `lumOff`/`alpha` children. {@link value} keeps the bare scheme name for
|
|
7620
|
+
* round-trip; a playback consumer needs this ref (resolved against the
|
|
7621
|
+
* deck's theme colour map) to turn the stop into a real CSS colour, which
|
|
7622
|
+
* the bare name alone cannot do. Absent for an `a:srgbClr` stop, whose
|
|
7623
|
+
* {@link value} is already a resolved `#rrggbb` hex string.
|
|
7624
|
+
*/
|
|
7625
|
+
colorRef?: PptxThemeColorRef;
|
|
7372
7626
|
}
|
|
7373
7627
|
/** One generic `p:anim` behaviour inside a composed PowerPoint effect. */
|
|
7374
7628
|
interface PptxAttributeAnimation {
|
|
7375
7629
|
/** Lowercased target attribute from `p:attrNameLst`. */
|
|
7376
7630
|
attrName: string;
|
|
7377
|
-
/**
|
|
7631
|
+
/**
|
|
7632
|
+
* Authored value stops from this behaviour's `p:tavLst`. Empty when the
|
|
7633
|
+
* behaviour instead uses the simpler `from`/`to`/`by` attribute form (see
|
|
7634
|
+
* below); at least one of `keyframes`, `from`/`to`, or `by` is present.
|
|
7635
|
+
*/
|
|
7378
7636
|
keyframes: PptxAnimationKeyframe[];
|
|
7637
|
+
/**
|
|
7638
|
+
* `p:anim/@_from` (a formula string, ECMA-376 S19.5.4 CT_TLAnimateBehavior):
|
|
7639
|
+
* the absolute starting value, used instead of `p:tavLst` when the
|
|
7640
|
+
* behaviour only has two endpoints. PowerPoint writes this form for some
|
|
7641
|
+
* built-in presets (e.g. "Grow And Turn"'s `ppt_x` fly-in): a bare
|
|
7642
|
+
* `p:anim from="..." to="..."` with no `p:tavLst` child at all. See
|
|
7643
|
+
* `animation-ppt-formula-ground-truth.md` in `pptx-viewer-shared` for the
|
|
7644
|
+
* real-PowerPoint sample this was found in.
|
|
7645
|
+
*/
|
|
7646
|
+
from?: string;
|
|
7647
|
+
/** `p:anim/@_to`: the absolute ending value. See {@link from}. */
|
|
7648
|
+
to?: string;
|
|
7649
|
+
/**
|
|
7650
|
+
* `p:anim/@_by`: a DELTA formula added to wherever the attribute already
|
|
7651
|
+
* stands (as opposed to `from`/`to`'s absolute values), typically paired
|
|
7652
|
+
* with `p:cBhvr/@_additive="sum"` so it composites with a sibling
|
|
7653
|
+
* behaviour driving the same attribute instead of replacing it.
|
|
7654
|
+
*/
|
|
7655
|
+
by?: string;
|
|
7379
7656
|
/** Duration from this behaviour's nested `p:cTn/@dur`. */
|
|
7380
7657
|
durationMs?: number;
|
|
7381
7658
|
/** Start offset from this behaviour's nested `p:stCondLst`. */
|
|
@@ -7384,8 +7661,11 @@ interface PptxAttributeAnimation {
|
|
|
7384
7661
|
* Interpolation mode from this behaviour's own `@_calcmode`
|
|
7385
7662
|
* (ST_TLAnimateBehaviorCalcMode, ECMA-376 S19.5.2): `discrete` snaps to
|
|
7386
7663
|
* each `p:tav` stop with no interpolation, `lin` (the OOXML default)
|
|
7387
|
-
* interpolates linearly
|
|
7388
|
-
*
|
|
7664
|
+
* interpolates linearly. `fmla` as the WHOLE behaviour's calc mode has
|
|
7665
|
+
* never been observed in a real PowerPoint file and is not consulted at
|
|
7666
|
+
* playback; what PowerPoint actually writes is `calcmode="lin"` with a
|
|
7667
|
+
* per-stop `p:tav/@fmla` (see {@link PptxAnimationKeyframe.fmla}), which
|
|
7668
|
+
* IS consulted regardless of this field's value. Absent means `lin`.
|
|
7389
7669
|
*/
|
|
7390
7670
|
calcMode?: 'discrete' | 'lin' | 'fmla';
|
|
7391
7671
|
}
|
|
@@ -7411,16 +7691,31 @@ interface PptxColorAnimation {
|
|
|
7411
7691
|
* companion to `@dir` for HSL colour-space animations.
|
|
7412
7692
|
*/
|
|
7413
7693
|
path?: string;
|
|
7414
|
-
/** Starting color as hex string. */
|
|
7694
|
+
/** Starting color as hex string, or the bare scheme name (e.g. `accent1`) for a theme colour; see {@link fromColorRef}. */
|
|
7415
7695
|
fromColor?: string;
|
|
7416
|
-
/** Ending color as hex string. */
|
|
7696
|
+
/** Ending color as hex string, or the bare scheme name; see {@link toColorRef}. */
|
|
7417
7697
|
toColor?: string;
|
|
7418
7698
|
/**
|
|
7419
|
-
* Color delta (for "by" animations) as hex string
|
|
7420
|
-
*
|
|
7421
|
-
*
|
|
7699
|
+
* Color delta (for "by" animations) as hex string, or the bare scheme name;
|
|
7700
|
+
* see {@link byColorRef}. For HSL colour-space animations this retains the
|
|
7701
|
+
* historical byte-packed compatibility value; consumers should prefer
|
|
7702
|
+
* {@link hslDelta}, which preserves signed values.
|
|
7422
7703
|
*/
|
|
7423
7704
|
byColor?: string;
|
|
7705
|
+
/**
|
|
7706
|
+
* The typed theme reference when {@link fromColor} is an `a:schemeClr`
|
|
7707
|
+
* (including `tint`/`shade`/`lumMod`/`lumOff`/`alpha`), so playback can
|
|
7708
|
+
* resolve it against the deck's theme colour map. Absent when `fromColor`
|
|
7709
|
+
* is already a resolved `#rrggbb` hex (an `a:srgbClr` stop).
|
|
7710
|
+
*/
|
|
7711
|
+
fromColorRef?: PptxThemeColorRef;
|
|
7712
|
+
/** The typed theme reference for {@link toColor}; see {@link fromColorRef}. */
|
|
7713
|
+
toColorRef?: PptxThemeColorRef;
|
|
7714
|
+
/**
|
|
7715
|
+
* The typed theme reference for {@link byColor} (RGB colour space only; an
|
|
7716
|
+
* HSL `by` is a signed delta, never a theme colour). See {@link fromColorRef}.
|
|
7717
|
+
*/
|
|
7718
|
+
byColorRef?: PptxThemeColorRef;
|
|
7424
7719
|
/**
|
|
7425
7720
|
* Typed HSL delta from `p:by/p:hsl`. This preserves signed values and their
|
|
7426
7721
|
* OOXML units without forcing them through the legacy byte-packed `byColor`
|
|
@@ -8633,13 +8928,13 @@ interface PptxSlide {
|
|
|
8633
8928
|
backgroundPattern?: PptxSlideBackgroundPattern;
|
|
8634
8929
|
/**
|
|
8635
8930
|
* `<p:bgPr/@shadeToTitle>`: boolean flag instructing the renderer to
|
|
8636
|
-
*
|
|
8637
|
-
*
|
|
8638
|
-
*
|
|
8931
|
+
* anchor the background gradient on the title placeholder as a
|
|
8932
|
+
* rectangular path gradient (COM-measured against real PowerPoint;
|
|
8933
|
+
* it does NOT recolour toward the title's text colour, despite the
|
|
8934
|
+
* attribute's name). Parsed and round-tripped here on the core model;
|
|
8935
|
+
* the actual visual effect is applied by `pptx-viewer-shared`'s
|
|
8639
8936
|
* `getSlideBackgroundStyle` (see `render/background-shade-to-title.ts`),
|
|
8640
|
-
* consumed by all five bindings, not by core itself.
|
|
8641
|
-
* docstring explains the approximation: no published ECMA-376 or
|
|
8642
|
-
* MS-ODRAWXML text documents the exact legacy blend. Legacy PowerPoint
|
|
8937
|
+
* consumed by all five bindings, not by core itself. Legacy PowerPoint
|
|
8643
8938
|
* 97-2003 hint, not observed in any real-world corpus file this project
|
|
8644
8939
|
* has collected and not settable from any modern PowerPoint UI; see
|
|
8645
8940
|
* `docs/guide/limitations.md`.
|