@shbernal/ts-pptx 4.0.1 → 4.2.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.
Files changed (139) hide show
  1. package/README.md +147 -114
  2. package/dist/anim-presets-Qbgh8uut.js +55 -0
  3. package/dist/anim-presets-Qbgh8uut.js.map +1 -0
  4. package/dist/{autopage-odPz7zZO.js → autopage-DqZ37VpL.js} +11 -12
  5. package/dist/autopage-DqZ37VpL.js.map +1 -0
  6. package/dist/{binary-string-CKVAYI3M.js → binary-string-Ba8VM3b9.js} +3 -4
  7. package/dist/binary-string-Ba8VM3b9.js.map +1 -0
  8. package/dist/{body-insets-Dw_BeWD_.js → body-insets-BDHymJvz.js} +7 -9
  9. package/dist/body-insets-BDHymJvz.js.map +1 -0
  10. package/dist/browser.d.ts +24 -16
  11. package/dist/browser.d.ts.map +1 -1
  12. package/dist/browser.js +19 -19
  13. package/dist/browser.js.map +1 -1
  14. package/dist/{image-size-CvN2iCA4.js → chart-metadata-CwiTTcJq.js} +634 -537
  15. package/dist/chart-metadata-CwiTTcJq.js.map +1 -0
  16. package/dist/{clip-Bl01BPcN.d.ts → clip-ISfCMtWA.d.ts} +6 -10
  17. package/dist/clip-ISfCMtWA.d.ts.map +1 -0
  18. package/dist/{notes-Dh12JAbn.js → comments-CKIZYRbZ.js} +530 -401
  19. package/dist/comments-CKIZYRbZ.js.map +1 -0
  20. package/dist/{diagnostics-D8ot4Ei7.d.ts → diagnostics-MoA4MBq5.d.ts} +55 -53
  21. package/dist/diagnostics-MoA4MBq5.d.ts.map +1 -0
  22. package/dist/{embedded-fonts-DarT9aoa.d.ts → embedded-fonts-U7HIIhPO.d.ts} +4 -6
  23. package/dist/embedded-fonts-U7HIIhPO.d.ts.map +1 -0
  24. package/dist/{entry-compose-DCnvBZz2.d.ts → entry-compose-CiakSt-f.d.ts} +62 -81
  25. package/dist/entry-compose-CiakSt-f.d.ts.map +1 -0
  26. package/dist/{errors-C4oENPcu.js → entry-errors-JMthgJ2g.js} +45 -29
  27. package/dist/entry-errors-JMthgJ2g.js.map +1 -0
  28. package/dist/{table-cell-margins-EVg0EwxT.js → enums-BP9wsb9Q.js} +44 -47
  29. package/dist/enums-BP9wsb9Q.js.map +1 -0
  30. package/dist/{enums-BUKTUB6V.d.ts → enums-PcXr3o3J.d.ts} +13 -14
  31. package/dist/{enums-BUKTUB6V.d.ts.map → enums-PcXr3o3J.d.ts.map} +1 -1
  32. package/dist/families.d.ts +24 -26
  33. package/dist/families.d.ts.map +1 -1
  34. package/dist/families.js +3 -4
  35. package/dist/{fit-Cb7naFj6.js → fit-Bpmzep6O.js} +64 -56
  36. package/dist/fit-Bpmzep6O.js.map +1 -0
  37. package/dist/{font-metrics-v5fn7s7e.d.ts → font-metrics-DTppw4t3.d.ts} +62 -38
  38. package/dist/font-metrics-DTppw4t3.d.ts.map +1 -0
  39. package/dist/{grid-DikTjFey.js → grid-DUIMxjfl.js} +23 -26
  40. package/dist/grid-DUIMxjfl.js.map +1 -0
  41. package/dist/{html-dom-Iuog2wdK.js → html-dom-LZCgntnJ.js} +46 -47
  42. package/dist/html-dom-LZCgntnJ.js.map +1 -0
  43. package/dist/html.d.ts +53 -9
  44. package/dist/html.d.ts.map +1 -1
  45. package/dist/html.js +12 -13
  46. package/dist/html.js.map +1 -1
  47. package/dist/index.d.ts +21 -13
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +15 -15
  50. package/dist/index.js.map +1 -1
  51. package/dist/inspect.d.ts +16 -18
  52. package/dist/inspect.d.ts.map +1 -1
  53. package/dist/inspect.js +18 -19
  54. package/dist/inspect.js.map +1 -1
  55. package/dist/{text-anchor-CrYXAfUu.js → lock-attrs-CSQnFDHP.js} +62 -12
  56. package/dist/lock-attrs-CSQnFDHP.js.map +1 -0
  57. package/dist/math.d.ts +2 -4
  58. package/dist/math.d.ts.map +1 -1
  59. package/dist/math.js +12 -13
  60. package/dist/math.js.map +1 -1
  61. package/dist/measure.d.ts +23 -12
  62. package/dist/measure.d.ts.map +1 -1
  63. package/dist/measure.js +3 -3
  64. package/dist/node.d.ts +21 -13
  65. package/dist/node.d.ts.map +1 -1
  66. package/dist/node.js +12 -12
  67. package/dist/node.js.map +1 -1
  68. package/dist/{options-internal-WqgMf720.js → options-internal-BWgmLPdx.js} +4 -5
  69. package/dist/options-internal-BWgmLPdx.js.map +1 -0
  70. package/dist/{package-J49Ck6S2.d.ts → package-CANBWuSm.d.ts} +9 -13
  71. package/dist/package-CANBWuSm.d.ts.map +1 -0
  72. package/dist/{playbtn-CUqQdoDf.js → playbtn-BQZFJir9.js} +4 -5
  73. package/dist/playbtn-BQZFJir9.js.map +1 -0
  74. package/dist/{pres-C6qgOFAa.d.ts → pres-BkEkUAEM.d.ts} +410 -237
  75. package/dist/pres-BkEkUAEM.d.ts.map +1 -0
  76. package/dist/{presentation-DGYlAWhl.js → presentation-4Ggq0_Xa.js} +470 -315
  77. package/dist/presentation-4Ggq0_Xa.js.map +1 -0
  78. package/dist/{presentation-types-8jLQHI4M.d.ts → presentation-types-BgnZR-0a.d.ts} +1119 -468
  79. package/dist/presentation-types-BgnZR-0a.d.ts.map +1 -0
  80. package/dist/read.d.ts +18 -13
  81. package/dist/read.d.ts.map +1 -1
  82. package/dist/read.js +4 -4
  83. package/dist/script.d.ts +116 -65
  84. package/dist/script.d.ts.map +1 -1
  85. package/dist/script.js +2700 -780
  86. package/dist/script.js.map +1 -1
  87. package/dist/{shapes-re0KyQk_.js → shapes-CAPOjU0Q.js} +1564 -491
  88. package/dist/shapes-CAPOjU0Q.js.map +1 -0
  89. package/dist/{slide-Dx2ZeVZ6.d.ts → slide-BmT4kMoO.d.ts} +102 -89
  90. package/dist/slide-BmT4kMoO.d.ts.map +1 -0
  91. package/dist/{slide-size-BalTjFuv.js → slide-size-SkScz1ig.js} +2 -3
  92. package/dist/{slide-size-BalTjFuv.js.map → slide-size-SkScz1ig.js.map} +1 -1
  93. package/dist/{table-dom-BTDP3lEP.js → table-dom-BYga4FYY.js} +4 -5
  94. package/dist/{table-dom-BTDP3lEP.js.map → table-dom-BYga4FYY.js.map} +1 -1
  95. package/dist/{text-sN64Otf_.js → text-CU08xJGs.js} +393 -344
  96. package/dist/text-CU08xJGs.js.map +1 -0
  97. package/dist/{transition-speed-kUEWDWTx.js → transition-speed-CNJ0fSpQ.js} +2 -3
  98. package/dist/{transition-speed-kUEWDWTx.js.map → transition-speed-CNJ0fSpQ.js.map} +1 -1
  99. package/dist/{units-internal-XJlf-hOl.js → units-internal-BR3a4cIi.js} +34 -32
  100. package/dist/units-internal-BR3a4cIi.js.map +1 -0
  101. package/dist/{zip-CKd8ihcf.js → zip-7JTh61LX.js} +8 -10
  102. package/dist/zip-7JTh61LX.js.map +1 -0
  103. package/dist/{zip-C0leZZMj.d.ts → zip-uUjs9Cqx.d.ts} +4 -6
  104. package/dist/zip-uUjs9Cqx.d.ts.map +1 -0
  105. package/dist/zip.d.ts +3 -3
  106. package/dist/zip.js +3 -3
  107. package/dist/{zoom-DPUHh85d.js → zoom-CSSeOwM8.js} +1204 -620
  108. package/dist/zoom-CSSeOwM8.js.map +1 -0
  109. package/package.json +27 -28
  110. package/skills/{ts-pptx-upstream → pptx-ts-upstream}/SKILL.md +37 -84
  111. package/dist/autopage-odPz7zZO.js.map +0 -1
  112. package/dist/binary-string-CKVAYI3M.js.map +0 -1
  113. package/dist/body-insets-Dw_BeWD_.js.map +0 -1
  114. package/dist/clip-Bl01BPcN.d.ts.map +0 -1
  115. package/dist/diagnostics-D8ot4Ei7.d.ts.map +0 -1
  116. package/dist/embedded-fonts-DarT9aoa.d.ts.map +0 -1
  117. package/dist/entry-compose-DCnvBZz2.d.ts.map +0 -1
  118. package/dist/errors-C4oENPcu.js.map +0 -1
  119. package/dist/fit-Cb7naFj6.js.map +0 -1
  120. package/dist/font-metrics-v5fn7s7e.d.ts.map +0 -1
  121. package/dist/grid-DikTjFey.js.map +0 -1
  122. package/dist/html-dom-Iuog2wdK.js.map +0 -1
  123. package/dist/image-size-CvN2iCA4.js.map +0 -1
  124. package/dist/notes-Dh12JAbn.js.map +0 -1
  125. package/dist/options-internal-WqgMf720.js.map +0 -1
  126. package/dist/package-J49Ck6S2.d.ts.map +0 -1
  127. package/dist/playbtn-CUqQdoDf.js.map +0 -1
  128. package/dist/pres-C6qgOFAa.d.ts.map +0 -1
  129. package/dist/presentation-DGYlAWhl.js.map +0 -1
  130. package/dist/presentation-types-8jLQHI4M.d.ts.map +0 -1
  131. package/dist/shapes-re0KyQk_.js.map +0 -1
  132. package/dist/slide-Dx2ZeVZ6.d.ts.map +0 -1
  133. package/dist/table-cell-margins-EVg0EwxT.js.map +0 -1
  134. package/dist/text-anchor-CrYXAfUu.js.map +0 -1
  135. package/dist/text-sN64Otf_.js.map +0 -1
  136. package/dist/units-internal-XJlf-hOl.js.map +0 -1
  137. package/dist/zip-C0leZZMj.d.ts.map +0 -1
  138. package/dist/zip-CKd8ihcf.js.map +0 -1
  139. package/dist/zoom-DPUHh85d.js.map +0 -1
