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/index.d.ts
CHANGED
|
@@ -2165,6 +2165,29 @@ interface PptxElementBase {
|
|
|
2165
2165
|
y: number;
|
|
2166
2166
|
width: number;
|
|
2167
2167
|
height: number;
|
|
2168
|
+
/**
|
|
2169
|
+
* The exact EMU integer `x` was parsed from (the `a:off/@_x` this
|
|
2170
|
+
* element's own `a:xfrm` carried on load), when the parser could resolve
|
|
2171
|
+
* one. `x` itself is always `Math.round(xEmu / EMU_PER_PX)` at parse
|
|
2172
|
+
* time, but that rounding is lossy: re-deriving EMU from `x` on save
|
|
2173
|
+
* (`Math.round(x * EMU_PER_PX)`) can drift from the original value by up
|
|
2174
|
+
* to half a pixel's worth of EMU on every load/save cycle even when
|
|
2175
|
+
* nothing touched this element. Kept alongside `x` (not instead of it) so
|
|
2176
|
+
* every consumer that only cares about on-screen position is unaffected;
|
|
2177
|
+
* only the save-side xfrm writer (`resolveXfrmEmu` in
|
|
2178
|
+
* `xfrm-emu-resolution.ts`) reads this, and only when `x` still equals
|
|
2179
|
+
* `Math.round(xEmu / EMU_PER_PX)` (i.e. nothing moved this element since
|
|
2180
|
+
* load) does it re-emit `xEmu` verbatim instead of re-quantizing `x`.
|
|
2181
|
+
* `undefined` for an SDK-created element or one whose transform could not
|
|
2182
|
+
* be resolved to a usable `a:off` on load.
|
|
2183
|
+
*/
|
|
2184
|
+
xEmu?: number;
|
|
2185
|
+
/** The exact EMU integer `y` was parsed from (`a:off/@_y`). See {@link xEmu}. */
|
|
2186
|
+
yEmu?: number;
|
|
2187
|
+
/** The exact EMU integer `width` was parsed from (`a:ext/@_cx`). See {@link xEmu}. */
|
|
2188
|
+
widthEmu?: number;
|
|
2189
|
+
/** The exact EMU integer `height` was parsed from (`a:ext/@_cy`). See {@link xEmu}. */
|
|
2190
|
+
heightEmu?: number;
|
|
2168
2191
|
rotation?: number;
|
|
2169
2192
|
/** Skew along the X axis in degrees (parsed from `@_skewX` in 1/60000ths of a degree). */
|
|
2170
2193
|
skewX?: number;
|
|
@@ -2684,6 +2707,21 @@ interface PptxChartUserShapeGroupTransform {
|
|
|
2684
2707
|
cx: number;
|
|
2685
2708
|
cy: number;
|
|
2686
2709
|
};
|
|
2710
|
+
/**
|
|
2711
|
+
* The group's own rotation in degrees (`a:xfrm/@rot`, stored in 60,000ths
|
|
2712
|
+
* of a degree), when present. Rotates the whole group, and everything
|
|
2713
|
+
* grouped inside it, as a rigid body about the CENTRE of the group's own
|
|
2714
|
+
* box ({@link off}/{@link ext}); see `flattenChartUserShapes` in
|
|
2715
|
+
* `chart-user-shapes-parser.ts` for how this composes onto each contained
|
|
2716
|
+
* leaf's own {@link PptxChartUserShapeGroupChild.rotation}. Verified
|
|
2717
|
+
* against real PowerPoint (COM): a `cdr:grpSp`'s `cdr:grpSpPr/a:xfrm` does
|
|
2718
|
+
* carry `rot` the same way an ordinary shape's does.
|
|
2719
|
+
*/
|
|
2720
|
+
rotation?: number;
|
|
2721
|
+
/** The group's own horizontal flip (`a:xfrm/@flipH`), when present; composes onto children by XOR, see {@link rotation}'s doc. */
|
|
2722
|
+
flipH?: boolean;
|
|
2723
|
+
/** The group's own vertical flip (`a:xfrm/@flipV`), when present; composes onto children by XOR, see {@link rotation}'s doc. */
|
|
2724
|
+
flipV?: boolean;
|
|
2687
2725
|
}
|
|
2688
2726
|
/**
|
|
2689
2727
|
* One shape grouped inside a `cdr:grpSp` (or a nested `cdr:grpSp` itself).
|
|
@@ -2715,6 +2753,23 @@ interface PptxChartUserShapeGroupChild {
|
|
|
2715
2753
|
strokeWidth?: number;
|
|
2716
2754
|
/** Text paragraphs of the shape's `txBody`, when present. */
|
|
2717
2755
|
paragraphs?: PptxChartUserShapeParagraph[];
|
|
2756
|
+
/**
|
|
2757
|
+
* A `pic` child's alt text (`cdr:nvPicPr/cdr:cNvPr/@descr`), when present.
|
|
2758
|
+
* Editable independently of {@link rawXml}'s otherwise-verbatim content:
|
|
2759
|
+
* the serializer patches only this attribute onto the cloned raw node.
|
|
2760
|
+
*/
|
|
2761
|
+
altText?: string;
|
|
2762
|
+
/**
|
|
2763
|
+
* This child's OWN rotation in degrees (`a:xfrm/@rot`), when present.
|
|
2764
|
+
* Composes with every enclosing group's own
|
|
2765
|
+
* {@link PptxChartUserShapeGroupTransform.rotation} (added) to produce the
|
|
2766
|
+
* leaf's final on-screen rotation; see `flattenChartUserShapes`.
|
|
2767
|
+
*/
|
|
2768
|
+
rotation?: number;
|
|
2769
|
+
/** This child's OWN horizontal flip (`a:xfrm/@flipH`); composes with an ancestor group's flip by XOR. */
|
|
2770
|
+
flipH?: boolean;
|
|
2771
|
+
/** This child's OWN vertical flip (`a:xfrm/@flipV`); composes with an ancestor group's flip by XOR. */
|
|
2772
|
+
flipV?: boolean;
|
|
2718
2773
|
/**
|
|
2719
2774
|
* Verbatim source XML of a `pic`/`graphicFrame` child, or of this node
|
|
2720
2775
|
* itself when `kind === 'grpSp'` and the nested group is untouched since
|
|
@@ -2773,6 +2828,29 @@ interface PptxChartUserShape {
|
|
|
2773
2828
|
strokeWidth?: number;
|
|
2774
2829
|
/** Text paragraphs of the shape's `txBody`, when present. */
|
|
2775
2830
|
paragraphs?: PptxChartUserShapeParagraph[];
|
|
2831
|
+
/**
|
|
2832
|
+
* A `pic` anchor's alt text (`cdr:nvPicPr/cdr:cNvPr/@descr`), when
|
|
2833
|
+
* present. Editable independently of {@link rawXml}'s otherwise-verbatim
|
|
2834
|
+
* content: the serializer patches only this attribute onto the cloned
|
|
2835
|
+
* raw node, so a picture's blip and other markup are untouched.
|
|
2836
|
+
*/
|
|
2837
|
+
altText?: string;
|
|
2838
|
+
/**
|
|
2839
|
+
* This shape's OWN rotation in degrees (`a:xfrm/@rot`, on `spPr/a:xfrm`
|
|
2840
|
+
* for `sp`/`cxnSp`/`pic`, or directly on a top-level `graphicFrame`'s own
|
|
2841
|
+
* `a:xfrm`), when present. A top-level anchor's position/size is governed
|
|
2842
|
+
* by {@link from}/{@link to}/{@link ext}, never by this `a:xfrm`'s own
|
|
2843
|
+
* `off`/`ext` (see {@link rawXml}'s doc), but `rot`/`flipH`/`flipV` on that
|
|
2844
|
+
* same `a:xfrm` DO apply visually: verified against real PowerPoint (COM),
|
|
2845
|
+
* which writes e.g. `<a:xfrm rot="1800000"><a:off .../><a:ext .../></a:xfrm>`
|
|
2846
|
+
* on a rotated overlay shape's `spPr`, with the `off`/`ext` values
|
|
2847
|
+
* unrelated to the anchor's own `cdr:from`/`cdr:to`.
|
|
2848
|
+
*/
|
|
2849
|
+
rotation?: number;
|
|
2850
|
+
/** This shape's OWN horizontal flip (`a:xfrm/@flipH`); see {@link rotation}'s doc. */
|
|
2851
|
+
flipH?: boolean;
|
|
2852
|
+
/** This shape's OWN vertical flip (`a:xfrm/@flipV`); see {@link rotation}'s doc. */
|
|
2853
|
+
flipV?: boolean;
|
|
2776
2854
|
/**
|
|
2777
2855
|
* Verbatim source XML of a `pic` or `graphicFrame` anchor child (the
|
|
2778
2856
|
* `cdr:pic` / `cdr:graphicFrame` node itself, not the enclosing anchor),
|
|
@@ -2802,7 +2880,7 @@ interface PptxChartUserShape {
|
|
|
2802
2880
|
* @example
|
|
2803
2881
|
* ```ts
|
|
2804
2882
|
* const type: PptxChartType = "bar";
|
|
2805
|
-
* // => "bar"
|
|
2883
|
+
* // => "bar": one of: "bar" | "line" | "pie" | "doughnut" | "area" | "scatter" | …
|
|
2806
2884
|
* ```
|
|
2807
2885
|
*/
|
|
2808
2886
|
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';
|
|
@@ -2837,7 +2915,7 @@ type PptxBar3DShape = 'box' | 'cone' | 'coneToMax' | 'cylinder' | 'pyramid' | 'p
|
|
|
2837
2915
|
* @example
|
|
2838
2916
|
* ```ts
|
|
2839
2917
|
* const type: PptxChartTrendlineType = "linear";
|
|
2840
|
-
* // => "linear"
|
|
2918
|
+
* // => "linear": one of: "linear" | "exponential" | "logarithmic" | "polynomial" | "power" | "movingAvg"
|
|
2841
2919
|
* ```
|
|
2842
2920
|
*/
|
|
2843
2921
|
type PptxChartTrendlineType = 'linear' | 'exponential' | 'logarithmic' | 'polynomial' | 'power' | 'movingAvg';
|
|
@@ -2888,7 +2966,7 @@ type PptxChartErrBarType = 'both' | 'minus' | 'plus';
|
|
|
2888
2966
|
* @example
|
|
2889
2967
|
* ```ts
|
|
2890
2968
|
* const valType: PptxChartErrValType = "percentage";
|
|
2891
|
-
* // => "percentage"
|
|
2969
|
+
* // => "percentage": one of: "cust" | "fixedVal" | "percentage" | "stdDev" | "stdErr"
|
|
2892
2970
|
* ```
|
|
2893
2971
|
*/
|
|
2894
2972
|
type PptxChartErrValType = 'cust' | 'fixedVal' | 'percentage' | 'stdDev' | 'stdErr';
|
|
@@ -3007,6 +3085,14 @@ interface PptxChartDataPoint {
|
|
|
3007
3085
|
bubble3D?: boolean;
|
|
3008
3086
|
/** Per-point picture-fill flags (`c:dPt/c:pictureOptions`). */
|
|
3009
3087
|
picture?: PptxChartDataPointPicture;
|
|
3088
|
+
/**
|
|
3089
|
+
* This point's identity GUID (`c:dPt/c:extLst/c:ext/c16:uniqueId/@val`,
|
|
3090
|
+
* the Office 2014+ `{C3380CC4-5D6E-409C-BE32-E72D297353CC}` chart
|
|
3091
|
+
* extension), read-only here: an edited point keeps its existing
|
|
3092
|
+
* `c:extLst` as passthrough (see `chart-datapoint-serializer.ts`), so this
|
|
3093
|
+
* field exists for introspection rather than round-trip.
|
|
3094
|
+
*/
|
|
3095
|
+
uniqueId?: string;
|
|
3010
3096
|
}
|
|
3011
3097
|
/** Schema values accepted by `c:dLblPos`. */
|
|
3012
3098
|
type PptxChartDataLabelPosition = 'bestFit' | 'b' | 'ctr' | 'inBase' | 'inEnd' | 'l' | 'outEnd' | 'r' | 't';
|
|
@@ -3083,7 +3169,7 @@ interface PptxChartAxisFormatting extends PptxChartAxisLabelFormatting {
|
|
|
3083
3169
|
axPos?: 'b' | 'l' | 'r' | 't';
|
|
3084
3170
|
/** Unique axis identifier (c:axId/@val) used to link series to axes. */
|
|
3085
3171
|
axisId?: number;
|
|
3086
|
-
/** Cross-axis identifier
|
|
3172
|
+
/** Cross-axis identifier: the axis this axis crosses. */
|
|
3087
3173
|
crossAxisId?: number;
|
|
3088
3174
|
/** Automatic crossing mode (`c:crosses`). Mutually exclusive with `crossesAt`. */
|
|
3089
3175
|
crosses?: 'autoZero' | 'min' | 'max';
|
|
@@ -3335,6 +3421,54 @@ interface PptxChartSeries {
|
|
|
3335
3421
|
waterfallOptions?: PptxChartWaterfallOptions;
|
|
3336
3422
|
regionMapOptions?: PptxChartRegionMapOptions;
|
|
3337
3423
|
treemapOptions?: PptxChartTreemapOptions;
|
|
3424
|
+
/**
|
|
3425
|
+
* Series-level picture-fill flags (`c:ser/c:pictureOptions`), legal
|
|
3426
|
+
* wherever a per-point `c:dPt/c:pictureOptions` is (CT_BarSer): paints
|
|
3427
|
+
* EVERY point in the series with one picture unless a `c:dPt` overrides it
|
|
3428
|
+
* for that point alone. A point's own {@link PptxChartDataPoint.picture}
|
|
3429
|
+
* takes precedence entirely (not merged field-by-field) when it resolves
|
|
3430
|
+
* its own image; renderers fall back to this series-level picture only
|
|
3431
|
+
* when the point has none of its own.
|
|
3432
|
+
*/
|
|
3433
|
+
picture?: PptxChartDataPointPicture;
|
|
3434
|
+
/**
|
|
3435
|
+
* This series' identity GUID (`c:ser/c:extLst/c:ext/c16:uniqueId/@val`,
|
|
3436
|
+
* the Office 2014+ `{C3380CC4-5D6E-409C-BE32-E72D297353CC}` chart
|
|
3437
|
+
* extension). PowerPoint uses it to track a series across edits and
|
|
3438
|
+
* collaborators independent of its `c:idx`/`c:order` position (the same
|
|
3439
|
+
* role animation targeting and CRDT reconciliation need). An edited
|
|
3440
|
+
* existing series keeps its own `c:extLst` as passthrough; a NEW series
|
|
3441
|
+
* added by cloning an existing one as a template is given a freshly
|
|
3442
|
+
* generated id rather than duplicating the template's (see
|
|
3443
|
+
* `regenerateClonedUniqueId` in `chart-series-identity.ts`), since two
|
|
3444
|
+
* series sharing one identity is exactly what this extension exists to
|
|
3445
|
+
* prevent.
|
|
3446
|
+
*/
|
|
3447
|
+
uniqueId?: string;
|
|
3448
|
+
}
|
|
3449
|
+
/**
|
|
3450
|
+
* A series PowerPoint's "Chart Filters" feature hid from the plot while
|
|
3451
|
+
* keeping it in the workbook (`c:<type>Chart/c:extLst/c:ext
|
|
3452
|
+
* [@uri={02D57815-91ED-43cb-92C2-25804820EDAC}]/c15:filtered<Type>Series
|
|
3453
|
+
* /c15:ser`). Read-mostly: {@link PptxChartData.filteredSeries} exists for
|
|
3454
|
+
* introspection (AI tools, "unhide filtered series" UI) and round-trips as
|
|
3455
|
+
* passthrough through the preserved chart XML when untouched. See
|
|
3456
|
+
* `utils/chart-filtered-series.ts` for the parse rules and the idx-collision
|
|
3457
|
+
* fix this modelling enables on save.
|
|
3458
|
+
*/
|
|
3459
|
+
interface PptxChartFilteredSeries {
|
|
3460
|
+
/** `c15:ser/c:idx/@val`, the workbook column position this series still occupies. */
|
|
3461
|
+
idx: number;
|
|
3462
|
+
/** `c15:ser/c:order/@val`, defaulting to {@link idx} when absent. */
|
|
3463
|
+
order: number;
|
|
3464
|
+
/** Series name, from the hidden series' own `c:tx` cache. */
|
|
3465
|
+
name?: string;
|
|
3466
|
+
/** Category labels, from the hidden series' own `c:cat` cache. */
|
|
3467
|
+
categories?: string[];
|
|
3468
|
+
/** Data values, from the hidden series' own `c:val` cache. */
|
|
3469
|
+
values?: number[];
|
|
3470
|
+
/** This hidden series' own identity GUID (`c16:uniqueId`), when present. */
|
|
3471
|
+
uniqueId?: string;
|
|
3338
3472
|
}
|
|
3339
3473
|
/**
|
|
3340
3474
|
* Chart-level data-label options (`c:dLbls` directly under a chart-type
|
|
@@ -3358,6 +3492,19 @@ interface PptxChartDataLabelOptions {
|
|
|
3358
3492
|
separator?: string;
|
|
3359
3493
|
/** Show leader lines where supported (`c:showLeaderLines`). */
|
|
3360
3494
|
showLeaderLines?: boolean;
|
|
3495
|
+
/**
|
|
3496
|
+
* Leader-line stroke styling for offset (pie/doughnut `outEnd`/`bestFit`)
|
|
3497
|
+
* labels. Resolved from the base `c:leaderLines/c:spPr` when present, else
|
|
3498
|
+
* falling back to the Office 2013+ chart15 extension's mirror
|
|
3499
|
+
* (`c:extLst/c:ext/c15:leaderLines/c:spPr`, uri
|
|
3500
|
+
* `{CE6537A1-D6FC-4f65-9D91-7224C49458BB}`), which is the one PowerPoint
|
|
3501
|
+
* itself treats as authoritative when both are present. Confirmed against
|
|
3502
|
+
* `e2e/fixtures/issue-132-gradient-fill.pptx` and
|
|
3503
|
+
* `e2e/fixtures/issue-132-hr-deck.pptx`, both of which write only the
|
|
3504
|
+
* extension form. `undefined` leaves the renderer's own default leader-line
|
|
3505
|
+
* stroke.
|
|
3506
|
+
*/
|
|
3507
|
+
leaderLineStyle?: PptxChartShapeProps;
|
|
3361
3508
|
/**
|
|
3362
3509
|
* Label position (`c:dLblPos`). Valid values depend on the chart type
|
|
3363
3510
|
* (`ctr`, `inEnd`, `inBase`, `outEnd`, `bestFit`, `l`, `r`, `t`, `b`).
|
|
@@ -3511,12 +3658,12 @@ interface PptxBubbleChartOptions {
|
|
|
3511
3658
|
*
|
|
3512
3659
|
* All fields are optional and round-trip verbatim.
|
|
3513
3660
|
*
|
|
3514
|
-
* - {@link rotX}
|
|
3515
|
-
* - {@link rotY}
|
|
3516
|
-
* - {@link depthPercent}
|
|
3517
|
-
* - {@link rAngAx}
|
|
3518
|
-
* - {@link perspective}
|
|
3519
|
-
* - {@link hPercent}
|
|
3661
|
+
* - {@link rotX}: X-axis rotation in degrees (-90…90).
|
|
3662
|
+
* - {@link rotY}: Y-axis rotation in degrees (0…360).
|
|
3663
|
+
* - {@link depthPercent}: chart depth as a percentage of base width.
|
|
3664
|
+
* - {@link rAngAx}: `true` if axes meet at right angles.
|
|
3665
|
+
* - {@link perspective}: perspective angle in degrees (0…240).
|
|
3666
|
+
* - {@link hPercent}: height as a percentage of chart width.
|
|
3520
3667
|
*/
|
|
3521
3668
|
interface PptxChartView3D {
|
|
3522
3669
|
rotX?: number;
|
|
@@ -3530,12 +3677,17 @@ interface PptxChartView3D {
|
|
|
3530
3677
|
* Chart "chrome" flags from `c:chart` that round-trip cleanly even when
|
|
3531
3678
|
* rendering ignores them.
|
|
3532
3679
|
*
|
|
3533
|
-
* - {@link autoTitleDeleted}
|
|
3680
|
+
* - {@link autoTitleDeleted}: `c:autoTitleDeleted/@val`. Suppresses the
|
|
3534
3681
|
* auto-generated title for single-series charts.
|
|
3535
|
-
* - {@link dispBlanksAs}
|
|
3682
|
+
* - {@link dispBlanksAs}: `c:dispBlanksAs/@val`. How blank cells
|
|
3536
3683
|
* render: `"gap"`, `"zero"`, or `"span"`.
|
|
3537
|
-
* - {@link showDLblsOverMax}
|
|
3684
|
+
* - {@link showDLblsOverMax}: `c:showDLblsOverMax/@val`. Keeps data
|
|
3538
3685
|
* labels visible for points exceeding the value-axis maximum.
|
|
3686
|
+
* - {@link dispNaAsBlank}: the Office 2017+ chart extension
|
|
3687
|
+
* `c:extLst/c:ext/c16r3:dataDisplayOptions16/c16r3:dispNaAsBlank/@val`
|
|
3688
|
+
* (uri `{56B9EC1D-385E-4148-901F-78D8002777C0}`), PowerPoint's "Show #N/A
|
|
3689
|
+
* as an empty cell" chart option. Confirmed against real corpus markup
|
|
3690
|
+
* (`e2e/fixtures/chart-data-fidelity.pptx`).
|
|
3539
3691
|
*
|
|
3540
3692
|
* `c:plotVisOnly` lives on {@link PptxChartData.plotVisibleOnly} and is
|
|
3541
3693
|
* intentionally not duplicated here.
|
|
@@ -3544,6 +3696,7 @@ interface PptxChartChrome {
|
|
|
3544
3696
|
autoTitleDeleted?: boolean;
|
|
3545
3697
|
dispBlanksAs?: 'gap' | 'zero' | 'span';
|
|
3546
3698
|
showDLblsOverMax?: boolean;
|
|
3699
|
+
dispNaAsBlank?: boolean;
|
|
3547
3700
|
}
|
|
3548
3701
|
/** Manual chart placement from `c:layout/c:manualLayout` (CT_ManualLayout). */
|
|
3549
3702
|
interface PptxChartManualLayout {
|
|
@@ -3639,6 +3792,13 @@ interface PptxChartData {
|
|
|
3639
3792
|
categoryLevels?: string[][];
|
|
3640
3793
|
dateCategories?: PptxChartDateCategories;
|
|
3641
3794
|
series: PptxChartSeries[];
|
|
3795
|
+
/**
|
|
3796
|
+
* Series hidden from the plot by PowerPoint's "Chart Filters" feature
|
|
3797
|
+
* (Series tab) but still present in the workbook, aggregated across every
|
|
3798
|
+
* chart-type container (combo charts can carry more than one). Absent
|
|
3799
|
+
* when the chart has no such extension. See {@link PptxChartFilteredSeries}.
|
|
3800
|
+
*/
|
|
3801
|
+
filteredSeries?: PptxChartFilteredSeries[];
|
|
3642
3802
|
/** Chart style/formatting metadata. */
|
|
3643
3803
|
style?: PptxChartStyle;
|
|
3644
3804
|
/** Grouping mode for bar/area/line charts: 'clustered' | 'stacked' | 'percentStacked' */
|
|
@@ -3762,9 +3922,9 @@ interface PptxChartData {
|
|
|
3762
3922
|
/**
|
|
3763
3923
|
* Color cycling method from the chart color style part's `meth` attribute.
|
|
3764
3924
|
*
|
|
3765
|
-
* - `"cycle"
|
|
3766
|
-
* - `"withinLinear"
|
|
3767
|
-
* - `"acrossLinear"
|
|
3925
|
+
* - `"cycle"`: repeat the palette colours in order (default)
|
|
3926
|
+
* - `"withinLinear"`: gradient within each series
|
|
3927
|
+
* - `"acrossLinear"`: gradient across series
|
|
3768
3928
|
*/
|
|
3769
3929
|
colorMethod?: 'cycle' | 'withinLinear' | 'acrossLinear';
|
|
3770
3930
|
/** Internal source color-style part path used for lossless dirty saves. */
|
|
@@ -6327,13 +6487,14 @@ interface MediaPptxElement extends PptxElementBase {
|
|
|
6327
6487
|
*/
|
|
6328
6488
|
isLinked?: boolean;
|
|
6329
6489
|
/**
|
|
6330
|
-
* Accessibility description from `p:nvGraphicFramePr/p:cNvPr/@descr
|
|
6331
|
-
*
|
|
6332
|
-
*
|
|
6333
|
-
*
|
|
6490
|
+
* Accessibility description. Read from `p:nvGraphicFramePr/p:cNvPr/@descr`
|
|
6491
|
+
* for the `p:graphicFrame`-shaped (SDK-created) media form, or from
|
|
6492
|
+
* `p:nvPicPr/p:cNvPr/@descr` for the `p:pic`-shaped media form (real
|
|
6493
|
+
* PowerPoint's usual authoring shape for a video/audio placeholder); see
|
|
6494
|
+
* `PptxHandlerRuntimePictureParsing.ts`.
|
|
6334
6495
|
*/
|
|
6335
6496
|
altText?: string;
|
|
6336
|
-
/** Accessibility title from `p:
|
|
6497
|
+
/** Accessibility title, from the same `@title` attribute on whichever `p:cNvPr` the media form uses. Same scope note as {@link altText}. */
|
|
6337
6498
|
title?: string;
|
|
6338
6499
|
/** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
|
|
6339
6500
|
extensionXml?: PptxGraphicFrameExtension[];
|
|
@@ -6360,6 +6521,46 @@ interface GroupPptxElement extends PptxElementBase {
|
|
|
6360
6521
|
children: PptxElement[];
|
|
6361
6522
|
/** Fill style extracted from the group's `p:grpSpPr`, used for `a:grpFill` inheritance. */
|
|
6362
6523
|
groupFill?: ShapeStyle;
|
|
6524
|
+
/**
|
|
6525
|
+
* The SAME `p:grpSpPr` extraction as {@link groupFill}, kept whenever the
|
|
6526
|
+
* group carries a `p:grpSpPr` at all, regardless of whether it resolved to
|
|
6527
|
+
* a paintable fill.
|
|
6528
|
+
*
|
|
6529
|
+
* `groupFill` is `undefined` unless the group has a real fill, because
|
|
6530
|
+
* `getGroupChildParentFill`/`groupChildInheritedFill` (the `a:grpFill`
|
|
6531
|
+
* inheritance chain) must keep chaining through an ancestor's fill when
|
|
6532
|
+
* THIS group has none of its own. A group whose `p:grpSpPr` authors only
|
|
6533
|
+
* `a:effectLst` (shadow/glow/soft-edge/reflection, no fill) needs those
|
|
6534
|
+
* effects to still reach the renderer, so they are kept here under a name
|
|
6535
|
+
* that carries no fill-inheritance meaning. Currently only reflection is
|
|
6536
|
+
* read from it (`getComputedEffectStyle`); the rest of `a:effectLst` on a
|
|
6537
|
+
* group remains unsupported.
|
|
6538
|
+
*/
|
|
6539
|
+
groupEffectStyle?: ShapeStyle;
|
|
6540
|
+
/**
|
|
6541
|
+
* Exact EMU the group's own `a:chOff`/`a:chExt` (the coordinate space its
|
|
6542
|
+
* CHILDREN are authored in) were parsed from, alongside {@link
|
|
6543
|
+
* PptxElementBase.xEmu} etc for the group's own placement in its PARENT's
|
|
6544
|
+
* space. `undefined` when the source carried no usable `a:chOff`/`a:chExt`
|
|
6545
|
+
* (an SDK-created group, or one whose `a:xfrm` had no child-space data).
|
|
6546
|
+
*
|
|
6547
|
+
* Used by `group-xfrm-preservation.ts`'s `hasCapturedChildSpace` to decide
|
|
6548
|
+
* whether this group's original `a:chOff`/`a:chExt` can be re-emitted
|
|
6549
|
+
* verbatim (always true once captured, regardless of whether anything in
|
|
6550
|
+
* the subtree has moved or resized - only its DIRECT children's
|
|
6551
|
+
* `a:off`/`a:ext` are recomputed, via `invertChildIntoGroupSpace`, when
|
|
6552
|
+
* something changed), instead of the normalized `chOff 0,0` / `chExt ==
|
|
6553
|
+
* ext` space the writer falls back to when this is `undefined` (or
|
|
6554
|
+
* degenerate). See `group-shape-geometry.ts`'s module doc for why a group
|
|
6555
|
+
* needs two coordinate systems at all.
|
|
6556
|
+
*/
|
|
6557
|
+
chOffXEmu?: number;
|
|
6558
|
+
/** See {@link chOffXEmu}. */
|
|
6559
|
+
chOffYEmu?: number;
|
|
6560
|
+
/** See {@link chOffXEmu}. */
|
|
6561
|
+
chExtWidthEmu?: number;
|
|
6562
|
+
/** See {@link chOffXEmu}. */
|
|
6563
|
+
chExtHeightEmu?: number;
|
|
6363
6564
|
}
|
|
6364
6565
|
/**
|
|
6365
6566
|
* A freehand ink / drawing stroke captured with a stylus or mouse.
|
|
@@ -6388,6 +6589,24 @@ interface InkPptxElement extends PptxElementBase {
|
|
|
6388
6589
|
* variable-width strokes that reflect stylus/pen pressure.
|
|
6389
6590
|
*/
|
|
6390
6591
|
inkPointPressures?: number[][];
|
|
6592
|
+
/**
|
|
6593
|
+
* Per-path arrays of per-point pen-tilt lean direction (degrees, straight
|
|
6594
|
+
* from `PointerEvent.tiltX` on supporting hardware).
|
|
6595
|
+
*
|
|
6596
|
+
* Each entry corresponds to the path at the same index in `inkPaths`, and
|
|
6597
|
+
* is paired positionally with {@link inkPointTiltY}. Present only when at
|
|
6598
|
+
* least one point in the stroke reported a genuinely non-zero tilt: a
|
|
6599
|
+
* device that never reports tilt (a mouse, or a stylus with no tilt
|
|
6600
|
+
* sensor) leaves both arrays absent, the same way `inkPointPressures` is
|
|
6601
|
+
* omitted when pressure never varies. When present, the renderer converts
|
|
6602
|
+
* the raw `(tiltX, tiltY)` vector into a lean angle + magnitude (see
|
|
6603
|
+
* `pptx-viewer-shared`'s `tiltChannelsFromVectors`) and widens the stroke
|
|
6604
|
+
* perpendicular to the lean direction, approximating a chisel-tip
|
|
6605
|
+
* calligraphy nib.
|
|
6606
|
+
*/
|
|
6607
|
+
inkPointTiltX?: number[][];
|
|
6608
|
+
/** Per-path, per-point pen-tilt lean direction (degrees), paired with {@link inkPointTiltX}. */
|
|
6609
|
+
inkPointTiltY?: number[][];
|
|
6391
6610
|
/** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
|
|
6392
6611
|
extensionXml?: PptxGraphicFrameExtension[];
|
|
6393
6612
|
}
|
|
@@ -6421,6 +6640,20 @@ interface ContentPartInkStroke {
|
|
|
6421
6640
|
* {@link tiltAngles}.
|
|
6422
6641
|
*/
|
|
6423
6642
|
tiltMagnitudes?: number[];
|
|
6643
|
+
/**
|
|
6644
|
+
* Which InkML channel pair {@link tiltAngles}/{@link tiltMagnitudes} were
|
|
6645
|
+
* decoded from: `'azimuthAltitude'` when the source declared `AZIMUTH`
|
|
6646
|
+
* (optionally paired with `ALTITUDE`); omitted (implying `OTx`/`OTy`, i.e.
|
|
6647
|
+
* `'vector'`) otherwise, including for tilt this library itself captured
|
|
6648
|
+
* from the Draw tool's `PointerEvent.tiltX`/`tiltY`.
|
|
6649
|
+
*
|
|
6650
|
+
* A save that has to rewrite this content part's InkML (see
|
|
6651
|
+
* `inkml-content-part-writer.ts`) uses this to re-declare the SAME channel
|
|
6652
|
+
* pair the file already used, rather than always converting to `OTx`/`OTy`;
|
|
6653
|
+
* the rendered lean is identical either way; only the written channel
|
|
6654
|
+
* NAMES differ.
|
|
6655
|
+
*/
|
|
6656
|
+
tiltEncoding?: 'vector' | 'azimuthAltitude';
|
|
6424
6657
|
}
|
|
6425
6658
|
/**
|
|
6426
6659
|
* A content-part element wrapped in `mc:AlternateContent`.
|
|
@@ -7245,17 +7478,28 @@ interface PptxNativeAnimation {
|
|
|
7245
7478
|
*/
|
|
7246
7479
|
afterEffect?: boolean;
|
|
7247
7480
|
/**
|
|
7248
|
-
* "After animation" end-state behaviour
|
|
7249
|
-
*
|
|
7250
|
-
*
|
|
7251
|
-
*
|
|
7252
|
-
*
|
|
7253
|
-
*
|
|
7254
|
-
*
|
|
7481
|
+
* "After animation" end-state behaviour: dim-to-colour, hide-after-
|
|
7482
|
+
* animation, or hide-on-next-click. Populated directly by the
|
|
7483
|
+
* native-timing parser (`native-animation-after-effect.ts`) when the
|
|
7484
|
+
* effect's `p:cTn/p:subTnLst` carries PowerPoint's genuine after-effect
|
|
7485
|
+
* shape, so a real-world deck's build shows up here even with no
|
|
7486
|
+
* `pptx:editorMeta`. `applyAfterAnimationFromEditorList` in
|
|
7487
|
+
* `pptx-viewer-shared` overrides this from the matching
|
|
7488
|
+
* {@link PptxElementAnimation.afterAnimation} entry when the editor's
|
|
7489
|
+
* per-element animation list has one (the model the animation panel
|
|
7490
|
+
* writes `afterAnimation` into), so an edit through our own UI always wins.
|
|
7255
7491
|
*/
|
|
7256
7492
|
afterAnimationAction?: PptxAfterAnimationAction;
|
|
7257
|
-
/** Dim-to color hex, present when {@link afterAnimationAction} is `dimToColor`. */
|
|
7493
|
+
/** Dim-to color hex, present when {@link afterAnimationAction} is `dimToColor` AND the dim target is an already-resolved `a:srgbClr`. */
|
|
7258
7494
|
afterAnimationColor?: string;
|
|
7495
|
+
/**
|
|
7496
|
+
* The typed theme reference when a `dimToColor` target is an `a:schemeClr`
|
|
7497
|
+
* (e.g. `accent2`) instead of `a:srgbClr`: this parse layer has no theme to
|
|
7498
|
+
* resolve it to sRGB with (see {@link afterAnimationColor}'s doc), so a
|
|
7499
|
+
* playback consumer resolves this against the deck's theme colour map.
|
|
7500
|
+
* Mutually exclusive with {@link afterAnimationColor} being set.
|
|
7501
|
+
*/
|
|
7502
|
+
afterAnimationColorRef?: PptxThemeColorRef;
|
|
7259
7503
|
/**
|
|
7260
7504
|
* Parsed `p:animEffect` filter descriptor. `presetId`/`presetClass` remain
|
|
7261
7505
|
* the primary effect selector (see `resolveEffect` in `pptx-viewer-shared`);
|
|
@@ -7387,13 +7631,46 @@ interface PptxAnimationKeyframe {
|
|
|
7387
7631
|
* fidelity; consumers may use it to drive computed animation values.
|
|
7388
7632
|
*/
|
|
7389
7633
|
fmla?: string;
|
|
7634
|
+
/**
|
|
7635
|
+
* The typed theme reference when a `p:val/p:clrVal` stop is an
|
|
7636
|
+
* `a:schemeClr` (e.g. `accent1`), including any `tint`/`shade`/`lumMod`/
|
|
7637
|
+
* `lumOff`/`alpha` children. {@link value} keeps the bare scheme name for
|
|
7638
|
+
* round-trip; a playback consumer needs this ref (resolved against the
|
|
7639
|
+
* deck's theme colour map) to turn the stop into a real CSS colour, which
|
|
7640
|
+
* the bare name alone cannot do. Absent for an `a:srgbClr` stop, whose
|
|
7641
|
+
* {@link value} is already a resolved `#rrggbb` hex string.
|
|
7642
|
+
*/
|
|
7643
|
+
colorRef?: PptxThemeColorRef;
|
|
7390
7644
|
}
|
|
7391
7645
|
/** One generic `p:anim` behaviour inside a composed PowerPoint effect. */
|
|
7392
7646
|
interface PptxAttributeAnimation {
|
|
7393
7647
|
/** Lowercased target attribute from `p:attrNameLst`. */
|
|
7394
7648
|
attrName: string;
|
|
7395
|
-
/**
|
|
7649
|
+
/**
|
|
7650
|
+
* Authored value stops from this behaviour's `p:tavLst`. Empty when the
|
|
7651
|
+
* behaviour instead uses the simpler `from`/`to`/`by` attribute form (see
|
|
7652
|
+
* below); at least one of `keyframes`, `from`/`to`, or `by` is present.
|
|
7653
|
+
*/
|
|
7396
7654
|
keyframes: PptxAnimationKeyframe[];
|
|
7655
|
+
/**
|
|
7656
|
+
* `p:anim/@_from` (a formula string, ECMA-376 S19.5.4 CT_TLAnimateBehavior):
|
|
7657
|
+
* the absolute starting value, used instead of `p:tavLst` when the
|
|
7658
|
+
* behaviour only has two endpoints. PowerPoint writes this form for some
|
|
7659
|
+
* built-in presets (e.g. "Grow And Turn"'s `ppt_x` fly-in): a bare
|
|
7660
|
+
* `p:anim from="..." to="..."` with no `p:tavLst` child at all. See
|
|
7661
|
+
* `animation-ppt-formula-ground-truth.md` in `pptx-viewer-shared` for the
|
|
7662
|
+
* real-PowerPoint sample this was found in.
|
|
7663
|
+
*/
|
|
7664
|
+
from?: string;
|
|
7665
|
+
/** `p:anim/@_to`: the absolute ending value. See {@link from}. */
|
|
7666
|
+
to?: string;
|
|
7667
|
+
/**
|
|
7668
|
+
* `p:anim/@_by`: a DELTA formula added to wherever the attribute already
|
|
7669
|
+
* stands (as opposed to `from`/`to`'s absolute values), typically paired
|
|
7670
|
+
* with `p:cBhvr/@_additive="sum"` so it composites with a sibling
|
|
7671
|
+
* behaviour driving the same attribute instead of replacing it.
|
|
7672
|
+
*/
|
|
7673
|
+
by?: string;
|
|
7397
7674
|
/** Duration from this behaviour's nested `p:cTn/@dur`. */
|
|
7398
7675
|
durationMs?: number;
|
|
7399
7676
|
/** Start offset from this behaviour's nested `p:stCondLst`. */
|
|
@@ -7402,8 +7679,11 @@ interface PptxAttributeAnimation {
|
|
|
7402
7679
|
* Interpolation mode from this behaviour's own `@_calcmode`
|
|
7403
7680
|
* (ST_TLAnimateBehaviorCalcMode, ECMA-376 S19.5.2): `discrete` snaps to
|
|
7404
7681
|
* each `p:tav` stop with no interpolation, `lin` (the OOXML default)
|
|
7405
|
-
* interpolates linearly
|
|
7406
|
-
*
|
|
7682
|
+
* interpolates linearly. `fmla` as the WHOLE behaviour's calc mode has
|
|
7683
|
+
* never been observed in a real PowerPoint file and is not consulted at
|
|
7684
|
+
* playback; what PowerPoint actually writes is `calcmode="lin"` with a
|
|
7685
|
+
* per-stop `p:tav/@fmla` (see {@link PptxAnimationKeyframe.fmla}), which
|
|
7686
|
+
* IS consulted regardless of this field's value. Absent means `lin`.
|
|
7407
7687
|
*/
|
|
7408
7688
|
calcMode?: 'discrete' | 'lin' | 'fmla';
|
|
7409
7689
|
}
|
|
@@ -7429,16 +7709,31 @@ interface PptxColorAnimation {
|
|
|
7429
7709
|
* companion to `@dir` for HSL colour-space animations.
|
|
7430
7710
|
*/
|
|
7431
7711
|
path?: string;
|
|
7432
|
-
/** Starting color as hex string. */
|
|
7712
|
+
/** Starting color as hex string, or the bare scheme name (e.g. `accent1`) for a theme colour; see {@link fromColorRef}. */
|
|
7433
7713
|
fromColor?: string;
|
|
7434
|
-
/** Ending color as hex string. */
|
|
7714
|
+
/** Ending color as hex string, or the bare scheme name; see {@link toColorRef}. */
|
|
7435
7715
|
toColor?: string;
|
|
7436
7716
|
/**
|
|
7437
|
-
* Color delta (for "by" animations) as hex string
|
|
7438
|
-
*
|
|
7439
|
-
*
|
|
7717
|
+
* Color delta (for "by" animations) as hex string, or the bare scheme name;
|
|
7718
|
+
* see {@link byColorRef}. For HSL colour-space animations this retains the
|
|
7719
|
+
* historical byte-packed compatibility value; consumers should prefer
|
|
7720
|
+
* {@link hslDelta}, which preserves signed values.
|
|
7440
7721
|
*/
|
|
7441
7722
|
byColor?: string;
|
|
7723
|
+
/**
|
|
7724
|
+
* The typed theme reference when {@link fromColor} is an `a:schemeClr`
|
|
7725
|
+
* (including `tint`/`shade`/`lumMod`/`lumOff`/`alpha`), so playback can
|
|
7726
|
+
* resolve it against the deck's theme colour map. Absent when `fromColor`
|
|
7727
|
+
* is already a resolved `#rrggbb` hex (an `a:srgbClr` stop).
|
|
7728
|
+
*/
|
|
7729
|
+
fromColorRef?: PptxThemeColorRef;
|
|
7730
|
+
/** The typed theme reference for {@link toColor}; see {@link fromColorRef}. */
|
|
7731
|
+
toColorRef?: PptxThemeColorRef;
|
|
7732
|
+
/**
|
|
7733
|
+
* The typed theme reference for {@link byColor} (RGB colour space only; an
|
|
7734
|
+
* HSL `by` is a signed delta, never a theme colour). See {@link fromColorRef}.
|
|
7735
|
+
*/
|
|
7736
|
+
byColorRef?: PptxThemeColorRef;
|
|
7442
7737
|
/**
|
|
7443
7738
|
* Typed HSL delta from `p:by/p:hsl`. This preserves signed values and their
|
|
7444
7739
|
* OOXML units without forcing them through the legacy byte-packed `byColor`
|
|
@@ -8651,13 +8946,13 @@ interface PptxSlide {
|
|
|
8651
8946
|
backgroundPattern?: PptxSlideBackgroundPattern;
|
|
8652
8947
|
/**
|
|
8653
8948
|
* `<p:bgPr/@shadeToTitle>`: boolean flag instructing the renderer to
|
|
8654
|
-
*
|
|
8655
|
-
*
|
|
8656
|
-
*
|
|
8949
|
+
* anchor the background gradient on the title placeholder as a
|
|
8950
|
+
* rectangular path gradient (COM-measured against real PowerPoint;
|
|
8951
|
+
* it does NOT recolour toward the title's text colour, despite the
|
|
8952
|
+
* attribute's name). Parsed and round-tripped here on the core model;
|
|
8953
|
+
* the actual visual effect is applied by `pptx-viewer-shared`'s
|
|
8657
8954
|
* `getSlideBackgroundStyle` (see `render/background-shade-to-title.ts`),
|
|
8658
|
-
* consumed by all five bindings, not by core itself.
|
|
8659
|
-
* docstring explains the approximation: no published ECMA-376 or
|
|
8660
|
-
* MS-ODRAWXML text documents the exact legacy blend. Legacy PowerPoint
|
|
8955
|
+
* consumed by all five bindings, not by core itself. Legacy PowerPoint
|
|
8661
8956
|
* 97-2003 hint, not observed in any real-world corpus file this project
|
|
8662
8957
|
* has collected and not settable from any modern PowerPoint UI; see
|
|
8663
8958
|
* `docs/guide/limitations.md`.
|
|
@@ -10899,6 +11194,23 @@ declare const THEME_CATALOG: readonly ThemeCatalogEntry[];
|
|
|
10899
11194
|
/** Look up a catalog entry by key, falling back to `undefined` (the built-in default) if not found. */
|
|
10900
11195
|
declare function resolveThemeCatalogEntry(key: string | undefined, catalog?: readonly ThemeCatalogEntry[]): ViewerTheme | undefined;
|
|
10901
11196
|
|
|
11197
|
+
//#region src/render/animation-text-style-resolve.d.ts
|
|
11198
|
+
/**
|
|
11199
|
+
* Framework-neutral text-style override a font-style emphasis effect applies
|
|
11200
|
+
* on top of its target's own authored per-run bold/italic/underline/size/
|
|
11201
|
+
* colour. Every binding maps this onto its own text container so it OVERRIDES
|
|
11202
|
+
* the runs' inline styles (the runs carry explicit inline styles of their
|
|
11203
|
+
* own, so plain CSS inheritance cannot reach them).
|
|
11204
|
+
*/
|
|
11205
|
+
interface TextStyleAnimationDescriptor {
|
|
11206
|
+
bold?: boolean;
|
|
11207
|
+
italic?: boolean;
|
|
11208
|
+
underline?: boolean;
|
|
11209
|
+
/** Relative multiplier against each run's own authored font size. */
|
|
11210
|
+
fontScale?: number;
|
|
11211
|
+
color?: string;
|
|
11212
|
+
}
|
|
11213
|
+
|
|
10902
11214
|
/** Viewer interaction mode: read-only, edit, presentation, or master-view. */
|
|
10903
11215
|
type ViewerMode = 'preview' | 'edit' | 'present' | 'master';
|
|
10904
11216
|
/**
|
|
@@ -11065,22 +11377,15 @@ interface CollaborationConfig {
|
|
|
11065
11377
|
writeBackDebounceMs?: number;
|
|
11066
11378
|
}
|
|
11067
11379
|
//#endregion
|
|
11068
|
-
//#region src/render/animation-
|
|
11380
|
+
//#region src/render/animation-timeline-build-descriptors.d.ts
|
|
11069
11381
|
/**
|
|
11070
|
-
*
|
|
11071
|
-
*
|
|
11072
|
-
*
|
|
11073
|
-
*
|
|
11074
|
-
*
|
|
11382
|
+
* `animation-timeline-build-descriptors` - staged-build (`p:bldChart` /
|
|
11383
|
+
* `p:bldDgm`) reveal descriptor types, split out of `animation-timeline-types`
|
|
11384
|
+
* to keep that module under the file-size limit. Re-exported from
|
|
11385
|
+
* `animation-timeline-types` so existing imports are unaffected.
|
|
11386
|
+
*
|
|
11387
|
+
* @module render/animation-timeline-build-descriptors
|
|
11075
11388
|
*/
|
|
11076
|
-
interface TextStyleAnimationDescriptor {
|
|
11077
|
-
bold?: boolean;
|
|
11078
|
-
italic?: boolean;
|
|
11079
|
-
underline?: boolean;
|
|
11080
|
-
/** Relative multiplier against each run's own authored font size. */
|
|
11081
|
-
fontScale?: number;
|
|
11082
|
-
color?: string;
|
|
11083
|
-
}
|
|
11084
11389
|
/**
|
|
11085
11390
|
* Normalized staged-reveal mode for a chart graphic frame, derived from the
|
|
11086
11391
|
* OOXML `a:bldChart/@bld` (or `p:bldOleChart/@bld`) token:
|
|
@@ -11114,12 +11419,12 @@ interface ChartRevealPoint {
|
|
|
11114
11419
|
* Playback-time chart reveal state derived from AUTHORED `p:graphicEl`
|
|
11115
11420
|
* indices (see `chart-reveal-descriptor`'s `resolveChartRevealDescriptor`),
|
|
11116
11421
|
* rather than from click-count/time progress. Present on
|
|
11117
|
-
* {@link ElementAnimationState.chartReveal}
|
|
11118
|
-
* chart-build step for the element carried index data;
|
|
11119
|
-
* this over the progress-based `build`/`ElementBuildState`
|
|
11120
|
-
* since it reflects the real authored reveal set (correct
|
|
11121
|
-
* reversed-order or gapped chart build), and falls back to `build`
|
|
11122
|
-
* absent.
|
|
11422
|
+
* {@link import('./animation-timeline-group').ElementAnimationState.chartReveal}
|
|
11423
|
+
* only when every fired chart-build step for the element carried index data;
|
|
11424
|
+
* a renderer prefers this over the progress-based `build`/`ElementBuildState`
|
|
11425
|
+
* path when present, since it reflects the real authored reveal set (correct
|
|
11426
|
+
* even for a reversed-order or gapped chart build), and falls back to `build`
|
|
11427
|
+
* when absent.
|
|
11123
11428
|
*/
|
|
11124
11429
|
interface ChartRevealDescriptor {
|
|
11125
11430
|
/**
|
|
@@ -11140,12 +11445,13 @@ interface ChartRevealDescriptor {
|
|
|
11140
11445
|
* Playback-time SmartArt diagram reveal state derived from AUTHORED
|
|
11141
11446
|
* `p:graphicEl/p:dgm/@id` indices (see `diagram-reveal-descriptor`'s
|
|
11142
11447
|
* `resolveDiagramRevealDescriptor`), rather than from click-count/time
|
|
11143
|
-
* progress. Present on
|
|
11144
|
-
*
|
|
11145
|
-
*
|
|
11146
|
-
*
|
|
11147
|
-
*
|
|
11148
|
-
*
|
|
11448
|
+
* progress. Present on
|
|
11449
|
+
* {@link import('./animation-timeline-group').ElementAnimationState.diagramReveal}
|
|
11450
|
+
* only when every fired diagram-build step for the element carried
|
|
11451
|
+
* `p:graphicEl` data. A SmartArt renderer prefers this over the
|
|
11452
|
+
* progress-based `build` / {@link ElementBuildState} path when present, since
|
|
11453
|
+
* it reflects the real authored reveal set (correct even for a
|
|
11454
|
+
* reversed-order or by-branch build), and falls back to `build` when absent.
|
|
11149
11455
|
*/
|
|
11150
11456
|
interface DiagramRevealDescriptor {
|
|
11151
11457
|
/**
|
|
@@ -11158,9 +11464,11 @@ interface DiagramRevealDescriptor {
|
|
|
11158
11464
|
nodeIds: ReadonlySet<string>;
|
|
11159
11465
|
}
|
|
11160
11466
|
/**
|
|
11161
|
-
* Playback-time staged-build state surfaced on
|
|
11162
|
-
*
|
|
11163
|
-
*
|
|
11467
|
+
* Playback-time staged-build state surfaced on
|
|
11468
|
+
* {@link import('./animation-timeline-group').ElementAnimationState}.
|
|
11469
|
+
* `progress` is the 0..1 fraction of the build revealed at the current
|
|
11470
|
+
* playback time; a consumer maps it to its own item COUNT (see
|
|
11471
|
+
* `revealedStageCount`).
|
|
11164
11472
|
*/
|
|
11165
11473
|
type ElementBuildState = {
|
|
11166
11474
|
kind: 'chart';
|
|
@@ -11223,14 +11531,14 @@ interface ElementAnimationState {
|
|
|
11223
11531
|
animatesStroke?: boolean;
|
|
11224
11532
|
/**
|
|
11225
11533
|
* Active discrete font-style / colour / size override (see
|
|
11226
|
-
* {@link TimelineStep.textStyle}) a
|
|
11227
|
-
* applies to this element's text,
|
|
11228
|
-
* bold/italic/underline/size/colour.
|
|
11229
|
-
* this on step start and again on
|
|
11230
|
-
* `p:cTn/@fill` holds its end
|
|
11231
|
-
* maps it onto its run markup
|
|
11232
|
-
* (`animation-text-style-css.ts`). Absent
|
|
11233
|
-
* effect is currently active on this element.
|
|
11534
|
+
* {@link import('./animation-timeline-step').TimelineStep.textStyle}) a
|
|
11535
|
+
* font-style emphasis effect currently applies to this element's text,
|
|
11536
|
+
* OVERRIDING the runs' own inline bold/italic/underline/size/colour.
|
|
11537
|
+
* `animation-playback-engine.ts` writes this on step start and again on
|
|
11538
|
+
* cleanup (held in full when the effect's `p:cTn/@fill` holds its end
|
|
11539
|
+
* state, otherwise reverted); a text renderer maps it onto its run markup
|
|
11540
|
+
* via `buildTextStyleOverrideCss` (`animation-text-style-css.ts`). Absent
|
|
11541
|
+
* means no font-style emphasis effect is currently active on this element.
|
|
11234
11542
|
*/
|
|
11235
11543
|
textStyle?: TextStyleAnimationDescriptor;
|
|
11236
11544
|
}
|