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.
Files changed (26) hide show
  1. package/dist/index.js +353 -63
  2. package/dist/index.mjs +354 -64
  3. package/dist/viewer/index.js +353 -63
  4. package/dist/viewer/index.mjs +354 -64
  5. package/node_modules/emf-converter/package.json +1 -1
  6. package/node_modules/mtx-decompressor/package.json +1 -1
  7. package/node_modules/pptx-viewer-core/dist/{SvgExporter-BQ4KbRO9.d.mts → SvgExporter-BTkk4oNQ.d.mts} +1 -1
  8. package/node_modules/pptx-viewer-core/dist/{SvgExporter-0TxiiorD.d.ts → SvgExporter-CTDG-t_z.d.ts} +1 -1
  9. package/node_modules/pptx-viewer-core/dist/cli/index.d.mts +2 -2
  10. package/node_modules/pptx-viewer-core/dist/cli/index.d.ts +2 -2
  11. package/node_modules/pptx-viewer-core/dist/cli/index.js +0 -0
  12. package/node_modules/pptx-viewer-core/dist/cli/index.mjs +0 -0
  13. package/node_modules/pptx-viewer-core/dist/converter/index.d.mts +3 -3
  14. package/node_modules/pptx-viewer-core/dist/converter/index.d.ts +3 -3
  15. package/node_modules/pptx-viewer-core/dist/converter/index.js +0 -0
  16. package/node_modules/pptx-viewer-core/dist/converter/index.mjs +0 -0
  17. package/node_modules/pptx-viewer-core/dist/index.d.mts +867 -49
  18. package/node_modules/pptx-viewer-core/dist/index.d.ts +867 -49
  19. package/node_modules/pptx-viewer-core/dist/index.js +29459 -16809
  20. package/node_modules/pptx-viewer-core/dist/index.mjs +29443 -16809
  21. package/node_modules/pptx-viewer-core/dist/{presentation-ArhfImJ5.d.mts → presentation-4fhI3din.d.mts} +835 -26
  22. package/node_modules/pptx-viewer-core/dist/{presentation-ArhfImJ5.d.ts → presentation-4fhI3din.d.ts} +835 -26
  23. package/node_modules/pptx-viewer-core/dist/{text-operations-rhJV-A_W.d.ts → text-operations-B9EwbptL.d.ts} +1 -1
  24. package/node_modules/pptx-viewer-core/dist/{text-operations-CLj-sJyk.d.mts → text-operations-C89Jn6S0.d.mts} +1 -1
  25. package/node_modules/pptx-viewer-core/package.json +1 -1
  26. package/package.json +4 -4