@@ -1,11 +1,10 @@
1
- import { d as SHAPE_NAME, h as TableStyle, i as CHART_NAME, m as SlideObjectType } from "./enums-BUKTUB6V.js";
2
- import { Ct as CommonObjectDescriptor, Dt as CommentProps, Et as PlaceholderProps, Gt as ImageBaseProps, Ht as TextPropsOptions, I as FillOption, It as TextBaseProps, Kt as ImageProps, N as BorderProps, O as PositionProps, P as ConnectorProps, Q as ChartOpts, R as HyperlinkProps, Rt as TextFitShrinkProps, S as HexColor, T as Margin, Tt as ObjectNameProps, Vt as TextProps, Yt as OleObjectProps, Z as ChartMulti, _ as DataOrPathRequiredProps, bn as TextHorzOverflowType, f as BackgroundOption, fn as LightRigDirection, g as DataOrPathProps, h as Coord, hn as PresetMaterialType, kt as NotesProps, m as Color, nn as ShapeProps, on as BevelPresetType, pn as LightRigType, qt as MediaProps, vn as TEXT_AUTONUM_SCHEMES, wt as ObjectLockProps, x as HAlign, xt as OptsChartData, yn as TRANSITION_TYPES } from "./pres-C6qgOFAa.js";
3
- //#region src/types/table.d.ts
1
+ import { d as SHAPE_NAME, h as TableStyle, i as CHART_NAME, m as SlideObjectType } from "./enums-PcXr3o3J.js";
2
+ import { $t as ImageBaseProps, A as PositionProps, At as ObjectLockProps, C as HexColor, Dn as TEXT_AUTONUM_SCHEMES, Dt as OptsChartData, E as Margin, Ft as CommentProps, H as HyperlinkProps, I as BorderProps, Kt as TextFitShrinkProps, L as ConnectorProps, Lt as NotesProps, Nt as PlaceholderOption, On as TRANSITION_TYPES, Pt as PlaceholderProps, S as HAlign, U as ShadowProps, Wt as TextBaseProps, Xt as TextPropsOptions, Yt as TextProps, _ as DataOrPathProps, bn as LightRigDirection, en as ImageProps, g as Coord, h as Color, it as ChartOpts, jt as ObjectNameProps, k as PlaceholderPositionProps, kn as TextHorzOverflowType, kt as CommonObjectDescriptor, mn as BevelPresetType, p as BackgroundOption, rn as OleObjectProps, rt as ChartMulti, tn as MediaProps, un as ShapeProps, v as DataOrPathRequiredProps, wn as PresetMaterialType, xn as LightRigType, z as FillOption } from "./pres-BkEkUAEM.js";
4
3
  /**
5
4
  * A `<table>` element, from whatever DOM implementation the caller has.
6
5
  *
7
6
  * Deliberately *not* `lib.dom`'s `Element`. `lib.dom`'s types are built for a browser, and a
8
- * non-browser DOM's element type — happy-dom's, jsdom's — declares its own members and does
7
+ * non-browser DOM's element type (happy-dom's, jsdom's) declares its own members and does
9
8
  * not satisfy them, so demanding `Element` would reject from TypeScript exactly the
10
9
  * implementations `pptx-ts/html` exists to accept. Requiring the three members the conversion
11
10
  * actually calls keeps a mistyped argument an error while letting every real DOM through.
@@ -105,12 +104,12 @@ interface TableToSlidesProps extends Omit<TableProps, 'autoPage' | 'colW' | 'aut
105
104
  slideMargin?: Margin;
106
105
  }
107
106
  /**
108
- * A table cell's corner-to-corner rules (`a:tcPr/a:lnTlToBr` / `a:lnBlToTr`) — the
107
+ * A table cell's corner-to-corner rules (`a:tcPr/a:lnTlToBr` / `a:lnBlToTr`), the
109
108
  * "Diagonal Down Border" / "Diagonal Up Border" of PowerPoint's border gallery.
110
109
  *
111
110
  * Deliberately its own object rather than two more entries on {@link TableCellProps.border}'s
112
111
  * tuple: widening that tuple to six would break every existing caller for a construct almost
113
- * no deck uses, and the two diagonals are not edges — they do not participate in the
112
+ * no deck uses, and the two diagonals are not edges: they do not participate in the
114
113
  * perimeter, and they are not inherited by a merged region's covered cells.
115
114
  *
116
115
  * @example diagonal: { tlToBr: { type:'solid', color:'C00000', width:1 } } // strike a cell out
@@ -126,8 +125,8 @@ interface TableCellDiagonals {
126
125
  * A cell's 3-D bevel (`a:tcPr/a:cell3D`).
127
126
  *
128
127
  * A minimal surface over `CT_Cell3D`, which is a required `a:bevel` plus an optional
129
- * `a:lightRig`. PowerPoint's table UI exposes no control for it — it reaches a deck through a
130
- * theme's table style or through another producer — so this exists to author and reproduce
128
+ * `a:lightRig`. PowerPoint's table UI exposes no control for it (it reaches a deck through a
129
+ * theme's table style or through another producer), so this exists to author and reproduce
131
130
  * one, not as a general 3-D model.
132
131
  */
