@office-kit/pptx 0.21.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -192,6 +192,11 @@ interface XmlDocument {
192
192
  //#endregion
193
193
  //#region src/internal/enum-values.d.ts
194
194
  declare const PLACEHOLDER_TYPES: readonly ["title", "body", "ctrTitle", "subTitle", "dt", "sldNum", "ftr", "hdr", "obj", "chart", "tbl", "clipArt", "dgm", "media", "sldImg", "pic"];
195
+ declare const CAMERA_PRESETS: readonly ["legacyObliqueTopLeft", "legacyObliqueTop", "legacyObliqueTopRight", "legacyObliqueLeft", "legacyObliqueFront", "legacyObliqueRight", "legacyObliqueBottomLeft", "legacyObliqueBottom", "legacyObliqueBottomRight", "legacyPerspectiveTopLeft", "legacyPerspectiveTop", "legacyPerspectiveTopRight", "legacyPerspectiveLeft", "legacyPerspectiveFront", "legacyPerspectiveRight", "legacyPerspectiveBottomLeft", "legacyPerspectiveBottom", "legacyPerspectiveBottomRight", "orthographicFront", "isometricTopUp", "isometricTopDown", "isometricBottomUp", "isometricBottomDown", "isometricLeftUp", "isometricLeftDown", "isometricRightUp", "isometricRightDown", "isometricOffAxis1Left", "isometricOffAxis1Right", "isometricOffAxis1Top", "isometricOffAxis2Left", "isometricOffAxis2Right", "isometricOffAxis2Top", "isometricOffAxis3Left", "isometricOffAxis3Right", "isometricOffAxis3Bottom", "isometricOffAxis4Left", "isometricOffAxis4Right", "isometricOffAxis4Bottom", "obliqueTopLeft", "obliqueTop", "obliqueTopRight", "obliqueLeft", "obliqueRight", "obliqueBottomLeft", "obliqueBottom", "obliqueBottomRight", "perspectiveFront", "perspectiveLeft", "perspectiveRight", "perspectiveAbove", "perspectiveBelow", "perspectiveAboveLeftFacing", "perspectiveAboveRightFacing", "perspectiveContrastingLeftFacing", "perspectiveContrastingRightFacing", "perspectiveHeroicLeftFacing", "perspectiveHeroicRightFacing", "perspectiveHeroicExtremeLeftFacing", "perspectiveHeroicExtremeRightFacing", "perspectiveRelaxed", "perspectiveRelaxedModerately"];
196
+ declare const LIGHT_RIG_TYPES: readonly ["legacyFlat1", "legacyFlat2", "legacyFlat3", "legacyFlat4", "legacyNormal1", "legacyNormal2", "legacyNormal3", "legacyNormal4", "legacyHarsh1", "legacyHarsh2", "legacyHarsh3", "legacyHarsh4", "threePt", "balanced", "soft", "harsh", "flood", "contrasting", "morning", "sunrise", "sunset", "chilly", "freezing", "flat", "twoPt", "glow", "brightRoom"];
197
+ declare const LIGHT_RIG_DIRECTIONS: readonly ["tl", "t", "tr", "l", "r", "bl", "b", "br"];
198
+ declare const BEVEL_PRESETS: readonly ["relaxedInset", "circle", "slope", "cross", "angle", "softRound", "convex", "coolSlant", "divot", "riblet", "hardEdge", "artDeco"];
199
+ declare const PRESET_MATERIALS: readonly ["legacyMatte", "legacyPlastic", "legacyMetal", "legacyWireframe", "matte", "plastic", "metal", "warmMatte", "translucentPowder", "powder", "dkEdge", "softEdge", "clear", "flat", "softmetal"];
195
200
  //#endregion
196
201
  //#region src/internal/presentationml/slide-part.d.ts
197
202
  type ShapeKind = 'shape' | 'picture' | 'group' | 'graphicFrame' | 'connector';
@@ -260,6 +265,15 @@ interface SlideLayoutPart {
260
265
  */
261
266
  type PresetShape = 'rect' | 'roundRect' | 'ellipse' | 'triangle' | 'rtTriangle' | 'diamond' | 'parallelogram' | 'trapezoid' | 'pentagon' | 'hexagon' | 'heptagon' | 'octagon' | 'decagon' | 'star4' | 'star5' | 'star6' | 'star7' | 'star8' | 'star10' | 'star12' | 'star16' | 'star24' | 'star32' | 'rightArrow' | 'leftArrow' | 'upArrow' | 'downArrow' | 'leftRightArrow' | 'upDownArrow' | 'bentArrow' | 'curvedRightArrow' | 'curvedLeftArrow' | 'curvedUpArrow' | 'curvedDownArrow' | 'cloud' | 'heart' | 'lightningBolt' | 'sun' | 'moon' | 'bracketPair' | 'bracePair' | 'leftBracket' | 'rightBracket' | 'leftBrace' | 'rightBrace' | 'cube' | 'can' | 'donut' | 'noSmoking' | 'plus' | 'mathPlus' | 'mathMinus' | 'mathMultiply' | 'mathDivide' | 'mathEqual' | 'mathNotEqual';
262
267
  //#endregion
268
+ //#region src/internal/drawingml/color-transforms.d.ts
269
+ /** Ordered DrawingML color adjustments. Percentages are fractions; hue angles are degrees. */
270
+ type ColorTransform = {
271
+ readonly kind: 'comp' | 'inv' | 'gray' | 'gamma' | 'invGamma';
272
+ } | {
273
+ readonly kind: 'tint' | 'shade' | 'alpha' | 'alphaOff' | 'alphaMod' | 'hue' | 'hueOff' | 'hueMod' | 'sat' | 'satOff' | 'satMod' | 'lum' | 'lumOff' | 'lumMod' | 'red' | 'redOff' | 'redMod' | 'green' | 'greenOff' | 'greenMod' | 'blue' | 'blueOff' | 'blueMod';
274
+ readonly value: number;
275
+ };
276
+ //#endregion
263
277
  //#region src/internal/drawingml/color.d.ts
264
278
  declare const SCHEME_COLOR_TOKENS: readonly ["bg1", "tx1", "bg2", "tx2", "accent1", "accent2", "accent3", "accent4", "accent5", "accent6", "hlink", "folHlink", "phClr", "lt1", "dk1", "lt2", "dk2"];
265
279
  /** A theme color slot (`<a:schemeClr val="..."/>`). */
@@ -290,6 +304,178 @@ type Color = HexColor | SchemeColorToken | `scheme:${SchemeColorToken}`;
290
304
  */
291
305
  declare const asColor: (value: string) => Color | null;
292
306
  //#endregion
307
+ //#region src/internal/drawingml/effects.d.ts
308
+ interface ShadowOptions {
309
+ /** `#RRGGBB`, bare `RRGGBB`, or scheme token. Defaults to black. */
310
+ readonly color?: Color;
311
+ /**
312
+ * Ordered adjustments to `color` (`<a:lumMod>`, `<a:tint>`, ...), written
313
+ * as its children — the same field gradient stops take. Requires `color`.
314
+ * An `opacity` that differs from the one these transforms state wins.
315
+ */
316
+ readonly colorTransforms?: readonly ColorTransform[];
317
+ /** Edge blur in EMU. Defaults to 50800 (4pt). */
318
+ readonly blurEmu?: number;
319
+ /** Offset distance in EMU. Defaults to 38100 (3pt). */
320
+ readonly offsetEmu?: number;
321
+ /**
322
+ * Direction in degrees, measured clockwise from the right (3 o'clock).
323
+ * Defaults to 45° (down-right).
324
+ */
325
+ readonly angleDeg?: number;
326
+ /** Opacity (0–1). Defaults to fully opaque. */
327
+ readonly opacity?: number;
328
+ /** Transform anchor; defaults to top left (`tl`) for authored shadows. */
329
+ readonly alignment?: 'tl' | 't' | 'tr' | 'l' | 'ctr' | 'r' | 'bl' | 'b' | 'br';
330
+ /** Whether the shadow rotates with its shape; defaults to false. */
331
+ readonly rotateWithShape?: boolean;
332
+ }
333
+ /** Character or shape inner-shadow parameters from `<a:innerShdw>`. */
334
+ interface InnerShadowOptions {
335
+ /** `#RRGGBB`, bare `RRGGBB`, or scheme token. Defaults to black. */
336
+ readonly color?: Color;
337
+ /**
338
+ * Ordered adjustments to `color` (`<a:lumMod>`, `<a:tint>`, ...), written
339
+ * as its children — the same field gradient stops take. Requires `color`.
340
+ * An `opacity` that differs from the one these transforms state wins.
341
+ */
342
+ readonly colorTransforms?: readonly ColorTransform[];
343
+ /** Edge blur in EMU. Defaults to 50800 (4pt). */
344
+ readonly blurEmu?: number;
345
+ /** Offset distance in EMU. Defaults to 38100 (3pt). */
346
+ readonly offsetEmu?: number;
347
+ /** Direction in degrees, measured clockwise from the right. Defaults to 45°. */
348
+ readonly angleDeg?: number;
349
+ /** Opacity (0–1). Defaults to fully opaque. */
350
+ readonly opacity?: number;
351
+ }
352
+ interface GlowOptions {
353
+ /** `#RRGGBB`, bare `RRGGBB`, or scheme token. */
354
+ readonly color: Color;
355
+ /**
356
+ * Ordered adjustments to `color` (`<a:lumMod>`, `<a:tint>`, ...), written
357
+ * as its children — the same field gradient stops take. Requires `color`.
358
+ * An `opacity` that differs from the one these transforms state wins.
359
+ */
360
+ readonly colorTransforms?: readonly ColorTransform[];
361
+ /** Glow radius in EMU. Defaults to 63500 (5pt). */
362
+ readonly radiusEmu?: number;
363
+ /** Opacity (0–1). Defaults to fully opaque. */
364
+ readonly opacity?: number;
365
+ }
366
+ /** Character reflection parameters from DrawingML's `<a:reflection>`. */
367
+ interface ReflectionOptions {
368
+ /** Blur radius in EMU; defaults to zero. */
369
+ readonly blurEmu?: number;
370
+ /** Offset distance in EMU; defaults to zero. */
371
+ readonly offsetEmu?: number;
372
+ /** Offset direction in clockwise degrees from right; defaults to zero. */
373
+ readonly angleDeg?: number;
374
+ /** Ending opacity (0–1); defaults to zero (`endA`). */
375
+ readonly opacity?: number;
376
+ /** Starting opacity (0–1); defaults to one. */
377
+ readonly startOpacity?: number;
378
+ /** Starting fade position (0–1); defaults to zero. */
379
+ readonly startPosition?: number;
380
+ /** Ending fade position (0–1); defaults to one. */
381
+ readonly endPosition?: number;
382
+ /** Fade direction in clockwise degrees from right; defaults to 90. */
383
+ readonly fadeDirection?: number;
384
+ /** Horizontal scale; defaults to one. Negative values mirror horizontally. */
385
+ readonly scaleX?: number;
386
+ /** Vertical scale; defaults to one. Negative values mirror vertically. */
387
+ readonly scaleY?: number;
388
+ /** Horizontal skew in degrees, strictly between -90 and 90. */
389
+ readonly skewX?: number;
390
+ /** Vertical skew in degrees, strictly between -90 and 90. */
391
+ readonly skewY?: number;
392
+ /** Transform anchor; defaults to bottom center (`b`). */
393
+ readonly alignment?: 'tl' | 't' | 'tr' | 'l' | 'ctr' | 'r' | 'bl' | 'b' | 'br';
394
+ /** Whether the effect rotates with its shape; defaults to true. */
395
+ readonly rotateWithShape?: boolean;
396
+ }
397
+ //#endregion
398
+ //#region src/internal/drawingml/fill.d.ts
399
+ /** One stop in a linear gradient. */
400
+ interface GradientStop {
401
+ /** Position on the gradient axis, 0-1. */
402
+ readonly offset: number;
403
+ /** `#RRGGBB`, the `#RGB` shorthand, or a theme color token. */
404
+ readonly color: Color;
405
+ /** Ordered imported color adjustments. Brightness and opacity override their corresponding transforms when changed. */
406
+ readonly colorTransforms?: readonly ColorTransform[];
407
+ /** Opacity from 0 (transparent) to 1 (opaque). */
408
+ readonly opacity?: number;
409
+ /** PowerPoint brightness from -1 (black) to 1 (white); 0 leaves the color unchanged. */
410
+ readonly brightness?: number;
411
+ }
412
+ interface GradientFillOptions {
413
+ /** Two or more color stops along the axis. */
414
+ readonly stops: ReadonlyArray<GradientStop>;
415
+ /**
416
+ * Gradient axis angle, in degrees. ECMA-376 measures clockwise from
417
+ * the right (3 o'clock); `0` is a left-to-right gradient, `90` is
418
+ * top-to-bottom, `180` right-to-left, `270` bottom-to-top. Defaults
419
+ * to `90` (top → bottom). Only meaningful for linear gradients.
420
+ */
421
+ readonly angleDeg?: number;
422
+ /** Rotate the gradient with the shape. Defaults to true. */
423
+ readonly rotateWithShape?: boolean;
424
+ /** Scale a linear gradient with the shape's aspect ratio. Defaults to false. */
425
+ readonly scaled?: boolean;
426
+ /**
427
+ * Non-linear gradient path. `circle` paints concentric circles,
428
+ * `rect` paints nested rectangles, `shape` follows the shape's
429
+ * outline. Absent / `'linear'` → linear gradient using `angleDeg`.
430
+ * Mirrors ECMA-376 §20.1.8.33 `<a:path path="…"/>`.
431
+ */
432
+ readonly path?: 'linear' | 'circle' | 'rect' | 'shape';
433
+ /**
434
+ * Focus rectangle for non-linear gradients, expressed as fractional insets
435
+ * from each corresponding edge (1 = 100%). Four 0.5 insets describe
436
+ * a point at the center; left/top 1 and right/bottom 0 describe the
437
+ * bottom-right corner. Mirrors `<a:fillToRect>`.
438
+ */
439
+ readonly focus?: {
440
+ readonly left: number;
441
+ readonly top: number;
442
+ readonly right: number;
443
+ readonly bottom: number;
444
+ };
445
+ /**
446
+ * Gradient tile bounds as fractional insets from the shape's edges.
447
+ * Negative values extend the tile beyond that edge. Mac PowerPoint uses
448
+ * right/bottom -1 for its bottom-right radial direction. Mirrors `<a:tileRect>`.
449
+ */
450
+ readonly tileRect?: GradientFillOptions['focus'];
451
+ }
452
+ /**
453
+ * A gradient read back from a deck. Stop colors widen to `string`: the
454
+ * readers surface a scheme token verbatim, including one outside the theme,
455
+ * rather than dropping it.
456
+ */
457
+ type ReadGradientStop = Omit<GradientStop, 'color'> & {
458
+ readonly color: string; /** Theme- and transform-resolved color, supplied by the effective shape reader. */
459
+ readonly resolvedColor?: string;
460
+ };
461
+ type ReadGradientFill = Omit<GradientFillOptions, 'stops'> & {
462
+ readonly stops: ReadonlyArray<ReadGradientStop>;
463
+ };
464
+ /** Every `ST_PresetPatternVal` token (ECMA-376 dml-main.xsd). */
465
+ declare const PATTERN_PRESETS: readonly ["pct5", "pct10", "pct20", "pct25", "pct30", "pct40", "pct50", "pct60", "pct70", "pct75", "pct80", "pct90", "horz", "vert", "ltHorz", "ltVert", "dkHorz", "dkVert", "narHorz", "narVert", "dashHorz", "dashVert", "cross", "dnDiag", "upDiag", "ltDnDiag", "ltUpDiag", "dkDnDiag", "dkUpDiag", "wdDnDiag", "wdUpDiag", "dashDnDiag", "dashUpDiag", "diagCross", "smCheck", "lgCheck", "smGrid", "lgGrid", "dotGrid", "smConfetti", "lgConfetti", "horzBrick", "diagBrick", "solidDmnd", "openDmnd", "dotDmnd", "plaid", "sphere", "weave", "divot", "shingle", "wave", "trellis", "zigZag"];
466
+ /** One of ECMA-376's `ST_PresetPatternVal` tokens (`pct50`, `dkUpDiag`, ...). */
467
+ type PatternPreset = (typeof PATTERN_PRESETS)[number];
468
+ interface PatternFillOptions {
469
+ /** Preset pattern token, e.g. `'pct50'`, `'dkUpDiag'`, `'wave'`. */
470
+ readonly preset: PatternPreset;
471
+ /** Foreground (pattern stroke) color. `#RRGGBB`, bare `RRGGBB`, or scheme token. */
472
+ readonly foreground: string;
473
+ /** Background (fill behind the pattern) color. */
474
+ readonly background: string;
475
+ readonly foregroundTransforms?: readonly ColorTransform[];
476
+ readonly backgroundTransforms?: readonly ColorTransform[];
477
+ }
478
+ //#endregion
293
479
  //#region src/internal/drawingml/text-format.d.ts
294
480
  interface TextFormat {
295
481
  /** Latin font family (`Calibri`, `Arial`, ...). Sets `<a:latin>`. */
@@ -314,6 +500,18 @@ interface TextFormat {
314
500
  * (`tx1`, `accent1`, ...), or `null` to clear.
315
501
  */
316
502
  color?: Color | null;
503
+ /**
504
+ * Ordered adjustments to `color` (`<a:lumMod>`, `<a:tint>`, `<a:alpha>`,
505
+ * ...), written as children of its color element — PowerPoint's theme
506
+ * tints, such as Accent 2 Lighter 60%. Same field as on gradient stops;
507
+ * requires `color`, and replaces any transforms the run's color had.
508
+ */
509
+ colorTransforms?: readonly ColorTransform[];
510
+ /**
511
+ * Non-solid glyph fill. The `color` field remains the shorthand for a solid
512
+ * fill. Both are the same OOXML fill choice, so supplying both is rejected.
513
+ */
514
+ textFill?: TextFill;
317
515
  bold?: boolean;
318
516
  italic?: boolean;
319
517
  /**
@@ -322,6 +520,12 @@ interface TextFormat {
322
520
  * `'dash'`, ...).
323
521
  */
324
522
  underline?: boolean | string;
523
+ /**
524
+ * Underline color. `null` explicitly follows the run's text color via
525
+ * `<a:uFillTx>`; omit the property to leave an existing underline fill
526
+ * untouched.
527
+ */
528
+ underlineColor?: Color | null;
325
529
  /**
326
530
  * Strikethrough style. `true` is shorthand for `'sngStrike'` (single
327
531
  * line). Pass the exact `ST_TextStrikeType` token (`'sngStrike'`,
@@ -336,9 +540,12 @@ interface TextFormat {
336
540
  /**
337
541
  * Kerning threshold in 1/100 points (`ST_TextNonNegativePoint`, the same
338
542
  * unit as `spc`): `0` disables kerning, `1200` = apply kerning for runs
339
- * ≥12pt. Mirrors `<a:rPr kern="…"/>`.
543
+ * ≥12pt. Mirrors `<a:rPr kern="…"/>`. Mac PowerPoint was observed to
544
+ * save the value as `kern="0"` when its Use kerning checkbox is cleared.
340
545
  */
341
546
  kern?: number;
547
+ /** Normalize character heights (`<a:rPr normalizeH>`; PowerPoint's Equalize character height). */
548
+ normalizeHeight?: boolean;
342
549
  /**
343
550
  * Baseline offset as a fraction of 1 (`0.3` = superscript ~30% up,
344
551
  * `-0.25` = subscript). PowerPoint emits ST_Percentage; this getter
@@ -355,16 +562,85 @@ interface TextFormat {
355
562
  * format as `color`. Mirrors `<a:rPr><a:highlight>…</a:highlight></a:rPr>`.
356
563
  */
357
564
  highlight?: Color | null;
565
+ /**
566
+ * Outline drawn around the glyphs — `<a:rPr><a:ln>`, the character-level
567
+ * twin of `setShapeStroke`. `null` removes it, which is not the same as
568
+ * an outline of width 0: removing restores what the run inherits.
569
+ */
570
+ outline?: TextOutline | null;
571
+ /**
572
+ * Drop shadow behind the glyphs — `<a:outerShdw>` in the run's own
573
+ * `<a:effectLst>`. `null` removes it.
574
+ */
575
+ shadow?: ShadowOptions | null;
576
+ /** Inner shadow inside the glyphs — `<a:innerShdw>` in the run's effect list. */
577
+ innerShadow?: InnerShadowOptions | null;
578
+ /**
579
+ * Glow around the glyphs — `<a:glow>` in the run's own `<a:effectLst>`.
580
+ * `null` removes it.
581
+ */
582
+ glow?: GlowOptions | null;
583
+ /** Reflection below the glyphs — `<a:reflection>` in the run's effect list. */
584
+ reflection?: ReflectionOptions | null;
585
+ }
586
+ type TextFill = ({
587
+ readonly kind: 'gradient';
588
+ } & GradientFillOptions) | ({
589
+ readonly kind: 'pattern';
590
+ } & PatternFillOptions);
591
+ type ReadTextFill = ({
592
+ readonly kind: 'gradient';
593
+ } & ReadGradientFill) | {
594
+ readonly kind: 'pattern';
595
+ readonly preset: PatternFillOptions['preset'];
596
+ readonly foreground: string;
597
+ readonly background: string;
598
+ readonly foregroundTransforms?: PatternFillOptions['foregroundTransforms'];
599
+ readonly backgroundTransforms?: PatternFillOptions['backgroundTransforms'];
600
+ };
601
+ /** A run's outline: `CT_LineProperties` as far as text uses it. */
602
+ interface TextOutline {
603
+ /** Same accepted forms as `TextFormat.color`. */
604
+ readonly color?: Color;
605
+ /** Ordered adjustments to `color`, as on `TextFormat.colorTransforms`. Requires `color`. */
606
+ readonly colorTransforms?: readonly ColorTransform[];
607
+ /** Line width in EMU. PowerPoint's thinnest visible text outline is 9525 (0.75pt). */
608
+ readonly widthEmu?: number;
358
609
  }
359
610
  /**
360
611
  * A run format read back from a deck. `color` and `highlight` widen to
361
612
  * `string`: when no theme is supplied, or a token is not in the scheme, the
362
613
  * readers surface the raw `<a:schemeClr val>` token as-is.
363
614
  */
364
- type ReadTextFormat = Omit<TextFormat, 'color' | 'highlight'> & {
615
+ type ReadTextFormat = Omit<TextFormat, 'color' | 'textFill' | 'underlineColor' | 'highlight' | 'outline' | 'shadow' | 'innerShadow' | 'glow' | 'reflection'> & {
365
616
  color?: string | null;
617
+ underlineColor?: string | null;
366
618
  highlight?: string | null;
619
+ outline?: ReadTextOutline | null;
620
+ shadow?: (Omit<ShadowOptions, 'color'> & {
621
+ readonly color?: string;
622
+ }) | null;
623
+ innerShadow?: (Omit<InnerShadowOptions, 'color'> & {
624
+ readonly color?: string;
625
+ }) | null;
626
+ glow?: (Omit<GlowOptions, 'color'> & {
627
+ readonly color: string;
628
+ }) | null;
629
+ reflection?: ReflectionOptions | null;
630
+ textFill?: ReadTextFill;
631
+ };
632
+ /** A run outline read back from a deck. `color` widens for the same reason. */
633
+ type ReadTextOutline = Omit<TextOutline, 'color'> & {
634
+ readonly color?: string;
367
635
  };
636
+ /**
637
+ * Converts a format read back from a deck into one a writer accepts. The
638
+ * readers widen every color to `string`, because a deck can hold a scheme
639
+ * token that is not in its theme; this checks each one and drops the property
640
+ * (or, for a glow, the whole effect) when the writer would reject it, so the
641
+ * round trip never writes a color the schema has no room for.
642
+ */
643
+ declare const toWritableTextFormat: (format: ReadTextFormat) => TextFormat;
368
644
  //#endregion
369
645
  //#region src/internal/drawingml/text-body-mutation.d.ts
370
646
  /**
@@ -418,89 +694,63 @@ interface ParagraphSpec {
418
694
  readonly endFormat?: TextFormat;
419
695
  }
420
696
  //#endregion
421
- //#region src/internal/drawingml/fill.d.ts
422
- /** One stop in a linear gradient. */
423
- interface GradientStop {
424
- /** Position on the gradient axis, 0-1. */
425
- readonly offset: number;
426
- /** `#RRGGBB`, the `#RGB` shorthand, or a theme color token. */
427
- readonly color: Color;
697
+ //#region src/internal/drawingml/text-3d.d.ts
698
+ /** ECMA-376 `ST_PresetCameraType`; PowerPoint's flat WordArt uses `'orthographicFront'`. */
699
+ type CameraPreset = (typeof CAMERA_PRESETS)[number];
700
+ /** ECMA-376 `ST_LightRigType` (`'threePt'`, `'soft'`, `'harsh'`, ...). */
701
+ type LightRigType = (typeof LIGHT_RIG_TYPES)[number];
702
+ /** ECMA-376 `ST_LightRigDirection`: where the light rig sits relative to the scene. */
703
+ type LightRigDirection = (typeof LIGHT_RIG_DIRECTIONS)[number];
704
+ /** ECMA-376 `ST_BevelPresetType` (`'circle'`, `'angle'`, `'softRound'`, ...). */
705
+ type BevelPreset = (typeof BEVEL_PRESETS)[number];
706
+ /** ECMA-376 `ST_PresetMaterialType` (`'matte'`, `'softEdge'`, `'metal'`, ...). */
707
+ type PresetMaterial = (typeof PRESET_MATERIALS)[number];
708
+ /** `CT_SphereCoords`: a rotation in degrees, each in `[0, 360)`. */
709
+ interface Rotation3D {
710
+ readonly latitudeDeg: number;
711
+ readonly longitudeDeg: number;
712
+ readonly revolutionDeg: number;
428
713
  }
429
- interface GradientFillOptions {
430
- /** Two or more color stops along the axis. */
431
- readonly stops: ReadonlyArray<GradientStop>;
432
- /**
433
- * Gradient axis angle, in degrees. ECMA-376 measures clockwise from
434
- * the right (3 o'clock); `0` is a left-to-right gradient, `90` is
435
- * top-to-bottom, `180` right-to-left, `270` bottom-to-top. Defaults
436
- * to `90` (top → bottom). Only meaningful for linear gradients.
437
- */
438
- readonly angleDeg?: number;
439
- /**
440
- * Non-linear gradient path. `circle` paints concentric circles,
441
- * `rect` paints nested rectangles, `shape` follows the shape's
442
- * outline. Absent / `'linear'` → linear gradient using `angleDeg`.
443
- * Mirrors ECMA-376 §20.1.8.33 `<a:path path="…"/>`.
444
- */
445
- readonly path?: 'linear' | 'circle' | 'rect' | 'shape';
446
- /**
447
- * Focus rectangle for non-linear gradients, in unit coordinates
448
- * (0 = left/top, 1 = right/bottom). When omitted, defaults to a
449
- * single point at the rectangle's center. Mirrors `<a:fillToRect>`.
450
- */
451
- readonly focus?: {
452
- readonly left: number;
453
- readonly top: number;
454
- readonly right: number;
455
- readonly bottom: number;
456
- };
714
+ /** `<a:lightRig>`. */
715
+ interface LightRig {
716
+ readonly type: LightRigType;
717
+ readonly direction: LightRigDirection;
718
+ /** `<a:rot>`; omitted, the rig keeps its preset orientation. */
719
+ readonly rotation?: Rotation3D;
457
720
  }
458
- /**
459
- * A gradient read back from a deck. Stop colors widen to `string`: the
460
- * readers surface a scheme token verbatim, including one outside the theme,
461
- * rather than dropping it.
462
- */
463
- type ReadGradientStop = Omit<GradientStop, 'color'> & {
464
- readonly color: string;
465
- };
466
- type ReadGradientFill = Omit<GradientFillOptions, 'stops'> & {
467
- readonly stops: ReadonlyArray<ReadGradientStop>;
468
- };
469
- /** Every `ST_PresetPatternVal` token (ECMA-376 dml-main.xsd). */
470
- declare const PATTERN_PRESETS: readonly ["pct5", "pct10", "pct20", "pct25", "pct30", "pct40", "pct50", "pct60", "pct70", "pct75", "pct80", "pct90", "horz", "vert", "ltHorz", "ltVert", "dkHorz", "dkVert", "narHorz", "narVert", "dashHorz", "dashVert", "cross", "dnDiag", "upDiag", "ltDnDiag", "ltUpDiag", "dkDnDiag", "dkUpDiag", "wdDnDiag", "wdUpDiag", "dashDnDiag", "dashUpDiag", "diagCross", "smCheck", "lgCheck", "smGrid", "lgGrid", "dotGrid", "smConfetti", "lgConfetti", "horzBrick", "diagBrick", "solidDmnd", "openDmnd", "dotDmnd", "plaid", "sphere", "weave", "divot", "shingle", "wave", "trellis", "zigZag"];
471
- /** One of ECMA-376's `ST_PresetPatternVal` tokens (`pct50`, `dkUpDiag`, ...). */
472
- type PatternPreset = (typeof PATTERN_PRESETS)[number];
473
- interface PatternFillOptions {
474
- /** Preset pattern token, e.g. `'pct50'`, `'dkUpDiag'`, `'wave'`. */
475
- readonly preset: PatternPreset;
476
- /** Foreground (pattern stroke) color. `#RRGGBB`, bare `RRGGBB`, or scheme token. */
477
- readonly foreground: string;
478
- /** Background (fill behind the pattern) color. */
479
- readonly background: string;
721
+ /** `<a:scene3d>`: the camera and light the 3-D text is rendered with. */
722
+ interface Scene3D {
723
+ readonly camera: CameraPreset;
724
+ readonly lightRig: LightRig;
480
725
  }
481
- //#endregion
482
- //#region src/internal/drawingml/effects.d.ts
483
- interface ShadowOptions {
484
- /** `#RRGGBB`, bare `RRGGBB`, or scheme token. Defaults to black. */
485
- readonly color?: Color;
486
- /** Edge blur in EMU. Defaults to 50800 (4pt). */
487
- readonly blurEmu?: number;
488
- /** Offset distance in EMU. Defaults to 38100 (3pt). */
489
- readonly offsetEmu?: number;
490
- /**
491
- * Direction in degrees, measured clockwise from the right (3 o'clock).
492
- * Defaults to 45° (down-right).
493
- */
494
- readonly angleDeg?: number;
495
- /** Opacity (0–1). Defaults to fully opaque. */
496
- readonly opacity?: number;
726
+ /** `CT_Bevel`. Omitted fields take the schema defaults: `circle`, 76200 × 76200 EMU. */
727
+ interface Bevel {
728
+ readonly preset?: BevelPreset;
729
+ readonly widthEmu?: number;
730
+ readonly heightEmu?: number;
497
731
  }
498
- interface GlowOptions {
499
- /** `#RRGGBB`, bare `RRGGBB`, or scheme token. */
500
- readonly color: Color;
501
- /** Glow radius in EMU. Defaults to 63500 (5pt). */
502
- readonly radiusEmu?: number;
732
+ /**
733
+ * 3-D on a text body — what PowerPoint writes for WordArt bevels. `scene`
734
+ * becomes `<a:scene3d>`; the other fields become `<a:sp3d>`, written when any
735
+ * of them is set.
736
+ */
737
+ interface Text3D {
738
+ readonly scene?: Scene3D;
739
+ /** Top bevel (`<a:bevelT>`). */
740
+ readonly bevelTop?: Bevel;
741
+ /** Extrusion depth (`extrusionH`) in EMU. */
742
+ readonly extrusionHeightEmu?: number;
743
+ /** Surface material (`prstMaterial`). */
744
+ readonly material?: PresetMaterial;
745
+ /** Contour color (`<a:contourClr>`). Same accepted forms as `TextFormat.color`. */
746
+ readonly contourColor?: Color;
747
+ /** Ordered adjustments to `contourColor`. Requires `contourColor`. */
748
+ readonly contourColorTransforms?: readonly ColorTransform[];
503
749
  }
750
+ /** A text body's 3-D read back from a deck; `contourColor` is the raw `#RRGGBB` or scheme token. */
751
+ type ReadText3D = Omit<Text3D, 'contourColor'> & {
752
+ readonly contourColor?: string;
753
+ };
504
754
  //#endregion
505
755
  //#region src/internal/drawingml/stroke.d.ts
506
756
  /**
@@ -567,8 +817,24 @@ interface GeomPath {
567
817
  readonly stroke: boolean;
568
818
  readonly commands: readonly GeomCommand[];
569
819
  }
820
+ /**
821
+ * `<a:rect>` (§20.1.9.22) — the rectangle a shape lays its text into,
822
+ * in EMU from the shape's own top-left corner.
823
+ *
824
+ * Unlike the path commands above, this is written in the guide coordinate
825
+ * space rather than a path's, so a value is either a literal EMU number or a
826
+ * guide name; both are already resolved here. Custom shapes that omit it lay
827
+ * text into the whole box, which is what `null` means.
828
+ */
829
+ interface GeomTextRect {
830
+ readonly l: number;
831
+ readonly t: number;
832
+ readonly r: number;
833
+ readonly b: number;
834
+ }
570
835
  interface CustomGeometry {
571
836
  readonly paths: readonly GeomPath[];
837
+ readonly textRect: GeomTextRect | null;
572
838
  }
573
839
  //#endregion
574
840
  //#region src/internal/drawingml/geometry.d.ts
@@ -615,6 +881,8 @@ interface TransitionOptions {
615
881
  * `direction` is ignored.
616
882
  */
617
883
  direction?: string;
884
+ /** For `wheel`: number of spokes (unsigned integer). Omitted means 4. */
885
+ spokes?: number;
618
886
  /** For `split`: orientation token (`horz` / `vert`). */
619
887
  orientation?: 'horz' | 'vert';
620
888
  /** For `fade`: pass `true` to fade through black. */
@@ -626,6 +894,13 @@ interface TransitionOptions {
626
894
  * advance.
627
895
  */
628
896
  advanceAfterMs?: number;
897
+ /**
898
+ * Effect duration in milliseconds (PowerPoint 2010's `p14:dur`). ECMA-376
899
+ * only has the three `speed` steps, so the transition is written as
900
+ * PowerPoint writes it: an `mc:AlternateContent` whose `p14` choice carries
901
+ * the duration and whose fallback carries the nearest `speed`.
902
+ */
903
+ durationMs?: number;
629
904
  }
630
905
  /**
631
906
  * A transition read back from a deck. `effect` widens to `string` because a
@@ -637,13 +912,55 @@ type SlideTransition = Omit<TransitionOptions, 'effect'> & {
637
912
  };
638
913
  //#endregion
639
914
  //#region src/internal/presentationml/animation-builder.d.ts
640
- /** What kind of effect to apply. v1 covers the four most-used presets. */
641
- type AnimationEffect = 'fadeIn' | 'fadeOut' | 'appear' | 'disappear';
915
+ /**
916
+ * What kind of effect to apply.
917
+ *
918
+ * Entrance effects put the shape on the slide and exit effects take it off.
919
+ * `spin` is the one emphasis effect modelled here: it turns a shape that is
920
+ * already on the slide and leaves it exactly where it was, so it never decides
921
+ * whether the shape is shown.
922
+ */
923
+ type AnimationEffect = 'appear' | 'fadeIn' | 'flyIn' | 'zoomIn' | 'disappear' | 'fadeOut' | 'flyOut' | 'zoomOut' | 'spin';
924
+ /**
925
+ * Which edge of the slide a `flyIn` comes from, or a `flyOut` leaves by —
926
+ * PowerPoint's "From Bottom" / Google Slides' "Fly in from bottom".
927
+ */
928
+ type AnimationDirection = 'top' | 'right' | 'bottom' | 'left';
929
+ /** When an effect runs relative to the one before it. */
930
+ type AnimationStartCondition = 'click' | 'withPrevious' | 'afterPrevious';
642
931
  interface AnimationOptions {
643
932
  /** Which preset effect to apply. */
644
933
  readonly effect: AnimationEffect;
645
- /** Animation length in milliseconds. Defaults to 500ms. */
934
+ /**
935
+ * Which edge of the slide a `'flyIn'` comes from, or a `'flyOut'` leaves by.
936
+ * Defaults to `'bottom'`, PowerPoint's own default for the preset. Passing it
937
+ * for an effect that does not fly is an error rather than a no-op: it would
938
+ * otherwise read as a direction the file never records.
939
+ */
940
+ readonly direction?: AnimationDirection;
941
+ /**
942
+ * Animation length in milliseconds. Defaults to 500ms. `'appear'` and
943
+ * `'disappear'` are instantaneous by definition of the preset and write no
944
+ * timed behaviour at all, so it does not reach them.
945
+ */
646
946
  readonly durationMs?: number;
947
+ /**
948
+ * What starts the effect. Defaults to `'click'` — the effect waits for the
949
+ * viewer's next click. `'withPrevious'` runs it alongside the effect before
950
+ * it, `'afterPrevious'` once that effect has finished. When the effect is
951
+ * the slide's first, neither has a predecessor to follow, so both start as
952
+ * soon as the slide appears instead of waiting for a click.
953
+ */
954
+ readonly start?: AnimationStartCondition;
955
+ /** How long to wait once the start condition is met. Defaults to 0ms. */
956
+ readonly delayMs?: number;
957
+ /**
958
+ * Reveal the shape's text one paragraph at a time instead of animating the
959
+ * shape as a whole — PowerPoint's "By paragraph", Google Slides' "By
960
+ * paragraph". Each paragraph gets its own effect with the same `start`, so
961
+ * the default `'click'` advances one paragraph per click.
962
+ */
963
+ readonly byParagraph?: boolean;
647
964
  }
648
965
  //#endregion
649
966
  //#region src/internal/presentationml/comments-part.d.ts
@@ -662,6 +979,10 @@ interface CommentPosition {
662
979
  readonly y: number;
663
980
  }
664
981
  interface SlideComment {
982
+ readonly parent?: {
983
+ readonly authorId: number;
984
+ readonly idx: number;
985
+ };
665
986
  /** Author id (matches `CommentAuthor.id`). */
666
987
  readonly authorId: number;
667
988
  /** Per-author monotonic index. */
@@ -672,6 +993,11 @@ interface SlideComment {
672
993
  readonly position: CommentPosition | null;
673
994
  }
674
995
  //#endregion
996
+ //#region src/internal/presentationml/modern-comments-part.d.ts
997
+ /** `ST_CommentStatus` — the three states a thread can be in. */
998
+ type CommentStatus = 'active' | 'resolved' | 'closed';
999
+ declare const COMMENT_STATUSES: readonly CommentStatus[];
1000
+ //#endregion
675
1001
  //#region src/api/_internal-symbols.d.ts
676
1002
  declare const INTERNAL_PACKAGE: unique symbol;
677
1003
  declare const SLIDE_PART_NAME: unique symbol;
@@ -683,8 +1009,11 @@ declare const SHAPE_ELEMENT: unique symbol;
683
1009
  declare const SHAPE_SNAPSHOT: unique symbol;
684
1010
  declare const LAYOUT_PART_NAME: unique symbol;
685
1011
  declare const LAYOUT_PART: unique symbol;
1012
+ declare const LAYOUT_DOCUMENT: unique symbol;
1013
+ declare const COMMENT_PARENT: unique symbol;
686
1014
  declare const COMMENT_SLIDE: unique symbol;
687
1015
  declare const COMMENT_SNAPSHOT: unique symbol;
1016
+ declare const COMMENT_MODERN: unique symbol;
688
1017
  declare const CELL_TABLE: unique symbol;
689
1018
  declare const CELL_ELEMENT: unique symbol;
690
1019
  declare const CELL_ROW: unique symbol;
@@ -713,18 +1042,44 @@ interface SlideShapeData {
713
1042
  [SHAPE_ELEMENT]: XmlElement;
714
1043
  [SHAPE_SNAPSHOT]: SlidePart['shapes'][number];
715
1044
  }
716
- /** Data shape backing every `SlideLayout` value. */
1045
+ /**
1046
+ * Data shape backing every `SlideLayout` value. Carries the parsed
1047
+ * document, not just the typed view, so a layout handle can be edited
1048
+ * and written back the way a slide handle can.
1049
+ */
717
1050
  interface SlideLayoutData {
1051
+ readonly [INTERNAL_PACKAGE]: OpcPackage;
718
1052
  readonly [LAYOUT_PART_NAME]: PartName;
719
- readonly [LAYOUT_PART]: SlideLayoutPart;
1053
+ [LAYOUT_DOCUMENT]: XmlDocument;
1054
+ [LAYOUT_PART]: SlideLayoutPart;
1055
+ }
1056
+ /** Where a modern comment handle points: its thread, and itself within it. */
1057
+ interface ModernCommentRef {
1058
+ /** Id of the `<p188:cm>`; equal to `id` when the handle is the thread itself. */
1059
+ readonly threadId: string;
1060
+ readonly id: string;
1061
+ readonly status: CommentStatus | null;
1062
+ readonly authorId: string;
720
1063
  }
721
1064
  /**
722
1065
  * Opaque handle for one comment on a slide. The `author` is resolved
723
- * on read against the package-level `commentAuthors.xml`.
1066
+ * on read: against the package-level `commentAuthors.xml` for an
1067
+ * ECMA-376 `<p:cm>`, and against `authors.xml` for a modern one.
724
1068
  */
725
1069
  interface SlideCommentData {
1070
+ [COMMENT_PARENT]: SlideCommentData | null;
726
1071
  readonly [COMMENT_SLIDE]: SlideData;
727
- readonly [COMMENT_SNAPSHOT]: SlideComment;
1072
+ /**
1073
+ * For a modern comment this is a projection, not what is on disk: `text`,
1074
+ * `dt` (the thread's `created`) and `position` are real, while `authorId`
1075
+ * and `idx` are the author's place in the modern author list and the
1076
+ * comment's place in its part. They exist so the deck-wide queries read
1077
+ * one shape whatever the file uses; nothing is ever written back through
1078
+ * them. `COMMENT_MODERN` is what every modern mutation goes through.
1079
+ */
1080
+ [COMMENT_SNAPSHOT]: SlideComment;
1081
+ /** Set for a modern comment; `null` for an ECMA-376 one. */
1082
+ [COMMENT_MODERN]: ModernCommentRef | null;
728
1083
  readonly author: CommentAuthor;
729
1084
  }
730
1085
  /**
@@ -813,8 +1168,7 @@ declare const getShapeId: (shape: SlideShapeData) => number;
813
1168
  * `'rightArrow'`, ...) for shapes whose body carries a
814
1169
  * `<a:prstGeom prst="…"/>`. Returns `null` for:
815
1170
  *
816
- * - non-`'shape'` kinds (pictures, connectors, group shapes, tables,
817
- * charts — they have their own geometry tags or no geometry),
1171
+ * - group shapes, tables, and charts (they have no preset geometry),
818
1172
  * - shapes using custom geometry (`<a:custGeom>`),
819
1173
  * - shapes whose preset is missing (malformed but possible).
820
1174
  *
@@ -855,6 +1209,21 @@ declare const getShapeAdjustValues: (shape: SlideShapeData) => Record<string, nu
855
1209
  * this when it gets `null`.
856
1210
  */
857
1211
  declare const getShapeCustomGeometry: (shape: SlideShapeData) => CustomGeometry | null;
1212
+ /**
1213
+ * Evaluates a preset shape's outline (`<a:prstGeom>`, ECMA-376 §20.1.9.18)
1214
+ * at `size`, from the standard's own preset definitions: the same paths,
1215
+ * shading modes (`lighten` / `darken` …) and text rectangle PowerPoint uses.
1216
+ * The result has the shape of {@link getShapeCustomGeometry}'s, so a
1217
+ * renderer draws presets and custom geometry the same way.
1218
+ *
1219
+ * `adjustValues` are the shape's adjust handles (`getShapeAdjustValues`);
1220
+ * each replaces the preset default of the same name. Returns `null` for a
1221
+ * preset name ECMA-376 does not define.
1222
+ */
1223
+ declare const getPresetGeometry: (preset: PresetShape | string, size: {
1224
+ readonly w: Emu;
1225
+ readonly h: Emu;
1226
+ }, adjustValues?: Readonly<Record<string, number>>) => CustomGeometry | null;
858
1227
  /**
859
1228
  * Returns the highest `cNvPr@id` used by any shape on the slide,
860
1229
  * or `0` when the slide has no shapes with non-negative ids.
@@ -895,15 +1264,14 @@ declare const getSlideMasterCount: (pres: PresentationData) => number;
895
1264
  * are missing.
896
1265
  */
897
1266
  /**
898
- * Returns the part name of the slide master a slide inherits from
899
- * (`/ppt/slideMasters/slideMaster1.xml`), or `null` when the slide
900
- * has no layout or its layout has no master rel.
1267
+ * Returns the part name of the slide master a slide or layout inherits from
1268
+ * (`/ppt/slideMasters/slideMaster1.xml`), or `null` when it has no master rel.
901
1269
  *
902
1270
  * Useful for multi-master decks where different slides live under
903
1271
  * different brand templates and the caller needs to scope theme /
904
1272
  * fontScheme / clrMap lookups to the correct master.
905
1273
  */
906
- declare const getSlideMasterPartName: (slide: SlideData) => string | null;
1274
+ declare const getSlideMasterPartName: (value: SlideData | SlideLayoutData) => string | null;
907
1275
  declare const getSlideMasterPartNames: (pres: PresentationData) => ReadonlyArray<string>;
908
1276
  /**
909
1277
  * Histogram of master part name → number of slides whose layout chains
@@ -963,7 +1331,8 @@ declare const isShapeHidden: (shape: SlideShapeData) => boolean;
963
1331
  * Sets or clears `<p:cNvPr hidden="...">` on the shape. Hidden
964
1332
  * shapes remain in the document but PowerPoint doesn't render them.
965
1333
  */
966
- declare const setShapeHidden: (shape: SlideShapeData, hidden: boolean) => void;
1334
+ declare function setShapeHidden(shape: SlideShapeData, hidden: boolean): void;
1335
+ declare function setShapeHidden(shapes: readonly SlideShapeData[], hidden: boolean): void;
967
1336
  declare const renameShape: (shape: SlideShapeData, newName: string) => void;
968
1337
  declare const getShapePlaceholderType: (shape: SlideShapeData) => string | null;
969
1338
  declare const getShapePlaceholderIdx: (shape: SlideShapeData) => number | null;
@@ -1281,6 +1650,8 @@ type ShapeFill = {
1281
1650
  readonly kind: 'pattern';
1282
1651
  } | {
1283
1652
  readonly kind: 'image';
1653
+ } | {
1654
+ readonly kind: 'background';
1284
1655
  } | {
1285
1656
  readonly kind: 'none';
1286
1657
  } | {
@@ -1334,25 +1705,25 @@ declare const getShapeStrokeColorResolved: (pres: PresentationData, shape: Slide
1334
1705
  * alpha transform (PowerPoint draws it fully opaque). Companion to
1335
1706
  * `getShapeStrokeColorResolved`, which never carries the alpha channel.
1336
1707
  */
1337
- declare const getShapeStrokeOpacity: (shape: SlideShapeData) => number | null;
1708
+ declare const getShapeStrokeOpacity: (shape: SlideShapeData, pres?: PresentationData) => number | null;
1338
1709
  /**
1339
1710
  * Reads the stroke's line cap style — `'rnd'` (round), `'sq'` (square),
1340
1711
  * `'flat'`, or `null` when the attribute isn't set. Per ECMA-376
1341
1712
  * §20.1.2.3.10 (`ST_LineCap`).
1342
1713
  */
1343
- declare const getShapeStrokeCap: (shape: SlideShapeData) => "rnd" | "sq" | "flat" | null;
1714
+ declare const getShapeStrokeCap: (shape: SlideShapeData, pres?: PresentationData) => "rnd" | "sq" | "flat" | null;
1344
1715
  /**
1345
1716
  * Reads the stroke's line join style — `'round'` / `'bevel'` / `'miter'`,
1346
1717
  * or `null` when no explicit join element is present. Maps from the
1347
1718
  * three child-element variants `<a:round/>`, `<a:bevel/>`, `<a:miter/>`.
1348
1719
  */
1349
- declare const getShapeStrokeJoin: (shape: SlideShapeData) => "round" | "bevel" | "miter" | null;
1720
+ declare const getShapeStrokeJoin: (shape: SlideShapeData, pres?: PresentationData) => "round" | "bevel" | "miter" | null;
1350
1721
  /**
1351
1722
  * Reads the stroke's compound-line style (`<a:ln cmpd="…">`) — single,
1352
1723
  * double, triple, or thick/thin / thin/thick parallel lines. ECMA-376
1353
1724
  * §20.1.2.3.11 (`ST_CompoundLine`).
1354
1725
  */
1355
- declare const getShapeStrokeCompound: (shape: SlideShapeData) => "sng" | "dbl" | "thickThin" | "thinThick" | "tri" | null;
1726
+ declare const getShapeStrokeCompound: (shape: SlideShapeData, pres?: PresentationData) => "sng" | "dbl" | "thickThin" | "thinThick" | "tri" | null;
1356
1727
  /**
1357
1728
  * Same as `getShapeStroke` but walks the layout → master placeholder
1358
1729
  * cascade when the shape itself reports `'inherit'`. First non-inherit
@@ -1381,14 +1752,15 @@ declare const getShapeFillColor: (shape: SlideShapeData) => string | null;
1381
1752
  */
1382
1753
  declare const getShapeFillColorResolved: (pres: PresentationData, shape: SlideShapeData) => string | null;
1383
1754
  /**
1384
- * Returns the opacity (`0`–`1`) of the shape's own solid fill, read from
1755
+ * Returns the opacity (`0`–`1`) of the shape's solid fill, read from
1385
1756
  * the `<a:alpha>` / `<a:alphaMod>` / `<a:alphaOff>` children of its color
1386
1757
  * element, or `null` when the fill isn't solid or carries no alpha
1387
1758
  * transform (PowerPoint paints it fully opaque). Companion to
1388
1759
  * `getShapeFillColorResolved`, which never carries the alpha channel —
1389
- * OOXML encodes color and alpha independently.
1760
+ * OOXML encodes color and alpha independently. Pass `pres` to resolve the
1761
+ * shape's theme fill reference when no direct fill is present.
1390
1762
  */
1391
- declare const getShapeFillOpacity: (shape: SlideShapeData) => number | null;
1763
+ declare const getShapeFillOpacity: (shape: SlideShapeData, pres?: PresentationData) => number | null;
1392
1764
  /**
1393
1765
  * Same as `getShapeFill` but walks the layout → master placeholder
1394
1766
  * cascade when the shape itself reports `'inherit'`. Returns the first
@@ -1399,6 +1771,105 @@ declare const getShapeFillOpacity: (shape: SlideShapeData) => number | null;
1399
1771
  declare const getShapeFillEffective: (pres: PresentationData, shape: SlideShapeData) => ShapeFill;
1400
1772
  declare const getShapeFill: (shape: SlideShapeData) => ShapeFill;
1401
1773
  //#endregion
1774
+ //#region src/api/fn/theme.d.ts
1775
+ /**
1776
+ * The named color scheme on a presentation's theme. Each slot is a
1777
+ * `#RRGGBB` string — `sysClr` slots are flattened to their cached
1778
+ * `lastClr` value.
1779
+ */
1780
+ interface PresentationTheme {
1781
+ readonly name: string;
1782
+ readonly dark1: string;
1783
+ readonly light1: string;
1784
+ readonly dark2: string;
1785
+ readonly light2: string;
1786
+ readonly accent1: string;
1787
+ readonly accent2: string;
1788
+ readonly accent3: string;
1789
+ readonly accent4: string;
1790
+ readonly accent5: string;
1791
+ readonly accent6: string;
1792
+ readonly hyperlink: string;
1793
+ readonly followedHyperlink: string;
1794
+ }
1795
+ /**
1796
+ * Returns the deck's color scheme as `#RRGGBB` strings, or `null` if
1797
+ * the package carries no theme. Each accent slot maps directly to the
1798
+ * `accent1`–`accent6` chart palette defaults.
1799
+ *
1800
+ * The deck's theme is the one its first slide master references. A
1801
+ * package usually holds more themes than that — notes and handout
1802
+ * masters carry their own, and Google Slides exports name the notes
1803
+ * theme `theme1.xml` ahead of the slide theme `theme2.xml` — so the
1804
+ * slide master relationship decides, not the part name. Multi-master
1805
+ * decks surface the first master's theme only; per-master theme lookup
1806
+ * will land if a concrete user need shows up.
1807
+ */
1808
+ declare const getPresentationTheme: (pres: PresentationData) => PresentationTheme | null;
1809
+ /**
1810
+ * The theme's font scheme, flattened to the typefaces the runs in a
1811
+ * deck inherit by default. `major*` is the heading font (slide
1812
+ * titles, chart titles); `minor*` is the body font.
1813
+ *
1814
+ * Each field carries the Latin / East-Asian / Complex-Script
1815
+ * typeface name as written on the theme. Empty values are
1816
+ * normalized to `null`.
1817
+ */
1818
+ interface PresentationFonts {
1819
+ readonly majorLatin: string | null;
1820
+ readonly majorEastAsian: string | null;
1821
+ readonly majorComplexScript: string | null;
1822
+ readonly minorLatin: string | null;
1823
+ readonly minorEastAsian: string | null;
1824
+ readonly minorComplexScript: string | null;
1825
+ }
1826
+ /**
1827
+ * Returns the deck theme's font scheme, or `null` when the package
1828
+ * carries no theme. This is the presentation-level fallback; shape text
1829
+ * resolution uses `fontsFromThemeRoot` with the shape's owning master theme.
1830
+ */
1831
+ declare const getPresentationFonts: (pres: PresentationData) => PresentationFonts | null;
1832
+ /**
1833
+ * Overwrites the named slots of the deck theme's color
1834
+ * scheme (`<a:clrScheme>`), leaving every other slot untouched. Slot
1835
+ * values are `#RRGGBB` (or 3-digit `#RGB`) strings; every branded
1836
+ * `srgbClr`/`sysClr` slot is normalized to a plain `<a:srgbClr>` on
1837
+ * write, since a theme slot is never a scheme-color reference.
1838
+ *
1839
+ * As with `getPresentationTheme`, multi-master decks are branded via
1840
+ * their first slide master's theme only.
1841
+ *
1842
+ * Throws if the presentation has no theme part, or if a provided color
1843
+ * isn't a valid `#RRGGBB` string.
1844
+ */
1845
+ declare const setPresentationTheme: (pres: PresentationData, theme: Partial<Omit<PresentationTheme, "name">> & {
1846
+ name?: string;
1847
+ }) => void;
1848
+ /**
1849
+ * Typeface overrides for {@link setPresentationFonts}. Unlike
1850
+ * `PresentationFonts` (the read side, where an empty typeface value
1851
+ * flattens to `null`), every field here is a plain string — the
1852
+ * underlying `<a:latin>` / `<a:ea>` / `<a:cs>` elements are mandatory on
1853
+ * a valid theme, so there's no "clear this typeface" operation.
1854
+ */
1855
+ interface PresentationFontsInput {
1856
+ readonly majorLatin?: string;
1857
+ readonly majorEastAsian?: string;
1858
+ readonly majorComplexScript?: string;
1859
+ readonly minorLatin?: string;
1860
+ readonly minorEastAsian?: string;
1861
+ readonly minorComplexScript?: string;
1862
+ }
1863
+ /**
1864
+ * Overwrites the named typefaces of the deck theme's font scheme
1865
+ * (major = headings, minor = body), leaving unset fields untouched. As
1866
+ * with `setPresentationTheme`, only the first slide master's theme is
1867
+ * branded.
1868
+ *
1869
+ * Throws if the presentation has no theme part.
1870
+ */
1871
+ declare const setPresentationFonts: (pres: PresentationData, fonts: PresentationFontsInput) => void;
1872
+ //#endregion
1402
1873
  //#region src/api/fn/shape-gradient-read.d.ts
1403
1874
  /**
1404
1875
  * Returns the full gradient definition (`stops` + `angleDeg`) when the
@@ -1409,19 +1880,25 @@ declare const getShapeFill: (shape: SlideShapeData) => ShapeFill;
1409
1880
  declare const getShapeGradientFill: (shape: SlideShapeData) => ReadGradientFill | null;
1410
1881
  /**
1411
1882
  * Same as `getShapeGradientFill` but walks the layout → master
1412
- * placeholder cascade when the shape itself carries no `<a:gradFill>`.
1413
- * Returns the first gradient found, or `null` when neither the shape
1414
- * nor its inherited placeholder defines one.
1883
+ * placeholder cascade when the shape carries no explicit fill choice.
1884
+ * Stop `resolvedColor` values include the theme, color map, and color transforms.
1885
+ * Returns the first gradient in the placeholder cascade, or `null` when an
1886
+ * explicit non-gradient fill masks the cascade or no layer defines one.
1415
1887
  *
1416
- * Resolves only gradients authored as a literal `<a:gradFill>` on the
1417
- * shape or its placeholder ancestors. Gradients referenced through the
1418
- * theme style matrix (`<p:style><a:fillRef>` → `<a:fillStyleLst>`) are
1419
- * not modelled by the core yet, so those still report `inherit` and
1420
- * fall through here.
1888
+ * Resolves literal gradients on the shape or its placeholder ancestors, and
1889
+ * the shape's own theme style-matrix fill reference. Style references on
1890
+ * placeholder ancestors are not resolved.
1421
1891
  */
1422
1892
  declare const getShapeGradientFillEffective: (pres: PresentationData, shape: SlideShapeData) => ReadGradientFill | null;
1423
1893
  //#endregion
1424
1894
  //#region src/api/fn/shape-fill-stroke.d.ts
1895
+ /**
1896
+ * Replace the preset or custom geometry of a shape, picture, or connector.
1897
+ * Picture geometry clips the image without modifying its bytes or crop.
1898
+ * Existing adjust guides are removed; use `setShapeAdjustValues` afterward
1899
+ * to customize the new preset. Position, size, fill, and effects are preserved.
1900
+ */
1901
+ declare const setShapePreset: (shape: SlideShapeData, preset: PresetShape) => void;
1425
1902
  /** Sets the shape's position in EMU. Companion to `setShapeSize`. */
1426
1903
  declare const setShapePosition: (shape: SlideShapeData, x: Emu, y: Emu) => void;
1427
1904
  /** Sets the shape's size in EMU. */
@@ -1452,8 +1929,22 @@ declare const setShapeFlip: (shape: SlideShapeData, options: {
1452
1929
  horizontal?: boolean;
1453
1930
  vertical?: boolean;
1454
1931
  }) => void;
1455
- /** Sets a solid fill on the shape (color in `#RRGGBB` or scheme token). */
1456
- declare const setShapeFill: (shape: SlideShapeData, color: Color) => void;
1932
+ /**
1933
+ * Paints a shape with the slide background at its position, covering objects
1934
+ * behind it. This is different from a transparent fill. Only ordinary shapes
1935
+ * support the PresentationML `useBgFill` attribute; other kinds throw.
1936
+ */
1937
+ declare const setShapeSlideBackgroundFill: (shape: SlideShapeData) => void;
1938
+ /**
1939
+ * Sets a solid fill. A color string replaces the fill; an options object edits
1940
+ * only supplied properties and preserves existing opacity when changing color.
1941
+ * Opacity ranges from 0 (transparent) to 1 (opaque). Opacity-only edits require
1942
+ * an existing solid fill and preserve its theme reference and color transforms.
1943
+ */
1944
+ declare const setShapeFill: (shape: SlideShapeData, color: Color | {
1945
+ color?: Color;
1946
+ opacity?: number;
1947
+ }) => void;
1457
1948
  /**
1458
1949
  * Sets a linear gradient fill on the shape. Stops must lie in `[0, 1]`;
1459
1950
  * `angleDeg` defaults to `90` (top → bottom).
@@ -1471,20 +1962,28 @@ declare const setShapeGradientFill: (shape: SlideShapeData, options: GradientFil
1471
1962
  *
1472
1963
  * `foreground` is the pattern stroke color; `background` fills behind
1473
1964
  * the pattern. Both accept `#RRGGBB`, bare `RRGGBB`, or scheme tokens
1474
- * (`accent1`, `bg1`, ...).
1965
+ * (`accent1`, `bg1`, ...). Omitted settings preserve existing pattern XML,
1966
+ * including theme references and color transforms. A new pattern defaults to
1967
+ * `pct5`, foreground `accent1` and background `bg1`, as in Mac PowerPoint.
1475
1968
  */
1476
- declare const setShapePatternFill: (shape: SlideShapeData, options: PatternFillOptions) => void;
1969
+ declare const setShapePatternFill: (shape: SlideShapeData, options: Partial<PatternFillOptions>) => void;
1477
1970
  /**
1478
1971
  * Reads back the pattern fill on a shape: returns the preset token
1479
1972
  * plus the foreground / background colors resolved against the theme.
1973
+ * With `preserveTheme`, untransformed scheme colors remain theme tokens.
1974
+ * Transformed colors still resolve to RGB to preserve their appearance.
1480
1975
  * Returns `null` when the shape has no `<a:pattFill>`.
1481
1976
  *
1482
- * The preset string is the literal `ST_PresetPatternVal` token from
1483
- * §20.1.10.49 — e.g. `'pct50'`, `'dkUpDiag'`, `'cross'`, `'wave'`.
1484
- * Renderers can map it onto an SVG `<pattern>` definition.
1977
+ * The preset is the literal `ST_PresetPatternVal` token from §20.1.10.49 —
1978
+ * e.g. `'pct50'`, `'dkUpDiag'`, `'cross'`, `'wave'`. Renderers can map it onto
1979
+ * an SVG `<pattern>` definition, and the result can be handed straight back to
1980
+ * `setShapePatternFill`. A missing or unrecognised `prst` reads as `'pct50'`,
1981
+ * which is what PowerPoint paints when the attribute is absent.
1485
1982
  */
1486
- declare const getShapePatternFill: (pres: PresentationData, shape: SlideShapeData) => {
1487
- preset: string;
1983
+ declare const getShapePatternFill: (pres: PresentationData, shape: SlideShapeData, options?: {
1984
+ readonly preserveTheme?: boolean;
1985
+ }) => {
1986
+ preset: PatternPreset;
1488
1987
  foreground: string;
1489
1988
  background: string;
1490
1989
  } | null;
@@ -1509,20 +2008,25 @@ declare const setShapeNoFill: (shape: SlideShapeData) => void;
1509
2008
  * from the layout / master placeholder it descends from.
1510
2009
  */
1511
2010
  declare const clearShapeFill: (shape: SlideShapeData) => void;
1512
- /** Sets a solid-color outline on the shape. */
2011
+ /** Updates outline color, width and/or opacity (0–1); omitted properties are preserved. */
1513
2012
  declare const setShapeStroke: (shape: SlideShapeData, options: {
1514
2013
  color?: Color;
1515
2014
  widthEmu?: number;
2015
+ opacity?: number;
1516
2016
  }) => void;
1517
2017
  /** Sets an explicit "no outline" on the shape. */
1518
2018
  declare const setShapeNoStroke: (shape: SlideShapeData) => void;
1519
- /** Reads back the shape's stroke dash style, or `null` if none. */
1520
- declare const getShapeStrokeDash: (shape: SlideShapeData) => LineDash | null;
2019
+ /**
2020
+ * Reads back the shape's stroke dash style, or `null` if none. When `pres` is
2021
+ * supplied, a direct partial line is overlaid on the shape's `lnRef` style.
2022
+ */
2023
+ declare const getShapeStrokeDash: (shape: SlideShapeData, pres?: PresentationData) => LineDash | null;
1521
2024
  /**
1522
2025
  * Reads back the shape's arrowhead on one end of `<a:ln>`, or `null`
1523
- * when no `<a:headEnd>` / `<a:tailEnd>` is present.
2026
+ * when no `<a:headEnd>` / `<a:tailEnd>` is present. When `pres` is supplied,
2027
+ * a direct partial line is overlaid on the shape's `lnRef` style.
1524
2028
  */
1525
- declare const getShapeStrokeArrow: (shape: SlideShapeData, end: "head" | "tail") => ArrowOptions | null;
2029
+ declare const getShapeStrokeArrow: (shape: SlideShapeData, end: "head" | "tail", pres?: PresentationData) => ArrowOptions | null;
1526
2030
  /**
1527
2031
  * Sets the dash pattern for the shape's outline (`<a:prstDash>`). One
1528
2032
  * of ECMA-376's `ST_PresetLineDashVal` tokens:
@@ -1609,6 +2113,8 @@ type ShapeEffect = {
1609
2113
  */
1610
2114
  type ShapeEffectAny = {
1611
2115
  readonly kind: 'outerShdw';
2116
+ readonly alignment?: ShadowOptions['alignment'];
2117
+ readonly rotateWithShape?: boolean;
1612
2118
  readonly color: string;
1613
2119
  readonly opacity?: number;
1614
2120
  readonly blurEmu: number;
@@ -1630,7 +2136,15 @@ type ShapeEffectAny = {
1630
2136
  readonly kind: 'reflection';
1631
2137
  readonly opacity?: number;
1632
2138
  readonly startOpacity?: number;
2139
+ readonly startPosition?: number;
2140
+ readonly endPosition?: number;
2141
+ readonly fadeDirection?: number;
2142
+ readonly scaleX?: number;
2143
+ readonly alignment?: 'tl' | 't' | 'tr' | 'l' | 'ctr' | 'r' | 'bl' | 'b' | 'br';
2144
+ readonly rotateWithShape?: boolean;
1633
2145
  readonly scaleY?: number;
2146
+ readonly skewX?: number;
2147
+ readonly skewY?: number;
1634
2148
  readonly blurEmu: number;
1635
2149
  readonly distEmu: number;
1636
2150
  readonly angleDeg: number;
@@ -1642,6 +2156,15 @@ type ShapeEffectAny = {
1642
2156
  readonly radiusEmu: number;
1643
2157
  };
1644
2158
  declare const getShapeEffect: (shape: SlideShapeData) => ShapeEffect | null;
2159
+ /**
2160
+ * Returns every effect attached to the shape's `<a:effectLst>` in
2161
+ * document order — outer shadow, inner shadow, glow, reflection,
2162
+ * soft edge, blur. Empty array when no effects apply.
2163
+ *
2164
+ * Companion to `getShapeEffect`, which is the v1 "first effect only"
2165
+ * helper. `getShapeEffects` is what renderers want because PowerPoint
2166
+ * composes multiple effects in a single filter (shadow + glow, etc.).
2167
+ */
1645
2168
  declare const getShapeEffects: (pres: PresentationData, shape: SlideShapeData) => readonly ShapeEffectAny[];
1646
2169
  /**
1647
2170
  * Every shape on the slide whose `<a:effectLst>` carries an effect
@@ -1663,27 +2186,67 @@ declare const getShapeEffectsEffective: (pres: PresentationData, shape: SlideSha
1663
2186
  /**
1664
2187
  * Sets an outer drop shadow on the shape. Defaults: black, 4pt blur,
1665
2188
  * 3pt offset, 45° (down-right). Pass `opacity` (0–1) to soften the
1666
- * shadow.
2189
+ * shadow. Replaces an existing drop shadow and leaves the shape's other
2190
+ * effects in place; `clearShapeEffects` is the way to remove them all.
1667
2191
  */
1668
2192
  declare const setShapeShadow: (shape: SlideShapeData, options?: ShadowOptions) => void;
1669
2193
  /**
1670
2194
  * Sets a glow around the shape. The radius is in EMU (default 5pt =
1671
- * 63500). Mutually exclusive with `setShapeShadow` in v1 — calling
1672
- * either replaces the prior `<a:effectLst>` entirely.
2195
+ * 63500). Replaces an existing glow and composes with a shadow, in the
2196
+ * order `CT_EffectList` states.
1673
2197
  */
1674
2198
  declare const setShapeGlow: (shape: SlideShapeData, options: GlowOptions) => void;
1675
2199
  /** Removes any effects (shadow / glow / future presets) from the shape. */
1676
2200
  declare const clearShapeEffects: (shape: SlideShapeData) => void;
1677
2201
  //#endregion
2202
+ //#region src/internal/drawingml/text-body-edit.d.ts
2203
+ type TextCase = 'sentence' | 'lower' | 'upper' | 'title' | 'toggle';
2204
+ //#endregion
1678
2205
  //#region src/api/fn/shape-text.d.ts
1679
2206
  /**
1680
2207
  * Replaces the shape's visible text with `value`. Newlines start a new
1681
- * paragraph. Existing run/paragraph properties are preserved so font,
1682
- * color, size, alignment, and bullet style stay intact. The paragraph-end
1683
- * format (`<a:endParaRPr>`) is not kept; author it with `setShapeParagraphs`.
1684
- */
1685
- declare const setShapeText: (shape: SlideShapeData, value: string, options?: {
2208
+ * paragraph by default; `newlines: 'break'` inserts paragraph-internal `<a:br>` instead.
2209
+ * By default, new paragraphs inherit the first existing run and
2210
+ * paragraph properties (font, color, size, alignment and bullets). The paragraph-end
2211
+ * format (`<a:endParaRPr>`) is not kept by default; author it with `setShapeParagraphs`.
2212
+ * Set `preserveFormatting` for incremental editing: unchanged prefix/suffix runs
2213
+ * and paragraphs retain their XML; inserted text inherits the insertion point's
2214
+ * format. Multiple disjoint changes should be applied separately to retain the
2215
+ * formatting between them. With `range`, `value` replaces exactly that UTF-16
2216
+ * selection and unaffected formatting is always preserved.
2217
+ * Pass `{ case: 'upper' | 'lower' | 'sentence' | 'title' | 'toggle' }` to apply
2218
+ * PowerPoint-style Change Case to the whole text or to `options.range`.
2219
+ */
2220
+ declare const setShapeText: (shape: SlideShapeData, value: string | {
2221
+ case: TextCase;
2222
+ }, options?: {
2223
+ newlines?: "paragraph" | "break";
1686
2224
  bullets?: BulletStyle;
2225
+ preserveFormatting?: boolean;
2226
+ range?: {
2227
+ start: number;
2228
+ end: number;
2229
+ };
2230
+ }) => void;
2231
+ /**
2232
+ * Replaces the shape's text with a single field — text PowerPoint fills in
2233
+ * when it opens the deck, rather than text the file states. `type` is an
2234
+ * ECMA-376 `ST_TextFieldType` token: `'slidenum'` for the slide's number,
2235
+ * `'datetime'` (and its `datetime1`…`datetime13` variants) for the current
2236
+ * date, `'footer'`, `'headerfooter'`, … Unrecognised tokens are written
2237
+ * through, since the list is open and renderers differ on what they honour.
2238
+ *
2239
+ * `options.text` is the cached value stored in `<a:t>`, which is what a reader
2240
+ * that does not evaluate fields shows — PowerPoint overwrites it on open, so
2241
+ * it matters only for other consumers. The shape's first run's formatting is
2242
+ * carried onto the field, the way PowerPoint keeps a placeholder's look when
2243
+ * it inserts one.
2244
+ *
2245
+ * This replaces the whole text body: a field placeholder holds the field and
2246
+ * nothing else, which is how PowerPoint writes slide numbers and dates.
2247
+ */
2248
+ declare const setShapeTextField: (shape: SlideShapeData, type: string, options?: {
2249
+ text?: string;
1687
2250
  }) => void;
1688
2251
  /**
1689
2252
  * Appends `value` to the shape's existing text on a new line. The
@@ -1736,6 +2299,23 @@ declare const getShapeTextWrap: (shape: SlideShapeData) => TextWrap | null;
1736
2299
  * non-text-bearing shape kinds.
1737
2300
  */
1738
2301
  declare const setShapeTextAutoFit: (shape: SlideShapeData, mode: TextAutoFit) => void;
2302
+ /**
2303
+ * Sets the 3-D on the shape's text body — `<a:scene3d>` and `<a:sp3d>` in
2304
+ * `<a:bodyPr>`, where PowerPoint writes its WordArt bevels. `value.scene`
2305
+ * writes the camera and light rig; `bevelTop`, `extrusionHeightEmu`,
2306
+ * `material` and `contourColor` write `<a:sp3d>` (replacing `<a:flatTx>`).
2307
+ * A field left out removes what it describes; settings this API does not
2308
+ * model (camera field of view, bottom bevel, extrusion color, ...) are kept
2309
+ * while their element remains. `null` removes both elements. Throws for
2310
+ * non-text-bearing shape kinds.
2311
+ */
2312
+ declare const setShapeText3D: (shape: SlideShapeData, value: Text3D | null) => void;
2313
+ /**
2314
+ * Reads the 3-D on the shape's own text body (see `setShapeText3D`), or
2315
+ * `null` when its `<a:bodyPr>` has neither `<a:scene3d>` nor `<a:sp3d>`.
2316
+ * Inherited body properties are not consulted.
2317
+ */
2318
+ declare const getShapeText3D: (shape: SlideShapeData) => ReadText3D | null;
1739
2319
  /**
1740
2320
  * Reads back the bodyPr auto-fit child, or `null` when none is
1741
2321
  * present (PowerPoint applies a layout-inherited default in that case).
@@ -1786,9 +2366,9 @@ declare const getShapeTextColumns: (shape: SlideShapeData) => {
1786
2366
  /**
1787
2367
  * Sets the multi-column layout on the shape's text body — writes
1788
2368
  * `<a:bodyPr numCol="N" [spcCol="EMU"]/>`. Pass `null` to clear both
1789
- * attributes so the text body falls back to PowerPoint's default
1790
- * single column. `count` must be in `2..16` (ST_TextColumnCount caps at
1791
- * 16, and single column is the `null` default). `gapEmu`, when omitted,
2369
+ * attributes so the text body inherits its column settings (one column
2370
+ * when no layout/master supplies them). `count` must be in `1..16`;
2371
+ * use `1` to override inherited columns explicitly. `gapEmu`, when omitted,
1792
2372
  * removes any prior `spcCol`. Throws for non-text-bearing shape kinds.
1793
2373
  */
1794
2374
  declare const setShapeTextColumns: (shape: SlideShapeData, columns: {
@@ -1823,7 +2403,7 @@ declare const setShapeTextBodyRotationDeg: (shape: SlideShapeData, rotationDeg:
1823
2403
  *
1824
2404
  * - `horz` — default left-to-right, top-to-bottom (returns `null`).
1825
2405
  * - `vert` — 90° rotation, lines run top-to-bottom, columns right-to-left.
1826
- * - `vert270` — 270° rotation, lines top-to-bottom, columns left-to-right.
2406
+ * - `vert270` — 270° rotation, lines bottom-to-top, columns left-to-right.
1827
2407
  * - `wordArtVert` — characters not rotated, stacked vertically.
1828
2408
  * - `eaVert` — East-Asian vertical: characters upright, columns right-to-left.
1829
2409
  * - `mongolianVert` — Mongolian: rotated 90°, columns left-to-right.
@@ -1836,8 +2416,8 @@ declare const getShapeTextDirection: (shape: SlideShapeData) => "vert" | "vert27
1836
2416
  /**
1837
2417
  * Sets the shape's text-direction via `<a:bodyPr vert="…"/>`. See
1838
2418
  * `getShapeTextDirection` for the meaning of each value. Passing `null`
1839
- * (or `'horz'`) clears the attribute so the shape uses the default
1840
- * horizontal direction. Throws for non-text-bearing shape kinds.
2419
+ * clears the attribute, restoring layout/master inheritance. `'horz'` writes
2420
+ * an explicit horizontal override. Throws for non-text-bearing shape kinds.
1841
2421
  */
1842
2422
  declare const setShapeTextDirection: (shape: SlideShapeData, direction: "horz" | "vert" | "vert270" | "wordArtVert" | "eaVert" | "mongolianVert" | "wordArtVertRtl" | null) => void;
1843
2423
  declare const getShapeTextMargins: (shape: SlideShapeData) => {
@@ -1847,62 +2427,269 @@ declare const getShapeTextMargins: (shape: SlideShapeData) => {
1847
2427
  readonly bottom: number | null;
1848
2428
  } | null;
1849
2429
  /**
1850
- * Resolves the effective `<a:bodyPr>` properties — anchor, wrap, vertical
1851
- * direction, and inset margins — by walking the layout / master cascade
1852
- * the same way `getShapeRunFormatEffective` walks rPr. Returns the
1853
- * innermost value that the cascade supplies, or `null` for properties
1854
- * neither the shape nor any inherited placeholder authors.
2430
+ * Resolves the effective `<a:bodyPr>` properties — anchor, wrap, vertical
2431
+ * direction, inset margins, columns and autofit — by walking the layout / master cascade
2432
+ * the same way `getShapeRunFormatEffective` walks rPr. Returns the
2433
+ * innermost value that the cascade supplies, or `null` for properties
2434
+ * neither the shape nor any inherited placeholder authors.
2435
+ *
2436
+ * Companion to `getShapeTextAnchor` / `getShapeTextWrap` /
2437
+ * `getShapeTextDirection` / `getShapeTextMargins`, which only report the
2438
+ * literal value on the shape itself.
2439
+ */
2440
+ declare const getShapeBodyPrEffective: (pres: PresentationData, shape: SlideShapeData) => {
2441
+ anchor: TextAnchor | null;
2442
+ anchorCentered: boolean | null;
2443
+ autoFit: TextAutoFit | null;
2444
+ autoFitParams: ReturnType<typeof getShapeTextAutoFitParams>;
2445
+ columns: ReturnType<typeof getShapeTextColumns>;
2446
+ wrap: TextWrap | null;
2447
+ vert: ReturnType<typeof getShapeTextDirection>;
2448
+ margins: {
2449
+ left: number | null;
2450
+ top: number | null;
2451
+ right: number | null;
2452
+ bottom: number | null;
2453
+ };
2454
+ };
2455
+ /**
2456
+ * Sets vertical anchoring. `centered` centers the text block without changing
2457
+ * paragraph alignment (PowerPoint's Top / Middle / Bottom Centered options).
2458
+ * Omit it to preserve centering; pass null to restore inherited centering.
2459
+ */
2460
+ declare const setShapeTextAnchor: (shape: SlideShapeData, anchor: TextAnchor, options?: {
2461
+ centered?: boolean | null;
2462
+ }) => void;
2463
+ /**
2464
+ * Sets the internal margins of the shape's text frame in EMU. Each
2465
+ * side is independent; omitted sides keep their current value (or the
2466
+ * layout-inherited default when the attribute is absent).
2467
+ *
2468
+ * PowerPoint's defaults for a textbox: left/right 91440 (0.1in),
2469
+ * top/bottom 45720 (0.05in).
2470
+ *
2471
+ * setShapeTextMargins(shape, { left: 0, right: 0 }); // flush-left text
2472
+ */
2473
+ declare const setShapeTextMargins: (shape: SlideShapeData, margins: {
2474
+ left?: number;
2475
+ top?: number;
2476
+ right?: number;
2477
+ bottom?: number;
2478
+ }) => void;
2479
+ /** Sets the bullet style on every paragraph in the shape's text body. */
2480
+ declare const setShapeBulletStyle: (shape: SlideShapeData, style: BulletStyle) => void;
2481
+ /** Sets the horizontal alignment of every paragraph in the shape's text. */
2482
+ declare const setShapeAlignment: (shape: SlideShapeData, align: ParagraphAlignment) => void;
2483
+ /**
2484
+ * Applies `format` to every run in the shape's text. Run-property
2485
+ * attributes not addressed by `format` are preserved, so partial
2486
+ * updates compose. Optional `range` selects UTF-16 offsets in `getShapeText`,
2487
+ * with an exclusive end. Paragraph separators and line breaks each count as one
2488
+ * character. Empty ranges do nothing; invalid or split-surrogate boundaries throw.
2489
+ * Partially selected fields become literal runs; fully selected fields stay fields.
2490
+ * Pass a zero-based `paragraphEnd` instead of `range` to update a paragraph's end mark
2491
+ * without rebuilding its runs or paragraph properties.
2492
+ * With `reset`, clears direct visual run properties before applying `format`,
2493
+ * restoring inherited fonts and appearance while keeping links and language.
2494
+ * Without either target, also clears text-body and paragraph run-format defaults.
2495
+ * Blank autoshapes receive a text body and paragraph-end formatting for future input.
2496
+ */
2497
+ declare const setShapeTextFormat: (shape: SlideShapeData, format: TextFormat, options?: {
2498
+ range?: {
2499
+ start: number;
2500
+ end: number;
2501
+ };
2502
+ reset?: boolean;
2503
+ paragraphEnd?: never;
2504
+ } | {
2505
+ paragraphEnd: number;
2506
+ reset?: boolean;
2507
+ range?: never;
2508
+ }) => void;
2509
+ /**
2510
+ * Replaces the shape's text with explicitly structured paragraphs, each
2511
+ * carrying its own runs and per-run formats. `setShapeText` yields one run
2512
+ * per paragraph; use this when a paragraph mixes formats (a bold lead-in
2513
+ * followed by plain text, for example). Read back with
2514
+ * `getShapeParagraphElements`.
2515
+ * Pass `{ source, range? }` to copy existing paragraph XML, including fields,
2516
+ * run formatting, bullets and remapped relationships. The optional range uses
2517
+ * UTF-16 offsets with an exclusive end; omitted range copies all source text.
2518
+ * Pass an array of targets and `{ source, ranges }` to distribute ranges in one
2519
+ * batch. All ranges are read before any target changes, including when the source
2520
+ * is a target. Each target must have a corresponding range.
2521
+ * Pass `{ sources }` to concatenate complete paragraph sequences in order,
2522
+ * preserving fields, paragraph properties and relationships across slides.
2523
+ * A single target with `{ source, ranges }` concatenates those ranges in order.
2524
+ * Target body properties and list styles remain unchanged.
2525
+ */
2526
+ declare function setShapeParagraphs(shape: SlideShapeData, paragraphs: ReadonlyArray<ParagraphSpec> | {
2527
+ source: SlideShapeData;
2528
+ range?: {
2529
+ start: number;
2530
+ end: number;
2531
+ };
2532
+ } | {
2533
+ sources: ReadonlyArray<SlideShapeData>;
2534
+ } | {
2535
+ source: SlideShapeData;
2536
+ ranges: ReadonlyArray<{
2537
+ start: number;
2538
+ end: number;
2539
+ }>;
2540
+ }): void;
2541
+ declare function setShapeParagraphs(shapes: ReadonlyArray<SlideShapeData>, paragraphs: {
2542
+ source: SlideShapeData;
2543
+ ranges: ReadonlyArray<{
2544
+ start: number;
2545
+ end: number;
2546
+ }>;
2547
+ }): void;
2548
+ //#endregion
2549
+ //#region src/api/fn/shape-paragraph.d.ts
2550
+ /**
2551
+ * Resolves a run's effective character properties by walking the
2552
+ * ECMA-376 §21.1.2.4.7 inheritance chain — run rPr →
2553
+ * pPr defRPr → text-body lstStyle → shape Quick Style → layout placeholder
2554
+ * lstStyle → master placeholder lstStyle + master txStyles → owning theme
2555
+ * fontScheme.
2556
+ *
2557
+ * Each property (font, size, color, bold, italic, underline) is
2558
+ * resolved independently: the innermost layer that supplies a value
2559
+ * wins for that one property.
2560
+ *
2561
+ * Returns a non-null `TextFormat`; fields the cascade couldn't
2562
+ * resolve are simply absent (the renderer falls back to placeholder
2563
+ * defaults).
2564
+ *
2565
+ * Use `getShapeRunFormat` if you only want the literal `<a:rPr>` on
2566
+ * the run without inheritance. Numeric indices count only regular runs;
2567
+ * `{ fieldIndex }` and `{ breakIndex }` count fields and line breaks separately;
2568
+ * null resolves the paragraph end mark.
2569
+ * `inheritanceSource` supplies the original
2570
+ * placeholder and slide context when reading a detached editing preview;
2571
+ * paragraph and run properties are still read from `shape`.
2572
+ */
2573
+ declare const getShapeRunFormatEffective: (pres: PresentationData, shape: SlideShapeData, paragraphIndex: number, runIndex: number | null | {
2574
+ readonly fieldIndex: number;
2575
+ } | {
2576
+ readonly breakIndex: number;
2577
+ }, options?: {
2578
+ inheritanceSource?: SlideShapeData;
2579
+ }) => ReadTextFormat;
2580
+ /** A custom paragraph tab stop. */
2581
+ interface ParagraphTabStop {
2582
+ /** Position relative to the left margin, in EMU. */
2583
+ positionEmu: number;
2584
+ alignment: 'left' | 'center' | 'right' | 'decimal';
2585
+ }
2586
+ /** Effective bullet detail returned by `getParagraphPropertiesEffective`. */
2587
+ interface ParagraphBulletDetail {
2588
+ color: string | null;
2589
+ colorFollowText: boolean;
2590
+ sizePct: number | null;
2591
+ sizePts: number | null;
2592
+ sizeFollowText: boolean;
2593
+ font: string | null;
2594
+ fontFollowText: boolean;
2595
+ }
2596
+ /** Effective paragraph properties returned by `getParagraphPropertiesEffective`. */
2597
+ interface ParagraphProperties {
2598
+ /** Custom tab stops; an empty list explicitly clears inherited stops. */
2599
+ tabStops?: ParagraphTabStop[];
2600
+ /** Distance between automatic tab stops, in EMU. */
2601
+ defaultTabSizeEmu?: number;
2602
+ /** Horizontal alignment per `ParagraphAlignment`. */
2603
+ align: ParagraphAlignment | null;
2604
+ /** East Asian line-breaking rules; absent when not authored or inherited. */
2605
+ asianLineBreak?: boolean;
2606
+ /** Allow a Latin word to break across lines. */
2607
+ latinLineBreak?: boolean;
2608
+ /** Allow punctuation to extend beyond the text margin. */
2609
+ hangingPunctuation?: boolean;
2610
+ /** Vertical alignment of differently sized characters within a line. */
2611
+ fontAlignment?: 'auto' | 'top' | 'center' | 'baseline' | 'bottom';
2612
+ /** Outline level (0..8). 0 = top-level paragraph. */
2613
+ level: number;
2614
+ /** Left indent in EMU. */
2615
+ marL: number | null;
2616
+ /** Right indent in EMU. */
2617
+ marR: number | null;
2618
+ /** First-line indent in EMU; negative for hanging indents. */
2619
+ indent: number | null;
2620
+ /** Line spacing — either a percent multiplier or a fixed point value. */
2621
+ lineSpacing: {
2622
+ readonly kind: 'pct';
2623
+ readonly value: number;
2624
+ } | {
2625
+ readonly kind: 'pts';
2626
+ readonly value: number;
2627
+ } | null;
2628
+ /** Space before the paragraph in points. */
2629
+ spcBefPts: number | null;
2630
+ /** Space after the paragraph in points. */
2631
+ spcAftPts: number | null;
2632
+ /** Right-to-left paragraph (`<a:pPr rtl="1"/>`). */
2633
+ rtl: boolean | null;
2634
+ /**
2635
+ * Bullet resolved through the cascade (`<a:buChar>` / `<a:buAutoNum>` /
2636
+ * `<a:buNone>`). Master `bodyStyle` levels author the PowerPoint default
2637
+ * "•", so body placeholders get their bullet from here even when no
2638
+ * slide-level `<a:pPr>` carries one.
2639
+ */
2640
+ bullet: BulletStyle | null;
2641
+ /** Bullet color, size, and font after paragraph/layout/master inheritance. */
2642
+ bulletDetail?: ParagraphBulletDetail;
2643
+ }
2644
+ /**
2645
+ * Resolves a paragraph's effective properties by walking the same
2646
+ * inheritance chain `getShapeRunFormatEffective` uses, but for the
2647
+ * paragraph-level surface:
1855
2648
  *
1856
- * Companion to `getShapeTextAnchor` / `getShapeTextWrap` /
1857
- * `getShapeTextDirection` / `getShapeTextMargins`, which only report the
1858
- * literal value on the shape itself.
2649
+ * - alignment, indent (left / right / first-line), line spacing,
2650
+ * paragraph spacing (before / after), rtl.
2651
+ *
2652
+ * Each property is resolved independently; the innermost layer that
2653
+ * sets it wins. Fields the cascade can't resolve come through as `null`
2654
+ * so renderers know to fall back to their own defaults.
2655
+ *
2656
+ * Companion to `getParagraphAlignment` / `getParagraphLineSpacing` /
2657
+ * `getParagraphIndent` / `getParagraphSpacing`, which only surface the
2658
+ * literal `<a:pPr>` and skip the layout / master cascade.
2659
+ * `inheritanceSource` preserves the original placeholder and slide context
2660
+ * when resolving a detached shape preview. Table cells use their own text body.
1859
2661
  */
1860
- declare const getShapeBodyPrEffective: (pres: PresentationData, shape: SlideShapeData) => {
1861
- anchor: TextAnchor | null;
1862
- wrap: TextWrap | null;
1863
- vert: ReturnType<typeof getShapeTextDirection>;
1864
- margins: {
1865
- left: number | null;
1866
- top: number | null;
1867
- right: number | null;
1868
- bottom: number | null;
1869
- };
1870
- };
1871
- declare const setShapeTextAnchor: (shape: SlideShapeData, anchor: TextAnchor) => void;
2662
+ declare const getParagraphPropertiesEffective: (pres: PresentationData, shape: SlideShapeData | TableCellData, paragraphIndex: number, options?: {
2663
+ inheritanceSource?: SlideShapeData;
2664
+ }) => ParagraphProperties;
1872
2665
  /**
1873
- * Sets the internal margins of the shape's text frame in EMU. Each
1874
- * side is independent; omitted sides keep their current value (or the
1875
- * layout-inherited default when the attribute is absent).
2666
+ * Applies `format` to a single run. Run-property attributes not
2667
+ * addressed by `format` are preserved — partial updates compose.
1876
2668
  *
1877
- * PowerPoint's defaults for a textbox: left/right 91440 (0.1in),
1878
- * top/bottom 45720 (0.05in).
2669
+ * Example: bold the second word of the first paragraph:
1879
2670
  *
1880
- * setShapeTextMargins(shape, { left: 0, right: 0 }); // flush-left text
2671
+ * setShapeRunFormat(shape, 0, 1, { bold: true, color: '#FF0000' });
1881
2672
  */
1882
- declare const setShapeTextMargins: (shape: SlideShapeData, margins: {
1883
- left?: number;
1884
- top?: number;
1885
- right?: number;
1886
- bottom?: number;
1887
- }) => void;
1888
- /** Sets the bullet style on every paragraph in the shape's text body. */
1889
- declare const setShapeBulletStyle: (shape: SlideShapeData, style: BulletStyle) => void;
1890
- /** Sets the horizontal alignment of every paragraph in the shape's text. */
1891
- declare const setShapeAlignment: (shape: SlideShapeData, align: ParagraphAlignment) => void;
2673
+ declare const setShapeRunFormat: (shape: SlideShapeData, paragraphIndex: number, runIndex: number, format: TextFormat) => void;
1892
2674
  /**
1893
- * Applies `format` to every run in the shape's text. Run-property
1894
- * attributes not addressed by `format` are preserved, so partial
1895
- * updates compose.
2675
+ * Reads the external URL the first run in the shape's text-body links
2676
+ * to (set via `setShapeHyperlink`). Returns `null` when no run carries
2677
+ * an `<a:hlinkClick r:id=…/>` or the rId resolves to a non-hyperlink
2678
+ * target.
1896
2679
  */
1897
- declare const setShapeTextFormat: (shape: SlideShapeData, format: TextFormat) => void;
2680
+ declare const getShapeHyperlink: (shape: SlideShapeData) => string | null;
1898
2681
  /**
1899
- * Replaces the shape's text with explicitly structured paragraphs, each
1900
- * carrying its own runs and per-run formats. `setShapeText` yields one run
1901
- * per paragraph; use this when a paragraph mixes formats (a bold lead-in
1902
- * followed by plain text, for example). Read back with
1903
- * `getShapeParagraphElements`.
2682
+ * Sets an external hyperlink on every run in the shape's text. Allocates
2683
+ * (or reuses) a `hyperlink` relationship on the slide's `.rels`. Pass
2684
+ * `null` to clear. Optional `range` limits the change to UTF-16 offsets in
2685
+ * getShapeText, preserving text and formatting outside the selection.
1904
2686
  */
1905
- declare const setShapeParagraphs: (shape: SlideShapeData, paragraphs: ReadonlyArray<ParagraphSpec>) => void;
2687
+ declare const setShapeHyperlink: (shape: SlideShapeData, url: string | null, tooltip?: string, options?: {
2688
+ range?: {
2689
+ start: number;
2690
+ end: number;
2691
+ };
2692
+ }) => void;
1906
2693
  //#endregion
1907
2694
  //#region src/api/fn/comments.d.ts
1908
2695
  /**
@@ -1990,22 +2777,13 @@ declare const getCommentsSortedByDate: (pres: PresentationData) => ReadonlyArray
1990
2777
  declare const getSlideCommentAuthors: (slide: SlideData) => ReadonlyArray<CommentAuthor>;
1991
2778
  /**
1992
2779
  * Returns every comment attached to the slide, with the author already
1993
- * resolved. The list is read-only — use `addSlideComment` /
2780
+ * resolved. Both formats are read: the ECMA-376 `<p:cm>` list first, then
2781
+ * the modern threads. The list is read-only — use `addSlideComment` /
1994
2782
  * `removeSlideComment` to mutate.
1995
2783
  */
1996
2784
  declare const getSlideComments: (slide: SlideData) => ReadonlyArray<SlideCommentData>;
1997
- /**
1998
- * Adds a comment to the slide. Returns the new comment handle.
1999
- *
2000
- * Author handling: if an author with the given `name`+`initials` already
2001
- * exists in `commentAuthors.xml`, the existing record is reused (and its
2002
- * `lastIdx` is bumped). Otherwise a new author is allocated. `initials`
2003
- * defaults to the first character of `name`.
2004
- *
2005
- * `position` is in EMU; pass `null` to omit the `<p:pos>` element.
2006
- * `date` defaults to the current time.
2007
- */
2008
- declare const addSlideComment: (slide: SlideData, opts: {
2785
+ /** Options shared by both comment formats. */
2786
+ interface AddCommentOptions {
2009
2787
  author: {
2010
2788
  name: string;
2011
2789
  initials?: string;
@@ -2013,9 +2791,35 @@ declare const addSlideComment: (slide: SlideData, opts: {
2013
2791
  text: string;
2014
2792
  position?: CommentPosition | null;
2015
2793
  date?: Date;
2016
- }) => SlideCommentData;
2794
+ /** Existing comment on this slide to reply to. */
2795
+ replyTo?: SlideCommentData;
2796
+ }
2797
+ /**
2798
+ * Adds a comment to the slide. Returns the new comment handle.
2799
+ *
2800
+ * Which format it is written in follows the file rather than the caller: a
2801
+ * reply joins its own thread, and a new thread goes where the slide — or,
2802
+ * failing that, the deck — already keeps its comments. Only a deck with no
2803
+ * comments at all starts an ECMA-376 `<p:cm>` list, which everything can
2804
+ * read.
2805
+ *
2806
+ * Author handling: if an author with the given `name`+`initials` already
2807
+ * exists in the relevant author list, the existing record is reused (and, in
2808
+ * the legacy list, its `lastIdx` is bumped). Otherwise a new author is
2809
+ * allocated. `initials` defaults to the first character of `name`.
2810
+ *
2811
+ * `position` is the comment pin, in EMU. The legacy schema makes `<p:pos>`
2812
+ * mandatory, so a legacy comment added without one is pinned to the slide's
2813
+ * origin rather than written without the element; the modern schema makes it
2814
+ * optional, so a modern comment added without one has no pin.
2815
+ *
2816
+ * `date` defaults to the current time.
2817
+ */
2818
+ declare const addSlideComment: (slide: SlideData, opts: AddCommentOptions) => SlideCommentData;
2819
+ /** Updates comment text while retaining author, date, position, and extension XML. */
2820
+ declare const setCommentText: (comment: SlideCommentData, text: string) => void;
2017
2821
  /**
2018
- * Removes the comment from its slide's comments part. If the comment
2822
+ * Removes the comment and all its replies from its slide's comments part. If the comment
2019
2823
  * was the last one on the slide, the comments part and the
2020
2824
  * slide → comments rel are also removed. The author entry in
2021
2825
  * `commentAuthors.xml` is left intact (an author may have comments on
@@ -2025,7 +2829,7 @@ declare const removeSlideComment: (comment: SlideCommentData) => void;
2025
2829
  /**
2026
2830
  * Strips every comment from every slide in the deck. Returns the
2027
2831
  * number of comments removed. Built on `writeCommentsForSlide`,
2028
- * so each slide's modern comment part is rewritten with an empty
2832
+ * so each slide's legacy comment part is rewritten with an empty
2029
2833
  * list. The `commentAuthors.xml` registry is left intact for any
2030
2834
  * caller that still needs author identity.
2031
2835
  *
@@ -2049,6 +2853,30 @@ declare const getCommentPosition: (comment: SlideCommentData) => CommentPosition
2049
2853
  * slide each hit came from.
2050
2854
  */
2051
2855
  declare const getCommentSlide: (comment: SlideCommentData) => SlideData;
2856
+ /** Parent handle from the same read, or null for roots and missing parents. */
2857
+ declare const getCommentParent: (comment: SlideCommentData) => SlideCommentData | null;
2858
+ /**
2859
+ * Which of the two comment formats this handle came from. `'legacy'` is the
2860
+ * ECMA-376 `<p:cm>` list every reader understands; `'modern'` is the
2861
+ * `<p188:cm>` thread PowerPoint 2021 and Microsoft 365 write.
2862
+ */
2863
+ declare const getCommentFormat: (comment: SlideCommentData) => "legacy" | "modern";
2864
+ /**
2865
+ * Whether the thread has been resolved. `null` where the question does not
2866
+ * apply or cannot be answered: a legacy comment, which has nowhere to record
2867
+ * it, or a modern one whose file states a status this schema version does not
2868
+ * define.
2869
+ */
2870
+ declare const getCommentStatus: (comment: SlideCommentData) => CommentStatus | null;
2871
+ /**
2872
+ * Resolves a thread, reopens it (`'active'`), or closes it. Replies carry a
2873
+ * status of their own, so this works on any modern comment.
2874
+ *
2875
+ * Throws for a legacy comment: the ECMA-376 schema has no place to put it,
2876
+ * and quietly doing nothing would leave the caller believing a thread had
2877
+ * been resolved.
2878
+ */
2879
+ declare const setCommentStatus: (comment: SlideCommentData, status: CommentStatus) => void;
2052
2880
  //#endregion
2053
2881
  //#region src/api/fn/shape-image.d.ts
2054
2882
  /**
@@ -2061,9 +2889,9 @@ declare const getCommentSlide: (comment: SlideCommentData) => SlideData;
2061
2889
  */
2062
2890
  type ImageFit = 'fill' | 'contain';
2063
2891
  /**
2064
- * Replaces a picture's media with `bytes`. Same-format replacements
2065
- * write in place; cross-format replacements allocate a new media part
2066
- * and repoint the rel. The geometry — crop, transform — is preserved.
2892
+ * Replaces only this picture's media with `bytes`, detaching shared media
2893
+ * or relationships when necessary. Unshared same-format media is updated
2894
+ * in place. The geometry — crop, transform — is preserved.
2067
2895
  *
2068
2896
  * Pass `options.fit: 'contain'` to re-fit the picture's extent to the
2069
2897
  * replacement image's aspect ratio, inscribed and centered in the shape's
@@ -2092,6 +2920,14 @@ type ShapeClickAction = {
2092
2920
  readonly kind: 'firstSlide';
2093
2921
  } | {
2094
2922
  readonly kind: 'lastSlide';
2923
+ } | {
2924
+ readonly kind: 'lastSlideViewed';
2925
+ } | {
2926
+ readonly kind: 'endShow';
2927
+ } | {
2928
+ readonly kind: 'customShow';
2929
+ readonly id: number;
2930
+ readonly returnToShow: boolean;
2095
2931
  };
2096
2932
  /**
2097
2933
  * Reads the click action attached to the shape's cNvPr, or `null` if
@@ -2101,6 +2937,7 @@ type ShapeClickAction = {
2101
2937
  * - `{ kind: 'slide', slide }` — `slide` rel + `ppaction://hlinksldjump`
2102
2938
  * - `{ kind: 'nextSlide' | 'prevSlide' | 'firstSlide' | 'lastSlide' }`
2103
2939
  * — preset show-navigation `ppaction`.
2940
+ * - `{ kind: 'customShow', id, returnToShow }` — a named custom show.
2104
2941
  *
2105
2942
  * For `kind: 'slide'`, the matching slide is resolved by part name.
2106
2943
  * Returns `null` for unknown `ppaction` strings.
@@ -2115,14 +2952,24 @@ declare const getShapeClickAction: (shape: SlideShapeData) => ShapeClickAction |
2115
2952
  * - For `kind: 'slide'`, a `slide` rel is added pointing at the
2116
2953
  * target slide's part. The `<a:hlinkClick>` carries
2117
2954
  * `action="ppaction://hlinksldjump"`.
2118
- * - For the preset navigations (`nextSlide`, `prevSlide`, ...), no rel
2119
- * is allocated; just the `action` attribute carries the preset.
2955
+ * - For preset navigations and `customShow`, no rel is allocated; just the
2956
+ * `action` attribute carries the destination.
2120
2957
  * - `null` removes any existing `<a:hlinkClick>`.
2121
2958
  *
2959
+ * Optional `range` applies the action to selected UTF-16 text offsets instead
2960
+ * of the whole shape, preserving links and formatting outside the range.
2961
+ * Optional `tooltip` sets the link description; omission clears an old description.
2962
+ *
2122
2963
  * The shape must be one of `shape | picture | connector | graphicFrame`.
2123
2964
  * Groups don't carry their own click action in our model.
2124
2965
  */
2125
- declare const setShapeClickAction: (shape: SlideShapeData, action: ShapeClickAction | null) => void;
2966
+ declare const setShapeClickAction: (shape: SlideShapeData, action: ShapeClickAction | null, options?: {
2967
+ range?: {
2968
+ start: number;
2969
+ end: number;
2970
+ };
2971
+ tooltip?: string;
2972
+ }) => void;
2126
2973
  //#endregion
2127
2974
  //#region src/internal/chartml/types.d.ts
2128
2975
  /**
@@ -3598,10 +4445,25 @@ declare const setTableRowHeight: (table: SlideShapeData, row: number, height: Em
3598
4445
  */
3599
4446
  declare const getTableCell: (table: SlideShapeData, row: number, col: number) => TableCellData;
3600
4447
  /**
3601
- * Replaces a cell's text. `\n` starts a new paragraph. The paragraph-end
3602
- * format (`<a:endParaRPr>`) is not kept; author it with `setTableCellParagraphs`.
3603
- */
3604
- declare const setTableCellText: (cell: TableCellData, text: string) => void;
4448
+ * Replaces a cell's text. `\n` starts a new paragraph unless `newlines: 'break'`
4449
+ * requests paragraph-internal `<a:br>` elements. The paragraph-end
4450
+ * format (`<a:endParaRPr>`) is not kept unless `preserveFormatting` is enabled.
4451
+ * That option preserves unaffected runs and paragraph properties during editing.
4452
+ * With `range`, `text` replaces exactly that UTF-16 selection, always preserving
4453
+ * the formatting of unaffected text. Pass `{ case: 'upper' | 'lower' | 'sentence' |
4454
+ * 'title' | 'toggle' }` to change case in the whole cell or `options.range`
4455
+ * without rebuilding its runs, fields, or paragraph properties.
4456
+ */
4457
+ declare const setTableCellText: (cell: TableCellData, text: string | {
4458
+ case: TextCase;
4459
+ }, options?: {
4460
+ newlines?: "paragraph" | "break";
4461
+ preserveFormatting?: boolean;
4462
+ range?: {
4463
+ start: number;
4464
+ end: number;
4465
+ };
4466
+ }) => void;
3605
4467
  /**
3606
4468
  * Replaces the cell's text with explicitly structured paragraphs and runs —
3607
4469
  * the table counterpart of `setShapeParagraphs`. Read back with
@@ -3649,7 +4511,8 @@ declare const getTableCellSpan: (cell: TableCellData) => {
3649
4511
  * leaves each covered cell's `<a:txBody>` in the XML; `'drop'` removes it,
3650
4512
  * so the covered cells carry no `<a:txBody>` at all (CT_TableCell allows
3651
4513
  * that), which is how PptxGenJS writes a merge; `getTableCellParagraphs`
3652
- * reads them as `[]`.
4514
+ * reads them as `[]`. `'append'` moves covered paragraphs into the anchor in
4515
+ * row-major order, preserving their formatting and leaving covered cells empty.
3653
4516
  */
3654
4517
  declare const mergeTableCells: (table: SlideShapeData, block: {
3655
4518
  readonly row: number;
@@ -3657,8 +4520,14 @@ declare const mergeTableCells: (table: SlideShapeData, block: {
3657
4520
  readonly rowSpan: number;
3658
4521
  readonly colSpan: number;
3659
4522
  }, options?: {
3660
- readonly coveredText?: "keep" | "drop";
4523
+ readonly coveredText?: "keep" | "drop" | "append";
3661
4524
  }) => void;
4525
+ /**
4526
+ * Splits the merged region containing `cell`, including a covered cell.
4527
+ * Retains each cell's text and properties; text removed during merging stays empty.
4528
+ * An unmerged cell is unchanged. Malformed regions throw before any mutation.
4529
+ */
4530
+ declare const splitTableCell: (cell: TableCellData) => void;
3662
4531
  /**
3663
4532
  * One side of a cell's border, as read from `<a:tcPr><a:ln{L|R|T|B}>`.
3664
4533
  * `widthEmu` is the line width in EMU; `color` is `#RRGGBB` or `null`
@@ -3711,6 +4580,12 @@ declare const setTableCellBorders: (cell: TableCellData, sides: {
3711
4580
  * top alongside its column.
3712
4581
  */
3713
4582
  declare const getTableCellTextDirection: (cell: TableCellData) => "vert" | "vert270" | "wordArtVert" | "eaVert" | "mongolianVert" | "wordArtVertRtl" | null;
4583
+ /**
4584
+ * Reads the 3-D on the cell's text body (`<a:scene3d>` / `<a:sp3d>` under its
4585
+ * `<a:bodyPr>`) — the table-cell counterpart of `getShapeText3D`. Returns
4586
+ * `null` when the body has neither.
4587
+ */
4588
+ declare const getTableCellText3D: (cell: TableCellData) => ReadText3D | null;
3714
4589
  /**
3715
4590
  * Sets the cell's text-direction via `<a:tcPr vert="…"/>`. Same six
3716
4591
  * `ST_TextVerticalType` values as `setShapeTextDirection`. Passing
@@ -3766,7 +4641,10 @@ interface TableCellParagraph {
3766
4641
  */
3767
4642
  readonly align: ParagraphAlignment | null;
3768
4643
  /** Runs / fields / breaks in document order, with their literal `<a:rPr>` format. */
3769
- readonly elements: ReadonlyArray<ShapeParagraphElement>;
4644
+ readonly elements: ReadonlyArray<ShapeParagraphElement & {
4645
+ readonly clickAction?: ShapeClickAction;
4646
+ readonly tooltip?: string;
4647
+ }>;
3770
4648
  /**
3771
4649
  * Literal format of the paragraph-end mark (`<a:endParaRPr>`), or `null`
3772
4650
  * when absent — the only format a paragraph with no `elements` carries.
@@ -3788,6 +4666,20 @@ interface TableCellParagraph {
3788
4666
  * `undefined` for the caller to resolve.
3789
4667
  */
3790
4668
  declare const getTableCellParagraphs: (cell: TableCellData) => ReadonlyArray<TableCellParagraph>;
4669
+ /**
4670
+ * Reads a table-cell run's effective character format. The literal
4671
+ * `getTableCellParagraphs` format only contains properties authored on the
4672
+ * run; this resolver also applies the cell text body's paragraph defaults and
4673
+ * outline-level defaults (`a:pPr/defRPr` and `a:lstStyle`). Pass `null` as
4674
+ * `runIndex` to resolve the paragraph end mark, including empty paragraphs.
4675
+ * Pass `{ fieldIndex }` for a zero-based `a:fld` index; numeric indices count
4676
+ * regular `a:r` runs only. Pass `{ breakIndex }` for a zero-based `a:br` index.
4677
+ */
4678
+ declare const getTableCellRunFormatEffective: (pres: PresentationData, cell: TableCellData, paragraphIndex: number, runIndex: number | null | {
4679
+ readonly fieldIndex: number;
4680
+ } | {
4681
+ readonly breakIndex: number;
4682
+ }) => ReadTextFormat;
3791
4683
  /** Sets a solid background color on a cell (`<a:tcPr><a:solidFill>`). */
3792
4684
  declare const setTableCellFill: (cell: TableCellData, color: Color) => void;
3793
4685
  /** Removes any background fill from a cell. */
@@ -3799,8 +4691,44 @@ declare const clearTableCellFill: (cell: TableCellData) => void;
3799
4691
  * (gradient / pattern / image).
3800
4692
  */
3801
4693
  declare const getTableCellFill: (cell: TableCellData) => string | null;
3802
- /** Applies a TextFormat to every run in the cell's text. */
3803
- declare const setTableCellTextFormat: (cell: TableCellData, format: TextFormat) => void;
4694
+ /** Effective cell appearance after table-style and cell-property inheritance. */
4695
+ interface TableCellAppearanceEffective {
4696
+ readonly fill: ShapeFill;
4697
+ readonly borders: TableCellBorders;
4698
+ }
4699
+ /** Resolves table-style `tcStyle` fills and borders, then overlays local `tcPr`. */
4700
+ declare const getTableCellAppearanceEffective: (pres: PresentationData, cell: TableCellData) => TableCellAppearanceEffective;
4701
+ /** Applies a TextFormat to the cell's text, optionally within UTF-16 offsets
4702
+ * in getTableCellText (exclusive end). Breaks count as one character; invalid
4703
+ * ranges and split-surrogate boundaries throw without changing the text.
4704
+ * `reset` restores inherited run appearance before applying `format`, retaining
4705
+ * links and language. Without either target, run-format defaults are also cleared.
4706
+ * Pass a zero-based `paragraphEnd` instead of `range` to update a paragraph's end mark. */
4707
+ declare const setTableCellTextFormat: (cell: TableCellData, format: TextFormat, options?: {
4708
+ range?: {
4709
+ start: number;
4710
+ end: number;
4711
+ };
4712
+ reset?: boolean;
4713
+ paragraphEnd?: never;
4714
+ } | {
4715
+ paragraphEnd: number;
4716
+ reset?: boolean;
4717
+ range?: never;
4718
+ }) => void;
4719
+ /**
4720
+ * Sets or removes a click link on cell text. Omitting range covers the whole
4721
+ * cell; otherwise offsets are UTF-16 positions in getTableCellText, with an
4722
+ * exclusive end. Formatting and links outside the range are preserved.
4723
+ * Omitting tooltip clears the selected link's previous description.
4724
+ */
4725
+ declare const setTableCellClickAction: (cell: TableCellData, action: ShapeClickAction | null, options?: {
4726
+ range?: {
4727
+ start: number;
4728
+ end: number;
4729
+ };
4730
+ tooltip?: string;
4731
+ }) => void;
3804
4732
  /** Sets horizontal alignment on every paragraph in the cell. */
3805
4733
  declare const setTableCellAlignment: (cell: TableCellData, align: ParagraphAlignment) => void;
3806
4734
  /** Zero-based (row, col) of the cell. */
@@ -3980,13 +4908,28 @@ interface PresentationSummary {
3980
4908
  declare const getPresentationSummary: (pres: PresentationData) => PresentationSummary;
3981
4909
  //#endregion
3982
4910
  //#region src/api/fn/shape-image-effects.d.ts
4911
+ /** A color used by a two-color image recolor, with optional DrawingML transforms. */
4912
+ type ImageRecolorColor = Color | {
4913
+ readonly color: Color;
4914
+ readonly colorTransforms?: readonly ColorTransform[];
4915
+ };
3983
4916
  /**
3984
- * Sets the picture's opacity (0–1 fraction; `1` is fully opaque, `0`
3985
- * fully transparent). Pass `null` to remove an existing opacity
3986
- * override and restore PowerPoint's default behavior.
3987
- *
3988
- * Throws for non-picture shapes and on opacities outside `[0, 1]`.
4917
+ * A PowerPoint image recolor operation. Threshold is expressed as a percent
4918
+ * (0..100), matching `getShapeImageBiLevelThreshold` and PowerPoint's UI.
3989
4919
  */
4920
+ type ImageRecolor = {
4921
+ readonly kind: 'none';
4922
+ } | {
4923
+ readonly kind: 'grayscale';
4924
+ } | {
4925
+ readonly kind: 'duotone';
4926
+ readonly colors: readonly [ImageRecolorColor, ImageRecolorColor];
4927
+ } | {
4928
+ readonly kind: 'threshold';
4929
+ readonly threshold: number;
4930
+ } | {
4931
+ readonly kind: 'washout';
4932
+ };
3990
4933
  /**
3991
4934
  * Returns the embedded image bytes for a picture shape, or `null`
3992
4935
  * when the shape isn't a picture or has no `r:embed` reference
@@ -4106,12 +5049,36 @@ declare const getShapeImageBiLevelThreshold: (shape: SlideShapeData) => number |
4106
5049
  * Reads the picture's duotone color transform from `<a:blip><a:duotone>`.
4107
5050
  * PowerPoint emits two `<a:srgbClr>` (or scheme color) children for a
4108
5051
  * two-color duotone effect — typical "Picture Tools › Recolor".
4109
- * Returns `null` when no duotone is set.
4110
- */
4111
- declare const getShapeImageDuotone: (pres: PresentationData, shape: SlideShapeData) => {
5052
+ * By default colors are resolved to RGB for rendering. Pass
5053
+ * `{ resolveColors: false }` to preserve authoring color models and
5054
+ * transforms for a read-edit-write cycle. Only sRGB and scheme colors can
5055
+ * retain their authoring model; other DrawingML models are returned as their
5056
+ * resolved base color with the original transforms. Returns `null` when no
5057
+ * duotone is set.
5058
+ */
5059
+ declare function getShapeImageDuotone(pres: PresentationData, shape: SlideShapeData): {
5060
+ firstColor: string | null;
5061
+ secondColor: string | null;
5062
+ } | null;
5063
+ declare function getShapeImageDuotone(pres: PresentationData, shape: SlideShapeData, options: {
5064
+ readonly resolveColors: false;
5065
+ }): Extract<ImageRecolor, {
5066
+ kind: 'duotone';
5067
+ }> | null;
5068
+ declare function getShapeImageDuotone(pres: PresentationData, shape: SlideShapeData, options: {
5069
+ readonly resolveColors: true;
5070
+ }): {
4112
5071
  firstColor: string | null;
4113
5072
  secondColor: string | null;
4114
5073
  } | null;
5074
+ declare function getShapeImageDuotone(pres: PresentationData, shape: SlideShapeData, options: {
5075
+ readonly resolveColors: boolean;
5076
+ }): {
5077
+ firstColor: string | null;
5078
+ secondColor: string | null;
5079
+ } | Extract<ImageRecolor, {
5080
+ kind: 'duotone';
5081
+ }> | null;
4115
5082
  declare const getShapeImageLinkUrl: (shape: SlideShapeData) => string | null;
4116
5083
  declare const getShapeImagePartName: (shape: SlideShapeData) => string | null;
4117
5084
  /**
@@ -4132,19 +5099,19 @@ declare const getShapeImageFillBytes: (shape: SlideShapeData) => Uint8Array | nu
4132
5099
  */
4133
5100
  declare const getShapeImageFormat: (shape: SlideShapeData) => ImageFormat | null;
4134
5101
  /**
4135
- * Reads the picture's opacity (0–1 fraction). Returns `null` when no
5102
+ * Reads the picture or image fill's opacity (0–1 fraction). Returns `null` when no
4136
5103
  * `<a:alphaModFix>` is present (PowerPoint treats absence as fully
4137
5104
  * opaque); returns `1` when an explicit alphaModFix sets full opacity.
4138
5105
  */
4139
5106
  declare const getShapeImageOpacity: (shape: SlideShapeData) => number | null;
4140
5107
  /**
4141
- * Reads the picture's crop fractions. Returns `null` when no
5108
+ * Reads a picture or image fill's crop fractions. Returns `null` when no
4142
5109
  * `<a:srcRect>` is present; otherwise returns a fully-populated object
4143
5110
  * with every side filled in (0 for omitted sides on disk).
4144
5111
  */
4145
5112
  declare const getShapeImageCrop: (shape: SlideShapeData) => ImageCrop | null;
4146
5113
  /**
4147
- * Adjusts the picture's brightness via `<a:blip><a:lum bright="…"/>`. The value
5114
+ * Adjusts a picture or image fill's brightness via `<a:blip><a:lum bright="…"/>`. The value
4148
5115
  * is a -1..1 fraction:
4149
5116
  *
4150
5117
  * - `1` → +100% brightness
@@ -4152,11 +5119,11 @@ declare const getShapeImageCrop: (shape: SlideShapeData) => ImageCrop | null;
4152
5119
  * - `-1` → -100% brightness
4153
5120
  *
4154
5121
  * Brightness and contrast share the one `<a:lum>` element, so setting one keeps
4155
- * the other. Throws for non-picture shapes and on values outside [-1, 1].
5122
+ * the other. Throws for shapes without an image and on values outside [-1, 1].
4156
5123
  */
4157
5124
  declare const setShapeImageBrightness: (shape: SlideShapeData, value: number | null) => void;
4158
5125
  /**
4159
- * Adjusts the picture's contrast via `<a:blip><a:lum contrast="…"/>`. The value
5126
+ * Adjusts a picture or image fill's contrast via `<a:blip><a:lum contrast="…"/>`. The value
4160
5127
  * is a -1..1 fraction (ECMA-376 `ST_FixedPercentage`):
4161
5128
  *
4162
5129
  * - `0` or `null` → no contrast change (the `contrast` attribute is removed)
@@ -4164,19 +5131,37 @@ declare const setShapeImageBrightness: (shape: SlideShapeData, value: number | n
4164
5131
  * - `-0.5` → -50% contrast (washed out)
4165
5132
  *
4166
5133
  * Brightness and contrast share the one `<a:lum>` element, so setting one keeps
4167
- * the other. Throws on non-picture shapes and on values outside [-1, 1].
5134
+ * the other. Throws for shapes without an image and on values outside [-1, 1].
4168
5135
  */
4169
5136
  declare const setShapeImageContrast: (shape: SlideShapeData, value: number | null) => void;
4170
5137
  /**
4171
- * Reads the picture's contrast (the `<a:lum contrast>` fraction in [-1, 1]).
5138
+ * Reads a picture or image fill's contrast (the `<a:lum contrast>` fraction in [-1, 1]).
4172
5139
  * Returns `null` when no contrast adjustment is present.
4173
5140
  */
4174
5141
  declare const getShapeImageContrast: (shape: SlideShapeData) => number | null;
4175
5142
  /**
4176
- * Reads the picture's brightness (the `<a:lum bright>` fraction in [-1, 1]).
5143
+ * Reads a picture or image fill's brightness (the `<a:lum bright>` fraction in [-1, 1]).
4177
5144
  * Returns `null` when no brightness adjustment is present.
4178
5145
  */
4179
5146
  declare const getShapeImageBrightness: (shape: SlideShapeData) => number | null;
5147
+ /**
5148
+ * Clears PowerPoint's image color corrections from a picture or image fill.
5149
+ * This removes grayscale (`grayscl`), duotone, bi-level recolor, and
5150
+ * brightness/contrast (`lum`) effects while preserving opacity, media
5151
+ * references, and all other known or extension effects.
5152
+ */
5153
+ declare const resetShapeImageColorEffects: (shape: SlideShapeData) => void;
5154
+ /**
5155
+ * Applies a PowerPoint image recolor to a picture or image-filled shape.
5156
+ * `none` removes the recolor while preserving opacity, media references, and
5157
+ * unrelated DrawingML effects. Threshold is a percentage from 0 to 100.
5158
+ */
5159
+ declare const setShapeImageRecolor: (shape: SlideShapeData, recolor: ImageRecolor) => void;
5160
+ /**
5161
+ * Sets picture or image-fill opacity (0–1; `1` is fully opaque).
5162
+ * Pass `null` to restore PowerPoint's default opacity.
5163
+ * Rejects shapes without an image and values outside `[0, 1]` without changing them.
5164
+ */
4180
5165
  declare const setShapeImageOpacity: (shape: SlideShapeData, opacity: number | null) => void;
4181
5166
  /** Crop a picture by fraction of each side. Omitted sides default to 0. */
4182
5167
  interface ImageCrop {
@@ -4186,45 +5171,182 @@ interface ImageCrop {
4186
5171
  readonly bottom?: number;
4187
5172
  }
4188
5173
  /**
4189
- * Sets (or clears) a `<a:srcRect>` on a picture shape, cropping the
5174
+ * Sets (or clears) a `<a:srcRect>` on a picture or image-filled shape, cropping the
4190
5175
  * embedded image by the given fraction on each side. Pass `null` to
4191
5176
  * remove an existing crop.
4192
5177
  *
4193
- * Fractions are in `[0, 1)` per side. `{ left: 0.25 }` clips 25% off
4194
- * the left edge; the visible image stretches to fill the original
4195
- * frame. The shape's geometry (`<a:xfrm>`) is unchanged.
5178
+ * Fractions use the signed `ST_Percentage` range per side. `{ left: 0.25 }`
5179
+ * clips 25% off the left edge; negative values extend the source rectangle.
5180
+ * Stretch fills fit the remaining image to the frame;
5181
+ * tiled fills repeat the remaining image. The shape's geometry (`<a:xfrm>`) is unchanged.
4196
5182
  */
4197
5183
  declare const setShapeImageCrop: (shape: SlideShapeData, crop: ImageCrop | null) => void;
4198
5184
  //#endregion
5185
+ //#region src/api/fn/_animation-timing.d.ts
5186
+ /** When a step runs relative to the one before it. */
5187
+ type AnimationStart = 'click' | 'withPrevious' | 'afterPrevious' | 'unknown';
5188
+ /**
5189
+ * What becomes of the value an effect animates once it has run, from the
5190
+ * `fill` on its behaviours (ST_TLTimeNodeFillType: `remove | freeze | hold |
5191
+ * transition`). `'unstated'` is not `'held'`: the schema gives the attribute
5192
+ * no default, so a tree that omits it has not said.
5193
+ */
5194
+ type AnimationValueAfterEnd = 'held' | 'removed' | 'unstated';
5195
+ /**
5196
+ * What an effect animates. `unsupported` covers targets this library does not
5197
+ * model — charts, OLE parts, sub-shapes, and composite effects whose
5198
+ * behaviours do not all animate the same thing. The step is still listed so a
5199
+ * caller can show it, but it cannot be edited.
5200
+ */
5201
+ type AnimationTarget = {
5202
+ readonly kind: 'shape';
5203
+ readonly shapeId: number;
5204
+ } | {
5205
+ readonly kind: 'paragraphs';
5206
+ readonly shapeId: number;
5207
+ readonly firstParagraph: number;
5208
+ readonly lastParagraph: number;
5209
+ } | {
5210
+ readonly kind: 'unsupported';
5211
+ readonly shapeId: number | null;
5212
+ };
5213
+ /** One animation effect on a slide, as read from `<p:timing>`. */
5214
+ interface SlideAnimationStep {
5215
+ /**
5216
+ * How the editing APIs address this step: the effect's `<p:cTn id>`.
5217
+ * `null` when the node carries no id, the id is not a plain integer, or the
5218
+ * same id appears more than once in the tree — none of which is a safe
5219
+ * handle, so such a step is read-only.
5220
+ */
5221
+ readonly id: number | null;
5222
+ readonly target: AnimationTarget;
5223
+ /**
5224
+ * Every shape any of the step's behaviours animates, in document order.
5225
+ * A composite effect that drives two shapes reports both here even though
5226
+ * `target` refuses to name one of them as *the* target.
5227
+ */
5228
+ readonly targetShapeIds: readonly number[];
5229
+ /** `null` for a preset outside the `AnimationEffect` tokens. */
5230
+ readonly effect: AnimationEffect | null;
5231
+ /**
5232
+ * Which edge of the slide a fly comes from or leaves by. `null` for every
5233
+ * other effect — the preset states no direction, so neither does this.
5234
+ */
5235
+ readonly direction: AnimationDirection | null;
5236
+ readonly presetId: number | null;
5237
+ readonly presetClass: string | null;
5238
+ /** `'unknown'` when the node type is not one this library models. */
5239
+ readonly start: AnimationStart;
5240
+ /** `null` when the tree does not state one — never defaulted. */
5241
+ readonly durationMs: number | null;
5242
+ /** `null` when the tree does not state one, or the delay is indefinite. */
5243
+ readonly delayMs: number | null;
5244
+ /**
5245
+ * What the tree says becomes of the value this effect animates once it has
5246
+ * run. It decides nothing on its own — `playable` already requires that the
5247
+ * behaviour saying whether the shape is on the slide keeps its value — but
5248
+ * it is what two effects animating one object at the same time turn on: the
5249
+ * one that ends first either stays above the other or gives way to it. A
5250
+ * player that finds `'unstated'` there must not choose for the file.
5251
+ */
5252
+ readonly valueAfterEnd: AnimationValueAfterEnd;
5253
+ /** `<p:bldP build="p">` — the text body is revealed paragraph by paragraph. */
5254
+ readonly buildByParagraph: boolean;
5255
+ readonly buildLevel: number | null;
5256
+ /**
5257
+ * Which `<p:seq>` the step lives in, named after its `nodeType`. Only
5258
+ * `'mainSeq'` advances on the slide's own clicks: an `'interactiveSeq'`
5259
+ * sequence fires when the viewer clicks the shape it is bound to, so a
5260
+ * player that folded one into the click order would run it at the wrong
5261
+ * time — and swallow a click the slide owes its main sequence.
5262
+ */
5263
+ readonly sequence: AnimationSequenceKind;
5264
+ /**
5265
+ * `true` when a player can run this step as part of the slide's click
5266
+ * order: it is in the main sequence, starts in a way we model, animates a
5267
+ * single target we model, and uses a preset we know how to render. A step
5268
+ * that is not playable must be shown as such, never folded into the normal
5269
+ * progression.
5270
+ */
5271
+ readonly playable: boolean;
5272
+ /**
5273
+ * `true` when this library can safely move, remove or retime the step:
5274
+ * `playable`, plus a unique handle to address it by. Editability is not
5275
+ * playability — a step can be one without the other as either side grows.
5276
+ */
5277
+ readonly editable: boolean;
5278
+ }
5279
+ /**
5280
+ * Which `<p:seq>` an effect belongs to, named after its `nodeType`. The two
5281
+ * tokens are ST_TLTimeNodeType values; `'other'` covers a sequence whose node
5282
+ * type is absent or something else again.
5283
+ */
5284
+ type AnimationSequenceKind = 'mainSeq' | 'interactiveSeq' | 'other';
5285
+ //#endregion
4199
5286
  //#region src/api/fn/shape-animation.d.ts
4200
5287
  /**
4201
- * Sets a single click-triggered animation effect on the given shape.
5288
+ * Adds a single animation effect to the given shape.
4202
5289
  *
4203
5290
  * The effect is *merged* into any existing `<p:timing>` on the slide rather
4204
5291
  * than replacing it: animating a second shape (or re-running on a template that
4205
- * already has authored animations) preserves the existing effects and appends
4206
- * this one as the next click stop, with cTn ids renumbered to stay unique. To
4207
- * clear every animation first, call `clearSlideAnimations`.
5292
+ * already has authored animations) preserves the existing effects, with cTn ids
5293
+ * renumbered to stay unique. To clear every animation first, call
5294
+ * `clearSlideAnimations`.
4208
5295
  *
4209
5296
  * Supported `effect` tokens:
4210
5297
  *
4211
- * - `'fadeIn'` entrance fade
4212
- * - `'fadeOut'` exit fade
4213
- * - `'appear'` instant entrance
4214
- * - `'disappear'` instant exit
4215
- *
4216
- * `durationMs` defaults to 500ms (fades only — `appear`/`disappear`
4217
- * are instantaneous).
5298
+ * - `'appear'` / `'disappear'` — instant entrance and exit
5299
+ * - `'fadeIn'` / `'fadeOut'` — entrance and exit fade
5300
+ * - `'flyIn'` / `'flyOut'` — entrance and exit that travel in from, or out
5301
+ * to, one edge of the slide. `direction` picks the edge (`'top'`,
5302
+ * `'right'`, `'bottom'` — the default — or `'left'`) and is an error for
5303
+ * any other effect.
5304
+ * - `'zoomIn'` / `'zoomOut'` — entrance that grows from nothing, exit that
5305
+ * shrinks back to it, both about the shape's centre
5306
+ * - `'spin'` — emphasis: one clockwise turn about the shape's centre,
5307
+ * leaving it exactly where it was. It never puts the shape on the slide or
5308
+ * takes it off, so a shape that is not already shown stays unshown.
5309
+ *
5310
+ * `durationMs` defaults to 500ms. `appear` and `disappear` are instantaneous by
5311
+ * definition of the preset and write no timed behaviour at all.
5312
+ *
5313
+ * `start` decides where the effect lands. The default `'click'` gives it a
5314
+ * click stop of its own, so the viewer sees it on the next click.
5315
+ * `'withPrevious'` and `'afterPrevious'` join the stop the last effect is in,
5316
+ * running alongside it or once it has finished — both off the same click. As
5317
+ * the slide's first effect neither has a predecessor, so both run when the
5318
+ * slide appears. `delayMs` waits that long once the start condition is met.
5319
+ *
5320
+ * `'afterPrevious'` throws when the slide's timing does not say when the effect
5321
+ * before it ends — it runs indefinitely, states no duration, repeats, or starts
5322
+ * from another node rather than at a fixed offset. The slide is left untouched;
5323
+ * `'click'` and `'withPrevious'` need no such measurement.
5324
+ *
5325
+ * `byParagraph` reveals the shape's text one paragraph at a time rather than
5326
+ * animating the shape as a whole: one effect per paragraph, each with the same
5327
+ * `start`, so the default `'click'` advances a paragraph per click. They share
5328
+ * a single `<p:bldP build="p">`, which is how PowerPoint and Google Slides both
5329
+ * present the build as one animation. `getSlideAnimations` reports each
5330
+ * paragraph as its own step, targeting a paragraph range.
5331
+ *
5332
+ * Reading the result back, including the order and start condition of every
5333
+ * effect on the slide, is `getSlideAnimations`.
4218
5334
  */
4219
5335
  declare const setShapeAnimation: (shape: SlideShapeData, opts: AnimationOptions) => void;
4220
5336
  /**
4221
5337
  * Returns the animation effect bound to this shape via the slide's
4222
- * `<p:timing>` tree, or `null` if the shape has no animation in the
4223
- * v1 single-effect schema we model. Unknown presets are reported as a
4224
- * raw `null` rather than guessing.
5338
+ * `<p:timing>` tree, or `null` when the shape has none. A shape carrying
5339
+ * several effects reports the first one in document order. Presets outside
5340
+ * the four `AnimationEffect` tokens are reported as `null` rather than
5341
+ * guessed at.
4225
5342
  */
4226
5343
  declare const getShapeAnimation: (shape: SlideShapeData) => AnimationEffect | null;
4227
- /** Removes the slide's `<p:timing>` element entirely. */
5344
+ /**
5345
+ * Every animation effect on the slide, in document order — the click order a
5346
+ * viewer sees. Effects this library cannot author are still listed, with
5347
+ * `editable: false`, so a caller can show them instead of losing them.
5348
+ */
5349
+ declare const getSlideAnimations: (slide: SlideData) => readonly SlideAnimationStep[];
4228
5350
  /**
4229
5351
  * Returns every shape on the slide that has an authored animation
4230
5352
  * effect (i.e. `getShapeAnimation(shape)` is not `null`). Pair to
@@ -4233,6 +5355,7 @@ declare const getShapeAnimation: (shape: SlideShapeData) => AnimationEffect | nu
4233
5355
  * that doesn't honor PowerPoint's timing tree.
4234
5356
  */
4235
5357
  declare const findShapesWithAnimation: (slide: SlideData) => ReadonlyArray<SlideShapeData>;
5358
+ /** Removes every animation on the slide, keeping its media play controls. */
4236
5359
  declare const clearSlideAnimations: (slide: SlideData) => void;
4237
5360
  //#endregion
4238
5361
  //#region src/api/fn/slide-title.d.ts
@@ -4274,7 +5397,7 @@ declare const setSlidePlaceholders: (slide: SlideData, byType: Readonly<Partial<
4274
5397
  declare const setSlideBody: (slide: SlideData, text: string) => void;
4275
5398
  //#endregion
4276
5399
  //#region src/api/fn/shape-runs.d.ts
4277
- /** Number of paragraphs in the shape's text body. Throws for non-text shapes. */
5400
+ /** Number of paragraphs; zero for an autoshape without a text body. Throws for non-text shapes. */
4278
5401
  declare const getShapeParagraphCount: (shape: SlideShapeData) => number;
4279
5402
  /**
4280
5403
  * One inline element in a paragraph as ordered: a literal text run
@@ -4309,9 +5432,11 @@ type ShapeParagraphElement = {
4309
5432
  * Returns the inline children of a paragraph in document order — runs,
4310
5433
  * field placeholders, and line breaks. Used by renderers that need to
4311
5434
  * reproduce the paragraph faithfully (the `<a:r>`-only run accessors
4312
- * silently drop fields and breaks).
5435
+ * silently drop fields and breaks). Omit the index to read all paragraphs in
5436
+ * one pass.
4313
5437
  */
4314
- declare const getShapeParagraphElements: (shape: SlideShapeData, paragraphIndex: number) => ReadonlyArray<ShapeParagraphElement>;
5438
+ declare function getShapeParagraphElements(shape: SlideShapeData): ReadonlyArray<ReadonlyArray<ShapeParagraphElement>>;
5439
+ declare function getShapeParagraphElements(shape: SlideShapeData, paragraphIndex: number): ReadonlyArray<ShapeParagraphElement>;
4315
5440
  /**
4316
5441
  * Reads the literal format of a paragraph's end mark (`<a:endParaRPr>`), or
4317
5442
  * `null` when the paragraph carries none. It is the only format a paragraph
@@ -4374,7 +5499,7 @@ declare const getShapeRunClickAction: (shape: SlideShapeData, paragraphIndex: nu
4374
5499
  * Sets the horizontal alignment of a single paragraph. Same token set
4375
5500
  * as `setShapeAlignment`. Other paragraphs are untouched.
4376
5501
  */
4377
- declare const setParagraphAlignment: (shape: SlideShapeData, paragraphIndex: number, align: ParagraphAlignment) => void;
5502
+ declare const setParagraphAlignment: (shape: SlideShapeData | TableCellData, paragraphIndex: number, align: ParagraphAlignment) => void;
4378
5503
  /**
4379
5504
  * Sets the paragraph's nesting level (`<a:pPr lvl="N"/>`). Levels are
4380
5505
  * 0-indexed; PowerPoint accepts 0 through 8. Pass `0` to clear an
@@ -4382,13 +5507,22 @@ declare const setParagraphAlignment: (shape: SlideShapeData, paragraphIndex: num
4382
5507
  * Indents matching the previous level's default bullet pair follow the level;
4383
5508
  * other indent values are preserved.
4384
5509
  *
5510
+ * A UTF-16 range selects all touched paragraphs (exclusive end; a caret selects
5511
+ * its paragraph). Pass `{ offset }` to shift their existing levels, clamped to
5512
+ * 0 through 8. Range updates preserve run XML and commit the text body once.
5513
+ *
4385
5514
  * Used in tandem with bullets to author nested lists:
4386
5515
  *
4387
5516
  * setShapeText(shape, 'Item 1\nNested\nItem 2');
4388
5517
  * setShapeBulletStyle(shape, 'bullet');
4389
5518
  * setParagraphLevel(shape, 1, 1); // indent the second line
4390
5519
  */
4391
- declare const setParagraphLevel: (shape: SlideShapeData, paragraphIndex: number, level: number) => void;
5520
+ declare const setParagraphLevel: (shape: SlideShapeData | TableCellData, paragraphIndex: number | {
5521
+ start: number;
5522
+ end: number;
5523
+ }, level: number | {
5524
+ offset: number;
5525
+ }) => void;
4392
5526
  /**
4393
5527
  * Reads the paragraph's own `algn` as its spec token (`l`, `ctr`, `r`,
4394
5528
  * `just`, `dist`, `justLow`, `thaiDist`) — so `setParagraphAlignment(…,
@@ -4397,13 +5531,17 @@ declare const setParagraphLevel: (shape: SlideShapeData, paragraphIndex: number,
4397
5531
  * valid token. For the inherited value under a plain-English name, use
4398
5532
  * `getParagraphPropertiesEffective`.
4399
5533
  */
4400
- declare const getParagraphAlignment: (shape: SlideShapeData, paragraphIndex: number) => ParagraphAlignmentToken | null;
5534
+ declare const getParagraphAlignment: (shape: SlideShapeData | TableCellData, paragraphIndex: number) => ParagraphAlignmentToken | null;
4401
5535
  /**
4402
5536
  * Reads the paragraph's nesting level (`lvl` attribute), or `0` when
4403
- * absent — PowerPoint's default. Returns `null` for non-existent
4404
- * paragraphs.
5537
+ * absent — PowerPoint's default. A UTF-16 range returns the levels of all
5538
+ * touched paragraphs in order. Invalid indices or ranges throw RangeError.
4405
5539
  */
4406
- declare const getParagraphLevel: (shape: SlideShapeData, paragraphIndex: number) => number;
5540
+ declare function getParagraphLevel(shape: SlideShapeData | TableCellData, paragraphIndex: number): number;
5541
+ declare function getParagraphLevel(shape: SlideShapeData | TableCellData, range: {
5542
+ start: number;
5543
+ end: number;
5544
+ }): number[];
4407
5545
  /**
4408
5546
  * Sets the spacing before and/or after a paragraph, in points (where
4409
5547
  * a "point" is 1/72 inch). PowerPoint stores these as hundredths of a
@@ -4415,7 +5553,7 @@ declare const getParagraphLevel: (shape: SlideShapeData, paragraphIndex: number)
4415
5553
  * Omitting a side keeps the existing value (or layout default).
4416
5554
  * Passing a side as `null` removes that spacing element.
4417
5555
  */
4418
- declare const setParagraphSpacing: (shape: SlideShapeData, paragraphIndex: number, opts: {
5556
+ declare const setParagraphSpacing: (shape: SlideShapeData | TableCellData, paragraphIndex: number, opts: {
4419
5557
  beforePts?: number | null;
4420
5558
  afterPts?: number | null;
4421
5559
  }) => void;
@@ -4425,7 +5563,7 @@ declare const setParagraphSpacing: (shape: SlideShapeData, paragraphIndex: numbe
4425
5563
  * is present or when the inner element isn't `<a:spcPts>` (percentage
4426
5564
  * spacing is reported as `null` for now).
4427
5565
  */
4428
- declare const getParagraphSpacing: (shape: SlideShapeData, paragraphIndex: number) => {
5566
+ declare const getParagraphSpacing: (shape: SlideShapeData | TableCellData, paragraphIndex: number) => {
4429
5567
  readonly beforePts: number | null;
4430
5568
  readonly afterPts: number | null;
4431
5569
  };
@@ -4438,11 +5576,22 @@ declare const getParagraphSpacing: (shape: SlideShapeData, paragraphIndex: numbe
4438
5576
  * Returns `null` for sides the paragraph doesn't set (those inherit
4439
5577
  * from the layout / master).
4440
5578
  */
4441
- declare const getParagraphIndent: (shape: SlideShapeData, paragraphIndex: number) => {
5579
+ declare const getParagraphIndent: (shape: SlideShapeData | TableCellData, paragraphIndex: number) => {
4442
5580
  leftEmu: number | null;
4443
5581
  rightEmu: number | null;
4444
5582
  firstLineEmu: number | null;
4445
5583
  };
5584
+ /**
5585
+ * Sets paragraph indents in EMU. The first-line offset is relative to the
5586
+ * left indent; negative values create a hanging indent. Omitted sides are
5587
+ * preserved, and `null` removes an override to restore inheritance.
5588
+ * Values are rounded to whole EMU and must satisfy the OOXML text bounds.
5589
+ */
5590
+ declare const setParagraphIndent: (shape: SlideShapeData | TableCellData, paragraphIndex: number, opts: {
5591
+ leftEmu?: number | null;
5592
+ rightEmu?: number | null;
5593
+ firstLineEmu?: number | null;
5594
+ }) => void;
4446
5595
  /**
4447
5596
  * Reads the paragraph's `<a:lnSpc>` line spacing. PowerPoint stores
4448
5597
  * line spacing two ways:
@@ -4456,7 +5605,7 @@ declare const getParagraphIndent: (shape: SlideShapeData, paragraphIndex: number
4456
5605
  * Returns `null` when no `<a:lnSpc>` is present (the paragraph
4457
5606
  * inherits line spacing from the layout / master).
4458
5607
  */
4459
- declare const getParagraphLineSpacing: (shape: SlideShapeData, paragraphIndex: number) => {
5608
+ declare const getParagraphLineSpacing: (shape: SlideShapeData | TableCellData, paragraphIndex: number) => {
4460
5609
  readonly kind: "pct";
4461
5610
  readonly value: number;
4462
5611
  } | {
@@ -4474,7 +5623,7 @@ declare const getParagraphLineSpacing: (shape: SlideShapeData, paragraphIndex: n
4474
5623
  * Pass `null` to clear the override (the paragraph then inherits line
4475
5624
  * spacing from the layout / master).
4476
5625
  */
4477
- declare const setParagraphLineSpacing: (shape: SlideShapeData, paragraphIndex: number, spacing: {
5626
+ declare const setParagraphLineSpacing: (shape: SlideShapeData | TableCellData, paragraphIndex: number, spacing: {
4478
5627
  readonly kind: "pct";
4479
5628
  readonly value: number;
4480
5629
  } | {
@@ -4486,7 +5635,7 @@ declare const setParagraphLineSpacing: (shape: SlideShapeData, paragraphIndex: n
4486
5635
  * no `<a:buChar>` / `<a:buAutoNum>` / `<a:buNone>` is present (the
4487
5636
  * paragraph inherits its bullet from the layout / master).
4488
5637
  */
4489
- declare const getParagraphBullet: (shape: SlideShapeData, paragraphIndex: number) => BulletStyle | null;
5638
+ declare const getParagraphBullet: (shape: SlideShapeData | TableCellData, paragraphIndex: number) => BulletStyle | null;
4490
5639
  /**
4491
5640
  * Returns `true` when the paragraph uses an image as its bullet
4492
5641
  * (`<a:pPr><a:buBlip r:embed="…"/>`). Renderers without image
@@ -4497,7 +5646,7 @@ declare const getParagraphBullet: (shape: SlideShapeData, paragraphIndex: number
4497
5646
  * inherits from, which can be cumbersome. Knowing that the bullet
4498
5647
  * *is* an image is usually enough for the UI to pick a fallback.
4499
5648
  */
4500
- declare const isParagraphBulletPicture: (shape: SlideShapeData, paragraphIndex: number) => boolean;
5649
+ declare const isParagraphBulletPicture: (shape: SlideShapeData | TableCellData, paragraphIndex: number) => boolean;
4501
5650
  /**
4502
5651
  * Returns the embedded image bytes backing a paragraph's picture bullet
4503
5652
  * (`<a:pPr><a:buBlip><a:blip r:embed="…"/>`), or `null` when the
@@ -4509,7 +5658,7 @@ declare const isParagraphBulletPicture: (shape: SlideShapeData, paragraphIndex:
4509
5658
  * layout/master paragraph isn't followed. The returned `Uint8Array` is a
4510
5659
  * live view into the package media part; treat it as read-only.
4511
5660
  */
4512
- declare const getParagraphBulletImageBytes: (shape: SlideShapeData, paragraphIndex: number) => Uint8Array | null;
5661
+ declare const getParagraphBulletImageBytes: (shape: SlideShapeData | TableCellData, paragraphIndex: number) => Uint8Array | null;
4513
5662
  /**
4514
5663
  * Reads the bullet's per-paragraph color, size, and font overrides —
4515
5664
  * `<a:buClr>` (theme-resolved hex), `<a:buSzPct>` / `<a:buSzPts>`
@@ -4519,7 +5668,7 @@ declare const getParagraphBulletImageBytes: (shape: SlideShapeData, paragraphInd
4519
5668
  * when the paragraph doesn't override any of them (the bullet inherits
4520
5669
  * from the run / layout).
4521
5670
  */
4522
- declare const getParagraphBulletStyle: (pres: PresentationData, shape: SlideShapeData, paragraphIndex: number) => {
5671
+ declare const getParagraphBulletStyle: (pres: PresentationData, shape: SlideShapeData | TableCellData, paragraphIndex: number) => {
4523
5672
  color: string | null;
4524
5673
  sizePct: number | null;
4525
5674
  sizePts: number | null;
@@ -4530,111 +5679,27 @@ declare const getParagraphBulletStyle: (pres: PresentationData, shape: SlideShap
4530
5679
  * as `setShapeBulletStyle` — pass `'bullet'` / `'number'` / `'none'` or an
4531
5680
  * object like `{ char: '◆' }` / `{ autoNum: 'romanLcPeriod' }`.
4532
5681
  */
4533
- declare const setParagraphBullet: (shape: SlideShapeData, paragraphIndex: number, style: BulletStyle) => void;
5682
+ declare const setParagraphBullet: (shape: SlideShapeData | TableCellData, paragraphIndex: number, style: BulletStyle) => void;
4534
5683
  /**
4535
5684
  * Sets the text of a single run. Existing rPr (font, size, color, ...)
4536
5685
  * is preserved — only the visible characters change.
4537
5686
  */
4538
- declare const setShapeRunText: (shape: SlideShapeData, paragraphIndex: number, runIndex: number, text: string) => void;
4539
- //#endregion
4540
- //#region src/api/fn/theme.d.ts
4541
- /**
4542
- * The named color scheme on a presentation's theme. Each slot is a
4543
- * `#RRGGBB` string — `sysClr` slots are flattened to their cached
4544
- * `lastClr` value.
4545
- */
4546
- interface PresentationTheme {
4547
- readonly name: string;
4548
- readonly dark1: string;
4549
- readonly light1: string;
4550
- readonly dark2: string;
4551
- readonly light2: string;
4552
- readonly accent1: string;
4553
- readonly accent2: string;
4554
- readonly accent3: string;
4555
- readonly accent4: string;
4556
- readonly accent5: string;
4557
- readonly accent6: string;
4558
- readonly hyperlink: string;
4559
- readonly followedHyperlink: string;
4560
- }
4561
- /**
4562
- * Returns the deck's color scheme as `#RRGGBB` strings, or `null` if
4563
- * the package carries no theme. Each accent slot maps directly to the
4564
- * `accent1`–`accent6` chart palette defaults.
4565
- *
4566
- * The deck's theme is the one its first slide master references. A
4567
- * package usually holds more themes than that — notes and handout
4568
- * masters carry their own, and Google Slides exports name the notes
4569
- * theme `theme1.xml` ahead of the slide theme `theme2.xml` — so the
4570
- * slide master relationship decides, not the part name. Multi-master
4571
- * decks surface the first master's theme only; per-master theme lookup
4572
- * will land if a concrete user need shows up.
4573
- */
4574
- declare const getPresentationTheme: (pres: PresentationData) => PresentationTheme | null;
4575
- /**
4576
- * The theme's font scheme, flattened to the typefaces the runs in a
4577
- * deck inherit by default. `major*` is the heading font (slide
4578
- * titles, chart titles); `minor*` is the body font.
4579
- *
4580
- * Each field carries the Latin / East-Asian / Complex-Script
4581
- * typeface name as written on the theme. Empty values are
4582
- * normalized to `null`.
4583
- */
4584
- interface PresentationFonts {
4585
- readonly majorLatin: string | null;
4586
- readonly majorEastAsian: string | null;
4587
- readonly majorComplexScript: string | null;
4588
- readonly minorLatin: string | null;
4589
- readonly minorEastAsian: string | null;
4590
- readonly minorComplexScript: string | null;
4591
- }
4592
- /**
4593
- * Returns the deck theme's font scheme, or `null` when the package
4594
- * carries no theme. As with `getPresentationTheme`, the deck theme is
4595
- * the first slide master's; per-master font lookup will land if needed.
4596
- */
4597
- declare const getPresentationFonts: (pres: PresentationData) => PresentationFonts | null;
4598
- /**
4599
- * Overwrites the named slots of the deck theme's color
4600
- * scheme (`<a:clrScheme>`), leaving every other slot untouched. Slot
4601
- * values are `#RRGGBB` (or 3-digit `#RGB`) strings; every branded
4602
- * `srgbClr`/`sysClr` slot is normalized to a plain `<a:srgbClr>` on
4603
- * write, since a theme slot is never a scheme-color reference.
4604
- *
4605
- * As with `getPresentationTheme`, multi-master decks are branded via
4606
- * their first slide master's theme only.
4607
- *
4608
- * Throws if the presentation has no theme part, or if a provided color
4609
- * isn't a valid `#RRGGBB` string.
4610
- */
4611
- declare const setPresentationTheme: (pres: PresentationData, theme: Partial<Omit<PresentationTheme, "name">> & {
4612
- name?: string;
4613
- }) => void;
4614
- /**
4615
- * Typeface overrides for {@link setPresentationFonts}. Unlike
4616
- * `PresentationFonts` (the read side, where an empty typeface value
4617
- * flattens to `null`), every field here is a plain string — the
4618
- * underlying `<a:latin>` / `<a:ea>` / `<a:cs>` elements are mandatory on
4619
- * a valid theme, so there's no "clear this typeface" operation.
4620
- */
4621
- interface PresentationFontsInput {
4622
- readonly majorLatin?: string;
4623
- readonly majorEastAsian?: string;
4624
- readonly majorComplexScript?: string;
4625
- readonly minorLatin?: string;
4626
- readonly minorEastAsian?: string;
4627
- readonly minorComplexScript?: string;
4628
- }
5687
+ declare const setShapeRunText: (shape: SlideShapeData, paragraphIndex: number, runIndex: number, text: string) => void;
4629
5688
  /**
4630
- * Overwrites the named typefaces of the deck theme's font scheme
4631
- * (major = headings, minor = body), leaving unset fields untouched. As
4632
- * with `setPresentationTheme`, only the first slide master's theme is
4633
- * branded.
4634
- *
4635
- * Throws if the presentation has no theme part.
5689
+ * Update paragraph line-breaking rules and character alignment. Omitted fields
5690
+ * are preserved; null removes the local override so the style can inherit.
4636
5691
  */
4637
- declare const setPresentationFonts: (pres: PresentationData, fonts: PresentationFontsInput) => void;
5692
+ declare const setParagraphTypography: (shape: SlideShapeData | TableCellData, paragraphIndex: number, settings: {
5693
+ asianLineBreak?: boolean | null;
5694
+ latinLineBreak?: boolean | null;
5695
+ hangingPunctuation?: boolean | null;
5696
+ fontAlignment?: "auto" | "top" | "center" | "baseline" | "bottom" | null;
5697
+ }) => void;
5698
+ /** Set custom and automatic tab stops. Null restores inheritance; [] clears custom stops. */
5699
+ declare const setParagraphTabs: (shape: SlideShapeData | TableCellData, paragraphIndex: number, settings: {
5700
+ tabStops?: readonly ParagraphTabStop[] | null;
5701
+ defaultTabSizeEmu?: number | null;
5702
+ }) => void;
4638
5703
  //#endregion
4639
5704
  //#region src/api/fn/shape-color.d.ts
4640
5705
  /**
@@ -4673,123 +5738,40 @@ declare const resolveDrawingColorOpacity: (colorEl: XmlElement) => number | null
4673
5738
  */
4674
5739
  declare const getShapeRunFormat: (shape: SlideShapeData, paragraphIndex: number, runIndex: number) => ReadTextFormat | null;
4675
5740
  //#endregion
4676
- //#region src/api/fn/shape-paragraph.d.ts
4677
- declare const getShapeRunFormatEffective: (pres: PresentationData, shape: SlideShapeData, paragraphIndex: number, runIndex: number) => ReadTextFormat;
4678
- /** Effective paragraph properties returned by `getParagraphPropertiesEffective`. */
4679
- interface ParagraphProperties {
4680
- /** Horizontal alignment per `ParagraphAlignment`. */
4681
- align: ParagraphAlignment | null;
4682
- /** Outline level (0..8). 0 = top-level paragraph. */
4683
- level: number;
4684
- /** Left indent in EMU. */
4685
- marL: number | null;
4686
- /** Right indent in EMU. */
4687
- marR: number | null;
4688
- /** First-line indent in EMU; negative for hanging indents. */
4689
- indent: number | null;
4690
- /** Line spacing — either a percent multiplier or a fixed point value. */
4691
- lineSpacing: {
4692
- readonly kind: 'pct';
4693
- readonly value: number;
4694
- } | {
4695
- readonly kind: 'pts';
4696
- readonly value: number;
4697
- } | null;
4698
- /** Space before the paragraph in points. */
4699
- spcBefPts: number | null;
4700
- /** Space after the paragraph in points. */
4701
- spcAftPts: number | null;
4702
- /** Right-to-left paragraph (`<a:pPr rtl="1"/>`). */
4703
- rtl: boolean | null;
4704
- /**
4705
- * Bullet resolved through the cascade (`<a:buChar>` / `<a:buAutoNum>` /
4706
- * `<a:buNone>`). Master `bodyStyle` levels author the PowerPoint default
4707
- * "•", so body placeholders get their bullet from here even when no
4708
- * slide-level `<a:pPr>` carries one.
4709
- */
4710
- bullet: BulletStyle | null;
4711
- }
4712
- /**
4713
- * Resolves a paragraph's effective properties by walking the same
4714
- * inheritance chain `getShapeRunFormatEffective` uses, but for the
4715
- * paragraph-level surface:
4716
- *
4717
- * - alignment, indent (left / right / first-line), line spacing,
4718
- * paragraph spacing (before / after), rtl.
4719
- *
4720
- * Each property is resolved independently; the innermost layer that
4721
- * sets it wins. Fields the cascade can't resolve come through as `null`
4722
- * so renderers know to fall back to their own defaults.
4723
- *
4724
- * Companion to `getParagraphAlignment` / `getParagraphLineSpacing` /
4725
- * `getParagraphIndent` / `getParagraphSpacing`, which only surface the
4726
- * literal `<a:pPr>` and skip the layout / master cascade.
4727
- */
4728
- declare const getParagraphPropertiesEffective: (pres: PresentationData, shape: SlideShapeData, paragraphIndex: number) => ParagraphProperties;
4729
- /**
4730
- * Applies `format` to a single run. Run-property attributes not
4731
- * addressed by `format` are preserved — partial updates compose.
4732
- *
4733
- * Example: bold the second word of the first paragraph:
4734
- *
4735
- * setShapeRunFormat(shape, 0, 1, { bold: true, color: '#FF0000' });
4736
- */
4737
- declare const setShapeRunFormat: (shape: SlideShapeData, paragraphIndex: number, runIndex: number, format: TextFormat) => void;
4738
- /**
4739
- * Reads the external URL the first run in the shape's text-body links
4740
- * to (set via `setShapeHyperlink`). Returns `null` when no run carries
4741
- * an `<a:hlinkClick r:id=…/>` or the rId resolves to a non-hyperlink
4742
- * target.
4743
- */
4744
- declare const getShapeHyperlink: (shape: SlideShapeData) => string | null;
4745
- /**
4746
- * Sets an external hyperlink on every run in the shape's text. Allocates
4747
- * (or reuses) a `hyperlink` relationship on the slide's `.rels`. Pass
4748
- * `null` to clear.
4749
- */
4750
- declare const setShapeHyperlink: (shape: SlideShapeData, url: string | null, tooltip?: string) => void;
4751
- //#endregion
4752
5741
  //#region src/api/fn/shape-removal-zorder.d.ts
4753
5742
  /**
4754
- * Copies a shape into `targetSlide`. The source XML is cloned and
4755
- * appended to the target's `<p:spTree>`. Image rels on the source
4756
- * shape are followed: the linked media part is referenced from the
4757
- * target slide via a freshly allocated rId (no media bytes are
4758
- * copied — both slides share the underlying part).
4759
- *
4760
- * v1 requires source and target to live in the same package
4761
- * (`sourceShape`'s slide and `targetSlide` must share the same
4762
- * `OpcPackage`). Cross-package copy is `importSlide` territory.
4763
- *
4764
- * Returns the new `SlideShapeData` on `targetSlide`.
4765
- */
4766
- declare const copyShape: (targetSlide: SlideData, sourceShape: SlideShapeData) => SlideShapeData;
4767
- /** Move `shape` to the end of its spTree (render in front of all others). */
4768
- declare const bringShapeToFront: (shape: SlideShapeData) => void;
4769
- /**
4770
- * Move `shape` behind every other shape on the slide. The
4771
- * `<p:nvGrpSpPr>` / `<p:grpSpPr>` preface — required by the schema —
4772
- * stays at the top.
5743
+ * Copies a shape into `targetSlide`, including nested shapes and relationships.
5744
+ * Within a presentation, media and other referenced parts remain shared.
5745
+ * Across presentations, dependencies are cloned with collision-free part names,
5746
+ * retaining embedded workbooks, unknown parts and external links.
5747
+ * With `preserveGroupTransform`, a nested source retains its ancestor group
5748
+ * transforms as wrappers, excluding sibling objects. Returns the outermost
5749
+ * copied shape on the target slide.
4773
5750
  */
4774
- declare const sendShapeToBack: (shape: SlideShapeData) => void;
4775
- /** Swap `shape` with the next shape sibling (move one step forward). */
4776
- declare const bringShapeForward: (shape: SlideShapeData) => void;
4777
- /**
4778
- * Returns the shape's z-index among the slide's "real" shape children
5751
+ declare const copyShape: (targetSlide: SlideData, sourceShape: SlideShapeData, opts?: {
5752
+ readonly preserveGroupTransform?: boolean;
5753
+ }) => SlideShapeData;
5754
+ /** Move one shape or a selection in front of all siblings, preserving their stacking order. */
5755
+ declare const bringShapeToFront: (shape: SlideShapeData | readonly SlideShapeData[]) => void;
5756
+ /** Move one shape or a selection behind all siblings, preserving their stacking order. */
5757
+ declare const sendShapeToBack: (shape: SlideShapeData | readonly SlideShapeData[]) => void;
5758
+ /** Move one shape or a selection one step forward among siblings. */
5759
+ declare const bringShapeForward: (shape: SlideShapeData | readonly SlideShapeData[]) => void;
5760
+ /**
5761
+ * Returns the shape's z-index among its parent container's "real" shape children
4779
5762
  * (`<p:sp>` / `<p:pic>` / `<p:cxnSp>` / `<p:graphicFrame>` / `<p:grpSp>`),
4780
5763
  * skipping the required `<p:nvGrpSpPr>` / `<p:grpSpPr>` preface.
4781
5764
  * Higher numbers render in front.
4782
5765
  */
4783
5766
  declare const getShapeZIndex: (shape: SlideShapeData) => number;
4784
5767
  /**
4785
- * Moves the shape to a specific z-index among the slide's "real"
4786
- * shape children. Index is clamped to the available range. Higher
4787
- * numbers render in front. The required preface elements stay at the
4788
- * top of `<p:spTree>`.
5768
+ * Moves a shape or an ordered batch of siblings to a specific z-index.
5769
+ * A batch is inserted contiguously in the supplied order, back to front.
5770
+ * Index is clamped to the available range. Non-shape XML stays in place.
4789
5771
  */
4790
- declare const setShapeZIndex: (shape: SlideShapeData, toIndex: number) => void;
4791
- /** Swap `shape` with the previous shape sibling (move one step backward). */
4792
- declare const sendShapeBackward: (shape: SlideShapeData) => void;
5772
+ declare const setShapeZIndex: (shape: SlideShapeData | readonly SlideShapeData[], toIndex: number) => void;
5773
+ /** Move one shape or a selection one step backward among siblings. */
5774
+ declare const sendShapeBackward: (shape: SlideShapeData | readonly SlideShapeData[]) => void;
4793
5775
  /**
4794
5776
  * Removes the shape from its slide's shape tree. Subsequent property
4795
5777
  * reads on this handle reflect the stale snapshot — discard it after.
@@ -4903,6 +5885,38 @@ declare const addSlideImage: (slide: SlideData, bytes: Uint8Array, opts: {
4903
5885
  fit?: ImageFit;
4904
5886
  }) => SlideShapeData;
4905
5887
  //#endregion
5888
+ //#region src/api/fn/layout-edit.d.ts
5889
+ /**
5890
+ * Renames the layout. This is the name PowerPoint shows in the
5891
+ * "New Slide" gallery and in the layout pane, so it is what an author
5892
+ * picks a layout by — it is not an identifier, and nothing references
5893
+ * it.
5894
+ */
5895
+ declare const setSlideLayoutName: (layout: SlideLayoutData, name: string) => void;
5896
+ /**
5897
+ * Gives the layout a solid background, replacing whatever it had.
5898
+ * Every slide on this layout that does not set a background of its own
5899
+ * follows.
5900
+ *
5901
+ * `color` takes the same forms as `setSlideBackground`: `#RRGGBB` or
5902
+ * `scheme:accent1`.
5903
+ */
5904
+ declare const setSlideLayoutBackground: (layout: SlideLayoutData, color: string) => void;
5905
+ /**
5906
+ * Drops the layout's own background so it inherits the master's again.
5907
+ */
5908
+ declare const clearSlideLayoutBackground: (layout: SlideLayoutData) => void;
5909
+ /**
5910
+ * Moves and resizes one of the layout's placeholder slots, identified by
5911
+ * its position in `getSlideLayoutPlaceholders`.
5912
+ *
5913
+ * Slides inherit the new box wherever they have not pushed the
5914
+ * placeholder around themselves: a slide placeholder carrying its own
5915
+ * `<a:xfrm>` keeps it, exactly as PowerPoint behaves when you edit a
5916
+ * layout under slides that were already nudged.
5917
+ */
5918
+ declare const setSlideLayoutPlaceholderBounds: (layout: SlideLayoutData, index: number, bounds: ShapeBounds) => void;
5919
+ //#endregion
4906
5920
  //#region src/api/fn/layouts.d.ts
4907
5921
  /** PowerPoint's user-visible layout name. */
4908
5922
  declare const getSlideLayoutName: (layout: SlideLayoutData) => string;
@@ -5379,11 +6393,24 @@ declare const getAllShapes: (pres: PresentationData) => ReadonlyArray<AllShapesE
5379
6393
  * but keeps them in the editing surface.
5380
6394
  */
5381
6395
  declare const isSlideHidden: (slide: SlideData) => boolean;
6396
+ /** Whether inherited master and layout decoration is hidden on this slide. */
6397
+ declare const isSlideBackgroundGraphicsHidden: (slide: SlideData) => boolean;
6398
+ /** Whether a layout suppresses its master's decoration, keeping its own shapes. */
6399
+ declare const isSlideLayoutBackgroundGraphicsHidden: (layout: SlideLayoutData) => boolean;
6400
+ /**
6401
+ * Hide inherited decoration without removing shapes or changing background fills.
6402
+ * PowerPoint's Hide Background Graphics suppresses layout decoration as well as
6403
+ * master shapes, despite the attribute's name. Slide placeholders remain visible.
6404
+ */
6405
+ declare const setSlideBackgroundGraphicsHidden: (slide: SlideData, hidden: boolean) => void;
5382
6406
  /**
5383
- * Returns `true` when the slide carries a `<p:timing>` block — i.e.,
5384
- * has at least one authored animation effect. Per-slide complement to
5385
- * `getPresentationSummary().hasAnimations`, which only reports a
5386
- * deck-wide flag.
6407
+ * Returns `true` when the slide has at least one authored animation effect.
6408
+ * Per-slide complement to `getPresentationSummary().hasAnimations`, which only
6409
+ * reports a deck-wide flag.
6410
+ *
6411
+ * A slide holding only a video / audio clip also carries a `<p:timing>` block
6412
+ * — that is where the clip's play controls live — so the element's presence
6413
+ * alone is not an animation.
5387
6414
  */
5388
6415
  declare const slideHasAnimations: (slide: SlideData) => boolean;
5389
6416
  /**
@@ -5400,7 +6427,10 @@ declare const replaceTokensInPresentation: (pres: PresentationData, tokens: Reco
5400
6427
  /**
5401
6428
  * Replaces every occurrence of `from` in every slide's text with `to`.
5402
6429
  * `from` may be a string (treated as a literal) or a `RegExp`. Returns
5403
- * the number of `<a:t>` elements mutated across the whole deck.
6430
+ * the number of `<a:t>` elements mutated across the whole deck. Matches can
6431
+ * span formatting runs within a paragraph, but not explicit line breaks.
6432
+ * Inserted text inherits the first matched run’s formatting. `to` follows
6433
+ * JavaScript replacement-string rules (`$$`, `$&`, capture groups).
5404
6434
  *
5405
6435
  * Use this for the broad "rename product X to Y" pattern; for
5406
6436
  * `{{token}}` style substitutions, prefer
@@ -5409,20 +6439,29 @@ declare const replaceTokensInPresentation: (pres: PresentationData, tokens: Reco
5409
6439
  declare const replaceTextInPresentation: (pres: PresentationData, from: string | RegExp, to: string) => number;
5410
6440
  /**
5411
6441
  * Replaces every occurrence of `from` in the slide's text with `to`.
5412
- * Returns the number of `<a:t>` elements mutated on this slide.
6442
+ * Matches span adjacent formatting runs, bounded by paragraphs and explicit
6443
+ * line breaks. Inserted text inherits the first matched run’s formatting;
6444
+ * `to` follows JavaScript replacement-string rules. Returns the number of
6445
+ * `<a:t>` elements mutated on this slide.
5413
6446
  */
5414
6447
  declare const replaceTextInSlide: (slide: SlideData, from: string | RegExp, to: string) => number;
5415
6448
  //#endregion
5416
- //#region src/api/fn/slide-deck.d.ts
6449
+ //#region src/api/fn/custom-shows.d.ts
6450
+ /** A named slide sequence. Repeated slides and empty sequences are supported. */
6451
+ interface CustomShow {
6452
+ readonly id: number;
6453
+ readonly name: string;
6454
+ readonly slides: readonly SlideData[];
6455
+ }
6456
+ /** Reads custom shows in list order. Missing slide references are omitted. */
6457
+ declare function getCustomShows(pres: PresentationData): CustomShow[];
5417
6458
  /**
5418
- * Adds a new slide bound to `layout`. Returns the new `SlideData`.
5419
- *
5420
- * Allocates a fresh part name, sldId, and rId; clones layout
5421
- * placeholders into the slide; writes `[Content_Types].xml`, the
5422
- * slide's `.rels`, presentation's `.rels`, and `<p:sldIdLst>`. The
5423
- * deck-cache on `pres` is invalidated so the next `getSlides` call
5424
- * sees the new entry.
6459
+ * Replaces the custom-show list atomically, retaining metadata on surviving IDs.
6460
+ * Slide handles must belong to this presentation. IDs are stable unsigned integers.
5425
6461
  */
6462
+ declare function setCustomShows(pres: PresentationData, shows: readonly CustomShow[]): void;
6463
+ //#endregion
6464
+ //#region src/api/fn/slide-deck.d.ts
5426
6465
  /**
5427
6466
  * Convenience over `addSlide` that picks a layout automatically:
5428
6467
  *
@@ -5461,12 +6500,23 @@ declare const addSectionHeaderSlide: (pres: PresentationData, title: string) =>
5461
6500
  * Throws when the package carries no layouts at all.
5462
6501
  */
5463
6502
  declare const addTitleSlide: (pres: PresentationData, title: string) => SlideData;
6503
+ /**
6504
+ * Adds a new slide bound to `layout`. Returns the new `SlideData`.
6505
+ *
6506
+ * Allocates a fresh part name, sldId, and rId; clones layout
6507
+ * placeholders into the slide; writes `[Content_Types].xml`, the
6508
+ * slide's `.rels`, presentation's `.rels`, and `<p:sldIdLst>`. The
6509
+ * deck cache is updated while existing slide handles remain valid.
6510
+ * The layout must belong to this presentation.
6511
+ */
5464
6512
  declare const addSlide: (pres: PresentationData, options: {
5465
6513
  layout: SlideLayoutData;
5466
6514
  }) => SlideData;
5467
6515
  /**
5468
6516
  * Removes the given slide from the deck. Removes the `<p:sldId>`, the
5469
6517
  * `presentation.xml.rels` entry, and the slide part + its `.rels` part.
6518
+ * Links to this slide from other slides are cleared to prevent accidental
6519
+ * retargeting when a slide part name is reused.
5470
6520
  *
5471
6521
  * Media parts are intentionally NOT cleaned up — they may be shared
5472
6522
  * with other slides. The freed `sldId` is NOT reused on subsequent
@@ -5510,39 +6560,35 @@ declare const moveSlide: (pres: PresentationData, slide: SlideData, toIndex: num
5510
6560
  */
5511
6561
  declare const duplicateSlide: (pres: PresentationData, slide: SlideData) => SlideData;
5512
6562
  /**
5513
- * Convenience over `addSlide` + `moveSlide`. Inserts the new slide
5514
- * at the given 0-based index (clamped to `[0, getSlides(pres).length]`).
6563
+ * Inserts slides at a 0-based index, clamped to the presentation bounds.
6564
+ * A list of layout options inserts a contiguous batch in the same order,
6565
+ * allocating IDs and updating shared package parts once. Existing slide handles
6566
+ * remain valid. All layouts must belong to the target presentation.
5515
6567
  */
5516
- declare const addSlideAt: (pres: PresentationData, atIndex: number, options: {
6568
+ declare function addSlideAt(pres: PresentationData, atIndex: number, options: ReadonlyArray<{
5517
6569
  layout: SlideLayoutData;
5518
- }) => SlideData;
6570
+ }>): SlideData[];
6571
+ declare function addSlideAt(pres: PresentationData, atIndex: number, options: {
6572
+ layout: SlideLayoutData;
6573
+ }): SlideData;
5519
6574
  /**
5520
6575
  * Convenience over `duplicateSlide` + `moveSlide`. Duplicates `slide`
5521
6576
  * and inserts the duplicate at `atIndex` instead of at the end.
5522
6577
  */
5523
6578
  declare const duplicateSlideAt: (pres: PresentationData, atIndex: number, slide: SlideData) => SlideData;
5524
6579
  /**
5525
- * Imports a slide from another presentation into `targetPres`. The
5526
- * slide's part bytes are copied verbatim; image rels are followed and
5527
- * the linked media is copied into the target package with fresh part
5528
- * names. The new slide is bound to the supplied `targetLayout` so it
5529
- * still renders without the original deck's layouts.
5530
- *
5531
- * Limitations (v1):
5532
- *
5533
- * - Only image / video / audio rels are copied across. Other rels (charts,
5534
- * embedded workbooks, oleObjects, comments) are dropped from the imported
5535
- * slide. A diagnostic message is appended for each dropped rel.
5536
- * - Hyperlinks (external URLs) are preserved.
5537
- * - Slide → notesSlide is dropped (notes don't follow imports).
5538
- *
5539
- * Returns the new `SlideData` appended to `targetPres`.
6580
+ * Imports a slide into `targetPres`. When `targetLayout` is supplied, rebinds
6581
+ * the slide to it. Otherwise preserves the source layout, master and theme.
6582
+ * Copies the complete relationship graph, including charts, workbooks, notes,
6583
+ * media and unknown extension parts. Shared dependencies and cycles retain
6584
+ * their relationships; external hyperlinks are preserved. Missing dependencies
6585
+ * fail before writing any imported parts.
6586
+ * Returns the new slide appended to the target presentation.
5540
6587
  */
5541
- declare const importSlide: (targetPres: PresentationData, sourceSlide: SlideData, targetLayout: SlideLayoutData) => SlideData;
6588
+ declare const importSlide: (targetPres: PresentationData, sourceSlide: SlideData, targetLayout?: SlideLayoutData) => SlideData;
5542
6589
  /**
5543
6590
  * Appends every slide from `sourcePres` into `targetPres`, in source
5544
- * order. Built on top of `importSlide`: media is propagated, charts
5545
- * are dropped (not yet supported across decks), and the slide's
6591
+ * order. Built on top of `importSlide`: dependencies are preserved, and the slide's
5546
6592
  * layout is rebound to `targetLayout` on the target side.
5547
6593
  *
5548
6594
  * `targetLayout` can be a single layout used for every imported
@@ -5553,38 +6599,177 @@ declare const importSlide: (targetPres: PresentationData, sourceSlide: SlideData
5553
6599
  */
5554
6600
  declare const mergePresentations: (targetPres: PresentationData, sourcePres: PresentationData, targetLayout: SlideLayoutData | ((sourceSlide: SlideData, index: number) => SlideLayoutData)) => ReadonlyArray<SlideData>;
5555
6601
  //#endregion
6602
+ //#region src/api/fn/slide-placeholder-geometry.d.ts
6603
+ /**
6604
+ * Restore top-level placeholders' position, size, rotation and flips from the
6605
+ * current layout (or its master when the layout inherits its geometry).
6606
+ * Text, formatting, IDs, relationships and other shapes are preserved. Slots
6607
+ * without matching layout geometry are left intact; deleted placeholders are
6608
+ * not recreated.
6609
+ *
6610
+ * A placeholder inside a group is left where it is. The layout states a
6611
+ * rectangle on the slide, while a grouped shape's own geometry is written in
6612
+ * its group's coordinate space — so restoring it would mean either tearing the
6613
+ * shape out of the arrangement it was grouped into, or inventing a rectangle
6614
+ * the layout never described. Its formatting and appearance are still reset by
6615
+ * the two functions below.
6616
+ *
6617
+ * Returns the number of placeholders restored.
6618
+ */
6619
+ declare const resetSlidePlaceholderGeometry: (slide: SlideData) => number;
6620
+ /**
6621
+ * Restore missing slide placeholders using the current layout.
6622
+ * Existing content, geometry and formatting are untouched, including grouped
6623
+ * placeholders. New slots inherit their layout's geometry and text style;
6624
+ * layout prompt text and layout-only relationships are not copied.
6625
+ * Returns the number of added placeholders. Repeated calls do not add duplicates.
6626
+ */
6627
+ declare const addMissingSlidePlaceholders: (slide: SlideData) => number;
6628
+ /**
6629
+ * Adds the single placeholder of `type` that the layout defines and the slide
6630
+ * is missing — how an editor inserts a slide number, date or footer into a
6631
+ * slide without also restoring every other slot the author deleted.
6632
+ *
6633
+ * `type` is an ECMA-376 `ST_PlaceholderType` token (`sldNum`, `dt`, `ftr`,
6634
+ * `title`, `body`, …), matched as `findSlidePlaceholder` matches it. Returns
6635
+ * the slide's placeholder of that type — the one just added or the one already
6636
+ * there — or `null` when the layout reserves no such slot. Like the added slots
6637
+ * of `addMissingSlidePlaceholders`, it starts empty and inherits its geometry
6638
+ * and text style from the layout and master.
6639
+ * Pass `source: 'master'` to create an unmatched slot that inherits directly
6640
+ * from the master, without changing the layout (as PowerPoint does when
6641
+ * demoting outline text into a Title Only slide). Returns null if absent there.
6642
+ */
6643
+ declare const addSlidePlaceholder: (slide: SlideData, type: PlaceholderType, options?: {
6644
+ source?: "layout" | "master";
6645
+ }) => SlideShapeData | null;
6646
+ /**
6647
+ * Restore inherited text formatting on placeholders bound to the current
6648
+ * layout, including placeholders inside a group. Clears direct run, paragraph
6649
+ * and text-body appearance while preserving text, fields, hyperlinks,
6650
+ * language, outline levels and unknown extensions. Geometry and shape
6651
+ * appearance remain unchanged.
6652
+ * Returns the number of matching text placeholders processed.
6653
+ */
6654
+ declare const resetSlidePlaceholderTextFormatting: (slide: SlideData) => number;
6655
+ /**
6656
+ * Reset the current slide's layout: restore deleted slots, reset top-level
6657
+ * placeholder geometry and clear direct shape/text appearance to inherit the
6658
+ * layout again. Content, picture crops, relationships, IDs and unrelated shapes
6659
+ * remain intact.
6660
+ *
6661
+ * A placeholder inside a group has its appearance and text formatting reset
6662
+ * like any other, but keeps its geometry: where it sits is a statement about
6663
+ * the group's arrangement, and the layout has nothing to say about that.
6664
+ *
6665
+ * Returns the number of layout placeholders processed, including new slots.
6666
+ */
6667
+ declare const resetSlideLayout: (slide: SlideData) => number;
6668
+ //#endregion
6669
+ //#region src/api/fn/shape-locks.d.ts
6670
+ /** Whether the object's movement and resizing are both locked, as in PowerPoint's Selection Pane. */
6671
+ declare const isShapeLocked: (shape: SlideShapeData) => boolean;
6672
+ /** Whether PowerPoint preserves this object's aspect ratio while resizing it. */
6673
+ declare const isShapeAspectRatioLocked: (shape: SlideShapeData) => boolean;
6674
+ /**
6675
+ * Locks or unlocks object geometry like PowerPoint's Selection Pane. Text,
6676
+ * selection, aspect-ratio constraints and extension data remain unchanged.
6677
+ * Group children keep their own locks; pass all descendants for Lock All.
6678
+ * Arrays are committed once per slide, including selections across slides.
6679
+ */
6680
+ declare const setShapeLocked: (shapes: SlideShapeData | readonly SlideShapeData[], locked: boolean) => void;
6681
+ /**
6682
+ * Sets the DrawingML `noChangeAspect` constraint without disturbing other
6683
+ * nonvisual properties. An absent constraint and an explicit false value both
6684
+ * read as unlocked; disabling the constraint removes only this attribute.
6685
+ */
6686
+ declare const setShapeAspectRatioLocked: (shapes: SlideShapeData | readonly SlideShapeData[], locked: boolean) => void;
6687
+ //#endregion
6688
+ //#region src/api/fn/shape-custom-geometry.d.ts
6689
+ /** One path to write; `fill` defaults to `'norm'` and `stroke` to `true`, as in the schema. */
6690
+ interface CustomGeometryPathInput {
6691
+ /** Path coordinate-space width and height (`ST_PositiveCoordinate`). */
6692
+ readonly w: number;
6693
+ readonly h: number;
6694
+ readonly fill?: PathFillMode;
6695
+ readonly stroke?: boolean;
6696
+ readonly commands: readonly GeomCommand[];
6697
+ }
6698
+ interface CustomGeometryInput {
6699
+ readonly paths: readonly CustomGeometryPathInput[];
6700
+ }
6701
+ /**
6702
+ * Replaces the shape's geometry (preset or custom) with the given paths. The
6703
+ * text rectangle is the whole shape, as PowerPoint writes for freeforms.
6704
+ * Coordinates are rounded to integers, which the schema requires.
6705
+ */
6706
+ declare const setShapeCustomGeometry: (shape: SlideShapeData, geometry: CustomGeometryInput) => void;
6707
+ //#endregion
6708
+ //#region src/api/fn/shape-text-language.d.ts
6709
+ /** Marks every run in the shape's text (and the end-of-paragraph marks) as `lang`, e.g. `en-US`. */
6710
+ declare const setShapeTextLanguage: (shape: SlideShapeData, lang: string) => void;
6711
+ /** The language of the shape's first run that names one, or `null`. */
6712
+ declare const getShapeTextLanguage: (shape: SlideShapeData) => string | null;
6713
+ //#endregion
6714
+ //#region src/api/fn/shape-style.d.ts
6715
+ /** One DrawingML style-list reference used by a shape quick style. */
6716
+ interface ShapeStyleReference {
6717
+ /** 0 clears the reference; positive values index the theme format scheme. */
6718
+ readonly idx: number;
6719
+ /** Theme slot or sRGB color replacing the style list's `phClr`. */
6720
+ readonly color?: Color;
6721
+ /** Ordered DrawingML color transforms (for example PowerPoint's shade). */
6722
+ readonly colorTransforms?: readonly ColorTransform[];
6723
+ }
6724
+ interface ShapeStyleFontReference {
6725
+ readonly idx: 'major' | 'minor' | 'none';
6726
+ readonly color?: Color;
6727
+ readonly colorTransforms?: readonly ColorTransform[];
6728
+ }
6729
+ /** Complete OOXML shape style. Direct text runs and geometry are untouched. */
6730
+ interface ShapeStyleOptions {
6731
+ readonly line: ShapeStyleReference;
6732
+ readonly fill: ShapeStyleReference;
6733
+ readonly effect: ShapeStyleReference;
6734
+ readonly font: ShapeStyleFontReference;
6735
+ }
6736
+ /** Apply a complete native OOXML shape style while preserving geometry/text. */
6737
+ declare const setShapeStyle: (shape: SlideShapeData, options: ShapeStyleOptions) => void;
6738
+ //#endregion
5556
6739
  //#region src/api/fn/shape-grouping.d.ts
5557
6740
  /**
5558
- * Groups two or more top-level shapes into a single `<p:grpSp>`,
6741
+ * Groups two or more sibling shapes into a single `<p:grpSp>`,
5559
6742
  * returning the new group as a `SlideShapeData`. The group's
5560
- * slide-space bounds are the union of its members' bounds; the members
6743
+ * parent-space bounds are the union of its members' bounds; the members
5561
6744
  * keep their own relative position/size (nothing is rescaled). The
5562
6745
  * target slide is taken from the first shape — every shape must belong
5563
6746
  * to the same slide.
5564
6747
  *
5565
6748
  * Every shape must:
5566
6749
  * - belong to the same slide as the others,
5567
- * - be a direct child of the slide's shape tree (not already nested
5568
- * inside another group — ungroup first, then re-group),
6750
+ * - share the same immediate parent (the slide or a group),
5569
6751
  * - have an explicit `<a:xfrm>` (placeholders that inherit position
5570
6752
  * from the layout have none and can't be grouped),
5571
6753
  * - appear at most once in `shapes` (grouping the same shape twice
5572
6754
  * would duplicate its id).
5573
6755
  *
5574
6756
  * The group replaces its members at the position of the earliest one in
5575
- * z-order, so grouping doesn't change how the selection stacks against
5576
- * shapes that weren't part of it.
6757
+ * z-order, preserving member order regardless of selection order. Members
6758
+ * become one contiguous block, which can change interleaving with unselected shapes.
5577
6759
  */
5578
6760
  declare const groupShapes: (shapes: ReadonlyArray<SlideShapeData>, opts?: {
5579
6761
  name?: string;
5580
6762
  }) => SlideShapeData;
5581
6763
  /**
5582
6764
  * Reverses `groupShapes`: removes the `<p:grpSp>` and re-inserts its
5583
- * immediate children as top-level shapes at the group's former position,
6765
+ * immediate children into its parent at the group's former position,
5584
6766
  * rescaling each child's own transform so it keeps its on-slide position
5585
6767
  * and size (matters when the group was moved/resized after creation, so
5586
6768
  * its `off`/`ext` diverged from its `chOff`/`chExt`). Returns the
5587
6769
  * children as fresh `SlideShapeData` handles, in their original order.
6770
+ * Group rotation and flips are composed with each child transform. Exact
6771
+ * preservation of rotated children requires uniform group scaling; anisotropic
6772
+ * scaling can introduce shear, which a child shape transform cannot represent.
5588
6773
  *
5589
6774
  * Throws if `group` isn't a group shape, or its `<p:grpSpPr>` carries no
5590
6775
  * `<a:xfrm>` (malformed — every authored group has one).
@@ -5648,6 +6833,162 @@ declare const addSlideMedia: (slide: SlideData, opts: SlideMediaOptions) => Slid
5648
6833
  declare const getShapeMedia: (shape: SlideShapeData) => ShapeMedia | null;
5649
6834
  /** Every shape on the slide that `getShapeMedia` reports a clip for. */
5650
6835
  declare const findShapesWithMedia: (slide: SlideData) => ReadonlyArray<SlideShapeData>;
6836
+ /** Durations removed from the source clip, in milliseconds. */
6837
+ interface MediaTrim {
6838
+ readonly startMs: number;
6839
+ /** Duration removed from the end of the source clip. */
6840
+ readonly endMs: number;
6841
+ }
6842
+ interface MediaFade {
6843
+ readonly inMs: number;
6844
+ readonly outMs: number;
6845
+ }
6846
+ /** A named position in an embedded media clip, measured from its beginning. */
6847
+ interface MediaBookmark {
6848
+ readonly name: string;
6849
+ readonly timeMs: number;
6850
+ }
6851
+ /**
6852
+ * How a clip plays in the slide show — the attributes of its
6853
+ * `<p:cMediaNode>` and the start condition of its time node.
6854
+ *
6855
+ * Trimming and fades are stored in the PowerPoint 2010 `p14:media` extension.
6856
+ * `trim.endMs` is the duration removed from the end of the clip, matching the
6857
+ * OOXML `p14:trim@end` meaning (it is not the playback end position).
6858
+ */
6859
+ interface MediaPlayback {
6860
+ /** Starts with the slide instead of waiting for a click. */
6861
+ readonly autoplay: boolean;
6862
+ /** Milliseconds to wait after the slide starts before automatic playback. */
6863
+ readonly delayMs?: number;
6864
+ /** Plays again from the beginning until the slide moves on. */
6865
+ readonly loop: boolean;
6866
+ /** Playback volume, 0–1. PowerPoint's own default is 0.8. */
6867
+ readonly volume: number;
6868
+ readonly muted: boolean;
6869
+ /** Video only: plays filling the screen. */
6870
+ readonly fullScreen: boolean;
6871
+ /** Hides the clip once it has played (`showWhenStopped="0"`). */
6872
+ readonly hideWhenStopped: boolean;
6873
+ /** Number of slides across which the clip should keep playing (`numSld`).
6874
+ * When absent, OOXML defaults to one slide. */
6875
+ readonly slideCount?: number;
6876
+ /** Returns playback to the beginning after natural completion (`fill="remove"`). */
6877
+ readonly rewindAfterPlaying?: boolean;
6878
+ readonly trim?: MediaTrim;
6879
+ readonly fade?: MediaFade;
6880
+ /** Named positions in the clip, in the order stored in the media extension. */
6881
+ readonly bookmarks?: readonly MediaBookmark[];
6882
+ }
6883
+ /**
6884
+ * Reads how the shape's clip plays, or `null` when the shape carries no media
6885
+ * time node — which is what a picture that is not a clip looks like, and also
6886
+ * what a clip pasted in without its node looks like (it shows no controls).
6887
+ */
6888
+ declare const getShapeMediaPlayback: (shape: SlideShapeData) => MediaPlayback | null;
6889
+ /**
6890
+ * Updates how the shape's clip plays. Omitted properties keep their current
6891
+ * value. Throws when the shape has no media time node — `addSlideMedia` writes
6892
+ * one, and a picture that is not a clip never plays.
6893
+ *
6894
+ * `delayMs` is a nonnegative safe integer and requires automatic playback.
6895
+ * Setting `autoplay: true` alone preserves an existing automatic delay;
6896
+ * switching from event playback starts immediately unless `delayMs` is supplied.
6897
+ *
6898
+ * `fullScreen` is a video attribute (`CT_TLMediaNodeVideo`); asking for it on
6899
+ * an audio clip throws rather than writing an attribute the schema rejects.
6900
+ */
6901
+ declare const setShapeMediaPlayback: (shape: SlideShapeData, options: Partial<MediaPlayback>) => void;
6902
+ //#endregion
6903
+ //#region src/api/fn/shape-video.d.ts
6904
+ /**
6905
+ * Restores a video to PowerPoint's default shape formatting.
6906
+ *
6907
+ * This is deliberately restricted to video media pictures. It clears the
6908
+ * image recolor/correction elements and the shape-level fill, line, effects,
6909
+ * and 3-D style children, while preserving the poster/media relationship,
6910
+ * crop, transform, and unknown extension XML.
6911
+ */
6912
+ declare const resetShapeVideoFormatting: (shape: SlideShapeData) => void;
6913
+ //#endregion
6914
+ //#region src/api/fn/slide-animation-edit.d.ts
6915
+ /**
6916
+ * What to change about an effect. Every field is optional; the ones left out
6917
+ * keep what the slide already says.
6918
+ *
6919
+ * `byParagraph` is not an attribute flip: turning it on replaces the effect
6920
+ * with one per paragraph of the shape's text, and turning it off replaces the
6921
+ * whole build with a single effect on the shape. In both directions the id you
6922
+ * passed stays on the effect that takes the original's place in the click
6923
+ * order, and the other effects of a build are new — so a caller holding several
6924
+ * handles into one build keeps only the one it addressed.
6925
+ */
6926
+ interface AnimationPatch {
6927
+ readonly effect?: AnimationEffect;
6928
+ /**
6929
+ * Which edge a fly comes from or leaves by. Changing it rewrites the effect
6930
+ * the same way changing the preset does, because the direction is part of
6931
+ * what the preset says. Passing it for an effect that does not fly is an
6932
+ * error — including one this patch is turning into such an effect.
6933
+ */
6934
+ readonly direction?: AnimationDirection;
6935
+ readonly durationMs?: number;
6936
+ readonly start?: AnimationStartCondition;
6937
+ readonly delayMs?: number;
6938
+ readonly byParagraph?: boolean;
6939
+ }
6940
+ /**
6941
+ * Changes one effect: its preset, how long it runs, when it starts, and whether
6942
+ * the shape's text is revealed a paragraph at a time.
6943
+ *
6944
+ * The effect keeps the id it was addressed by. Everything after it in the click
6945
+ * order is laid out again, because a longer effect moves what follows it and a
6946
+ * new start condition moves the effect itself between click stops.
6947
+ *
6948
+ * An effect whose duration the slide never stated gets this library's default
6949
+ * when it is rewritten; pass `durationMs` to say what it should be.
6950
+ */
6951
+ declare const updateSlideAnimation: (slide: SlideData, id: number, patch: AnimationPatch) => void;
6952
+ /**
6953
+ * Removes one effect. The effects after it move one place earlier in the click
6954
+ * order and are retimed to match.
6955
+ *
6956
+ * A paragraph of a build is removed on its own: the build entry the rest of the
6957
+ * paragraphs share stays, and goes only once the last of them is gone.
6958
+ */
6959
+ declare const removeSlideAnimation: (slide: SlideData, id: number) => void;
6960
+ /**
6961
+ * Moves one effect to `index` in the click order, counting only the slide's
6962
+ * main sequence — the order `getSlideAnimations` reports for steps whose
6963
+ * `sequence` is `'mainSeq'`.
6964
+ *
6965
+ * Each effect keeps the start condition it had, so moving a `'withPrevious'`
6966
+ * effect to the front does not turn it into a click: it becomes the first thing
6967
+ * that runs as the slide appears, which is what it already meant.
6968
+ */
6969
+ declare const moveSlideAnimation: (slide: SlideData, id: number, index: number) => void;
6970
+ //#endregion
6971
+ //#region src/api/fn/_image-fill-layout.d.ts
6972
+ type ImageTileAlignment = 'tl' | 't' | 'tr' | 'l' | 'ctr' | 'r' | 'bl' | 'b' | 'br';
6973
+ type ImageTileFlip = 'none' | 'x' | 'y' | 'xy';
6974
+ /** Image placement inside its fill area; percentages use fractions (0.25 = 25%). */
6975
+ type ImageFillLayout = {
6976
+ /** Omitted on write preserves the existing rotation setting. */rotateWithShape?: boolean;
6977
+ } & ({
6978
+ mode: 'stretch';
6979
+ left?: number;
6980
+ top?: number;
6981
+ right?: number;
6982
+ bottom?: number;
6983
+ } | {
6984
+ mode: 'tile';
6985
+ offsetX?: Emu;
6986
+ offsetY?: Emu;
6987
+ scaleX?: number;
6988
+ scaleY?: number;
6989
+ alignment?: ImageTileAlignment;
6990
+ flip?: ImageTileFlip;
6991
+ });
5651
6992
  //#endregion
5652
6993
  //#region src/api/fn/slide-background.d.ts
5653
6994
  /**
@@ -5659,6 +7000,7 @@ declare const findShapesWithMedia: (slide: SlideData) => ReadonlyArray<SlideShap
5659
7000
  type SlideBackground = {
5660
7001
  readonly kind: 'solid';
5661
7002
  readonly color: string;
7003
+ readonly opacity?: number;
5662
7004
  } | {
5663
7005
  readonly kind: 'gradient';
5664
7006
  } | {
@@ -5745,7 +7087,9 @@ declare const getSlideMasterShapes: (pres: PresentationData, layout: SlideLayout
5745
7087
  * `<p:bgPr><a:pattFill>`. Same shape as `getSlideBackgroundPatternFill`
5746
7088
  * for slides.
5747
7089
  */
5748
- declare const getSlideLayoutBackgroundPatternFill: (pres: PresentationData, layout: SlideLayoutData) => {
7090
+ declare const getSlideLayoutBackgroundPatternFill: (pres: PresentationData, layout: SlideLayoutData, options?: {
7091
+ readonly preserveTheme?: boolean;
7092
+ }) => {
5749
7093
  preset: string;
5750
7094
  foreground: string;
5751
7095
  background: string;
@@ -5754,15 +7098,18 @@ declare const getSlideLayoutBackgroundPatternFill: (pres: PresentationData, layo
5754
7098
  * Reads the slide master's pattern background. Companion to
5755
7099
  * `getSlideLayoutBackgroundPatternFill`.
5756
7100
  */
5757
- declare const getSlideMasterBackgroundPatternFill: (pres: PresentationData, layout: SlideLayoutData) => {
7101
+ declare const getSlideMasterBackgroundPatternFill: (pres: PresentationData, layout: SlideLayoutData, options?: {
7102
+ readonly preserveTheme?: boolean;
7103
+ }) => {
5758
7104
  preset: string;
5759
7105
  foreground: string;
5760
7106
  background: string;
5761
7107
  } | null;
5762
7108
  /**
5763
- * Reads the slide layout's gradient background when its `<p:bg>` is a
5764
- * `<p:bgPr><a:gradFill>`. Same shape as `getSlideBackgroundGradientFill`
5765
- * for slides.
7109
+ * Reads the slide layout's gradient background from either `<p:bgPr><a:gradFill>`
7110
+ * or a theme style referenced by `<p:bgRef>`. Same shape as `getSlideBackgroundGradientFill`
7111
+ * for slides. Stop `resolvedColor` values include the presentation theme
7112
+ * and DrawingML color transforms.
5766
7113
  */
5767
7114
  declare const getSlideLayoutBackgroundGradientFill: (layout: SlideLayoutData) => ReadGradientFill | null;
5768
7115
  /**
@@ -5771,6 +7118,7 @@ declare const getSlideLayoutBackgroundGradientFill: (layout: SlideLayoutData) =>
5771
7118
  * background kind. Useful for closing the bg cascade — slides that
5772
7119
  * report `'gradient'` inherit can now get the master's gradient
5773
7120
  * projected via `gradientDef`.
7121
+ * Stop `resolvedColor` values include the presentation theme and color transforms.
5774
7122
  */
5775
7123
  declare const getSlideMasterBackgroundGradientFill: (pres: PresentationData, layout: SlideLayoutData) => ReadGradientFill | null;
5776
7124
  /**
@@ -5787,9 +7135,12 @@ declare const getSlideMasterBackground: (pres: PresentationData, layout: SlideLa
5787
7135
  declare const getSlideLayoutBackground: (layout: SlideLayoutData) => SlideBackground;
5788
7136
  /**
5789
7137
  * Returns the gradient stops + path when the slide carries a
5790
- * `<p:bgPr><a:gradFill>` background. Returns `null` for any other
7138
+ * literal `<p:bgPr><a:gradFill>` or theme-referenced `<p:bgRef>` gradient.
7139
+ * Returns `null` for any other
5791
7140
  * background kind. Shape identical to `getShapeGradientFill` so renderers
5792
7141
  * can use the same projection logic for slide backgrounds.
7142
+ * Stop `resolvedColor` values include the presentation theme, slide color map
7143
+ * and DrawingML color transforms; `color` retains the authored token.
5793
7144
  */
5794
7145
  declare const getSlideBackgroundGradientFill: (slide: SlideData) => ReadGradientFill | null;
5795
7146
  /**
@@ -5797,7 +7148,9 @@ declare const getSlideBackgroundGradientFill: (slide: SlideData) => ReadGradient
5797
7148
  * carries a `<p:bgPr><a:pattFill>` background. Returns `null` for any
5798
7149
  * other background kind. Shape mirrors `getShapePatternFill`.
5799
7150
  */
5800
- declare const getSlideBackgroundPatternFill: (pres: PresentationData, slide: SlideData) => {
7151
+ declare const getSlideBackgroundPatternFill: (pres: PresentationData, slide: SlideData, options?: {
7152
+ readonly preserveTheme?: boolean;
7153
+ }) => {
5801
7154
  preset: string;
5802
7155
  foreground: string;
5803
7156
  background: string;
@@ -5824,8 +7177,58 @@ declare const getSlideLayoutBackgroundImageBytes: (pres: PresentationData, layou
5824
7177
  * master rel). Companion to `getSlideLayoutBackgroundImageBytes`.
5825
7178
  */
5826
7179
  declare const getSlideMasterBackgroundImageBytes: (pres: PresentationData, layout: SlideLayoutData) => Uint8Array | null;
5827
- /** Sets a solid fill on the slide's background. */
5828
- declare const setSlideBackground: (slide: SlideData, color: Color) => void;
7180
+ /** Sets a solid background; optional opacity is 0 (transparent) to 1 (opaque). */
7181
+ declare const setSlideBackground: (slide: SlideData, color: Color, opacity?: number) => void;
7182
+ /**
7183
+ * Replaces the slide background with a gradient. Uses the same stop and direction
7184
+ * settings as `setShapeGradientFill`; offsets and opacity range from 0 to 1.
7185
+ * Invalid settings leave the previous background unchanged.
7186
+ */
7187
+ declare const setSlideBackgroundGradientFill: (slide: SlideData, options: GradientFillOptions) => void;
7188
+ /** Natural background image size in EMUs, using fill DPI and embedded PNG/JPEG resolution.
7189
+ * Reads inherited backgrounds. Returns null for missing or unsupported image bytes.
7190
+ */
7191
+ declare const getSlideBackgroundImageIntrinsicSize: (slide: SlideData) => {
7192
+ width: Emu;
7193
+ height: Emu;
7194
+ } | null;
7195
+ /** Reads direct or inherited background image crop fractions, including negative outsets.
7196
+ * Returns null when no source rectangle is specified or the background is not an image.
7197
+ */
7198
+ declare const getSlideBackgroundImageCrop: (slide: SlideData) => ImageCrop | null;
7199
+ /** Reads direct or inherited image background placement; returns null for other fills. */
7200
+ declare const getSlideBackgroundImageFillLayout: (slide: SlideData) => ImageFillLayout | null;
7201
+ /**
7202
+ * Changes background image placement while preserving media, crop and effects.
7203
+ * An inherited image becomes a slide override, leaving its layout/master unchanged.
7204
+ * Invalid settings or missing relationships leave the presentation unchanged.
7205
+ */
7206
+ declare const setSlideBackgroundImageFillLayout: (slide: SlideData, layout: ImageFillLayout) => void;
7207
+ /** Reads direct or inherited background picture opacity; null means no explicit opacity. */
7208
+ declare const getSlideBackgroundImageOpacity: (slide: SlideData) => number | null;
7209
+ /** Sets background image opacity (0–1), preserving media and placement. Null restores the default.
7210
+ * Inherited images become slide overrides. Invalid values leave the deck unchanged.
7211
+ */
7212
+ declare const setSlideBackgroundImageOpacity: (slide: SlideData, opacity: number | null) => void;
7213
+ /**
7214
+ * Updates a slide pattern background, preserving unspecified colors and transforms.
7215
+ * Inherited patterns become a slide override; the layout and master stay unchanged.
7216
+ * A new pattern uses Mac PowerPoint's defaults: pct5, accent1 foreground, bg1 background.
7217
+ */
7218
+ declare const setSlideBackgroundPatternFill: (slide: SlideData, options: Partial<PatternFillOptions>) => void;
7219
+ /**
7220
+ * Copies the source's effective background into a target slide, retaining its XML
7221
+ * and referenced parts. Inherited fills become explicit on the target. Theme
7222
+ * references use the target's theme; background graphics visibility is unchanged.
7223
+ * Across presentations, dependencies are copied with collision-free names.
7224
+ */
7225
+ declare const copySlideBackground: (targetSlide: SlideData, sourceSlide: SlideData) => void;
7226
+ /**
7227
+ * Applies the source slide's effective background throughout its presentation.
7228
+ * Like Mac PowerPoint, stores the fill on masters and clears slide/layout overrides.
7229
+ * Theme colors and image relationships are preserved without flattening the fill.
7230
+ */
7231
+ declare const applySlideBackgroundToAll: (pres: PresentationData, slide: SlideData) => void;
5829
7232
  /**
5830
7233
  * Sets a picture as the slide's background. Embeds `bytes` as a new
5831
7234
  * media part, wires a slide → image rel, and replaces any prior
@@ -5841,10 +7244,34 @@ declare const setSlideBackgroundImage: (slide: SlideData, bytes: Uint8Array, opt
5841
7244
  /** Clears any explicit slide background, restoring layout inheritance. */
5842
7245
  declare const clearSlideBackground: (slide: SlideData) => void;
5843
7246
  //#endregion
7247
+ //#region src/api/fn/master-background-style.d.ts
7248
+ /**
7249
+ * Choose one of PowerPoint's twelve Background Styles (numbered row by row).
7250
+ * Changes the owning master, so every slide using that master inherits the
7251
+ * style. Existing slide and layout background overrides remain in place.
7252
+ * The theme must provide the referenced background fill style.
7253
+ */
7254
+ declare const setSlideMasterBackgroundStyle: (slide: SlideData, style: number) => void;
7255
+ /** A theme background preset; complex fill kinds without a gradient retain their kind. */
7256
+ interface SlideMasterBackgroundStyle {
7257
+ readonly style: number;
7258
+ readonly selected: boolean;
7259
+ readonly fill: SlideBackground;
7260
+ readonly gradient: ReadGradientFill | null;
7261
+ }
7262
+ /**
7263
+ * Read the owning master's available Background Styles without changing the
7264
+ * presentation. Solid colors and gradient stop resolvedColor values include
7265
+ * the preset's color mapping and theme transforms. Missing theme rows are omitted.
7266
+ * Selection describes the master, independently of slide/layout overrides.
7267
+ */
7268
+ declare const getSlideMasterBackgroundStyles: (slide: SlideData) => SlideMasterBackgroundStyle[];
7269
+ //#endregion
5844
7270
  //#region src/api/fn/color-map.d.ts
5845
7271
  /**
5846
7272
  * The slide's effective color map: the master's `<p:clrMap>`, overlaid by a
5847
- * per-slide `<p:clrMapOvr><a:overrideClrMapping>` when present. Falls back to
7273
+ * layout or slide `<p:clrMapOvr><a:overrideClrMapping>` when present. An explicit
7274
+ * slide `masterClrMapping` bypasses the layout override. Falls back to
5848
7275
  * the standard map for decks that omit it.
5849
7276
  *
5850
7277
  * Pass the result to color resolution / renderers so `schemeClr` tokens map to
@@ -5872,17 +7299,84 @@ declare const resolveDeckBodyTextColor: (slide: SlideData) => string | null;
5872
7299
  * `setSlideTransition` accepts.
5873
7300
  */
5874
7301
  declare const getSlideTransition: (slide: SlideData) => SlideTransition | null;
5875
- /** Sets the slide's transition effect. */
7302
+ /**
7303
+ * Sets the slide's transition effect. A sound set with
7304
+ * `setSlideTransitionSound` is kept, as PowerPoint keeps it when the effect
7305
+ * changes.
7306
+ */
5876
7307
  declare const setSlideTransition: (slide: SlideData, options: TransitionOptions) => void;
5877
- /** Removes any existing transition on the slide. */
7308
+ /** Removes any existing transition on the slide, including its sound. */
5878
7309
  declare const clearSlideTransition: (slide: SlideData) => void;
7310
+ /** What plays when the slide's transition starts. */
7311
+ type TransitionSound = {
7312
+ readonly kind: 'stop';
7313
+ } | {
7314
+ readonly kind: 'play';
7315
+ readonly name: string;
7316
+ readonly loop: boolean;
7317
+ };
7318
+ /**
7319
+ * `stop` ends any sound still playing from an earlier slide ("Stop Previous
7320
+ * Sound"); `play` embeds a WAV file, the only format `p:snd` allows
7321
+ * (ECMA-376 §19.5.66, CT_EmbeddedWAVAudioFile).
7322
+ */
7323
+ type TransitionSoundInput = {
7324
+ readonly kind: 'stop';
7325
+ } | {
7326
+ readonly kind: 'play';
7327
+ readonly data: Uint8Array;
7328
+ readonly name: string;
7329
+ readonly loop?: boolean;
7330
+ };
7331
+ /** Reads the transition's sound, or `null` when it has none. */
7332
+ declare const getSlideTransitionSound: (slide: SlideData) => TransitionSound | null;
7333
+ /**
7334
+ * Sets (or with `null` removes) the sound played when the slide's transition
7335
+ * starts. A slide without a transition gets one with no effect, which is how
7336
+ * PowerPoint stores a sound on a "None" transition.
7337
+ */
7338
+ declare const setSlideTransitionSound: (slide: SlideData, sound: TransitionSoundInput | null) => void;
5879
7339
  //#endregion
5880
7340
  //#region src/api/fn/slide-notes.d.ts
7341
+ interface SlideNotesTextFormatOptions {
7342
+ /** Resolve scheme colors through the notes master theme and color map. */
7343
+ readonly resolveColors?: boolean;
7344
+ }
7345
+ /** Resolve a notes text color token through the notes master theme and map.
7346
+ * Literal tokens remain unchanged in the notes format readers; this helper is
7347
+ * for transient editor display state (such as a pending typing format).
7348
+ */
7349
+ declare const resolveSlideNotesTextColor: (slide: SlideData, color: string) => string | null;
5881
7350
  /**
5882
7351
  * Returns the slide's speaker notes (`null` if none). Pulls plain text
5883
7352
  * from the `body` placeholder; multi-line notes use `\n`.
5884
7353
  */
5885
7354
  declare const getSlideNotes: (slide: SlideData) => string | null;
7355
+ /** Returns the kind and UTF-16 position of each visible notes line separator. */
7356
+ declare const getSlideNotesLineBreaks: (slide: SlideData) => ReadonlyArray<{
7357
+ readonly position: number;
7358
+ readonly kind: "paragraph" | "break";
7359
+ }>;
7360
+ /** A direct character-format range in a slide's speaker notes. */
7361
+ interface SlideNotesTextFormatRange {
7362
+ readonly start: number;
7363
+ readonly end: number;
7364
+ readonly format: ReadTextFormat;
7365
+ }
7366
+ /**
7367
+ * Reads run formatting from the notes body using the same UTF-16 offsets as
7368
+ * `setSlideNotesFormat`. By default scheme colors remain literal references;
7369
+ * pass `resolveColors` to resolve them through the notes master theme and
7370
+ * color map. Paragraph and line-break separators are included in the offsets
7371
+ * but are not returned as formatted ranges.
7372
+ */
7373
+ declare const getSlideNotesTextFormats: (slide: SlideData, options?: SlideNotesTextFormatOptions) => ReadonlyArray<SlideNotesTextFormatRange>;
7374
+ /**
7375
+ * Reads the paragraph-end character format used for typing at a notes caret.
7376
+ * By default scheme colors remain literal references; pass `resolveColors` to
7377
+ * resolve them through the notes master theme and color map.
7378
+ */
7379
+ declare const getSlideNotesParagraphEndFormat: (slide: SlideData, paragraphIndex: number, options?: SlideNotesTextFormatOptions) => ReadTextFormat;
5886
7380
  /**
5887
7381
  * Sets the slide's speaker notes. Creates the `notesSlide` part and
5888
7382
  * wires up the rels (slide ↔ notesSlide ↔ notesMaster) on first call;
@@ -6144,7 +7638,50 @@ declare const getEmptySlides: (pres: PresentationData) => ReadonlyArray<SlideDat
6144
7638
  * minus the leading newline when there were no notes yet.
6145
7639
  */
6146
7640
  declare const appendSlideNotes: (slide: SlideData, text: string) => void;
6147
- declare const setSlideNotes: (slide: SlideData, value: string) => void;
7641
+ /**
7642
+ * Replaces speaker notes. With `range`, replaces that UTF-16 selection while
7643
+ * retaining untouched run/paragraph XML and inheriting the insertion format.
7644
+ * When inserting line-feed characters through a ranged edit, `newlines`
7645
+ * selects whether those inserted separators become paragraph breaks
7646
+ * (`'paragraph'`, the default) or paragraph-internal soft breaks (`'break'`).
7647
+ * Existing separators outside the edited range keep their original OOXML
7648
+ * kind; the option does not normalize the rest of the notes.
7649
+ * `preserveFormatting` infers one changed range from the common prefix/suffix;
7650
+ * apply disjoint edits separately to retain the formatting between them.
7651
+ */
7652
+ declare const setSlideNotes: (slide: SlideData, value: string, options?: {
7653
+ preserveFormatting?: boolean;
7654
+ range?: {
7655
+ start: number;
7656
+ end: number;
7657
+ };
7658
+ newlines?: "paragraph" | "break";
7659
+ }) => void;
7660
+ /** Applies PowerPoint-style Change Case to a speaker-notes range. */
7661
+ declare const transformSlideNotesCase: (slide: SlideData, value: TextCase, options?: {
7662
+ range?: {
7663
+ start: number;
7664
+ end: number;
7665
+ };
7666
+ }) => void;
7667
+ /**
7668
+ * Applies direct run formatting to a UTF-16 range in the slide's speaker notes.
7669
+ * Unselected runs and paragraph XML are preserved. An empty range is a no-op.
7670
+ * Use `paragraphEnd` instead of `range` to update the paragraph-end character
7671
+ * formatting for subsequent typing, including in an empty notes body.
7672
+ */
7673
+ declare const setSlideNotesFormat: (slide: SlideData, format: TextFormat, options: {
7674
+ range: {
7675
+ start: number;
7676
+ end: number;
7677
+ };
7678
+ reset?: boolean;
7679
+ paragraphEnd?: never;
7680
+ } | {
7681
+ paragraphEnd: number;
7682
+ reset?: boolean;
7683
+ range?: never;
7684
+ }) => void;
6148
7685
  /**
6149
7686
  * Removes the slide's speaker-notes part entirely. Drops the
6150
7687
  * `notesSlide` part + its `.rels`, and unwires the slide → notesSlide
@@ -6175,14 +7712,27 @@ interface SlideSize {
6175
7712
  }
6176
7713
  /** Returns the slide canvas size, or `null` if `presentation.xml` omits it. */
6177
7714
  declare const getSlideSize: (pres: PresentationData) => SlideSize | null;
7715
+ /**
7716
+ * The number PowerPoint prints on the first slide — `<p:presentation
7717
+ * firstSlideNum="N"/>`, or `1` when the deck does not say. A `slidenum` field
7718
+ * on the n-th slide shows this plus n − 1, so a renderer that substitutes live
7719
+ * field values has to start counting here rather than at one.
7720
+ */
7721
+ declare const getPresentationFirstSlideNumber: (pres: PresentationData) => number;
6178
7722
  /**
6179
7723
  * Sets the slide canvas size. Creates `<p:sldSz>` when absent, replaces
6180
- * its attributes when present. The `type` hint is preserved as given.
7724
+ * its attributes when present. Dimensions must be 1–56 inches in EMU;
7725
+ * invalid dimensions throw before changing the presentation.
7726
+ * The `type` hint is preserved as given. `content: 'fit'` uniformly scales
7727
+ * content to fit the new page and centers it, including layout/master artwork
7728
+ * and physical text formatting. The default keeps existing content unchanged.
6181
7729
  *
6182
7730
  * Schema ordering: `<p:sldSz>` follows `<p:sldIdLst>` per ECMA-376
6183
7731
  * §19.2.1.26; we insert at the correct position when bootstrapping.
6184
7732
  */
6185
- declare const setSlideSize: (pres: PresentationData, opts: SlideSize) => void;
7733
+ declare const setSlideSize: (pres: PresentationData, opts: SlideSize, options?: {
7734
+ content?: "keep" | "fit";
7735
+ }) => void;
6186
7736
  /** 10in × 7.5in (`screen4x3`). */
6187
7737
  declare const SLIDE_SIZE_4_3: SlideSize;
6188
7738
  /** 13.333in × 7.5in (`screen16x9`) — Office 2013+ default. */
@@ -6190,8 +7740,93 @@ declare const SLIDE_SIZE_16_9: SlideSize;
6190
7740
  /** 13.333in × 8.33in (`screen16x10`). */
6191
7741
  declare const SLIDE_SIZE_16_10: SlideSize;
6192
7742
  //#endregion
7743
+ //#region src/api/fn/guides.d.ts
7744
+ /** A presentation-level drawing guide. Position is in EMU from the left/top edge. */
7745
+ interface DrawingGuide {
7746
+ id: number;
7747
+ axis: 'x' | 'y';
7748
+ position: number;
7749
+ color: string;
7750
+ }
7751
+ /** Returns null when the presentation has no explicit guide list; [] means cleared. */
7752
+ declare function getDrawingGuides(presentation: PresentationData): DrawingGuide[] | null;
7753
+ /** Replaces presentation guides, retaining metadata/extensions on surviving guide IDs. */
7754
+ declare const setDrawingGuides: (presentation: PresentationData, guides: readonly DrawingGuide[]) => void;
7755
+ /** Whether drawing guides are visible in the presentation's slide editing view. */
7756
+ declare function getDrawingGuidesVisible(presentation: PresentationData): boolean;
7757
+ /** Persists slide-view guide visibility without changing other view preferences. */
7758
+ declare const setDrawingGuidesVisible: (presentation: PresentationData, visible: boolean) => void;
7759
+ /** Document grid snapping; null means no slide-view preferences are stored. */
7760
+ declare function getSnapToGrid(presentation: PresentationData): boolean | null;
7761
+ declare const setSnapToGrid: (presentation: PresentationData, enabled: boolean) => void;
7762
+ /** Grid spacing in EMU, or null when no document spacing is specified. */
7763
+ declare function getGridSpacing(presentation: PresentationData): {
7764
+ x: number;
7765
+ y: number;
7766
+ } | null;
7767
+ declare const setGridSpacing: (presentation: PresentationData, spacing: {
7768
+ x: number;
7769
+ y: number;
7770
+ }) => void;
7771
+ /** Slides whose bodies are collapsed in PowerPoint's outline view, in deck order. */
7772
+ declare function getCollapsedOutlineSlides(presentation: PresentationData): readonly SlideData[];
7773
+ /** Persists outline collapse and retains other view settings. */
7774
+ declare const setSlideOutlineCollapsed: (slide: SlideData | readonly SlideData[], collapsed: boolean) => void;
7775
+ //#endregion
7776
+ //#region src/api/fn/shape-image-fill-layout.d.ts
7777
+ /** Reads direct picture/image-fill placement; returns null when there is no image fill. */
7778
+ declare const getShapeImageFillLayout: (shape: SlideShapeData) => ImageFillLayout | null;
7779
+ /** Changes placement without replacing media, crop, or effects. Invalid inputs leave the shape unchanged. */
7780
+ declare const setShapeImageFillLayout: (shape: SlideShapeData, layout: ImageFillLayout) => void;
7781
+ /**
7782
+ * Natural image-fill size before tile scaling, in EMUs. Reads PNG/JPEG dimensions,
7783
+ * the fill's DPI override, and PNG pHYs/JPEG JFIF resolution. Missing resolution
7784
+ * uses 96 DPI. Returns null for unavailable bytes or unsupported image headers.
7785
+ */
7786
+ declare const getShapeImageIntrinsicSize: (shape: SlideShapeData) => {
7787
+ width: Emu;
7788
+ height: Emu;
7789
+ } | null;
7790
+ //#endregion
7791
+ //#region src/api/fn/show-properties.d.ts
7792
+ interface SlideShowProperties {
7793
+ mode: {
7794
+ kind: 'present';
7795
+ } | {
7796
+ kind: 'browse';
7797
+ showScrollbar: boolean;
7798
+ } | {
7799
+ kind: 'kiosk';
7800
+ restart: number;
7801
+ };
7802
+ slides: {
7803
+ kind: 'all';
7804
+ } | {
7805
+ kind: 'range';
7806
+ start: number;
7807
+ end: number;
7808
+ } | {
7809
+ kind: 'customShow';
7810
+ id: number;
7811
+ };
7812
+ loop: boolean;
7813
+ showNarration: boolean;
7814
+ showAnimation: boolean;
7815
+ useTimings: boolean;
7816
+ /**
7817
+ * Show Media Controls: whether hovering a video or audio clip in the show
7818
+ * reveals its play bar. PowerPoint 2010 stores it as `p14:showMediaCtrls`
7819
+ * in the show properties' extension list; omit it to leave the file as is.
7820
+ */
7821
+ showMediaControls?: boolean;
7822
+ }
7823
+ /** Reads presentation-wide slideshow settings using the OOXML defaults. */
7824
+ declare function getSlideShowProperties(pres: PresentationData): SlideShowProperties;
7825
+ /** Replaces slideshow settings while preserving print/web options, pen color, and extensions. */
7826
+ declare function setSlideShowProperties(pres: PresentationData, settings: SlideShowProperties): void;
7827
+ //#endregion
6193
7828
  //#region src/api/index.d.ts
6194
7829
  declare const VERSION: string;
6195
7830
  //#endregion
6196
- export { SlideBackground as $, getShapeChartSeriesValues as $a, getShapesBounds as $c, TableCellBorders as $i, loadPresentation as $l, addSlideLine as $n, findCommentsBefore as $o, setShapeRunText as $r, getShapeStrokeArrow as $s, getPresentationShapeCountsBySlide as $t, pt as $u, getPresentationHyperlinkCountsBySlide as A, setTableCellAnchor as Aa, getShapeStrokeColorResolved as Ac, isShapeImageGrayscale as Ai, getShapeSize as Al, ExtendedProperties as An, ChartGrouping as Ao, getParagraphBullet as Ar, setShapeBulletStyle as As, addSectionHeaderSlide as At, ReadGradientFill as Au, getSlidesWithNotes as B, setTableStyleFlags as Ba, findShapeInPresentation as Bc, getMediaParts as Bi, pointInShape as Bl, findLayoutsWithPlaceholderType as Bn, ChartUpDownBars as Bo, getShapeParagraphElements as Br, setShapeTextWrap as Bs, reverseSlides as Bt, HexColor as Bu, getAllHyperlinks as C, insertTableRow as Ca, getShapeFillColor as Cc, getShapeImageFillBytes as Ci, getShapeKind as Cl, setSlideHidden as Cn, ChartAxisScaling as Co, PresentationTheme as Cr, getShapeTextAutoFitParams as Cs, addSlideMedia as Ct, LineEndType as Cu, getDistinctHyperlinkUrls as D, removeTableColumn as Da, getShapeStroke as Dc, getShapeImagePartName as Di, getShapePosition as Dl, removeThumbnail as Dn, ChartDateAxis as Do, setPresentationTheme as Dr, getShapeTextMargins as Ds, ungroupShapes as Dt, GradientStop as Du, getAllTables as E, mergeTableCells as Ea, getShapeFillOpacity as Ec, getShapeImageOpacity as Ei, getShapePlaceholderType as El, getThumbnail as En, ChartDataTable as Eo, setPresentationFonts as Er, getShapeTextDirection as Es, groupShapes as Et, GradientFillOptions as Eu, getSlideNotesLength as F, setTableCellText as Fa, getShapeStrokeWidth as Fc, MediaPart as Fi, getSlideMasterUsageCounts as Fl, incrementRevision as Fn, ChartSeries as Fo, getParagraphLevel as Fr, setShapeTextBodyRotationDeg as Fs, duplicateSlideAt as Ft, ParagraphSpec as Fu, removeSlideNotes as G, findChartsBySeriesName as Ga, findShapesByText as Gc, listPackageParts as Gi, setShapeHidden as Gl, getSlideLayoutPartName as Gn, setShapeClickAction as Go, getShapeRunText as Gr, getShapeEffect as Gs, SlideOutlineEntry as Gt, AudioFormat as Gu, getSlidesWithTables as H, SlideChartData as Ha, findShapesByKind as Hc, getPackageSize as Hi, setShapeAltTitle as Hl, findSlideLayoutByPartName as Hn, ReadChartSpec as Ho, getShapeRunCount as Hr, ShapeEffectAny as Hs, swapSlides as Ht, asColor as Hu, getSlidesWithCharts as I, setTableCellTextDirection as Ia, findEmptyPlaceholders as Ic, PackagePartInfo as Ii, getUnusedSlideMasters as Il, setCoreProperties as In, ChartSeriesAxis as Io, getParagraphLineSpacing as Ir, setShapeTextColumns as Is, importSlide as It, RunSpec as Iu, clearSlideTransition as J, getPresentationChartCountsBySlide as Ja, findSlidePlaceholderByIdx as Jc, slidesUsingMediaPart as Ji, getSlideSections as Jl, getSlideLayoutUsageCounts as Jn, addSlideComment as Jo, setParagraphBullet as Jr, setShapeGlow as Js, findSlideByTitle as Jt, Emu as Ju, replaceHyperlink as K, findChartsWithDataLabels as Ka, findShapesWithHyperlinks as Kc, readPackagePart as Ki, shapesOverlap as Kl, getSlideLayoutPlaceholders as Kn, ImageFit as Ko, isParagraphBulletPicture as Kr, getShapeEffects as Ks, findSlideByPartName as Kt, VideoFormat as Ku, getSlidesWithComments as L, setTableCellTextFormat as La, findShapeById as Lc, PresentationSummary as Li, isShapeHidden as Ll, setExtendedProperties as Ln, ChartTextStyle as Lo, getParagraphSpacing as Lr, setShapeTextDirection as Ls, mergePresentations as Lt, ReadTextFormat as Lu, getPresentationNotesLengthsBySlide as M, setTableCellFill as Ma, getShapeStrokeEffective as Mc, setShapeImageContrast as Mi, getSlideMasterCount as Ml, getExtendedProperties as Mn, ChartManualLayout as Mo, getParagraphBulletStyle as Mr, setShapeText as Ms, addSlideAt as Mt, BulletStyle as Mu, getPresentationNotesText as N, setTableCellMargins as Na, getShapeStrokeJoin as Nc, setShapeImageCrop as Ni, getSlideMasterPartName as Nl, getPresentationCreated as Nn, ChartOfPie as No, getParagraphEndFormat as Nr, setShapeTextAnchor as Ns, addTitleSlide as Nt, ParagraphAlignment as Nu, getEmptySlides as O, removeTableRow as Oa, getShapeStrokeCap as Oc, hasShapeImage as Oi, getShapePreset as Ol, setThumbnail as On, ChartErrorBarAmount as Oo, ShapeParagraphElement as Or, getShapeTextWrap as Os, addBlankSlide as Ot, PatternFillOptions as Ou, getSlideNotes as P, setTableCellParagraphs as Pa, getShapeStrokeOpacity as Pc, setShapeImageOpacity as Pi, getSlideMasterPartNames as Pl, getPresentationModified as Pn, ChartSecondaryValueAxis as Po, getParagraphIndent as Pr, setShapeTextAutoFit as Ps, duplicateSlide as Pt, ParagraphAlignmentToken as Pu, resolveDeckBodyTextColor as Q, getShapeChartSeriesNames as Qa, getShapeXmlString as Qc, TableCellBorder as Qi, createPresentation as Ql, addSlideImage as Qn, findCommentsAfter as Qo, setShapeRunHyperlink as Qr, getShapePatternFill as Qs, getOutlineText as Qt, mm as Qu, getSlidesWithHyperlinks as R, setTableColumnWidth as Ra, findShapeByName as Rc, _internalPackageOf as Ri, isShapePlaceholder as Rl, touchModified as Rn, ChartTimeUnit as Ro, getShapeHyperlinkTooltip as Rr, setShapeTextFormat as Rs, moveSlide as Rt, TextFormat as Ru, getAllComments as S, insertTableColumn as Sa, getShapeFill as Sc, getShapeImageDuotone as Si, getShapeId as Sl, searchSlides as Sn, isChartSpec as So, PresentationFontsInput as Sr, getShapeTextAutoFit as Ss, SlideMediaSource as St, LineEndSize as Su, getAllNotes as T, isTableShape as Ta, getShapeFillEffective as Tc, getShapeImageLinkUrl as Ti, getShapePlaceholderIdx as Tl, PresentationThumbnail as Tn, ChartDataLabels as To, getPresentationTheme as Tr, getShapeTextColumns as Ts, getShapeMedia as Tt, ShadowOptions as Tu, getVisibleSlides as U, addSlideChart as Ua, findShapesByName as Uc, getPresentationSummary as Ui, setShapeBounds as Ul, findSlideLayoutByType as Un, ShapeClickAction as Uo, getShapeRunHyperlink as Ur, clearShapeEffects as Us, AllShapesEntry as Ut, PresetShape as Uu, getSlidesWithOverlap as V, setTableStyleId as Va, findShapesByHyperlink as Vc, getOrphanMediaPartNames as Vi, renameShape as Vl, findSlideLayout as Vn, ChartView3D as Vo, getShapeRunClickAction as Vr, ShapeEffect as Vs, sortSlides as Vt, SchemeColorToken as Vu, hasSlideNotes as W, findChartByKind as Wa, findShapesByPreset as Wc, getSlideMediaPartNames as Wi, setShapeDescription as Wl, getSlideLayoutName as Wn, getShapeClickAction as Wo, getShapeRunHyperlinkTooltip as Wr, findShapesByEffect as Ws, SlideInfo as Wt, PlaceholderType as Wu, setSlideTransition as X, getShapeChartCategories as Xa, getShapeIndex as Xc, IssueSeverity as Xi, PresentationInput as Xl, getSlideLayouts as Xn, clearSlideComments as Xo, setParagraphLineSpacing as Xr, clearShapeFill as Xs, findSlidesByText as Xt, emu as Xu, getSlideTransition as Y, getPresentationChartKindCounts as Ya, findSlidePlaceholders as Yc, validatePresentation as Yi, setSlideSections as Yl, getSlideLayoutUsageCountsByType as Yn, clearAllSlideComments as Yo, setParagraphLevel as Yr, setShapeShadow as Ys, findSlidesByNotes as Yt, cm as Yu, getEffectiveColorMap as Z, getShapeChartKind as Za, getShapeSlide as Zc, ValidationIssue as Zi, PresentationSize as Zl, getUnusedSlideLayouts as Zn, findCommentAuthorByName as Zo, setParagraphSpacing as Zr, clearShapeStroke as Zs, getAllShapes as Zt, inches as Zu, clearSlideHyperlinks as _, getTableDimensions as _a, setShapeStrokeJoin as _c, getShapeImageBiLevelThreshold as _i, getShapeBoundsResolved as _l, replaceTextInNotes as _n, RadarChartSpec as _o, setShapeRunFormat as _r, TextAutoFit as _s, getSlideMasterShapes as _t, GeomPath as _u, SlideSize as a, getTableCellAlignment as aa, setShapeImageFill as ac, clearSlideAnimations as ai, translateShapes as al, getSlideCount as an, BubbleChartSpec as ao, clearSlideShapes as ar, getCommentDate as as, getSlideBackgroundPatternFill as at, SlideShapeData as au, findSlidesWithChartTrendlines as b, getTableStyleFlags as ba, ShapeFill as bc, getShapeImageContrast as bi, getShapeDescription as bl, replaceTextInSlideNotes as bn, StockChartSpec as bo, resolveDrawingColorOpacity as br, getShapeBodyPrEffective as bs, ShapeMedia as bt, ArrowOptions as bu, PresentationChartEntry as c, getTableCellFill as ca, setShapePatternFill as cc, setShapeAnimation as ci, findShapesAtPoint as cl, getSlideLayoutCount as cn, ChartVariant as co, removeShape as cr, getCommentText as cs, getSlideLayoutBackgroundGradientFill as ct, CommentPosition as cu, PresentationImageEntry as d, getTableCellPosition as da, setShapeSize as dc, findOverlappingShapePairs as di, getGroupTransform as dl, getSlideText as dn, DoughnutChartSpec as do, setShapeZIndex as dr, getPresentationCommentCountsBySlide as ds, getSlideLayoutBackgroundShapes as dt, AnimationOptions as du, TableCellParagraph as ea, getShapeStrokeDash as ec, getSlideBody as ei, getSlideLayout as el, getPresentationText as en, getShapeChartSpec as eo, addSlideShape as er, findCommentsByAuthor as es, SlideLayoutBackgroundShape as et, savePresentation as eu, PresentationNotesEntry as f, getTableCellSpan as fa, setShapeStroke as fc, findShapesOutsideCanvas as fi, getMaxShapeId as fl, getSlideTextLength as fn, LineArea3DChartSpec as fo, ParagraphProperties as fr, getPresentationCommenters as fs, getSlideLayoutShapes as ft, SlideTransition as fu, clearAllSlideNotes as g, getTableColumnWidths as ga, setShapeStrokeDash as gc, getPresentationImageCountsBySlide as gi, getShapeBounds as gl, isSlideHidden as gn, PlainChartSeries as go, setShapeHyperlink as gr, TextAnchor as gs, getSlideMasterBackgroundPatternFill as gt, GeomCommand as gu, clearAllHyperlinks as h, getTableCells as ha, setShapeStrokeCompound as hc, findSlidesByLayoutType as hi, getShapeAltTitle as hl, getSlidesByLayout as hn, PieChartSpec as ho, getShapeRunFormatEffective as hr, removeSlideComment as hs, getSlideMasterBackgroundImageBytes as ht, CustomGeometry as hu, SLIDE_SIZE_4_3 as i, getTableCell as ia, setShapeGradientFill as ic, setSlideTitle as ii, setSlideLayout as il, getSlideAt as in, BubbleChartSeries as io, bringShapeToFront as ir, getCommentAuthors as is, getSlideBackgroundImageBytes as it, SlideLayoutData as iu, getPresentationNotesLength as j, setTableCellBorders as ja, getShapeStrokeCompound as jc, setShapeImageBrightness as ji, getShapeText as jl, getCoreProperties as jn, ChartKind as jo, getParagraphBulletImageBytes as jr, setShapeParagraphs as js, addSlide as jt, ReadGradientStop as ju, getHiddenSlides as k, setTableCellAlignment as ka, getShapeStrokeColor as kc, hasShapeText as ki, getShapeRotation as kl, CoreProperties as kn, ChartErrorBars as ko, getParagraphAlignment as kr, setShapeAlignment as ks, addContentSlide as kt, PatternPreset as ku, PresentationCommentEntry as l, getTableCellMargins as la, setShapePosition as lc, ImageCrop as li, findShapesInRect as ll, getSlideOutline as ln, ComboChartSeries as lo, sendShapeBackward as lr, getCommentsSortedByDate as ls, getSlideLayoutBackgroundImageBytes as lt, SlideComment as lu, appendSlideNotes as m, getTableCellTextDirection as ma, setShapeStrokeCap as mc, findSlidesByLayoutPartName as mi, getShapeAdjustValues as ml, getSlides as mn, Pie3DChartSpec as mo, getShapeHyperlink as mr, getSlideComments as ms, getSlideMasterBackgroundGradientFill as mt, TransitionOptions as mu, SLIDE_SIZE_16_10 as n, getPresentationTableCountsBySlide as na, setShapeFill as nc, setSlideBody as ni, getSlidesWithEmptyPlaceholders as nl, getPresentationTextLengthsBySlide as nn, setChartSpec as no, addSlideTextBox as nr, findSlidesWithCommentsByAuthor as ns, getSlideBackground as nt, SlideCommentData as nu, getSlideSize as o, getTableCellAnchor as oa, setShapeNoFill as oc, findShapesWithAnimation as oi, ShapeBounds as ol, getSlideIndex as on, CandlestickChartSpec as oo, copyShape as or, getCommentPosition as os, getSlideColorMapOverride as ot, TableCellData as ou, PresentationTableEntry as p, getTableCellText as pa, setShapeStrokeArrow as pc, findSlidesByLayoutName as pi, getMaxShapeIdInPresentation as pl, getSlideXmlString as pn, OfPieChartSpec as po, getParagraphPropertiesEffective as pr, getSlideCommentAuthors as ps, getSlideMasterBackground as pt, TransitionEffect as pu, setSlideNotes as q, findChartsWithTrendlines as qa, findSlidePlaceholder as qc, setMediaPartBytes as qi, SlideSection as ql, getSlideLayoutType as qn, setShapeImage as qo, setParagraphAlignment as qr, getShapeEffectsEffective as qs, findSlideByText as qt, ImageFormat as qu, SLIDE_SIZE_16_9 as r, getSlideTables as ra, setShapeFlip as rc, setSlidePlaceholders as ri, replaceTokensInSlide as rl, getShapeAt as rn, Bar3DChartSpec as ro, bringShapeForward as rr, getCommentAuthor as rs, getSlideBackgroundGradientFill as rt, SlideData as ru, setSlideSize as s, getTableCellBorders as sa, setShapeNoStroke as sc, getShapeAnimation as si, centerShapeOnSlide as sl, getSlideInfo as sn, ChartSpec as so, getShapeZIndex as sr, getCommentSlide as ss, getSlideLayoutBackground as st, CommentAuthor as su, VERSION as t, clearTableCellFill as ta, setShapeAdjustValues as tc, getSlideTitle as ti, getSlideShapes as tl, getPresentationTextLength as tn, getSlideCharts as to, addSlideTable as tr, findCommentsByText as ts, clearSlideBackground as tt, PresentationData as tu, PresentationHyperlinkEntry as u, getTableCellParagraphs as ua, setShapeRotation as uc, findFlippedShapes as ui, getGroupChildren as ul, getSlidePartName as un, ComboChartSpec as uo, sendShapeToBack as ur, getPresentationCommentCountsByAuthor as us, getSlideLayoutBackgroundPatternFill as ut, AnimationEffect as uu, findSlidesByHyperlink as v, getTableRowHeights as va, getShapeGradientFill as vc, getShapeImageBrightness as vi, getShapeCenter as vl, replaceTextInPresentation as vn, ScatterChartSeries as vo, getShapeRunFormat as vr, TextWrap as vs, setSlideBackground as vt, GeomPoint as vu, getAllImages as w, isChartShape as wa, getShapeFillColorResolved as wc, getShapeImageFormat as wi, getShapeName as wl, slideHasAnimations as wn, ChartDataLabelPosition as wo, getPresentationFonts as wr, getShapeTextBodyRotationDeg as ws, findShapesWithMedia as wt, GlowOptions as wu, getAllCharts as x, getTableStyleId as xa, ShapeStroke as xc, getShapeImageCrop as xi, getShapeFlip as xl, replaceTokensInPresentation as xn, SurfaceChartSpec as xo, PresentationFonts as xr, getShapeTextAnchor as xs, SlideMediaOptions as xt, LineDash as xu, findSlidesWithChartKind as y, getTableSize as ya, getShapeGradientFillEffective as yc, getShapeImageBytes as yi, getShapeCustomGeometry as yl, replaceTextInSlide as yn, ScatterChartSpec as yo, resolveDrawingColor as yr, appendShapeText as ys, setSlideBackgroundImage as yt, PathFillMode as yu, getSlidesWithImages as z, setTableRowHeight as za, findShapeByText as zc, compactPackage as zi, isShapeTextBox as zl, SlideLayoutPlaceholder as zn, ChartTrendline as zo, getShapeParagraphCount as zr, setShapeTextMargins as zs, removeSlide as zt, Color as zu };
6197
- //# sourceMappingURL=index-VCK9yZV2.d.ts.map
7831
+ export { getSlideNotes as $, getShapeImageLinkUrl as $a, getSlideComments as $c, setShapeDescription as $d, ReadTextFill as $f, getParagraphLineSpacing as $i, getShapeStrokeDash as $l, addTitleSlide as $n, getTableSize as $o, removeThumbnail as $r, RadarChartSpec as $s, getSlideMasterBackgroundImageBytes as $t, findShapesByText as $u, PresentationNotesEntry as A, AnimationSequenceKind as Aa, addSlideComment as Ac, getShapeFlip as Ad, GeomPath as Af, addSlideShape as Ai, setShapeTextAnchor as Al, ShapeStyleFontReference as An, TableCellBorders as Ao, pt as Ap, getSlideInfo as Ar, getPresentationChartCountsBySlide as As, setSlideMasterBackgroundStyle as At, getShapeFill as Au, getAllCharts as B, findShapesOutsideCanvas as Ba, getCommentAuthors as Bc, getShapeText as Bd, LightRig as Bf, sendShapeToBack as Bi, ShapeEffect as Bl, isShapeLocked as Bn, getTableCellFill as Bo, isSlideHidden as Br, BubbleChartSeries as Bs, getSlideBackgroundImageFillLayout as Bt, getShapeStrokeEffective as Bu, getPresentationFirstSlideNumber as C, setSlidePlaceholders as Ca, ChartView3D as Cc, getShapeAdjustValues as Cd, AnimationOptions as Cf, getUnusedSlideLayouts as Ci, getShapeTextMargins as Cl, addSlideMedia as Cn, setMediaPartBytes as Co, VideoFormat as Cp, getPresentationText as Cr, splitTableCell as Cs, getSlideTransitionSound as Ct, PresentationTheme as Cu, PresentationCommentEntry as D, getShapeAnimation as Da, setShapeClickAction as Dc, getShapeCenter as Dd, TransitionOptions as Df, setSlideLayoutPlaceholderBounds as Di, setShapeParagraphs as Dl, setShapeMediaPlayback as Dn, ValidationIssue as Do, emu as Dp, getSlideAt as Dr, findChartsBySeriesName as Ds, resolveDeckBodyTextColor as Dt, setPresentationTheme as Du, PresentationChartEntry as E, findShapesWithAnimation as Ea, getShapeClickAction as Ec, getShapeBoundsResolved as Ed, TransitionEffect as Ef, setSlideLayoutName as Ei, setShapeBulletStyle as El, getShapeMediaPlayback as En, IssueSeverity as Eo, cm as Ep, getShapeAt as Er, findChartByKind as Es, getEffectiveColorMap as Et, setPresentationFonts as Eu, clearAllSlideNotes as F, ImageCrop as Fa, findCommentsBefore as Fc, getShapePlaceholderType as Fd, LineEndSize as Ff, clearSlideShapes as Fi, setShapeTextField as Fl, setShapeTextLanguage as Fn, getTableCell as Fo, getSlideTextLength as Fr, getShapeChartSeriesValues as Fs, copySlideBackground as Ft, getShapeStroke as Fu, getAllTables as G, getShapeImageBiLevelThreshold as Ga, getCommentSlide as Gc, getUnusedSlideMasters as Gd, Rotation3D as Gf, ShapeParagraphElement as Gi, getShapeEffects as Gl, resetSlideLayout as Gn, getTableCellSpan as Go, replaceTextInSlideNotes as Gr, ComboChartSeries as Gs, getSlideLayoutBackground as Gt, findShapeById as Gu, getAllHyperlinks as H, findSlidesByLayoutPartName as Ha, getCommentFormat as Hc, getSlideMasterPartName as Hd, LightRigType as Hf, getShapeRunFormat as Hi, clearShapeEffects as Hl, setShapeLocked as Hn, getTableCellParagraphs as Ho, replaceTextInNotes as Hr, CandlestickChartSpec as Hs, getSlideBackgroundImageOpacity as Ht, getShapeStrokeOpacity as Hu, clearSlideHyperlinks as I, ImageRecolor as Ia, findCommentsByAuthor as Ic, getShapePosition as Id, LineEndType as If, copyShape as Ii, setShapeTextFormat as Il, CustomGeometryInput as In, getTableCellAlignment as Io, getSlideXmlString as Ir, getShapeChartSpec as Is, getSlideBackground as It, getShapeStrokeCap as Iu, getHiddenSlides as J, getShapeImageContrast as Ja, getCommentsSortedByDate as Jc, isShapeTextBox as Jd, BulletStyle as Jf, getParagraphBulletImageBytes as Ji, setShapeShadow as Jl, addBlankSlide as Jn, getTableCellTextDirection as Jo, setSlideBackgroundGraphicsHidden as Jr, LineArea3DChartSpec as Js, getSlideLayoutBackgroundPatternFill as Jt, findShapeInPresentation as Ju, getDistinctHyperlinkUrls as K, getShapeImageBrightness as Ka, getCommentStatus as Kc, isShapeHidden as Kd, Scene3D as Kf, getParagraphAlignment as Ki, getShapeEffectsEffective as Kl, resetSlidePlaceholderGeometry as Kn, getTableCellText as Ko, replaceTokensInPresentation as Kr, ComboChartSpec as Ks, getSlideLayoutBackgroundGradientFill as Kt, findShapeByName as Ku, findSlidesByHyperlink as L, ImageRecolorColor as La, findCommentsByText as Lc, getShapePreset as Ld, Bevel as Lf, getShapeZIndex as Li, setShapeTextMargins as Ll, CustomGeometryPathInput as Ln, getTableCellAnchor as Lo, getSlides as Lr, getSlideCharts as Ls, getSlideBackgroundGradientFill as Lt, getShapeStrokeColor as Lu, SlideNotesTextFormatOptions as M, AnimationTarget as Ma, clearSlideComments as Mc, getShapeKind as Md, PathFillMode as Mf, addSlideTextBox as Mi, setShapeTextBodyRotationDeg as Ml, ShapeStyleReference as Mn, clearTableCellFill as Mo, getSlideOutline as Mr, getShapeChartCategories as Ms, SlideLayoutBackgroundShape as Mt, getShapeFillColorResolved as Mu, appendSlideNotes as N, AnimationValueAfterEnd as Na, findCommentAuthorByName as Nc, getShapeName as Nd, ArrowOptions as Nf, bringShapeForward as Ni, setShapeTextColumns as Nl, setShapeStyle as Nn, getPresentationTableCountsBySlide as No, getSlidePartName as Nr, getShapeChartKind as Ns, applySlideBackgroundToAll as Nt, getShapeFillEffective as Nu, PresentationHyperlinkEntry as O, getSlideAnimations as Oa, ImageFit as Oc, getShapeCustomGeometry as Od, CustomGeometry as Of, addSlideImage as Oi, setShapeText as Ol, groupShapes as On, TableCellAppearanceEffective as Oo, inches as Op, getSlideCount as Or, findChartsWithDataLabels as Os, SlideMasterBackgroundStyle as Ot, ShapeFill as Ou, clearAllHyperlinks as P, SlideAnimationStep as Pa, findCommentsAfter as Pc, getShapePlaceholderIdx as Pd, LineDash as Pf, bringShapeToFront as Pi, setShapeTextDirection as Pl, getShapeTextLanguage as Pn, getSlideTables as Po, getSlideText as Pr, getShapeChartSeriesNames as Ps, clearSlideBackground as Pt, getShapeFillOpacity as Pu, getPresentationNotesText as Q, getShapeImageFormat as Qa, getSlideCommentAuthors as Qc, setShapeBounds as Qd, RunSpec as Qf, getParagraphLevel as Qi, getShapeStrokeArrow as Ql, addSlideAt as Qn, getTableRowHeights as Qo, getThumbnail as Qr, PlainChartSeries as Qs, getSlideMasterBackgroundGradientFill as Qt, findShapesByPreset as Qu, findSlidesWithChartKind as R, findFlippedShapes as Ra, findSlidesWithCommentsByAuthor as Rc, getShapeRotation as Rd, BevelPreset as Rf, removeShape as Ri, setShapeTextWrap as Rl, setShapeCustomGeometry as Rn, getTableCellAppearanceEffective as Ro, getSlidesByLayout as Rr, setChartSpec as Rs, getSlideBackgroundImageBytes as Rt, getShapeStrokeColorResolved as Ru, SlideSize as S, setSlideBody as Sa, ChartUpDownBars as Sc, getPresetGeometry as Sd, AnimationEffect as Sf, getSlideLayouts as Si, getShapeTextDirection as Sl, SlideMediaSource as Sn, readPackagePart as So, AudioFormat as Sp, getPresentationShapeCountsBySlide as Sr, setTableStyleId as Ss, getSlideTransition as St, PresentationFontsInput as Su, setSlideSize as T, clearSlideAnimations as Ta, ShapeClickAction as Tc, getShapeBounds as Td, SlideTransition as Tf, setSlideLayoutBackground as Ti, setShapeAlignment as Tl, getShapeMedia as Tn, validatePresentation as To, Emu as Tp, getPresentationTextLengthsBySlide as Tr, addSlideChart as Ts, setSlideTransitionSound as Tt, getPresentationTheme as Tu, getAllImages as U, findSlidesByLayoutType as Ua, getCommentParent as Uc, getSlideMasterPartNames as Ud, PresetMaterial as Uf, resolveDrawingColor as Ui, findShapesByEffect as Ul, addMissingSlidePlaceholders as Un, getTableCellPosition as Uo, replaceTextInPresentation as Ur, ChartSpec as Us, getSlideBackgroundPatternFill as Ut, getShapeStrokeWidth as Uu, getAllComments as V, findSlidesByLayoutName as Va, getCommentDate as Vc, getSlideMasterCount as Vd, LightRigDirection as Vf, setShapeZIndex as Vi, ShapeEffectAny as Vl, setShapeAspectRatioLocked as Vn, getTableCellMargins as Vo, isSlideLayoutBackgroundGraphicsHidden as Vr, BubbleChartSpec as Vs, getSlideBackgroundImageIntrinsicSize as Vt, getShapeStrokeJoin as Vu, getAllNotes as W, getPresentationImageCountsBySlide as Wa, getCommentPosition as Wc, getSlideMasterUsageCounts as Wd, ReadText3D as Wf, resolveDrawingColorOpacity as Wi, getShapeEffect as Wl, addSlidePlaceholder as Wn, getTableCellRunFormatEffective as Wo, replaceTextInSlide as Wr, ChartVariant as Ws, getSlideColorMapOverride as Wt, findEmptyPlaceholders as Wu, getPresentationNotesLength as X, getShapeImageDuotone as Xa, getPresentationCommentCountsBySlide as Xc, renameShape as Xd, ParagraphAlignmentToken as Xf, getParagraphEndFormat as Xi, clearShapeStroke as Xl, addSectionHeaderSlide as Xn, getTableColumnWidths as Xo, slideHasAnimations as Xr, Pie3DChartSpec as Xs, getSlideLayoutShapes as Xt, findShapesByKind as Xu, getPresentationHyperlinkCountsBySlide as Y, getShapeImageCrop as Ya, getPresentationCommentCountsByAuthor as Yc, pointInShape as Yd, ParagraphAlignment as Yf, getParagraphBulletStyle as Yi, clearShapeFill as Yl, addContentSlide as Yn, getTableCells as Yo, setSlideHidden as Yr, OfPieChartSpec as Ys, getSlideLayoutBackgroundShapes as Yt, findShapesByHyperlink as Yu, getPresentationNotesLengthsBySlide as Z, getShapeImageFillBytes as Za, getPresentationCommenters as Zc, setShapeAltTitle as Zd, ParagraphSpec as Zf, getParagraphIndent as Zi, getShapePatternFill as Zl, addSlide as Zn, getTableDimensions as Zo, PresentationThumbnail as Zr, PieChartSpec as Zs, getSlideMasterBackground as Zt, findShapesByName as Zu, setSlideOutlineCollapsed as _, setParagraphTypography as _a, ChartSeries as _c, findShapesInRect as _d, CommentStatus as _f, getSlideLayoutPartName as _i, getShapeTextAnchor as _l, MediaFade as _n, getOrphanMediaPartNames as _o, SchemeColorToken as _p, findSlideByTitle as _r, setTableCellTextDirection as _s, setSlideNotesFormat as _t, setShapeStrokeDash as _u, getShapeImageFillLayout as a, getShapeRunCount as aa, ChartAxisScaling as ac, getShapeSlide as ad, PresentationInput as af, getPresentationCreated as ai, ParagraphTabStop as al, setSlideBackgroundImageFillLayout as an, resetShapeImageColorEffects as ao, GradientFillOptions as ap, removeSlide as ar, isTableShape as as, getSlidesWithComments as at, setShapeNoFill as au, SLIDE_SIZE_16_9 as b, getSlideBody as ba, ChartTimeUnit as bc, getMaxShapeId as bd, SlideComment as bf, getSlideLayoutUsageCounts as bi, getShapeTextBodyRotationDeg as bl, ShapeMedia as bn, getSlideMediaPartNames as bo, PresetShape as bp, getAllShapes as br, setTableRowHeight as bs, TransitionSoundInput as bt, getShapeGradientFillEffective as bu, DrawingGuide as c, getShapeRunText as ca, ChartDataTable as cc, getSlideLayout as cd, loadPresentation as cf, setCoreProperties as ci, getShapeRunFormatEffective as cl, ImageFillLayout as cn, setShapeImageCrop as co, PatternPreset as cp, swapSlides as cr, removeTableRow as cs, getSlidesWithNotes as ct, setShapePosition as cu, getDrawingGuidesVisible as d, setParagraphBullet as da, ChartErrorBars as dc, replaceTokensInSlide as dd, SlideCommentData as df, SlideLayoutPlaceholder as di, TextAnchor as dl, AnimationPatch as dn, MediaPart as do, GlowOptions as dp, setCustomShows as dr, setTableCellBorders as ds, getVisibleSlides as dt, setShapeSize as du, getParagraphSpacing as ea, ScatterChartSeries as ec, findShapesWithHyperlinks as ed, setShapeHidden as ef, setThumbnail as ei, removeSlideComment as el, getSlideMasterBackgroundPatternFill as en, getShapeImageOpacity as eo, ReadTextFormat as ep, duplicateSlide as er, getTableStyleFlags as es, getSlideNotesLength as et, setShapeAdjustValues as eu, getGridSpacing as f, setParagraphIndent as fa, ChartGrouping as fc, setSlideLayout as fd, SlideData as ff, findLayoutsWithPlaceholderType as fi, TextAutoFit as fl, moveSlideAnimation as fn, PackagePartInfo as fo, InnerShadowOptions as fp, AllShapesEntry as fr, setTableCellClickAction as fs, hasSlideNotes as ft, setShapeSlideBackgroundFill as fu, setGridSpacing as g, setParagraphTabs as ga, ChartSecondaryValueAxis as gc, findShapesAtPoint as gd, COMMENT_STATUSES as gf, getSlideLayoutName as gi, getShapeText3D as gl, MediaBookmark as gn, getMediaParts as go, HexColor as gp, findSlideByText as gr, setTableCellText as gs, setSlideNotes as gt, setShapeStrokeCompound as gu, setDrawingGuidesVisible as h, setParagraphSpacing as ha, ChartOfPie as hc, centerShapeOnSlide as hd, TableCellData as hf, findSlideLayoutByType as hi, getShapeBodyPrEffective as hl, resetShapeVideoFormatting as hn, compactPackage as ho, Color as hp, findSlideByPartName as hr, setTableCellParagraphs as hs, resolveSlideNotesTextColor as ht, setShapeStrokeCap as hu, setSlideShowProperties as i, getShapeRunClickAction as ia, isChartSpec as ic, getShapeIndex as id, setSlideSections as if, getExtendedProperties as ii, ParagraphProperties as il, setSlideBackgroundImage as in, isShapeImageGrayscale as io, toWritableTextFormat as ip, moveSlide as ir, isChartShape as is, getSlidesWithCharts as it, setShapeImageFill as iu, PresentationTableEntry as j, AnimationStart as ja, clearAllSlideComments as jc, getShapeId as jd, GeomPoint as jf, addSlideTable as ji, setShapeTextAutoFit as jl, ShapeStyleOptions as jn, TableCellParagraph as jo, getSlideLayoutCount as jr, getPresentationChartKindCounts as js, SlideBackground as jt, getShapeFillColor as ju, PresentationImageEntry as k, setShapeAnimation as ka, setShapeImage as kc, getShapeDescription as kd, GeomCommand as kf, addSlideLine as ki, setShapeText3D as kl, ungroupShapes as kn, TableCellBorder as ko, mm as kp, getSlideIndex as kr, findChartsWithTrendlines as ks, getSlideMasterBackgroundStyles as kt, ShapeStroke as ku, getCollapsedOutlineSlides as l, isParagraphBulletPicture as la, ChartDateAxis as lc, getSlideShapes as ld, savePresentation as lf, setExtendedProperties as li, setShapeHyperlink as ll, ImageTileAlignment as ln, setShapeImageOpacity as lo, ReadGradientFill as lp, CustomShow as lr, setTableCellAlignment as ls, getSlidesWithOverlap as lt, setShapePreset as lu, setDrawingGuides as m, setParagraphLineSpacing as ma, ChartManualLayout as mc, ShapeBounds as md, SlideShapeData as mf, findSlideLayoutByPartName as mi, appendShapeText as ml, updateSlideAnimation as mn, _internalPackageOf as mo, ShadowOptions as mp, SlideOutlineEntry as mr, setTableCellMargins as ms, replaceHyperlink as mt, setShapeStrokeArrow as mu, SlideShowProperties as n, getShapeParagraphCount as na, StockChartSpec as nc, findSlidePlaceholderByIdx as nd, SlideSection as nf, ExtendedProperties as ni, setCommentText as nl, setSlideBackground as nn, hasShapeImage as no, TextFormat as np, importSlide as nr, insertTableColumn as ns, getSlideNotesParagraphEndFormat as nt, setShapeFlip as nu, getShapeImageIntrinsicSize as o, getShapeRunHyperlink as oa, ChartDataLabelPosition as oc, getShapeXmlString as od, PresentationSize as of, getPresentationModified as oi, getParagraphPropertiesEffective as ol, setSlideBackgroundImageOpacity as on, setShapeImageBrightness as oo, GradientStop as op, reverseSlides as or, mergeTableCells as os, getSlidesWithHyperlinks as ot, setShapeNoStroke as ou, getSnapToGrid as p, setParagraphLevel as pa, ChartKind as pc, translateShapes as pd, SlideLayoutData as pf, findSlideLayout as pi, TextWrap as pl, removeSlideAnimation as pn, PresentationSummary as po, ReflectionOptions as pp, SlideInfo as pr, setTableCellFill as ps, removeSlideNotes as pt, setShapeStroke as pu, getEmptySlides as q, getShapeImageBytes as qa, getCommentText as qc, isShapePlaceholder as qd, Text3D as qf, getParagraphBullet as qi, setShapeGlow as ql, resetSlidePlaceholderTextFormatting as qn, getTableCellText3D as qo, searchSlides as qr, DoughnutChartSpec as qs, getSlideLayoutBackgroundImageBytes as qt, findShapeByText as qu, getSlideShowProperties as r, getShapeParagraphElements as ra, SurfaceChartSpec as rc, findSlidePlaceholders as rd, getSlideSections as rf, getCoreProperties as ri, ParagraphBulletDetail as rl, setSlideBackgroundGradientFill as rn, hasShapeText as ro, TextOutline as rp, mergePresentations as rr, insertTableRow as rs, getSlideNotesTextFormats as rt, setShapeGradientFill as ru, setShapeImageFillLayout as s, getShapeRunHyperlinkTooltip as sa, ChartDataLabels as sc, getShapesBounds as sd, createPresentation as sf, incrementRevision as si, getShapeHyperlink as sl, setSlideBackgroundPatternFill as sn, setShapeImageContrast as so, PatternFillOptions as sp, sortSlides as sr, removeTableColumn as ss, getSlidesWithImages as st, setShapePatternFill as su, VERSION as t, getShapeHyperlinkTooltip as ta, ScatterChartSpec as tc, findSlidePlaceholder as td, shapesOverlap as tf, CoreProperties as ti, setCommentStatus as tl, getSlideMasterShapes as tn, getShapeImagePartName as to, TextFill as tp, duplicateSlideAt as tr, getTableStyleId as ts, getSlideNotesLineBreaks as tt, setShapeFill as tu, getDrawingGuides as u, setParagraphAlignment as ua, ChartErrorBarAmount as uc, getSlidesWithEmptyPlaceholders as ud, PresentationData as uf, touchModified as ui, setShapeRunFormat as ul, ImageTileFlip as un, setShapeImageRecolor as uo, ReadGradientStop as up, getCustomShows as ur, setTableCellAnchor as us, getSlidesWithTables as ut, setShapeRotation as uu, setSnapToGrid as v, setShapeRunHyperlink as va, ChartSeriesAxis as vc, getGroupChildren as vd, CommentAuthor as vf, getSlideLayoutPlaceholders as vi, getShapeTextAutoFit as vl, MediaPlayback as vn, getPackageSize as vo, asColor as vp, findSlidesByNotes as vr, setTableCellTextFormat as vs, transformSlideNotesCase as vt, setShapeStrokeJoin as vu, getSlideSize as w, setSlideTitle as wa, ReadChartSpec as wc, getShapeAltTitle as wd, AnimationStartCondition as wf, clearSlideLayoutBackground as wi, getShapeTextWrap as wl, findShapesWithMedia as wn, slidesUsingMediaPart as wo, ImageFormat as wp, getPresentationTextLength as wr, SlideChartData as ws, setSlideTransition as wt, getPresentationFonts as wu, SLIDE_SIZE_4_3 as x, getSlideTitle as xa, ChartTrendline as xc, getMaxShapeIdInPresentation as xd, AnimationDirection as xf, getSlideLayoutUsageCountsByType as xi, getShapeTextColumns as xl, SlideMediaOptions as xn, listPackageParts as xo, PlaceholderType as xp, getOutlineText as xr, setTableStyleFlags as xs, clearSlideTransition as xt, PresentationFonts as xu, SLIDE_SIZE_16_10 as y, setShapeRunText as ya, ChartTextStyle as yc, getGroupTransform as yd, CommentPosition as yf, getSlideLayoutType as yi, getShapeTextAutoFitParams as yl, MediaTrim as yn, getPresentationSummary as yo, ColorTransform as yp, findSlidesByText as yr, setTableColumnWidth as ys, TransitionSound as yt, getShapeGradientFill as yu, findSlidesWithChartTrendlines as z, findOverlappingShapePairs as za, getCommentAuthor as zc, getShapeSize as zd, CameraPreset as zf, sendShapeBackward as zi, TextCase as zl, isShapeAspectRatioLocked as zn, getTableCellBorders as zo, isSlideBackgroundGraphicsHidden as zr, Bar3DChartSpec as zs, getSlideBackgroundImageCrop as zt, getShapeStrokeCompound as zu };
7832
+ //# sourceMappingURL=index-C8dd42jQ.d.ts.map