pptx-react-viewer 1.25.4 → 2.0.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 +4 -0
- package/README.md +1 -1
- package/dist/AiChatPanel-BRGQCYZM.mjs +1087 -0
- package/dist/AiChatPanel-BRGQCYZM.mjs.br +0 -0
- package/dist/AiChatPanel-BRGQCYZM.mjs.gz +0 -0
- package/dist/AiChatPanel-PW5OT25Z.js +1089 -0
- package/dist/AiChatPanel-PW5OT25Z.js.br +0 -0
- package/dist/AiChatPanel-PW5OT25Z.js.gz +0 -0
- package/dist/{GLTFLoader-NMAS6VRH.mjs → GLTFLoader-374ZNTXW.mjs} +1 -1
- package/dist/GLTFLoader-374ZNTXW.mjs.br +0 -0
- package/dist/GLTFLoader-374ZNTXW.mjs.gz +0 -0
- package/dist/{GLTFLoader-GP55DVVS.js → GLTFLoader-Q7BHCGAW.js} +1 -1
- package/dist/GLTFLoader-Q7BHCGAW.js.br +0 -0
- package/dist/GLTFLoader-Q7BHCGAW.js.gz +0 -0
- package/dist/{Model3DScene-SP6WOKSX.js → Model3DScene-JCGYRKXM.js} +4 -4
- package/dist/{Model3DScene-SP6WOKSX.js.br → Model3DScene-JCGYRKXM.js.br} +0 -0
- package/dist/Model3DScene-JCGYRKXM.js.gz +0 -0
- package/dist/{Model3DScene-DZFYJPUH.mjs → Model3DScene-TEF362W2.mjs} +3 -3
- package/dist/Model3DScene-TEF362W2.mjs.br +0 -0
- package/dist/Model3DScene-TEF362W2.mjs.gz +0 -0
- package/dist/{OrbitControls-VH6KILH7.js → OrbitControls-SMYCPLXO.js} +1 -1
- package/dist/OrbitControls-SMYCPLXO.js.br +3 -0
- package/dist/OrbitControls-SMYCPLXO.js.gz +0 -0
- package/dist/{OrbitControls-F5XPYD2Z.mjs → OrbitControls-ZTGHPI5G.mjs} +1 -1
- package/dist/OrbitControls-ZTGHPI5G.mjs.br +0 -0
- package/dist/{OrbitControls-F5XPYD2Z.mjs.gz → OrbitControls-ZTGHPI5G.mjs.gz} +0 -0
- package/dist/{PowerPointViewer-CnADroqZ.d.ts → PowerPointViewer-gmU5rc7K.d.ts} +2 -2
- package/dist/PowerPointViewer-gmU5rc7K.d.ts.map +1 -0
- package/dist/{SmartArt3DScene-WQIDFZ7X.mjs → SmartArt3DScene-XCFVGCXE.mjs} +1 -1
- package/dist/SmartArt3DScene-XCFVGCXE.mjs.br +0 -0
- package/dist/SmartArt3DScene-XCFVGCXE.mjs.gz +0 -0
- package/dist/{SmartArt3DScene-HCQBDRAM.js → SmartArt3DScene-ZO3KFDI2.js} +1 -1
- package/dist/SmartArt3DScene-ZO3KFDI2.js.br +0 -0
- package/dist/SmartArt3DScene-ZO3KFDI2.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-GISPZ4C2.js → SurfaceChart3DScene-2SHCYZVC.js} +4 -4
- package/dist/SurfaceChart3DScene-2SHCYZVC.js.br +0 -0
- package/dist/SurfaceChart3DScene-2SHCYZVC.js.gz +0 -0
- package/dist/{SurfaceChart3DScene-54BRNPQ5.mjs → SurfaceChart3DScene-UPDCIMJM.mjs} +3 -3
- package/dist/{SurfaceChart3DScene-54BRNPQ5.mjs.br → SurfaceChart3DScene-UPDCIMJM.mjs.br} +0 -0
- package/dist/SurfaceChart3DScene-UPDCIMJM.mjs.gz +0 -0
- package/dist/{animation-timeline-CEJJLFqK.d.ts → animation-timeline-eb5z0SHW.d.ts} +250 -8
- package/dist/animation-timeline-eb5z0SHW.d.ts.map +1 -0
- package/dist/{chunk-M3SIFXWD.mjs → chunk-2X72MOPZ.mjs} +65 -0
- package/dist/chunk-2X72MOPZ.mjs.br +0 -0
- package/dist/chunk-2X72MOPZ.mjs.gz +0 -0
- package/dist/{chunk-QGM4M3NI.js → chunk-4VNS5WPM.js} +5 -0
- package/dist/chunk-4VNS5WPM.js.br +0 -0
- package/dist/chunk-4VNS5WPM.js.gz +0 -0
- package/dist/{chunk-P72VQ7WE.mjs → chunk-5XLLRPMV.mjs} +8966 -16340
- package/dist/chunk-5XLLRPMV.mjs.br +0 -0
- package/dist/chunk-5XLLRPMV.mjs.gz +0 -0
- package/dist/{chunk-UYNOPUSG.mjs → chunk-6YXLGMTN.mjs} +4137 -1927
- package/dist/chunk-6YXLGMTN.mjs.br +0 -0
- package/dist/chunk-6YXLGMTN.mjs.gz +0 -0
- package/dist/chunk-B6NRDUHJ.mjs +8029 -0
- package/dist/chunk-B6NRDUHJ.mjs.br +0 -0
- package/dist/chunk-B6NRDUHJ.mjs.gz +0 -0
- package/dist/chunk-BHVCED34.mjs +16664 -0
- package/dist/chunk-BHVCED34.mjs.br +0 -0
- package/dist/chunk-BHVCED34.mjs.gz +0 -0
- package/dist/{chunk-FWF2SP6N.js → chunk-CLNGAVNH.js} +4142 -1926
- package/dist/chunk-CLNGAVNH.js.br +0 -0
- package/dist/chunk-CLNGAVNH.js.gz +0 -0
- package/dist/{chunk-2EFVXYNA.js → chunk-CUUYYYC5.js} +65 -0
- package/dist/chunk-CUUYYYC5.js.br +0 -0
- package/dist/chunk-CUUYYYC5.js.gz +0 -0
- package/dist/{chunk-TPG2WKHQ.mjs → chunk-L63RAVM7.mjs} +1286 -151
- package/dist/chunk-L63RAVM7.mjs.br +0 -0
- package/dist/chunk-L63RAVM7.mjs.gz +0 -0
- package/dist/{chunk-5VYVKFMS.js → chunk-LFXG7SGG.js} +2074 -939
- package/dist/chunk-LFXG7SGG.js.br +0 -0
- package/dist/chunk-LFXG7SGG.js.gz +0 -0
- package/dist/{chunk-6F4WVHS3.js → chunk-OKOJVSKJ.js} +4701 -656
- package/dist/chunk-OKOJVSKJ.js.br +0 -0
- package/dist/chunk-OKOJVSKJ.js.gz +0 -0
- package/dist/{chunk-VUC3UPLM.mjs → chunk-R2N2UYT7.mjs} +4647 -618
- package/dist/chunk-R2N2UYT7.mjs.br +0 -0
- package/dist/chunk-R2N2UYT7.mjs.gz +0 -0
- package/dist/chunk-SYPHGLIB.js +16701 -0
- package/dist/chunk-SYPHGLIB.js.br +0 -0
- package/dist/chunk-SYPHGLIB.js.gz +0 -0
- package/dist/{chunk-6DZX6EAA.mjs → chunk-XGB3TDIC.mjs} +5 -1
- package/dist/chunk-XGB3TDIC.mjs.br +0 -0
- package/dist/chunk-XGB3TDIC.mjs.gz +0 -0
- package/dist/chunk-ZB4NZRCI.js +11111 -0
- package/dist/chunk-ZB4NZRCI.js.br +0 -0
- package/dist/chunk-ZB4NZRCI.js.gz +0 -0
- package/dist/chunk-ZKDE3HJI.js +8121 -0
- package/dist/chunk-ZKDE3HJI.js.br +0 -0
- package/dist/chunk-ZKDE3HJI.js.gz +0 -0
- package/dist/{dist-QU6JIDAF.js → dist-4LUVI3SW.js} +587 -563
- package/dist/dist-4LUVI3SW.js.br +0 -0
- package/dist/dist-4LUVI3SW.js.gz +0 -0
- package/dist/dist-J6PC54PZ.mjs +2 -0
- package/dist/dist-J6PC54PZ.mjs.br +0 -0
- package/dist/dist-J6PC54PZ.mjs.gz +0 -0
- package/dist/i18n.js +5 -5
- package/dist/i18n.js.br +0 -0
- package/dist/i18n.js.gz +0 -0
- package/dist/i18n.mjs +2 -2
- package/dist/i18n.mjs.br +0 -0
- package/dist/i18n.mjs.gz +0 -0
- package/dist/{index-DWvM1PBB.d.ts → index-a8wcFjRJ.d.ts} +24 -7
- package/dist/index-a8wcFjRJ.d.ts.map +1 -0
- package/dist/index.d.ts +3333 -301
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +41 -39
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/index.mjs +8 -6
- package/dist/index.mjs.br +0 -0
- package/dist/index.mjs.gz +0 -0
- package/dist/{hooks-unstable.d.ts → internals.d.ts} +1298 -795
- package/dist/internals.d.ts.map +1 -0
- package/dist/{hooks-unstable.js → internals.js} +81 -80
- package/dist/internals.js.br +0 -0
- package/dist/internals.js.gz +0 -0
- package/dist/{hooks-unstable.mjs → internals.mjs} +6 -5
- 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/{three.module-7CXEVRKB.mjs → three.module-AC7ESV4W.mjs} +1 -1
- package/dist/three.module-AC7ESV4W.mjs.br +0 -0
- package/dist/three.module-AC7ESV4W.mjs.gz +0 -0
- package/dist/{three.module-CPZZFD2Q.js → three.module-GNNNRIMK.js} +1 -1
- package/dist/three.module-GNNNRIMK.js.br +0 -0
- package/dist/three.module-GNNNRIMK.js.gz +0 -0
- package/dist/{useViewerBuildingBlocks-ll3_ncCH.d.ts → useViewerBuildingBlocks-CjureTRf.d.ts} +185 -174
- package/dist/useViewerBuildingBlocks-CjureTRf.d.ts.map +1 -0
- package/dist/viewer/index.d.ts +692 -53
- package/dist/viewer/index.d.ts.map +1 -1
- package/dist/viewer/index.js +35 -33
- package/dist/viewer/index.js.br +0 -0
- package/dist/viewer/index.js.gz +0 -0
- package/dist/viewer/index.mjs +8 -6
- package/dist/viewer/index.mjs.br +0 -0
- package/dist/viewer/index.mjs.gz +0 -0
- package/dist/{y-webrtc-6CRYHAXH.mjs → y-webrtc-DGVURJIF.mjs} +1 -1
- package/dist/y-webrtc-DGVURJIF.mjs.br +0 -0
- package/dist/y-webrtc-DGVURJIF.mjs.gz +0 -0
- package/dist/{y-webrtc-QCZF75JW.js → y-webrtc-YN53KW3J.js} +5 -5
- package/dist/y-webrtc-YN53KW3J.js.br +0 -0
- package/dist/y-webrtc-YN53KW3J.js.gz +0 -0
- package/dist/{y-websocket-QJEM6VOB.js → y-websocket-HZCIQLM6.js} +1 -1
- package/dist/y-websocket-HZCIQLM6.js.br +0 -0
- package/dist/y-websocket-HZCIQLM6.js.gz +0 -0
- package/dist/{y-websocket-57Q3RNHC.mjs → y-websocket-P5LTAJ5T.mjs} +1 -1
- package/dist/y-websocket-P5LTAJ5T.mjs.br +0 -0
- package/dist/y-websocket-P5LTAJ5T.mjs.gz +0 -0
- package/dist/{yjs-Y7IYUWOG.mjs → yjs-FKGX4QHS.mjs} +1 -1
- package/dist/yjs-FKGX4QHS.mjs.br +0 -0
- package/dist/yjs-FKGX4QHS.mjs.gz +0 -0
- package/dist/{yjs-UH3EPF3C.js → yjs-HBLSEMHP.js} +1 -1
- package/dist/yjs-HBLSEMHP.js.br +0 -0
- package/dist/yjs-HBLSEMHP.js.gz +0 -0
- package/package.json +19 -7
- package/dist/GLTFLoader-GP55DVVS.js.br +0 -0
- package/dist/GLTFLoader-GP55DVVS.js.gz +0 -0
- package/dist/GLTFLoader-NMAS6VRH.mjs.br +0 -0
- package/dist/GLTFLoader-NMAS6VRH.mjs.gz +0 -0
- package/dist/Model3DScene-DZFYJPUH.mjs.br +0 -0
- package/dist/Model3DScene-DZFYJPUH.mjs.gz +0 -0
- package/dist/Model3DScene-SP6WOKSX.js.gz +0 -0
- package/dist/OrbitControls-F5XPYD2Z.mjs.br +0 -0
- package/dist/OrbitControls-VH6KILH7.js.br +0 -2
- package/dist/OrbitControls-VH6KILH7.js.gz +0 -0
- package/dist/PowerPointViewer-CnADroqZ.d.ts.map +0 -1
- package/dist/SmartArt3DScene-HCQBDRAM.js.br +0 -0
- package/dist/SmartArt3DScene-HCQBDRAM.js.gz +0 -0
- package/dist/SmartArt3DScene-WQIDFZ7X.mjs.br +0 -0
- package/dist/SmartArt3DScene-WQIDFZ7X.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-54BRNPQ5.mjs.gz +0 -0
- package/dist/SurfaceChart3DScene-GISPZ4C2.js.br +0 -0
- package/dist/SurfaceChart3DScene-GISPZ4C2.js.gz +0 -0
- package/dist/animation-timeline-CEJJLFqK.d.ts.map +0 -1
- package/dist/chunk-2EFVXYNA.js.br +0 -0
- package/dist/chunk-2EFVXYNA.js.gz +0 -0
- package/dist/chunk-5VYVKFMS.js.br +0 -0
- package/dist/chunk-5VYVKFMS.js.gz +0 -0
- package/dist/chunk-6DZX6EAA.mjs.br +0 -0
- package/dist/chunk-6DZX6EAA.mjs.gz +0 -0
- package/dist/chunk-6F4WVHS3.js.br +0 -0
- package/dist/chunk-6F4WVHS3.js.gz +0 -0
- package/dist/chunk-7FE27DDH.js +0 -18559
- package/dist/chunk-7FE27DDH.js.br +0 -0
- package/dist/chunk-7FE27DDH.js.gz +0 -0
- package/dist/chunk-FWF2SP6N.js.br +0 -0
- package/dist/chunk-FWF2SP6N.js.gz +0 -0
- package/dist/chunk-M3SIFXWD.mjs.br +0 -0
- package/dist/chunk-M3SIFXWD.mjs.gz +0 -0
- package/dist/chunk-P72VQ7WE.mjs.br +0 -0
- package/dist/chunk-P72VQ7WE.mjs.gz +0 -0
- package/dist/chunk-QGM4M3NI.js.br +0 -0
- package/dist/chunk-QGM4M3NI.js.gz +0 -0
- package/dist/chunk-TPG2WKHQ.mjs.br +0 -0
- package/dist/chunk-TPG2WKHQ.mjs.gz +0 -0
- package/dist/chunk-UYNOPUSG.mjs.br +0 -0
- package/dist/chunk-UYNOPUSG.mjs.gz +0 -0
- package/dist/chunk-VUC3UPLM.mjs.br +0 -0
- package/dist/chunk-VUC3UPLM.mjs.gz +0 -0
- package/dist/dist-QNYKM7YS.mjs +0 -2
- package/dist/dist-QNYKM7YS.mjs.br +0 -0
- package/dist/dist-QNYKM7YS.mjs.gz +0 -0
- package/dist/dist-QU6JIDAF.js.br +0 -0
- package/dist/dist-QU6JIDAF.js.gz +0 -0
- package/dist/hooks-unstable.d.ts.map +0 -1
- package/dist/hooks-unstable.js.br +0 -0
- package/dist/hooks-unstable.js.gz +0 -0
- package/dist/hooks-unstable.mjs.br +0 -0
- package/dist/hooks-unstable.mjs.gz +0 -0
- package/dist/index-DWvM1PBB.d.ts.map +0 -1
- package/dist/three.module-7CXEVRKB.mjs.br +0 -0
- package/dist/three.module-7CXEVRKB.mjs.gz +0 -0
- package/dist/three.module-CPZZFD2Q.js.br +0 -0
- package/dist/three.module-CPZZFD2Q.js.gz +0 -0
- package/dist/useViewerBuildingBlocks-ll3_ncCH.d.ts.map +0 -1
- package/dist/y-webrtc-6CRYHAXH.mjs.br +0 -0
- package/dist/y-webrtc-6CRYHAXH.mjs.gz +0 -0
- package/dist/y-webrtc-QCZF75JW.js.br +0 -0
- package/dist/y-webrtc-QCZF75JW.js.gz +0 -0
- package/dist/y-websocket-57Q3RNHC.mjs.br +0 -0
- package/dist/y-websocket-57Q3RNHC.mjs.gz +0 -0
- package/dist/y-websocket-QJEM6VOB.js.br +0 -0
- package/dist/y-websocket-QJEM6VOB.js.gz +0 -0
- package/dist/yjs-UH3EPF3C.js.br +0 -0
- package/dist/yjs-UH3EPF3C.js.gz +0 -0
- package/dist/yjs-Y7IYUWOG.mjs.br +0 -0
- package/dist/yjs-Y7IYUWOG.mjs.gz +0 -0
package/dist/viewer/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import React__default, { RefObject } from 'react';
|
|
3
|
+
import { LanguageModel, ChatTransport, UIMessage, ToolSet } from 'ai';
|
|
3
4
|
import * as Y from 'yjs';
|
|
4
5
|
import { Doc } from 'yjs';
|
|
5
6
|
|
|
@@ -207,6 +208,13 @@ interface PptxShapeLocks {
|
|
|
207
208
|
noAdjustHandles?: boolean;
|
|
208
209
|
noChangeArrowheads?: boolean;
|
|
209
210
|
noChangeShapeType?: boolean;
|
|
211
|
+
/**
|
|
212
|
+
* Text-box flag from `p:cNvSpPr/@txBox`. Not a lock in the strict sense,
|
|
213
|
+
* but it lives on the same non-visual-properties node as `a:spLocks`, so
|
|
214
|
+
* it is captured here to round-trip through the model. When `true` the
|
|
215
|
+
* shape is a plain text box (no fill/line by default).
|
|
216
|
+
*/
|
|
217
|
+
txBox?: boolean;
|
|
210
218
|
}
|
|
211
219
|
/**
|
|
212
220
|
* A drawing guide parsed from OOXML extension lists.
|
|
@@ -796,6 +804,15 @@ interface ShapeStyle {
|
|
|
796
804
|
r: number;
|
|
797
805
|
b: number;
|
|
798
806
|
};
|
|
807
|
+
/** Raw tileRect LTRB values (0..1 fractions, may be negative) from
|
|
808
|
+
* `a:gradFill/a:tileRect`. Defines the rectangle the gradient tile occupies
|
|
809
|
+
* before any flip/tiling is applied. */
|
|
810
|
+
fillGradientTileRect?: {
|
|
811
|
+
l: number;
|
|
812
|
+
t: number;
|
|
813
|
+
r: number;
|
|
814
|
+
b: number;
|
|
815
|
+
};
|
|
799
816
|
/** Gradient tile flip mode (`a:gradFill/@flip`).
|
|
800
817
|
* `none` = no tiling flip (default), `x|y|xy` = mirror in the named axis. */
|
|
801
818
|
fillGradientFlip?: 'none' | 'x' | 'y' | 'xy';
|
|
@@ -813,6 +830,20 @@ interface ShapeStyle {
|
|
|
813
830
|
* round-trip serialisation. See {@link fillColorXml} for the rationale.
|
|
814
831
|
*/
|
|
815
832
|
strokeColorXml?: XmlObject;
|
|
833
|
+
/**
|
|
834
|
+
* Kind of fill painted on the outline (`a:ln` child). Distinguishes a solid
|
|
835
|
+
* outline from a gradient/pattern/none outline so save can emit the correct
|
|
836
|
+
* single line fill instead of collapsing every outline to `a:solidFill`
|
|
837
|
+
* (which, alongside a preserved `a:gradFill`/`a:pattFill`, produces an
|
|
838
|
+
* invalid dual-fill `<a:ln>`).
|
|
839
|
+
*/
|
|
840
|
+
strokeFillMode?: 'solid' | 'gradient' | 'pattern' | 'none';
|
|
841
|
+
/** Raw `a:ln/a:gradFill` XML preserved for round-trip when the outline is
|
|
842
|
+
* gradient-filled. Re-emitted verbatim as the line's single fill on save. */
|
|
843
|
+
strokeGradientXml?: XmlObject;
|
|
844
|
+
/** Raw `a:ln/a:pattFill` XML preserved for round-trip when the outline is
|
|
845
|
+
* pattern-filled. Re-emitted verbatim as the line's single fill on save. */
|
|
846
|
+
strokePatternXml?: XmlObject;
|
|
816
847
|
strokeWidth?: number;
|
|
817
848
|
strokeOpacity?: number;
|
|
818
849
|
strokeDash?: StrokeDashType;
|
|
@@ -994,6 +1025,14 @@ interface ShapeStyle {
|
|
|
994
1025
|
};
|
|
995
1026
|
/** Fill overlay blend mode from effectDag `a:fillOverlay/@blend`. */
|
|
996
1027
|
dagFillOverlayBlend?: 'over' | 'mult' | 'screen' | 'darken' | 'lighten';
|
|
1028
|
+
/**
|
|
1029
|
+
* Fill overlay tint colour (hex `#RRGGBB`) from effectDag `a:fillOverlay`'s
|
|
1030
|
+
* `a:solidFill`/`a:gradFill`. Painted as a blended overlay layer over the
|
|
1031
|
+
* element; the blend mode comes from {@link dagFillOverlayBlend}.
|
|
1032
|
+
*/
|
|
1033
|
+
dagFillOverlayColor?: string;
|
|
1034
|
+
/** Fill overlay tint opacity (0-1), from the overlay fill colour's alpha. */
|
|
1035
|
+
dagFillOverlayOpacity?: number;
|
|
997
1036
|
/** `<a:lnRef @idx>` — 1-based index into the theme's lnStyleLst. */
|
|
998
1037
|
lnRefIdx?: number;
|
|
999
1038
|
/** Raw XML colour child of `<a:lnRef>` (e.g. `<a:schemeClr>` with transforms). */
|
|
@@ -1121,6 +1160,13 @@ interface TextStyle {
|
|
|
1121
1160
|
kerning?: number;
|
|
1122
1161
|
/** Text highlight colour as hex string (`a:highlight`). */
|
|
1123
1162
|
highlightColor?: string;
|
|
1163
|
+
/**
|
|
1164
|
+
* Raw colour-choice XML preserved from `a:highlight` so a themed highlight
|
|
1165
|
+
* (`a:schemeClr` / `a:sysClr` / `a:prstClr`) re-emits with its original
|
|
1166
|
+
* identity rather than being flattened to `<a:srgbClr/>` on save. On save we
|
|
1167
|
+
* re-emit verbatim when the resolved {@link highlightColor} still matches.
|
|
1168
|
+
*/
|
|
1169
|
+
highlightColorXml?: XmlObject;
|
|
1124
1170
|
/** Text-level gradient fill CSS string (from `a:rPr > a:gradFill`). */
|
|
1125
1171
|
textFillGradient?: string;
|
|
1126
1172
|
/** Structured gradient stops for text fill round-trip serialization. */
|
|
@@ -1232,10 +1278,36 @@ interface TextStyle {
|
|
|
1232
1278
|
eastAsiaFont?: string;
|
|
1233
1279
|
/** Complex Script font family from `a:cs`. */
|
|
1234
1280
|
complexScriptFont?: string;
|
|
1281
|
+
/**
|
|
1282
|
+
* Theme-font token (`+mj-lt` / `+mn-lt` / ...) authored on `a:latin`, when
|
|
1283
|
+
* present. {@link fontFamily} holds the resolved concrete face for
|
|
1284
|
+
* rendering; this preserves the token linkage so the writer re-emits the
|
|
1285
|
+
* token rather than the flattened face (see #84).
|
|
1286
|
+
*/
|
|
1287
|
+
latinFontThemeToken?: string;
|
|
1288
|
+
/** Theme-font token authored on `a:ea` (e.g. `+mn-ea`), when present. */
|
|
1289
|
+
eastAsiaFontThemeToken?: string;
|
|
1290
|
+
/** Theme-font token authored on `a:cs` (e.g. `+mn-cs`), when present. */
|
|
1291
|
+
complexScriptFontThemeToken?: string;
|
|
1292
|
+
/**
|
|
1293
|
+
* Automatic per-script fallback face resolved from the theme's
|
|
1294
|
+
* `<a:font script="...">` overrides for a run whose text is dominantly
|
|
1295
|
+
* CJK / Arabic / Hebrew / Thai (see #83). A rendering hint only: it is not
|
|
1296
|
+
* serialised back on save, so it never disturbs the round-trip typefaces.
|
|
1297
|
+
*/
|
|
1298
|
+
scriptFallbackFont?: string;
|
|
1235
1299
|
/** Text language from `a:rPr/@lang`. */
|
|
1236
1300
|
language?: string;
|
|
1237
1301
|
/** Hyperlink mouse-over target from `a:hlinkMouseOver`. */
|
|
1238
1302
|
hyperlinkMouseOver?: string;
|
|
1303
|
+
/**
|
|
1304
|
+
* Raw `a:snd` (embedded WAV audio) child of `a:hlinkClick`, preserved
|
|
1305
|
+
* verbatim (carries `@r:embed` + `@name`). Round-tripped on save so the
|
|
1306
|
+
* click sound survives instead of being dropped.
|
|
1307
|
+
*/
|
|
1308
|
+
hyperlinkSoundXml?: XmlObject;
|
|
1309
|
+
/** Raw `a:snd` child of `a:hlinkMouseOver`, preserved verbatim for round-trip. */
|
|
1310
|
+
hyperlinkMouseOverSoundXml?: XmlObject;
|
|
1239
1311
|
/** Hyperlink invalidUrl attribute (`a:hlinkClick/@invalidUrl`). */
|
|
1240
1312
|
hyperlinkInvalidUrl?: string;
|
|
1241
1313
|
/** Hyperlink target frame (`a:hlinkClick/@tgtFrame`). */
|
|
@@ -1579,6 +1651,15 @@ interface TextSegment {
|
|
|
1579
1651
|
* on the first segment of a paragraph.
|
|
1580
1652
|
*/
|
|
1581
1653
|
endParaRunProperties?: Record<string, unknown>;
|
|
1654
|
+
/**
|
|
1655
|
+
* Per-paragraph properties (alignment, spacing, margins, indent, tab stops,
|
|
1656
|
+
* rtl) authored on this paragraph's own `a:pPr` (#69). Only meaningful on
|
|
1657
|
+
* the first segment of a paragraph. When present, the writer emits these
|
|
1658
|
+
* per paragraph instead of collapsing one shape-level pPr onto every
|
|
1659
|
+
* paragraph. Only the paragraph-geometry keys of {@link TextStyle} are
|
|
1660
|
+
* populated; unrelated fields fall back to the shape-level style.
|
|
1661
|
+
*/
|
|
1662
|
+
paragraphProperties?: TextStyle;
|
|
1582
1663
|
/**
|
|
1583
1664
|
* Phonetic annotation text from `a:ruby > a:rt` (e.g. furigana, pinyin).
|
|
1584
1665
|
* When present, the renderer should wrap the base text with an HTML `<ruby>` tag.
|
|
@@ -1884,6 +1965,75 @@ interface PptxChartProtection {
|
|
|
1884
1965
|
rawXml?: XmlObject;
|
|
1885
1966
|
}
|
|
1886
1967
|
//#endregion
|
|
1968
|
+
//#region src/core/types/chart-user-shapes.d.ts
|
|
1969
|
+
/**
|
|
1970
|
+
* Types for chart drawing-overlay shapes (`c:userShapes`).
|
|
1971
|
+
*
|
|
1972
|
+
* A chart's `c:userShapes` element carries an `r:id` that references a
|
|
1973
|
+
* separate drawing part (`ppt/drawings/drawingN.xml`) whose root is a
|
|
1974
|
+
* `c:userShapes` element populated with `cdr:relSizeAnchor` /
|
|
1975
|
+
* `cdr:absSizeAnchor` wrappers around `sp` / `pic` / `cxnSp` shapes drawn on
|
|
1976
|
+
* top of the chart plot. These interfaces describe the parsed, renderable
|
|
1977
|
+
* overlay model. The raw reference is preserved separately on
|
|
1978
|
+
* {@link PptxChartData.userShapesXml} for verbatim round-trip save; this model
|
|
1979
|
+
* is render-only.
|
|
1980
|
+
*
|
|
1981
|
+
* @module pptx-types/chart-user-shapes
|
|
1982
|
+
*/
|
|
1983
|
+
/** A single paragraph of overlay-shape text with light formatting. */
|
|
1984
|
+
interface PptxChartUserShapeParagraph {
|
|
1985
|
+
/** Joined run text of the paragraph. */
|
|
1986
|
+
text: string;
|
|
1987
|
+
/** Font size in points (`a:rPr/@sz` divided by 100), when present. */
|
|
1988
|
+
fontSize?: number;
|
|
1989
|
+
/** Whether the first run is bold (`a:rPr/@b`). */
|
|
1990
|
+
bold?: boolean;
|
|
1991
|
+
/** Whether the first run is italic (`a:rPr/@i`). */
|
|
1992
|
+
italic?: boolean;
|
|
1993
|
+
/** Resolved run colour hex (e.g. `"#FF0000"`), when present. */
|
|
1994
|
+
color?: string;
|
|
1995
|
+
/** Paragraph alignment (`a:pPr/@algn`): left / centre / right. */
|
|
1996
|
+
align?: 'l' | 'ctr' | 'r';
|
|
1997
|
+
}
|
|
1998
|
+
/**
|
|
1999
|
+
* A parsed chart-overlay shape positioned by a drawing anchor.
|
|
2000
|
+
*
|
|
2001
|
+
* Position is expressed as chart-relative fractions in {@link from}. For a
|
|
2002
|
+
* `relSizeAnchor` the opposite corner is {@link to} (also fractional); for an
|
|
2003
|
+
* `absSizeAnchor` the extent is {@link ext} in EMU.
|
|
2004
|
+
*/
|
|
2005
|
+
interface PptxChartUserShape {
|
|
2006
|
+
/** Shape kind: text/preset shape, connector, or picture. */
|
|
2007
|
+
kind: 'sp' | 'cxnSp' | 'pic';
|
|
2008
|
+
/** Anchor kind that positioned the shape. */
|
|
2009
|
+
anchor: 'rel' | 'abs';
|
|
2010
|
+
/** Top-left corner as chart-relative fractions (0-1). */
|
|
2011
|
+
from: {
|
|
2012
|
+
x: number;
|
|
2013
|
+
y: number;
|
|
2014
|
+
};
|
|
2015
|
+
/** Bottom-right corner as chart-relative fractions (0-1); relSizeAnchor only. */
|
|
2016
|
+
to?: {
|
|
2017
|
+
x: number;
|
|
2018
|
+
y: number;
|
|
2019
|
+
};
|
|
2020
|
+
/** Extent in EMU (cx, cy); absSizeAnchor only. */
|
|
2021
|
+
ext?: {
|
|
2022
|
+
cx: number;
|
|
2023
|
+
cy: number;
|
|
2024
|
+
};
|
|
2025
|
+
/** Preset geometry name (`a:prstGeom/@prst`), defaulting to `"rect"`. */
|
|
2026
|
+
prst?: string;
|
|
2027
|
+
/** Resolved solid-fill hex colour, when present. */
|
|
2028
|
+
fill?: string;
|
|
2029
|
+
/** Resolved line/stroke hex colour, when present. */
|
|
2030
|
+
stroke?: string;
|
|
2031
|
+
/** Line width in points (`a:ln/@w` divided by 12700), when present. */
|
|
2032
|
+
strokeWidth?: number;
|
|
2033
|
+
/** Text paragraphs of the shape's `txBody`, when present. */
|
|
2034
|
+
paragraphs?: PptxChartUserShapeParagraph[];
|
|
2035
|
+
}
|
|
2036
|
+
//#endregion
|
|
1887
2037
|
//#region src/core/types/chart.d.ts
|
|
1888
2038
|
/**
|
|
1889
2039
|
* Supported chart type discriminators.
|
|
@@ -2217,6 +2367,15 @@ interface PptxChartTreemapOptions {
|
|
|
2217
2367
|
interface PptxChartSeries {
|
|
2218
2368
|
name: string;
|
|
2219
2369
|
values: number[];
|
|
2370
|
+
/**
|
|
2371
|
+
* Blank-value mask aligned index-for-index with {@link values}: `true` marks
|
|
2372
|
+
* a category whose numeric cache point (`c:numCache/c:pt`) was absent or
|
|
2373
|
+
* empty, i.e. a genuine blank rather than a real `0`. Present only when the
|
|
2374
|
+
* source series actually contains blanks; when set, blank slots in
|
|
2375
|
+
* {@link values} carry `0` as a placeholder. Renderers honour
|
|
2376
|
+
* `c:dispBlanksAs` (gap / zero / span) using this mask.
|
|
2377
|
+
*/
|
|
2378
|
+
blanks?: boolean[];
|
|
2220
2379
|
color?: string;
|
|
2221
2380
|
trendlines?: PptxChartTrendline[];
|
|
2222
2381
|
errBars?: PptxChartErrBars[];
|
|
@@ -2224,6 +2383,18 @@ interface PptxChartSeries {
|
|
|
2224
2383
|
marker?: PptxChartMarker;
|
|
2225
2384
|
dataLabels?: PptxChartDataLabel[];
|
|
2226
2385
|
explosion?: number;
|
|
2386
|
+
/**
|
|
2387
|
+
* Series-level `c:invertIfNegative`: when true, bar/column data points with a
|
|
2388
|
+
* negative value are drawn with an inverted (lightened) fill. A per-point
|
|
2389
|
+
* `c:dPt/c:invertIfNegative` overrides this for that point. Absent when the
|
|
2390
|
+
* source XML omits the flag.
|
|
2391
|
+
*/
|
|
2392
|
+
invertIfNegative?: boolean;
|
|
2393
|
+
/**
|
|
2394
|
+
* Whether this line/scatter series is drawn with bezier smoothing
|
|
2395
|
+
* (`c:ser/c:smooth/@val`). Absent when the source XML omits `c:smooth`.
|
|
2396
|
+
*/
|
|
2397
|
+
smooth?: boolean;
|
|
2227
2398
|
/** Axis ID this series is plotted against (links to PptxChartAxisFormatting.axisId). */
|
|
2228
2399
|
axisId?: number;
|
|
2229
2400
|
/**
|
|
@@ -2426,6 +2597,14 @@ interface PptxChartManualLayout {
|
|
|
2426
2597
|
y?: number;
|
|
2427
2598
|
width?: number;
|
|
2428
2599
|
height?: number;
|
|
2600
|
+
/**
|
|
2601
|
+
* Raw `c:extLst` (CT_ExtensionList) of the `c:manualLayout`, captured
|
|
2602
|
+
* verbatim so it round-trips through the typed model. Without this, a dirty
|
|
2603
|
+
* write of an edited layout would drop the extension list (the manual node
|
|
2604
|
+
* is rebuilt from the typed fields). Emitted as the trailing child, matching
|
|
2605
|
+
* the CT_ManualLayout schema order.
|
|
2606
|
+
*/
|
|
2607
|
+
ext?: XmlObject;
|
|
2429
2608
|
}
|
|
2430
2609
|
/**
|
|
2431
2610
|
* Typed manual layouts for chart regions that accept `c:layout`.
|
|
@@ -2490,6 +2669,33 @@ interface PptxChartData {
|
|
|
2490
2669
|
style?: PptxChartStyle;
|
|
2491
2670
|
/** Grouping mode for bar/area/line charts: 'clustered' | 'stacked' | 'percentStacked' */
|
|
2492
2671
|
grouping?: 'clustered' | 'stacked' | 'percentStacked';
|
|
2672
|
+
/**
|
|
2673
|
+
* Whether the first (or only) series varies its point colours
|
|
2674
|
+
* (`c:varyColors/@val`). Pie/doughnut default this on; single-series
|
|
2675
|
+
* bar/column honour it by giving each point a distinct palette colour.
|
|
2676
|
+
* Absent when the source XML omits `c:varyColors`.
|
|
2677
|
+
*/
|
|
2678
|
+
varyColors?: boolean;
|
|
2679
|
+
/**
|
|
2680
|
+
* Pie/doughnut start angle in degrees clockwise from 12 o'clock
|
|
2681
|
+
* (`c:firstSliceAng/@val`, 0 through 360). Absent uses the default 0.
|
|
2682
|
+
*/
|
|
2683
|
+
firstSliceAngle?: number;
|
|
2684
|
+
/**
|
|
2685
|
+
* Doughnut hole diameter as a percentage of the outer diameter
|
|
2686
|
+
* (`c:holeSize/@val`, 10 through 90). Absent uses the renderer default.
|
|
2687
|
+
*/
|
|
2688
|
+
doughnutHoleSize?: number;
|
|
2689
|
+
/**
|
|
2690
|
+
* Bar/column gap between category clusters as a percentage of bar width
|
|
2691
|
+
* (`c:gapWidth/@val`, 0 through 500). Absent uses the renderer default.
|
|
2692
|
+
*/
|
|
2693
|
+
barGapWidth?: number;
|
|
2694
|
+
/**
|
|
2695
|
+
* Clustered bar/column overlap between series within a category as a
|
|
2696
|
+
* percentage (`c:overlap/@val`, -100 through 100). Absent uses 0.
|
|
2697
|
+
*/
|
|
2698
|
+
barOverlap?: number;
|
|
2493
2699
|
/** Internal: path to the chart XML part in the PPTX archive (for round-trip save). */
|
|
2494
2700
|
chartPartPath?: string;
|
|
2495
2701
|
/** Internal: relationship ID linking the graphic frame to the chart part. */
|
|
@@ -2590,6 +2796,15 @@ interface PptxChartData {
|
|
|
2590
2796
|
* attempting to parse the nested drawing tree.
|
|
2591
2797
|
*/
|
|
2592
2798
|
userShapesXml?: unknown;
|
|
2799
|
+
/**
|
|
2800
|
+
* Parsed, renderable drawing-overlay shapes resolved from the separate
|
|
2801
|
+
* drawing part referenced by `c:userShapes/@r:id`
|
|
2802
|
+
* (`ppt/drawings/drawingN.xml`). Each entry carries chart-relative anchor
|
|
2803
|
+
* geometry plus light shape/text formatting so the viewer can render an
|
|
2804
|
+
* overlay on top of the chart plot. Render-only: {@link userShapesXml}
|
|
2805
|
+
* remains the source of truth for round-trip save.
|
|
2806
|
+
*/
|
|
2807
|
+
userShapes?: PptxChartUserShape[];
|
|
2593
2808
|
/**
|
|
2594
2809
|
* Raw `c:pivotFmts` XML subtree preserved verbatim.
|
|
2595
2810
|
*
|
|
@@ -3297,6 +3512,18 @@ interface PptxSmartArtColorTransform extends PptxSmartArtDefinitionMetadata {
|
|
|
3297
3512
|
fillColors: string[];
|
|
3298
3513
|
/** Ordered resolved line colors for rendering. */
|
|
3299
3514
|
lineColors: string[];
|
|
3515
|
+
/** Ordered resolved text-fill colors (primary styleLbl `txFillClrLst`). */
|
|
3516
|
+
textFillColors?: string[];
|
|
3517
|
+
/** Ordered resolved text-line colors (primary styleLbl `txLinClrLst`). */
|
|
3518
|
+
textLineColors?: string[];
|
|
3519
|
+
/** Ordered resolved effect colors (primary styleLbl `effectClrLst`). */
|
|
3520
|
+
effectColors?: string[];
|
|
3521
|
+
/** Ordered resolved text-effect colors (primary styleLbl `txEffectClrLst`). */
|
|
3522
|
+
textEffectColors?: string[];
|
|
3523
|
+
/** Fill-list span/cycle + hue-direction interpolation of the primary styleLbl. */
|
|
3524
|
+
fillInterpolation?: PptxSmartArtColorListMetadata;
|
|
3525
|
+
/** Line-list span/cycle + hue-direction interpolation of the primary styleLbl. */
|
|
3526
|
+
lineInterpolation?: PptxSmartArtColorListMetadata;
|
|
3300
3527
|
/** Ordered CT_CTStyleLabel metadata. */
|
|
3301
3528
|
labels?: PptxSmartArtColorStyleLabel[];
|
|
3302
3529
|
}
|
|
@@ -3485,6 +3712,40 @@ interface PptxSmartArtChrome {
|
|
|
3485
3712
|
/** Outline stroke width in points. */
|
|
3486
3713
|
outlineWidth?: number;
|
|
3487
3714
|
}
|
|
3715
|
+
/**
|
|
3716
|
+
* Presentation layout variables from `dgm:prSet/dgm:presLayoutVars` (data model)
|
|
3717
|
+
* or `dgm:varLst` (layout definition defaults).
|
|
3718
|
+
*
|
|
3719
|
+
* These drive how the DiagramML layout interpreter arranges points: flow
|
|
3720
|
+
* direction, hierarchy branch style, org-chart mode, and child count limits.
|
|
3721
|
+
* The fallback layout engine can consult them for direction/org-chart hints.
|
|
3722
|
+
*
|
|
3723
|
+
* @example
|
|
3724
|
+
* ```ts
|
|
3725
|
+
* const vars: PptxSmartArtPresLayoutVars = { direction: "rev", orgChart: true };
|
|
3726
|
+
* // => satisfies PptxSmartArtPresLayoutVars
|
|
3727
|
+
* ```
|
|
3728
|
+
*/
|
|
3729
|
+
interface PptxSmartArtPresLayoutVars {
|
|
3730
|
+
/** Flow direction (`dgm:dir`): "norm" (default) or "rev" (reversed/RTL). */
|
|
3731
|
+
direction?: 'norm' | 'rev';
|
|
3732
|
+
/** Hierarchy branch style (`dgm:hierBranch`): std/init/l/r/hang. */
|
|
3733
|
+
hierarchyBranch?: 'std' | 'init' | 'l' | 'r' | 'hang';
|
|
3734
|
+
/** Org-chart mode enabled (`dgm:orgChart`). */
|
|
3735
|
+
orgChart?: boolean;
|
|
3736
|
+
/** Maximum children per node (`dgm:chMax`, -1 = unbounded). */
|
|
3737
|
+
childMax?: number;
|
|
3738
|
+
/** Preferred children per node (`dgm:chPref`, -1 = unbounded). */
|
|
3739
|
+
childPreferred?: number;
|
|
3740
|
+
/** Whether bullets are enabled (`dgm:bulletEnabled`). */
|
|
3741
|
+
bulletEnabled?: boolean;
|
|
3742
|
+
/** Animation-by-level setting (`dgm:animLvl`). */
|
|
3743
|
+
animationLevel?: string;
|
|
3744
|
+
/** Animate-one setting (`dgm:animOne`). */
|
|
3745
|
+
animateOne?: string;
|
|
3746
|
+
/** Allowed resize handles (`dgm:resizeHandles`). */
|
|
3747
|
+
resizeHandles?: string;
|
|
3748
|
+
}
|
|
3488
3749
|
/**
|
|
3489
3750
|
* Complete parsed SmartArt data for a {@link SmartArtPptxElement}.
|
|
3490
3751
|
*
|
|
@@ -3526,6 +3787,12 @@ interface PptxSmartArtData {
|
|
|
3526
3787
|
quickStyle?: PptxSmartArtQuickStyle;
|
|
3527
3788
|
/** Editable metadata from the related DiagramML layout definition. */
|
|
3528
3789
|
layoutDefinition?: PptxSmartArtLayoutDefinition;
|
|
3790
|
+
/**
|
|
3791
|
+
* Presentation layout variables (direction, hierarchy branch, org-chart,
|
|
3792
|
+
* child limits, bullets) from `dgm:presLayoutVars` / layout `dgm:varLst`.
|
|
3793
|
+
* Consulted by the fallback layout engine for direction/org-chart hints.
|
|
3794
|
+
*/
|
|
3795
|
+
presLayoutVars?: PptxSmartArtPresLayoutVars;
|
|
3529
3796
|
/** Relationship ID for the diagram data part (for round-trip save). */
|
|
3530
3797
|
dataRelId?: string;
|
|
3531
3798
|
/** Relationship ID for the diagram layout part. */
|
|
@@ -3558,7 +3825,7 @@ interface PptxSmartArtData {
|
|
|
3558
3825
|
/**
|
|
3559
3826
|
* Per-cell visual style for a table cell.
|
|
3560
3827
|
*
|
|
3561
|
-
* All fields are optional
|
|
3828
|
+
* All fields are optional - unset values inherit from the table style.
|
|
3562
3829
|
*
|
|
3563
3830
|
* @example
|
|
3564
3831
|
* ```ts
|
|
@@ -3686,6 +3953,52 @@ interface PptxTableCellStyle {
|
|
|
3686
3953
|
patternFillForeground?: string;
|
|
3687
3954
|
/** Pattern fill background colour. */
|
|
3688
3955
|
patternFillBackground?: string;
|
|
3956
|
+
/**
|
|
3957
|
+
* Cell 3D bevel + lighting from `a:tcPr/a:cell3D` (CT_Cell3D,
|
|
3958
|
+
* ECMA-376 §21.1.3.1). Rendered as a CSS bevel treatment.
|
|
3959
|
+
*/
|
|
3960
|
+
cell3D?: PptxTableCell3D;
|
|
3961
|
+
/**
|
|
3962
|
+
* `a:tcPr/@anchorCtr` - centre the text block in the direction
|
|
3963
|
+
* perpendicular to the text flow (horizontal centring for horizontal text).
|
|
3964
|
+
*/
|
|
3965
|
+
anchorCtr?: boolean;
|
|
3966
|
+
/**
|
|
3967
|
+
* `a:tcPr/@horzOverflow` (ST_TextHorzOverflowType): `clip` clips text at
|
|
3968
|
+
* the cell edge, `overflow` (the default) lets it spill.
|
|
3969
|
+
*/
|
|
3970
|
+
horzOverflow?: 'clip' | 'overflow';
|
|
3971
|
+
}
|
|
3972
|
+
/**
|
|
3973
|
+
* Cell 3D bevel + lighting parsed from `a:tcPr/a:cell3D` (CT_Cell3D).
|
|
3974
|
+
*
|
|
3975
|
+
* Only the fields needed to render a plausible bevel treatment are captured;
|
|
3976
|
+
* verbatim round-trip of the full node is handled separately by the save path.
|
|
3977
|
+
*
|
|
3978
|
+
* @example
|
|
3979
|
+
* ```ts
|
|
3980
|
+
* const c3d: PptxTableCell3D = {
|
|
3981
|
+
* bevelWidth: 8,
|
|
3982
|
+
* bevelHeight: 8,
|
|
3983
|
+
* bevelPreset: 'circle',
|
|
3984
|
+
* material: 'plastic',
|
|
3985
|
+
* };
|
|
3986
|
+
* // => satisfies PptxTableCell3D
|
|
3987
|
+
* ```
|
|
3988
|
+
*/
|
|
3989
|
+
interface PptxTableCell3D {
|
|
3990
|
+
/** Bevel width in px (from `a:bevel@w`, EMU converted). */
|
|
3991
|
+
bevelWidth?: number;
|
|
3992
|
+
/** Bevel height in px (from `a:bevel@h`, EMU converted). */
|
|
3993
|
+
bevelHeight?: number;
|
|
3994
|
+
/** Bevel preset name (`a:bevel@prst`, e.g. `circle`, `relaxedInset`). */
|
|
3995
|
+
bevelPreset?: string;
|
|
3996
|
+
/** Preset material (`a:cell3D@prstMaterial`, e.g. `plastic`, `metal`). */
|
|
3997
|
+
material?: string;
|
|
3998
|
+
/** Light rig type (`a:lightRig@rig`, e.g. `threePt`, `soft`). */
|
|
3999
|
+
lightRig?: string;
|
|
4000
|
+
/** Light rig direction (`a:lightRig@dir`, e.g. `tl`, `t`, `tr`). */
|
|
4001
|
+
lightRigDirection?: string;
|
|
3689
4002
|
}
|
|
3690
4003
|
/**
|
|
3691
4004
|
* A single table cell with text content, optional style, and merge info.
|
|
@@ -3798,12 +4111,50 @@ interface PptxTableData {
|
|
|
3798
4111
|
* ```
|
|
3799
4112
|
*/
|
|
3800
4113
|
interface ParsedTableStyleFill {
|
|
3801
|
-
/**
|
|
4114
|
+
/**
|
|
4115
|
+
* Theme colour key (e.g. `accent1`, `dk1`). Empty string when the fill is a
|
|
4116
|
+
* non-scheme fill (explicit sRGB, gradient, pattern, or none) that carries
|
|
4117
|
+
* no theme colour reference; the renderer then resolves {@link color},
|
|
4118
|
+
* {@link gradient}, {@link pattern}, or {@link noFill} instead.
|
|
4119
|
+
*/
|
|
3802
4120
|
schemeColor: string;
|
|
3803
4121
|
/** Tint value (0-100 000). */
|
|
3804
4122
|
tint?: number;
|
|
3805
4123
|
/** Shade value (0-100 000). */
|
|
3806
4124
|
shade?: number;
|
|
4125
|
+
/** Explicit sRGB hex colour (e.g. `#FF8800`) from `a:srgbClr`. */
|
|
4126
|
+
color?: string;
|
|
4127
|
+
/** The fill was `a:noFill`: renders transparent and clears lower layers. */
|
|
4128
|
+
noFill?: boolean;
|
|
4129
|
+
/** Gradient fill parsed from `a:gradFill`. */
|
|
4130
|
+
gradient?: ParsedTableStyleGradient;
|
|
4131
|
+
/** Preset pattern fill parsed from `a:pattFill`. */
|
|
4132
|
+
pattern?: ParsedTableStylePattern;
|
|
4133
|
+
}
|
|
4134
|
+
/** A single colour stop within a {@link ParsedTableStyleGradient}. */
|
|
4135
|
+
interface ParsedTableStyleGradientStop {
|
|
4136
|
+
/** Stop position as a percentage (0-100). */
|
|
4137
|
+
position: number;
|
|
4138
|
+
/** Stop colour (scheme or explicit sRGB). */
|
|
4139
|
+
fill: ParsedTableStyleFill;
|
|
4140
|
+
}
|
|
4141
|
+
/** A gradient fill parsed from a table style section's `a:gradFill`. */
|
|
4142
|
+
interface ParsedTableStyleGradient {
|
|
4143
|
+
/** Ordered colour stops. */
|
|
4144
|
+
stops: ParsedTableStyleGradientStop[];
|
|
4145
|
+
/** Linear gradient angle in degrees (from `a:lin@ang`, 60000ths -> deg). */
|
|
4146
|
+
angle?: number;
|
|
4147
|
+
/** Gradient family: linear (`a:lin`) or radial (`a:path`). */
|
|
4148
|
+
type: 'linear' | 'radial';
|
|
4149
|
+
}
|
|
4150
|
+
/** A preset pattern fill parsed from a table style section's `a:pattFill`. */
|
|
4151
|
+
interface ParsedTableStylePattern {
|
|
4152
|
+
/** OOXML preset name (e.g. `ltDnDiag`) from `a:pattFill@prst`. */
|
|
4153
|
+
preset: string;
|
|
4154
|
+
/** Foreground colour (`a:fgClr`). */
|
|
4155
|
+
foreground?: ParsedTableStyleFill;
|
|
4156
|
+
/** Background colour (`a:bgClr`). */
|
|
4157
|
+
background?: ParsedTableStyleFill;
|
|
3807
4158
|
}
|
|
3808
4159
|
/**
|
|
3809
4160
|
* A single entry in the parsed table style map.
|
|
@@ -3830,12 +4181,20 @@ interface ParsedTableStyleText {
|
|
|
3830
4181
|
bold?: boolean;
|
|
3831
4182
|
/** Font italic. */
|
|
3832
4183
|
italic?: boolean;
|
|
4184
|
+
/** Font underline (from `a:tcTxStyle@u`, any value other than `none`). */
|
|
4185
|
+
underline?: boolean;
|
|
3833
4186
|
/** Font colour as theme scheme key. */
|
|
3834
4187
|
fontSchemeColor?: string;
|
|
3835
4188
|
/** Font colour tint (0-100 000). */
|
|
3836
4189
|
fontTint?: number;
|
|
3837
4190
|
/** Font colour shade (0-100 000). */
|
|
3838
4191
|
fontShade?: number;
|
|
4192
|
+
/** Explicit sRGB hex font colour (e.g. `#FF0000`) from `a:srgbClr`. */
|
|
4193
|
+
fontColor?: string;
|
|
4194
|
+
/** Typeface from `a:font@typeface` (latin font). */
|
|
4195
|
+
fontFace?: string;
|
|
4196
|
+
/** Font-collection index from `a:fontRef@idx` (`minor`, `major`, `none`). */
|
|
4197
|
+
fontRefIdx?: string;
|
|
3839
4198
|
}
|
|
3840
4199
|
/**
|
|
3841
4200
|
* A single border side within a table style's `a:tcStyle/a:tcBdr`.
|
|
@@ -3863,7 +4222,7 @@ interface ParsedTableStyleBorder {
|
|
|
3863
4222
|
fill?: ParsedTableStyleFill;
|
|
3864
4223
|
/** Explicit hex colour when the line used `a:srgbClr` (e.g. `#808080`). */
|
|
3865
4224
|
color?: string;
|
|
3866
|
-
/** The line was `a:noFill`
|
|
4225
|
+
/** The line was `a:noFill` - an explicit "no border" that clears lower layers. */
|
|
3867
4226
|
noFill?: boolean;
|
|
3868
4227
|
}
|
|
3869
4228
|
/**
|
|
@@ -4744,6 +5103,19 @@ interface PptxNativeAnimation {
|
|
|
4744
5103
|
durationMs?: number;
|
|
4745
5104
|
/** Delay in milliseconds. */
|
|
4746
5105
|
delayMs?: number;
|
|
5106
|
+
/**
|
|
5107
|
+
* Acceleration fraction in the range 0..1, parsed from `p:cTn/@accel`
|
|
5108
|
+
* (ST_PositiveFixedPercentage, stored as 1000ths of a percent). A non-zero
|
|
5109
|
+
* value means the effect eases in (starts slow). Absent means no easing-in.
|
|
5110
|
+
*/
|
|
5111
|
+
accel?: number;
|
|
5112
|
+
/**
|
|
5113
|
+
* Deceleration fraction in the range 0..1, parsed from `p:cTn/@decel`.
|
|
5114
|
+
* A non-zero value means the effect eases out (ends slow). Absent means no
|
|
5115
|
+
* easing-out. When both {@link accel} and {@link decel} are set, the effect
|
|
5116
|
+
* eases in and out.
|
|
5117
|
+
*/
|
|
5118
|
+
decel?: number;
|
|
4747
5119
|
/** Trigger delay in milliseconds (for afterDelay). */
|
|
4748
5120
|
triggerDelayMs?: number;
|
|
4749
5121
|
/** SVG path string for motion path animations (`p:animMotion/@path`). */
|
|
@@ -4836,6 +5208,14 @@ interface PptxNativeAnimation {
|
|
|
4836
5208
|
* that aren't OLE charts).
|
|
4837
5209
|
*/
|
|
4838
5210
|
graphicBuild?: string;
|
|
5211
|
+
/**
|
|
5212
|
+
* OLE-embedded chart build attribute (`p:bldOleChart/@bld`) when this
|
|
5213
|
+
* animation stages an OLE chart graphic frame. Values follow
|
|
5214
|
+
* ST_TLOleChartBuildType: `allAtOnce`, `series`, `category`, `seriesEl`,
|
|
5215
|
+
* `categoryEl`. Lets a staged-reveal renderer build the chart by series /
|
|
5216
|
+
* category / element to match PowerPoint, rather than as one whole element.
|
|
5217
|
+
*/
|
|
5218
|
+
oleChartBuild?: string;
|
|
4839
5219
|
/** Schema-accurate `p:bldGraphic/p:bldAsOne|p:bldSub` representation. */
|
|
4840
5220
|
graphicBuildProperties?: PptxGraphicBuild;
|
|
4841
5221
|
/**
|
|
@@ -5325,6 +5705,18 @@ interface PptxAppProperties {
|
|
|
5325
5705
|
template?: string;
|
|
5326
5706
|
/** Hyperlink base URL. */
|
|
5327
5707
|
hyperlinkBase?: string;
|
|
5708
|
+
/** Document security bitmask (`<DocSecurity>`). */
|
|
5709
|
+
docSecurity?: number;
|
|
5710
|
+
/** Number of multimedia clips (`<MMClips>`). */
|
|
5711
|
+
mmClips?: number;
|
|
5712
|
+
/** Whether thumbnail images were scaled to fit (`<ScaleCrop>`). */
|
|
5713
|
+
scaleCrop?: boolean;
|
|
5714
|
+
/** Whether hyperlinks are current (`<LinksUpToDate>`). */
|
|
5715
|
+
linksUpToDate?: boolean;
|
|
5716
|
+
/** Whether the document is shared (`<SharedDoc>`). */
|
|
5717
|
+
sharedDoc?: boolean;
|
|
5718
|
+
/** Whether hyperlinks changed since last save (`<HyperlinksChanged>`). */
|
|
5719
|
+
hyperlinksChanged?: boolean;
|
|
5328
5720
|
}
|
|
5329
5721
|
//#endregion
|
|
5330
5722
|
//#region src/core/types/presentation-print-properties.d.ts
|
|
@@ -5829,6 +6221,21 @@ interface PptxActiveXControl {
|
|
|
5829
6221
|
name?: string;
|
|
5830
6222
|
/** Shape ID this control is linked to (from @spid). */
|
|
5831
6223
|
shapeId?: string;
|
|
6224
|
+
/** X position (px) of the control's fallback picture, if present. */
|
|
6225
|
+
x?: number;
|
|
6226
|
+
/** Y position (px) of the control's fallback picture, if present. */
|
|
6227
|
+
y?: number;
|
|
6228
|
+
/** Width (px) of the control's fallback picture, if present. */
|
|
6229
|
+
width?: number;
|
|
6230
|
+
/** Height (px) of the control's fallback picture, if present. */
|
|
6231
|
+
height?: number;
|
|
6232
|
+
/**
|
|
6233
|
+
* Relationship ID of the control's static fallback picture
|
|
6234
|
+
* (`mc:AlternateContent > mc:Fallback > p:pic > p:blipFill > a:blip@r:embed`).
|
|
6235
|
+
* Renderers resolve this to an image so a control shows its last static
|
|
6236
|
+
* frame instead of a blank area (the live ActiveX cannot run in a viewer).
|
|
6237
|
+
*/
|
|
6238
|
+
fallbackImageRelId?: string;
|
|
5832
6239
|
/** Raw XML for round-trip preservation. */
|
|
5833
6240
|
rawXml?: XmlObject;
|
|
5834
6241
|
}
|
|
@@ -5955,6 +6362,13 @@ interface PptxSlide {
|
|
|
5955
6362
|
customerData?: PptxCustomerData[];
|
|
5956
6363
|
/** ActiveX control references from `p:controls` on this slide. */
|
|
5957
6364
|
activeXControls?: PptxActiveXControl[];
|
|
6365
|
+
/**
|
|
6366
|
+
* Shapes parsed from a referenced legacy VML drawing part
|
|
6367
|
+
* (`ppt/drawings/vmlDrawing*.vml`, linked via a `legacyDrawing`
|
|
6368
|
+
* relationship). These are read-only render hints: the VML part itself is
|
|
6369
|
+
* preserved verbatim on save, so this field is not re-serialized.
|
|
6370
|
+
*/
|
|
6371
|
+
legacyVmlElements?: PptxElement[];
|
|
5958
6372
|
/** Per-slide header/footer flags from `<p:hf>` (P-H3). */
|
|
5959
6373
|
headerFooterFlags?: PptxHeaderFooterFlags;
|
|
5960
6374
|
/** Server-backed slide synchronization metadata stored in a related OPC part. */
|
|
@@ -6063,12 +6477,6 @@ interface PptxPresentationProperties {
|
|
|
6063
6477
|
showSubtitles?: boolean;
|
|
6064
6478
|
/** Typed `p:prnPr` settings. Set to null during save to remove the element. */
|
|
6065
6479
|
printProperties?: PptxPresentationPrintProperties | null;
|
|
6066
|
-
/** @deprecated Use `printProperties.printWhat`; retained as a handout compatibility alias. */
|
|
6067
|
-
printSlidesPerPage?: number;
|
|
6068
|
-
/** @deprecated Use `printProperties.frameSlides`. */
|
|
6069
|
-
printFrameSlides?: boolean;
|
|
6070
|
-
/** @deprecated Use `printProperties.colorMode`. */
|
|
6071
|
-
printColorMode?: 'clr' | 'gray' | 'bw';
|
|
6072
6480
|
/** Most-recently-used colours from the presentation palette. */
|
|
6073
6481
|
mruColors?: string[];
|
|
6074
6482
|
/** Grid spacing in EMUs (cx, cy). Default is 914400 / 8 = 114300. */
|
|
@@ -8010,6 +8418,20 @@ interface ViewerFontSource {
|
|
|
8010
8418
|
weight?: string | number;
|
|
8011
8419
|
style?: 'normal' | 'italic';
|
|
8012
8420
|
}
|
|
8421
|
+
/**
|
|
8422
|
+
* Store PPTX content bytes so the audience tab can retrieve them.
|
|
8423
|
+
* Called by the presenter before opening the audience window.
|
|
8424
|
+
*/
|
|
8425
|
+
declare function storeAudienceContent(content: ArrayBuffer | Uint8Array, sessionId?: string): Promise<void>;
|
|
8426
|
+
/**
|
|
8427
|
+
* Load PPTX content bytes stored by the presenter tab.
|
|
8428
|
+
* Returns `null` if nothing is stored.
|
|
8429
|
+
*/
|
|
8430
|
+
declare function loadAudienceContent(sessionId?: string): Promise<Uint8Array | null>;
|
|
8431
|
+
/**
|
|
8432
|
+
* Remove stored audience content (cleanup).
|
|
8433
|
+
*/
|
|
8434
|
+
declare function clearAudienceContent(sessionId?: string): Promise<void>;
|
|
8013
8435
|
/** In-memory clipboard payload stored when an element is copied or cut. */
|
|
8014
8436
|
interface ElementClipboardPayload {
|
|
8015
8437
|
element: PptxElement;
|
|
@@ -8218,6 +8640,228 @@ interface ShapeQuickStyle {
|
|
|
8218
8640
|
style: Partial<ShapeStyle>;
|
|
8219
8641
|
}
|
|
8220
8642
|
//#endregion
|
|
8643
|
+
//#region ../shared/dist/ai/index.d.ts
|
|
8644
|
+
//#endregion
|
|
8645
|
+
//#region src/ai/change-animator.d.ts
|
|
8646
|
+
/** Host-tunable options for how AI edits are animated on the canvas. */
|
|
8647
|
+
interface AiChangeAnimationConfig {
|
|
8648
|
+
/** Master switch. Default true. */
|
|
8649
|
+
enabled?: boolean;
|
|
8650
|
+
/** How long the motion + glow plays, in ms. Default 900. */
|
|
8651
|
+
durationMs?: number;
|
|
8652
|
+
/** Draw the pulsing glow highlight on changed elements. Default true. */
|
|
8653
|
+
glow?: boolean;
|
|
8654
|
+
/** Glide old->new bounds and cross-fade colours. Default true. */
|
|
8655
|
+
tween?: boolean;
|
|
8656
|
+
/** Accent colour (any CSS colour) for the glow/ghosts. Default a blue. */
|
|
8657
|
+
color?: string;
|
|
8658
|
+
}
|
|
8659
|
+
//#endregion
|
|
8660
|
+
//#region src/ai/config.d.ts
|
|
8661
|
+
/** The UI message shape exchanged with the assistant. Alias of the SDK type. */
|
|
8662
|
+
type PptxAiUIMessage = UIMessage;
|
|
8663
|
+
/**
|
|
8664
|
+
* Canonical name of every tool the assistant can call. Document tools mirror the
|
|
8665
|
+
* `pptx-viewer-mcp` server exactly (they ARE the same functions, run against the
|
|
8666
|
+
* live deck); the viewer-only tools (navigation, deck outline, element/notes
|
|
8667
|
+
* readers, table merge) have no MCP counterpart.
|
|
8668
|
+
*/
|
|
8669
|
+
type PptxAiToolName = 'get_deck_overview' | 'get_slide' | 'get_element' | 'get_speaker_notes' | 'find_text' | 'get_theme' | 'go_to_slide' | 'select_elements' | 'merge_tables' | 'get_metadata' | 'get_layouts' | 'find_placeholders' | 'get_presentation_properties' | 'run_accessibility_check' | 'convert_to_markdown' | 'add_element' | 'update_element' | 'delete_elements' | 'arrange_elements' | 'clone_element' | 'set_element_animation' | 'group_elements' | 'ungroup_elements' | 'batch_update_elements' | 'update_element_style' | 'replace_geometry' | 'set_element_lock' | 'manage_hyperlinks' | 'replace_text' | 'manage_comments' | 'update_table_cells' | 'manage_table_structure' | 'create_chart' | 'update_chart' | 'add_chart_series' | 'remove_chart_series' | 'update_chart_series_data' | 'manage_smart_art' | 'apply_template' | 'add_slide' | 'duplicate_slide' | 'delete_slides' | 'reorder_slides' | 'update_slide_properties' | 'set_slide_transition' | 'apply_theme_preset' | 'update_theme_colors' | 'update_theme_fonts' | 'set_canvas_size' | 'update_metadata' | 'manage_sections' | 'update_presentation_properties' | 'apply_layout';
|
|
8670
|
+
type Resolvable<T> = T | (() => T | Promise<T>);
|
|
8671
|
+
/** How the assistant reaches a language model. */
|
|
8672
|
+
type PptxAiConnection =
|
|
8673
|
+
/**
|
|
8674
|
+
* Post messages to a host backend route (recommended for production so the
|
|
8675
|
+
* provider API key stays server-side). Maps to `DefaultChatTransport`.
|
|
8676
|
+
*/
|
|
8677
|
+
{
|
|
8678
|
+
kind: 'endpoint';
|
|
8679
|
+
api: string;
|
|
8680
|
+
headers?: Resolvable<Record<string, string>>;
|
|
8681
|
+
body?: Resolvable<Record<string, unknown>>;
|
|
8682
|
+
credentials?: RequestCredentials;
|
|
8683
|
+
fetch?: typeof globalThis.fetch;
|
|
8684
|
+
} |
|
|
8685
|
+
/**
|
|
8686
|
+
* Run a language model in-process in the browser (bring-your-own key /
|
|
8687
|
+
* local model). Maps to a `ToolLoopAgent` behind a `DirectChatTransport`.
|
|
8688
|
+
*/
|
|
8689
|
+
{
|
|
8690
|
+
kind: 'model';
|
|
8691
|
+
model: LanguageModel;
|
|
8692
|
+
system?: string;
|
|
8693
|
+
maxSteps?: number;
|
|
8694
|
+
} |
|
|
8695
|
+
/** Provide a fully-constructed transport (advanced / testing escape hatch). */
|
|
8696
|
+
{
|
|
8697
|
+
kind: 'transport';
|
|
8698
|
+
transport: ChatTransport<PptxAiUIMessage>;
|
|
8699
|
+
};
|
|
8700
|
+
/** How writes proposed by the assistant reach the document. */
|
|
8701
|
+
type PptxAiWritePolicy = 'stage' | 'approve' | 'auto';
|
|
8702
|
+
/** Which deck context is fed to the model with each turn. */
|
|
8703
|
+
type PptxAiContextStrategy = 'outline' | 'current-slide' | 'none';
|
|
8704
|
+
/** Optional per-session history persistence hooks. */
|
|
8705
|
+
interface PptxAiHistoryHooks {
|
|
8706
|
+
load?(id: string): Promise<PptxAiUIMessage[]>;
|
|
8707
|
+
save?(id: string, messages: PptxAiUIMessage[]): Promise<void>;
|
|
8708
|
+
}
|
|
8709
|
+
/** Complete host configuration for an AI chat session. */
|
|
8710
|
+
interface PptxAiConfig {
|
|
8711
|
+
connection: PptxAiConnection;
|
|
8712
|
+
/** Extra host instructions appended to the base system prompt. */
|
|
8713
|
+
systemPromptExtras?: string;
|
|
8714
|
+
tools?: {
|
|
8715
|
+
/** Allowlist. When set, only these tools are exposed. */
|
|
8716
|
+
enabled?: PptxAiToolName[];
|
|
8717
|
+
/** Denylist, applied after `enabled`. */
|
|
8718
|
+
disabled?: PptxAiToolName[];
|
|
8719
|
+
/** Additional host-defined tools merged into the tool set. */
|
|
8720
|
+
extra?: ToolSet;
|
|
8721
|
+
};
|
|
8722
|
+
/** Default `'stage'`. */
|
|
8723
|
+
writePolicy?: PptxAiWritePolicy;
|
|
8724
|
+
/** Default `'outline'`. */
|
|
8725
|
+
contextStrategy?: PptxAiContextStrategy;
|
|
8726
|
+
history?: PptxAiHistoryHooks;
|
|
8727
|
+
/**
|
|
8728
|
+
* How AI edits are animated on the canvas so the user can watch them land
|
|
8729
|
+
* (glide old->new, fade/scale in-out, glow-pulse). Omit for the defaults;
|
|
8730
|
+
* set `{ enabled: false }` to turn it off.
|
|
8731
|
+
*/
|
|
8732
|
+
changeAnimation?: AiChangeAnimationConfig;
|
|
8733
|
+
onError?(error: Error): void;
|
|
8734
|
+
}
|
|
8735
|
+
//#endregion
|
|
8736
|
+
//#region src/ai/bridge.d.ts
|
|
8737
|
+
/** Lightweight, model-friendly summary of the whole deck. */
|
|
8738
|
+
interface PptxAiDeckMeta {
|
|
8739
|
+
/** Total number of slides. */
|
|
8740
|
+
slideCount: number;
|
|
8741
|
+
/** Zero-based index of the currently active slide. */
|
|
8742
|
+
activeSlideIndex: number;
|
|
8743
|
+
/** Deck title, when known (first slide title / core properties). */
|
|
8744
|
+
title?: string;
|
|
8745
|
+
/** Slide canvas width in CSS pixels. */
|
|
8746
|
+
width: number;
|
|
8747
|
+
/** Slide canvas height in CSS pixels. */
|
|
8748
|
+
height: number;
|
|
8749
|
+
}
|
|
8750
|
+
/** Severity hint for {@link PptxAiBridge.notify}. */
|
|
8751
|
+
type PptxAiNotifyLevel = 'info' | 'success' | 'warning' | 'error';
|
|
8752
|
+
/**
|
|
8753
|
+
* A target the user has scoped the assistant to: either a whole slide or a
|
|
8754
|
+
* single element on a slide. Returned by {@link PptxAiBridge.getFocusedTargets}
|
|
8755
|
+
* so the context builder can tell the model exactly what to focus on.
|
|
8756
|
+
*/
|
|
8757
|
+
type PptxAiFocusedTarget = {
|
|
8758
|
+
kind: 'slide';
|
|
8759
|
+
slideIndex: number;
|
|
8760
|
+
} | {
|
|
8761
|
+
kind: 'element';
|
|
8762
|
+
slideIndex: number;
|
|
8763
|
+
elementId: string;
|
|
8764
|
+
};
|
|
8765
|
+
/**
|
|
8766
|
+
* A pure updater over the deck's slides. It receives a deep clone of the
|
|
8767
|
+
* current slides (mutation-safe) and returns the next slides array. The bridge
|
|
8768
|
+
* commits the returned array as ONE history entry.
|
|
8769
|
+
*/
|
|
8770
|
+
type PptxAiSlidesUpdater = (slides: PptxSlide[]) => PptxSlide[];
|
|
8771
|
+
/**
|
|
8772
|
+
* A pure updater over the whole parsed deck ({@link PptxData}). Mirrors the
|
|
8773
|
+
* `pptx-viewer-mcp` tool model (data in, mutated data out) so presentation-level
|
|
8774
|
+
* MCP tools (metadata, sections, canvas size, presentation properties, layouts)
|
|
8775
|
+
* can be committed as ONE undoable history entry through {@link
|
|
8776
|
+
* PptxAiBridge.applyDeckData}. Optional: bindings that only track slide/theme
|
|
8777
|
+
* state can omit it, in which case those presentation-level tools report that
|
|
8778
|
+
* they are unavailable in this viewer while every slide/theme tool still works.
|
|
8779
|
+
*/
|
|
8780
|
+
type PptxAiDataUpdater = (data: PptxData) => PptxData;
|
|
8781
|
+
/** Field-level updates for a single element, mirroring the MCP update vocab. */
|
|
8782
|
+
interface PptxAiElementUpdate {
|
|
8783
|
+
x?: number;
|
|
8784
|
+
y?: number;
|
|
8785
|
+
width?: number;
|
|
8786
|
+
height?: number;
|
|
8787
|
+
rotation?: number;
|
|
8788
|
+
opacity?: number;
|
|
8789
|
+
hidden?: boolean;
|
|
8790
|
+
flipHorizontal?: boolean;
|
|
8791
|
+
flipVertical?: boolean;
|
|
8792
|
+
text?: string;
|
|
8793
|
+
fontSize?: number;
|
|
8794
|
+
fontFamily?: string;
|
|
8795
|
+
fontColor?: string;
|
|
8796
|
+
bold?: boolean;
|
|
8797
|
+
italic?: boolean;
|
|
8798
|
+
underline?: boolean;
|
|
8799
|
+
align?: 'left' | 'center' | 'right' | 'justify';
|
|
8800
|
+
fillColor?: string;
|
|
8801
|
+
strokeColor?: string;
|
|
8802
|
+
strokeWidth?: number;
|
|
8803
|
+
}
|
|
8804
|
+
/**
|
|
8805
|
+
* Implemented by each binding to expose its live editor to the AI core.
|
|
8806
|
+
*
|
|
8807
|
+
* Read methods must be cheap and synchronous. Write methods must route through
|
|
8808
|
+
* the binding's editor-history layer so AI edits are undoable like manual ones.
|
|
8809
|
+
*/
|
|
8810
|
+
interface PptxAiBridge {
|
|
8811
|
+
/** Return a summary of the whole deck. */
|
|
8812
|
+
getDeckMeta(): PptxAiDeckMeta;
|
|
8813
|
+
/** Return the deck's slides. Callers must not mutate the returned array. */
|
|
8814
|
+
getSlides(): PptxSlide[];
|
|
8815
|
+
/** Return the zero-based index of the active slide. */
|
|
8816
|
+
getActiveSlideIndex(): number;
|
|
8817
|
+
/** Return the resolved presentation theme, when available. */
|
|
8818
|
+
getTheme(): PptxTheme | undefined;
|
|
8819
|
+
/** Return the underlying core handler, when the binding exposes one. */
|
|
8820
|
+
getHandler(): PptxHandler | undefined;
|
|
8821
|
+
/** Navigate the viewer to a slide by zero-based index. */
|
|
8822
|
+
goToSlide(index: number): void;
|
|
8823
|
+
/** Select the given elements on a slide (empty array clears selection). */
|
|
8824
|
+
selectElements(slideIndex: number, elementIds: string[]): void;
|
|
8825
|
+
/**
|
|
8826
|
+
* Apply a slides updater as a single, atomic, undoable history entry. The
|
|
8827
|
+
* binding is responsible for cloning current slides before calling
|
|
8828
|
+
* `updater` and for installing the result.
|
|
8829
|
+
*/
|
|
8830
|
+
applySlidesUpdate(updater: PptxAiSlidesUpdater, label: string): void;
|
|
8831
|
+
/** Apply field updates to one element as a single history entry. */
|
|
8832
|
+
updateElement(slideIndex: number, elementId: string, updates: PptxAiElementUpdate): void;
|
|
8833
|
+
/** Apply partial theme updates as a single history entry. */
|
|
8834
|
+
applyTheme(updates: Partial<PptxTheme>): void;
|
|
8835
|
+
/**
|
|
8836
|
+
* Return the full parsed {@link PptxData} for the open deck, with the live
|
|
8837
|
+
* (edited) slides and theme overlaid. Enables `pptx-viewer-mcp` tools that
|
|
8838
|
+
* read presentation-level state (metadata, sections, layouts, presentation
|
|
8839
|
+
* properties). Optional: when absent, the AI core synthesises a minimal
|
|
8840
|
+
* PptxData from slides + dimensions, which is enough for every slide/theme
|
|
8841
|
+
* tool but not for presentation-level reads.
|
|
8842
|
+
*/
|
|
8843
|
+
getDeckData?(): PptxData | undefined;
|
|
8844
|
+
/**
|
|
8845
|
+
* Commit a whole-deck {@link PptxData} mutation as one undoable history entry.
|
|
8846
|
+
* Used to apply presentation-level MCP tool results (metadata, sections,
|
|
8847
|
+
* canvas size, presentation properties, layouts). Optional: when absent,
|
|
8848
|
+
* those tools report they are not supported in this viewer; slide/theme tools
|
|
8849
|
+
* are unaffected (they route through {@link PptxAiBridge.applySlidesUpdate}
|
|
8850
|
+
* and {@link PptxAiBridge.applyTheme}).
|
|
8851
|
+
*/
|
|
8852
|
+
applyDeckData?(updater: PptxAiDataUpdater, label: string): void;
|
|
8853
|
+
/**
|
|
8854
|
+
* Return the slides / elements the user has scoped the assistant to, if any.
|
|
8855
|
+
* When present and non-empty, the context builder tells the model to focus on
|
|
8856
|
+
* exactly these targets. Optional so existing bridges satisfy the contract
|
|
8857
|
+
* without change; a bridge that does not implement it behaves as before (no
|
|
8858
|
+
* focus scoping).
|
|
8859
|
+
*/
|
|
8860
|
+
getFocusedTargets?(): PptxAiFocusedTarget[];
|
|
8861
|
+
/** Surface a transient message in the host UI (toast / status line). */
|
|
8862
|
+
notify?(message: string, level?: PptxAiNotifyLevel): void;
|
|
8863
|
+
}
|
|
8864
|
+
//#endregion
|
|
8221
8865
|
//#region src/viewer/hooks/collaboration/types.d.ts
|
|
8222
8866
|
/** Connection lifecycle states for the Yjs WebSocket provider. */
|
|
8223
8867
|
type ConnectionStatus = 'disconnected' | 'connecting' | 'connected' | 'error';
|
|
@@ -8558,11 +9202,11 @@ interface PowerPointViewerProps {
|
|
|
8558
9202
|
serverUrl?: string;
|
|
8559
9203
|
};
|
|
8560
9204
|
/**
|
|
8561
|
-
* Opt in to the
|
|
8562
|
-
*
|
|
8563
|
-
*
|
|
8564
|
-
*
|
|
8565
|
-
*
|
|
9205
|
+
* Opt in to the Three.js SmartArt renderer. When `true`, SmartArt diagrams
|
|
9206
|
+
* render as extruded 3D blocks on a WebGL canvas instead of flat SVG.
|
|
9207
|
+
* Requires the optional `three` peer dependency; when it is not installed
|
|
9208
|
+
* (or the diagram has no geometry), the viewer transparently falls back to
|
|
9209
|
+
* the SVG `SmartArtRenderer`. Default `false`.
|
|
8566
9210
|
*/
|
|
8567
9211
|
smartArt3D?: boolean;
|
|
8568
9212
|
/**
|
|
@@ -8583,11 +9227,44 @@ interface PowerPointViewerProps {
|
|
|
8583
9227
|
* ```
|
|
8584
9228
|
*/
|
|
8585
9229
|
hiddenActions?: ToolbarActionId[];
|
|
9230
|
+
/**
|
|
9231
|
+
* Opt in to the built-in AI assistant. When provided, a Sparkles toggle
|
|
9232
|
+
* appears in the toolbar and opens a chat panel wired to this config; when
|
|
9233
|
+
* omitted, no AI icon renders and no AI code is loaded (the panel and its
|
|
9234
|
+
* `@ai-sdk/react` dependency are `React.lazy`-imported only on first open).
|
|
9235
|
+
*
|
|
9236
|
+
* The host supplies the model connection (a backend `endpoint`, an in-browser
|
|
9237
|
+
* `model`, or a custom `transport`) plus optional tool allow/deny lists and a
|
|
9238
|
+
* write policy. Requires the optional `ai` and `@ai-sdk/react` peers.
|
|
9239
|
+
*
|
|
9240
|
+
* @example
|
|
9241
|
+
* ```tsx
|
|
9242
|
+
* <PowerPointViewer content={bytes} ai={{ connection: { kind: 'model', model } }} />
|
|
9243
|
+
* ```
|
|
9244
|
+
*
|
|
9245
|
+
* @see {@link PptxAiConfig}
|
|
9246
|
+
*/
|
|
9247
|
+
ai?: PptxAiConfig;
|
|
8586
9248
|
}
|
|
8587
9249
|
interface PowerPointViewerHandle extends FileViewerHandle, PowerPointViewerAPI {
|
|
8588
9250
|
getContent: () => Promise<Uint8Array>;
|
|
8589
9251
|
}
|
|
8590
9252
|
|
|
9253
|
+
//#region src/viewer/utils/animation-effects.d.ts
|
|
9254
|
+
declare function getAnimationInitialStyle(preset: PptxAnimationPreset | undefined, nativeAnimation?: PptxNativeAnimation): React__default.CSSProperties;
|
|
9255
|
+
//#endregion
|
|
9256
|
+
//#region src/viewer/PowerPointViewer.d.ts
|
|
9257
|
+
/**
|
|
9258
|
+
* Root React component for the PowerPoint viewer/editor.
|
|
9259
|
+
*
|
|
9260
|
+
* Accepts binary `.pptx` content and renders a full-featured editor with
|
|
9261
|
+
* slide canvas, toolbar, inspector panels, presentation mode, and more.
|
|
9262
|
+
*
|
|
9263
|
+
* Uses `forwardRef` to expose a `PowerPointViewerHandle` for imperative
|
|
9264
|
+
* access (e.g. serialising the current content for saving).
|
|
9265
|
+
*/
|
|
9266
|
+
declare const PowerPointViewer: React.ForwardRefExoticComponent<PowerPointViewerProps & React.RefAttributes<PowerPointViewerHandle>>;
|
|
9267
|
+
|
|
8591
9268
|
//#endregion
|
|
8592
9269
|
//#region src/viewer/hooks/useThemeSwitching.d.ts
|
|
8593
9270
|
interface UseThemeSwitchingInput {
|
|
@@ -8877,44 +9554,6 @@ declare function parseAudienceNonce(): string | null;
|
|
|
8877
9554
|
/** Returns true if the current page was opened as an audience tab. */
|
|
8878
9555
|
declare function isAudienceTab(): boolean;
|
|
8879
9556
|
|
|
8880
|
-
//#region src/viewer/utils/animation-effects.d.ts
|
|
8881
|
-
declare function getAnimationInitialStyle(preset: PptxAnimationPreset | undefined, nativeAnimation?: PptxNativeAnimation): React__default.CSSProperties;
|
|
8882
|
-
//#endregion
|
|
8883
|
-
//#region src/viewer/PowerPointViewer.d.ts
|
|
8884
|
-
/**
|
|
8885
|
-
* Root React component for the PowerPoint viewer/editor.
|
|
8886
|
-
*
|
|
8887
|
-
* Accepts binary `.pptx` content and renders a full-featured editor with
|
|
8888
|
-
* slide canvas, toolbar, inspector panels, presentation mode, and more.
|
|
8889
|
-
*
|
|
8890
|
-
* Uses `forwardRef` to expose a `PowerPointViewerHandle` for imperative
|
|
8891
|
-
* access (e.g. serialising the current content for saving).
|
|
8892
|
-
*/
|
|
8893
|
-
declare const PowerPointViewer: React.ForwardRefExoticComponent<PowerPointViewerProps & React.RefAttributes<PowerPointViewerHandle>>;
|
|
8894
|
-
|
|
8895
|
-
//#region src/viewer/hooks/presentation-mode/audience-content-store.d.ts
|
|
8896
|
-
/**
|
|
8897
|
-
* audience-content-store: IndexedDB-based storage for sharing PPTX content
|
|
8898
|
-
* between the presenter tab and audience tab.
|
|
8899
|
-
*
|
|
8900
|
-
* When the presenter opens an audience window, the PPTX bytes are stored in
|
|
8901
|
-
* IndexedDB. The audience tab retrieves them on load and then cleans up.
|
|
8902
|
-
*/
|
|
8903
|
-
/**
|
|
8904
|
-
* Store PPTX content bytes so the audience tab can retrieve them.
|
|
8905
|
-
* Called by the presenter before opening the audience window.
|
|
8906
|
-
*/
|
|
8907
|
-
declare function storeAudienceContent(content: ArrayBuffer | Uint8Array, sessionId?: string): Promise<void>;
|
|
8908
|
-
/**
|
|
8909
|
-
* Load PPTX content bytes stored by the presenter tab.
|
|
8910
|
-
* Returns `null` if nothing is stored.
|
|
8911
|
-
*/
|
|
8912
|
-
declare function loadAudienceContent(sessionId?: string): Promise<Uint8Array | null>;
|
|
8913
|
-
/**
|
|
8914
|
-
* Remove stored audience content (cleanup).
|
|
8915
|
-
*/
|
|
8916
|
-
declare function clearAudienceContent(sessionId?: string): Promise<void>;
|
|
8917
|
-
//#endregion
|
|
8918
9557
|
//#region src/viewer/components/collaboration/CollaborationProvider.d.ts
|
|
8919
9558
|
interface CollaborationProviderProps {
|
|
8920
9559
|
/** Collaboration config, or `undefined`/omitted while no session is active. */
|
|
@@ -8967,4 +9606,4 @@ interface CollaborationStatusIndicatorProps {
|
|
|
8967
9606
|
declare function CollaborationStatusIndicator({ status, connectedCount, onRetry }: CollaborationStatusIndicatorProps): React__default.ReactElement;
|
|
8968
9607
|
|
|
8969
9608
|
export { CollaborationProvider, CollaborationStatusIndicator, PowerPointViewer, RemoteUserCursors, UserAvatarBar, clearAudienceContent, getAnimationInitialStyle, isAudienceTab, loadAudienceContent, parseAudienceNonce, storeAudienceContent, useCollaborativeHistory, useCollaborativeState, usePresenceTracking, useThemeSwitching, useYjsProvider };
|
|
8970
|
-
export type { AccessibilityIssue, AnimationPresetOption, CanvasSize, CollaborationConfig, CollaborationContextValue, CollaborationRole, CollaborationStatusIndicatorProps, ConnectionStatus, ConnectorArrowOption, ConnectorGeometryOption, ConnectorGeometryType, ConnectorPathGeometry, DragState, DrawingTool, EditorHistorySnapshot, ElementBounds, ElementClipboardPayload, ElementContextMenuAction, ElementContextMenuState, FileViewerHandle, MarqueeSelectionState, ParsedTableCell, ParsedTableData, PowerPointViewerHandle, PowerPointViewerProps, PresentationAnimationRuntime, RemoteUserCursorsProps, ResizeHandle, ResizeState, ShapeAdjustmentDragState, ShapeAdjustmentHandleDescriptor, ShapePreset, ShapeQuickStyle, ShortcutReferenceItem, SlideAlignment, SlideSectionGroup, SlideTransitionOption, StrokeDashOption, SupportedShapeType, TableCellEditorState, ThemeSwitchingResult, ToolbarSection, UseCollaborativeHistoryResult, UseCollaborativeStateInput, UsePresenceTrackingResult, UseThemeSwitchingInput, UserAvatarBarProps, UserPresence, ViewerMode };
|
|
9609
|
+
export type { AccessibilityIssue, AnimationPresetOption, CanvasSize, CollaborationConfig, CollaborationContextValue, CollaborationRole, CollaborationStatusIndicatorProps, ConnectionStatus, ConnectorArrowOption, ConnectorGeometryOption, ConnectorGeometryType, ConnectorPathGeometry, DragState, DrawingTool, EditorHistorySnapshot, ElementBounds, ElementClipboardPayload, ElementContextMenuAction, ElementContextMenuState, FileViewerHandle, MarqueeSelectionState, ParsedTableCell, ParsedTableData, PowerPointViewerHandle, PowerPointViewerProps, PptxAiBridge, PptxAiConfig, PptxAiConnection, PptxAiContextStrategy, PptxAiToolName, PptxAiWritePolicy, PresentationAnimationRuntime, RemoteUserCursorsProps, ResizeHandle, ResizeState, ShapeAdjustmentDragState, ShapeAdjustmentHandleDescriptor, ShapePreset, ShapeQuickStyle, ShortcutReferenceItem, SlideAlignment, SlideSectionGroup, SlideTransitionOption, StrokeDashOption, SupportedShapeType, TableCellEditorState, ThemeSwitchingResult, ToolbarSection, UseCollaborativeHistoryResult, UseCollaborativeStateInput, UsePresenceTrackingResult, UseThemeSwitchingInput, UserAvatarBarProps, UserPresence, ViewerMode };
|