133
132
  interface TableCell3DProps {
@@ -172,6 +171,15 @@ interface TableCellProps extends TextBaseProps {
172
171
  * the text, below zero lowers it. On a cell it applies to every run that states none.
173
172
  */
174
173
  baseline?: NonNullable<TextPropsOptions['baseline']>;
174
+ /** Character spacing in points, as {@link TextPropsOptions.charSpacing}. On a cell it applies to every run that states none. */
175
+ charSpacing?: NonNullable<TextPropsOptions['charSpacing']>;
176
+ /** Kerning threshold in points, as {@link TextPropsOptions.kerning}. On a cell it applies to every run that states none. */
177
+ kerning?: NonNullable<TextPropsOptions['kerning']>;
178
+ /**
179
+ * Text shadow (`a:rPr/a:effectLst`), as {@link TextPropsOptions.shadow} takes it on a run. A cell
180
+ * has no shape effect of its own, so on a cell this is the shadow of every run that states none.
181
+ */
182
+ shadow?: ShadowProps;
175
183
  /** Outline level of the paragraph a run starts, as {@link TextPropsOptions.indentLevel}. */
176
184
  indentLevel?: NonNullable<TextPropsOptions['indentLevel']>;
177
185
  /** Line spacing in points, as {@link TextPropsOptions.lineSpacing}. */
@@ -195,7 +203,7 @@ interface TableCellProps extends TextBaseProps {
195
203
  * - a single `BorderProps` is broadcast to all four sides
196
204
  * - an array is read in **TRBL** order (`[top, right, bottom, left]`)
197
205
  *
198
- * Overrides the table-level {@link TableProps.border} default entirely — the two do not
206
+ * Overrides the table-level {@link TableProps.border} default entirely; the two do not
199
207
  * merge per side. A `null` entry is a hole: that edge is left out of `a:tcPr` and keeps
200
208
  * inheriting from the table style, while `{ type: 'none' }` writes an explicit no-line
201
209
  * that overrides it. For the two corner-to-corner rules see {@link diagonal}; for the
@@ -203,11 +211,11 @@ interface TableCellProps extends TextBaseProps {
203
211
  */
204
212
  border?: BorderProps | [BorderProps | null, BorderProps | null, BorderProps | null, BorderProps | null];
205
213
  /**
206
- * The cell's corner-to-corner rules — PowerPoint's "Diagonal Down/Up Border".
214
+ * The cell's corner-to-corner rules: PowerPoint's "Diagonal Down/Up Border".
207
215
  *
208
216
  * Kept off {@link border}'s tuple on purpose: see {@link TableCellDiagonals}. A diagonal
209
217
  * on a merged cell is one stroke across the whole region, so only the span origin carries
210
- * it — the covered cells inherit the origin's *edges* but never its diagonals.
218
+ * it. The covered cells inherit the origin's *edges* but never its diagonals.
211
219
  * @example diagonal: { tlToBr: { type:'solid', color:'C00000' } } // strike the cell out
212
220
  */
213
221
  diagonal?: TableCellDiagonals;
@@ -220,7 +228,7 @@ interface TableCellProps extends TextBaseProps {
220
228
  * left-aligned text in a wide cell, `anchorCtr: true` centres the ragged-right column of
221
229
  * lines as a unit while keeping their left edges flush with each other.
222
230
  *
223
- * `false` is the schema default, so it emits nothing — the same reasoning as
231
+ * `false` is the schema default, so it emits nothing, the same reasoning as
224
232
  * `horzOverflow: 'clip'`.
225
233
  * @default false
226
234
  */
@@ -236,9 +244,9 @@ interface TableCellProps extends TextBaseProps {
236
244
  */
237
245
  colspan?: number;
238
246
  /**
239
- * Cell fill — a solid color, or a picture that fills the cell (`a:blipFill` in
247
+ * Cell fill: a solid color, or a picture that fills the cell (`a:blipFill` in
240
248
  * the cell's `a:tcPr`, stretched to the cell box). A picture fill embeds the
241
- * image as slide media; identical sources are embedded once. Raster only —
249
+ * image as slide media; identical sources are embedded once. Raster only:
242
250
  * an SVG source warns and is ignored, matching shape fills. A bare {@link Color} is
243
251
  * shorthand for a solid fill ({@link FillOption}).
244
252
  * @example 'FF0000' // hex color (red), shorthand for { color:'FF0000' }
@@ -257,13 +265,13 @@ interface TableCellProps extends TextBaseProps {
257
265
  * This is **not** a text-wrap switch, despite the name. Lines always wrap to the column
258
266
  * width; only an individual character too wide to fit on a line by itself is affected, so
259
267
  * it matters for oversized display type, wide CJK/emoji glyphs, and icon fonts in a narrow
260
- * column. PowerPoint has no per-cell no-wrap at all — `wrap="none"` on a cell's `a:bodyPr`
268
+ * column. PowerPoint has no per-cell no-wrap at all: `wrap="none"` on a cell's `a:bodyPr`
261
269
  * is discarded on the next save (probe:
262
270
  * `test/read/fixtures/authoring/probe-table-cell-wrap.ps1`).
263
271
  * `'clip'` is written as asked but is the schema default, so PowerPoint drops the
264
- * attribute again the first time it saves the deck — the visible result is the same
272
+ * attribute again the first time it saves the deck. The visible result is the same
265
273
  * either way, and leaving this unset emits nothing at all.
266
- * @default (unset — PowerPoint clips)
274
+ * @default (unset; PowerPoint clips)
267
275
  * @example 'overflow' // a 60pt glyph in a 0.5in column draws whole instead of being cut
268
276
  */
269
277
  horzOverflow?: TextHorzOverflowType;
@@ -280,11 +288,11 @@ interface TableCellProps extends TextBaseProps {
280
288
  /**
281
289
  * Shrink cell text to fit when it would overflow the cell's fixed height.
282
290
  * - `'shrink'` measures the wrapped text and bakes a **reduced literal font size**
283
- * onto the cell's runs so the text fits — PowerPoint does not support text
291
+ * onto the cell's runs so the text fits. PowerPoint does not support text
284
292
  * autofit (`normAutofit`) inside table cells, so there is no font-scale flag to
285
293
  * set; the size itself is lowered, which both PowerPoint and LibreOffice render
286
294
  * identically with no edit/resize.
287
- * - Requires the cell font registered via {@link TsPptx.registerFontMetrics}. With no
295
+ * - Requires the cell font registered via {@link PptxTs.registerFontMetrics}. With no
288
296
  * metrics registered at all it is a silent no-op (the cell keeps its authored size); once
289
297
  * any face is registered, an unregistered face is estimated and warns once per write.
290
298
  * - Only triggers when the cell's row has a **fixed** height that the text exceeds.
@@ -297,16 +305,18 @@ interface TableCellProps extends TextBaseProps {
297
305
  */
298
306
  fit?: 'none' | 'shrink' | 'resize' | TextFitShrinkProps;
299
307
  }
300
- interface TableProps extends PositionProps, TextBaseProps, ObjectNameProps {
308
+ interface TableProps extends PlaceholderPositionProps, TextBaseProps, ObjectNameProps {
301
309
  /**
302
310
  * Name of a table/content placeholder defined on the slide layout/master to bind this table to.
303
311
  * - when it matches a layout/master placeholder, the table's `<p:graphicFrame>` emits that
304
312
  * placeholder's `<p:ph>` (idx/type) so PowerPoint treats the table as filling the placeholder
305
313
  * (e.g. a "Title and Content" content placeholder)
306
314
  * - the table also inherits the placeholder's position/size for any of x/y/w/h left unset
315
+ * - a {@link PlaceholderBinding} states the `p:ph` to write, with or without such a placeholder
307
316
  * @example 'body' // bind to the layout placeholder named 'body'
317
+ * @example { idx: 1 } // fill placeholder 1 of a layout this deck does not define
308
318
  */
309
- placeholder?: string;
319
+ placeholder?: PlaceholderOption;
310
320
  /**
311
321
  * Whether to enable auto-paging
312
322
  * - auto-paging creates new slides as content overflows a slide
@@ -354,7 +364,7 @@ interface TableProps extends PositionProps, TextBaseProps, ObjectNameProps {
354
364
  *
355
365
  * Steers the default table width, `fitColumns: 'shrink'`, and every page the auto-pager
356
366
  * creates. It was declared on {@link TableToSlidesProps} only, while the pager read it on
357
- * both paths — so from `addTable` it worked at run time and the type rejected it, and the
367
+ * both paths, so from `addTable` it worked at run time and the type rejected it, and the
358
368
  * table definer ignored it either way, which made "does my table respect `slideMargin`"
359
369
  * depend on whether `autoPage` was on.
360
370
  */
@@ -368,15 +378,15 @@ interface TableProps extends PositionProps, TextBaseProps, ObjectNameProps {
368
378
  */
369
379
  autoPagePlaceholder?: boolean;
370
380
  /**
371
- * Default border for **every cell** in the table — not the table's outer perimeter.
381
+ * Default border for **every cell** in the table, not the table's outer perimeter.
372
382
  *
373
383
  * A single `BorderProps` is broadcast to all four sides of each cell; an array is read
374
384
  * in TRBL order and applied to each cell's own four sides. So
375
385
  * `border: [{type:'solid'}, {type:'none'}, {type:'solid'}, {type:'none'}]` gives *every*
376
- * cell a top and bottom rule — a full set of horizontal grid lines, not a rule at the
386
+ * cell a top and bottom rule: a full set of horizontal grid lines, not a rule at the
377
387
  * top and bottom of the table. A cell's own `options.border` overrides this entirely.
378
388
  *
379
- * A `null` entry is a hole — that edge inherits from the table style — where
389
+ * A `null` entry is a hole (that edge inherits from the table style), where
380
390
  * `{ type: 'none' }` writes an explicit no-line that overrides it. Authoring nothing at
381
391
  * all depends on {@link tableStyle}: a styled table leaves every edge absent so the style
382
392
  * paints its grid, and a table with no style takes four no-fill sides, which is what keeps
@@ -390,7 +400,7 @@ interface TableProps extends PositionProps, TextBaseProps, ObjectNameProps {
390
400
  */
391
401
  border?: BorderProps | [BorderProps | null, BorderProps | null, BorderProps | null, BorderProps | null];
392
402
  /**
393
- * Border for the table's outer perimeter only — the top edge of the first row, the
403
+ * Border for the table's outer perimeter only: the top edge of the first row, the
394
404
  * bottom edge of the last row, the left edge of the first column and the right edge of
395
405
  * the last column.
396
406
  *
@@ -401,14 +411,14 @@ interface TableProps extends PositionProps, TextBaseProps, ObjectNameProps {
401
411
  * own `options.border`) already put there.
402
412
  *
403
413
  * Applied **after** every other border source, so it wins on the sides it touches and
404
- * leaves the interior alone — the "outline the table, no interior grid" case is
414
+ * leaves the interior alone. The "outline the table, no interior grid" case is
405
415
  * `outerBorder` with no `border` at all. Merged cells are handled: a span's covered cells
406
416
  * inherit the origin's borders, so a colspan straddling the last column still gets the
407
417
  * right-hand rule.
408
418
  * @example outerBorder: { type:'solid', color:'1A2B3C', width:1 } // box the table
409
419
  * @example outerBorder: [{type:'solid'}, undefined, {type:'solid'}, undefined] // rules above and below
410
420
  */
411
- outerBorder?: BorderProps | [BorderProps?, BorderProps?, BorderProps?, BorderProps?];
421
+ outerBorder?: BorderProps | [(BorderProps | undefined)?, (BorderProps | undefined)?, (BorderProps | undefined)?, (BorderProps | undefined)?];
412
422
  /**
413
423
  * Width of table columns (inches)
414
424
  * - single value is applied to every column equally based upon `w`
@@ -486,7 +496,7 @@ interface TableProps extends PositionProps, TextBaseProps, ObjectNameProps {
486
496
  /**
487
497
  * Lay the table out right-to-left.
488
498
  * Emits `rtl="1"` on `<a:tblPr>`, which mirrors the column order so the first
489
- * column renders on the right — the correct layout for RTL scripts (Arabic, Hebrew).
499
+ * column renders on the right, the correct layout for RTL scripts (Arabic, Hebrew).
490
500
  * This controls only the table/column direction; per-cell text direction is set
491
501
  * with each cell's `rtlMode` option.
492
502
  * @default false
@@ -502,7 +512,7 @@ interface TableProps extends PositionProps, TextBaseProps, ObjectNameProps {
502
512
  *
503
513
  * **Only a built-in GUID renders.** PowerPoint resolves `<a:tableStyleId>` against
504
514
  * its own table-style gallery and never reads a style definition out of the package,
505
- * so a GUID it does not recognise leaves the table with PowerPoint's no-style look —
515
+ * so a GUID it does not recognise leaves the table with PowerPoint's no-style look:
506
516
  * a black hairline grid. For brand colours use direct formatting instead:
507
517
  * `headerRow`, `columns[i]`, the table-level {@link border} / {@link fill}, or per-cell
508
518
  * options. See `docs/tables.md` → "Apply a built-in table style".
@@ -516,7 +526,7 @@ interface TableProps extends PositionProps, TextBaseProps, ObjectNameProps {
516
526
  * This is how a header is styled distinctly from the body: each property is merged
517
527
  * onto every cell of row 0 (`fill`, `color`, `bold`, `align`, `border`, etc.).
518
528
  *
519
- * Precedence (highest wins), matching how PowerPoint resolves styling — direct cell
529
+ * Precedence (highest wins), matching how PowerPoint resolves styling, where direct cell
520
530
  * formatting overrides a table-style region:
521
531
  * 1. explicit per-cell `options` on a row-0 cell
522
532
  * 2. this `headerRow`
@@ -532,13 +542,13 @@ interface TableProps extends PositionProps, TextBaseProps, ObjectNameProps {
532
542
  * Per-column default cell styling, applied as direct per-cell formatting.
533
543
  *
534
544
  * `columns[i]` is merged onto every cell that starts in column `i` (`fill`, `color`,
535
- * `bold`, `align`, `valign`, `border`, `margin`, …), so a wide **colored** matrix —
536
- * per-column fills, maturity-gradient headers — does not require hand-writing a fill
545
+ * `bold`, `align`, `valign`, `border`, `margin`, …), so a wide **colored** matrix
546
+ * (per-column fills, maturity-gradient headers) does not require hand-writing a fill
537
547
  * onto every cell. Entries may be sparse (`columns[2]` alone styles only column 2);
538
548
  * an `undefined`/omitted entry leaves that column untouched. The whole option is
539
549
  * optional and degrades cleanly to today's text-on-white when not given.
540
550
  *
541
- * Precedence (highest wins), matching how PowerPoint resolves styling — direct cell
551
+ * Precedence (highest wins), matching how PowerPoint resolves styling, where direct cell
542
552
  * formatting overrides a table-style region:
543
553
  * 1. explicit per-cell `options`
544
554
  * 2. `headerRow` (row 0 only)
@@ -566,7 +576,7 @@ interface TableProps extends PositionProps, TextBaseProps, ObjectNameProps {
566
576
  */
567
577
  columns?: TableCellProps[];
568
578
  /**
569
- * Default cell background — **stamped onto every cell**, not painted behind the table.
579
+ * Default cell background, **stamped onto every cell**, not painted behind the table.
570
580
  *
571
581
  * Each cell that does not set its own `options.fill` (or take one from `headerRow` /
572
582
  * `columns[i]`) gets this as its own `a:tcPr` fill. A picture fill is embedded once and
@@ -574,8 +584,8 @@ interface TableProps extends PositionProps, TextBaseProps, ObjectNameProps {
574
584
  *
575
585
  * Visually this is usually what you want, but it is not what a source deck contains, and
576
586
  * it has one real consequence: because every cell ends up explicitly filled, a cell that
577
- * later gets its own fill has nothing to fall back to. For a genuine table background —
578
- * one `a:tblPr` fill that cells sit on top of — use {@link tableFill}. A bare
587
+ * later gets its own fill has nothing to fall back to. For a genuine table background
588
+ * (one `a:tblPr` fill that cells sit on top of), use {@link tableFill}. A bare
579
589
  * {@link Color} is shorthand for a solid fill ({@link FillOption}).
580
590
  * @example 'FF0000' // hex color (red), shorthand for { color:'FF0000' }
581
591
  * @example { color:'FF0000' } // hex color (red)
@@ -585,18 +595,18 @@ interface TableProps extends PositionProps, TextBaseProps, ObjectNameProps {
585
595
  */
586
596
  fill?: FillOption;
587
597
  /**
588
- * The table's own background (`a:tblPr` fill) — one fill behind the whole table that
598
+ * The table's own background (`a:tblPr` fill): one fill behind the whole table that
589
599
  * every cell sits on top of.
590
600
  *
591
601
  * The counterpart to {@link fill}, and the difference is where the paint lands rather
592
602
  * than how it looks: `fill` copies a colour onto every cell, while this writes a single
593
- * fill on the table itself. That matters when a cell is meant to be transparent — with
603
+ * fill on the table itself. That matters when a cell is meant to be transparent: with
594
604
  * `tableFill`, an unfilled cell shows the table background through; with `fill` there is
595
605
  * no such thing as an unfilled cell. It is also what a deck read back from PowerPoint
596
606
  * actually carries, so a replica reproduces the source's structure rather than an
597
607
  * equivalent-looking flattening of it.
598
608
  *
599
- * Takes the same {@link FillOption} a cell does — solid, gradient, pattern or picture,
609
+ * Takes the same {@link FillOption} a cell does: solid, gradient, pattern or picture,
600
610
  * or a bare {@link Color} as shorthand for a solid fill.
601
611
  * @example 'F2F2F2' // shorthand for { color:'F2F2F2' }
602
612
  * @example { color:'F2F2F2' } // a light background behind the whole table
@@ -617,7 +627,7 @@ interface TableProps extends PositionProps, TextBaseProps, ObjectNameProps {
617
627
  * value and anything that does not read as a finite number are not heights, so they do
618
628
  * not pin: the row is sized from the table's `h` instead, or grows to fit if there is
619
629
  * none, and a `table/invalid-row-height` diagnostic says so. A *missing* array slot, or
620
- * `null` in it, is different and is silent — that is how an auto-height row is spelled.
630
+ * `null` in it, is different and is silent; that is how an auto-height row is spelled.
621
631
  *
622
632
  * The reading is shared by everything that answers a question about row height: the
623
633
  * emitted `<a:tr h>`, the export-time measured-fit pass, the auto-pager, and
@@ -638,7 +648,7 @@ interface TableCell {
638
648
  /**
639
649
  * Cell content: a plain string, or an array of `TableCell` runs for mixed formatting.
640
650
  * (A `number` is still coerced to a string at runtime for plain-JS callers, but is no
641
- * longer part of the type — pass `String(n)` from TypeScript.)
651
+ * longer part of the type; pass `String(n)` from TypeScript.)
642
652
  */
643
653
  text?: string | TableCell[];
644
654
  options?: TableCellProps;
@@ -667,8 +677,8 @@ interface TableRowSlide {
667
677
  /**
668
678
  * The column grid (inches) the pager measured this page against, one entry per grid column.
669
679
  *
670
- * The pager resolves `colW` — normalizing a short array, and distributing the usable width
671
- * when the caller gave none — and the emitted table has to use the same grid, or the widths
680
+ * The pager resolves `colW` (normalizing a short array, and distributing the usable width
681
+ * when the caller gave none), and the emitted table has to use the same grid, or the widths
672
682
  * the text was wrapped to are not the widths it is drawn in. This carried it by writing
673
683
  * back onto the options bag it was handed, which made a reused bag change the next call's
674
684
  * output; it rides out here instead.
@@ -676,8 +686,6 @@ interface TableRowSlide {
676
686
  colW?: number[];
677
687
  }
678
688
  type TableRow = TableCell[];
679
- //#endregion
680
- //#region src/types/animation.d.ts
681
689
  /**
682
690
  * Base ECMA-376 slide-transition type (`p:transition`'s single type child). Each
683
691
  * maps to a `<p:TYPE/>` element; type-specific variants (e.g. direction) go in
@@ -710,8 +718,8 @@ interface TransitionProps {
710
718
  sound?: TransitionSoundProps;
711
719
  }
712
720
  /**
713
- * A transition sound (`p:sndAc`). Either a **start sound** — an embedded WAV played
714
- * when the transition runs (`p:stSnd` → `p:snd`), optionally looped — or the
721
+ * A transition sound (`p:sndAc`). Either a **start sound** (an embedded WAV played
722
+ * when the transition runs, `p:stSnd` → `p:snd`, optionally looped) or the
715
723
  * **stop-previous** form (`p:endSnd`) that silences a still-playing transition
716
724
  * sound. Built-in PowerPoint sounds embed identically to a custom file, so there is
717
725
  * no separate built-in path: supply the WAV bytes via `data` or `path`.
@@ -764,11 +772,16 @@ interface AnimationProps {
764
772
  /** Effect duration in milliseconds; preset-specific default when omitted. */
765
773
  durationMs?: number;
766
774
  }
767
- //#endregion
768
- //#region src/types/master.d.ts
769
- interface SlideNumberProps extends PositionProps, TextBaseProps {
775
+ /**
776
+ * The slide number placeholder: one paragraph holding one slide-number field.
777
+ *
778
+ * Takes the `TextBaseProps` that format that field, its paragraph and its text body. `bullet`,
779
+ * `breakLine`, `softBreakBefore` and `tabStops` are left out: they shape a paragraph's list
780
+ * marker, its breaks between runs and its tab characters, and the field has none of them.
781
+ */
782
+ interface SlideNumberProps extends PositionProps, Omit<TextBaseProps, 'bullet' | 'breakLine' | 'softBreakBefore' | 'tabStops'> {
770
783
  /**
771
- * margin (inches) — text-frame internal margin; a value `>= 1` warns as a likely legacy points value
784
+ * margin (inches): text-frame internal margin; a value `>= 1` warns as a likely legacy points value
772
785
  */
773
786
  margin?: Margin;
774
787
  }
@@ -788,7 +801,7 @@ interface SlideMasterChartProps {
788
801
  * One object on a slide master, as a key-tagged descriptor.
789
802
  *
790
803
  * The six descriptors it shares with a group child are {@link CommonObjectDescriptor}; the two
791
- * below are the master's own — a chart, which a group cannot hold, and a placeholder, which is
804
+ * below are the master's own: a chart, which a group cannot hold, and a placeholder, which is
792
805
  * the whole point of a master.
793
806
  */
794
807
  type SlideMasterObject = CommonObjectDescriptor | {
@@ -805,7 +818,7 @@ type SlideMasterObject = CommonObjectDescriptor | {
805
818
  };
806
819
  /**
807
820
  * Bullet configuration for one slide-master text-style level (`a:buChar`/`a:buAutoNum`/`a:buNone`).
808
- * A focused subset of the run-level bullet model — picture bullets and per-glyph sizing are not
821
+ * A focused subset of the run-level bullet model: picture bullets and per-glyph sizing are not
809
822
  * supported in master defaults (those require slide rels). Set `bullet: false` to suppress the
810
823
  * level's bullet entirely.
811
824
  */
@@ -831,7 +844,7 @@ interface MasterTextStyleLevel {
831
844
  fontSize?: number;
832
845
  /** Font face (`a:defRPr/a:latin@typeface`). Unset keeps the theme font (`+mn-lt`/`+mj-lt`). */
833
846
  fontFace?: string;
834
- /** Text color — hex (`'C00000'`) or theme slot (`'tx1'`) — emitted as `a:defRPr/a:solidFill`. */
847
+ /** Text color, hex (`'C00000'`) or theme slot (`'tx1'`), emitted as `a:defRPr/a:solidFill`. */
835
848
  color?: Color;
836
849
  /** Bold text (`a:defRPr@b`). */
837
850
  bold?: boolean;
@@ -843,7 +856,11 @@ interface MasterTextStyleLevel {
843
856
  marginLeft?: number;
844
857
  /** First-line indent in inches (`a:lvlNpPr@indent`); negative produces a hanging bullet. */
845
858
  indent?: number;
846
- /** Bullet config: `false` emits `a:buNone`; an object configures a char/number bullet. Unset keeps the level default. */
859
+ /**
860
+ * Bullet config: `false` emits `a:buNone`; `true` gives the level a bullet, its own glyph where
861
+ * the level default has one and `•` where it has none (the title); an object configures a
862
+ * char/number bullet. Unset keeps the level default.
863
+ */
847
864
  bullet?: boolean | MasterBulletProps;
848
865
  }
849
866
  /**
@@ -876,8 +893,6 @@ interface SlideMasterProps {
876
893
  */
877
894
  textStyles?: MasterTextStyleProps;
878
895
  }
879
- //#endregion
880
- //#region src/types/model3d.d.ts
881
896
  /** A point or direction in the model's 3D scene, in metres. */
882
897
  interface Model3dPoint {
883
898
  x: number;
@@ -888,7 +903,7 @@ interface Model3dPoint {
888
903
  * Camera override for `addModel3d()`, mapping onto `am3d:camera`.
889
904
  *
890
905
  * The defaults are what PowerPoint itself wrote for a 2×2×2 cube, and they are correct for any
891
- * model whose bounding box is roughly cubic **once `meterPerModelUnit` is right** — the camera is
906
+ * model whose bounding box is roughly cubic **once `meterPerModelUnit` is right**. The camera is
892
907
  * expressed in metres, so the scale is what actually decides framing.
893
908
  *
894
909
  * PowerPoint's own rule, measured against three models: it normalizes the model's largest
@@ -933,7 +948,7 @@ interface Model3dCameraProps {
933
948
  */
934
949
  interface Model3dBaseProps extends PositionProps, ObjectNameProps {
935
950
  /**
936
- * Picture of the model shown wherever the live 3D view is unavailable — a raster image `path`
951
+ * Picture of the model shown wherever the live 3D view is unavailable: a raster image `path`
937
952
  * (Node/local) or base64 `data:` URI.
938
953
  * - the library cannot render a 3D scene, so when this is omitted a neutral gray placeholder is
939
954
  * embedded; PowerPoint 2019+ draws the live model on screen, in exports and in print, but older
@@ -946,18 +961,18 @@ interface Model3dBaseProps extends PositionProps, ObjectNameProps {
946
961
  data?: string;
947
962
  };
948
963
  /**
949
- * Camera override. Omitted, ts-pptx emits the camera PowerPoint wrote for a 2×2×2 cube.
964
+ * Camera override. Omitted, pptx-ts emits the camera PowerPoint wrote for a 2×2×2 cube.
950
965
  * @see {@link Model3dCameraProps} for the framing formula and when this matters.
951
966
  */
952
967
  camera?: Model3dCameraProps;
953
968
  /**
954
- * Metres per model unit (`am3d:trans/am3d:meterPerModelUnit`) — the scale that decides how
969
+ * Metres per model unit (`am3d:trans/am3d:meterPerModelUnit`): the scale that decides how
955
970
  * large the model is in the scene the {@link camera} looks at.
956
971
  *
957
972
  * This is the single override most models need. PowerPoint sets it to `1 / maxExtent`, where
958
973
  * `maxExtent` is the model's largest bounding-box dimension in model units, which normalizes
959
- * every model to 1 metre across. ts-pptx does not parse the `.glb`, so it cannot measure that
960
- * — it defaults to `0.5`, correct for a model 2 units across. A model 100 units across left at
974
+ * every model to 1 metre across. pptx-ts does not parse the `.glb`, so it cannot measure that;
975
+ * it defaults to `0.5`, correct for a model 2 units across. A model 100 units across left at
961
976
  * the default is a 50-metre object with the camera 2.26 metres from its centre, i.e. the
962
977
  * viewer is inside it.
963
978
  * - range: greater than 0
@@ -966,7 +981,7 @@ interface Model3dBaseProps extends PositionProps, ObjectNameProps {
966
981
  */
967
982
  meterPerModelUnit?: number;
968
983
  /**
969
- * Alt text (`p:cNvPr@descr`) — what a screen reader announces for the model.
984
+ * Alt text (`p:cNvPr@descr`): what a screen reader announces for the model.
970
985
  */
971
986
  altText?: string;
972
987
  }
@@ -978,14 +993,12 @@ interface Model3dBaseProps extends PositionProps, ObjectNameProps {
978
993
  * intrinsic aspect ratio, and the library never opens the payload.
979
994
  */
980
995
  type Model3dProps = Model3dBaseProps & DataOrPathRequiredProps;
981
- //#endregion
982
- //#region src/types/zoom.d.ts
983
996
  /** Options shared by all three zoom kinds. */
984
997
  interface ZoomBaseProps extends PositionProps {
985
998
  /** Object name (PowerPoint selection-pane label). Auto-named (e.g. `Slide Zoom 3`) when omitted. */
986
999
  objectName?: string;
987
1000
  /**
988
- * Ship a caller-supplied thumbnail instead of the gray placeholder — a raster image `path`
1001
+ * Ship a caller-supplied thumbnail instead of the gray placeholder: a raster image `path`
989
1002
  * (Node/local) or base64 `data:` URI. Shown as-authored (not auto-refreshed by PowerPoint).
990
1003
  */
991
1004
  coverImage?: {
@@ -1005,7 +1018,7 @@ interface ZoomBaseProps extends PositionProps {
1005
1018
  * A zoom is a `p:graphicFrame`, so these land on its `a:graphicFrameLocks` and the flags that
1006
1019
  * apply are the graphic-frame ones (`noGrp`, `noDrilldown`, `noSelect`, `noChangeAspect`,
1007
1020
  * `noMove`, `noResize`); a picture-only flag warns and is dropped, as everywhere else. The
1008
- * `mc:Fallback` picture keeps its own fixed lock set — it is what pre-2016 consumers draw, and
1021
+ * `mc:Fallback` picture keeps its own fixed lock set. It is what pre-2016 consumers draw, and
1009
1022
  * folding a graphic-frame flag set onto a `a:picLocks` element would warn about every flag the
1010
1023
  * two element types do not share.
1011
1024
  *
@@ -1017,7 +1030,7 @@ interface ZoomBaseProps extends PositionProps {
1017
1030
  }
1018
1031
  /** Slide Zoom: a tile that zooms to a single target slide. */
1019
1032
  interface SlideZoomProps extends ZoomBaseProps {
1020
- /** Target slide — a `Slide` returned by `addSlide()`, or its 1-based slide number. */
1033
+ /** Target slide: a `Slide` returned by `addSlide()`, or its 1-based slide number. */
1021
1034
  target: Slide | number;
1022
1035
  }
1023
1036
  /** Section Zoom: a tile that zooms to the start of a named section. */
@@ -1030,8 +1043,6 @@ interface SectionZoomProps extends ZoomBaseProps {
1030
1043
  * The section containing the host slide is excluded (a summary does not link to itself).
1031
1044
  */
1032
1045
  type SummaryZoomProps = ZoomBaseProps;
1033
- //#endregion
1034
- //#region src/types/slide.d.ts
1035
1046
  /**
1036
1047
  * A child object that can be placed inside a group via `slide.addGroup()`.
1037
1048
  *
@@ -1052,7 +1063,7 @@ type GroupChildProps = CommonObjectDescriptor | {
1052
1063
  * Options for `slide.addGroup()`.
1053
1064
  *
1054
1065
  * The group keeps an identity child coordinate space (`chOff/chExt == off/ext`) at every depth:
1055
- * children — including nested groups — keep their slide-absolute `x/y/w/h`. A consequence worth
1066
+ * children, including nested groups, keep their slide-absolute `x/y/w/h`. A consequence worth
1056
1067
  * knowing: a group's own frame never moves or scales its children, it only places the selection
1057
1068
  * handle and the rotate pivot.
1058
1069
  *
@@ -1068,7 +1079,7 @@ interface GroupProps extends PositionProps, ObjectNameProps {
1068
1079
  /** Flip the group vertically */
1069
1080
  flipV?: boolean;
1070
1081
  }
1071
- interface ObjectOptions extends ImageBaseProps, PositionProps, ShapeProps, TableCellProps, TextPropsOptions {
1082
+ interface ObjectOptions extends ImageBaseProps, Omit<ShapeProps, keyof PositionProps>, TableCellProps, TextPropsOptions {
1072
1083
  cx?: Coord;
1073
1084
  cy?: Coord;
1074
1085
  margin?: Margin;
@@ -1096,7 +1107,7 @@ interface SlideLayout {
1096
1107
  }
1097
1108
  /**
1098
1109
  * One authored object on a slide, as {@link Slide.objects} reports it: what it is and how it is
1099
- * addressed, not how it is drawn. It is a snapshot taken when the getter ran, not a live handle —
1110
+ * addressed, not how it is drawn. It is a snapshot taken when the getter ran, not a live handle:
1100
1111
  * nothing on it writes back, and a later `addShape`/`groupObjects` leaves it describing the slide
1101
1112
  * as it was.
1102
1113
  *
@@ -1104,11 +1115,11 @@ interface SlideLayout {
1104
1115
  * whose descriptors nobody kept, and the only durable handle on them is the `objectName` each one
1105
1116
  * was authored with; without a way to enumerate those, a consumer that wants to act on what is
1106
1117
  * already there has to either make every renderer surrender its internals or keep a parallel
1107
- * ledger of what it added — and a ledger is wrong the moment a renderer adds an object it did not
1118
+ * ledger of what it added, and a ledger is wrong the moment a renderer adds an object it did not
1108
1119
  * announce.
1109
1120
  */
1110
1121
  interface SlideObjectInfo {
1111
- /** What kind of object this is — the same value the object was authored as. */
1122
+ /** What kind of object this is: the same value the object was authored as. */
1112
1123
  readonly type: SlideObjectType;
1113
1124
  /**
1114
1125
  * Selection Pane name, in the spelling the caller passed to `objectName`, so it can be handed
@@ -1116,7 +1127,7 @@ interface SlideObjectInfo {
1116
1127
  *
1117
1128
  * Always a string: an object authored without a name still gets the generated `Shape 3` /
1118
1129
  * `Text 1` / `Group 2` identity PowerPoint shows in the Selection Pane, and that name addresses
1119
- * it just as well. The two are indistinguishable here on purpose — nothing downstream of
1130
+ * it just as well. The two are indistinguishable here on purpose: nothing downstream of
1120
1131
  * authoring records which is which, and a consumer that cares can tell them apart by the
1121
1132
  * naming convention it chose for its own objects.
1122
1133
  */
@@ -1125,7 +1136,7 @@ interface SlideObjectInfo {
1125
1136
  readonly isPlaceholder: boolean;
1126
1137
  /**
1127
1138
  * Whether `groupObjects()` would accept this object on kind alone. It cannot speak for the
1128
- * *selection* — an unresolved, duplicated or ambiguous name still throws — so it answers "is
1139
+ * *selection* (an unresolved, duplicated or ambiguous name still throws), so it answers "is
1129
1140
  * this object groupable", never "will this call succeed".
1130
1141
  */
1131
1142
  readonly canGroup: boolean;
@@ -1143,7 +1154,7 @@ interface SlideObjectInfo {
1143
1154
  * `exactOptionalPropertyTypes`: `SlideBuilder` implements them as accessor pairs, so the property
1144
1155
  * is *always* present on a real slide and its getter answers `undefined` when nothing is set.
1145
1156
  * There is no absent state for the declaration to describe. Writing one is also how the setters
1146
- * are cleared — `slide.transition = undefined` removes the `p:transition` — and an interface that
1157
+ * are cleared (`slide.transition = undefined` removes the `p:transition`), and an interface that
1147
1158
  * could not express the value its own setter takes would be describing a different type.
1148
1159
  */
1149
1160
  interface Slide {
@@ -1154,7 +1165,7 @@ interface Slide {
1154
1165
  addConnector: (options: ConnectorProps) => Slide;
1155
1166
  addImage: (options: ImageProps) => Slide;
1156
1167
  addMedia: (options: MediaProps) => Slide;
1157
- /** Embed a 3D model (Insert ▸ 3D Models) — a `.glb` PowerPoint 2019+ renders live. */
1168
+ /** Embed a 3D model (Insert ▸ 3D Models): a `.glb` PowerPoint 2019+ renders live. */
1158
1169
  addModel3d: (options: Model3dProps) => Slide;
1159
1170
  /** Embed an OLE object (Insert ▸ Object) whose bytes travel inside the `.pptx`. */
1160
1171
  addOleObject: (options: OleObjectProps) => Slide;
@@ -1169,22 +1180,22 @@ interface Slide {
1169
1180
  /** Group objects already on this slide, addressed by their `objectName`, into a single group. */
1170
1181
  groupObjects: (objectNames: string[], options?: GroupProps) => Slide;
1171
1182
  /**
1172
- * Add a Slide Zoom — a clickable tile that zooms to a single target slide (Insert ▸ Zoom).
1183
+ * Add a Slide Zoom: a clickable tile that zooms to a single target slide (Insert ▸ Zoom).
1173
1184
  * @example slide.addSlideZoom({ target: intro, x: 1, y: 1, w: 3, h: 1.7 })
1174
1185
  */
1175
1186
  addSlideZoom: (options: SlideZoomProps) => Slide;
1176
1187
  /**
1177
- * Add a Section Zoom — a clickable tile that zooms to the start of a named section.
1188
+ * Add a Section Zoom: a clickable tile that zooms to the start of a named section.
1178
1189
  * @example slide.addSectionZoom({ sectionTitle: 'Results', x: 1, y: 1, w: 3, h: 1.7 })
1179
1190
  */
1180
1191
  addSectionZoom: (options: SectionZoomProps) => Slide;
1181
1192
  /**
1182
- * Add a Summary Zoom — a grid of tiles, one per section (excluding this slide's own section).
1193
+ * Add a Summary Zoom: a grid of tiles, one per section (excluding this slide's own section).
1183
1194
  * @example slide.addSummaryZoom({ x: 0.5, y: 1.5, w: 11, h: 4.5 })
1184
1195
  */
1185
1196
  addSummaryZoom: (options: SummaryZoomProps) => Slide;
1186
1197
  /**
1187
- * The objects authored on this slide so far, bottom-to-top in z-order — the read-back half of
1198
+ * The objects authored on this slide so far, bottom-to-top in z-order: the read-back half of
1188
1199
  * `groupObjects()`, which addresses those same objects by name but until now gave no way to
1189
1200
  * learn the names.
1190
1201
  *
@@ -1205,7 +1216,7 @@ interface Slide {
1205
1216
  * slide.addTable(rows, { autoPage: true })
1206
1217
  * for (const made of slide.newAutoPagedSlides) made.addText('continued', { x: 0.5, y: 0.2 })
1207
1218
  */
1208
- readonly newAutoPagedSlides?: Slide[];
1219
+ readonly newAutoPagedSlides: Slide[];
1209
1220
  /**
1210
1221
  * Slide-show transition played when advancing to this slide (`p:transition`).
1211
1222
  * @example slide.transition = { type: 'fade', durationMs: 1500 }
@@ -1231,7 +1242,10 @@ interface Slide {
1231
1242
  */
1232
1243
  background?: BackgroundOption | undefined;
1233
1244
  /**
1234
- * Default text color (hex format)
1245
+ * Default text color (hex format): the color of `addText` and table text that states none
1246
+ * itself, on its shape or on its table. Read when the slide is written, so it reaches text
1247
+ * added before it was set. Placeholder text and hyperlinks keep inheriting their colors, and a
1248
+ * table with a hyperlink in it states no default color at all.
1235
1249
  * @example 'FF3399'
1236
1250
  * @default '000000' (DEF_FONT_COLOR)
1237
1251
  */
@@ -1251,6 +1265,5 @@ interface AddSlideProps {
1251
1265
  masterTitle?: string;
1252
1266
  sectionTitle?: string;
1253
1267
  }
1254
- //#endregion
1255
1268
  export { TableCellDiagonals as A, AnimationTrigger as C, TransitionType as D, TransitionSoundProps as E, TableToSlidesDocument as F, TableToSlidesElement as I, TableToSlidesProps as L, TableProps as M, TableRow as N, TableCell as O, TableRowSlide as P, AnimationProps as S, TransitionProps as T, MasterTextStyleProps as _, Slide as a, SlideMasterProps as b, SectionZoomProps as c, ZoomBaseProps as d, Model3dCameraProps as f, MasterTextStyleLevel as g, MasterBulletProps as h, ObjectOptions as i, TableCellProps as j, TableCell3DProps as k, SlideZoomProps as l, Model3dProps as m, GroupChildProps as n, SlideLayout as o, Model3dPoint as p, GroupProps as r, SlideObjectInfo as s, AddSlideProps as t, SummaryZoomProps as u, SlideMasterChartProps as v, PresetEffect as w, SlideNumberProps as x, SlideMasterObject as y };
1256
- //# sourceMappingURL=slide-Dx2ZeVZ6.d.ts.map
1269
+ //# sourceMappingURL=slide-BmT4kMoO.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slide-BmT4kMoO.d.ts","names":[],"sources":["../src/types/table.ts","../src/types/animation.ts","../src/types/master.ts","../src/types/model3d.ts","../src/types/zoom.ts","../src/types/slide.ts"],"mappings":"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"}