pptx-react-viewer 1.1.5 → 1.1.6
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/dist/index.js +353 -63
- package/dist/index.mjs +354 -64
- package/dist/viewer/index.js +353 -63
- package/dist/viewer/index.mjs +354 -64
- package/node_modules/emf-converter/package.json +1 -1
- package/node_modules/mtx-decompressor/package.json +1 -1
- package/node_modules/pptx-viewer-core/dist/{SvgExporter-BQ4KbRO9.d.mts → SvgExporter-BTkk4oNQ.d.mts} +1 -1
- package/node_modules/pptx-viewer-core/dist/{SvgExporter-0TxiiorD.d.ts → SvgExporter-CTDG-t_z.d.ts} +1 -1
- package/node_modules/pptx-viewer-core/dist/cli/index.d.mts +2 -2
- package/node_modules/pptx-viewer-core/dist/cli/index.d.ts +2 -2
- package/node_modules/pptx-viewer-core/dist/cli/index.js +0 -0
- package/node_modules/pptx-viewer-core/dist/cli/index.mjs +0 -0
- package/node_modules/pptx-viewer-core/dist/converter/index.d.mts +3 -3
- package/node_modules/pptx-viewer-core/dist/converter/index.d.ts +3 -3
- package/node_modules/pptx-viewer-core/dist/converter/index.js +0 -0
- package/node_modules/pptx-viewer-core/dist/converter/index.mjs +0 -0
- package/node_modules/pptx-viewer-core/dist/index.d.mts +867 -49
- package/node_modules/pptx-viewer-core/dist/index.d.ts +867 -49
- package/node_modules/pptx-viewer-core/dist/index.js +29459 -16809
- package/node_modules/pptx-viewer-core/dist/index.mjs +29443 -16809
- package/node_modules/pptx-viewer-core/dist/{presentation-ArhfImJ5.d.mts → presentation-4fhI3din.d.mts} +835 -26
- package/node_modules/pptx-viewer-core/dist/{presentation-ArhfImJ5.d.ts → presentation-4fhI3din.d.ts} +835 -26
- package/node_modules/pptx-viewer-core/dist/{text-operations-rhJV-A_W.d.ts → text-operations-B9EwbptL.d.ts} +1 -1
- package/node_modules/pptx-viewer-core/dist/{text-operations-CLj-sJyk.d.mts → text-operations-C89Jn6S0.d.mts} +1 -1
- package/node_modules/pptx-viewer-core/package.json +1 -1
- package/package.json +4 -4
package/node_modules/pptx-viewer-core/dist/{presentation-ArhfImJ5.d.ts → presentation-4fhI3din.d.ts}
RENAMED
|
@@ -191,7 +191,7 @@ type BevelPresetType = 'circle' | 'relaxedInset' | 'cross' | 'coolSlant' | 'angl
|
|
|
191
191
|
* // => "plastic" — one of: "matte" | "warmMatte" | "plastic" | "metal" | "dkEdge" | …
|
|
192
192
|
* ```
|
|
193
193
|
*/
|
|
194
|
-
type MaterialPresetType = 'matte' | 'warmMatte' | 'plastic' | 'metal' | 'dkEdge' | 'softEdge' | 'flat' | 'softmetal' | 'clear' | 'powder' | 'translucentPowder';
|
|
194
|
+
type MaterialPresetType = 'matte' | 'warmMatte' | 'plastic' | 'metal' | 'dkEdge' | 'softEdge' | 'flat' | 'softmetal' | 'clear' | 'powder' | 'translucentPowder' | 'legacyMatte' | 'legacyPlastic' | 'legacyMetal' | 'legacyWireframe';
|
|
195
195
|
/**
|
|
196
196
|
* 3D text body extrusion/bevel from `a:bodyPr/a:sp3d`.
|
|
197
197
|
*
|
|
@@ -381,6 +381,38 @@ interface TextStyle {
|
|
|
381
381
|
underlineStyle?: UnderlineStyle;
|
|
382
382
|
/** Underline colour as hex string (`a:uFill` / `a:uLn`). When absent, inherits text colour. */
|
|
383
383
|
underlineColor?: string;
|
|
384
|
+
/**
|
|
385
|
+
* When true, the source authored `<a:u val="none"/>` to explicitly suppress
|
|
386
|
+
* underline (rather than omitting the attribute entirely). Preserved so the
|
|
387
|
+
* writer can re-emit the explicit `none` token instead of dropping it.
|
|
388
|
+
*/
|
|
389
|
+
underlineExplicitNone?: boolean;
|
|
390
|
+
/**
|
|
391
|
+
* Underline line properties parsed from `<a:rPr><a:uLn>` — width, dash
|
|
392
|
+
* preset, and end caps. Captured as a typed object so the writer can
|
|
393
|
+
* round-trip the line styling that previously was dropped (only the
|
|
394
|
+
* solidFill colour was carried before).
|
|
395
|
+
*/
|
|
396
|
+
underlineLine?: {
|
|
397
|
+
/** Line width in EMU (raw OOXML) for `a:uLn/@w`. */
|
|
398
|
+
widthEmu?: number;
|
|
399
|
+
/** Compound line type (`a:uLn/@cmpd`). */
|
|
400
|
+
compound?: string;
|
|
401
|
+
/** Cap style (`a:uLn/@cap`). */
|
|
402
|
+
cap?: string;
|
|
403
|
+
/** Pen alignment (`a:uLn/@algn`). */
|
|
404
|
+
algn?: string;
|
|
405
|
+
/** Preset dash value (`a:uLn/a:prstDash/@val`). */
|
|
406
|
+
prstDash?: string;
|
|
407
|
+
/** Raw `a:uLn/a:headEnd` XML preserved verbatim. */
|
|
408
|
+
headEndXml?: XmlObject;
|
|
409
|
+
/** Raw `a:uLn/a:tailEnd` XML preserved verbatim. */
|
|
410
|
+
tailEndXml?: XmlObject;
|
|
411
|
+
};
|
|
412
|
+
/** When `<a:uLnTx/>` is present — underline line follows the text run line. */
|
|
413
|
+
underlineLineFollowsText?: boolean;
|
|
414
|
+
/** When `<a:uFillTx/>` is present — underline fill follows the text run fill. */
|
|
415
|
+
underlineFillFollowsText?: boolean;
|
|
384
416
|
strikethrough?: boolean;
|
|
385
417
|
/** Specific strike type: single or double from `a:rPr/@strike`. */
|
|
386
418
|
strikeType?: 'sngStrike' | 'dblStrike';
|
|
@@ -497,6 +529,12 @@ interface TextStyle {
|
|
|
497
529
|
textWarpAdj2?: number;
|
|
498
530
|
/** Text capitalization style from `a:rPr/@cap`. */
|
|
499
531
|
textCaps?: 'all' | 'small' | 'none';
|
|
532
|
+
/**
|
|
533
|
+
* When true, the source authored `<a:rPr cap="none"/>` explicitly. This
|
|
534
|
+
* differs from {@link textCaps} = `"none"` only because the writer must
|
|
535
|
+
* preserve the explicit token rather than collapse it to omission.
|
|
536
|
+
*/
|
|
537
|
+
textCapsExplicitNone?: boolean;
|
|
500
538
|
/** Symbol font family from `a:sym`. */
|
|
501
539
|
symbolFont?: string;
|
|
502
540
|
/** East Asian font family from `a:ea`. */
|
|
@@ -591,6 +629,14 @@ interface TextStyle {
|
|
|
591
629
|
upright?: boolean;
|
|
592
630
|
/** Compatible line spacing flag (`a:bodyPr/@compatLnSpc`). */
|
|
593
631
|
compatibleLineSpacing?: boolean;
|
|
632
|
+
/**
|
|
633
|
+
* Text body rotation in **degrees** (`a:bodyPr/@rot`).
|
|
634
|
+
*
|
|
635
|
+
* OOXML stores the value as 60000ths of a degree. Positive values rotate
|
|
636
|
+
* the body clockwise. When undefined, the attribute is omitted on save
|
|
637
|
+
* (PowerPoint treats absent `rot` as inherit/none).
|
|
638
|
+
*/
|
|
639
|
+
textBodyRotation?: number;
|
|
594
640
|
/** Text shadow colour as hex string (`a:outerShdw`). */
|
|
595
641
|
textShadowColor?: string;
|
|
596
642
|
/** Text shadow blur radius in px. */
|
|
@@ -662,6 +708,33 @@ interface TextStyle {
|
|
|
662
708
|
text3d?: Text3DStyle;
|
|
663
709
|
/** 3D scene (camera + light rig) settings on the text body (`a:bodyPr/a:scene3d`). */
|
|
664
710
|
textBodyScene3d?: Pptx3DScene;
|
|
711
|
+
/**
|
|
712
|
+
* Raw `<a:extLst>` subtree captured from `<a:bodyPr>`. Preserved verbatim so
|
|
713
|
+
* authored extensions (e.g. content placeholders, custom application data)
|
|
714
|
+
* survive a round-trip even though the engine doesn't interpret them.
|
|
715
|
+
*/
|
|
716
|
+
bodyPropertiesExtLstXml?: XmlObject;
|
|
717
|
+
/**
|
|
718
|
+
* Raw `<a:extLst>` subtree captured from `<a:pPr>`. Only meaningful on the
|
|
719
|
+
* paragraph-level style (paragraphs propagate this via the first segment).
|
|
720
|
+
*/
|
|
721
|
+
paragraphPropertiesExtLstXml?: XmlObject;
|
|
722
|
+
/**
|
|
723
|
+
* Raw `<a:extLst>` subtree captured from `<a:rPr>`. Persisted verbatim on
|
|
724
|
+
* save when present — covers run-level extensions the typed model doesn't
|
|
725
|
+
* model (e.g. `a14:hiddenFill` and similar).
|
|
726
|
+
*/
|
|
727
|
+
runPropertiesExtLstXml?: XmlObject;
|
|
728
|
+
/**
|
|
729
|
+
* Raw `<a:defRPr>` XML node captured from `<a:pPr>`. The schema permits
|
|
730
|
+
* `defRPr` directly inside `pPr` so that paragraph defaults can specify the
|
|
731
|
+
* end-paragraph run formatting; previously this was dropped on save. We
|
|
732
|
+
* persist the parsed XML object so it round-trips verbatim.
|
|
733
|
+
*
|
|
734
|
+
* Only meaningful on the *first* segment of each paragraph (matches the
|
|
735
|
+
* convention used for {@link bulletInfo} / {@link endParaRunProperties}).
|
|
736
|
+
*/
|
|
737
|
+
paragraphDefaultRunPropertiesXml?: XmlObject;
|
|
665
738
|
}
|
|
666
739
|
/**
|
|
667
740
|
* Structured bullet metadata attached to the first {@link TextSegment}
|
|
@@ -702,12 +775,26 @@ interface BulletInfo {
|
|
|
702
775
|
sizePts?: number;
|
|
703
776
|
/** Bullet color as hex string from `a:buClr`. */
|
|
704
777
|
color?: string;
|
|
778
|
+
/**
|
|
779
|
+
* Raw colour-choice XML captured from `<a:buClr>` so that themed bullets
|
|
780
|
+
* (`a:schemeClr`, `a:sysClr`, `a:prstClr`) round-trip with their original
|
|
781
|
+
* identity rather than being flattened to `<a:srgbClr/>` on save.
|
|
782
|
+
*/
|
|
783
|
+
colorXml?: XmlObject;
|
|
705
784
|
/** True when `a:buNone` explicitly suppresses bullets. */
|
|
706
785
|
none?: boolean;
|
|
707
786
|
/** Picture bullet: relationship ID from `a:buBlip` → `a:blip[@r:embed]`. */
|
|
708
787
|
imageRelId?: string;
|
|
709
788
|
/** Picture bullet: data URL of the embedded image. */
|
|
710
789
|
imageDataUrl?: string;
|
|
790
|
+
/**
|
|
791
|
+
* Raw `<a:buBlip>` XML captured at parse time. Carries the full blipFill
|
|
792
|
+
* subtree (`a:tile`, `a:stretch`, `a:srcRect`, `a:blip > a:extLst`) so the
|
|
793
|
+
* writer can emit the complete original definition rather than the bare
|
|
794
|
+
* `a:blip[@r:embed]` mapping. When set, the writer prefers it over
|
|
795
|
+
* {@link imageRelId} for emission.
|
|
796
|
+
*/
|
|
797
|
+
imageBlipFillXml?: XmlObject;
|
|
711
798
|
/** When true, `<a:buFontTx/>` was specified — inherit the bullet font from
|
|
712
799
|
* the run text, not from a buFont declaration. */
|
|
713
800
|
fontInherit?: boolean;
|
|
@@ -743,6 +830,20 @@ interface TextSegment {
|
|
|
743
830
|
fieldType?: string;
|
|
744
831
|
/** When this segment originated from an `a:fld` element, stores the field GUID. */
|
|
745
832
|
fieldGuid?: string;
|
|
833
|
+
/**
|
|
834
|
+
* Original attribute name used to author the field GUID — `'uuid'` for the
|
|
835
|
+
* `a:fld/@uuid` form authored by some legacy producers, `'id'` for the
|
|
836
|
+
* canonical `a:fld/@id` form. Preserved so the writer round-trips whichever
|
|
837
|
+
* spelling the source used (PowerPoint accepts both). Defaults to `'id'`
|
|
838
|
+
* on save when undefined.
|
|
839
|
+
*/
|
|
840
|
+
fieldGuidAttr?: 'uuid' | 'id';
|
|
841
|
+
/**
|
|
842
|
+
* Raw per-field paragraph properties (`a:fld > a:pPr`). The schema permits
|
|
843
|
+
* `pPr` inside an `a:fld` so the field can carry its own paragraph-level
|
|
844
|
+
* formatting; preserved verbatim on save when present.
|
|
845
|
+
*/
|
|
846
|
+
fieldParagraphPropertiesXml?: XmlObject;
|
|
746
847
|
/** Raw OMML XML node for equation segments (from `a14:m` / `m:oMathPara`). */
|
|
747
848
|
equationXml?: Record<string, unknown>;
|
|
748
849
|
/**
|
|
@@ -752,6 +853,21 @@ interface TextSegment {
|
|
|
752
853
|
equationNumber?: string;
|
|
753
854
|
/** Whether this segment represents a paragraph break rather than renderable text. */
|
|
754
855
|
isParagraphBreak?: boolean;
|
|
856
|
+
/**
|
|
857
|
+
* Whether this segment represents a soft line break (`a:br`) rather than
|
|
858
|
+
* a paragraph terminator. Soft line breaks remain inside the same paragraph
|
|
859
|
+
* but force a line wrap and may carry their own run properties.
|
|
860
|
+
*
|
|
861
|
+
* The renderer should treat the segment text as `"\n"` when present.
|
|
862
|
+
*/
|
|
863
|
+
isLineBreak?: true;
|
|
864
|
+
/**
|
|
865
|
+
* Raw `a:rPr` XML for an `a:br` (soft line break) segment, captured verbatim
|
|
866
|
+
* during parse so the writer can re-emit attributes/colours/fonts that the
|
|
867
|
+
* typed model doesn't represent. Only meaningful when {@link isLineBreak}
|
|
868
|
+
* is `true`.
|
|
869
|
+
*/
|
|
870
|
+
breakRunProperties?: Record<string, unknown>;
|
|
755
871
|
/** Structured bullet info for the first segment of a paragraph. */
|
|
756
872
|
bulletInfo?: BulletInfo;
|
|
757
873
|
/**
|
|
@@ -924,6 +1040,8 @@ interface ShapeStyle {
|
|
|
924
1040
|
lineCap?: 'flat' | 'rnd' | 'sq';
|
|
925
1041
|
/** Compound line type (`a:ln/@cmpd`). */
|
|
926
1042
|
compoundLine?: 'sng' | 'dbl' | 'thickThin' | 'thinThick' | 'tri';
|
|
1043
|
+
/** Pen line alignment (`a:ln/@algn`): `ctr` (centre, default) or `in` (inside). */
|
|
1044
|
+
lineAlignment?: 'ctr' | 'in';
|
|
927
1045
|
shadowColor?: string;
|
|
928
1046
|
shadowBlur?: number;
|
|
929
1047
|
shadowOffsetX?: number;
|
|
@@ -1091,6 +1209,101 @@ interface ShapeStyle {
|
|
|
1091
1209
|
*
|
|
1092
1210
|
* @module pptx-types/image
|
|
1093
1211
|
*/
|
|
1212
|
+
/**
|
|
1213
|
+
* Blend mode for `a:blend` container nodes inside an `a:effectDag` (CT_BlendEffect).
|
|
1214
|
+
*
|
|
1215
|
+
* Per ECMA-376 §20.1.8.10, valid values are: `darken`, `lighten`, `mult`,
|
|
1216
|
+
* `over`, `screen`.
|
|
1217
|
+
*/
|
|
1218
|
+
type EffectDagBlendMode = 'darken' | 'lighten' | 'mult' | 'over' | 'screen';
|
|
1219
|
+
/**
|
|
1220
|
+
* Container node kind inside an `a:effectDag` (CT_EffectContainer @type).
|
|
1221
|
+
*
|
|
1222
|
+
* Per ECMA-376 §20.1.8.20, `sib` (sibling) draws each child independently
|
|
1223
|
+
* over the same source; `tree` (tree) chains effects so each sees the output
|
|
1224
|
+
* of its siblings.
|
|
1225
|
+
*/
|
|
1226
|
+
type EffectDagContainerType = 'sib' | 'tree';
|
|
1227
|
+
/**
|
|
1228
|
+
* Typed model of the directed-acyclic effect graph stored in `a:effectDag`.
|
|
1229
|
+
*
|
|
1230
|
+
* The four "structural" container/transform nodes are typed; any other inner
|
|
1231
|
+
* effect (e.g. `a:outerShdw`, `a:glow`, `a:alphaInv`) is preserved verbatim
|
|
1232
|
+
* as a raw XML object via the {@link EffectDagRawLeaf} variant so we never
|
|
1233
|
+
* have to recurse into the full effect taxonomy.
|
|
1234
|
+
*
|
|
1235
|
+
* @example
|
|
1236
|
+
* ```ts
|
|
1237
|
+
* // <a:effectDag>
|
|
1238
|
+
* // <a:cont type="sib">
|
|
1239
|
+
* // <a:blend blend="mult"><a:cont type="tree" /></a:blend>
|
|
1240
|
+
* // </a:cont>
|
|
1241
|
+
* // </a:effectDag>
|
|
1242
|
+
* const dag: EffectDagContainer = {
|
|
1243
|
+
* kind: "cont",
|
|
1244
|
+
* type: "sib",
|
|
1245
|
+
* children: [{
|
|
1246
|
+
* kind: "blend",
|
|
1247
|
+
* mode: "mult",
|
|
1248
|
+
* container: { kind: "cont", type: "tree", children: [] },
|
|
1249
|
+
* }],
|
|
1250
|
+
* };
|
|
1251
|
+
* ```
|
|
1252
|
+
*/
|
|
1253
|
+
type EffectDagNode = EffectDagContainer | EffectDagBlend | EffectDagXfrm | EffectDagRelOff | EffectDagRawLeaf;
|
|
1254
|
+
/** `a:cont` — CT_EffectContainer. Recursive; mirrors the top-level `effectDag`. */
|
|
1255
|
+
interface EffectDagContainer {
|
|
1256
|
+
kind: 'cont';
|
|
1257
|
+
/** `@type` — `sib` or `tree`. */
|
|
1258
|
+
type: EffectDagContainerType;
|
|
1259
|
+
/** Optional `@name` attribute. */
|
|
1260
|
+
name?: string;
|
|
1261
|
+
/** Ordered children. */
|
|
1262
|
+
children: EffectDagNode[];
|
|
1263
|
+
}
|
|
1264
|
+
/** `a:blend` — CT_BlendEffect. Always wraps a single `a:cont` child. */
|
|
1265
|
+
interface EffectDagBlend {
|
|
1266
|
+
kind: 'blend';
|
|
1267
|
+
/** `@blend` attribute. */
|
|
1268
|
+
mode: EffectDagBlendMode;
|
|
1269
|
+
/** Required child `a:cont` container. */
|
|
1270
|
+
container: EffectDagContainer;
|
|
1271
|
+
}
|
|
1272
|
+
/** `a:xfrmEffect` — CT_TransformEffect. Affine transform with no children. */
|
|
1273
|
+
interface EffectDagXfrm {
|
|
1274
|
+
kind: 'xfrmEffect';
|
|
1275
|
+
/** Horizontal scale, percentage * 1000 (e.g. 100000 = 100%). */
|
|
1276
|
+
sx?: number;
|
|
1277
|
+
/** Vertical scale, percentage * 1000. */
|
|
1278
|
+
sy?: number;
|
|
1279
|
+
/** Horizontal skew, degrees * 60000. */
|
|
1280
|
+
kx?: number;
|
|
1281
|
+
/** Vertical skew, degrees * 60000. */
|
|
1282
|
+
ky?: number;
|
|
1283
|
+
/** Horizontal translation in EMU. */
|
|
1284
|
+
tx?: number;
|
|
1285
|
+
/** Vertical translation in EMU. */
|
|
1286
|
+
ty?: number;
|
|
1287
|
+
}
|
|
1288
|
+
/** `a:relOff` — CT_RelativeOffsetEffect. Relative offset in 1000ths of a percent. */
|
|
1289
|
+
interface EffectDagRelOff {
|
|
1290
|
+
kind: 'relOff';
|
|
1291
|
+
/** Horizontal offset, percentage * 1000. */
|
|
1292
|
+
tx?: number;
|
|
1293
|
+
/** Vertical offset, percentage * 1000. */
|
|
1294
|
+
ty?: number;
|
|
1295
|
+
}
|
|
1296
|
+
/**
|
|
1297
|
+
* Catch-all leaf preserving any non-container effect (e.g. `a:outerShdw`,
|
|
1298
|
+
* `a:glow`, `a:alphaInv`) as raw XML. Re-emitted verbatim on save.
|
|
1299
|
+
*/
|
|
1300
|
+
interface EffectDagRawLeaf {
|
|
1301
|
+
kind: 'raw';
|
|
1302
|
+
/** Local element name without the `a:` prefix (e.g. `outerShdw`, `glow`). */
|
|
1303
|
+
tag: string;
|
|
1304
|
+
/** Raw XML object captured at load — preserved verbatim on save. */
|
|
1305
|
+
xml: Record<string, unknown>;
|
|
1306
|
+
}
|
|
1094
1307
|
/**
|
|
1095
1308
|
* Image recolour/adjustment properties parsed from blip extensions.
|
|
1096
1309
|
*
|
|
@@ -1141,6 +1354,71 @@ interface PptxImageEffects {
|
|
|
1141
1354
|
/** Whether the target colour is fully transparent (alpha = 0). */
|
|
1142
1355
|
clrToTransparent?: boolean;
|
|
1143
1356
|
};
|
|
1357
|
+
/**
|
|
1358
|
+
* Alpha inverse effect (`a:alphaInv`). Inverts the alpha channel; an optional
|
|
1359
|
+
* colour child shifts the inversion baseline.
|
|
1360
|
+
*/
|
|
1361
|
+
alphaInv?: {
|
|
1362
|
+
/** Optional baseline colour (hex). */
|
|
1363
|
+
color?: string;
|
|
1364
|
+
};
|
|
1365
|
+
/** Alpha ceiling (`a:alphaCeiling`) — clamps any non-zero alpha to fully opaque. Boolean flag. */
|
|
1366
|
+
alphaCeiling?: boolean;
|
|
1367
|
+
/** Alpha floor (`a:alphaFloor`) — clamps any non-fully-opaque alpha to fully transparent. Boolean flag. */
|
|
1368
|
+
alphaFloor?: boolean;
|
|
1369
|
+
/**
|
|
1370
|
+
* Alpha modulate (`a:alphaMod`). The schema requires a single `cont` (effect
|
|
1371
|
+
* container) child; we preserve the inner XML opaquely for round-trip.
|
|
1372
|
+
*/
|
|
1373
|
+
alphaMod?: {
|
|
1374
|
+
/** Raw opaque XML for the `a:cont` child to preserve on save. */
|
|
1375
|
+
contRawXml?: Record<string, unknown>;
|
|
1376
|
+
};
|
|
1377
|
+
/** Alpha replace (`a:alphaRepl`) — replaces alpha with the given fixed-percent value (0..100). */
|
|
1378
|
+
alphaRepl?: number;
|
|
1379
|
+
/** Alpha bi-level (`a:alphaBiLevel`) — threshold (0..100) above which alpha becomes fully opaque. */
|
|
1380
|
+
alphaBiLevel?: number;
|
|
1381
|
+
/**
|
|
1382
|
+
* Colour replace (`a:clrRepl`) — replaces all colour information in an image
|
|
1383
|
+
* with the given solid colour. Stores the raw colour child to preserve scheme
|
|
1384
|
+
* colour references and modifiers.
|
|
1385
|
+
*/
|
|
1386
|
+
clrRepl?: {
|
|
1387
|
+
/** Resolved hex colour. */
|
|
1388
|
+
color: string;
|
|
1389
|
+
/** Raw opaque colour XML for round-trip. */
|
|
1390
|
+
rawXml?: Record<string, unknown>;
|
|
1391
|
+
};
|
|
1392
|
+
/** Luminance modulation (`a:lum`) — bright/contrast as fixed percentages (0..100). */
|
|
1393
|
+
lum?: {
|
|
1394
|
+
bright?: number;
|
|
1395
|
+
contrast?: number;
|
|
1396
|
+
};
|
|
1397
|
+
/** HSL modulation (`a:hsl`) — hue (0..360 degrees), saturation/luminance (-100..100). */
|
|
1398
|
+
hsl?: {
|
|
1399
|
+
hue?: number;
|
|
1400
|
+
sat?: number;
|
|
1401
|
+
lum?: number;
|
|
1402
|
+
};
|
|
1403
|
+
/** Image-effect tint (`a:tint` inside blip) — hue (0..360), amount (-100..100). */
|
|
1404
|
+
tint?: {
|
|
1405
|
+
hue?: number;
|
|
1406
|
+
amt?: number;
|
|
1407
|
+
};
|
|
1408
|
+
/**
|
|
1409
|
+
* Fill overlay (`a:fillOverlay`) — overlays a fill on top of the blip.
|
|
1410
|
+
* Stores blend mode and the raw inner fill XML for round-trip.
|
|
1411
|
+
*/
|
|
1412
|
+
fillOverlay?: {
|
|
1413
|
+
blend: 'over' | 'mult' | 'screen' | 'darken' | 'lighten';
|
|
1414
|
+
/** Raw opaque fill XML preserved for round-trip. */
|
|
1415
|
+
fillRawXml?: Record<string, unknown>;
|
|
1416
|
+
};
|
|
1417
|
+
/** Blur (`a:blur`) — radius in EMU and grow flag. */
|
|
1418
|
+
blur?: {
|
|
1419
|
+
rad?: number;
|
|
1420
|
+
grow?: boolean;
|
|
1421
|
+
};
|
|
1144
1422
|
}
|
|
1145
1423
|
/**
|
|
1146
1424
|
* Shape names used for crop-to-shape (CSS `clip-path` equivalent).
|
|
@@ -1205,6 +1483,36 @@ interface PptxImageProperties {
|
|
|
1205
1483
|
/** Crop-to-shape — CSS clip-path shape name. */
|
|
1206
1484
|
cropShape?: PptxCropShape;
|
|
1207
1485
|
}
|
|
1486
|
+
declare module './text' {
|
|
1487
|
+
interface TextStyle {
|
|
1488
|
+
/**
|
|
1489
|
+
* Raw `a:effectDag` XML node from `a:rPr`, preserved verbatim for
|
|
1490
|
+
* round-trip serialisation. Mirrors the shape-level
|
|
1491
|
+
* {@link import('./shape-style').ShapeStyle.effectDagXml} field.
|
|
1492
|
+
*/
|
|
1493
|
+
textEffectDagXml?: XmlObject;
|
|
1494
|
+
/**
|
|
1495
|
+
* Typed effect graph parsed from `textEffectDagXml`. The four structural
|
|
1496
|
+
* container nodes (`a:cont`, `a:blend`, `a:xfrmEffect`, `a:relOff`) are
|
|
1497
|
+
* fully typed; any other leaf effect is captured as
|
|
1498
|
+
* {@link EffectDagRawLeaf} so we never have to recurse into the full
|
|
1499
|
+
* effect taxonomy.
|
|
1500
|
+
*/
|
|
1501
|
+
textEffectDagTree?: EffectDagContainer;
|
|
1502
|
+
}
|
|
1503
|
+
}
|
|
1504
|
+
declare module './shape-style' {
|
|
1505
|
+
interface ShapeStyle {
|
|
1506
|
+
/**
|
|
1507
|
+
* Typed effect graph parsed from {@link ShapeStyle.effectDagXml}. The four
|
|
1508
|
+
* structural container nodes (`a:cont`, `a:blend`, `a:xfrmEffect`,
|
|
1509
|
+
* `a:relOff`) are fully typed; any other leaf effect (e.g. `a:outerShdw`,
|
|
1510
|
+
* `a:glow`, `a:alphaInv`) is captured as {@link EffectDagRawLeaf} so we
|
|
1511
|
+
* never have to recurse into the full effect taxonomy.
|
|
1512
|
+
*/
|
|
1513
|
+
effectDagTree?: EffectDagContainer;
|
|
1514
|
+
}
|
|
1515
|
+
}
|
|
1208
1516
|
|
|
1209
1517
|
/**
|
|
1210
1518
|
* Geometry types: adjustment handles, custom geometry points, segments,
|
|
@@ -1341,6 +1649,112 @@ interface CustomGeometryRawData {
|
|
|
1341
1649
|
/** Raw `a:rect` XML content (text rectangle). */
|
|
1342
1650
|
rectXml?: unknown;
|
|
1343
1651
|
}
|
|
1652
|
+
/**
|
|
1653
|
+
* XY-style adjustment handle (`a:ahXY`) on a custom geometry.
|
|
1654
|
+
*
|
|
1655
|
+
* Allows interactive editing of one or two guide values constrained to a
|
|
1656
|
+
* rectangular range. Coordinates are formula references (e.g. `"adj1"`,
|
|
1657
|
+
* `"w/2"`, `"0"`) preserved verbatim so they can re-emit unchanged.
|
|
1658
|
+
*
|
|
1659
|
+
* @example
|
|
1660
|
+
* ```ts
|
|
1661
|
+
* const handle: AdjustHandleXY = {
|
|
1662
|
+
* gdRefX: "adj1",
|
|
1663
|
+
* minX: "0",
|
|
1664
|
+
* maxX: "w",
|
|
1665
|
+
* posX: "adj1",
|
|
1666
|
+
* posY: "h/2",
|
|
1667
|
+
* };
|
|
1668
|
+
* // => satisfies AdjustHandleXY
|
|
1669
|
+
* ```
|
|
1670
|
+
*/
|
|
1671
|
+
interface AdjustHandleXY {
|
|
1672
|
+
/** Guide reference for the X axis (`@_gdRefX`). */
|
|
1673
|
+
gdRefX?: string;
|
|
1674
|
+
/** Guide reference for the Y axis (`@_gdRefY`). */
|
|
1675
|
+
gdRefY?: string;
|
|
1676
|
+
/** Minimum X value, as a formula reference (`@_minX`). */
|
|
1677
|
+
minX?: string;
|
|
1678
|
+
/** Maximum X value (`@_maxX`). */
|
|
1679
|
+
maxX?: string;
|
|
1680
|
+
/** Minimum Y value (`@_minY`). */
|
|
1681
|
+
minY?: string;
|
|
1682
|
+
/** Maximum Y value (`@_maxY`). */
|
|
1683
|
+
maxY?: string;
|
|
1684
|
+
/** Handle position X (formula or literal) from `a:pos/@_x`. */
|
|
1685
|
+
posX?: string;
|
|
1686
|
+
/** Handle position Y from `a:pos/@_y`. */
|
|
1687
|
+
posY?: string;
|
|
1688
|
+
}
|
|
1689
|
+
/**
|
|
1690
|
+
* Polar-style adjustment handle (`a:ahPolar`) on a custom geometry.
|
|
1691
|
+
*
|
|
1692
|
+
* Drives a guide via radial distance and angle rather than XY coordinates.
|
|
1693
|
+
*
|
|
1694
|
+
* @example
|
|
1695
|
+
* ```ts
|
|
1696
|
+
* const handle: AdjustHandlePolar = {
|
|
1697
|
+
* gdRefR: "adj1",
|
|
1698
|
+
* gdRefAng: "adj2",
|
|
1699
|
+
* posX: "wd2",
|
|
1700
|
+
* posY: "hd2",
|
|
1701
|
+
* };
|
|
1702
|
+
* // => satisfies AdjustHandlePolar
|
|
1703
|
+
* ```
|
|
1704
|
+
*/
|
|
1705
|
+
interface AdjustHandlePolar {
|
|
1706
|
+
/** Guide reference for the radial distance (`@_gdRefR`). */
|
|
1707
|
+
gdRefR?: string;
|
|
1708
|
+
/** Guide reference for the angle (`@_gdRefAng`). */
|
|
1709
|
+
gdRefAng?: string;
|
|
1710
|
+
/** Minimum radial value (`@_minR`). */
|
|
1711
|
+
minR?: string;
|
|
1712
|
+
/** Maximum radial value (`@_maxR`). */
|
|
1713
|
+
maxR?: string;
|
|
1714
|
+
/** Minimum angle (`@_minAng`). */
|
|
1715
|
+
minAng?: string;
|
|
1716
|
+
/** Maximum angle (`@_maxAng`). */
|
|
1717
|
+
maxAng?: string;
|
|
1718
|
+
/** Handle position X from `a:pos/@_x`. */
|
|
1719
|
+
posX?: string;
|
|
1720
|
+
/** Handle position Y from `a:pos/@_y`. */
|
|
1721
|
+
posY?: string;
|
|
1722
|
+
}
|
|
1723
|
+
/**
|
|
1724
|
+
* Connection site (`a:cxn`) on a custom geometry.
|
|
1725
|
+
*
|
|
1726
|
+
* Defines a point on a custom shape that connectors may snap to.
|
|
1727
|
+
*
|
|
1728
|
+
* @example
|
|
1729
|
+
* ```ts
|
|
1730
|
+
* const cxn: ConnectionSite = { ang: "0", posX: "0", posY: "hd2" };
|
|
1731
|
+
* // => satisfies ConnectionSite
|
|
1732
|
+
* ```
|
|
1733
|
+
*/
|
|
1734
|
+
interface ConnectionSite {
|
|
1735
|
+
/** Approach angle (`@_ang`) — formula or literal degree-1/60000 value. */
|
|
1736
|
+
ang?: string;
|
|
1737
|
+
/** Site position X from `a:pos/@_x`. */
|
|
1738
|
+
posX?: string;
|
|
1739
|
+
/** Site position Y from `a:pos/@_y`. */
|
|
1740
|
+
posY?: string;
|
|
1741
|
+
}
|
|
1742
|
+
/**
|
|
1743
|
+
* Typed text rectangle (`a:rect`) on a custom geometry.
|
|
1744
|
+
*
|
|
1745
|
+
* Each edge is the formula or literal string preserved from the source XML
|
|
1746
|
+
* (`"l"`, `"t"`, `"r"`, `"b"`, or any guide name / formula).
|
|
1747
|
+
*/
|
|
1748
|
+
interface CustomGeometryTextRect {
|
|
1749
|
+
/** Left edge formula reference (`@_l`). */
|
|
1750
|
+
l?: string;
|
|
1751
|
+
/** Top edge (`@_t`). */
|
|
1752
|
+
t?: string;
|
|
1753
|
+
/** Right edge (`@_r`). */
|
|
1754
|
+
r?: string;
|
|
1755
|
+
/** Bottom edge (`@_b`). */
|
|
1756
|
+
b?: string;
|
|
1757
|
+
}
|
|
1344
1758
|
/**
|
|
1345
1759
|
* Custom (non-preset) geometry path — only on shapes and pictures.
|
|
1346
1760
|
*
|
|
@@ -1368,6 +1782,25 @@ interface PptxCustomPathProperties {
|
|
|
1368
1782
|
customGeometryPaths?: CustomGeometryPath[];
|
|
1369
1783
|
/** Raw a:gdLst/a:ahLst/a:cxnLst/a:rect XML preserved for round-trip serialization. */
|
|
1370
1784
|
customGeometryRawData?: CustomGeometryRawData;
|
|
1785
|
+
/**
|
|
1786
|
+
* Typed XY adjustment handles parsed from `a:custGeom/a:ahLst/a:ahXY`.
|
|
1787
|
+
* SDK-built shapes can populate this and the writer will emit `<a:ahXY>` entries
|
|
1788
|
+
* even when no raw XML was preserved.
|
|
1789
|
+
*/
|
|
1790
|
+
customGeometryAdjustHandlesXY?: AdjustHandleXY[];
|
|
1791
|
+
/**
|
|
1792
|
+
* Typed polar adjustment handles parsed from `a:custGeom/a:ahLst/a:ahPolar`.
|
|
1793
|
+
*/
|
|
1794
|
+
customGeometryAdjustHandlesPolar?: AdjustHandlePolar[];
|
|
1795
|
+
/**
|
|
1796
|
+
* Typed connection sites parsed from `a:custGeom/a:cxnLst/a:cxn`.
|
|
1797
|
+
*/
|
|
1798
|
+
customGeometryConnectionSites?: ConnectionSite[];
|
|
1799
|
+
/**
|
|
1800
|
+
* Typed text rectangle parsed from `a:custGeom/a:rect`. When present this is
|
|
1801
|
+
* preferred over {@link customGeometryRawData}'s `rectXml` on save.
|
|
1802
|
+
*/
|
|
1803
|
+
customGeometryTextRect?: CustomGeometryTextRect;
|
|
1371
1804
|
}
|
|
1372
1805
|
|
|
1373
1806
|
/**
|
|
@@ -1385,7 +1818,7 @@ interface PptxCustomPathProperties {
|
|
|
1385
1818
|
* // => "bar" — one of: "bar" | "line" | "pie" | "doughnut" | "area" | "scatter" | …
|
|
1386
1819
|
* ```
|
|
1387
1820
|
*/
|
|
1388
|
-
type PptxChartType = 'bar' | 'line' | 'pie' | 'doughnut' | 'area' | 'scatter' | 'bubble' | 'radar' | 'stock' | 'bar3D' | 'line3D' | 'pie3D' | 'area3D' | 'surface' | 'histogram' | 'waterfall' | 'funnel' | 'treemap' | 'sunburst' | 'boxWhisker' | 'regionMap' | 'combo' | 'unknown';
|
|
1821
|
+
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';
|
|
1389
1822
|
/**
|
|
1390
1823
|
* Supported trendline regression types.
|
|
1391
1824
|
*
|
|
@@ -1666,6 +2099,69 @@ interface PptxExternalData {
|
|
|
1666
2099
|
/** Raw binary data of the embedded xlsx workbook (from ppt/embeddings/). */
|
|
1667
2100
|
embeddedWorkbookData?: Uint8Array;
|
|
1668
2101
|
}
|
|
2102
|
+
/**
|
|
2103
|
+
* Options specific to the OOXML "Pie of Pie" / "Bar of Pie" chart
|
|
2104
|
+
* (`c:ofPieChart`, ECMA-376 §21.2.2.126 / CT_OfPieChart).
|
|
2105
|
+
*
|
|
2106
|
+
* The primary discriminator is {@link ofPieType}: `"pie"` produces a
|
|
2107
|
+
* pie-of-pie chart whose secondary plot is itself a pie, while `"bar"`
|
|
2108
|
+
* produces a bar-of-pie chart whose secondary plot is a horizontal bar.
|
|
2109
|
+
*
|
|
2110
|
+
* - {@link splitType} chooses the split rule.
|
|
2111
|
+
* - {@link splitPos} is the threshold value used by `pos`/`val`/`percent`.
|
|
2112
|
+
* - {@link secondPieSize} controls the secondary plot's size (5–200%).
|
|
2113
|
+
* - {@link serLines} toggles the leader lines connecting the plots.
|
|
2114
|
+
* - {@link gapWidth} is the gap between the plots in percent (0–500).
|
|
2115
|
+
*/
|
|
2116
|
+
interface PptxChartOfPieOptions {
|
|
2117
|
+
ofPieType: 'pie' | 'bar';
|
|
2118
|
+
splitType?: 'auto' | 'cust' | 'percent' | 'pos' | 'val';
|
|
2119
|
+
splitPos?: number;
|
|
2120
|
+
custSplit?: number[];
|
|
2121
|
+
secondPieSize?: number;
|
|
2122
|
+
serLines?: boolean;
|
|
2123
|
+
gapWidth?: number;
|
|
2124
|
+
}
|
|
2125
|
+
/**
|
|
2126
|
+
* 3D viewing parameters for a chart (`c:view3D`, ECMA-376 §21.2.2.228 /
|
|
2127
|
+
* CT_View3D).
|
|
2128
|
+
*
|
|
2129
|
+
* All fields are optional and round-trip verbatim.
|
|
2130
|
+
*
|
|
2131
|
+
* - {@link rotX} — X-axis rotation in degrees (-90…90).
|
|
2132
|
+
* - {@link rotY} — Y-axis rotation in degrees (0…360).
|
|
2133
|
+
* - {@link depthPercent} — chart depth as a percentage of base width.
|
|
2134
|
+
* - {@link rAngAx} — `true` if axes meet at right angles.
|
|
2135
|
+
* - {@link perspective} — perspective angle in degrees (0…240).
|
|
2136
|
+
* - {@link hPercent} — height as a percentage of chart width.
|
|
2137
|
+
*/
|
|
2138
|
+
interface PptxChartView3D {
|
|
2139
|
+
rotX?: number;
|
|
2140
|
+
rotY?: number;
|
|
2141
|
+
depthPercent?: number;
|
|
2142
|
+
rAngAx?: boolean;
|
|
2143
|
+
perspective?: number;
|
|
2144
|
+
hPercent?: number;
|
|
2145
|
+
}
|
|
2146
|
+
/**
|
|
2147
|
+
* Chart "chrome" flags from `c:chart` that round-trip cleanly even when
|
|
2148
|
+
* rendering ignores them.
|
|
2149
|
+
*
|
|
2150
|
+
* - {@link autoTitleDeleted} — `c:autoTitleDeleted/@val`. Suppresses the
|
|
2151
|
+
* auto-generated title for single-series charts.
|
|
2152
|
+
* - {@link dispBlanksAs} — `c:dispBlanksAs/@val`. How blank cells
|
|
2153
|
+
* render: `"gap"`, `"zero"`, or `"span"`.
|
|
2154
|
+
* - {@link showDLblsOverMax} — `c:showDLblsOverMax/@val`. Keeps data
|
|
2155
|
+
* labels visible for points exceeding the value-axis maximum.
|
|
2156
|
+
*
|
|
2157
|
+
* `c:plotVisOnly` lives on {@link PptxChartData.plotVisibleOnly} and is
|
|
2158
|
+
* intentionally not duplicated here.
|
|
2159
|
+
*/
|
|
2160
|
+
interface PptxChartChrome {
|
|
2161
|
+
autoTitleDeleted?: boolean;
|
|
2162
|
+
dispBlanksAs?: 'gap' | 'zero' | 'span';
|
|
2163
|
+
showDLblsOverMax?: boolean;
|
|
2164
|
+
}
|
|
1669
2165
|
/** Parsed data extracted from an embedded xlsx workbook. */
|
|
1670
2166
|
interface PptxEmbeddedWorkbookData {
|
|
1671
2167
|
/** Category labels from the first column/row. */
|
|
@@ -1759,6 +2255,52 @@ interface PptxChartData {
|
|
|
1759
2255
|
* - `"acrossLinear"` — gradient across series
|
|
1760
2256
|
*/
|
|
1761
2257
|
colorMethod?: 'cycle' | 'withinLinear' | 'acrossLinear';
|
|
2258
|
+
/**
|
|
2259
|
+
* Pie-of-pie / Bar-of-pie options (`c:ofPieChart`, CT_OfPieChart).
|
|
2260
|
+
*
|
|
2261
|
+
* Present only when {@link chartType} is `"ofPie"`. Carries the split
|
|
2262
|
+
* configuration, secondary plot size, and serLines flag so that an
|
|
2263
|
+
* `ofPieChart` element can be re-emitted on save with full fidelity.
|
|
2264
|
+
*/
|
|
2265
|
+
ofPieOptions?: PptxChartOfPieOptions;
|
|
2266
|
+
/**
|
|
2267
|
+
* 3D viewing parameters (`c:view3D`, CT_View3D).
|
|
2268
|
+
*
|
|
2269
|
+
* Parsed from and emitted to `c:chart/c:view3D`. Absent when the
|
|
2270
|
+
* chart XML has no `c:view3D` element.
|
|
2271
|
+
*/
|
|
2272
|
+
view3D?: PptxChartView3D;
|
|
2273
|
+
/**
|
|
2274
|
+
* Top-level chart chrome flags (`c:autoTitleDeleted`,
|
|
2275
|
+
* `c:dispBlanksAs`, `c:showDLblsOverMax`).
|
|
2276
|
+
*
|
|
2277
|
+
* Each flag is omitted from the emitted XML when absent on the
|
|
2278
|
+
* source data, so absence does not produce empty `<c:…/>` placeholders.
|
|
2279
|
+
*/
|
|
2280
|
+
chartChrome?: PptxChartChrome;
|
|
2281
|
+
/**
|
|
2282
|
+
* Raw `c:userShapes` XML subtree (a drawing tree) preserved verbatim.
|
|
2283
|
+
*
|
|
2284
|
+
* `c:userShapes` references a separate drawing part containing
|
|
2285
|
+
* shapes drawn over the chart. The reference is preserved as-is so
|
|
2286
|
+
* that round-trip save re-emits the original element without
|
|
2287
|
+
* attempting to parse the nested drawing tree.
|
|
2288
|
+
*/
|
|
2289
|
+
userShapesXml?: unknown;
|
|
2290
|
+
/**
|
|
2291
|
+
* Raw `c:pivotFmts` XML subtree preserved verbatim.
|
|
2292
|
+
*
|
|
2293
|
+
* `c:pivotFmts` carries a list of `c:pivotFmt` formatting overrides
|
|
2294
|
+
* for charts whose data originates from a PivotTable. Preserved
|
|
2295
|
+
* verbatim for round-trip fidelity.
|
|
2296
|
+
*/
|
|
2297
|
+
pivotFmtsXml?: unknown;
|
|
2298
|
+
/**
|
|
2299
|
+
* Color-map override (`c:clrMapOvr`) carrying 12 attributes that
|
|
2300
|
+
* remap theme colour roles for this chart only. Preserved as a flat
|
|
2301
|
+
* `attribute → value` map for round-trip fidelity.
|
|
2302
|
+
*/
|
|
2303
|
+
clrMapOvr?: Record<string, string>;
|
|
1762
2304
|
}
|
|
1763
2305
|
|
|
1764
2306
|
/**
|
|
@@ -2072,8 +2614,8 @@ interface PptxTableCellStyle {
|
|
|
2072
2614
|
borderRightColor?: string;
|
|
2073
2615
|
align?: 'left' | 'center' | 'right' | 'justify';
|
|
2074
2616
|
vAlign?: 'top' | 'middle' | 'bottom';
|
|
2075
|
-
/** Text direction from `a:tcPr/@vert
|
|
2076
|
-
textDirection?: '
|
|
2617
|
+
/** Text direction from `a:tcPr/@vert` (spec values from CT_TextVerticalType). */
|
|
2618
|
+
textDirection?: 'vert' | 'vert270' | 'eaVert' | 'wordArtVert' | 'wordArtVertRtl' | 'mongolianVert';
|
|
2077
2619
|
/** Cell left margin in px (from a:tcPr > a:tcMar > a:marL). */
|
|
2078
2620
|
marginLeft?: number;
|
|
2079
2621
|
/** Cell right margin in px. */
|
|
@@ -2172,6 +2714,14 @@ interface PptxTableCell {
|
|
|
2172
2714
|
vMerge?: boolean;
|
|
2173
2715
|
/** Whether this cell is horizontally merged with the cell to the left (gridSpan continuation). */
|
|
2174
2716
|
hMerge?: boolean;
|
|
2717
|
+
/**
|
|
2718
|
+
* Opaque round-trip storage for `a:tcPr` attributes that don't yet have
|
|
2719
|
+
* typed equivalents on {@link PptxTableCellStyle} (e.g. `horzOverflow`,
|
|
2720
|
+
* `anchorCtr`, `headers`, `hideSlicers`, `slicerCacheId`). Keys are the
|
|
2721
|
+
* raw XML attribute names without the `@_` prefix used by
|
|
2722
|
+
* fast-xml-parser. Re-emitted verbatim by the save writer when present.
|
|
2723
|
+
*/
|
|
2724
|
+
extraAttributes?: Record<string, string>;
|
|
2175
2725
|
}
|
|
2176
2726
|
/**
|
|
2177
2727
|
* A single table row with an optional height and an array of cells.
|
|
@@ -2235,6 +2785,8 @@ interface PptxTableData {
|
|
|
2235
2785
|
bandRowCycle?: number;
|
|
2236
2786
|
/** Number of columns per banding group (default 1). */
|
|
2237
2787
|
bandColCycle?: number;
|
|
2788
|
+
/** Right-to-left table layout from `a:tblPr/@rtl`. */
|
|
2789
|
+
rtl?: boolean;
|
|
2238
2790
|
}
|
|
2239
2791
|
/**
|
|
2240
2792
|
* A single fill reference within a table style section.
|
|
@@ -2288,11 +2840,26 @@ interface ParsedTableStyleText {
|
|
|
2288
2840
|
/** Font colour shade (0-100 000). */
|
|
2289
2841
|
fontShade?: number;
|
|
2290
2842
|
}
|
|
2843
|
+
/**
|
|
2844
|
+
* Table background style (CT_TableBackgroundStyle, ECMA-376 §21.1.3.7).
|
|
2845
|
+
*
|
|
2846
|
+
* Corresponds to the `<a:tblBg>` child of `<a:tblStyle>`. Currently
|
|
2847
|
+
* captures only the resolved scheme-fill colour (verbatim XML for fill
|
|
2848
|
+
* / effect references is preserved separately by the save path).
|
|
2849
|
+
*/
|
|
2850
|
+
interface ParsedTableBackground {
|
|
2851
|
+
/** Solid fill (resolved from `a:fill > a:solidFill > a:schemeClr`). */
|
|
2852
|
+
fill?: ParsedTableStyleFill;
|
|
2853
|
+
/** Has an `a:effectLst` child that should be round-tripped. */
|
|
2854
|
+
hasEffectLst?: boolean;
|
|
2855
|
+
}
|
|
2291
2856
|
interface ParsedTableStyleEntry {
|
|
2292
2857
|
styleId: string;
|
|
2293
2858
|
styleName?: string;
|
|
2294
2859
|
/** Dominant accent key derived from fills (e.g. `accent1`). */
|
|
2295
2860
|
accentKey?: string;
|
|
2861
|
+
/** Table-level background (`<a:tblBg>`). */
|
|
2862
|
+
tableBackground?: ParsedTableBackground;
|
|
2296
2863
|
wholeTblFill?: ParsedTableStyleFill;
|
|
2297
2864
|
band1HFill?: ParsedTableStyleFill;
|
|
2298
2865
|
band2HFill?: ParsedTableStyleFill;
|
|
@@ -2302,6 +2869,11 @@ interface ParsedTableStyleEntry {
|
|
|
2302
2869
|
lastRowFill?: ParsedTableStyleFill;
|
|
2303
2870
|
firstColFill?: ParsedTableStyleFill;
|
|
2304
2871
|
lastColFill?: ParsedTableStyleFill;
|
|
2872
|
+
/** Corner cell fills (`<a:seCell>`, `<a:swCell>`, `<a:neCell>`, `<a:nwCell>`). */
|
|
2873
|
+
seCellFill?: ParsedTableStyleFill;
|
|
2874
|
+
swCellFill?: ParsedTableStyleFill;
|
|
2875
|
+
neCellFill?: ParsedTableStyleFill;
|
|
2876
|
+
nwCellFill?: ParsedTableStyleFill;
|
|
2305
2877
|
/** Per-role text styling from a:tcTxStyle. */
|
|
2306
2878
|
wholeTblText?: ParsedTableStyleText;
|
|
2307
2879
|
firstRowText?: ParsedTableStyleText;
|
|
@@ -2312,6 +2884,10 @@ interface ParsedTableStyleEntry {
|
|
|
2312
2884
|
band2HText?: ParsedTableStyleText;
|
|
2313
2885
|
band1VText?: ParsedTableStyleText;
|
|
2314
2886
|
band2VText?: ParsedTableStyleText;
|
|
2887
|
+
seCellText?: ParsedTableStyleText;
|
|
2888
|
+
swCellText?: ParsedTableStyleText;
|
|
2889
|
+
neCellText?: ParsedTableStyleText;
|
|
2890
|
+
nwCellText?: ParsedTableStyleText;
|
|
2315
2891
|
}
|
|
2316
2892
|
/**
|
|
2317
2893
|
* Map of GUID → table style entry.
|
|
@@ -2353,7 +2929,7 @@ type ParsedTableStyleMap = Record<string, ParsedTableStyleEntry>;
|
|
|
2353
2929
|
* // => "morph" — one of 40+ transition effects
|
|
2354
2930
|
* ```
|
|
2355
2931
|
*/
|
|
2356
|
-
type PptxTransitionType = 'none' | 'cut' | 'fade' | 'push' | 'wipe' | 'split' | 'randomBar' | 'blinds' | 'checker' | 'circle' | 'comb' | 'cover' | 'diamond' | 'dissolve' | 'plus' | 'pull' | 'random' | 'strips' | 'uncover' | 'wedge' | 'wheel' | 'zoom' | 'newsflash' | 'morph' | 'conveyor' | 'doors' | 'ferris' | 'flash' | 'flythrough' | 'gallery' | 'glitter' | 'honeycomb' | 'pan' | 'prism' | 'reveal' | 'ripple' | 'shred' | 'switch' | 'vortex' | 'warp' | 'wheelReverse' | 'window';
|
|
2932
|
+
type PptxTransitionType = 'none' | 'cut' | 'fade' | 'push' | 'wipe' | 'split' | 'randomBar' | 'blinds' | 'checker' | 'circle' | 'comb' | 'cover' | 'diamond' | 'dissolve' | 'plus' | 'pull' | 'random' | 'strips' | 'uncover' | 'wedge' | 'wheel' | 'zoom' | 'newsflash' | 'morph' | 'conveyor' | 'doors' | 'ferris' | 'flash' | 'flythrough' | 'gallery' | 'glitter' | 'honeycomb' | 'pan' | 'prism' | 'reveal' | 'ripple' | 'shred' | 'switch' | 'vortex' | 'warp' | 'wheelReverse' | 'window' | 'cube' | 'flip' | 'rotate' | 'orbit';
|
|
2357
2933
|
/** Cardinal direction tokens from OOXML transition `@_dir`. */
|
|
2358
2934
|
type PptxTransitionDirection4 = 'l' | 'r' | 'u' | 'd';
|
|
2359
2935
|
/** 8-way direction tokens (cardinal + diagonal) for cover/uncover. */
|
|
@@ -2400,6 +2976,11 @@ interface PptxSlideTransition {
|
|
|
2400
2976
|
soundPath?: string;
|
|
2401
2977
|
/** Human-readable sound file name (extracted from soundPath). */
|
|
2402
2978
|
soundFileName?: string;
|
|
2979
|
+
/**
|
|
2980
|
+
* When true, the transition stops the currently-playing sound (OOXML `p:sndAc/p:endSnd`).
|
|
2981
|
+
* Mutually exclusive with `soundRId`/`soundPath` (which use `p:stSnd`).
|
|
2982
|
+
*/
|
|
2983
|
+
stopSound?: boolean;
|
|
2403
2984
|
/** Preserved sound-action XML node from `p:sndAc` for lossless round-trip. */
|
|
2404
2985
|
rawSoundAction?: XmlObject;
|
|
2405
2986
|
/** Preserved extension-list XML node from `p:extLst` within the transition for lossless round-trip. */
|
|
@@ -2429,6 +3010,13 @@ type PptxAnimationTimingCurve = 'ease' | 'ease-in' | 'ease-out' | 'linear';
|
|
|
2429
3010
|
type PptxAnimationRepeatMode = 'untilNextClick' | 'untilEndOfSlide';
|
|
2430
3011
|
/** Animation trigger type from OOXML `p:cTn`. */
|
|
2431
3012
|
type PptxAnimationTrigger = 'onClick' | 'onShapeClick' | 'onHover' | 'afterPrevious' | 'withPrevious' | 'afterDelay';
|
|
3013
|
+
/**
|
|
3014
|
+
* Native animation kind. The historic shape-targeted preset animations are
|
|
3015
|
+
* implicitly the default kind (`undefined`). Media animations (`p:audio`,
|
|
3016
|
+
* `p:video`) emit dedicated entries so playback order on the slide timeline
|
|
3017
|
+
* is preserved alongside other animations.
|
|
3018
|
+
*/
|
|
3019
|
+
type PptxNativeAnimationKind = 'media';
|
|
2432
3020
|
/**
|
|
2433
3021
|
* Parsed native animation record from `p:timing / p:tnLst`.
|
|
2434
3022
|
*
|
|
@@ -2470,12 +3058,32 @@ interface PptxNativeAnimation {
|
|
|
2470
3058
|
motionOrigin?: string;
|
|
2471
3059
|
/** Whether the element auto-rotates to follow the motion path tangent (`p:animMotion/@rAng` = "0"). */
|
|
2472
3060
|
motionPathRotateAuto?: boolean;
|
|
2473
|
-
/**
|
|
3061
|
+
/** Path edit mode from `p:animMotion/@pathEditMode` (e.g. "relative", "fixed"). */
|
|
3062
|
+
motionPathEditMode?: string;
|
|
3063
|
+
/** Comma-separated point-types string from `p:animMotion/@ptsTypes`. */
|
|
3064
|
+
motionPtsTypes?: string;
|
|
3065
|
+
/** Rotation angle in degrees for `p:animRot/@by` (converted from 60000ths). */
|
|
2474
3066
|
rotationBy?: number;
|
|
2475
|
-
/**
|
|
3067
|
+
/** Starting rotation angle in degrees for `p:animRot/@from` (converted from 60000ths). */
|
|
3068
|
+
rotationFrom?: number;
|
|
3069
|
+
/** Ending rotation angle in degrees for `p:animRot/@to` (converted from 60000ths). */
|
|
3070
|
+
rotationTo?: number;
|
|
3071
|
+
/** X scale factor (percentage / 100) for `p:animScale/p:by/@x`. */
|
|
2476
3072
|
scaleByX?: number;
|
|
2477
|
-
/** Y scale factor (percentage / 100) for `p:animScale`. */
|
|
3073
|
+
/** Y scale factor (percentage / 100) for `p:animScale/p:by/@y`. */
|
|
2478
3074
|
scaleByY?: number;
|
|
3075
|
+
/** Starting X scale factor for `p:animScale/p:from/@x`. */
|
|
3076
|
+
scaleFromX?: number;
|
|
3077
|
+
/** Starting Y scale factor for `p:animScale/p:from/@y`. */
|
|
3078
|
+
scaleFromY?: number;
|
|
3079
|
+
/** Ending X scale factor for `p:animScale/p:to/@x`. */
|
|
3080
|
+
scaleToX?: number;
|
|
3081
|
+
/** Ending Y scale factor for `p:animScale/p:to/@y`. */
|
|
3082
|
+
scaleToY?: number;
|
|
3083
|
+
/** Whether `p:animScale/@zoomContents` was set ("1"/"true"). */
|
|
3084
|
+
scaleZoomContents?: boolean;
|
|
3085
|
+
/** Parsed `p:tav` keyframes from `p:tavLst` (CT_TLAnimVariantList). */
|
|
3086
|
+
keyframes?: PptxAnimationKeyframe[];
|
|
2479
3087
|
/** Repeat count (e.g. `2`, `Infinity` for indefinite). */
|
|
2480
3088
|
repeatCount?: number;
|
|
2481
3089
|
/** Whether the animation plays in reverse after completion. */
|
|
@@ -2510,6 +3118,73 @@ interface PptxNativeAnimation {
|
|
|
2510
3118
|
commandString?: string;
|
|
2511
3119
|
/** Iteration configuration from `p:iterate`. */
|
|
2512
3120
|
iterate?: PptxAnimationIterate;
|
|
3121
|
+
/**
|
|
3122
|
+
* Discriminator for non-preset animation kinds. When `undefined`, the
|
|
3123
|
+
* entry represents the default shape-effect animation. The `'media'`
|
|
3124
|
+
* kind represents a `p:audio` / `p:video` timing node, captured here so
|
|
3125
|
+
* playback order in the timeline is preserved alongside other animations.
|
|
3126
|
+
*/
|
|
3127
|
+
kind?: PptxNativeAnimationKind;
|
|
3128
|
+
/**
|
|
3129
|
+
* For `kind === 'media'`, identifies whether this is an audio or video
|
|
3130
|
+
* media node so writers know which OOXML element to re-emit.
|
|
3131
|
+
*/
|
|
3132
|
+
mediaType?: 'audio' | 'video';
|
|
3133
|
+
/**
|
|
3134
|
+
* SmartArt build attribute (`p:bldDgm/@bld`) when this animation is
|
|
3135
|
+
* associated with a SmartArt diagram build. Common values include
|
|
3136
|
+
* `whole`, `one`, `lvlOne`, `lvlAtOnce`.
|
|
3137
|
+
*/
|
|
3138
|
+
smartArtBuild?: string;
|
|
3139
|
+
/**
|
|
3140
|
+
* Graphic-frame build attribute (`p:bldGraphic/@bld`) when this animation
|
|
3141
|
+
* is associated with a generic graphic frame build (charts, tables, etc.
|
|
3142
|
+
* that aren't OLE charts).
|
|
3143
|
+
*/
|
|
3144
|
+
graphicBuild?: string;
|
|
3145
|
+
/**
|
|
3146
|
+
* Opaque map of `p:cTn` attributes that don't have a typed home on this
|
|
3147
|
+
* interface but must round-trip through parse → save. Keys are stored
|
|
3148
|
+
* verbatim including the `@_` prefix used by the underlying XML parser
|
|
3149
|
+
* (e.g. `@_evtFilter`, `@_display`, `@_masterRel`, `@_nodePh`,
|
|
3150
|
+
* `@_endSync`, `@_progress`). The `subTnLst` child element is also
|
|
3151
|
+
* preserved here under the literal key `p:subTnLst`. The `afterEffect`
|
|
3152
|
+
* attribute is surfaced separately as a typed boolean ({@link afterEffect})
|
|
3153
|
+
* because it changes write semantics for subsequent timing nodes.
|
|
3154
|
+
*/
|
|
3155
|
+
cTnAttributes?: Record<string, unknown>;
|
|
3156
|
+
/**
|
|
3157
|
+
* Whether the OOXML `p:cTn/@afterEffect` flag is set. Indicates this node
|
|
3158
|
+
* runs after the parent effect's main body has completed; affects how
|
|
3159
|
+
* subsequent peer nodes are sequenced when serialised back to OOXML.
|
|
3160
|
+
*/
|
|
3161
|
+
afterEffect?: boolean;
|
|
3162
|
+
}
|
|
3163
|
+
/**
|
|
3164
|
+
* Single keyframe parsed from a `p:tav` element (CT_TLTimeAnimateValue).
|
|
3165
|
+
*
|
|
3166
|
+
* Each entry in a `p:tavLst` has a time fraction (`@_tm`, in 1000ths of the
|
|
3167
|
+
* total duration; or the literal "indefinite" / "large") and a typed value
|
|
3168
|
+
* child under `p:val/p:strVal|p:boolVal|p:intVal|p:fltVal|p:clrVal`.
|
|
3169
|
+
*
|
|
3170
|
+
* @see ECMA-376 §19.5.30 CT_TLAnimVariantList / §19.5.92 CT_TLTimeAnimateValue
|
|
3171
|
+
*/
|
|
3172
|
+
interface PptxAnimationKeyframe {
|
|
3173
|
+
/**
|
|
3174
|
+
* Time fraction. A finite number is the OOXML `@_tm` integer (0–100000
|
|
3175
|
+
* for percentage, where 100000 = 100% of duration). A string preserves
|
|
3176
|
+
* special tokens ("indefinite", "large").
|
|
3177
|
+
*/
|
|
3178
|
+
tm: number | string;
|
|
3179
|
+
/** Decoded keyframe value. */
|
|
3180
|
+
value: string | boolean | number;
|
|
3181
|
+
/** Discriminant indicating which `p:val` child carried the value. */
|
|
3182
|
+
valueType: 'str' | 'bool' | 'int' | 'flt' | 'clr';
|
|
3183
|
+
/**
|
|
3184
|
+
* Optional formula carried on `p:tav/@_fmla`. Preserved for round-trip
|
|
3185
|
+
* fidelity; consumers may use it to drive computed animation values.
|
|
3186
|
+
*/
|
|
3187
|
+
fmla?: string;
|
|
2513
3188
|
}
|
|
2514
3189
|
/** Color animation data parsed from `p:animClr`. */
|
|
2515
3190
|
interface PptxColorAnimation {
|
|
@@ -2517,11 +3192,22 @@ interface PptxColorAnimation {
|
|
|
2517
3192
|
colorSpace: 'hsl' | 'rgb';
|
|
2518
3193
|
/** Direction for HSL interpolation: "cw" (clockwise) or "ccw". */
|
|
2519
3194
|
direction?: 'cw' | 'ccw';
|
|
3195
|
+
/**
|
|
3196
|
+
* Optional `p:animClr/@path` value preserved for round-trip. When set,
|
|
3197
|
+
* the colour sweep follows a path-based interpolation rather than the
|
|
3198
|
+
* straight cw/ccw arc. ECMA-376 §19.5.13 documents this attribute as a
|
|
3199
|
+
* companion to `@dir` for HSL colour-space animations.
|
|
3200
|
+
*/
|
|
3201
|
+
path?: string;
|
|
2520
3202
|
/** Starting color as hex string. */
|
|
2521
3203
|
fromColor?: string;
|
|
2522
3204
|
/** Ending color as hex string. */
|
|
2523
3205
|
toColor?: string;
|
|
2524
|
-
/**
|
|
3206
|
+
/**
|
|
3207
|
+
* Color delta (for "by" animations) as hex string. For HSL colour-space
|
|
3208
|
+
* animations the value encodes a delta over hue/sat/lum and is preserved
|
|
3209
|
+
* verbatim from the source.
|
|
3210
|
+
*/
|
|
2525
3211
|
byColor?: string;
|
|
2526
3212
|
/**
|
|
2527
3213
|
* Target attribute from `p:attrNameLst` (e.g. "fillcolor", "style.color",
|
|
@@ -2635,6 +3321,13 @@ interface PptxElementAnimation {
|
|
|
2635
3321
|
afterAnimationColor?: string;
|
|
2636
3322
|
/** SVG motion path string for custom motion path animations. */
|
|
2637
3323
|
motionPath?: string;
|
|
3324
|
+
/**
|
|
3325
|
+
* Path edit mode for `p:animMotion/@pathEditMode`. Defaults to "relative"
|
|
3326
|
+
* when emitted without an explicit value.
|
|
3327
|
+
*/
|
|
3328
|
+
motionPathEditMode?: string;
|
|
3329
|
+
/** Comma-separated point-types string for `p:animMotion/@ptsTypes`. */
|
|
3330
|
+
motionPtsTypes?: string;
|
|
2638
3331
|
/** Sound relationship ID to play when animation triggers (`p:stSnd`). */
|
|
2639
3332
|
soundRId?: string;
|
|
2640
3333
|
/** Resolved sound file path from relationship. */
|
|
@@ -3133,6 +3826,16 @@ interface PptxElementBase {
|
|
|
3133
3826
|
actionHover?: PptxAction;
|
|
3134
3827
|
/** Shape lock attributes parsed from `p:cNvSpPr/a:spLocks`. */
|
|
3135
3828
|
locks?: PptxShapeLocks;
|
|
3829
|
+
/**
|
|
3830
|
+
* Opaque `<a:ext>` children captured from the shape's `<a:extLst>` whose
|
|
3831
|
+
* URI is not recognised by a typed extractor (hidden fill/line, image
|
|
3832
|
+
* effects, …). Preserved verbatim and re-emitted on save so unknown
|
|
3833
|
+
* vendor extensions survive a round-trip.
|
|
3834
|
+
*
|
|
3835
|
+
* Mirrors the existing `effectDagXml` / `endParaRunProperties` raw-XML
|
|
3836
|
+
* preservation pattern.
|
|
3837
|
+
*/
|
|
3838
|
+
extLstXml?: XmlObject[];
|
|
3136
3839
|
}
|
|
3137
3840
|
/**
|
|
3138
3841
|
* Text content mixin — present on text boxes and shapes.
|
|
@@ -3271,20 +3974,6 @@ interface PlaceholderDefaults {
|
|
|
3271
3974
|
promptText?: string;
|
|
3272
3975
|
}
|
|
3273
3976
|
|
|
3274
|
-
/**
|
|
3275
|
-
* Concrete element types (one per `type` discriminant) and the
|
|
3276
|
-
* {@link PptxElement} discriminated union.
|
|
3277
|
-
*
|
|
3278
|
-
* Narrow on `element.type` to access variant-specific properties:
|
|
3279
|
-
* ```ts
|
|
3280
|
-
* if (element.type === "image") {
|
|
3281
|
-
* console.log(element.imageData); // ImagePptxElement-only
|
|
3282
|
-
* }
|
|
3283
|
-
* ```
|
|
3284
|
-
*
|
|
3285
|
-
* @module pptx-types/elements
|
|
3286
|
-
*/
|
|
3287
|
-
|
|
3288
3977
|
/**
|
|
3289
3978
|
* A text box — a plain rectangle containing text, typically with no
|
|
3290
3979
|
* visible fill or stroke.
|
|
@@ -3369,6 +4058,21 @@ interface ImagePptxElement extends PptxElementBase, PptxShapeProperties, PptxCus
|
|
|
3369
4058
|
interface PicturePptxElement extends PptxElementBase, PptxShapeProperties, PptxCustomPathProperties, PptxImageProperties {
|
|
3370
4059
|
type: 'picture';
|
|
3371
4060
|
}
|
|
4061
|
+
/**
|
|
4062
|
+
* A single unrecognised `<a:graphicData>/<a:extLst>/<a:ext>` extension on a
|
|
4063
|
+
* graphicFrame, captured verbatim so the round-trip can preserve future or
|
|
4064
|
+
* vendor-specific markup that the parser doesn't yet understand.
|
|
4065
|
+
*
|
|
4066
|
+
* The XML is preserved as a fast-xml-parser object tree (the same shape as
|
|
4067
|
+
* `rawXml` on other elements) so the save layer can re-emit it through the
|
|
4068
|
+
* existing builder without lossy string manipulation.
|
|
4069
|
+
*/
|
|
4070
|
+
interface PptxGraphicFrameExtension {
|
|
4071
|
+
/** The `@_uri` attribute identifying the extension (e.g. `{C3CD43...}`). */
|
|
4072
|
+
uri: string;
|
|
4073
|
+
/** Parsed XML payload of the extension, suitable for re-serialization. */
|
|
4074
|
+
xml: XmlObject;
|
|
4075
|
+
}
|
|
3372
4076
|
/**
|
|
3373
4077
|
* A table embedded via a `<p:graphicFrame>`.
|
|
3374
4078
|
*
|
|
@@ -3391,6 +4095,11 @@ interface TablePptxElement extends PptxElementBase {
|
|
|
3391
4095
|
type: 'table';
|
|
3392
4096
|
/** Parsed table cell data for editing. */
|
|
3393
4097
|
tableData?: PptxTableData;
|
|
4098
|
+
/**
|
|
4099
|
+
* Unrecognised extensions captured from `a:graphicData/a:extLst` so they
|
|
4100
|
+
* round-trip losslessly. See {@link PptxGraphicFrameExtension}.
|
|
4101
|
+
*/
|
|
4102
|
+
extensionXml?: PptxGraphicFrameExtension[];
|
|
3394
4103
|
}
|
|
3395
4104
|
/**
|
|
3396
4105
|
* A chart embedded via a `<p:graphicFrame>`.
|
|
@@ -3401,6 +4110,8 @@ interface TablePptxElement extends PptxElementBase {
|
|
|
3401
4110
|
interface ChartPptxElement extends PptxElementBase {
|
|
3402
4111
|
type: 'chart';
|
|
3403
4112
|
chartData?: PptxChartData;
|
|
4113
|
+
/** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
|
|
4114
|
+
extensionXml?: PptxGraphicFrameExtension[];
|
|
3404
4115
|
}
|
|
3405
4116
|
/**
|
|
3406
4117
|
* A SmartArt diagram embedded via a `<p:graphicFrame>`.
|
|
@@ -3411,6 +4122,8 @@ interface ChartPptxElement extends PptxElementBase {
|
|
|
3411
4122
|
interface SmartArtPptxElement extends PptxElementBase {
|
|
3412
4123
|
type: 'smartArt';
|
|
3413
4124
|
smartArtData?: PptxSmartArtData;
|
|
4125
|
+
/** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
|
|
4126
|
+
extensionXml?: PptxGraphicFrameExtension[];
|
|
3414
4127
|
}
|
|
3415
4128
|
/**
|
|
3416
4129
|
* Recognised OLE object application types derived from `progId` / `clsId`.
|
|
@@ -3458,6 +4171,14 @@ interface OlePptxElement extends PptxElementBase {
|
|
|
3458
4171
|
previewImage?: string;
|
|
3459
4172
|
/** Decoded preview image as a data-URL. */
|
|
3460
4173
|
previewImageData?: string;
|
|
4174
|
+
/** Whether the OLE object is shown as an icon (`p:oleObj/@showAsIcon`). */
|
|
4175
|
+
oleShowAsIcon?: boolean;
|
|
4176
|
+
/** Authored display width of the OLE object preview, in EMU (`@imgW`). */
|
|
4177
|
+
oleImgW?: number;
|
|
4178
|
+
/** Authored display height of the OLE object preview, in EMU (`@imgH`). */
|
|
4179
|
+
oleImgH?: number;
|
|
4180
|
+
/** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
|
|
4181
|
+
extensionXml?: PptxGraphicFrameExtension[];
|
|
3461
4182
|
}
|
|
3462
4183
|
/**
|
|
3463
4184
|
* An audio or video media element.
|
|
@@ -3519,6 +4240,13 @@ interface MediaPptxElement extends PptxElementBase {
|
|
|
3519
4240
|
captionTracks?: MediaCaptionTrack[];
|
|
3520
4241
|
/** Whether the media source is missing/broken (file not found in archive). */
|
|
3521
4242
|
mediaMissing?: boolean;
|
|
4243
|
+
/**
|
|
4244
|
+
* Whether the media is linked (external `r:link`) rather than embedded
|
|
4245
|
+
* (`r:embed`). Defaults to embedded when undefined.
|
|
4246
|
+
*/
|
|
4247
|
+
isLinked?: boolean;
|
|
4248
|
+
/** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
|
|
4249
|
+
extensionXml?: PptxGraphicFrameExtension[];
|
|
3522
4250
|
}
|
|
3523
4251
|
/**
|
|
3524
4252
|
* A group container that holds child elements.
|
|
@@ -3570,6 +4298,8 @@ interface InkPptxElement extends PptxElementBase {
|
|
|
3570
4298
|
* variable-width strokes that reflect stylus/pen pressure.
|
|
3571
4299
|
*/
|
|
3572
4300
|
inkPointPressures?: number[][];
|
|
4301
|
+
/** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
|
|
4302
|
+
extensionXml?: PptxGraphicFrameExtension[];
|
|
3573
4303
|
}
|
|
3574
4304
|
/**
|
|
3575
4305
|
* A single ink stroke within a {@link ContentPartPptxElement}.
|
|
@@ -3641,10 +4371,14 @@ interface Model3DPptxElement extends PptxElementBase, PptxImageProperties {
|
|
|
3641
4371
|
modelMimeType?: string;
|
|
3642
4372
|
/** Poster/preview image shown when 3D rendering is unavailable. */
|
|
3643
4373
|
posterImage?: string;
|
|
4374
|
+
/** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
|
|
4375
|
+
extensionXml?: PptxGraphicFrameExtension[];
|
|
3644
4376
|
}
|
|
3645
4377
|
/** An element whose type is not recognised by the parser. */
|
|
3646
4378
|
interface UnknownPptxElement extends PptxElementBase {
|
|
3647
4379
|
type: 'unknown';
|
|
4380
|
+
/** Unrecognised graphicFrame extLst extensions, captured verbatim for round-trip. */
|
|
4381
|
+
extensionXml?: PptxGraphicFrameExtension[];
|
|
3648
4382
|
}
|
|
3649
4383
|
/**
|
|
3650
4384
|
* A single element on a PPTX slide.
|
|
@@ -3785,8 +4519,14 @@ interface PptxThemeFontScheme {
|
|
|
3785
4519
|
* ```
|
|
3786
4520
|
*/
|
|
3787
4521
|
interface PptxThemeFillStyle {
|
|
3788
|
-
/**
|
|
3789
|
-
|
|
4522
|
+
/**
|
|
4523
|
+
* Discriminator for the fill type.
|
|
4524
|
+
*
|
|
4525
|
+
* `'group'` corresponds to `<a:grpFill/>` — a fill that inherits the
|
|
4526
|
+
* containing group shape's fill at render time. Captured for round-trip
|
|
4527
|
+
* preservation in `fmtScheme/fillStyleLst`.
|
|
4528
|
+
*/
|
|
4529
|
+
kind: 'solid' | 'gradient' | 'pattern' | 'none' | 'group';
|
|
3790
4530
|
/** Pre-resolved colour (may be `undefined` when `phClr`-dependent). */
|
|
3791
4531
|
color?: string;
|
|
3792
4532
|
opacity?: number;
|
|
@@ -3993,6 +4733,8 @@ interface PptxNotesMaster {
|
|
|
3993
4733
|
elements?: PptxElement[];
|
|
3994
4734
|
/** Header/footer flags from `<p:hf>` on the notes master (P-H3). */
|
|
3995
4735
|
headerFooter?: PptxHeaderFooterFlags;
|
|
4736
|
+
/** Colour map from `<p:clrMap>` (12 alias attributes). Applied at save time. */
|
|
4737
|
+
clrMap?: Record<string, string>;
|
|
3996
4738
|
}
|
|
3997
4739
|
/**
|
|
3998
4740
|
* Parsed handout master from `ppt/handoutMasters/handoutMaster1.xml`.
|
|
@@ -4024,6 +4766,8 @@ interface PptxHandoutMaster {
|
|
|
4024
4766
|
slidesPerPage?: number;
|
|
4025
4767
|
/** Header/footer flags from `<p:hf>` on the handout master (P-H3). */
|
|
4026
4768
|
headerFooter?: PptxHeaderFooterFlags;
|
|
4769
|
+
/** Colour map from `<p:clrMap>` (12 alias attributes). Applied at save time. */
|
|
4770
|
+
clrMap?: Record<string, string>;
|
|
4027
4771
|
}
|
|
4028
4772
|
/**
|
|
4029
4773
|
* Active tab within the master view sidebar.
|
|
@@ -4075,6 +4819,11 @@ interface PptxSlideMaster {
|
|
|
4075
4819
|
txStyles?: PptxMasterTextStyles;
|
|
4076
4820
|
/** Header/footer flags from `<p:hf>` on this master (P-H3). */
|
|
4077
4821
|
headerFooter?: PptxHeaderFooterFlags;
|
|
4822
|
+
/**
|
|
4823
|
+
* Colour map from `<p:clrMap>` (12 alias attributes: bg1/tx1/bg2/tx2,
|
|
4824
|
+
* accent1-6, hlink, folHlink). Applied at save time when present.
|
|
4825
|
+
*/
|
|
4826
|
+
clrMap?: Record<string, string>;
|
|
4078
4827
|
}
|
|
4079
4828
|
/**
|
|
4080
4829
|
* Per-level paragraph properties for a text style category.
|
|
@@ -4301,6 +5050,32 @@ interface PptxActiveXControl {
|
|
|
4301
5050
|
/** Raw XML for round-trip preservation. */
|
|
4302
5051
|
rawXml?: XmlObject;
|
|
4303
5052
|
}
|
|
5053
|
+
/**
|
|
5054
|
+
* Pattern fill on a slide background.
|
|
5055
|
+
*
|
|
5056
|
+
* Mirrors the `<a:pattFill>` choice inside `<p:bgPr>`. Renderers should
|
|
5057
|
+
* draw a 2-colour preset pattern (e.g. `dkDnDiag`, `pct50`).
|
|
5058
|
+
*
|
|
5059
|
+
* ECMA-376 §20.1.8.47.
|
|
5060
|
+
*
|
|
5061
|
+
* @example
|
|
5062
|
+
* ```ts
|
|
5063
|
+
* const pattern: PptxSlideBackgroundPattern = {
|
|
5064
|
+
* preset: "ltDnDiag",
|
|
5065
|
+
* fgColor: "#4472C4",
|
|
5066
|
+
* bgColor: "#FFFFFF",
|
|
5067
|
+
* };
|
|
5068
|
+
* // => satisfies PptxSlideBackgroundPattern
|
|
5069
|
+
* ```
|
|
5070
|
+
*/
|
|
5071
|
+
interface PptxSlideBackgroundPattern {
|
|
5072
|
+
/** DrawingML preset pattern token (`@_prst`). */
|
|
5073
|
+
preset: string;
|
|
5074
|
+
/** Foreground colour resolved to `#RRGGBB`. */
|
|
5075
|
+
fgColor?: string;
|
|
5076
|
+
/** Background colour resolved to `#RRGGBB`. */
|
|
5077
|
+
bgColor?: string;
|
|
5078
|
+
}
|
|
4304
5079
|
/**
|
|
4305
5080
|
* A single slide in a parsed PPTX presentation.
|
|
4306
5081
|
*
|
|
@@ -4334,6 +5109,26 @@ interface PptxSlide {
|
|
|
4334
5109
|
backgroundColor?: string;
|
|
4335
5110
|
backgroundImage?: string;
|
|
4336
5111
|
backgroundGradient?: string;
|
|
5112
|
+
/**
|
|
5113
|
+
* Pattern fill on the slide background (`<a:pattFill>` inside `<p:bgPr>`).
|
|
5114
|
+
*
|
|
5115
|
+
* When present, renderers should draw a real two-colour pattern using
|
|
5116
|
+
* the named DrawingML preset (e.g. `"ltDnDiag"`, `"pct50"`). The flat
|
|
5117
|
+
* `backgroundColor` field is left set to the foreground colour for
|
|
5118
|
+
* fallback rendering paths that don't understand patterns.
|
|
5119
|
+
*
|
|
5120
|
+
* ECMA-376 §20.1.8.47.
|
|
5121
|
+
*/
|
|
5122
|
+
backgroundPattern?: PptxSlideBackgroundPattern;
|
|
5123
|
+
/**
|
|
5124
|
+
* `<p:bgPr/@shadeToTitle>` — boolean flag instructing the renderer to
|
|
5125
|
+
* shade the background toward the title placeholder colour. Captured
|
|
5126
|
+
* for lossless round-trip; the React renderer currently treats it as
|
|
5127
|
+
* a passthrough hint.
|
|
5128
|
+
*
|
|
5129
|
+
* ECMA-376 §19.3.1.2 (CT_BackgroundProperties).
|
|
5130
|
+
*/
|
|
5131
|
+
backgroundShadeToTitle?: boolean;
|
|
4337
5132
|
transition?: PptxSlideTransition;
|
|
4338
5133
|
animations?: PptxElementAnimation[];
|
|
4339
5134
|
/** Native OOXML animation data parsed from `p:timing`. */
|
|
@@ -4343,6 +5138,20 @@ interface PptxSlide {
|
|
|
4343
5138
|
notes?: string;
|
|
4344
5139
|
/** Rich text segments for the slide notes (preserves formatting). */
|
|
4345
5140
|
notesSegments?: TextSegment[];
|
|
5141
|
+
/**
|
|
5142
|
+
* Parsed shapes from the notes slide's `<p:cSld>/<p:spTree>` so the full
|
|
5143
|
+
* notes-page shape tree can be inspected and mutated, not just the body
|
|
5144
|
+
* placeholder text. When undefined, the existing notes XML is left
|
|
5145
|
+
* untouched on save and only `notes` / `notesSegments` are written.
|
|
5146
|
+
*/
|
|
5147
|
+
notesShapes?: PptxElement[];
|
|
5148
|
+
/**
|
|
5149
|
+
* Per-notes-slide colour map override parsed from `<p:notes>/<p:clrMapOvr>`.
|
|
5150
|
+
* Captured for lossless round-trip of the notes-slide's colour scheme.
|
|
5151
|
+
*/
|
|
5152
|
+
notesClrMapOverride?: Record<string, string>;
|
|
5153
|
+
/** Optional `<p:cSld @name>` value of the notes slide, for round-trip. */
|
|
5154
|
+
notesCSldName?: string;
|
|
4346
5155
|
comments?: PptxComment[];
|
|
4347
5156
|
warnings?: PptxCompatibilityWarning[];
|
|
4348
5157
|
rawXml?: XmlObject;
|
|
@@ -4794,4 +5603,4 @@ interface PptxEmbeddedFont {
|
|
|
4794
5603
|
originalPartBytes?: Uint8Array;
|
|
4795
5604
|
}
|
|
4796
5605
|
|
|
4797
|
-
export { type
|
|
5606
|
+
export { type ShapeStyle as $, type PptxSlideMaster as A, type PptxSlideLayout as B, type ConnectorPptxElement as C, type PptxTagCollection as D, type PptxPhotoAlbum as E, type PptxKinsoku as F, type PptxModifyVerifier as G, type PptxViewProperties as H, type InkPptxElement as I, type ParsedTableStyleMap as J, type PptxEmbeddedFont as K, type PptxExportOptions as L, type PptxThemeFormatScheme as M, type TextSegment as N, type PptxComment as O, type PptxElement as P, type PptxSlideBackgroundPattern as Q, type PptxSlideTransition as R, type ShapePptxElement as S, type TextPptxElement as T, type PptxElementAnimation as U, type PptxNativeAnimation as V, type PptxCustomerData as W, type XmlObject as X, type PptxActiveXControl as Y, type ZoomPptxElement as Z, type AnimationCondition as _, type PptxElementWithShapeStyle as a, type ImagePptxElement as a$, type TextStyle as a0, type ElementAction as a1, type PptxAction as a2, type OleObjectType as a3, type PptxSmartArtNode as a4, type SmartArtLayoutType as a5, type PptxSmartArtDrawingShape as a6, type PptxChartDataTable as a7, type PptxChartLineStyle as a8, type PptxChartErrBars as a9, type OlePptxElement as aA, type GroupPptxElement as aB, type PlaceholderTextLevelStyle as aC, type PptxChartOfPieOptions as aD, type PptxChartView3D as aE, type PptxChartChrome as aF, type PptxChartSeries as aG, type SmartArtPptxElement as aH, type GeometryAdjustmentHandle as aI, type CustomGeometryRawData as aJ, type AdjustHandleXY as aK, type AdjustHandlePolar as aL, type ConnectionSite as aM, type CustomGeometryTextRect as aN, type CustomGeometryPath as aO, type BulletInfo as aP, type PptxShapeLocks as aQ, type PptxTextStyleLevels as aR, type PptxThemeFillStyle as aS, type PptxThemeLineStyle as aT, type PptxThemeEffectStyle as aU, type PptxSmartArtChrome as aV, type PptxSmartArtColorTransform as aW, type PptxSmartArtQuickStyle as aX, type PptxExternalData as aY, type CustomGeometryPoint as aZ, type ChartPptxElement as a_, type PptxChartTrendline as aa, type PptxChartMarker as ab, type PptxChartDataLabel as ac, type PptxChartDataPoint as ad, type PptxChartShapeProps as ae, type PptxChart3DSurface as af, type PptxChartAxisFormatting as ag, type PptxEmbeddedWorkbookData as ah, type PptxDrawingGuide as ai, type PptxTableCellStyle as aj, type PptxCustomXmlPart as ak, type PptxCommentAuthor as al, type MediaPptxElement as am, type PptxTableData as an, type PptxTheme as ao, type PptxThemeOption as ap, type PlaceholderDefaults as aq, type PptxMasterTextStyles as ar, type PptxThemeObjectDefaults as as, type ParsedTableStyleFill as at, type ParsedTableBackground as au, type ParsedTableStyleText as av, type PptxImageEffects as aw, type MediaBookmark as ax, type PptxChartStyle as ay, type TablePptxElement as az, type PptxElementWithText as b, type PptxTextWarpPreset as b$, type ActionButtonPreset as b0, type AnimationConditionEvent as b1, type BevelPresetType as b2, type ConnectorConnectionPoint as b3, type ContentPartInkStroke as b4, type ContentPartPptxElement as b5, type CustomGeometrySegment as b6, type EffectDagBlend as b7, type EffectDagBlendMode as b8, type EffectDagContainer as b9, type PptxChartMarkerSymbol as bA, type PptxChartTrendlineType as bB, type PptxColorAnimation as bC, type PptxCommonSlideViewProperties as bD, type PptxCropShape as bE, type PptxCustomPathProperties as bF, type PptxElementBase as bG, type PptxElementType as bH, type PptxExportFormat as bI, type PptxGraphicFrameExtension as bJ, type PptxHeaderFooterFlags as bK, type PptxImageProperties as bL, type PptxMediaType as bM, type PptxNativeAnimationKind as bN, type PptxNormalViewProperties as bO, type PptxRestoredRegion as bP, type PptxShapeProperties as bQ, type PptxSmartArtConnection as bR, type PptxSplitDirection as bS, type PptxSplitOrientation as bT, type PptxStripDirection as bU, type PptxTableCell as bV, type PptxTableRow as bW, type PptxTag as bX, type PptxTextAnimationTarget as bY, type PptxTextBuildType as bZ, type PptxTextProperties as b_, type EffectDagContainerType as ba, type EffectDagNode as bb, type EffectDagRawLeaf as bc, type EffectDagRelOff as bd, type EffectDagXfrm as be, type ElementActionType as bf, type MasterViewTab as bg, type MaterialPresetType as bh, type MediaCaptionTrack as bi, type MediaMetadata as bj, type Model3DPptxElement as bk, type ParsedTableStyleEntry as bl, type PicturePptxElement as bm, type Pptx3DScene as bn, type Pptx3DShape as bo, type PptxAfterAnimationAction as bp, type PptxAnimationDirection as bq, type PptxAnimationIterate as br, type PptxAnimationKeyframe as bs, type PptxAnimationRepeatMode as bt, type PptxAnimationSequence as bu, type PptxAnimationTimingCurve as bv, type PptxChartAxisNumFmt as bw, type PptxChartErrBarDir as bx, type PptxChartErrBarType as by, type PptxChartErrValType as bz, type PptxImageLikeElement as c, type PptxThemeFontGroup as c0, type PptxTransitionDirection4 as c1, type PptxTransitionDirection8 as c2, type PptxViewOrigin as c3, type PptxViewScale as c4, type ShadowEffect as c5, type SmartArtColorScheme as c6, type SmartArtLayout as c7, type SmartArtStyle as c8, THEME_COLOR_SCHEME_KEYS as c9, TRANSITION_VALID_DIRECTIONS as ca, type Text3DStyle as cb, type UnderlineStyle as cc, type UnknownPptxElement as cd, type PptxThemeColorScheme as d, type PptxThemeFontScheme as e, type PptxAnimationPreset as f, type PptxAnimationTrigger as g, type StrokeDashType as h, type ConnectorArrowType as i, type PptxTransitionType as j, type PptxChartType as k, type PptxSlide as l, type PptxData as m, type PptxCompatibilityWarning as n, type PptxLayoutOption as o, type PptxChartData as p, type PptxSmartArtData as q, type PptxHeaderFooter as r, type PptxPresentationProperties as s, type PptxCustomShow as t, type PptxSection as u, type PptxCoreProperties as v, type PptxAppProperties as w, type PptxCustomProperty as x, type PptxNotesMaster as y, type PptxHandoutMaster as z };
|