@@ -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?: 'vertical' | 'vertical270' | 'eaVert' | 'wordArtVert' | 'wordArtVertRtl' | 'mongolianVert';
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
- /** Rotation angle in degrees for `p:animRot` (converted from 60000ths). */
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
- /** X scale factor (percentage / 100) for `p:animScale`. */
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
- /** Color delta (for "by" animations) as hex string. */
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
- /** Discriminator for the fill type. */
3789
- kind: 'solid' | 'gradient' | 'pattern' | 'none';
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 OleObjectType as $, type PptxTagCollection as A, type PptxPhotoAlbum as B, type ConnectorPptxElement as C, type PptxKinsoku as D, type PptxModifyVerifier as E, type PptxViewProperties as F, type PptxEmbeddedFont as G, type PptxExportOptions as H, type InkPptxElement as I, type PptxThemeFormatScheme as J, type TextSegment as K, type PptxComment as L, type PptxSlideTransition as M, type PptxElementAnimation as N, type PptxNativeAnimation as O, type PptxElement as P, type PptxCustomerData as Q, type PptxActiveXControl as R, type ShapePptxElement as S, type TextPptxElement as T, type AnimationCondition as U, type ShapeStyle as V, type TextStyle as W, type XmlObject as X, type ElementAction as Y, type ZoomPptxElement as Z, type PptxAction as _, type PptxElementWithShapeStyle as a, type MaterialPresetType as a$, type PptxSmartArtNode as a0, type SmartArtLayoutType as a1, type PptxSmartArtDrawingShape as a2, type PptxChartDataTable as a3, type PptxChartLineStyle as a4, type PptxChartErrBars as a5, type PptxChartTrendline as a6, type PptxChartMarker as a7, type PptxChartDataLabel as a8, type PptxChartDataPoint as a9, type PptxChartSeries as aA, type SmartArtPptxElement as aB, type GeometryAdjustmentHandle as aC, type CustomGeometryRawData as aD, type CustomGeometryPath as aE, type BulletInfo as aF, type PptxShapeLocks as aG, type PptxTextStyleLevels as aH, type PptxThemeFillStyle as aI, type PptxThemeLineStyle as aJ, type PptxThemeEffectStyle as aK, type PptxSmartArtChrome as aL, type PptxSmartArtColorTransform as aM, type PptxSmartArtQuickStyle as aN, type PptxExternalData as aO, type CustomGeometryPoint as aP, type ChartPptxElement as aQ, type ImagePptxElement as aR, type ActionButtonPreset as aS, type AnimationConditionEvent as aT, type BevelPresetType as aU, type ConnectorConnectionPoint as aV, type ContentPartInkStroke as aW, type ContentPartPptxElement as aX, type CustomGeometrySegment as aY, type ElementActionType as aZ, type MasterViewTab as a_, type PptxChartShapeProps as aa, type PptxChart3DSurface as ab, type PptxChartAxisFormatting as ac, type PptxEmbeddedWorkbookData as ad, type PptxDrawingGuide as ae, type PptxTableCellStyle as af, type PptxCustomXmlPart as ag, type PptxCommentAuthor as ah, type MediaPptxElement as ai, type PptxTableData as aj, type PptxTheme as ak, type ParsedTableStyleMap as al, type PptxSlideMaster as am, type PptxThemeOption as an, type PlaceholderDefaults as ao, type PptxMasterTextStyles as ap, type PptxThemeObjectDefaults as aq, type ParsedTableStyleFill as ar, type ParsedTableStyleText as as, type PptxImageEffects as at, type MediaBookmark as au, type PptxChartStyle as av, type TablePptxElement as aw, type OlePptxElement as ax, type GroupPptxElement as ay, type PlaceholderTextLevelStyle as az, type PptxElementWithText as b, type MediaCaptionTrack as b0, type MediaMetadata as b1, type Model3DPptxElement as b2, type ParsedTableStyleEntry as b3, type PicturePptxElement as b4, type Pptx3DScene as b5, type Pptx3DShape as b6, type PptxAfterAnimationAction as b7, type PptxAnimationDirection as b8, type PptxAnimationIterate as b9, type PptxStripDirection as bA, type PptxTableCell as bB, type PptxTableRow as bC, type PptxTag as bD, type PptxTextAnimationTarget as bE, type PptxTextBuildType as bF, type PptxTextProperties as bG, type PptxTextWarpPreset as bH, type PptxThemeFontGroup as bI, type PptxTransitionDirection4 as bJ, type PptxTransitionDirection8 as bK, type PptxViewOrigin as bL, type PptxViewScale as bM, type ShadowEffect as bN, type SmartArtColorScheme as bO, type SmartArtLayout as bP, type SmartArtStyle as bQ, THEME_COLOR_SCHEME_KEYS as bR, TRANSITION_VALID_DIRECTIONS as bS, type Text3DStyle as bT, type UnderlineStyle as bU, type UnknownPptxElement as bV, type PptxAnimationRepeatMode as ba, type PptxAnimationSequence as bb, type PptxAnimationTimingCurve as bc, type PptxChartAxisNumFmt as bd, type PptxChartErrBarDir as be, type PptxChartErrBarType as bf, type PptxChartErrValType as bg, type PptxChartMarkerSymbol as bh, type PptxChartTrendlineType as bi, type PptxColorAnimation as bj, type PptxCommonSlideViewProperties as bk, type PptxCropShape as bl, type PptxCustomPathProperties as bm, type PptxElementBase as bn, type PptxElementType as bo, type PptxExportFormat as bp, type PptxHeaderFooterFlags as bq, type PptxImageProperties as br, type PptxMediaType as bs, type PptxNormalViewProperties as bt, type PptxRestoredRegion as bu, type PptxShapeProperties as bv, type PptxSlideLayout as bw, type PptxSmartArtConnection as bx, type PptxSplitDirection as by, type PptxSplitOrientation as bz, type PptxImageLikeElement as c, 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 };
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 };