pptx-react-viewer 3.8.0 → 3.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/{AiChatPanel-A5DCEHTO.mjs → AiChatPanel-BQSUE2OO.mjs} +4 -4
- package/dist/AiChatPanel-BQSUE2OO.mjs.br +0 -0
- package/dist/AiChatPanel-BQSUE2OO.mjs.gz +0 -0
- package/dist/{AiChatPanel-XLQM4BQJ.js → AiChatPanel-NSVSBJC7.js} +25 -25
- package/dist/AiChatPanel-NSVSBJC7.js.br +0 -0
- package/dist/AiChatPanel-NSVSBJC7.js.gz +0 -0
- package/dist/{Area3DChartScene-5CMEMIBI.mjs → Area3DChartScene-2FQHPGNE.mjs} +21 -4
- package/dist/Area3DChartScene-2FQHPGNE.mjs.br +0 -0
- package/dist/Area3DChartScene-2FQHPGNE.mjs.gz +0 -0
- package/dist/{Area3DChartScene-RZ3V3WOR.js → Area3DChartScene-V3W2V7N5.js} +21 -4
- package/dist/Area3DChartScene-V3W2V7N5.js.br +0 -0
- package/dist/Area3DChartScene-V3W2V7N5.js.gz +0 -0
- package/dist/{Bar3DChartScene-KHCQ6TEC.js → Bar3DChartScene-55XMAUC7.js} +21 -4
- package/dist/Bar3DChartScene-55XMAUC7.js.br +0 -0
- package/dist/Bar3DChartScene-55XMAUC7.js.gz +0 -0
- package/dist/{Bar3DChartScene-H3MYUJKV.mjs → Bar3DChartScene-PSJEVANA.mjs} +21 -4
- package/dist/Bar3DChartScene-PSJEVANA.mjs.br +0 -0
- package/dist/Bar3DChartScene-PSJEVANA.mjs.gz +0 -0
- package/dist/{Line3DChartScene-QEACF3U3.js → Line3DChartScene-5KACYRSQ.js} +21 -4
- package/dist/Line3DChartScene-5KACYRSQ.js.br +0 -0
- package/dist/Line3DChartScene-5KACYRSQ.js.gz +0 -0
- package/dist/{Line3DChartScene-YFRPJHDX.mjs → Line3DChartScene-BUVNUFNO.mjs} +21 -4
- package/dist/Line3DChartScene-BUVNUFNO.mjs.br +0 -0
- package/dist/Line3DChartScene-BUVNUFNO.mjs.gz +0 -0
- package/dist/{Model3DScene-QQWKGJ3T.js → Model3DScene-6U6TN36M.js} +2 -2
- package/dist/Model3DScene-6U6TN36M.js.br +0 -0
- package/dist/Model3DScene-6U6TN36M.js.gz +0 -0
- package/dist/{Model3DScene-O24KP723.mjs → Model3DScene-REKMR2L6.mjs} +1 -1
- package/dist/{Model3DScene-O24KP723.mjs.br → Model3DScene-REKMR2L6.mjs.br} +0 -0
- package/dist/Model3DScene-REKMR2L6.mjs.gz +0 -0
- package/dist/{PieChart3DScene-CI6CW22C.mjs → PieChart3DScene-4L2VVIUJ.mjs} +15 -4
- package/dist/PieChart3DScene-4L2VVIUJ.mjs.br +0 -0
- package/dist/PieChart3DScene-4L2VVIUJ.mjs.gz +0 -0
- package/dist/{PieChart3DScene-L3MHKQHW.js → PieChart3DScene-MV3JF7EM.js} +15 -4
- package/dist/PieChart3DScene-MV3JF7EM.js.br +0 -0
- package/dist/PieChart3DScene-MV3JF7EM.js.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-ARE7OBFI.mjs} +19 -4
- package/dist/SurfaceChart3DScene-ARE7OBFI.mjs.br +0 -0
- package/dist/SurfaceChart3DScene-ARE7OBFI.mjs.gz +0 -0
- package/dist/{SurfaceChart3DScene-5IER6VFW.js → SurfaceChart3DScene-SFIOK3G3.js} +19 -4
- package/dist/SurfaceChart3DScene-SFIOK3G3.js.br +0 -0
- package/dist/SurfaceChart3DScene-SFIOK3G3.js.gz +0 -0
- package/dist/{chunk-SN5EUDIT.js → chunk-2Q2NFPXA.js} +81834 -57577
- package/dist/chunk-2Q2NFPXA.js.br +0 -0
- package/dist/chunk-2Q2NFPXA.js.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-4222CHFH.js → chunk-DZ3HWACD.js} +3763 -2551
- package/dist/chunk-DZ3HWACD.js.br +0 -0
- package/dist/chunk-DZ3HWACD.js.gz +0 -0
- package/dist/{chunk-DE3S3UHX.js → chunk-FHOUTYMB.js} +536 -448
- package/dist/chunk-FHOUTYMB.js.br +0 -0
- package/dist/chunk-FHOUTYMB.js.gz +0 -0
- package/dist/{chunk-UPJW34YG.mjs → chunk-HJZA3O3S.mjs} +103 -16
- package/dist/chunk-HJZA3O3S.mjs.br +0 -0
- package/dist/chunk-HJZA3O3S.mjs.gz +0 -0
- package/dist/{chunk-F5NPGNMA.js → chunk-HYUPPQJW.js} +6168 -1929
- package/dist/chunk-HYUPPQJW.js.br +0 -0
- package/dist/chunk-HYUPPQJW.js.gz +0 -0
- package/dist/{chunk-PFPKBNNZ.mjs → chunk-KWHURCVT.mjs} +1771 -559
- package/dist/chunk-KWHURCVT.mjs.br +0 -0
- package/dist/chunk-KWHURCVT.mjs.gz +0 -0
- package/dist/{chunk-RHWQKZLB.mjs → chunk-M6GIPAY4.mjs} +23 -7
- package/dist/chunk-M6GIPAY4.mjs.br +0 -0
- package/dist/chunk-M6GIPAY4.mjs.gz +0 -0
- package/dist/{chunk-RNP5HP4L.mjs → chunk-T4ZRSRQZ.mjs} +6164 -1925
- package/dist/chunk-T4ZRSRQZ.mjs.br +0 -0
- package/dist/chunk-T4ZRSRQZ.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-FRZIBZTE.mjs → chunk-TAGG5YNA.mjs} +76 -1
- package/dist/chunk-TAGG5YNA.mjs.br +0 -0
- package/dist/chunk-TAGG5YNA.mjs.gz +0 -0
- package/dist/{chunk-6IMB5DNJ.mjs → chunk-UKPGYJ7G.mjs} +90204 -65968
- package/dist/chunk-UKPGYJ7G.mjs.br +0 -0
- package/dist/chunk-UKPGYJ7G.mjs.gz +0 -0
- package/dist/{chunk-QWA5YEIZ.js → chunk-XW46A7DN.js} +194 -178
- package/dist/chunk-XW46A7DN.js.br +0 -0
- package/dist/chunk-XW46A7DN.js.gz +0 -0
- package/dist/{chunk-L3ZIBQEB.js → chunk-Y6GG2OOW.js} +76 -1
- package/dist/chunk-Y6GG2OOW.js.br +0 -0
- package/dist/chunk-Y6GG2OOW.js.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-CGKutKk1.d.ts.map +1 -1
- package/dist/index.d.ts +616 -99
- package/dist/index.d.ts.map +1 -1
- 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 +657 -86
- 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/{useViewerBuildingBlocks-C8F_4Pzb.d.ts → useViewerBuildingBlocks-FbK-4ORi.d.ts} +2 -1
- package/dist/useViewerBuildingBlocks-FbK-4ORi.d.ts.map +1 -0
- package/dist/viewer/index.d.ts +545 -48
- package/dist/viewer/index.d.ts.map +1 -1
- 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 +9 -9
- 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.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-FRZIBZTE.mjs.gz +0 -0
- package/dist/chunk-L3ZIBQEB.js.br +0 -0
- package/dist/chunk-L3ZIBQEB.js.gz +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-RNP5HP4L.mjs.gz +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/useViewerBuildingBlocks-C8F_4Pzb.d.ts.map +0 -1
package/dist/internals.d.ts
CHANGED
|
@@ -2145,6 +2145,29 @@ interface PptxElementBase {
|
|
|
2145
2145
|
y: number;
|
|
2146
2146
|
width: number;
|
|
2147
2147
|
height: number;
|
|
2148
|
+
/**
|
|
2149
|
+
* The exact EMU integer `x` was parsed from (the `a:off/@_x` this
|
|
2150
|
+
* element's own `a:xfrm` carried on load), when the parser could resolve
|
|
2151
|
+
* one. `x` itself is always `Math.round(xEmu / EMU_PER_PX)` at parse
|
|
2152
|
+
* time, but that rounding is lossy: re-deriving EMU from `x` on save
|
|
2153
|
+
* (`Math.round(x * EMU_PER_PX)`) can drift from the original value by up
|
|
2154
|
+
* to half a pixel's worth of EMU on every load/save cycle even when
|
|
2155
|
+
* nothing touched this element. Kept alongside `x` (not instead of it) so
|
|
2156
|
+
* every consumer that only cares about on-screen position is unaffected;
|
|
2157
|
+
* only the save-side xfrm writer (`resolveXfrmEmu` in
|
|
2158
|
+
* `xfrm-emu-resolution.ts`) reads this, and only when `x` still equals
|
|
2159
|
+
* `Math.round(xEmu / EMU_PER_PX)` (i.e. nothing moved this element since
|
|
2160
|
+
* load) does it re-emit `xEmu` verbatim instead of re-quantizing `x`.
|
|
2161
|
+
* `undefined` for an SDK-created element or one whose transform could not
|
|
2162
|
+
* be resolved to a usable `a:off` on load.
|
|
2163
|
+
*/
|
|
2164
|
+
xEmu?: number;
|
|
2165
|
+
/** The exact EMU integer `y` was parsed from (`a:off/@_y`). See {@link xEmu}. */
|
|
2166
|
+
yEmu?: number;
|
|
2167
|
+
/** The exact EMU integer `width` was parsed from (`a:ext/@_cx`). See {@link xEmu}. */
|
|
2168
|
+
widthEmu?: number;
|
|
2169
|
+
/** The exact EMU integer `height` was parsed from (`a:ext/@_cy`). See {@link xEmu}. */
|
|
2170
|
+
heightEmu?: number;
|
|
2148
2171
|
rotation?: number;
|
|
2149
2172
|
/** Skew along the X axis in degrees (parsed from `@_skewX` in 1/60000ths of a degree). */
|
|
2150
2173
|
skewX?: number;
|
|
@@ -2664,6 +2687,21 @@ interface PptxChartUserShapeGroupTransform {
|
|
|
2664
2687
|
cx: number;
|
|
2665
2688
|
cy: number;
|
|
2666
2689
|
};
|
|
2690
|
+
/**
|
|
2691
|
+
* The group's own rotation in degrees (`a:xfrm/@rot`, stored in 60,000ths
|
|
2692
|
+
* of a degree), when present. Rotates the whole group, and everything
|
|
2693
|
+
* grouped inside it, as a rigid body about the CENTRE of the group's own
|
|
2694
|
+
* box ({@link off}/{@link ext}); see `flattenChartUserShapes` in
|
|
2695
|
+
* `chart-user-shapes-parser.ts` for how this composes onto each contained
|
|
2696
|
+
* leaf's own {@link PptxChartUserShapeGroupChild.rotation}. Verified
|
|
2697
|
+
* against real PowerPoint (COM): a `cdr:grpSp`'s `cdr:grpSpPr/a:xfrm` does
|
|
2698
|
+
* carry `rot` the same way an ordinary shape's does.
|
|
2699
|
+
*/
|
|
2700
|
+
rotation?: number;
|
|
2701
|
+
/** The group's own horizontal flip (`a:xfrm/@flipH`), when present; composes onto children by XOR, see {@link rotation}'s doc. */
|
|
2702
|
+
flipH?: boolean;
|
|
2703
|
+
/** The group's own vertical flip (`a:xfrm/@flipV`), when present; composes onto children by XOR, see {@link rotation}'s doc. */
|
|
2704
|
+
flipV?: boolean;
|
|
2667
2705
|
}
|
|
2668
2706
|
/**
|
|
2669
2707
|
* One shape grouped inside a `cdr:grpSp` (or a nested `cdr:grpSp` itself).
|
|
@@ -2695,6 +2733,23 @@ interface PptxChartUserShapeGroupChild {
|
|
|
2695
2733
|
strokeWidth?: number;
|
|
2696
2734
|
/** Text paragraphs of the shape's `txBody`, when present. */
|
|
2697
2735
|
paragraphs?: PptxChartUserShapeParagraph[];
|
|
2736
|
+
/**
|
|
2737
|
+
* A `pic` child's alt text (`cdr:nvPicPr/cdr:cNvPr/@descr`), when present.
|
|
2738
|
+
* Editable independently of {@link rawXml}'s otherwise-verbatim content:
|
|
2739
|
+
* the serializer patches only this attribute onto the cloned raw node.
|
|
2740
|
+
*/
|
|
2741
|
+
altText?: string;
|
|
2742
|
+
/**
|
|
2743
|
+
* This child's OWN rotation in degrees (`a:xfrm/@rot`), when present.
|
|
2744
|
+
* Composes with every enclosing group's own
|
|
2745
|
+
* {@link PptxChartUserShapeGroupTransform.rotation} (added) to produce the
|
|
2746
|
+
* leaf's final on-screen rotation; see `flattenChartUserShapes`.
|
|
2747
|
+
*/
|
|
2748
|
+
rotation?: number;
|
|
2749
|
+
/** This child's OWN horizontal flip (`a:xfrm/@flipH`); composes with an ancestor group's flip by XOR. */
|
|
2750
|
+
flipH?: boolean;
|
|
2751
|
+
/** This child's OWN vertical flip (`a:xfrm/@flipV`); composes with an ancestor group's flip by XOR. */
|
|
2752
|
+
flipV?: boolean;
|
|
2698
2753
|
/**
|
|
2699
2754
|
* Verbatim source XML of a `pic`/`graphicFrame` child, or of this node
|
|
2700
2755
|
* itself when `kind === 'grpSp'` and the nested group is untouched since
|
|
@@ -2753,6 +2808,29 @@ interface PptxChartUserShape {
|
|
|
2753
2808
|
strokeWidth?: number;
|
|
2754
2809
|
/** Text paragraphs of the shape's `txBody`, when present. */
|
|
2755
2810
|
paragraphs?: PptxChartUserShapeParagraph[];
|
|
2811
|
+
/**
|
|
2812
|
+
* A `pic` anchor's alt text (`cdr:nvPicPr/cdr:cNvPr/@descr`), when
|
|
2813
|
+
* present. Editable independently of {@link rawXml}'s otherwise-verbatim
|
|
2814
|
+
* content: the serializer patches only this attribute onto the cloned
|
|
2815
|
+
* raw node, so a picture's blip and other markup are untouched.
|
|
2816
|
+
*/
|
|
2817
|
+
altText?: string;
|
|
2818
|
+
/**
|
|
2819
|
+
* This shape's OWN rotation in degrees (`a:xfrm/@rot`, on `spPr/a:xfrm`
|
|
2820
|
+
* for `sp`/`cxnSp`/`pic`, or directly on a top-level `graphicFrame`'s own
|
|
2821
|
+
* `a:xfrm`), when present. A top-level anchor's position/size is governed
|
|
2822
|
+
* by {@link from}/{@link to}/{@link ext}, never by this `a:xfrm`'s own
|
|
2823
|
+
* `off`/`ext` (see {@link rawXml}'s doc), but `rot`/`flipH`/`flipV` on that
|
|
2824
|
+
* same `a:xfrm` DO apply visually: verified against real PowerPoint (COM),
|
|
2825
|
+
* which writes e.g. `<a:xfrm rot="1800000"><a:off .../><a:ext .../></a:xfrm>`
|
|
2826
|
+
* on a rotated overlay shape's `spPr`, with the `off`/`ext` values
|
|
2827
|
+
* unrelated to the anchor's own `cdr:from`/`cdr:to`.
|
|
2828
|
+
*/
|
|
2829
|
+
rotation?: number;
|
|
2830
|
+
/** This shape's OWN horizontal flip (`a:xfrm/@flipH`); see {@link rotation}'s doc. */
|
|
2831
|
+
flipH?: boolean;
|
|
2832
|
+
/** This shape's OWN vertical flip (`a:xfrm/@flipV`); see {@link rotation}'s doc. */
|
|
2833
|
+
flipV?: boolean;
|
|
2756
2834
|
/**
|
|
2757
2835
|
* Verbatim source XML of a `pic` or `graphicFrame` anchor child (the
|
|
2758
2836
|
* `cdr:pic` / `cdr:graphicFrame` node itself, not the enclosing anchor),
|
|
@@ -2782,7 +2860,7 @@ interface PptxChartUserShape {
|
|
|
2782
2860
|
* @example
|
|
2783
2861
|
* ```ts
|
|
2784
2862
|
* const type: PptxChartType = "bar";
|
|
2785
|
-
* // => "bar"
|
|
2863
|
+
* // => "bar": one of: "bar" | "line" | "pie" | "doughnut" | "area" | "scatter" | …
|
|
2786
2864
|
* ```
|
|
2787
2865
|
*/
|
|
2788
2866
|
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';
|
|
@@ -2817,7 +2895,7 @@ type PptxBar3DShape = 'box' | 'cone' | 'coneToMax' | 'cylinder' | 'pyramid' | 'p
|
|
|
2817
2895
|
* @example
|
|
2818
2896
|
* ```ts
|
|
2819
2897
|
* const type: PptxChartTrendlineType = "linear";
|
|
2820
|
-
* // => "linear"
|
|
2898
|
+
* // => "linear": one of: "linear" | "exponential" | "logarithmic" | "polynomial" | "power" | "movingAvg"
|
|
2821
2899
|
* ```
|
|
2822
2900
|
*/
|
|
2823
2901
|
type PptxChartTrendlineType = 'linear' | 'exponential' | 'logarithmic' | 'polynomial' | 'power' | 'movingAvg';
|
|
@@ -2868,7 +2946,7 @@ type PptxChartErrBarType = 'both' | 'minus' | 'plus';
|
|
|
2868
2946
|
* @example
|
|
2869
2947
|
* ```ts
|
|
2870
2948
|
* const valType: PptxChartErrValType = "percentage";
|
|
2871
|
-
* // => "percentage"
|
|
2949
|
+
* // => "percentage": one of: "cust" | "fixedVal" | "percentage" | "stdDev" | "stdErr"
|
|
2872
2950
|
* ```
|
|
2873
2951
|
*/
|
|
2874
2952
|
type PptxChartErrValType = 'cust' | 'fixedVal' | 'percentage' | 'stdDev' | 'stdErr';
|
|
@@ -2987,9 +3065,29 @@ interface PptxChartDataPoint {
|
|
|
2987
3065
|
bubble3D?: boolean;
|
|
2988
3066
|
/** Per-point picture-fill flags (`c:dPt/c:pictureOptions`). */
|
|
2989
3067
|
picture?: PptxChartDataPointPicture;
|
|
3068
|
+
/**
|
|
3069
|
+
* This point's identity GUID (`c:dPt/c:extLst/c:ext/c16:uniqueId/@val`,
|
|
3070
|
+
* the Office 2014+ `{C3380CC4-5D6E-409C-BE32-E72D297353CC}` chart
|
|
3071
|
+
* extension), read-only here: an edited point keeps its existing
|
|
3072
|
+
* `c:extLst` as passthrough (see `chart-datapoint-serializer.ts`), so this
|
|
3073
|
+
* field exists for introspection rather than round-trip.
|
|
3074
|
+
*/
|
|
3075
|
+
uniqueId?: string;
|
|
2990
3076
|
}
|
|
2991
3077
|
/** Schema values accepted by `c:dLblPos`. */
|
|
2992
3078
|
type PptxChartDataLabelPosition = 'bestFit' | 'b' | 'ctr' | 'inBase' | 'inEnd' | 'l' | 'outEnd' | 'r' | 't';
|
|
3079
|
+
/**
|
|
3080
|
+
* `c15:dlblRangeCache`/`c15:datalabelsRange` (CT_SeriesDataLabelsRange):
|
|
3081
|
+
* PowerPoint 2013+'s "Value From Cells" custom label source, one cell range
|
|
3082
|
+
* supplying every label in a group (chart-type or series `c:dLbls`), with a
|
|
3083
|
+
* cache aligned to point order. See `utils/chart-data-labels-range.ts`.
|
|
3084
|
+
*/
|
|
3085
|
+
interface PptxChartDataLabelsRange {
|
|
3086
|
+
/** `c15:f`: the cell range formula (e.g. `Sheet1!$D$2:$D$5`). */
|
|
3087
|
+
formula: string;
|
|
3088
|
+
/** `c15:dlblRangeCache`: cached label text, index-aligned with data points. */
|
|
3089
|
+
cache: string[];
|
|
3090
|
+
}
|
|
2993
3091
|
/** Individual data label override (c:dLbl). */
|
|
2994
3092
|
interface PptxChartDataLabel {
|
|
2995
3093
|
idx: number;
|
|
@@ -3031,6 +3129,14 @@ interface PptxChartDataLabel {
|
|
|
3031
3129
|
* over any chart/series-level default when set.
|
|
3032
3130
|
*/
|
|
3033
3131
|
spPr?: PptxChartShapeProps;
|
|
3132
|
+
/**
|
|
3133
|
+
* `c15:xForSave`: this override exists only so its properties survive a
|
|
3134
|
+
* save/reload round trip; PowerPoint merges it back onto the series'
|
|
3135
|
+
* default label on load. Round-tripped as-is (an edited chart keeps an
|
|
3136
|
+
* existing point's whole `extLst`, this flag included); introspection
|
|
3137
|
+
* only otherwise. See `utils/chart-data-labels-range.ts`.
|
|
3138
|
+
*/
|
|
3139
|
+
savedForCompatibilityOnly?: boolean;
|
|
3034
3140
|
}
|
|
3035
3141
|
/** Axis number format. */
|
|
3036
3142
|
interface PptxChartAxisNumFmt {
|
|
@@ -3063,7 +3169,7 @@ interface PptxChartAxisFormatting extends PptxChartAxisLabelFormatting {
|
|
|
3063
3169
|
axPos?: 'b' | 'l' | 'r' | 't';
|
|
3064
3170
|
/** Unique axis identifier (c:axId/@val) used to link series to axes. */
|
|
3065
3171
|
axisId?: number;
|
|
3066
|
-
/** Cross-axis identifier
|
|
3172
|
+
/** Cross-axis identifier: the axis this axis crosses. */
|
|
3067
3173
|
crossAxisId?: number;
|
|
3068
3174
|
/** Automatic crossing mode (`c:crosses`). Mutually exclusive with `crossesAt`. */
|
|
3069
3175
|
crosses?: 'autoZero' | 'min' | 'max';
|
|
@@ -3315,6 +3421,54 @@ interface PptxChartSeries {
|
|
|
3315
3421
|
waterfallOptions?: PptxChartWaterfallOptions;
|
|
3316
3422
|
regionMapOptions?: PptxChartRegionMapOptions;
|
|
3317
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;
|
|
3318
3472
|
}
|
|
3319
3473
|
/**
|
|
3320
3474
|
* Chart-level data-label options (`c:dLbls` directly under a chart-type
|
|
@@ -3338,6 +3492,19 @@ interface PptxChartDataLabelOptions {
|
|
|
3338
3492
|
separator?: string;
|
|
3339
3493
|
/** Show leader lines where supported (`c:showLeaderLines`). */
|
|
3340
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;
|
|
3341
3508
|
/**
|
|
3342
3509
|
* Label position (`c:dLblPos`). Valid values depend on the chart type
|
|
3343
3510
|
* (`ctr`, `inEnd`, `inBase`, `outEnd`, `bestFit`, `l`, `r`, `t`, `b`).
|
|
@@ -3358,6 +3525,22 @@ interface PptxChartDataLabelOptions {
|
|
|
3358
3525
|
* (point > series > chart-type).
|
|
3359
3526
|
*/
|
|
3360
3527
|
txPr?: PptxChartLegendTextStyle;
|
|
3528
|
+
/**
|
|
3529
|
+
* PowerPoint 2013+ "Value From Cells", series-wide form
|
|
3530
|
+
* (`c15:datalabelsRange`, chart15 uri `{CE6537A1-...}`): one cell range
|
|
3531
|
+
* supplies every label in this group, aligned by point index. A
|
|
3532
|
+
* SERIES-WIDE alternative to the per-point `c15:dlblFieldTable` mechanism
|
|
3533
|
+
* (already resolved into {@link PptxChartDataLabel.text} at parse time).
|
|
3534
|
+
* See `utils/chart-data-labels-range.ts`.
|
|
3535
|
+
*/
|
|
3536
|
+
dataLabelsRange?: PptxChartDataLabelsRange;
|
|
3537
|
+
/**
|
|
3538
|
+
* `c15:showDataLabelsRange` at the SAME level as {@link dataLabelsRange}:
|
|
3539
|
+
* whether every label in this group resolves through the range's cache.
|
|
3540
|
+
* Distinct from the per-point {@link PptxChartDataLabel} flag of the same
|
|
3541
|
+
* XML name. Only meaningful when {@link dataLabelsRange} is set.
|
|
3542
|
+
*/
|
|
3543
|
+
showDataLabelsRange?: boolean;
|
|
3361
3544
|
}
|
|
3362
3545
|
/** Typed text defaults for a single chart legend entry. */
|
|
3363
3546
|
interface PptxChartLegendTextStyle {
|
|
@@ -3491,12 +3674,12 @@ interface PptxBubbleChartOptions {
|
|
|
3491
3674
|
*
|
|
3492
3675
|
* All fields are optional and round-trip verbatim.
|
|
3493
3676
|
*
|
|
3494
|
-
* - {@link rotX}
|
|
3495
|
-
* - {@link rotY}
|
|
3496
|
-
* - {@link depthPercent}
|
|
3497
|
-
* - {@link rAngAx}
|
|
3498
|
-
* - {@link perspective}
|
|
3499
|
-
* - {@link hPercent}
|
|
3677
|
+
* - {@link rotX}: X-axis rotation in degrees (-90…90).
|
|
3678
|
+
* - {@link rotY}: Y-axis rotation in degrees (0…360).
|
|
3679
|
+
* - {@link depthPercent}: chart depth as a percentage of base width.
|
|
3680
|
+
* - {@link rAngAx}: `true` if axes meet at right angles.
|
|
3681
|
+
* - {@link perspective}: perspective angle in degrees (0…240).
|
|
3682
|
+
* - {@link hPercent}: height as a percentage of chart width.
|
|
3500
3683
|
*/
|
|
3501
3684
|
interface PptxChartView3D {
|
|
3502
3685
|
rotX?: number;
|
|
@@ -3510,12 +3693,17 @@ interface PptxChartView3D {
|
|
|
3510
3693
|
* Chart "chrome" flags from `c:chart` that round-trip cleanly even when
|
|
3511
3694
|
* rendering ignores them.
|
|
3512
3695
|
*
|
|
3513
|
-
* - {@link autoTitleDeleted}
|
|
3696
|
+
* - {@link autoTitleDeleted}: `c:autoTitleDeleted/@val`. Suppresses the
|
|
3514
3697
|
* auto-generated title for single-series charts.
|
|
3515
|
-
* - {@link dispBlanksAs}
|
|
3698
|
+
* - {@link dispBlanksAs}: `c:dispBlanksAs/@val`. How blank cells
|
|
3516
3699
|
* render: `"gap"`, `"zero"`, or `"span"`.
|
|
3517
|
-
* - {@link showDLblsOverMax}
|
|
3700
|
+
* - {@link showDLblsOverMax}: `c:showDLblsOverMax/@val`. Keeps data
|
|
3518
3701
|
* labels visible for points exceeding the value-axis maximum.
|
|
3702
|
+
* - {@link dispNaAsBlank}: the Office 2017+ chart extension
|
|
3703
|
+
* `c:extLst/c:ext/c16r3:dataDisplayOptions16/c16r3:dispNaAsBlank/@val`
|
|
3704
|
+
* (uri `{56B9EC1D-385E-4148-901F-78D8002777C0}`), PowerPoint's "Show #N/A
|
|
3705
|
+
* as an empty cell" chart option. Confirmed against real corpus markup
|
|
3706
|
+
* (`e2e/fixtures/chart-data-fidelity.pptx`).
|
|
3519
3707
|
*
|
|
3520
3708
|
* `c:plotVisOnly` lives on {@link PptxChartData.plotVisibleOnly} and is
|
|
3521
3709
|
* intentionally not duplicated here.
|
|
@@ -3524,6 +3712,7 @@ interface PptxChartChrome {
|
|
|
3524
3712
|
autoTitleDeleted?: boolean;
|
|
3525
3713
|
dispBlanksAs?: 'gap' | 'zero' | 'span';
|
|
3526
3714
|
showDLblsOverMax?: boolean;
|
|
3715
|
+
dispNaAsBlank?: boolean;
|
|
3527
3716
|
}
|
|
3528
3717
|
/** Manual chart placement from `c:layout/c:manualLayout` (CT_ManualLayout). */
|
|
3529
3718
|
interface PptxChartManualLayout {
|
|
@@ -3619,6 +3808,26 @@ interface PptxChartData {
|
|
|
3619
3808
|
categoryLevels?: string[][];
|
|
3620
3809
|
dateCategories?: PptxChartDateCategories;
|
|
3621
3810
|
series: PptxChartSeries[];
|
|
3811
|
+
/**
|
|
3812
|
+
* Series hidden from the plot by PowerPoint's "Chart Filters" feature
|
|
3813
|
+
* (Series tab) but still present in the workbook, aggregated across every
|
|
3814
|
+
* chart-type container (combo charts can carry more than one). Absent
|
|
3815
|
+
* when the chart has no such extension. See {@link PptxChartFilteredSeries}.
|
|
3816
|
+
*/
|
|
3817
|
+
filteredSeries?: PptxChartFilteredSeries[];
|
|
3818
|
+
/**
|
|
3819
|
+
* `c15:filteredSeriesTitle`: the auto-generated series title text (e.g.
|
|
3820
|
+
* "Series 3") PowerPoint preserved when the chart filter hid the series
|
|
3821
|
+
* whose data would otherwise have supplied it. See
|
|
3822
|
+
* `utils/chart-ext-titles.ts`. Read-mostly like {@link filteredSeries}.
|
|
3823
|
+
*/
|
|
3824
|
+
filteredSeriesTitle?: string;
|
|
3825
|
+
/**
|
|
3826
|
+
* `c15:filteredCategoryTitle`: the auto-numbered category labels ("1",
|
|
3827
|
+
* "2", "3", ...) PowerPoint preserved when the chart filter hid the
|
|
3828
|
+
* category axis source entirely. See `utils/chart-ext-titles.ts`.
|
|
3829
|
+
*/
|
|
3830
|
+
filteredCategoryTitle?: string[];
|
|
3622
3831
|
/** Chart style/formatting metadata. */
|
|
3623
3832
|
style?: PptxChartStyle;
|
|
3624
3833
|
/** Grouping mode for bar/area/line charts: 'clustered' | 'stacked' | 'percentStacked' */
|
|
@@ -3742,9 +3951,9 @@ interface PptxChartData {
|
|
|
3742
3951
|
/**
|
|
3743
3952
|
* Color cycling method from the chart color style part's `meth` attribute.
|
|
3744
3953
|
*
|
|
3745
|
-
* - `"cycle"
|
|
3746
|
-
* - `"withinLinear"
|
|
3747
|
-
* - `"acrossLinear"
|
|
3954
|
+
* - `"cycle"`: repeat the palette colours in order (default)
|
|
3955
|
+
* - `"withinLinear"`: gradient within each series
|
|
3956
|
+
* - `"acrossLinear"`: gradient across series
|
|
3748
3957
|
*/
|
|
3749
3958
|
colorMethod?: 'cycle' | 'withinLinear' | 'acrossLinear';
|
|
3750
3959
|
/** Internal source color-style part path used for lossless dirty saves. */
|
|
@@ -4541,7 +4750,95 @@ interface PptxSmartArtLayoutNode {
|
|
|
4541
4750
|
rules?: PptxSmartArtNumericRule[];
|
|
4542
4751
|
/** `dgm:shape`: this node's own preset geometry override, when present. */
|
|
4543
4752
|
shape?: PptxSmartArtLayoutNodeShape;
|
|
4753
|
+
/**
|
|
4754
|
+
* `dgm:presOf` (CT_PresentationOf, same iterator shape as `dgm:forEach`):
|
|
4755
|
+
* which data-model point(s) this node's OWN text/geometry binds to -
|
|
4756
|
+
* `axis: ['self']` the point currently being iterated, `['des']` all of
|
|
4757
|
+
* its descendants, `['ch']` its direct children, and so on. Absent or
|
|
4758
|
+
* empty `axis` (including a bare `<dgm:presOf/>`) means the node carries
|
|
4759
|
+
* no text of its own (a pure positioning/decoration wrapper - `composite`,
|
|
4760
|
+
* `sp` spacer, connector cap). See `smartart-layout-interpreter-item-
|
|
4761
|
+
* roles.ts`, the one consumer: it is what lets the interpreter tell a
|
|
4762
|
+
* text-bearing per-item role (a list layout's `childText`, a card
|
|
4763
|
+
* layout's `roleText`/`bodyText`) apart from a same-generation sibling
|
|
4764
|
+
* that positions or decorates instead.
|
|
4765
|
+
*/
|
|
4766
|
+
presentationOf?: PptxSmartArtIteratorAttributes;
|
|
4767
|
+
/**
|
|
4768
|
+
* EVERY `dgm:constr` reachable from this node, including ones declared
|
|
4769
|
+
* inside a `dgm:choose`/`dgm:if`/`dgm:else` that wraps THIS layoutNode's
|
|
4770
|
+
* `constrLst` (a genuinely conditional constraint set, e.g. one branch
|
|
4771
|
+
* per data-point count - `gear`'s composite positions its `gear1`/
|
|
4772
|
+
* `gear2`/`gear3` slots this way, so its plain, direct-child-only
|
|
4773
|
+
* `constraints` above is empty for it). Stops at a nested `dgm:layoutNode`
|
|
4774
|
+
* boundary: that child's own conditional constrLst becomes ITS
|
|
4775
|
+
* `allConstraints`, not folded into the parent's. Read-only /
|
|
4776
|
+
* interpretation-only - `constraints` above (this node's own DIRECT
|
|
4777
|
+
* constrLst) remains the one `applySmartArtLayoutDefinition` round-trips,
|
|
4778
|
+
* so editing an unrelated property can never collapse a genuinely
|
|
4779
|
+
* conditional constrLst into a single branch. `undefined` when this node
|
|
4780
|
+
* declares no constrLst at all, in or out of a choose (the common case);
|
|
4781
|
+
* otherwise a superset of `constraints` (every branch, blindly unioned -
|
|
4782
|
+
* this interpreter does not evaluate `dgm:choose` conditions when
|
|
4783
|
+
* indexing constraints, matching the same "flatten both branches"
|
|
4784
|
+
* convention `nestedLayoutNodes` already uses for `children`). See
|
|
4785
|
+
* `smartart-constraint-solver.ts`'s `buildConstraintIndex`, the only
|
|
4786
|
+
* consumer.
|
|
4787
|
+
*/
|
|
4788
|
+
allConstraints?: PptxSmartArtConstraint[];
|
|
4544
4789
|
children?: PptxSmartArtLayoutNode[];
|
|
4790
|
+
/**
|
|
4791
|
+
* The iterator attributes of the ENCLOSING `dgm:forEach` this node was
|
|
4792
|
+
* found through, when `nestedLayoutNodes` (`smartart-layout-definition
|
|
4793
|
+
* .ts`) reached it by walking one - as opposed to being a direct child of
|
|
4794
|
+
* its parent layoutNode, or reached only through a `dgm:choose` wrapper
|
|
4795
|
+
* (a condition, not an iteration, leaves this `undefined`).
|
|
4796
|
+
*
|
|
4797
|
+
* `forEach` above records a node's OWN direct `dgm:forEach` children
|
|
4798
|
+
* (which wrap ITS descendants); this is the opposite direction - the
|
|
4799
|
+
* forEach that wraps the node ITSELF, one level up. A layoutNode can sit
|
|
4800
|
+
* inside more than one enclosing forEach only via nesting, so this is
|
|
4801
|
+
* always the SINGLE nearest one, not a list.
|
|
4802
|
+
*
|
|
4803
|
+
* This is what tells a genuinely repeated per-child template
|
|
4804
|
+
* (`axis="ch"`, `ptType` absent or `"node"`) apart from a once-only or
|
|
4805
|
+
* transition-only sibling that merely happens to sit inside SOME
|
|
4806
|
+
* `dgm:forEach` (a `ptType="parTrans"`/`"sibTrans"` connector, or
|
|
4807
|
+
* `axis="followSib" cnt="1"`) - both can be direct siblings under the
|
|
4808
|
+
* SAME parent layoutNode (`lProcess1`'s `vertFlow` has one forEach for
|
|
4809
|
+
* its `parTrans` connector and a SEPARATE one, `axis="ch"`, for its
|
|
4810
|
+
* repeated `child` items; `vertFlow.forEach` bundles both, but only
|
|
4811
|
+
* `child.forEachOrigin` says which ONE produced it). See
|
|
4812
|
+
* `smartart-layout-interpreter-item-roles-recursive.ts`, the one
|
|
4813
|
+
* consumer. Read-only / interpretation-only, like `allConstraints`:
|
|
4814
|
+
* never round-tripped by `applySmartArtLayoutDefinition`.
|
|
4815
|
+
*/
|
|
4816
|
+
forEachOrigin?: PptxSmartArtIteratorAttributes;
|
|
4817
|
+
/**
|
|
4818
|
+
* The condition of the NEAREST enclosing `dgm:if` this node was found
|
|
4819
|
+
* through, when `nestedLayoutNodes` (`smartart-layout-definition.ts`)
|
|
4820
|
+
* reached it via a `dgm:choose`'s `if` branch (as opposed to a direct
|
|
4821
|
+
* child, a `dgm:else` branch - always `undefined` here, see below - or a
|
|
4822
|
+
* `dgm:forEach`, which sets {@link forEachOrigin} instead). Lets a
|
|
4823
|
+
* caller that already has the data-model node list decide whether this
|
|
4824
|
+
* node's OWN branch is genuinely live for a specific point, instead of
|
|
4825
|
+
* treating every choose-flattened branch as unconditionally present
|
|
4826
|
+
* (`nestedLayoutNodes`' pre-existing "flatten every branch" convention,
|
|
4827
|
+
* still the default when this is absent or a caller does not evaluate
|
|
4828
|
+
* it) - e.g. `cycle-matrix--fallback-n2.pptx`'s `child1group`..
|
|
4829
|
+
* `child4group`, each gated on a DIFFERENT top-level point existing and
|
|
4830
|
+
* having its own child (`axis="ch ch" st="N 1" cnt="1 0" func="cnt"
|
|
4831
|
+
* op="gte" val="1"`).
|
|
4832
|
+
*
|
|
4833
|
+
* Deliberately `undefined` for a `dgm:else` branch: ECMA-376 defines it
|
|
4834
|
+
* as "none of the sibling ifs matched", which would need the FULL
|
|
4835
|
+
* sibling list's conditions negated and ANDed together, not a single
|
|
4836
|
+
* condition - no gallery fixture measured needs an else branch's own
|
|
4837
|
+
* guard yet, so it is left unconditional (rendered by default, matching
|
|
4838
|
+
* the pre-existing flatten-everything behaviour) rather than guessed at.
|
|
4839
|
+
* Evaluate with `smartart-layout-interpreter-when.ts`'s `evaluateWhen`.
|
|
4840
|
+
*/
|
|
4841
|
+
chooseGuard?: PptxSmartArtWhen;
|
|
4545
4842
|
}
|
|
4546
4843
|
/** Metadata and root node from DiagramML CT_DiagramDefinition. */
|
|
4547
4844
|
interface PptxSmartArtLayoutDefinition {
|
|
@@ -5174,6 +5471,14 @@ interface PptxSmartArtData {
|
|
|
5174
5471
|
* Consulted by the fallback layout engine for direction/org-chart hints.
|
|
5175
5472
|
*/
|
|
5176
5473
|
presLayoutVars?: PptxSmartArtPresLayoutVars;
|
|
5474
|
+
/**
|
|
5475
|
+
* The deck's own theme minor-Latin font (`a:fontScheme/a:minorFont/a:latin/
|
|
5476
|
+
* @typeface`): what SmartArt text actually renders in when no per-run
|
|
5477
|
+
* `a:latin` override is present (the common case - see
|
|
5478
|
+
* `smartart-layout-item-font-size.ts`'s font-fit, the one consumer).
|
|
5479
|
+
* Undefined when the theme carries no font scheme at all.
|
|
5480
|
+
*/
|
|
5481
|
+
themeMinorFont?: string;
|
|
5177
5482
|
/** Relationship ID for the diagram data part (for round-trip save). */
|
|
5178
5483
|
dataRelId?: string;
|
|
5179
5484
|
/** Relationship ID for the diagram layout part. */
|
|
@@ -6133,7 +6438,7 @@ interface SmartArtPptxElement extends PptxElementBase {
|
|
|
6133
6438
|
*
|
|
6134
6439
|
* Used to show type-specific icons and previews in the editor.
|
|
6135
6440
|
*/
|
|
6136
|
-
type OleObjectType = 'excel' | 'word' | 'pdf' | 'visio' | 'mathtype' | 'package' | 'unknown';
|
|
6441
|
+
type OleObjectType = 'excel' | 'word' | 'powerpoint' | 'pdf' | 'visio' | 'mathtype' | 'package' | 'unknown';
|
|
6137
6442
|
/**
|
|
6138
6443
|
* An OLE (Object Linking and Embedding) object.
|
|
6139
6444
|
*
|
|
@@ -6211,6 +6516,15 @@ interface OlePptxElement extends PptxElementBase {
|
|
|
6211
6516
|
* `false`; `undefined` means the source authored no explicit value.
|
|
6212
6517
|
*/
|
|
6213
6518
|
oleUpdateAutomatic?: boolean;
|
|
6519
|
+
/**
|
|
6520
|
+
* Set by the in-viewer OLE content editors (`ole-edit-api.ts`) whenever
|
|
6521
|
+
* `oleEmbeddedData` and/or `previewImageData` have been changed in memory
|
|
6522
|
+
* and still need to be written back into the saved package. Never
|
|
6523
|
+
* authored from a parsed file; purely an in-memory save signal, mirroring
|
|
6524
|
+
* `PptxSlide.isDirty`. The save writer clears it once the pending write
|
|
6525
|
+
* has been queued.
|
|
6526
|
+
*/
|
|
6527
|
+
oleContentDirty?: boolean;
|
|
6214
6528
|
/** Accessibility description from `p:nvGraphicFramePr/p:cNvPr/@descr`. */
|
|
6215
6529
|
altText?: string;
|
|
6216
6530
|
/** Accessibility title from `p:nvGraphicFramePr/p:cNvPr/@title`. */
|
|
@@ -6307,13 +6621,14 @@ interface MediaPptxElement extends PptxElementBase {
|
|
|
6307
6621
|
*/
|
|
6308
6622
|
isLinked?: boolean;
|
|
6309
6623
|
/**
|
|
6310
|
-
* Accessibility description from `p:nvGraphicFramePr/p:cNvPr/@descr
|
|
6311
|
-
*
|
|
6312
|
-
*
|
|
6313
|
-
*
|
|
6624
|
+
* Accessibility description. Read from `p:nvGraphicFramePr/p:cNvPr/@descr`
|
|
6625
|
+
* for the `p:graphicFrame`-shaped (SDK-created) media form, or from
|
|
6626
|
+
* `p:nvPicPr/p:cNvPr/@descr` for the `p:pic`-shaped media form (real
|
|
6627
|
+
* PowerPoint's usual authoring shape for a video/audio placeholder); see
|
|
6628
|
+
* `PptxHandlerRuntimePictureParsing.ts`.
|
|
6314
6629
|
*/
|
|
6315
6630
|
altText?: string;
|
|
6316
|
-
/** Accessibility title from `p:
|
|
6631
|
+
/** Accessibility title, from the same `@title` attribute on whichever `p:cNvPr` the media form uses. Same scope note as {@link altText}. */
|
|
6317
6632
|
title?: string;
|
|
6318
6633
|
/** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
|
|
6319
6634
|
extensionXml?: PptxGraphicFrameExtension[];
|
|
@@ -6340,6 +6655,46 @@ interface GroupPptxElement extends PptxElementBase {
|
|
|
6340
6655
|
children: PptxElement[];
|
|
6341
6656
|
/** Fill style extracted from the group's `p:grpSpPr`, used for `a:grpFill` inheritance. */
|
|
6342
6657
|
groupFill?: ShapeStyle;
|
|
6658
|
+
/**
|
|
6659
|
+
* The SAME `p:grpSpPr` extraction as {@link groupFill}, kept whenever the
|
|
6660
|
+
* group carries a `p:grpSpPr` at all, regardless of whether it resolved to
|
|
6661
|
+
* a paintable fill.
|
|
6662
|
+
*
|
|
6663
|
+
* `groupFill` is `undefined` unless the group has a real fill, because
|
|
6664
|
+
* `getGroupChildParentFill`/`groupChildInheritedFill` (the `a:grpFill`
|
|
6665
|
+
* inheritance chain) must keep chaining through an ancestor's fill when
|
|
6666
|
+
* THIS group has none of its own. A group whose `p:grpSpPr` authors only
|
|
6667
|
+
* `a:effectLst` (shadow/glow/soft-edge/reflection, no fill) needs those
|
|
6668
|
+
* effects to still reach the renderer, so they are kept here under a name
|
|
6669
|
+
* that carries no fill-inheritance meaning. Currently only reflection is
|
|
6670
|
+
* read from it (`getComputedEffectStyle`); the rest of `a:effectLst` on a
|
|
6671
|
+
* group remains unsupported.
|
|
6672
|
+
*/
|
|
6673
|
+
groupEffectStyle?: ShapeStyle;
|
|
6674
|
+
/**
|
|
6675
|
+
* Exact EMU the group's own `a:chOff`/`a:chExt` (the coordinate space its
|
|
6676
|
+
* CHILDREN are authored in) were parsed from, alongside {@link
|
|
6677
|
+
* PptxElementBase.xEmu} etc for the group's own placement in its PARENT's
|
|
6678
|
+
* space. `undefined` when the source carried no usable `a:chOff`/`a:chExt`
|
|
6679
|
+
* (an SDK-created group, or one whose `a:xfrm` had no child-space data).
|
|
6680
|
+
*
|
|
6681
|
+
* Used by `group-xfrm-preservation.ts`'s `hasCapturedChildSpace` to decide
|
|
6682
|
+
* whether this group's original `a:chOff`/`a:chExt` can be re-emitted
|
|
6683
|
+
* verbatim (always true once captured, regardless of whether anything in
|
|
6684
|
+
* the subtree has moved or resized - only its DIRECT children's
|
|
6685
|
+
* `a:off`/`a:ext` are recomputed, via `invertChildIntoGroupSpace`, when
|
|
6686
|
+
* something changed), instead of the normalized `chOff 0,0` / `chExt ==
|
|
6687
|
+
* ext` space the writer falls back to when this is `undefined` (or
|
|
6688
|
+
* degenerate). See `group-shape-geometry.ts`'s module doc for why a group
|
|
6689
|
+
* needs two coordinate systems at all.
|
|
6690
|
+
*/
|
|
6691
|
+
chOffXEmu?: number;
|
|
6692
|
+
/** See {@link chOffXEmu}. */
|
|
6693
|
+
chOffYEmu?: number;
|
|
6694
|
+
/** See {@link chOffXEmu}. */
|
|
6695
|
+
chExtWidthEmu?: number;
|
|
6696
|
+
/** See {@link chOffXEmu}. */
|
|
6697
|
+
chExtHeightEmu?: number;
|
|
6343
6698
|
}
|
|
6344
6699
|
/**
|
|
6345
6700
|
* A freehand ink / drawing stroke captured with a stylus or mouse.
|
|
@@ -6368,6 +6723,24 @@ interface InkPptxElement extends PptxElementBase {
|
|
|
6368
6723
|
* variable-width strokes that reflect stylus/pen pressure.
|
|
6369
6724
|
*/
|
|
6370
6725
|
inkPointPressures?: number[][];
|
|
6726
|
+
/**
|
|
6727
|
+
* Per-path arrays of per-point pen-tilt lean direction (degrees, straight
|
|
6728
|
+
* from `PointerEvent.tiltX` on supporting hardware).
|
|
6729
|
+
*
|
|
6730
|
+
* Each entry corresponds to the path at the same index in `inkPaths`, and
|
|
6731
|
+
* is paired positionally with {@link inkPointTiltY}. Present only when at
|
|
6732
|
+
* least one point in the stroke reported a genuinely non-zero tilt: a
|
|
6733
|
+
* device that never reports tilt (a mouse, or a stylus with no tilt
|
|
6734
|
+
* sensor) leaves both arrays absent, the same way `inkPointPressures` is
|
|
6735
|
+
* omitted when pressure never varies. When present, the renderer converts
|
|
6736
|
+
* the raw `(tiltX, tiltY)` vector into a lean angle + magnitude (see
|
|
6737
|
+
* `pptx-viewer-shared`'s `tiltChannelsFromVectors`) and widens the stroke
|
|
6738
|
+
* perpendicular to the lean direction, approximating a chisel-tip
|
|
6739
|
+
* calligraphy nib.
|
|
6740
|
+
*/
|
|
6741
|
+
inkPointTiltX?: number[][];
|
|
6742
|
+
/** Per-path, per-point pen-tilt lean direction (degrees), paired with {@link inkPointTiltX}. */
|
|
6743
|
+
inkPointTiltY?: number[][];
|
|
6371
6744
|
/** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
|
|
6372
6745
|
extensionXml?: PptxGraphicFrameExtension[];
|
|
6373
6746
|
}
|
|
@@ -6401,6 +6774,20 @@ interface ContentPartInkStroke {
|
|
|
6401
6774
|
* {@link tiltAngles}.
|
|
6402
6775
|
*/
|
|
6403
6776
|
tiltMagnitudes?: number[];
|
|
6777
|
+
/**
|
|
6778
|
+
* Which InkML channel pair {@link tiltAngles}/{@link tiltMagnitudes} were
|
|
6779
|
+
* decoded from: `'azimuthAltitude'` when the source declared `AZIMUTH`
|
|
6780
|
+
* (optionally paired with `ALTITUDE`); omitted (implying `OTx`/`OTy`, i.e.
|
|
6781
|
+
* `'vector'`) otherwise, including for tilt this library itself captured
|
|
6782
|
+
* from the Draw tool's `PointerEvent.tiltX`/`tiltY`.
|
|
6783
|
+
*
|
|
6784
|
+
* A save that has to rewrite this content part's InkML (see
|
|
6785
|
+
* `inkml-content-part-writer.ts`) uses this to re-declare the SAME channel
|
|
6786
|
+
* pair the file already used, rather than always converting to `OTx`/`OTy`;
|
|
6787
|
+
* the rendered lean is identical either way; only the written channel
|
|
6788
|
+
* NAMES differ.
|
|
6789
|
+
*/
|
|
6790
|
+
tiltEncoding?: 'vector' | 'azimuthAltitude';
|
|
6404
6791
|
}
|
|
6405
6792
|
/**
|
|
6406
6793
|
* A content-part element wrapped in `mc:AlternateContent`.
|
|
@@ -7067,10 +7454,27 @@ interface PptxNativeAnimation {
|
|
|
7067
7454
|
buildLevel?: number;
|
|
7068
7455
|
/** Group ID linking a `p:bldP` entry to its timing animation node. */
|
|
7069
7456
|
groupId?: string;
|
|
7070
|
-
/**
|
|
7457
|
+
/**
|
|
7458
|
+
* Sound relationship ID to play when animation triggers. Modern PowerPoint
|
|
7459
|
+
* (COM-verified against 2016) writes this as a `p:audio/p:cMediaNode`
|
|
7460
|
+
* sibling of the effect's own `p:childTnLst`, targeting `p:sndTgt` rather
|
|
7461
|
+
* than a shape; the legacy `p:stSnd` form (directly on `p:cTn`) is still
|
|
7462
|
+
* accepted on load for round-trip of older-authored decks, but PowerPoint
|
|
7463
|
+
* itself no longer writes it and does not recognise it back
|
|
7464
|
+
* (`Effect.EffectInformation.SoundEffect` reads empty against it).
|
|
7465
|
+
*/
|
|
7071
7466
|
soundRId?: string;
|
|
7072
7467
|
/** Resolved sound file path from relationship. */
|
|
7073
7468
|
soundPath?: string;
|
|
7469
|
+
/**
|
|
7470
|
+
* The embedded sound's `@_name` (from `p:snd`/`p:sndTgt`). For one of
|
|
7471
|
+
* PowerPoint's 19 built-in stock sounds this is the exact upper-case file
|
|
7472
|
+
* name PowerPoint itself writes (e.g. `"CHIMES.WAV"`); see
|
|
7473
|
+
* `pptx-viewer-shared`'s `effect-sound-catalogue.ts`, which matches this
|
|
7474
|
+
* value back to a gallery entry. Absent for a custom sound with no name,
|
|
7475
|
+
* or when unresolved.
|
|
7476
|
+
*/
|
|
7477
|
+
soundName?: string;
|
|
7074
7478
|
/** Whether to stop any currently playing sound (`p:endSnd`). */
|
|
7075
7479
|
stopSound?: boolean;
|
|
7076
7480
|
/**
|
|
@@ -7235,17 +7639,28 @@ interface PptxNativeAnimation {
|
|
|
7235
7639
|
*/
|
|
7236
7640
|
afterEffect?: boolean;
|
|
7237
7641
|
/**
|
|
7238
|
-
* "After animation" end-state behaviour
|
|
7239
|
-
*
|
|
7240
|
-
*
|
|
7241
|
-
*
|
|
7242
|
-
*
|
|
7243
|
-
*
|
|
7244
|
-
*
|
|
7642
|
+
* "After animation" end-state behaviour: dim-to-colour, hide-after-
|
|
7643
|
+
* animation, or hide-on-next-click. Populated directly by the
|
|
7644
|
+
* native-timing parser (`native-animation-after-effect.ts`) when the
|
|
7645
|
+
* effect's `p:cTn/p:subTnLst` carries PowerPoint's genuine after-effect
|
|
7646
|
+
* shape, so a real-world deck's build shows up here even with no
|
|
7647
|
+
* `pptx:editorMeta`. `applyAfterAnimationFromEditorList` in
|
|
7648
|
+
* `pptx-viewer-shared` overrides this from the matching
|
|
7649
|
+
* {@link PptxElementAnimation.afterAnimation} entry when the editor's
|
|
7650
|
+
* per-element animation list has one (the model the animation panel
|
|
7651
|
+
* writes `afterAnimation` into), so an edit through our own UI always wins.
|
|
7245
7652
|
*/
|
|
7246
7653
|
afterAnimationAction?: PptxAfterAnimationAction;
|
|
7247
|
-
/** Dim-to color hex, present when {@link afterAnimationAction} is `dimToColor`. */
|
|
7654
|
+
/** Dim-to color hex, present when {@link afterAnimationAction} is `dimToColor` AND the dim target is an already-resolved `a:srgbClr`. */
|
|
7248
7655
|
afterAnimationColor?: string;
|
|
7656
|
+
/**
|
|
7657
|
+
* The typed theme reference when a `dimToColor` target is an `a:schemeClr`
|
|
7658
|
+
* (e.g. `accent2`) instead of `a:srgbClr`: this parse layer has no theme to
|
|
7659
|
+
* resolve it to sRGB with (see {@link afterAnimationColor}'s doc), so a
|
|
7660
|
+
* playback consumer resolves this against the deck's theme colour map.
|
|
7661
|
+
* Mutually exclusive with {@link afterAnimationColor} being set.
|
|
7662
|
+
*/
|
|
7663
|
+
afterAnimationColorRef?: PptxThemeColorRef;
|
|
7249
7664
|
/**
|
|
7250
7665
|
* Parsed `p:animEffect` filter descriptor. `presetId`/`presetClass` remain
|
|
7251
7666
|
* the primary effect selector (see `resolveEffect` in `pptx-viewer-shared`);
|
|
@@ -7377,13 +7792,46 @@ interface PptxAnimationKeyframe {
|
|
|
7377
7792
|
* fidelity; consumers may use it to drive computed animation values.
|
|
7378
7793
|
*/
|
|
7379
7794
|
fmla?: string;
|
|
7795
|
+
/**
|
|
7796
|
+
* The typed theme reference when a `p:val/p:clrVal` stop is an
|
|
7797
|
+
* `a:schemeClr` (e.g. `accent1`), including any `tint`/`shade`/`lumMod`/
|
|
7798
|
+
* `lumOff`/`alpha` children. {@link value} keeps the bare scheme name for
|
|
7799
|
+
* round-trip; a playback consumer needs this ref (resolved against the
|
|
7800
|
+
* deck's theme colour map) to turn the stop into a real CSS colour, which
|
|
7801
|
+
* the bare name alone cannot do. Absent for an `a:srgbClr` stop, whose
|
|
7802
|
+
* {@link value} is already a resolved `#rrggbb` hex string.
|
|
7803
|
+
*/
|
|
7804
|
+
colorRef?: PptxThemeColorRef;
|
|
7380
7805
|
}
|
|
7381
7806
|
/** One generic `p:anim` behaviour inside a composed PowerPoint effect. */
|
|
7382
7807
|
interface PptxAttributeAnimation {
|
|
7383
7808
|
/** Lowercased target attribute from `p:attrNameLst`. */
|
|
7384
7809
|
attrName: string;
|
|
7385
|
-
/**
|
|
7810
|
+
/**
|
|
7811
|
+
* Authored value stops from this behaviour's `p:tavLst`. Empty when the
|
|
7812
|
+
* behaviour instead uses the simpler `from`/`to`/`by` attribute form (see
|
|
7813
|
+
* below); at least one of `keyframes`, `from`/`to`, or `by` is present.
|
|
7814
|
+
*/
|
|
7386
7815
|
keyframes: PptxAnimationKeyframe[];
|
|
7816
|
+
/**
|
|
7817
|
+
* `p:anim/@_from` (a formula string, ECMA-376 S19.5.4 CT_TLAnimateBehavior):
|
|
7818
|
+
* the absolute starting value, used instead of `p:tavLst` when the
|
|
7819
|
+
* behaviour only has two endpoints. PowerPoint writes this form for some
|
|
7820
|
+
* built-in presets (e.g. "Grow And Turn"'s `ppt_x` fly-in): a bare
|
|
7821
|
+
* `p:anim from="..." to="..."` with no `p:tavLst` child at all. See
|
|
7822
|
+
* `animation-ppt-formula-ground-truth.md` in `pptx-viewer-shared` for the
|
|
7823
|
+
* real-PowerPoint sample this was found in.
|
|
7824
|
+
*/
|
|
7825
|
+
from?: string;
|
|
7826
|
+
/** `p:anim/@_to`: the absolute ending value. See {@link from}. */
|
|
7827
|
+
to?: string;
|
|
7828
|
+
/**
|
|
7829
|
+
* `p:anim/@_by`: a DELTA formula added to wherever the attribute already
|
|
7830
|
+
* stands (as opposed to `from`/`to`'s absolute values), typically paired
|
|
7831
|
+
* with `p:cBhvr/@_additive="sum"` so it composites with a sibling
|
|
7832
|
+
* behaviour driving the same attribute instead of replacing it.
|
|
7833
|
+
*/
|
|
7834
|
+
by?: string;
|
|
7387
7835
|
/** Duration from this behaviour's nested `p:cTn/@dur`. */
|
|
7388
7836
|
durationMs?: number;
|
|
7389
7837
|
/** Start offset from this behaviour's nested `p:stCondLst`. */
|
|
@@ -7392,8 +7840,11 @@ interface PptxAttributeAnimation {
|
|
|
7392
7840
|
* Interpolation mode from this behaviour's own `@_calcmode`
|
|
7393
7841
|
* (ST_TLAnimateBehaviorCalcMode, ECMA-376 S19.5.2): `discrete` snaps to
|
|
7394
7842
|
* each `p:tav` stop with no interpolation, `lin` (the OOXML default)
|
|
7395
|
-
* interpolates linearly
|
|
7396
|
-
*
|
|
7843
|
+
* interpolates linearly. `fmla` as the WHOLE behaviour's calc mode has
|
|
7844
|
+
* never been observed in a real PowerPoint file and is not consulted at
|
|
7845
|
+
* playback; what PowerPoint actually writes is `calcmode="lin"` with a
|
|
7846
|
+
* per-stop `p:tav/@fmla` (see {@link PptxAnimationKeyframe.fmla}), which
|
|
7847
|
+
* IS consulted regardless of this field's value. Absent means `lin`.
|
|
7397
7848
|
*/
|
|
7398
7849
|
calcMode?: 'discrete' | 'lin' | 'fmla';
|
|
7399
7850
|
}
|
|
@@ -7419,16 +7870,31 @@ interface PptxColorAnimation {
|
|
|
7419
7870
|
* companion to `@dir` for HSL colour-space animations.
|
|
7420
7871
|
*/
|
|
7421
7872
|
path?: string;
|
|
7422
|
-
/** Starting color as hex string. */
|
|
7873
|
+
/** Starting color as hex string, or the bare scheme name (e.g. `accent1`) for a theme colour; see {@link fromColorRef}. */
|
|
7423
7874
|
fromColor?: string;
|
|
7424
|
-
/** Ending color as hex string. */
|
|
7875
|
+
/** Ending color as hex string, or the bare scheme name; see {@link toColorRef}. */
|
|
7425
7876
|
toColor?: string;
|
|
7426
7877
|
/**
|
|
7427
|
-
* Color delta (for "by" animations) as hex string
|
|
7428
|
-
*
|
|
7429
|
-
*
|
|
7878
|
+
* Color delta (for "by" animations) as hex string, or the bare scheme name;
|
|
7879
|
+
* see {@link byColorRef}. For HSL colour-space animations this retains the
|
|
7880
|
+
* historical byte-packed compatibility value; consumers should prefer
|
|
7881
|
+
* {@link hslDelta}, which preserves signed values.
|
|
7430
7882
|
*/
|
|
7431
7883
|
byColor?: string;
|
|
7884
|
+
/**
|
|
7885
|
+
* The typed theme reference when {@link fromColor} is an `a:schemeClr`
|
|
7886
|
+
* (including `tint`/`shade`/`lumMod`/`lumOff`/`alpha`), so playback can
|
|
7887
|
+
* resolve it against the deck's theme colour map. Absent when `fromColor`
|
|
7888
|
+
* is already a resolved `#rrggbb` hex (an `a:srgbClr` stop).
|
|
7889
|
+
*/
|
|
7890
|
+
fromColorRef?: PptxThemeColorRef;
|
|
7891
|
+
/** The typed theme reference for {@link toColor}; see {@link fromColorRef}. */
|
|
7892
|
+
toColorRef?: PptxThemeColorRef;
|
|
7893
|
+
/**
|
|
7894
|
+
* The typed theme reference for {@link byColor} (RGB colour space only; an
|
|
7895
|
+
* HSL `by` is a signed delta, never a theme colour). See {@link fromColorRef}.
|
|
7896
|
+
*/
|
|
7897
|
+
byColorRef?: PptxThemeColorRef;
|
|
7432
7898
|
/**
|
|
7433
7899
|
* Typed HSL delta from `p:by/p:hsl`. This preserves signed values and their
|
|
7434
7900
|
* OOXML units without forcing them through the legacy byte-packed `byColor`
|
|
@@ -7568,10 +8034,24 @@ interface PptxElementAnimation {
|
|
|
7568
8034
|
motionPathRotationCenterX?: number;
|
|
7569
8035
|
/** Motion-path rotation centre Y in slide percentage units (`p:rCtr/@y`). */
|
|
7570
8036
|
motionPathRotationCenterY?: number;
|
|
7571
|
-
/**
|
|
8037
|
+
/**
|
|
8038
|
+
* Sound relationship ID to play when animation triggers. Written on save
|
|
8039
|
+
* as a `p:audio/p:cMediaNode` sibling of the effect's own `p:childTnLst`
|
|
8040
|
+
* (see `PptxNativeAnimation.soundRId` for the COM-verified detail).
|
|
8041
|
+
*/
|
|
7572
8042
|
soundRId?: string;
|
|
7573
8043
|
/** Resolved sound file path from relationship. */
|
|
7574
8044
|
soundPath?: string;
|
|
8045
|
+
/**
|
|
8046
|
+
* The `@_name` to write on the embedded sound (`p:sndTgt`). For a stock
|
|
8047
|
+
* gallery pick this is the exact PowerPoint file name (e.g.
|
|
8048
|
+
* `"CHIMES.WAV"`), which is what makes PowerPoint itself recognise the
|
|
8049
|
+
* sound as that built-in entry when it reopens the saved deck (there is no
|
|
8050
|
+
* separate "built-in" flag anywhere in the schema). Set by
|
|
8051
|
+
* `pptx-viewer-shared`'s `setEffectSound` when the pick carries a
|
|
8052
|
+
* `soundName`; absent for a custom file with no meaningful name.
|
|
8053
|
+
*/
|
|
8054
|
+
soundName?: string;
|
|
7575
8055
|
/** Whether to stop any currently playing sound (`p:endSnd`). */
|
|
7576
8056
|
stopSound?: boolean;
|
|
7577
8057
|
/**
|
|
@@ -7586,7 +8066,9 @@ interface PptxElementAnimation {
|
|
|
7586
8066
|
/**
|
|
7587
8067
|
* Display name for the chosen sound (e.g. the uploaded file's name),
|
|
7588
8068
|
* shown by the authoring UI's sound picker. Purely cosmetic; has no
|
|
7589
|
-
* OOXML equivalent and is not required for playback.
|
|
8069
|
+
* OOXML equivalent and is not required for playback. For a stock gallery
|
|
8070
|
+
* pick, the UI derives its label from {@link soundName} via the catalogue
|
|
8071
|
+
* instead of this field.
|
|
7590
8072
|
*/
|
|
7591
8073
|
soundFileName?: string;
|
|
7592
8074
|
/**
|
|
@@ -8641,13 +9123,13 @@ interface PptxSlide {
|
|
|
8641
9123
|
backgroundPattern?: PptxSlideBackgroundPattern;
|
|
8642
9124
|
/**
|
|
8643
9125
|
* `<p:bgPr/@shadeToTitle>`: boolean flag instructing the renderer to
|
|
8644
|
-
*
|
|
8645
|
-
*
|
|
8646
|
-
*
|
|
9126
|
+
* anchor the background gradient on the title placeholder as a
|
|
9127
|
+
* rectangular path gradient (COM-measured against real PowerPoint;
|
|
9128
|
+
* it does NOT recolour toward the title's text colour, despite the
|
|
9129
|
+
* attribute's name). Parsed and round-tripped here on the core model;
|
|
9130
|
+
* the actual visual effect is applied by `pptx-viewer-shared`'s
|
|
8647
9131
|
* `getSlideBackgroundStyle` (see `render/background-shade-to-title.ts`),
|
|
8648
|
-
* consumed by all five bindings, not by core itself.
|
|
8649
|
-
* docstring explains the approximation: no published ECMA-376 or
|
|
8650
|
-
* MS-ODRAWXML text documents the exact legacy blend. Legacy PowerPoint
|
|
9132
|
+
* consumed by all five bindings, not by core itself. Legacy PowerPoint
|
|
8651
9133
|
* 97-2003 hint, not observed in any real-world corpus file this project
|
|
8652
9134
|
* has collected and not settable from any modern PowerPoint UI; see
|
|
8653
9135
|
* `docs/guide/limitations.md`.
|
|
@@ -9934,7 +10416,7 @@ interface PptxHandlerLoadOptions {
|
|
|
9934
10416
|
allowExternalImages?: boolean;
|
|
9935
10417
|
}
|
|
9936
10418
|
/** Output format for the save pipeline. */
|
|
9937
|
-
type PptxSaveFormat = 'pptx' | 'ppsx' | 'pptm';
|
|
10419
|
+
type PptxSaveFormat = 'pptx' | 'ppsx' | 'pptm' | 'ppt';
|
|
9938
10420
|
interface PptxHandlerSaveOptions {
|
|
9939
10421
|
headerFooter?: PptxHeaderFooter;
|
|
9940
10422
|
presentationProperties?: PptxPresentationProperties;
|
|
@@ -10030,8 +10512,23 @@ interface PptxHandlerSaveOptions {
|
|
|
10030
10512
|
* - `'pptx'` (default): Standard presentation.
|
|
10031
10513
|
* - `'ppsx'`: Slide-show file (opens in presentation mode).
|
|
10032
10514
|
* - `'pptm'`: Macro-enabled presentation (requires VBA data).
|
|
10515
|
+
* - `'ppt'`: Legacy binary PowerPoint 97-2003 presentation. Bypasses the
|
|
10516
|
+
* OOXML ZIP pipeline entirely; see `PptxHandlerRuntimeSaveLegacyPpt`.
|
|
10517
|
+
* Elements with no binary equivalent (charts, SmartArt, media, OLE, ink,
|
|
10518
|
+
* 3D models) are degraded to a rasterised preview picture or a labelled
|
|
10519
|
+
* placeholder, each reported via a `scope: 'save'`-adjacent
|
|
10520
|
+
* `PptxCompatibilityWarning`.
|
|
10033
10521
|
*/
|
|
10034
10522
|
outputFormat?: PptxSaveFormat;
|
|
10523
|
+
/**
|
|
10524
|
+
* Password for RC4 CryptoAPI encryption of a `'ppt'`-format save. Ignored
|
|
10525
|
+
* for every other {@link outputFormat}; encrypting a `.pptx`/`.ppsx`/`.pptm`
|
|
10526
|
+
* save uses {@link IPptxHandlerRuntime.saveEncrypted}'s separate AES/Agile
|
|
10527
|
+
* OLE2 wrapping instead, since the legacy binary format's own encryption
|
|
10528
|
+
* scheme is embedded directly in the `.ppt` stream rather than wrapping an
|
|
10529
|
+
* already-produced package.
|
|
10530
|
+
*/
|
|
10531
|
+
pptPassword?: string;
|
|
10035
10532
|
/**
|
|
10036
10533
|
* Embedded fonts to write back (or add) to the saved PPTX.
|
|
10037
10534
|
*
|
|
@@ -10743,6 +11240,23 @@ declare class PptxHandler extends PptxHandlerCore {
|
|
|
10743
11240
|
/** Supported merge shape operations (matching PowerPoint's Merge Shapes menu). */
|
|
10744
11241
|
type MergeShapeOperation = 'union' | 'intersect' | 'subtract' | 'fragment' | 'combine';
|
|
10745
11242
|
|
|
11243
|
+
//#region src/render/animation-text-style-resolve.d.ts
|
|
11244
|
+
/**
|
|
11245
|
+
* Framework-neutral text-style override a font-style emphasis effect applies
|
|
11246
|
+
* on top of its target's own authored per-run bold/italic/underline/size/
|
|
11247
|
+
* colour. Every binding maps this onto its own text container so it OVERRIDES
|
|
11248
|
+
* the runs' inline styles (the runs carry explicit inline styles of their
|
|
11249
|
+
* own, so plain CSS inheritance cannot reach them).
|
|
11250
|
+
*/
|
|
11251
|
+
interface TextStyleAnimationDescriptor {
|
|
11252
|
+
bold?: boolean;
|
|
11253
|
+
italic?: boolean;
|
|
11254
|
+
underline?: boolean;
|
|
11255
|
+
/** Relative multiplier against each run's own authored font size. */
|
|
11256
|
+
fontScale?: number;
|
|
11257
|
+
color?: string;
|
|
11258
|
+
}
|
|
11259
|
+
|
|
10746
11260
|
/** Viewer interaction mode: read-only, edit, presentation, or master-view. */
|
|
10747
11261
|
type ViewerMode = 'preview' | 'edit' | 'present' | 'master';
|
|
10748
11262
|
/**
|
|
@@ -10909,22 +11423,15 @@ interface CollaborationConfig {
|
|
|
10909
11423
|
writeBackDebounceMs?: number;
|
|
10910
11424
|
}
|
|
10911
11425
|
//#endregion
|
|
10912
|
-
//#region src/render/animation-
|
|
11426
|
+
//#region src/render/animation-timeline-build-descriptors.d.ts
|
|
10913
11427
|
/**
|
|
10914
|
-
*
|
|
10915
|
-
*
|
|
10916
|
-
*
|
|
10917
|
-
*
|
|
10918
|
-
*
|
|
11428
|
+
* `animation-timeline-build-descriptors` - staged-build (`p:bldChart` /
|
|
11429
|
+
* `p:bldDgm`) reveal descriptor types, split out of `animation-timeline-types`
|
|
11430
|
+
* to keep that module under the file-size limit. Re-exported from
|
|
11431
|
+
* `animation-timeline-types` so existing imports are unaffected.
|
|
11432
|
+
*
|
|
11433
|
+
* @module render/animation-timeline-build-descriptors
|
|
10919
11434
|
*/
|
|
10920
|
-
interface TextStyleAnimationDescriptor {
|
|
10921
|
-
bold?: boolean;
|
|
10922
|
-
italic?: boolean;
|
|
10923
|
-
underline?: boolean;
|
|
10924
|
-
/** Relative multiplier against each run's own authored font size. */
|
|
10925
|
-
fontScale?: number;
|
|
10926
|
-
color?: string;
|
|
10927
|
-
}
|
|
10928
11435
|
/**
|
|
10929
11436
|
* Normalized staged-reveal mode for a chart graphic frame, derived from the
|
|
10930
11437
|
* OOXML `a:bldChart/@bld` (or `p:bldOleChart/@bld`) token:
|
|
@@ -10958,12 +11465,12 @@ interface ChartRevealPoint {
|
|
|
10958
11465
|
* Playback-time chart reveal state derived from AUTHORED `p:graphicEl`
|
|
10959
11466
|
* indices (see `chart-reveal-descriptor`'s `resolveChartRevealDescriptor`),
|
|
10960
11467
|
* rather than from click-count/time progress. Present on
|
|
10961
|
-
* {@link ElementAnimationState.chartReveal}
|
|
10962
|
-
* chart-build step for the element carried index data;
|
|
10963
|
-
* this over the progress-based `build`/`ElementBuildState`
|
|
10964
|
-
* since it reflects the real authored reveal set (correct
|
|
10965
|
-
* reversed-order or gapped chart build), and falls back to `build`
|
|
10966
|
-
* absent.
|
|
11468
|
+
* {@link import('./animation-timeline-group').ElementAnimationState.chartReveal}
|
|
11469
|
+
* only when every fired chart-build step for the element carried index data;
|
|
11470
|
+
* a renderer prefers this over the progress-based `build`/`ElementBuildState`
|
|
11471
|
+
* path when present, since it reflects the real authored reveal set (correct
|
|
11472
|
+
* even for a reversed-order or gapped chart build), and falls back to `build`
|
|
11473
|
+
* when absent.
|
|
10967
11474
|
*/
|
|
10968
11475
|
interface ChartRevealDescriptor {
|
|
10969
11476
|
/**
|
|
@@ -10984,12 +11491,13 @@ interface ChartRevealDescriptor {
|
|
|
10984
11491
|
* Playback-time SmartArt diagram reveal state derived from AUTHORED
|
|
10985
11492
|
* `p:graphicEl/p:dgm/@id` indices (see `diagram-reveal-descriptor`'s
|
|
10986
11493
|
* `resolveDiagramRevealDescriptor`), rather than from click-count/time
|
|
10987
|
-
* progress. Present on
|
|
10988
|
-
*
|
|
10989
|
-
*
|
|
10990
|
-
*
|
|
10991
|
-
*
|
|
10992
|
-
*
|
|
11494
|
+
* progress. Present on
|
|
11495
|
+
* {@link import('./animation-timeline-group').ElementAnimationState.diagramReveal}
|
|
11496
|
+
* only when every fired diagram-build step for the element carried
|
|
11497
|
+
* `p:graphicEl` data. A SmartArt renderer prefers this over the
|
|
11498
|
+
* progress-based `build` / {@link ElementBuildState} path when present, since
|
|
11499
|
+
* it reflects the real authored reveal set (correct even for a
|
|
11500
|
+
* reversed-order or by-branch build), and falls back to `build` when absent.
|
|
10993
11501
|
*/
|
|
10994
11502
|
interface DiagramRevealDescriptor {
|
|
10995
11503
|
/**
|
|
@@ -11002,9 +11510,11 @@ interface DiagramRevealDescriptor {
|
|
|
11002
11510
|
nodeIds: ReadonlySet<string>;
|
|
11003
11511
|
}
|
|
11004
11512
|
/**
|
|
11005
|
-
* Playback-time staged-build state surfaced on
|
|
11006
|
-
*
|
|
11007
|
-
*
|
|
11513
|
+
* Playback-time staged-build state surfaced on
|
|
11514
|
+
* {@link import('./animation-timeline-group').ElementAnimationState}.
|
|
11515
|
+
* `progress` is the 0..1 fraction of the build revealed at the current
|
|
11516
|
+
* playback time; a consumer maps it to its own item COUNT (see
|
|
11517
|
+
* `revealedStageCount`).
|
|
11008
11518
|
*/
|
|
11009
11519
|
type ElementBuildState = {
|
|
11010
11520
|
kind: 'chart';
|
|
@@ -11067,14 +11577,14 @@ interface ElementAnimationState {
|
|
|
11067
11577
|
animatesStroke?: boolean;
|
|
11068
11578
|
/**
|
|
11069
11579
|
* Active discrete font-style / colour / size override (see
|
|
11070
|
-
* {@link TimelineStep.textStyle}) a
|
|
11071
|
-
* applies to this element's text,
|
|
11072
|
-
* bold/italic/underline/size/colour.
|
|
11073
|
-
* this on step start and again on
|
|
11074
|
-
* `p:cTn/@fill` holds its end
|
|
11075
|
-
* maps it onto its run markup
|
|
11076
|
-
* (`animation-text-style-css.ts`). Absent
|
|
11077
|
-
* effect is currently active on this element.
|
|
11580
|
+
* {@link import('./animation-timeline-step').TimelineStep.textStyle}) a
|
|
11581
|
+
* font-style emphasis effect currently applies to this element's text,
|
|
11582
|
+
* OVERRIDING the runs' own inline bold/italic/underline/size/colour.
|
|
11583
|
+
* `animation-playback-engine.ts` writes this on step start and again on
|
|
11584
|
+
* cleanup (held in full when the effect's `p:cTn/@fill` holds its end
|
|
11585
|
+
* state, otherwise reverted); a text renderer maps it onto its run markup
|
|
11586
|
+
* via `buildTextStyleOverrideCss` (`animation-text-style-css.ts`). Absent
|
|
11587
|
+
* means no font-style emphasis effect is currently active on this element.
|
|
11078
11588
|
*/
|
|
11079
11589
|
textStyle?: TextStyleAnimationDescriptor;
|
|
11080
11590
|
}
|
|
@@ -11992,6 +12502,18 @@ interface ReadOnlyRecommendation {
|
|
|
11992
12502
|
readonly messageKey: string;
|
|
11993
12503
|
/** Whether a binding's "read-only" toggle should default to on. */
|
|
11994
12504
|
readonly defaultReadOnly: boolean;
|
|
12505
|
+
/**
|
|
12506
|
+
* Whether lifting this recommendation requires a correct password, rather
|
|
12507
|
+
* than a plain "Edit anyway". True only for a `modifyVerifier` that carries
|
|
12508
|
+
* a hash this viewer can actually check (`hashData` plus a resolvable
|
|
12509
|
+
* algorithm, see `checkModifyPassword`; `saltData` is optional and NOT
|
|
12510
|
+
* required, a missing salt is still checkable). "Mark as Final" is purely
|
|
12511
|
+
* advisory and never requires one, and a `modifyVerifier` with no hash at
|
|
12512
|
+
* all, or naming an algorithm this viewer does not implement, cannot be
|
|
12513
|
+
* verified either way, so both fall back to the plain "Edit anyway" a
|
|
12514
|
+
* binding already had.
|
|
12515
|
+
*/
|
|
12516
|
+
readonly requiresPassword: boolean;
|
|
11995
12517
|
}
|
|
11996
12518
|
interface CompatibilityWarningToast {
|
|
11997
12519
|
/** Stable per-code id, since toasts are deduped by code (see module docs). */
|
|
@@ -12348,6 +12870,7 @@ interface ToolbarProps {
|
|
|
12348
12870
|
onSaveAsPptx: () => void;
|
|
12349
12871
|
onSaveAsPpsx: () => void;
|
|
12350
12872
|
onSaveAsPptm: () => void;
|
|
12873
|
+
onSaveAsPpt: () => void;
|
|
12351
12874
|
hasMacros: boolean;
|
|
12352
12875
|
onCopySlideAsImage: () => void;
|
|
12353
12876
|
onPrint: () => void;
|
|
@@ -13272,6 +13795,18 @@ interface UsePresentationModeInput {
|
|
|
13272
13795
|
*/
|
|
13273
13796
|
templateElementsBySlideId?: Record<string, PptxElement[]>;
|
|
13274
13797
|
visibleSlideIndexes: number[];
|
|
13798
|
+
/**
|
|
13799
|
+
* The slide canvas size (px), in the same unit the elements' own
|
|
13800
|
+
* `x`/`y`/`width`/`height` are authored in. Threaded to `useAnimationPlayback`
|
|
13801
|
+
* so a `p:anim` formula that needs the animated shape's real box (e.g. Grow
|
|
13802
|
+
* And Turn's `-#ppt_w/2` fly-in) can be resolved instead of falling back.
|
|
13803
|
+
*/
|
|
13804
|
+
canvasSize?: {
|
|
13805
|
+
width: number;
|
|
13806
|
+
height: number;
|
|
13807
|
+
};
|
|
13808
|
+
/** The deck's resolved theme colour map, for a scheme-colour (`a:schemeClr`) animation stop. */
|
|
13809
|
+
themeColorMap?: Readonly<Record<string, string>>;
|
|
13275
13810
|
activeSlideIndex: number;
|
|
13276
13811
|
containerRef: React.RefObject<HTMLElement | null>;
|
|
13277
13812
|
/** Raw PPTX bytes: forwarded to audience window for content sharing. */
|
|
@@ -14058,6 +14593,12 @@ interface UseLoadContentInput {
|
|
|
14058
14593
|
}>>>;
|
|
14059
14594
|
/** Whether the loaded deck recommends opening read-only (`p:modifyVerifier` / "Mark as Final"). */
|
|
14060
14595
|
setReadOnlyRecommendation: React.Dispatch<React.SetStateAction<ReadOnlyRecommendation>>;
|
|
14596
|
+
/**
|
|
14597
|
+
* The deck's raw `p:modifyVerifier`, kept alongside the recommendation
|
|
14598
|
+
* above so the read-only banner's password prompt can check a candidate
|
|
14599
|
+
* password against it (`checkModifyPassword`, `pptx-viewer-shared`).
|
|
14600
|
+
*/
|
|
14601
|
+
setModifyVerifier: React.Dispatch<React.SetStateAction<PptxModifyVerifier | undefined>>;
|
|
14061
14602
|
/** Deck + slide compatibility-warning toast stack for this load. */
|
|
14062
14603
|
setCompatToasts: React.Dispatch<React.SetStateAction<CompatibilityWarningToast[]>>;
|
|
14063
14604
|
setLoading: React.Dispatch<React.SetStateAction<boolean>>;
|
|
@@ -14081,7 +14622,7 @@ interface UseLoadContentInput {
|
|
|
14081
14622
|
interface UseLoadContentResult {
|
|
14082
14623
|
handlerRef: React.MutableRefObject<PptxHandler | null>;
|
|
14083
14624
|
}
|
|
14084
|
-
declare function useLoadContent({ content, clearSelection, history, setSlides, setTemplateElementsBySlideId, mediaDataUrls, setCanvasSize, setSlideSizeEmu, setHeaderFooter, setLayoutOptions, setSlideMasters, setModernCommentAuthors, setRecentColors, setTheme, setTableStyleMap, setTableStylesDefaultId, setTableStylesToDelete, setThemeOptions, setCustomShows, setActiveCustomShowId, setSections, setPresentationProperties, setViewProperties, setNotesMaster, setHandoutMaster, setNotesCanvasSize, setCustomProperties, setTagCollections, setCoreProperties, setAppProperties, setEmbeddedFonts, setActiveSlideIndex, setHasMacros, setHasDigitalSignatures, setDigitalSignatureCount, setGuides, setReadOnlyRecommendation, setCompatToasts, setLoading, setError, setIsDirty, setIsEncrypted, onContentApplied, allowExternalImages }: UseLoadContentInput): UseLoadContentResult;
|
|
14625
|
+
declare function useLoadContent({ content, clearSelection, history, setSlides, setTemplateElementsBySlideId, mediaDataUrls, setCanvasSize, setSlideSizeEmu, setHeaderFooter, setLayoutOptions, setSlideMasters, setModernCommentAuthors, setRecentColors, setTheme, setTableStyleMap, setTableStylesDefaultId, setTableStylesToDelete, setThemeOptions, setCustomShows, setActiveCustomShowId, setSections, setPresentationProperties, setViewProperties, setNotesMaster, setHandoutMaster, setNotesCanvasSize, setCustomProperties, setTagCollections, setCoreProperties, setAppProperties, setEmbeddedFonts, setActiveSlideIndex, setHasMacros, setHasDigitalSignatures, setDigitalSignatureCount, setGuides, setReadOnlyRecommendation, setModifyVerifier, setCompatToasts, setLoading, setError, setIsDirty, setIsEncrypted, onContentApplied, allowExternalImages }: UseLoadContentInput): UseLoadContentResult;
|
|
14085
14626
|
//#endregion
|
|
14086
14627
|
//#region src/viewer/hooks/useElementOperations.d.ts
|
|
14087
14628
|
/**
|
|
@@ -14648,6 +15189,7 @@ interface ExportHandlersResult {
|
|
|
14648
15189
|
handleSaveAsPptx: () => void;
|
|
14649
15190
|
handleSaveAsPpsx: () => void;
|
|
14650
15191
|
handleSaveAsPptm: () => void;
|
|
15192
|
+
handleSaveAsPpt: () => void;
|
|
14651
15193
|
handleCancelExport: () => void;
|
|
14652
15194
|
exportModalOpen: boolean;
|
|
14653
15195
|
exportModalTitle: string;
|
|
@@ -15055,6 +15597,18 @@ interface UsePresentationSetupInput {
|
|
|
15055
15597
|
/** Master/layout shapes painted beneath each slide, by slide id (see `usePresentationMode`). */
|
|
15056
15598
|
templateElementsBySlideId?: Record<string, PptxElement[]>;
|
|
15057
15599
|
visibleSlideIndexes: number[];
|
|
15600
|
+
/**
|
|
15601
|
+
* The slide canvas size (px), in the same unit the elements' own
|
|
15602
|
+
* `x`/`y`/`width`/`height` are authored in. Threaded to `useAnimationPlayback`
|
|
15603
|
+
* so a `p:anim` formula that needs the animated shape's real box (e.g. Grow
|
|
15604
|
+
* And Turn's `-#ppt_w/2` fly-in) can be resolved instead of falling back.
|
|
15605
|
+
*/
|
|
15606
|
+
canvasSize?: {
|
|
15607
|
+
width: number;
|
|
15608
|
+
height: number;
|
|
15609
|
+
};
|
|
15610
|
+
/** The deck's resolved theme colour map, for a scheme-colour (`a:schemeClr`) animation stop. */
|
|
15611
|
+
themeColorMap?: Readonly<Record<string, string>>;
|
|
15058
15612
|
activeSlideIndex: number;
|
|
15059
15613
|
containerRef: React.RefObject<HTMLElement | null>;
|
|
15060
15614
|
/** Raw PPTX bytes: forwarded to audience window for content sharing. */
|
|
@@ -15223,6 +15777,8 @@ interface UseContentLifecycleInput {
|
|
|
15223
15777
|
allowExternalImages?: boolean;
|
|
15224
15778
|
/** Forwarded to {@link useLoadContent}: see `useReadOnlyRecommendationState`. */
|
|
15225
15779
|
setReadOnlyRecommendation: React$1.Dispatch<React$1.SetStateAction<ReadOnlyRecommendation>>;
|
|
15780
|
+
/** Forwarded to {@link useLoadContent}: see `useReadOnlyRecommendationState`. */
|
|
15781
|
+
setModifyVerifier: React$1.Dispatch<React$1.SetStateAction<PptxModifyVerifier | undefined>>;
|
|
15226
15782
|
/** Forwarded to {@link useLoadContent}: see `useCompatibilityToastsState`. */
|
|
15227
15783
|
setCompatToasts: React$1.Dispatch<React$1.SetStateAction<CompatibilityWarningToast[]>>;
|
|
15228
15784
|
}
|
|
@@ -15303,6 +15859,8 @@ interface UseViewerIntegrationInput {
|
|
|
15303
15859
|
allowExternalImages?: boolean;
|
|
15304
15860
|
/** Forwarded to `useContentLifecycle` -> `useLoadContent`: see `useReadOnlyRecommendationState`. */
|
|
15305
15861
|
setReadOnlyRecommendation: Dispatch<SetStateAction<ReadOnlyRecommendation>>;
|
|
15862
|
+
/** Forwarded to `useContentLifecycle` -> `useLoadContent`: see `useReadOnlyRecommendationState`. */
|
|
15863
|
+
setModifyVerifier: Dispatch<SetStateAction<PptxModifyVerifier | undefined>>;
|
|
15306
15864
|
/** Forwarded to `useContentLifecycle` -> `useLoadContent`: see `useCompatibilityToastsState`. */
|
|
15307
15865
|
setCompatToasts: Dispatch<SetStateAction<CompatibilityWarningToast[]>>;
|
|
15308
15866
|
canEdit: boolean;
|
|
@@ -15676,6 +16234,7 @@ interface ExportSaveAsResult {
|
|
|
15676
16234
|
handleSaveAsPptx: () => void;
|
|
15677
16235
|
handleSaveAsPpsx: () => void;
|
|
15678
16236
|
handleSaveAsPptm: () => void;
|
|
16237
|
+
handleSaveAsPpt: () => void;
|
|
15679
16238
|
}
|
|
15680
16239
|
declare function useExportSaveAs(input: UseExportSaveAsInput): ExportSaveAsResult;
|
|
15681
16240
|
//#endregion
|
|
@@ -15803,6 +16362,18 @@ interface UseAnimationPlaybackInput {
|
|
|
15803
16362
|
onPlayActionSound?: (soundPath: string) => void;
|
|
15804
16363
|
/** When false, all animations are skipped (elements shown immediately). */
|
|
15805
16364
|
showWithAnimation?: boolean;
|
|
16365
|
+
/**
|
|
16366
|
+
* The slide canvas size (px), in the same unit the elements' own
|
|
16367
|
+
* `x`/`y`/`width`/`height` are authored in. Lets `PresentationAnimationController
|
|
16368
|
+
* .fromSlide` resolve a `p:anim` formula that needs the animated shape's real
|
|
16369
|
+
* box (e.g. Grow And Turn's `-#ppt_w/2` fly-in) instead of falling back.
|
|
16370
|
+
*/
|
|
16371
|
+
canvasSize?: {
|
|
16372
|
+
width: number;
|
|
16373
|
+
height: number;
|
|
16374
|
+
};
|
|
16375
|
+
/** The deck's resolved theme colour map, for a scheme-colour (`a:schemeClr`) animation stop. */
|
|
16376
|
+
themeColorMap?: Readonly<Record<string, string>>;
|
|
15806
16377
|
}
|
|
15807
16378
|
/** How a slide's animation timeline should be seeded when it becomes active. */
|
|
15808
16379
|
interface SeedSlideAnimationOptions {
|