@docx-editor.dev/core 2.32.0 → 2.34.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 (121) hide show
  1. package/README.md +1 -1
  2. package/THIRD_PARTY_NOTICES.md +1 -0
  3. package/dist/automation.cjs +1 -1
  4. package/dist/automation.d.ts +14 -52
  5. package/dist/automation.js +1 -1
  6. package/dist/binding.cjs +1 -1
  7. package/dist/binding.d.ts +14 -14
  8. package/dist/binding.js +1 -1
  9. package/dist/{chrome-print-CznJ0ucN.d.ts → chrome-print-DY0xsXm_.d.ts} +231 -125
  10. package/dist/chunk-37IYWENL.cjs +1 -0
  11. package/dist/chunk-37RNWL45.js +4 -0
  12. package/dist/chunk-5HUVQXET.cjs +4 -0
  13. package/dist/chunk-5JP3QQF7.js +7 -0
  14. package/dist/chunk-5KOLFKOB.cjs +5 -0
  15. package/dist/chunk-6MF5PN2E.js +236 -0
  16. package/dist/chunk-77JT2AU7.js +2 -0
  17. package/dist/{chunk-ETDZFNMI.js → chunk-7FUORGCW.js} +1 -1
  18. package/dist/chunk-A5BTVPET.cjs +236 -0
  19. package/dist/chunk-AFXFH2T2.js +3 -0
  20. package/dist/chunk-AVCYP7OY.js +5 -0
  21. package/dist/chunk-BL2E4QRA.js +1 -0
  22. package/dist/chunk-DB7X4Y6O.js +4 -0
  23. package/dist/chunk-DR6W23TB.cjs +2 -0
  24. package/dist/chunk-DYLB5U42.js +1 -0
  25. package/dist/chunk-E5BKDHIP.cjs +1 -0
  26. package/dist/chunk-IWXBRUPG.cjs +4 -0
  27. package/dist/{chunk-L5TYBFDB.js → chunk-KCUXXO3Q.js} +1 -1
  28. package/dist/chunk-KYA4Y2YB.js +1 -0
  29. package/dist/{chunk-6UDJUI3W.cjs → chunk-L74TCGVH.cjs} +1 -1
  30. package/dist/chunk-NBSSQSKY.js +30 -0
  31. package/dist/{chunk-OKMEMSKB.cjs → chunk-NEM774E3.cjs} +1 -1
  32. package/dist/chunk-NKZVMMHU.cjs +1 -0
  33. package/dist/chunk-TXIO5WYQ.cjs +32 -0
  34. package/dist/chunk-UKG2TXWH.cjs +7 -0
  35. package/dist/chunk-V7CO55DO.cjs +3 -0
  36. package/dist/chunk-VLQDQNSS.js +1 -0
  37. package/dist/chunk-VQOAC3VI.cjs +30 -0
  38. package/dist/chunk-YWJSQA2O.js +32 -0
  39. package/dist/chunk-ZJ74LCFI.cjs +1 -0
  40. package/dist/collaboration/replication.cjs +1 -1
  41. package/dist/collaboration/replication.d.ts +13 -4
  42. package/dist/collaboration/replication.js +1 -1
  43. package/dist/collaboration.d.ts +3 -3
  44. package/dist/contracts/document.d.ts +3 -3
  45. package/dist/contracts/editor.d.ts +10 -10
  46. package/dist/contracts/interaction.d.ts +2 -2
  47. package/dist/contracts/modules.d.ts +12 -12
  48. package/dist/contracts/types.d.ts +4 -4
  49. package/dist/{custom-node-writes-CLJKGD9t.d.ts → custom-node-writes-DparEcZK.d.ts} +45 -7
  50. package/dist/diagnostic-context-CkZKkKvB.d.ts +98 -0
  51. package/dist/{diagnostic-hints-DK8-V0fk.d.ts → diagnostic-hints-BTyb8yzX.d.ts} +3 -3
  52. package/dist/{document-protection-NaniLHWF.d.ts → document-protection-DdWxihIN.d.ts} +1 -1
  53. package/dist/{headless-document-view-Bcz9_Qva.d.ts → drawing-graphic-kind-CK0cMc7H.d.ts} +161 -18
  54. package/dist/drawing-preview-package-fFjXpOMS.d.ts +115 -0
  55. package/dist/{editor-DZwOTmlR.d.ts → editor-DDCkWqfD.d.ts} +125 -21
  56. package/dist/{editor-scope-B3L-1ALc.d.ts → editor-scope-CA6egMaK.d.ts} +5 -1
  57. package/dist/editor.cjs +1 -1
  58. package/dist/editor.css +4 -4
  59. package/dist/editor.d.ts +387 -78
  60. package/dist/editor.js +1 -1
  61. package/dist/export.cjs +2 -2
  62. package/dist/export.d.ts +47 -12
  63. package/dist/export.js +2 -2
  64. package/dist/{font-resolver-BlQNGdvR.d.ts → font-resolver-Bm9XqTNO.d.ts} +14 -0
  65. package/dist/index.cjs +1 -1
  66. package/dist/index.d.ts +38 -23
  67. package/dist/index.js +1 -1
  68. package/dist/{layout-shaping-E5J4Z1Gf.d.ts → layout-shaping-Byj-TwsI.d.ts} +1 -1
  69. package/dist/layout.cjs +1 -1
  70. package/dist/layout.d.ts +434 -199
  71. package/dist/layout.js +1 -1
  72. package/dist/metafile-drawing-Ce6TuWLm.d.ts +115 -0
  73. package/dist/{note-properties-Ds5R2_3F.d.ts → note-properties-BiunaIQa.d.ts} +31 -7
  74. package/dist/output.cjs +1 -1
  75. package/dist/output.d.ts +77 -13
  76. package/dist/output.js +1 -1
  77. package/dist/{protocol-DKa4qt7F.d.ts → protocol-Dn44dL4M.d.ts} +184 -120
  78. package/dist/{review-paragraph-order-Dc17w_6v.d.ts → review-paragraph-order-BWMXAKuA.d.ts} +1 -1
  79. package/dist/{revision-projection-Cn6rZJ7H.d.ts → revision-projection-DwFhgIR0.d.ts} +1 -1
  80. package/dist/{semantic-cell-selection-BaUR0iJ4.d.ts → semantic-cell-selection-DhalxEBH.d.ts} +2 -2
  81. package/dist/{semantic-interaction-CJoHLoOl.d.ts → semantic-interaction-QeuzEtAk.d.ts} +2 -4
  82. package/dist/{semantic-paint-BPw_n0li.d.ts → semantic-paint-BYDZbTiY.d.ts} +16 -9
  83. package/dist/{semantic-record-queries-C0rJ3sB4.d.ts → semantic-record-queries-Bf5bgQL3.d.ts} +1 -1
  84. package/dist/{semantic-records-BvN-WWst.d.ts → semantic-records-CzZiWMY8.d.ts} +348 -132
  85. package/dist/store.cjs +1 -1
  86. package/dist/store.d.ts +526 -19
  87. package/dist/store.js +1 -1
  88. package/dist/{tree-op-types-C_S2niXW.d.ts → tree-op-types-DKvJSH8T.d.ts} +1024 -501
  89. package/dist/{tree-package-store-CRHvMyNj.d.ts → tree-package-store-Cl3BkWXF.d.ts} +8 -3
  90. package/dist/{tree-session-contract-D1awo_dA.d.ts → tree-session-contract-BL50pqs8.d.ts} +15 -8
  91. package/dist/{unsupported-elements-CVos5cqe.d.ts → unsupported-elements-Bra4QTOM.d.ts} +1 -1
  92. package/licenses/ECMA-376.md +29 -0
  93. package/package.json +2 -2
  94. package/dist/bookmark-names-DDuAra_V.d.ts +0 -37
  95. package/dist/chunk-25EXMBV2.cjs +0 -5
  96. package/dist/chunk-3IEXDEFH.cjs +0 -7
  97. package/dist/chunk-65XBN67F.cjs +0 -2
  98. package/dist/chunk-6NVZNB7O.cjs +0 -3
  99. package/dist/chunk-ACLR4DMK.js +0 -1
  100. package/dist/chunk-B2BEELUE.js +0 -1
  101. package/dist/chunk-DDFHKQFU.js +0 -30
  102. package/dist/chunk-E4IAO4CY.cjs +0 -2
  103. package/dist/chunk-FDSL5OJU.cjs +0 -30
  104. package/dist/chunk-FS7CMYLT.js +0 -4
  105. package/dist/chunk-GDS24SZN.js +0 -30
  106. package/dist/chunk-GIY6NT2X.js +0 -5
  107. package/dist/chunk-GWM3AKUD.js +0 -18
  108. package/dist/chunk-HDOXACHP.js +0 -2
  109. package/dist/chunk-IILEENID.js +0 -1
  110. package/dist/chunk-MNF2K7NN.cjs +0 -30
  111. package/dist/chunk-O324RB6R.cjs +0 -1
  112. package/dist/chunk-QXJKYNYZ.js +0 -1
  113. package/dist/chunk-RALTVLB6.js +0 -2
  114. package/dist/chunk-SRVKFUFI.js +0 -3
  115. package/dist/chunk-TELQ52LG.cjs +0 -1
  116. package/dist/chunk-TJHE5EET.cjs +0 -1
  117. package/dist/chunk-UMMRURPE.js +0 -7
  118. package/dist/chunk-XJYZVGQR.cjs +0 -1
  119. package/dist/chunk-ZGTIE3QJ.cjs +0 -4
  120. package/dist/chunk-ZOZI27AW.cjs +0 -18
  121. package/dist/diagnostic-context-BtDUY3v2.d.ts +0 -31
@@ -1,4 +1,4 @@
1
- import { H as HistoryGroupOutcome } from './editor-scope-B3L-1ALc.js';
1
+ import { H as HistoryGroupOutcome } from './editor-scope-CA6egMaK.js';
2
2
 
3
3
  /**
4
4
  * Why a zip was refused at the trust boundary.
@@ -341,6 +341,7 @@ declare const XML_NAMESPACE_URI = "http://www.w3.org/XML/1998/namespace";
341
341
  declare const XMLNS_NAMESPACE_URI = "http://www.w3.org/2000/xmlns/";
342
342
  /** The `w14` wordml-2010 extension namespace — `w14:paraId`/`w14:textId` live here. */
343
343
  declare const W14_NAMESPACE_URI = "http://schemas.microsoft.com/office/word/2010/wordml";
344
+ /** @internal */
344
345
  declare const DRAWINGML_MAIN_NAMESPACE_URI = "http://schemas.openxmlformats.org/drawingml/2006/main";
345
346
  declare const WP_NAMESPACE_URI = "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing";
346
347
  declare const PIC_NAMESPACE_URI = "http://schemas.openxmlformats.org/drawingml/2006/picture";
@@ -1144,24 +1145,100 @@ type OoxmlInvariantResult = {
1144
1145
  */
1145
1146
  declare function readOoxmlPart(xml: string, metadata: OoxmlPartMetadata, limits?: XmlLimits): OoxmlReadResult;
1146
1147
 
1147
- /** Plain text fitted to a floating shape box, painted with one fill and an optional outline. */
1148
- interface LegacyTextArtProjection {
1149
- readonly text: string;
1150
- readonly fontFamily: string;
1151
- readonly bold: boolean;
1152
- readonly italic: boolean;
1153
- /** `RRGGBB`, or null when the shape is not filled. */
1154
- readonly fillHex: string | null;
1155
- readonly fillAlpha: number;
1156
- /** `RRGGBB`, or null when the shape is not stroked. */
1157
- readonly strokeHex: string | null;
1158
- readonly strokeAlpha: number;
1159
- readonly strokeWidthPt: number;
1160
- /** Clockwise rotation about the box centre, in [0, 360). */
1161
- readonly rotationDegrees: number;
1148
+ /** @internal */
1149
+ type ShapeSchemeColorResolver = (scheme: string) => string | null;
1150
+ /** A resolved shape colour. @public */
1151
+ interface ShapeColor {
1152
+ /** Validated six-character sRGB hex, without `#`. */
1153
+ readonly hex: string;
1154
+ /** Opacity, 0..1. */
1155
+ readonly alpha: number;
1156
+ }
1157
+ /** @internal */
1158
+ declare function resolveColorNode(color: OoxmlNode, resolveSchemeColor?: ShapeSchemeColorResolver, placeholder?: ShapeColor): ShapeColor | null;
1159
+ /** @internal */
1160
+ declare function directFill(parent: OoxmlElement, resolveSchemeColor?: ShapeSchemeColorResolver, placeholder?: ShapeColor): {
1161
+ readonly present: boolean;
1162
+ readonly color: ShapeColor | null;
1163
+ };
1164
+
1165
+ /** A pattern fill: the tile's foreground rows and the two colours. @public */
1166
+ interface VectorPattern {
1167
+ /** Eight rows of foreground cells from the top; the leftmost cell is the high bit. */
1168
+ readonly rows: readonly number[];
1169
+ readonly foreground: ShapeColor;
1170
+ readonly background: ShapeColor;
1171
+ }
1172
+
1173
+ /** An affine map `[a, b, c, d, e, f]`: x' = a x + c y + e, y' = b x + d y + f. */
1174
+ type AffineMatrix = readonly [number, number, number, number, number, number];
1175
+ /** One colour stop of a gradient. @public */
1176
+ interface GradientStop {
1177
+ /** Position along the gradient, 0..1. */
1178
+ readonly offset: number;
1179
+ /** Validated six-character sRGB hex, without `#`. */
1180
+ readonly hex: string;
1181
+ /** Opacity, 0..1. */
1182
+ readonly alpha: number;
1183
+ }
1184
+ /**
1185
+ * A gradient ready to paint. `linear` runs from (x1, y1) to (x2, y2); `radial` grows from
1186
+ * its centre (cx, cy) at offset 0 to radius r at offset 1. Both are in gradient space, which
1187
+ * `matrix` maps onto the component's point space.
1188
+ */
1189
+ interface VectorGradient {
1190
+ readonly kind: 'linear' | 'radial';
1191
+ /** Stops in offset order; at least two. */
1192
+ readonly stops: readonly GradientStop[];
1193
+ /** `[x1, y1, x2, y2]` for a linear gradient, `[cx, cy, r]` for a radial one. */
1194
+ readonly coords: readonly number[];
1195
+ /** Gradient space onto the component's point space. */
1196
+ readonly matrix: AffineMatrix;
1197
+ }
1198
+
1199
+ /**
1200
+ * Outline geometry of a text box shape. A polygon's points are shares of the box, from 0 at
1201
+ * its top-left to 1 at its far side, so the outline stretches with a box that fits its text.
1202
+ */
1203
+ type TextboxOutlineProjection = {
1204
+ readonly kind: 'ellipse';
1205
+ }
1206
+ /** The corner radius is `arc` times the box's shorter side. */
1207
+ | {
1208
+ readonly kind: 'roundRect';
1209
+ readonly arc: number;
1210
+ } | {
1211
+ readonly kind: 'polygon';
1212
+ readonly subpaths: readonly (readonly {
1213
+ readonly x: number;
1214
+ readonly y: number;
1215
+ }[])[];
1216
+ };
1217
+ /**
1218
+ * The text area of a box of any size: shares of its width and height (an oval, a preset), or
1219
+ * the inscribed square of a round rectangle's corner arc on every side.
1220
+ */
1221
+ type TextboxTextAreaRule = {
1222
+ readonly kind: 'share';
1223
+ readonly top: number;
1224
+ readonly right: number;
1225
+ readonly bottom: number;
1226
+ readonly left: number;
1227
+ } | {
1228
+ readonly kind: 'arc';
1229
+ readonly arc: number;
1230
+ };
1231
+
1232
+ /** A text box shadow: colour, opacity and page offset. */
1233
+ interface LegacyTextboxShadow {
1234
+ readonly hex: string;
1235
+ readonly alpha: number;
1236
+ readonly offsetXEmu: number;
1237
+ readonly offsetYEmu: number;
1238
+ /** The shadow is the solid silhouette, seen only outside the shape. */
1239
+ readonly obscured: boolean;
1162
1240
  }
1163
1241
 
1164
- type ShapeSchemeColorResolver = (scheme: string) => string | null;
1165
1242
  type ShapeStyleMatrixResolver = (kind: 'fill' | 'line', index: number) => OoxmlElement | null;
1166
1243
  /**
1167
1244
  * The renderable subset of a `wps:wsp` non-picture graphic, or of one bounded `wpg:wgp`
@@ -1170,6 +1247,8 @@ type ShapeStyleMatrixResolver = (kind: 'fill' | 'line', index: number) => OoxmlE
1170
1247
  * from `a:srgbClr` or from the theme, through `a:schemeClr` or a `wps:style` matrix
1171
1248
  * reference. Anything richer (gradient and picture fills, text bodies, rotation, a nested
1172
1249
  * group) projects as `null` and paints the labelled placeholder instead.
1250
+ *
1251
+ * @public
1173
1252
  */
1174
1253
  interface VectorShapeProjection {
1175
1254
  /** The drawing extent that frames the subpath coordinate space. */
@@ -1200,7 +1279,13 @@ interface VectorShapeProjection {
1200
1279
  readonly strokeWidthEmu: number;
1201
1280
  /** Independently styled paths, always non-empty. A direct shape has one component. */
1202
1281
  readonly components: readonly VectorShapeComponent[];
1282
+ /**
1283
+ * Geometry outside the extent paints too. A drawing canvas does not cut its members at
1284
+ * its frame: a member placed past an edge shows whole.
1285
+ */
1286
+ readonly overflowVisible?: true;
1203
1287
  }
1288
+ /** One painted layer of a vector shape. @public */
1204
1289
  interface VectorShapeComponent {
1205
1290
  readonly subpathsEmu: readonly (readonly Readonly<{
1206
1291
  x: number;
@@ -1218,15 +1303,50 @@ interface VectorShapeComponent {
1218
1303
  readonly strokeHex: string | null;
1219
1304
  readonly strokeAlpha: number;
1220
1305
  readonly strokeWidthEmu: number;
1306
+ /**
1307
+ * A gradient fill (`a:gradFill`), painted in place of `fillHex` where the painter can.
1308
+ * `fillHex` then holds the mean of its stops.
1309
+ */
1310
+ readonly fillGradient?: VectorGradient;
1311
+ /** A preset pattern the fill paints with; `fillHex` is its mean colour. */
1312
+ readonly fillPattern?: VectorPattern;
1313
+ /** The outer shadow the shape casts, painted under this component. */
1314
+ readonly shadow?: ShapeShadow;
1315
+ /**
1316
+ * The component only casts `shadow`: it is the silhouette of a shape with several paths,
1317
+ * placed before them, and paints no fill or outline of its own.
1318
+ */
1319
+ readonly shadowOnly?: true;
1221
1320
  /** Authored line ends and joins, inherited from the selected theme line when absent. */
1222
1321
  readonly strokeCap?: 'butt' | 'round' | 'square';
1223
- readonly strokeJoin?: 'round' | 'bevel';
1322
+ readonly strokeJoin?: 'round' | 'bevel' | 'miter';
1323
+ /** Miter limit in line widths, for a miter join. */
1324
+ readonly strokeMiterLimit?: number;
1325
+ /** Dash and gap lengths in multiples of the stroke width; absent for a solid outline. */
1326
+ readonly strokeDash?: readonly number[];
1327
+ /** Paint clips to these closed subpaths, as an inner shadow clips to its shape. */
1328
+ readonly clipEmu?: readonly (readonly Readonly<{
1329
+ x: number;
1330
+ y: number;
1331
+ }>[])[];
1332
+ /** In a picture's frame: paints under the picture (its shadow and fill), not over it. */
1333
+ readonly belowPicture?: true;
1334
+ /**
1335
+ * How far the stroked path lies outside the geometry by design, in EMU: a picture outline
1336
+ * runs half its width outside the picture, so the whole stroke stays off the picture.
1337
+ */
1338
+ readonly strokeOutsetEmu?: number;
1224
1339
  /**
1225
1340
  * The outline sits inside the closed geometry (`a:ln algn="in"`): painters draw it at twice
1226
1341
  * its width clipped to the path, so the authored width stays inside the shape and adds no
1227
1342
  * reach past the extent. Set only for a closed outline with area.
1228
1343
  */
1229
1344
  readonly strokeInset?: boolean;
1345
+ /**
1346
+ * The subpaths fill by the nonzero winding rule rather than even-odd, so overlapping
1347
+ * subpaths of one direction stay filled where they cross.
1348
+ */
1349
+ readonly fillRule?: 'nonzero';
1230
1350
  }
1231
1351
  /**
1232
1352
  * The story carried by a `wps:wsp` text box (`wps:txbx` → `w:txbxContent`).
@@ -1234,6 +1354,8 @@ interface VectorShapeComponent {
1234
1354
  * The projection captures only the story root and the shape chrome reads; it never walks the
1235
1355
  * story content, so the per-drawing element budget is not spent on paragraphs. Layout collects
1236
1356
  * blocks from `content` under its own caps.
1357
+ *
1358
+ * @internal
1237
1359
  */
1238
1360
  interface TextboxStoryProjection {
1239
1361
  /** Canonical node id of the `w:txbxContent` element. */
@@ -1249,19 +1371,505 @@ interface TextboxStoryProjection {
1249
1371
  }>;
1250
1372
  /** `wps:bodyPr/@anchor` collapsed to the three renderable positions; default top. */
1251
1373
  readonly verticalAnchor: 'top' | 'center' | 'bottom';
1252
- /** Autofit child of `wps:bodyPr`; extent stays authoritative either way (diagnostic only). */
1374
+ /**
1375
+ * Autofit child of `wps:bodyPr`. `shape` on a top-level box sets {@link fitHeightToText};
1376
+ * `normal` (shrink text on overflow) keeps the extent.
1377
+ */
1253
1378
  readonly autofit: 'none' | 'shape' | 'normal';
1254
1379
  /**
1255
- * `wps:bodyPr/@wrap="none"` (VML `mso-wrap-style:none`): lines never wrap at the box edge,
1256
- * and the box takes the width of its widest line plus the insets. Absent for wrapped text.
1380
+ * `wps:bodyPr/@wrap="none"` (VML `mso-wrap-style:none`): lines never wrap at the box edge,
1381
+ * and the box takes the width of its widest line plus the insets. Absent for wrapped text.
1382
+ */
1383
+ readonly noWrap?: true;
1384
+ /** Solid fill of the hosting shape, painted behind the story; null for no fill. */
1385
+ readonly fillHex: string | null;
1386
+ /** Solid outline of the hosting shape; null for no outline. */
1387
+ readonly strokeHex: string | null;
1388
+ /** Outline width in EMU; 0 when absent. */
1389
+ readonly strokeWidthEmu: number;
1390
+ /** The shape around a legacy VML story; absent for an upright rectangle. */
1391
+ readonly legacyFrame?: TextboxLegacyFrame;
1392
+ /** The outline is centred on the shape edge, half outside the extent, as VML strokes it. */
1393
+ readonly strokeCentered?: true;
1394
+ /** VML `insetpen`: the outline lies inside the box and insets the text by its full width. */
1395
+ readonly strokeInset?: true;
1396
+ /**
1397
+ * VML `mso-fit-shape-to-text` or DrawingML `a:spAutoFit` on a top-level box: the box height
1398
+ * follows its text when laid out.
1399
+ */
1400
+ readonly fitHeightToText?: true;
1401
+ /**
1402
+ * The fit comes from DrawingML `a:spAutoFit`, which also fits an inline or turned box. A
1403
+ * legacy VML box that fits its text keeps its extent when inline or turned.
1404
+ */
1405
+ readonly drawingFit?: true;
1406
+ /** Outline dash pattern in multiples of the outline width; absent for solid. */
1407
+ readonly strokeDash?: readonly number[];
1408
+ /** How outline dashes end; absent for flat ends. */
1409
+ readonly strokeCap?: 'round' | 'square';
1410
+ /** The shape painted again under itself in one colour, offset on the page. */
1411
+ readonly shadow?: LegacyTextboxShadow;
1412
+ /**
1413
+ * The story is DrawingML shape text lowered to read-only paragraphs (a diagram's text): it
1414
+ * lays out without the document's styles and with the DrawingML line rule.
1415
+ */
1416
+ readonly drawingText?: true;
1417
+ /**
1418
+ * The drawing's `vectorShape` paints the box's fill, outline and effects; the story paints
1419
+ * only its text. The fill and outline fields stay for the text insets they give.
1420
+ */
1421
+ readonly chromeByVector?: true;
1422
+ }
1423
+ /** Shape geometry, turn and text flow of a text box: a legacy VML one, or a DrawingML one. */
1424
+ interface TextboxLegacyFrame {
1425
+ /** Space between the shape box and its text area, in EMU, before the story insets. */
1426
+ readonly textAreaEmu: Readonly<{
1427
+ top: number;
1428
+ right: number;
1429
+ bottom: number;
1430
+ left: number;
1431
+ }>;
1432
+ /** Outline geometry; null for a rectangle. */
1433
+ readonly outline: TextboxOutlineProjection | null;
1434
+ /** Clockwise shape turn in degrees, in [0, 360). */
1435
+ readonly rotationDegrees: number;
1436
+ /** The text turns with the shape; otherwise it stays upright in the turned box. */
1437
+ readonly textTurnsWithShape: boolean;
1438
+ /**
1439
+ * `vertical` runs lines top to bottom, stacked right to left; `verticalBottomToTop` runs
1440
+ * them bottom to top, stacked left to right.
1441
+ */
1442
+ readonly flow: 'horizontal' | 'vertical' | 'verticalBottomToTop';
1443
+ /** The shape paints and its text does not, as a text area some shapes write hides it. */
1444
+ readonly textHidden?: true;
1445
+ /** How the text area follows the box size, for a box that fits its text. */
1446
+ readonly textAreaRule?: TextboxTextAreaRule;
1447
+ }
1448
+
1449
+ /** An outer shadow: the shape's silhouette, offset, blurred and filled in one colour. */
1450
+ interface ShapeShadow {
1451
+ /** Offset of the silhouette, in the component's point space. */
1452
+ readonly dxEmu: number;
1453
+ /** Vertical offset of the silhouette, in the same units. */
1454
+ readonly dyEmu: number;
1455
+ /** Blur radius in the same units; 0 is a crisp silhouette. */
1456
+ readonly blurEmu: number;
1457
+ /** Validated six-character sRGB hex, without `#`. */
1458
+ readonly hex: string;
1459
+ /** Opacity, 0..1. */
1460
+ readonly alpha: number;
1461
+ }
1462
+ /**
1463
+ * The effect list a shape paints with, and the colour `phClr` stands for in it.
1464
+ *
1465
+ * @internal
1466
+ */
1467
+ interface ShapeEffectList {
1468
+ /** The shape's own `a:effectLst`, or the one in the theme effect style it references. */
1469
+ readonly effectLst: OoxmlElement;
1470
+ /** True when `effectLst` comes from the theme through the shape's `effectRef`. */
1471
+ readonly fromTheme: boolean;
1472
+ /** The colour of the `effectRef`, which `phClr` in a theme effect list stands for. */
1473
+ readonly placeholder?: ShapeColor;
1474
+ }
1475
+ /**
1476
+ * A mirror image below a picture that fades out downward (`a:reflection`), as the effects
1477
+ * renderer projects it for paint.
1478
+ *
1479
+ * @public
1480
+ */
1481
+ interface ShapeReflection {
1482
+ /** Opacity where the mirror image meets the shape. */
1483
+ readonly startAlpha: number;
1484
+ /** Opacity at `endPosition`; below it the mirror image is clear. */
1485
+ readonly endAlpha: number;
1486
+ /** Where the fade ends, as a share of the shape's height. */
1487
+ readonly endPosition: number;
1488
+ /** Gap between the shape and its mirror image. */
1489
+ readonly distanceEmu: number;
1490
+ /** Blur radius of the mirror image. */
1491
+ readonly blurEmu: number;
1492
+ }
1493
+
1494
+ /** Effects that change how a picture itself paints, beyond what its frame draws. @public */
1495
+ interface PictureFrameEffects {
1496
+ /** A mirror image of the picture below it. */
1497
+ readonly reflection?: ShapeReflection;
1498
+ /** The picture's edge fades out over this distance inside it. */
1499
+ readonly softEdgeEmu?: number;
1500
+ }
1501
+
1502
+ /** The rule a layout widens to its line. */
1503
+ interface HorizontalRuleProjection {
1504
+ /** `RRGGBB` of the bar, or of its upper band when shaded. */
1505
+ readonly fillHex: string;
1506
+ /** The lower band is light grey, as a groove. */
1507
+ readonly shaded: boolean;
1508
+ /** The bar's share of its line, in (0, 1]. */
1509
+ readonly widthFraction: number;
1510
+ /** A set width in points, which the line caps; absent for a share of the line. */
1511
+ readonly widthPt?: number;
1512
+ /** Where a bar shorter than its line sits on it. */
1513
+ readonly align: 'left' | 'center' | 'right';
1514
+ }
1515
+
1516
+ /** @internal */
1517
+ declare const CHART_GRAPHIC_DATA_URI = "http://schemas.openxmlformats.org/drawingml/2006/chart";
1518
+ /** @internal */
1519
+ declare const CHART_NAMESPACE_URI = "http://schemas.openxmlformats.org/drawingml/2006/chart";
1520
+ /** One resolved chart part. @internal */
1521
+ interface ChartPart {
1522
+ /** The `c:chartSpace` root. */
1523
+ readonly chartSpace: OoxmlElement;
1524
+ /** Canonical part name, for story ids and diagnostics. */
1525
+ readonly partName: string;
1526
+ /** The theme's Latin heading and body faces, which chart text takes through tokens. */
1527
+ readonly themeFaces: ChartThemeFaces;
1528
+ }
1529
+ /** @internal */
1530
+ interface ChartThemeFaces {
1531
+ readonly major: string | null;
1532
+ readonly minor: string | null;
1533
+ }
1534
+ /** Resolves the chart part behind one `c:chart` element of the owner story part. @internal */
1535
+ type ChartPartResolver = (chart: OoxmlElement) => ChartPart | null;
1536
+
1537
+ /** @internal */
1538
+ declare const CHARTEX_GRAPHIC_DATA_URI = "http://schemas.microsoft.com/office/drawing/2014/chartex";
1539
+ /** @internal */
1540
+ declare const CHARTEX_NAMESPACE_URI = "http://schemas.microsoft.com/office/drawing/2014/chartex";
1541
+ /** The namespace of chart style and colour style parts. @internal */
1542
+ declare const CHART_STYLE_NAMESPACE_URI = "http://schemas.microsoft.com/office/drawing/2012/chartStyle";
1543
+ /** One resolved chartex part. @internal */
1544
+ interface ChartexPart {
1545
+ /** The `cx:chartSpace` root. */
1546
+ readonly chartSpace: OoxmlElement;
1547
+ /** Canonical part name, for story ids and diagnostics. */
1548
+ readonly partName: string;
1549
+ /** The `cs:chartStyle` root the chartex part names, or null. */
1550
+ readonly style: OoxmlElement | null;
1551
+ /** The `cs:colorStyle` root the chartex part names, or null. */
1552
+ readonly colors: OoxmlElement | null;
1553
+ /** The theme's Latin heading and body faces, which chart text takes through tokens. */
1554
+ readonly themeFaces: ChartThemeFaces;
1555
+ }
1556
+ /** Resolves the chartex part behind one `cx:chart` element of the owner story part. @internal */
1557
+ type ChartexPartResolver = (chart: OoxmlElement) => ChartexPart | null;
1558
+
1559
+ /** One text box member of a drawing group. @internal */
1560
+ interface GroupTextboxProjection {
1561
+ /** Canonical node id of the member `wps:wsp`; namespaces the story's line ids. */
1562
+ readonly memberNodeId: string;
1563
+ /** The member box in the group's extent space, in EMU (origin at the extent's top-left). */
1564
+ readonly frameEmu: Readonly<{
1565
+ x: number;
1566
+ y: number;
1567
+ cx: number;
1568
+ cy: number;
1569
+ }>;
1570
+ /** The member's story, projected at the scaled member size. */
1571
+ readonly story: TextboxStoryProjection;
1572
+ /**
1573
+ * Clockwise turn of the member's text about the member box center, in degrees [0, 360):
1574
+ * the member's `rot`, plus 180 for `flipV`. `flipH` never mirrors the text.
1575
+ */
1576
+ readonly rotationDegrees: number;
1577
+ }
1578
+
1579
+ /** Opaque handle — bytes are reachable only through {@link mintValidatedImageBytes}. */
1580
+ interface ValidatedImageBytesHandle {
1581
+ readonly registryId: number;
1582
+ readonly resourceKey: string;
1583
+ readonly contentId: string;
1584
+ readonly generation: number;
1585
+ }
1586
+
1587
+ /**
1588
+ * The engine's trust-boundary caps: recursion depth, element counts, and the rest.
1589
+ *
1590
+ * A caller may LOWER any of these but never raise or disable one — an override of `Infinity`,
1591
+ * zero, a negative or `NaN` clamps into `(0, ceiling]` rather than turning the limit off. These
1592
+ * are security ceilings, not performance budgets.
1593
+ */
1594
+ interface ResourceLimits {
1595
+ /** Max nested-structure recursion (tables/shapes/SDT/groups). */
1596
+ readonly maxRecursionDepth: number;
1597
+ /** Max total parsed element count. */
1598
+ readonly maxElementCount: number;
1599
+ /** Max package part count. */
1600
+ readonly maxPartCount: number;
1601
+ /** Max total decompressed bytes (zip-bomb guard). */
1602
+ readonly maxDecompressedBytes: number;
1603
+ /** Max total compressed input bytes. */
1604
+ readonly maxCompressedBytes: number;
1605
+ /** Max decompressed:compressed ratio per entry. */
1606
+ readonly maxCompressionRatio: number;
1607
+ /** In-memory chunk budget for streaming/spooling. */
1608
+ readonly maxChunkBytes: number;
1609
+ /** Max pagination passes before non-convergence is declared. */
1610
+ readonly maxPaginationPasses: number;
1611
+ /** Max queued items in any bounded work queue. */
1612
+ readonly maxQueueDepth: number;
1613
+ }
1614
+ /** Non-disableable hard ceilings: no resolved limit may exceed these. */
1615
+ declare const HARD_CEILINGS: ResourceLimits;
1616
+ /** Finite defaults, all <= their hard ceiling. */
1617
+ declare const DEFAULT_LIMITS: ResourceLimits;
1618
+ /**
1619
+ * Resolve caller overrides into a frozen, always-finite limit set. Each value is
1620
+ * `min(override>0 ? override : default, ceiling)`. Infinity/0/negative/NaN can
1621
+ * never disable a limit — the hard ceiling always wins.
1622
+ */
1623
+ declare function resolveLimits(overrides?: Partial<ResourceLimits>): ResourceLimits;
1624
+ /** Bounded image decode limits (typed-drawings-and-images task 4). */
1625
+ /** Trust-boundary caps specific to image decoding and embedding. */
1626
+ interface ImageResourceLimits {
1627
+ readonly maxEncodedBytes: number;
1628
+ readonly maxDecodedBytes: number;
1629
+ readonly maxPixels: number;
1630
+ readonly maxDimension: number;
1631
+ readonly maxPolygonPoints: number;
1632
+ readonly maxExternalRedirects: number;
1633
+ }
1634
+ /** Image caps nothing can raise past. A caller's override clamps into these. */
1635
+ declare const IMAGE_RESOURCE_HARD_CEILINGS: ImageResourceLimits;
1636
+ /** The image caps in force when a host configures none. Conservative and finite. */
1637
+ declare const DEFAULT_IMAGE_RESOURCE_LIMITS: ImageResourceLimits;
1638
+ /** Resolve caller overrides into frozen image limits; hard ceilings cannot be raised. */
1639
+ declare function resolveImageResourceLimits(overrides?: Partial<ImageResourceLimits>): ImageResourceLimits;
1640
+
1641
+ /**
1642
+ * Raster media the decode port measures and any authoring path may write.
1643
+ *
1644
+ * BMP and WebP are here for the same reason the other three are: an `<img>` decodes them
1645
+ * natively, so they need a signature and a structural header and nothing else. BMP is what
1646
+ * older documents carry; WebP is what current Word writes.
1647
+ */
1648
+ type SupportedImageMime = 'image/png' | 'image/jpeg' | 'image/gif' | 'image/bmp' | 'image/webp';
1649
+ /**
1650
+ * Vector media painted straight from validated bytes. An `<img>` renders SVG in the
1651
+ * browser's secure static mode — no script, no external subresource loads — so there is
1652
+ * no decode step and no raster buffer sized by a file-supplied number.
1653
+ */
1654
+ type VectorImageMime = 'image/svg+xml';
1655
+ /** Every mime the painter can hand to an `<img>`. */
1656
+ type RenderableImageMime = SupportedImageMime | VectorImageMime;
1657
+ /**
1658
+ * Media kept in the package byte-for-byte that the painter cannot hand to an `<img>`.
1659
+ * A decode port may rasterize it; without one it paints as a labelled placeholder.
1660
+ */
1661
+ type PreservedImageMime = 'image/tiff' | 'image/x-emf' | 'image/x-wmf';
1662
+ /** @internal */
1663
+ type MetafileImageMime = 'image/x-emf' | 'image/x-wmf';
1664
+
1665
+ /**
1666
+ * What is known about one embedded image: validated, refused, or still decoding.
1667
+ *
1668
+ * Content type is a CLAIM. Signature sniffing, structural header validation and the decode port
1669
+ * are authoritative, and bytes that fail them never enter public state.
1670
+ */
1671
+ type ImageResourceState = {
1672
+ readonly kind: 'ready';
1673
+ readonly partName: string;
1674
+ readonly contentId: string;
1675
+ readonly resourceKey: string;
1676
+ readonly validatedHandle: ValidatedImageBytesHandle;
1677
+ readonly mime: RenderableImageMime;
1678
+ readonly pixelWidth: number;
1679
+ readonly pixelHeight: number;
1680
+ readonly dpiX: number;
1681
+ readonly dpiY: number;
1682
+ } | {
1683
+ readonly kind: 'unrenderable';
1684
+ readonly partName: string | null;
1685
+ readonly mime: RenderableImageMime | PreservedImageMime | 'unknown';
1686
+ readonly reason: 'unsupported-format' | 'non-picture-graphic' | 'signature-mismatch' | 'decode-failed' | 'resource-limit';
1687
+ } | {
1688
+ readonly kind: 'external';
1689
+ readonly relationshipId: string;
1690
+ readonly sinkSafe: boolean;
1691
+ } | {
1692
+ readonly kind: 'missing';
1693
+ readonly relationshipId: string;
1694
+ } | {
1695
+ readonly kind: 'pending';
1696
+ readonly resourceKey: string;
1697
+ };
1698
+ /**
1699
+ * The injected image decoder.
1700
+ *
1701
+ * A port rather than a direct `Image`/`createImageBitmap` call, so a worker or server runtime
1702
+ * supplies its own and the engine never reaches for a browser global.
1703
+ */
1704
+ interface ImageDecodePort {
1705
+ decode(bytes: Uint8Array, mime: SupportedImageMime, limits: ImageResourceLimits,
1706
+ /** Aborted when the owning lookup/session is disposed. */
1707
+ signal?: AbortSignal): Promise<Readonly<{
1708
+ pixelWidth: number;
1709
+ pixelHeight: number;
1710
+ dpiX: number;
1711
+ dpiY: number;
1712
+ }>>;
1713
+ /**
1714
+ * Optional conversion of media an `<img>` cannot render (EMF/WMF metafiles, TIFF) into a
1715
+ * renderable raster. The returned bytes are untrusted and re-enter the full raster
1716
+ * validation path (sniff, header, pixel caps, decode) before they can become a ready
1717
+ * resource. A null return declines the format and keeps the labelled placeholder; so does
1718
+ * a throw, as `decode-failed`.
1719
+ */
1720
+ convertPreserved?(bytes: Uint8Array, mime: PreservedImageMime, limits: ImageResourceLimits,
1721
+ /** Aborted when the owning lookup/session is disposed. */
1722
+ signal?: AbortSignal): Promise<Readonly<{
1723
+ bytes: Uint8Array;
1724
+ mime: SupportedImageMime;
1725
+ }> | null>;
1726
+ }
1727
+ /** Resolves a relationship id to a validated image resource, or reports why it could not. */
1728
+ interface ImageResourceLookup {
1729
+ readonly resolveEmbedded: (ownerPartName: string, relationshipId: string) => Promise<ImageResourceState>;
1730
+ readonly resolveLinked: (ownerPartName: string, relationshipId: string) => ImageResourceState;
1731
+ readonly resolveForProjection: (projection: DrawingProjection) => Promise<ImageResourceState>;
1732
+ readonly liveReferenceCount: (partName: string) => number;
1733
+ readonly dispose: () => void;
1734
+ }
1735
+ /** Maximum prefix inspected for SVG root detection (exported for bounded-scan tests). */
1736
+ declare const MAX_SVG_SNIFF_BYTES = 512;
1737
+ /** A raster header that passed structural validation: its real MIME type and pixel extent. */
1738
+ interface ValidatedRasterHeader {
1739
+ readonly pixelWidth: number;
1740
+ readonly pixelHeight: number;
1741
+ /** Horizontal physical density when bounded header metadata supplies it. */
1742
+ readonly dpiX?: number;
1743
+ /** Vertical physical density when bounded header metadata supplies it. */
1744
+ readonly dpiY?: number;
1745
+ }
1746
+ /** Bounded scan for an `<svg` document root (optional `<?xml` prolog only). */
1747
+ declare function hasBoundedSvgRoot(bytes: Uint8Array): boolean;
1748
+ /** Signature sniffing — authoritative over declared content type. */
1749
+ declare function sniffImageMime(bytes: Uint8Array): RenderableImageMime | PreservedImageMime | 'unknown';
1750
+ /** Structural PNG IHDR validation before decode. */
1751
+ declare function validatePngHeader(bytes: Uint8Array): ValidatedRasterHeader | null;
1752
+ /** Structural GIF logical screen descriptor validation before decode. */
1753
+ declare function validateGifHeader(bytes: Uint8Array): ValidatedRasterHeader | null;
1754
+ /** Bounded JPEG marker scan through the first supported SOF marker. */
1755
+ declare function validateJpegHeader(bytes: Uint8Array): ValidatedRasterHeader | null;
1756
+ /**
1757
+ * Intrinsic size of an SVG, resolved the way a browser sizes one: absolute `width`/`height`
1758
+ * first, then `viewBox` for the missing axis or ratio, then the CSS 300x150 default.
1759
+ *
1760
+ * This is metadata for insert and reset-to-natural-size only. Layout uses the authored
1761
+ * `wp:extent` and the browser rasterizes into that box, so nothing here sizes an allocation
1762
+ * and an out-of-range value is clamped rather than refused.
1763
+ */
1764
+ declare function resolveSvgIntrinsicSize(bytes: Uint8Array, limits: ImageResourceLimits): ValidatedRasterHeader | null;
1765
+ /**
1766
+ * Validate a raster image's header structurally and report its real MIME type and extent.
1767
+ *
1768
+ * Content type is a CLAIM; this is what makes it a fact. A file declaring `image/png` over JPEG
1769
+ * bytes is caught here rather than at decode.
1770
+ */
1771
+ declare function validateRasterHeader(bytes: Uint8Array, mime: SupportedImageMime): ValidatedRasterHeader | null;
1772
+ /** Package-wide live drawing references to a media part name. */
1773
+ declare function liveDrawingReferenceCount(pkg: OoxmlPackage, partName: string): number;
1774
+ /** How the image cache decodes, and what it will spend doing so. */
1775
+ interface CreateImageResourceCacheOptions {
1776
+ readonly limits?: Partial<ImageResourceLimits>;
1777
+ readonly decodePort: ImageDecodePort;
1778
+ }
1779
+ /**
1780
+ * Derived cache for one immutable package snapshot. Registry identity is
1781
+ * `(package snapshot, decodePort object, normalized limits)` — the first caller
1782
+ * never imposes its decoder or limits on later callers with different options.
1783
+ */
1784
+ declare function imageResourceLookupFor(pkg: OoxmlPackage, options: CreateImageResourceCacheOptions): ImageResourceLookup;
1785
+ /** @deprecated Prefer {@link imageResourceLookupFor} — registry binds cache to package identity. */
1786
+ /** Build the per-document image cache. Validated bytes only; refusals are remembered too. */
1787
+ declare function createImageResourceCache(initialPkg: OoxmlPackage, options: CreateImageResourceCacheOptions): ImageResourceLookup;
1788
+
1789
+ /**
1790
+ * Plain text fitted to a floating shape box, painted with one fill and an optional outline.
1791
+ *
1792
+ * @internal
1793
+ */
1794
+ interface LegacyTextArtProjection {
1795
+ readonly text: string;
1796
+ readonly fontFamily: string;
1797
+ readonly bold: boolean;
1798
+ readonly italic: boolean;
1799
+ /** `RRGGBB`, or null when the shape is not filled. */
1800
+ readonly fillHex: string | null;
1801
+ readonly fillAlpha: number;
1802
+ /** `RRGGBB`, or null when the shape is not stroked. */
1803
+ readonly strokeHex: string | null;
1804
+ readonly strokeAlpha: number;
1805
+ readonly strokeWidthPt: number;
1806
+ /** Clockwise rotation about the box centre, in [0, 360). */
1807
+ readonly rotationDegrees: number;
1808
+ /** `trim`: the ink fills the whole box, with no text inset. */
1809
+ readonly trim?: true;
1810
+ /**
1811
+ * Data an installed text art layout (`DrawingRenderers.textArtLayout`) reads: plain JSON
1812
+ * values, so equal projections stay equal. The engine never reads it.
1813
+ */
1814
+ readonly renderData?: unknown;
1815
+ }
1816
+
1817
+ /**
1818
+ * A chart plot type. A classic chart names it by its element without the `Chart` suffix:
1819
+ * column and bar charts are both `bar`, and `ofPie` is a pie-of-pie or bar-of-pie chart. A
1820
+ * chartex chart names it by its series layout: `waterfall`, `funnel`, `boxWhisker`,
1821
+ * `treemap`, `sunburst` and `regionMap` by their layout id, `histogram` for a clustered
1822
+ * column series, and `pareto` for a Pareto chart (a clustered column series with its
1823
+ * Pareto line).
1824
+ *
1825
+ * @public
1826
+ */
1827
+ type DrawingChartPlotType = 'area' | 'area3D' | 'bar' | 'bar3D' | 'bubble' | 'doughnut' | 'line' | 'line3D' | 'ofPie' | 'pie' | 'pie3D' | 'radar' | 'scatter' | 'stock' | 'surface' | 'surface3D' | 'waterfall' | 'funnel' | 'histogram' | 'pareto' | 'boxWhisker' | 'treemap' | 'sunburst' | 'regionMap';
1828
+ /**
1829
+ * How the page shows a chart: `chart` when the installed chart renderer draws it,
1830
+ * `fallback` when it shows the content saved in its `mc:AlternateContent` fallback (a
1831
+ * picture, a shape, a group or VML), and `placeholder` when it shows the labeled chart
1832
+ * placeholder.
1833
+ *
1834
+ * @public
1835
+ */
1836
+ type DrawingChartShownAs = 'chart' | 'fallback' | 'placeholder';
1837
+ /**
1838
+ * The title and plot types of a chart, as text, and how the page shows it.
1839
+ *
1840
+ * A drawing record carries it as `chart` whenever the drawing holds a chart whose chart part
1841
+ * can be read, in each of the three states that `shownAs` names. A visible drawing in a
1842
+ * skipped `mc:Choice` can retain a placeholder when its bounds are usable. Chart metadata
1843
+ * is present only when the projection resolves the chart part.
1844
+ *
1845
+ * @public
1846
+ */
1847
+ interface DrawingChartSummary {
1848
+ /**
1849
+ * The title the chart shows, as plain text: its own title, typed or from a cell, or the name
1850
+ * of its only series for an automatic title. Null when it shows none, and when a title with
1851
+ * no text of its own sits on a chart with several series. Runs of white space collapse to one
1852
+ * space, and the text is cut to at most 200 UTF-16 code units.
1853
+ *
1854
+ * A chartex chart (waterfall, funnel, histogram, Pareto, box and whisker, treemap, sunburst,
1855
+ * region map) reads only its own title text. Its title is null when the title element has
1856
+ * no text of its own and the chart shows its default caption, and a chartex chart never uses
1857
+ * a series name as an automatic title.
1257
1858
  */
1258
- readonly noWrap?: true;
1259
- /** Solid fill of the hosting shape, painted behind the story; null for no fill. */
1260
- readonly fillHex: string | null;
1261
- /** Solid outline of the hosting shape; null for no outline. */
1262
- readonly strokeHex: string | null;
1263
- /** Outline width in EMU; 0 when absent. */
1264
- readonly strokeWidthEmu: number;
1859
+ readonly title: string | null;
1860
+ /**
1861
+ * The chart's plot types in document order; a classic combination chart has more than one.
1862
+ * A chartex chart reports exactly one plot type, or none when its series layout is not one
1863
+ * of the chartex types.
1864
+ */
1865
+ readonly plotTypes: readonly DrawingChartPlotType[];
1866
+ /**
1867
+ * How the page shows the chart. The projection sets it from the renderers installed when
1868
+ * the document opened: `chart` (the record has a `vectorShape`), `fallback` (the record
1869
+ * paints the fallback content, such as a picture `resource`), or `placeholder` (the record
1870
+ * has `placeholderGraphicKind` `'chart'`). Read this field rather than the other fields.
1871
+ */
1872
+ readonly shownAs: DrawingChartShownAs;
1265
1873
  }
1266
1874
 
1267
1875
  /** Only generated, escaped SVG and relationship slots; never authored markup. */
@@ -1275,6 +1883,11 @@ interface LegacyGraphicProjection {
1275
1883
  readonly width: number;
1276
1884
  readonly height: number;
1277
1885
  readonly fragments: readonly LegacyGraphicFragment[];
1886
+ /**
1887
+ * The relationship of the one uncropped picture that fills the whole graphic, when that is
1888
+ * all it paints. The graphic then resolves to that picture, which every output can paint.
1889
+ */
1890
+ readonly soleImageRelationshipId?: string;
1278
1891
  }
1279
1892
 
1280
1893
  /** Picture color adjustments shared by projection, layout, and paint.
@@ -1289,26 +1902,6 @@ interface DrawingImageEffects {
1289
1902
  readonly bilevel?: number;
1290
1903
  }
1291
1904
 
1292
- /** One text box member of a drawing group. */
1293
- interface GroupTextboxProjection {
1294
- /** Canonical node id of the member `wps:wsp`; namespaces the story's line ids. */
1295
- readonly memberNodeId: string;
1296
- /** The member box in the group's extent space, in EMU (origin at the extent's top-left). */
1297
- readonly frameEmu: Readonly<{
1298
- x: number;
1299
- y: number;
1300
- cx: number;
1301
- cy: number;
1302
- }>;
1303
- /** The member's story, projected at the scaled member size. */
1304
- readonly story: TextboxStoryProjection;
1305
- /**
1306
- * Clockwise turn of the member's text about the member box center, in degrees [0, 360):
1307
- * the member's `rot`, plus 180 for `flipV`. `flipH` never mirrors the text.
1308
- */
1309
- readonly rotationDegrees: number;
1310
- }
1311
-
1312
1905
  /** The relationship namespace `r:id` lives in. */
1313
1906
  declare const OFFICE_RELATIONSHIP_NAMESPACE_URI = "http://schemas.openxmlformats.org/officeDocument/2006/relationships";
1314
1907
  /** The `Type` a hyperlink relationship declares. */
@@ -1402,6 +1995,8 @@ interface DrawingDiagnostic {
1402
1995
  readonly nodeId: string;
1403
1996
  readonly detail: string | null;
1404
1997
  }
1998
+ /** @internal */
1999
+ declare function isElement(node: OoxmlNode): node is OoxmlElement;
1405
2000
 
1406
2001
  /** One picture painted as a member of a drawing group. */
1407
2002
  interface GroupPictureProjection {
@@ -1428,6 +2023,48 @@ interface GroupPictureProjection {
1428
2023
  * MC payloads it cannot draw.
1429
2024
  */
1430
2025
  readonly alternateContent: boolean;
2026
+ /** The ring that clips the picture, in the unit square of the extent; absent for a box. */
2027
+ readonly clipUnit?: readonly Readonly<{
2028
+ x: number;
2029
+ y: number;
2030
+ }>[];
2031
+ }
2032
+
2033
+ /** @internal */
2034
+ declare const DIAGRAM_NAMESPACE_URI = "http://schemas.openxmlformats.org/drawingml/2006/diagram";
2035
+ /** The parts one diagram drawing renders from. @internal */
2036
+ interface DiagramParts {
2037
+ /** The data model root (`dgm:dataModel`): background and outline of the whole diagram. */
2038
+ readonly dataModel: OoxmlElement;
2039
+ /** The saved drawing root (`dsp:drawing`), or null when the package has none. */
2040
+ readonly drawing: OoxmlElement | null;
2041
+ /** Canonical name of the saved drawing part, for diagnostics and cache keys. */
2042
+ readonly drawingPartName: string | null;
2043
+ /** Canonical name of the data model part. */
2044
+ readonly dataPartName: string;
2045
+ /** The layout definition root (`dgm:layoutDef`), or null. */
2046
+ readonly layoutDef: OoxmlElement | null;
2047
+ /** The quick style root (`dgm:styleDef`), or null. */
2048
+ readonly styleDef: OoxmlElement | null;
2049
+ /** The colours root (`dgm:colorsDef`), or null. */
2050
+ readonly colorsDef: OoxmlElement | null;
2051
+ /** The theme's body (minor) Latin font, which diagram text uses unless it names one. */
2052
+ readonly fontFamily: string;
2053
+ }
2054
+ /**
2055
+ * Resolves the parts behind one `dgm:relIds` element of the owner story part. The same
2056
+ * resolver answers the chart part behind a `c:chart` element through `chart`, so the drawing
2057
+ * projection threads one resolver for every part-backed graphic.
2058
+ *
2059
+ * @internal
2060
+ */
2061
+ interface DiagramPartResolver {
2062
+ /** The diagram parts behind one `dgm:relIds` element, or null when they do not resolve. */
2063
+ (relIds: OoxmlElement): DiagramParts | null;
2064
+ /** The chart part behind one `c:chart` element of the same story part. */
2065
+ readonly chart?: ChartPartResolver;
2066
+ /** The chartex part behind one `cx:chart` element of the same story part. */
2067
+ readonly chartex?: ChartexPartResolver;
1431
2068
  }
1432
2069
 
1433
2070
  /**
@@ -1542,290 +2179,106 @@ interface DrawingProjection {
1542
2179
  readonly vectorShape: VectorShapeProjection | null;
1543
2180
  /** The picture member of a `wpg:wgp` group; `picture` stays null for a group. */
1544
2181
  readonly groupPicture: GroupPictureProjection | null;
2182
+ /**
2183
+ * The group's other picture members, in document order. Each paints above `groupPicture`
2184
+ * and the ones before it, and below `vectorShape`. Absent when the group has one picture.
2185
+ */
2186
+ readonly groupPictureLayers?: readonly GroupPictureProjection[];
1545
2187
  readonly textboxStory: TextboxStoryProjection | null;
1546
2188
  /** Text box members of a `wpg:wgp` group, laid out read-only; absent when none has text. */
1547
2189
  readonly groupTextboxes?: readonly GroupTextboxProjection[];
2190
+ /** The title and plot types of a chart: rendered, shown by its fallback, or a placeholder. */
2191
+ readonly chartSummary?: DrawingChartSummary;
2192
+ /**
2193
+ * The picture saved in the `mc:Fallback` of a chart's `mc:AlternateContent`, whichever
2194
+ * branch the page shows, for an output that exports a chart as its saved picture. Absent
2195
+ * when the fallback is not a picture that paints.
2196
+ */
2197
+ readonly chartFallbackPicture?: PictureProjection;
1548
2198
  /** Read-only preview of the supported native VML subset; the canonical XML is untouched. */
1549
2199
  readonly legacyGraphic?: LegacyGraphicProjection;
1550
2200
  /** Floating VML text art (a text watermark), fitted to the box by layout. */
1551
2201
  readonly textArt?: LegacyTextArtProjection;
2202
+ /** A horizontal rule; layout widens it to its line and gives it its `vectorShape`. */
2203
+ readonly horizontalRule?: HorizontalRuleProjection;
1552
2204
  readonly locks: DrawingLocks;
1553
2205
  readonly effects: DrawingImageEffects;
1554
2206
  readonly compatibilityBranchNodeId: string | null;
1555
2207
  readonly diagnostics: readonly DrawingDiagnostic[];
1556
- /** Layout-only wrap area of an MC payload that cannot paint (`wrapFootprintProjection`). */
1557
- readonly footprintOnly?: true;
1558
- }
1559
- interface DrawingAccessibility {
1560
- /**
1561
- * The record takes part in layout only, for example the wrap area of a payload that cannot
1562
- * paint. Outputs must not paint, hit-test, select, link, or export it.
1563
- */
1564
- readonly hidden: boolean;
1565
- readonly decorative: boolean;
1566
- readonly label: string | null;
1567
- }
1568
- interface DrawingPositionProjection {
1569
- readonly simplePosition: Readonly<{
1570
- xEmu: number;
1571
- yEmu: number;
1572
- }>;
1573
- readonly horizontal: Readonly<{
1574
- relativeFrom: DrawingHorizontalReferenceFrame;
1575
- align: string | null;
1576
- offsetEmu: number | null;
1577
- }>;
1578
- readonly vertical: Readonly<{
1579
- relativeFrom: DrawingVerticalReferenceFrame;
1580
- align: string | null;
1581
- offsetEmu: number | null;
1582
- }>;
1583
- }
1584
- interface DrawingWrapProjection {
1585
- readonly element: DrawingWrapElement;
1586
- readonly textSide: 'bothSides' | 'left' | 'right' | 'largest';
1587
- readonly distancesEmu: Readonly<{
1588
- top: number;
1589
- right: number;
1590
- bottom: number;
1591
- left: number;
1592
- }>;
1593
- readonly polygon: readonly Readonly<{
1594
- x: number;
1595
- y: number;
1596
- }>[];
1597
- }
1598
- interface PictureProjection {
1599
- readonly embeddedRelationshipId: string | null;
1600
- readonly linkedRelationshipId: string | null;
1601
- readonly crop: SourceCrop;
1602
- readonly fillMode: 'stretch' | 'tile';
1603
- readonly transform: DrawingTransform;
1604
- readonly presetGeometry: string | null;
1605
- }
1606
- /**
1607
- * Project one `w:drawing` into the resolved shape layout and chrome read.
1608
- *
1609
- * Bounded throughout: extents, crops and nesting all come from a file. Returns a projection that
1610
- * reports `hidden` and its locks rather than throwing, so an unusable drawing degrades to
1611
- * something the surface can skip.
1612
- */
1613
- declare function projectDrawing(drawing: OoxmlDrawingNode, context: Readonly<{
1614
- ownerPartName: string;
1615
- supportedMcRequires: ReadonlySet<string>;
1616
- limits: DrawingProjectionLimits;
1617
- namespaceScope?: ReadonlyMap<string, string>;
1618
- resolveRelationship?: RelationshipTargetResolver;
1619
- resolveSchemeColor?: ShapeSchemeColorResolver;
1620
- resolveStyleMatrixReference?: ShapeStyleMatrixResolver;
1621
- }>): DrawingProjection | null;
1622
-
1623
- /** Opaque handle — bytes are reachable only through {@link mintValidatedImageBytes}. */
1624
- interface ValidatedImageBytesHandle {
1625
- readonly registryId: number;
1626
- readonly resourceKey: string;
1627
- readonly contentId: string;
1628
- readonly generation: number;
1629
- }
1630
-
1631
- /**
1632
- * The engine's trust-boundary caps: recursion depth, element counts, and the rest.
1633
- *
1634
- * A caller may LOWER any of these but never raise or disable one — an override of `Infinity`,
1635
- * zero, a negative or `NaN` clamps into `(0, ceiling]` rather than turning the limit off. These
1636
- * are security ceilings, not performance budgets.
1637
- */
1638
- interface ResourceLimits {
1639
- /** Max nested-structure recursion (tables/shapes/SDT/groups). */
1640
- readonly maxRecursionDepth: number;
1641
- /** Max total parsed element count. */
1642
- readonly maxElementCount: number;
1643
- /** Max package part count. */
1644
- readonly maxPartCount: number;
1645
- /** Max total decompressed bytes (zip-bomb guard). */
1646
- readonly maxDecompressedBytes: number;
1647
- /** Max total compressed input bytes. */
1648
- readonly maxCompressedBytes: number;
1649
- /** Max decompressed:compressed ratio per entry. */
1650
- readonly maxCompressionRatio: number;
1651
- /** In-memory chunk budget for streaming/spooling. */
1652
- readonly maxChunkBytes: number;
1653
- /** Max pagination passes before non-convergence is declared. */
1654
- readonly maxPaginationPasses: number;
1655
- /** Max queued items in any bounded work queue. */
1656
- readonly maxQueueDepth: number;
1657
- }
1658
- /** Non-disableable hard ceilings: no resolved limit may exceed these. */
1659
- declare const HARD_CEILINGS: ResourceLimits;
1660
- /** Finite defaults, all <= their hard ceiling. */
1661
- declare const DEFAULT_LIMITS: ResourceLimits;
1662
- /**
1663
- * Resolve caller overrides into a frozen, always-finite limit set. Each value is
1664
- * `min(override>0 ? override : default, ceiling)`. Infinity/0/negative/NaN can
1665
- * never disable a limit — the hard ceiling always wins.
1666
- */
1667
- declare function resolveLimits(overrides?: Partial<ResourceLimits>): ResourceLimits;
1668
- /** Bounded image decode limits (typed-drawings-and-images task 4). */
1669
- /** Trust-boundary caps specific to image decoding and embedding. */
1670
- interface ImageResourceLimits {
1671
- readonly maxEncodedBytes: number;
1672
- readonly maxDecodedBytes: number;
1673
- readonly maxPixels: number;
1674
- readonly maxDimension: number;
1675
- readonly maxPolygonPoints: number;
1676
- readonly maxExternalRedirects: number;
1677
- }
1678
- /** Image caps nothing can raise past. A caller's override clamps into these. */
1679
- declare const IMAGE_RESOURCE_HARD_CEILINGS: ImageResourceLimits;
1680
- /** The image caps in force when a host configures none. Conservative and finite. */
1681
- declare const DEFAULT_IMAGE_RESOURCE_LIMITS: ImageResourceLimits;
1682
- /** Resolve caller overrides into frozen image limits; hard ceilings cannot be raised. */
1683
- declare function resolveImageResourceLimits(overrides?: Partial<ImageResourceLimits>): ImageResourceLimits;
1684
-
1685
- /**
1686
- * Raster media the decode port measures and any authoring path may write.
1687
- *
1688
- * BMP and WebP are here for the same reason the other three are: an `<img>` decodes them
1689
- * natively, so they need a signature and a structural header and nothing else. BMP is what
1690
- * older documents carry; WebP is what current Word writes.
1691
- */
1692
- type SupportedImageMime = 'image/png' | 'image/jpeg' | 'image/gif' | 'image/bmp' | 'image/webp';
1693
- /**
1694
- * Vector media painted straight from validated bytes. An `<img>` renders SVG in the
1695
- * browser's secure static mode — no script, no external subresource loads — so there is
1696
- * no decode step and no raster buffer sized by a file-supplied number.
1697
- */
1698
- type VectorImageMime = 'image/svg+xml';
1699
- /** Every mime the painter can hand to an `<img>`. */
1700
- type RenderableImageMime = SupportedImageMime | VectorImageMime;
1701
- /**
1702
- * Media kept in the package byte-for-byte that the painter cannot hand to an `<img>`.
1703
- * A decode port may rasterize it; without one it paints as a labelled placeholder.
1704
- */
1705
- type PreservedImageMime = 'image/tiff' | 'image/x-emf' | 'image/x-wmf';
1706
- /**
1707
- * What is known about one embedded image: validated, refused, or still decoding.
1708
- *
1709
- * Content type is a CLAIM. Signature sniffing, structural header validation and the decode port
1710
- * are authoritative, and bytes that fail them never enter public state.
1711
- */
1712
- type ImageResourceState = {
1713
- readonly kind: 'ready';
1714
- readonly partName: string;
1715
- readonly contentId: string;
1716
- readonly resourceKey: string;
1717
- readonly validatedHandle: ValidatedImageBytesHandle;
1718
- readonly mime: RenderableImageMime;
1719
- readonly pixelWidth: number;
1720
- readonly pixelHeight: number;
1721
- readonly dpiX: number;
1722
- readonly dpiY: number;
1723
- } | {
1724
- readonly kind: 'unrenderable';
1725
- readonly partName: string | null;
1726
- readonly mime: RenderableImageMime | PreservedImageMime | 'unknown';
1727
- readonly reason: 'unsupported-format' | 'non-picture-graphic' | 'signature-mismatch' | 'decode-failed' | 'resource-limit';
1728
- } | {
1729
- readonly kind: 'external';
1730
- readonly relationshipId: string;
1731
- readonly sinkSafe: boolean;
1732
- } | {
1733
- readonly kind: 'missing';
1734
- readonly relationshipId: string;
1735
- } | {
1736
- readonly kind: 'pending';
1737
- readonly resourceKey: string;
1738
- };
1739
- /**
1740
- * The injected image decoder.
1741
- *
1742
- * A port rather than a direct `Image`/`createImageBitmap` call, so a worker or server runtime
1743
- * supplies its own and the engine never reaches for a browser global.
1744
- */
1745
- interface ImageDecodePort {
1746
- decode(bytes: Uint8Array, mime: SupportedImageMime, limits: ImageResourceLimits,
1747
- /** Aborted when the owning lookup/session is disposed. */
1748
- signal?: AbortSignal): Promise<Readonly<{
1749
- pixelWidth: number;
1750
- pixelHeight: number;
1751
- dpiX: number;
1752
- dpiY: number;
1753
- }>>;
2208
+ /** Layout-only wrap area of an MC payload that cannot paint (`wrapFootprintProjection`). */
2209
+ readonly footprintOnly?: true;
2210
+ }
2211
+ interface DrawingAccessibility {
1754
2212
  /**
1755
- * Optional conversion of media an `<img>` cannot render (EMF/WMF metafiles, TIFF) into a
1756
- * renderable raster. The returned bytes are untrusted and re-enter the full raster
1757
- * validation path (sniff, header, pixel caps, decode) before they can become a ready
1758
- * resource. A null return declines the format and keeps the labelled placeholder; so does
1759
- * a throw, as `decode-failed`.
2213
+ * The record takes part in layout only, for example the wrap area of a payload that cannot
2214
+ * paint. Outputs must not paint, hit-test, select, link, or export it.
1760
2215
  */
1761
- convertPreserved?(bytes: Uint8Array, mime: PreservedImageMime, limits: ImageResourceLimits,
1762
- /** Aborted when the owning lookup/session is disposed. */
1763
- signal?: AbortSignal): Promise<Readonly<{
1764
- bytes: Uint8Array;
1765
- mime: SupportedImageMime;
1766
- }> | null>;
2216
+ readonly hidden: boolean;
2217
+ readonly decorative: boolean;
2218
+ readonly label: string | null;
1767
2219
  }
1768
- /** Resolves a relationship id to a validated image resource, or reports why it could not. */
1769
- interface ImageResourceLookup {
1770
- readonly resolveEmbedded: (ownerPartName: string, relationshipId: string) => Promise<ImageResourceState>;
1771
- readonly resolveLinked: (ownerPartName: string, relationshipId: string) => ImageResourceState;
1772
- readonly resolveForProjection: (projection: DrawingProjection) => Promise<ImageResourceState>;
1773
- readonly liveReferenceCount: (partName: string) => number;
1774
- readonly dispose: () => void;
2220
+ interface DrawingPositionProjection {
2221
+ readonly simplePosition: Readonly<{
2222
+ xEmu: number;
2223
+ yEmu: number;
2224
+ }>;
2225
+ readonly horizontal: Readonly<{
2226
+ relativeFrom: DrawingHorizontalReferenceFrame;
2227
+ align: string | null;
2228
+ offsetEmu: number | null;
2229
+ }>;
2230
+ readonly vertical: Readonly<{
2231
+ relativeFrom: DrawingVerticalReferenceFrame;
2232
+ align: string | null;
2233
+ offsetEmu: number | null;
2234
+ }>;
1775
2235
  }
1776
- /** Maximum prefix inspected for SVG root detection (exported for bounded-scan tests). */
1777
- declare const MAX_SVG_SNIFF_BYTES = 512;
1778
- /** A raster header that passed structural validation: its real MIME type and pixel extent. */
1779
- interface ValidatedRasterHeader {
1780
- readonly pixelWidth: number;
1781
- readonly pixelHeight: number;
1782
- /** Horizontal physical density when bounded header metadata supplies it. */
1783
- readonly dpiX?: number;
1784
- /** Vertical physical density when bounded header metadata supplies it. */
1785
- readonly dpiY?: number;
2236
+ interface DrawingWrapProjection {
2237
+ readonly element: DrawingWrapElement;
2238
+ readonly textSide: 'bothSides' | 'left' | 'right' | 'largest';
2239
+ readonly distancesEmu: Readonly<{
2240
+ top: number;
2241
+ right: number;
2242
+ bottom: number;
2243
+ left: number;
2244
+ }>;
2245
+ readonly polygon: readonly Readonly<{
2246
+ x: number;
2247
+ y: number;
2248
+ }>[];
1786
2249
  }
1787
- /** Bounded scan for an `<svg` document root (optional `<?xml` prolog only). */
1788
- declare function hasBoundedSvgRoot(bytes: Uint8Array): boolean;
1789
- /** Signature sniffing — authoritative over declared content type. */
1790
- declare function sniffImageMime(bytes: Uint8Array): RenderableImageMime | PreservedImageMime | 'unknown';
1791
- /** Structural PNG IHDR validation before decode. */
1792
- declare function validatePngHeader(bytes: Uint8Array): ValidatedRasterHeader | null;
1793
- /** Structural GIF logical screen descriptor validation before decode. */
1794
- declare function validateGifHeader(bytes: Uint8Array): ValidatedRasterHeader | null;
1795
- /** Bounded JPEG marker scan through the first supported SOF marker. */
1796
- declare function validateJpegHeader(bytes: Uint8Array): ValidatedRasterHeader | null;
1797
- /**
1798
- * Intrinsic size of an SVG, resolved the way a browser sizes one: absolute `width`/`height`
1799
- * first, then `viewBox` for the missing axis or ratio, then the CSS 300x150 default.
1800
- *
1801
- * This is metadata for insert and reset-to-natural-size only. Layout uses the authored
1802
- * `wp:extent` and the browser rasterizes into that box, so nothing here sizes an allocation
1803
- * and an out-of-range value is clamped rather than refused.
1804
- */
1805
- declare function resolveSvgIntrinsicSize(bytes: Uint8Array, limits: ImageResourceLimits): ValidatedRasterHeader | null;
1806
- /**
1807
- * Validate a raster image's header structurally and report its real MIME type and extent.
1808
- *
1809
- * Content type is a CLAIM; this is what makes it a fact. A file declaring `image/png` over JPEG
1810
- * bytes is caught here rather than at decode.
1811
- */
1812
- declare function validateRasterHeader(bytes: Uint8Array, mime: SupportedImageMime): ValidatedRasterHeader | null;
1813
- /** Package-wide live drawing references to a media part name. */
1814
- declare function liveDrawingReferenceCount(pkg: OoxmlPackage, partName: string): number;
1815
- /** How the image cache decodes, and what it will spend doing so. */
1816
- interface CreateImageResourceCacheOptions {
1817
- readonly limits?: Partial<ImageResourceLimits>;
1818
- readonly decodePort: ImageDecodePort;
2250
+ interface PictureProjection {
2251
+ readonly embeddedRelationshipId: string | null;
2252
+ readonly linkedRelationshipId: string | null;
2253
+ readonly crop: SourceCrop;
2254
+ readonly fillMode: 'stretch' | 'tile';
2255
+ readonly transform: DrawingTransform;
2256
+ readonly presetGeometry: string | null;
2257
+ /** The clip ring of non-rectangular geometry, in the unit square of the extent. */
2258
+ readonly clipUnit?: readonly Readonly<{
2259
+ x: number;
2260
+ y: number;
2261
+ }>[];
2262
+ /** Effects that change how the picture itself paints: a reflection, soft edges. */
2263
+ readonly frameEffects?: PictureFrameEffects;
1819
2264
  }
1820
2265
  /**
1821
- * Derived cache for one immutable package snapshot. Registry identity is
1822
- * `(package snapshot, decodePort object, normalized limits)` — the first caller
1823
- * never imposes its decoder or limits on later callers with different options.
2266
+ * Project one `w:drawing` into the resolved shape layout and chrome read.
2267
+ *
2268
+ * Bounded throughout: extents, crops and nesting all come from a file. Returns a projection that
2269
+ * reports `hidden` and its locks rather than throwing, so an unusable drawing degrades to
2270
+ * something the surface can skip.
1824
2271
  */
1825
- declare function imageResourceLookupFor(pkg: OoxmlPackage, options: CreateImageResourceCacheOptions): ImageResourceLookup;
1826
- /** @deprecated Prefer {@link imageResourceLookupFor} — registry binds cache to package identity. */
1827
- /** Build the per-document image cache. Validated bytes only; refusals are remembered too. */
1828
- declare function createImageResourceCache(initialPkg: OoxmlPackage, options: CreateImageResourceCacheOptions): ImageResourceLookup;
2272
+ declare function projectDrawing(drawing: OoxmlDrawingNode, context: Readonly<{
2273
+ ownerPartName: string;
2274
+ supportedMcRequires: ReadonlySet<string>;
2275
+ limits: DrawingProjectionLimits;
2276
+ namespaceScope?: ReadonlyMap<string, string>;
2277
+ resolveRelationship?: RelationshipTargetResolver;
2278
+ resolveSchemeColor?: ShapeSchemeColorResolver;
2279
+ resolveStyleMatrixReference?: ShapeStyleMatrixResolver;
2280
+ resolveDiagramParts?: DiagramPartResolver;
2281
+ }>): DrawingProjection | null;
1829
2282
 
1830
2283
  /** Caps applied while loading a package: zip, XML, part count and relationship count. */
1831
2284
  interface OoxmlPackageLimits {
@@ -2286,6 +2739,53 @@ declare function withoutBookmarkInPart(pkg: OoxmlPackage, partName: string, name
2286
2739
  */
2287
2740
  declare function enclosedBookmarkDeletions(part: OoxmlPart, from: BookmarkOpPosition, to: BookmarkOpPosition, order: readonly string[]): readonly DeleteBookmarkOp[];
2288
2741
 
2742
+ interface InsertTableOp {
2743
+ /**
2744
+ * Insert a fresh empty table immediately before a block-level paragraph.
2745
+ *
2746
+ * Before, never after, so the anchor paragraph stays as the block that follows the
2747
+ * table: a `w:tbl` is not a valid final child of a story container, and two tables
2748
+ * that end up adjacent merge into one when the file is reopened. When the anchor's
2749
+ * previous sibling is already a table, a separating empty paragraph is authored with
2750
+ * it for the same reason.
2751
+ */
2752
+ readonly op: 'insertTable';
2753
+ readonly beforeParagraphId: string;
2754
+ readonly rows: number;
2755
+ readonly cols: number;
2756
+ /** Width of every grid column, in twips. The caller divides the content width. */
2757
+ readonly columnWidthTwips: number;
2758
+ /** Propose the complete table through native row and cell insertion revisions. */
2759
+ readonly revision?: RevisionAttributionInput;
2760
+ }
2761
+ interface MoveTableOp {
2762
+ /**
2763
+ * Move a table to just before another block of the same parent, keeping every node id.
2764
+ *
2765
+ * Ids are kept so a peer's concurrent edit inside the table survives the move; a
2766
+ * delete and re-insert would mint a new table and drop it. An empty paragraph is minted
2767
+ * on either side that would otherwise touch another table, for the reason in
2768
+ * {@link InsertTableOp}. No tracked form exists, so suggesting mode refuses it.
2769
+ */
2770
+ readonly op: 'moveTable';
2771
+ readonly tableId: string;
2772
+ readonly beforeBlockId: string;
2773
+ }
2774
+ interface InsertParagraphBesideTableOp {
2775
+ /**
2776
+ * Insert a paragraph holding `text` just before or just after a block-level table.
2777
+ *
2778
+ * For a table that opens or closes its story, where no paragraph of the same parent sits
2779
+ * on that side to split.
2780
+ */
2781
+ readonly op: 'insertParagraphBesideTable';
2782
+ readonly tableId: string;
2783
+ readonly where: 'before' | 'after';
2784
+ readonly text: string;
2785
+ /** Propose the paragraph and its text as a tracked insertion. */
2786
+ readonly revision?: RevisionAttributionInput;
2787
+ }
2788
+
2289
2789
  /** The `w15` namespace: `commentsExtended.xml` — thread parent and resolved state. */
2290
2790
  declare const W15_NAMESPACE_URI = "http://schemas.microsoft.com/office/word/2012/wordml";
2291
2791
  /** A position in one story: a paragraph node id plus a UTF-16 offset inside it. */
@@ -2933,13 +3433,25 @@ interface RevisionBatchEntry {
2933
3433
  /** Why a requested decision remains pending. @public */
2934
3434
  type RevisionBatchSkipReason = 'unsupported-revision' | 'incomplete-group' | 'retained-structure' | 'unknown-revision';
2935
3435
  /**
2936
- * Why an `unsupported-revision` skip happened: a refused site, a formatting change whose earlier
2937
- * properties were not recorded so it cannot be rejected, a read-only review item, or a change
2938
- * with no sites in the part.
3436
+ * The structure behind a skip.
3437
+ *
3438
+ * For `unsupported-revision`: a refused site, a formatting change whose earlier properties were
3439
+ * not recorded so it cannot be rejected, a read-only review item, a change with no sites, a
3440
+ * change a content control lock keeps (`locked-content`), or a change in a data-bound content
3441
+ * control (`bound-content`). The last two have their own codes, `review.locked-content` and
3442
+ * `review.bound-content`; `reviewCodeOfSkip` reads them.
3443
+ *
3444
+ * For `incomplete-group`, the change the decision would also decide: the other half of a move or
3445
+ * merge (`paired-change`), a change inside content the decision removes (`removed-content`) or
3446
+ * inside properties a reject replaces (`replaced-properties`), a change the decision would empty
3447
+ * (`emptied-change`), a change that encloses the selected one (`enclosing-change`), or another
3448
+ * site of a group the planner keeps together (`grouped-change`).
3449
+ *
3450
+ * For `retained-structure`: a row kept for the table nested in it (`nested-table`).
2939
3451
  *
2940
3452
  * @public
2941
3453
  */
2942
- type RevisionBatchSkipDetail = RevisionSiteRefusal | 'unrecorded-properties' | 'read-only' | 'no-sites';
3454
+ type RevisionBatchSkipDetail = RevisionSiteRefusal | 'unrecorded-properties' | 'read-only' | 'no-sites' | 'paired-change' | 'removed-content' | 'replaced-properties' | 'emptied-change' | 'enclosing-change' | 'grouped-change' | 'nested-table' | 'locked-content' | 'bound-content';
2943
3455
  /** Outcome of one selected-set decision. Counts refer to review decisions, not XML markers. @public */
2944
3456
  interface RevisionBatchResult {
2945
3457
  readonly resolved: readonly RevisionBatchEntry[];
@@ -2947,7 +3459,10 @@ interface RevisionBatchResult {
2947
3459
  readonly key: string;
2948
3460
  readonly reason: RevisionBatchSkipReason;
2949
3461
  readonly revision?: RevisionBatchEntry;
2950
- /** For `unsupported-revision`, which engine condition refused it. */
3462
+ /**
3463
+ * The condition or structure behind the skip, such as `locked-content` or `paired-change`.
3464
+ * `reviewCodeOfSkip` turns the reason and the detail into one review code.
3465
+ */
2951
3466
  readonly detail?: RevisionBatchSkipDetail;
2952
3467
  }[];
2953
3468
  /** All pending decisions in the addressed scope, including excluded and unsupported changes. */
@@ -2964,9 +3479,16 @@ interface RevisionBatchResult {
2964
3479
  */
2965
3480
  declare function planRevisionBatch(part: OoxmlPart, action: 'accept' | 'reject', keys?: readonly string[], scopeRoot?: OoxmlNode, options?: {
2966
3481
  readonly countRemaining?: boolean;
3482
+ /**
3483
+ * A decision on these changes themselves, not a filtered selection: the other half of a
3484
+ * selected move resolves with it, and changes inside content it removes go along.
3485
+ */
3486
+ readonly explicit?: boolean;
2967
3487
  }): {
2968
3488
  ops: readonly TreeDocOp[];
2969
3489
  result: RevisionBatchResult;
3490
+ /** Keys of unselected changes the decision removes with their content. Explicit only. */
3491
+ swept?: readonly string[];
2970
3492
  };
2971
3493
 
2972
3494
  /** Why a requested change keeps its attribution. @public */
@@ -3288,6 +3810,8 @@ interface RunFormatting {
3288
3810
  * formatting resolved together — not the gap the page finally draws. The two differ for a
3289
3811
  * paragraph carrying `w:beforeAutospacing`, where Word substitutes its own value and
3290
3812
  * ignores the measurement, and again where two paragraphs collapse their adjacent spacing.
3813
+ * A document that sets `w:doNotUseHTMLParagraphAutoSpacing` does neither: the measurement
3814
+ * stays, and adjacent spacing adds up.
3291
3815
  * Absent when the selection's paragraphs disagree or no level states it.
3292
3816
  */
3293
3817
  readonly spaceBeforePt?: number;
@@ -3633,48 +4157,174 @@ interface Watermark {
3633
4157
  /** How a text watermark crosses the page. */
3634
4158
  type WatermarkLayout = 'diagonal' | 'horizontal';
3635
4159
  /**
3636
- * The watermark a document shows, as `Editor.getWatermark()` reads it.
4160
+ * The watermark a document shows, as `Editor.getWatermark()` reads it.
4161
+ *
4162
+ * The text fields are present for a text watermark, `washout` for a picture watermark.
4163
+ */
4164
+ interface WatermarkState {
4165
+ readonly kind: 'text' | 'image';
4166
+ readonly text?: string;
4167
+ readonly fontFamily?: string;
4168
+ /** Null for Auto size. */
4169
+ readonly fontSizePt?: number | null;
4170
+ readonly bold?: boolean;
4171
+ readonly italic?: boolean;
4172
+ /** `RRGGBB`. */
4173
+ readonly color?: string;
4174
+ readonly transparency?: number;
4175
+ readonly layout?: WatermarkLayout;
4176
+ readonly washout?: boolean;
4177
+ }
4178
+ /** A size in EMUs, the unit DrawingML stores extents in. 914400 EMU = 1 inch. */
4179
+ interface Extent {
4180
+ readonly widthEmu: number;
4181
+ readonly heightEmu: number;
4182
+ }
4183
+ /** A font the document names, and whether its bytes travel inside the package. */
4184
+ interface FontDefinition {
4185
+ readonly family: string;
4186
+ readonly embedded: boolean;
4187
+ }
4188
+ /** An axis-aligned rectangle in points, the unit layout works in throughout. */
4189
+ interface Rect {
4190
+ readonly x: number;
4191
+ readonly y: number;
4192
+ readonly width: number;
4193
+ readonly height: number;
4194
+ }
4195
+ /** A position in points. */
4196
+ interface Point {
4197
+ readonly x: number;
4198
+ readonly y: number;
4199
+ }
4200
+ /** What every subscription returns. Calling it twice is safe. */
4201
+ type Unsubscribe = () => void;
4202
+
4203
+ /**
4204
+ * Why an op was refused.
4205
+ *
4206
+ * `not-adjacent-siblings` is the notable one: a join across table cells is refused rather than
4207
+ * silently merging content out of the cell that owned it.
4208
+ */
4209
+ type TreeOpRejection = 'unknown-op' | 'unknown-paragraph' | 'not-a-paragraph' | 'offset-out-of-range' | 'invalid-range' | 'not-a-list-paragraph' | 'splits-surrogate-pair' | 'invalid-text' | 'unsupported-property' | 'invalid-property-value' | 'not-adjacent-siblings'
4210
+ /**
4211
+ * The addressed position is strictly inside content nothing can divide: a hyperlink, an
4212
+ * inline content control, a revision wrapper, or an atomic field.
4213
+ *
4214
+ * Distinct from `invalid-range`, which is an offset the paragraph does not have. This one is
4215
+ * a real offset that is not a PLACE — refused rather than resolved to the nearest one, so a
4216
+ * caller learns the node would not have landed where they asked.
4217
+ */
4218
+ | 'indivisible-content'
4219
+ /**
4220
+ * The range has one end inside a field's editable saved result and the other outside it.
4221
+ * Deleting it would leave the field's begin, separate, and end markers unbalanced, so it is
4222
+ * refused. A range that covers the whole field removes the field.
4223
+ */
4224
+ | 'field-structure'
4225
+ /**
4226
+ * In the editable field-result mode, an op other than typing, deletion, or run formatting
4227
+ * addresses a position inside a field's saved result. Splits, tabs, links, notes, and
4228
+ * fragments there are not supported yet.
4229
+ */
4230
+ | 'field-result-unsupported' | 'unknown-block' | 'not-a-block' | 'block-required' | 'carries-section-mark'
4231
+ /** The transaction named a part the package does not hold. */
4232
+ | 'unknown-part'
4233
+ /**
4234
+ * The transaction would have published a package that does not open: a relationship
4235
+ * pointing at a part nobody created, or a part with no declared content type.
4236
+ */
4237
+ | 'package-invariant'
4238
+ /**
4239
+ * A package edit refused the package it was given, for example because an id or part name it
4240
+ * expected to allocate is taken or a definition it addresses changed. Nothing was applied.
4241
+ */
4242
+ | 'package-changed'
4243
+ /** No revision in this part carries the addressed `(id, author, date)` triple. */
4244
+ | 'unknown-revision'
4245
+ /**
4246
+ * A matched revision is a kind whose accept/reject semantics are structural and not
4247
+ * implemented. Refusing is deliberate: removing the markup alone would report the decision
4248
+ * applied while leaving the row, cell, or section it describes untouched.
4249
+ */
4250
+ | 'unsupported-revision'
4251
+ /**
4252
+ * A tracked insertion would land inside a link, content control, or other container within
4253
+ * another author's pending insertion. The container cannot split, and nested words would
4254
+ * become part of that author's proposal.
4255
+ */
4256
+ | 'unsupported-revision:foreign-insertion' | 'tree-invariant'
4257
+ /** No content control in this part carries the addressed node id. */
4258
+ | 'unknown-content-control'
4259
+ /** The addressed node exists and is not a `w:sdt`. */
4260
+ | 'not-a-content-control'
4261
+ /**
4262
+ * A content control's `w:lock` — or one an enclosing control imposes — forbids this.
3637
4263
  *
3638
- * The text fields are present for a text watermark, `washout` for a picture watermark.
4264
+ * The same code for an edit inside `contentLocked` content and for the removal of an
4265
+ * `sdtLocked` control: both are "the document says no", and the two halves are already
4266
+ * distinguished by which operation was refused.
3639
4267
  */
3640
- interface WatermarkState {
3641
- readonly kind: 'text' | 'image';
3642
- readonly text?: string;
3643
- readonly fontFamily?: string;
3644
- /** Null for Auto size. */
3645
- readonly fontSizePt?: number | null;
3646
- readonly bold?: boolean;
3647
- readonly italic?: boolean;
3648
- /** `RRGGBB`. */
3649
- readonly color?: string;
3650
- readonly transparency?: number;
3651
- readonly layout?: WatermarkLayout;
3652
- readonly washout?: boolean;
3653
- }
3654
- /** A size in EMUs, the unit DrawingML stores extents in. 914400 EMU = 1 inch. */
3655
- interface Extent {
3656
- readonly widthEmu: number;
3657
- readonly heightEmu: number;
3658
- }
3659
- /** A font the document names, and whether its bytes travel inside the package. */
3660
- interface FontDefinition {
3661
- readonly family: string;
3662
- readonly embedded: boolean;
3663
- }
3664
- /** An axis-aligned rectangle in points, the unit layout works in throughout. */
3665
- interface Rect {
3666
- readonly x: number;
3667
- readonly y: number;
3668
- readonly width: number;
3669
- readonly height: number;
3670
- }
3671
- /** A position in points. */
3672
- interface Point {
3673
- readonly x: number;
3674
- readonly y: number;
3675
- }
3676
- /** What every subscription returns. Calling it twice is safe. */
3677
- type Unsubscribe = () => void;
4268
+ | 'locked'
4269
+ /** The control declares `w:dataBinding`; its value belongs to a custom XML part. */
4270
+ | 'bound'
4271
+ /** The value offered is not one this control's type accepts. */
4272
+ | 'typeMismatch' | 'unknown-control' | 'unsupported'
4273
+ /** Malformed lifecycle args / first-section link — mirrors Editor `invalidArgs`. */
4274
+ | 'invalidArgs'
4275
+ /** The addressed table id is missing, duplicated, or not a typed table. */
4276
+ | 'unknown-table'
4277
+ /** The addressed row id is missing or not a direct child of the table. */
4278
+ | 'unknown-row'
4279
+ /** A table property container appears more than once on a typed node. */
4280
+ | 'duplicate-property-container'
4281
+ /**
4282
+ * A row holds a `w:tc` inside a cell-level wrapper such as `w:sdt`, so the row's grid
4283
+ * mapping cannot be trusted and the inserted row would not match it.
4284
+ */
4285
+ | 'row-hides-cell'
4286
+ /** The table carries a legacy `w:hMerge`, which grid edits cannot place. */
4287
+ | 'table-has-merge'
4288
+ /** The cells to merge do not cover one rectangle, or cover only one cell. */
4289
+ | 'cells-not-rectangle'
4290
+ /** A cell merged over several rows splits only into a divisor of them. */
4291
+ | 'split-rows-not-divisor'
4292
+ /** The cells hold a tracked cell insertion, deletion, or merge. */
4293
+ | 'cell-has-revision'
4294
+ /** The split cells would be narrower than the minimum column width. */
4295
+ | 'cell-too-narrow'
4296
+ /** A whole-cell value write addresses a cell that is not one plain paragraph. */
4297
+ | 'unsupported-cell-content'
4298
+ /** Without `w:tblGrid`, a cell splits only into a divisor of the columns it spans. */
4299
+ | 'split-needs-grid'
4300
+ /** The addressed grid column id is missing or ambiguous without `w:tblGrid`. */
4301
+ | 'unknown-grid-column'
4302
+ /** The operation would exceed bounded table topology limits. */
4303
+ | 'resource-limit'
4304
+ /** The addressed node is not a top-level `w:drawing`. */
4305
+ | 'not-a-drawing'
4306
+ /** No `w:drawing` with this id exists in the part. */
4307
+ | 'unknown-drawing'
4308
+ /** The drawing's graphic payload is not a supported picture. */
4309
+ | 'not-a-picture-drawing'
4310
+ /** A chart in any state: only a delete applies, and it removes the whole chart. */
4311
+ | 'chart-drawing'
4312
+ /** A lock flag or `@locked` forbids this mutation. */
4313
+ | 'drawing-locked'
4314
+ /** Finite EMU extent, crop, or position value is out of range. */
4315
+ | 'invalid-drawing-value'
4316
+ /** Insertion would cross a table-cell boundary or wrong story container. */
4317
+ | 'cross-cell-drawing'
4318
+ /** Suggesting-mode drawing deletion is not implemented in this change. */
4319
+ | 'trackedDrawingDeletionUnsupported'
4320
+ /** Hyperlink target creation or change needs an OPC relationship in a package transaction. */
4321
+ | 'packageTransactionRequired'
4322
+ /** A clipboard fragment block nests deeper than the recursion cap. */
4323
+ | 'fragment-too-deep'
4324
+ /** A clipboard fragment block is not a paragraph, table, or content control subtree. */
4325
+ | 'fragment-invalid-block'
4326
+ /** A clipboard fragment exceeds its block or node budget. */
4327
+ | 'fragment-resource-budget';
3678
4328
 
3679
4329
  /**
3680
4330
  * A colour as an op carries it: a literal, a theme reference, or automatic.
@@ -4183,25 +4833,7 @@ type TreeDocOp = SetFieldCodeOp | {
4183
4833
  */
4184
4834
  readonly op: 'deleteBlock';
4185
4835
  readonly blockId: string;
4186
- } | {
4187
- /**
4188
- * Insert a fresh empty table immediately before a block-level paragraph.
4189
- *
4190
- * Before, never after, so the anchor paragraph stays as the block that follows the
4191
- * table: a `w:tbl` is not a valid final child of a story container, and two tables
4192
- * that end up adjacent merge into one when the file is reopened. When the anchor's
4193
- * previous sibling is already a table, a separating empty paragraph is authored with
4194
- * it, which is what Word does for the same reason.
4195
- */
4196
- readonly op: 'insertTable';
4197
- readonly beforeParagraphId: string;
4198
- readonly rows: number;
4199
- readonly cols: number;
4200
- /** Width of every grid column, in twips. The caller divides the content width. */
4201
- readonly columnWidthTwips: number;
4202
- /** Propose the complete table through native row and cell insertion revisions. */
4203
- readonly revision?: RevisionAttributionInput;
4204
- } | {
4836
+ } | InsertTableOp | MoveTableOp | InsertParagraphBesideTableOp | {
4205
4837
  /** Insert a fresh row above or below a canonical table row. */
4206
4838
  readonly op: 'insertTableRow';
4207
4839
  readonly tableId: string;
@@ -4243,6 +4875,8 @@ type TreeDocOp = SetFieldCodeOp | {
4243
4875
  readonly op: 'mergeTableCells';
4244
4876
  readonly tableId: string;
4245
4877
  readonly cellIds: readonly string[];
4878
+ /** Merge inside this author's own pending table insertion; new structure joins it. */
4879
+ readonly revision?: RevisionAttributionInput;
4246
4880
  } | {
4247
4881
  /** Split one cell into `rows` by `columns` equal cells; a one-row cell adds rows. */
4248
4882
  readonly op: 'splitTableCell';
@@ -4250,6 +4884,8 @@ type TreeDocOp = SetFieldCodeOp | {
4250
4884
  readonly cellId: string;
4251
4885
  readonly rows: number;
4252
4886
  readonly columns: number;
4887
+ /** Split inside this author's own pending table insertion; new structure joins it. */
4888
+ readonly revision?: RevisionAttributionInput;
4253
4889
  } | {
4254
4890
  /**
4255
4891
  * Resize one internal divider between two adjacent canonical grid columns.
@@ -4570,6 +5206,13 @@ type TreeDocOp = SetFieldCodeOp | {
4570
5206
  readonly paragraphId: string;
4571
5207
  readonly name: string;
4572
5208
  }[];
5209
+ } | {
5210
+ /**
5211
+ * Remove a detected table of contents: its field, or the whole control the field fills.
5212
+ * Text before and after the field stays, in one paragraph. One undo unit.
5213
+ */
5214
+ readonly op: 'removeToc';
5215
+ readonly tocId: string;
4573
5216
  } | {
4574
5217
  /**
4575
5218
  * Rewrite page-number text runs inside existing TOC result paragraphs.
@@ -4641,132 +5284,12 @@ interface TreeOpEffect {
4641
5284
  };
4642
5285
  readonly dependencyKeys: readonly string[];
4643
5286
  readonly impact: ImpactClass;
4644
- /** First post-edit caret paragraph for table column structural ops. */
5287
+ /** Post-edit caret paragraph for structural ops, at `offset` (default 0). */
4645
5288
  readonly caret?: {
4646
5289
  readonly paragraphId: string;
5290
+ readonly offset?: number;
4647
5291
  };
4648
5292
  }
4649
- /**
4650
- * Why an op was refused.
4651
- *
4652
- * `not-adjacent-siblings` is the notable one: a join across table cells is refused rather than
4653
- * silently merging content out of the cell that owned it.
4654
- */
4655
- type TreeOpRejection = 'unknown-op' | 'unknown-paragraph' | 'not-a-paragraph' | 'offset-out-of-range' | 'invalid-range' | 'not-a-list-paragraph' | 'splits-surrogate-pair' | 'invalid-text' | 'unsupported-property' | 'invalid-property-value' | 'not-adjacent-siblings'
4656
- /**
4657
- * The addressed position is strictly inside content nothing can divide: a hyperlink, an
4658
- * inline content control, a revision wrapper, or an atomic field.
4659
- *
4660
- * Distinct from `invalid-range`, which is an offset the paragraph does not have. This one is
4661
- * a real offset that is not a PLACE — refused rather than resolved to the nearest one, so a
4662
- * caller learns the node would not have landed where they asked.
4663
- */
4664
- | 'indivisible-content'
4665
- /**
4666
- * The range has one end inside a field's editable saved result and the other outside it.
4667
- * Deleting it would leave the field's begin, separate, and end markers unbalanced, so it is
4668
- * refused. A range that covers the whole field removes the field.
4669
- */
4670
- | 'field-structure'
4671
- /**
4672
- * In the editable field-result mode, an op other than typing, deletion, or run formatting
4673
- * addresses a position inside a field's saved result. Splits, tabs, links, notes, and
4674
- * fragments there are not supported yet.
4675
- */
4676
- | 'field-result-unsupported' | 'unknown-block' | 'not-a-block' | 'block-required' | 'carries-section-mark'
4677
- /** The transaction named a part the package does not hold. */
4678
- | 'unknown-part'
4679
- /**
4680
- * The transaction would have published a package that does not open: a relationship
4681
- * pointing at a part nobody created, or a part with no declared content type.
4682
- */
4683
- | 'package-invariant'
4684
- /**
4685
- * A package edit refused the package it was given, for example because an id or part name it
4686
- * expected to allocate is taken or a definition it addresses changed. Nothing was applied.
4687
- */
4688
- | 'package-changed'
4689
- /** No revision in this part carries the addressed `(id, author, date)` triple. */
4690
- | 'unknown-revision'
4691
- /**
4692
- * A matched revision is a kind whose accept/reject semantics are structural and not
4693
- * implemented. Refusing is deliberate: removing the markup alone would report the decision
4694
- * applied while leaving the row, cell, or section it describes untouched.
4695
- */
4696
- | 'unsupported-revision'
4697
- /**
4698
- * A tracked insertion would land inside a link, content control, or other container within
4699
- * another author's pending insertion. The container cannot split, and nested words would
4700
- * become part of that author's proposal.
4701
- */
4702
- | 'unsupported-revision:foreign-insertion' | 'tree-invariant'
4703
- /** No content control in this part carries the addressed node id. */
4704
- | 'unknown-content-control'
4705
- /** The addressed node exists and is not a `w:sdt`. */
4706
- | 'not-a-content-control'
4707
- /**
4708
- * A content control's `w:lock` — or one an enclosing control imposes — forbids this.
4709
- *
4710
- * The same code for an edit inside `contentLocked` content and for the removal of an
4711
- * `sdtLocked` control: both are "the document says no", and the two halves are already
4712
- * distinguished by which operation was refused.
4713
- */
4714
- | 'locked'
4715
- /** The control declares `w:dataBinding`; its value belongs to a custom XML part. */
4716
- | 'bound'
4717
- /** The value offered is not one this control's type accepts. */
4718
- | 'typeMismatch' | 'unknown-control' | 'unsupported'
4719
- /** Malformed lifecycle args / first-section link — mirrors Editor `invalidArgs`. */
4720
- | 'invalidArgs'
4721
- /** The addressed table id is missing, duplicated, or not a typed table. */
4722
- | 'unknown-table'
4723
- /** The addressed row id is missing or not a direct child of the table. */
4724
- | 'unknown-row'
4725
- /** A table property container appears more than once on a typed node. */
4726
- | 'duplicate-property-container'
4727
- /**
4728
- * A row holds a `w:tc` inside a cell-level wrapper such as `w:sdt`, so the row's grid
4729
- * mapping cannot be trusted and the inserted row would not match it.
4730
- */
4731
- | 'row-hides-cell'
4732
- /** The table carries a legacy `w:hMerge`, which grid edits cannot place. */
4733
- | 'table-has-merge'
4734
- /** The cells to merge do not cover one rectangle, or cover only one cell. */
4735
- | 'cells-not-rectangle'
4736
- /** A cell merged over several rows splits only into a divisor of them. */
4737
- | 'split-rows-not-divisor'
4738
- /** The cells hold a tracked cell insertion, deletion, or merge. */
4739
- | 'cell-has-revision'
4740
- /** The split cells would be narrower than the minimum column width. */
4741
- | 'cell-too-narrow'
4742
- /** Without `w:tblGrid`, a cell splits only into a divisor of the columns it spans. */
4743
- | 'split-needs-grid'
4744
- /** The addressed grid column id is missing or ambiguous without `w:tblGrid`. */
4745
- | 'unknown-grid-column'
4746
- /** The operation would exceed bounded table topology limits. */
4747
- | 'resource-limit'
4748
- /** The addressed node is not a top-level `w:drawing`. */
4749
- | 'not-a-drawing'
4750
- /** No `w:drawing` with this id exists in the part. */
4751
- | 'unknown-drawing'
4752
- /** The drawing's graphic payload is not a supported picture. */
4753
- | 'not-a-picture-drawing'
4754
- /** A lock flag or `@locked` forbids this mutation. */
4755
- | 'drawing-locked'
4756
- /** Finite EMU extent, crop, or position value is out of range. */
4757
- | 'invalid-drawing-value'
4758
- /** Insertion would cross a table-cell boundary or wrong story container. */
4759
- | 'cross-cell-drawing'
4760
- /** Suggesting-mode drawing deletion is not implemented in this change. */
4761
- | 'trackedDrawingDeletionUnsupported'
4762
- /** Hyperlink target creation or change needs an OPC relationship in a package transaction. */
4763
- | 'packageTransactionRequired'
4764
- /** A clipboard fragment block nests deeper than the recursion cap. */
4765
- | 'fragment-too-deep'
4766
- /** A clipboard fragment block is not a paragraph, table, or content control subtree. */
4767
- | 'fragment-invalid-block'
4768
- /** A clipboard fragment exceeds its block or node budget. */
4769
- | 'fragment-resource-budget';
4770
5293
  /** Whether an op applied, with the effect it produced or the reason it was refused. */
4771
5294
  type TreeOpResult = {
4772
5295
  readonly ok: true;
@@ -4778,5 +5301,5 @@ type TreeOpResult = {
4778
5301
  readonly detail?: string;
4779
5302
  };
4780
5303
 
4781
- export { validateRasterHeader as a$, DEFAULT_IMAGE_RESOURCE_LIMITS as aV, IMAGE_WRAP_TARGETS as aW, TEXT_FORM_FORMATS as aX, resolveImageResourceLimits as aY, resolveSvgIntrinsicSize as aZ, sniffImageMime as a_, MAX_CONTENT_CONTROLS_PER_PART as b$, DEFAULT_LIMITS as bF, DEFAULT_OOXML_PACKAGE_LIMITS as bG, DEFAULT_ZIP_LIMITS as bH, HARD_CEILINGS as bL, HYPERLINK_RELATIONSHIP_TYPE as bM, IMAGE_RELATIONSHIP_TYPE as bP, IMAGE_RESOURCE_HARD_CEILINGS as bQ, ACCEPTED_PARAGRAPH_PROPERTIES as bj, ACCEPTED_RUN_PROPERTIES as bk, CONTENT_CONTROL_ID_MAX as bm, CONTENT_CONTROL_PROPERTY_ORDER as bn, XMLNS_NAMESPACE_URI as c$, MAX_CONTENT_CONTROL_NESTING as c0, MAX_SVG_SNIFF_BYTES as c1, OFFICE_RELATIONSHIP_NAMESPACE_URI as c4, OOXML_NODE_IDENTITY_RULES as c5, TABLE_BORDER_STYLES as cS, W15_NAMESPACE_URI as cZ, WML_NAMESPACE_URI as c_, resolveImageRelationship as d$, XML_NAMESPACE_URI as d0, allocateContentControlId as d8, asciiFold as d9, hyperlinkTargetOf as dA, imageResourceLookupFor as dB, isContentControlContentNode as dC, isContentControlNode as dD, isContentControlWrapper as dE, isContentRevisionKind as dF, isHyperlinkNode as dG, isRangeMarkerKind as dH, isValidMime as dI, legacyCheckboxFieldsOf as dJ, liveDrawingReferenceCount as dK, lockForbidsEdit as dL, lockForbidsRemoval as dM, normalizePartName as dN, orderedContentControlProperties as dO, parseContentControlId as dP, partNameKey as dQ, planRevisionAuthorChange as dR, planRevisionBatch as dS, projectDrawing as dT, readOnOffChild as dU, readOoxmlPackage as dV, readOoxmlPart as dW, readXml as dX, readZip as dY, resolveContentControlLock as dZ, resolveContentType as d_, buildContentTypeIndex as da, buildRelationshipSet as db, childElements as dc, commentAnchorsOfStory as dd, commentsOfPart as de, contentControlContentChildren as df, contentControlContentNodeOf as dg, contentControlEndPropertiesNodeOf as dh, contentControlLevelOf as di, contentControlPropertiesNodeOf as dj, contentControlPropertiesOf as dk, contentControlTextOf as dl, contentControlsIn as dm, createImageResourceCache as dn, detectDuplicateNames as dp, enclosedBookmarkDeletions as dq, extensionKey as dr, findContentControl as ds, findElement as dt, firstReviewRange as du, flattenContentControls as dv, hasAnyComment as dw, hasBoundedSvgRoot as dx, hyperlinkAnchorOf as dy, hyperlinkRelationshipIdOf as dz, resolveInternalTarget as e0, resolveLimits as e1, resolveRelationship as e2, reviewItemKey as e3, reviewItemRanges as e4, textContent as e5, textFormFieldsOf as e6, threadStateOfPart as e7, validateExternalTarget as e8, validateGifHeader as e9, validateJpegHeader as ea, validatePngHeader as eb, withPart as ec, withoutBookmarkInPart as ed, writeOoxmlPackage as ee, writeZip as ef, activeReviewItem as eh, reviewItemPositionRank as ei, reviewItemsAt as ej, reviewThreadRootOf as ek };
4782
- export type { Table as $, ParagraphDisagreements as A, Block as B, CommentRecord as C, DocxDocument as D, ExecResult as E, ParagraphFlags as F, ParagraphTabStop as G, HeaderFooterSet as H, InsertableContentControlType as I, RevisionAuthorEntry as J, RevisionAuthorResult as K, RevisionAuthorSkipReason as L, RevisionBatchEntry as M, NumberingRef as N, OoxmlPart as O, PageMargins as P, RevisionBatchResult as Q, ReviewModelInput as R, StyleDefinitions as S, RevisionBatchSkipDetail as T, RevisionBatchSkipReason as U, RevisionSiteRefusal as V, RevisionType as W, Run as X, Section as Y, SectionProperties as Z, StyleDefinition as _, ReviewItem as a, TableCell as a0, TableRow as a1, Theme as a2, ThemeColorScheme as a3, OoxmlNode as a4, OoxmlPackage as a5, DocxDocumentJSON as a6, DrawingHorizontalReferenceFrame as a7, DrawingKind as a8, DrawingLocks as a9, OoxmlPackageResult as aA, OoxmlPackageRejection as aB, OoxmlNodeId as aC, OoxmlPackageLimits as aD, AutomationTableMutation as aE, RevisionAttributionInput as aF, TreeOpRejection as aG, PackageWatermarkWrite as aH, OoxmlInvariantIssue as aI, DrawingTreeDocOp as aJ, ImpactClass as aK, OoxmlParagraphNode as aL, OoxmlNoteNode as aM, OoxmlContinuationSeparatorNode as aN, OoxmlEndnotesNode as aO, OoxmlFootnotesNode as aP, OoxmlNoteRefNode as aQ, OoxmlNoteReferenceNode as aR, OoxmlSeparatorNode as aS, SourceCrop as aT, TreeDocColorValue as aU, DrawingPositionInput as aa, DrawingVerticalReferenceFrame as ab, FontDefinition as ac, ImageDecodePort as ad, ImageResourceLimits as ae, ImageResourceState as af, ImageWrapTarget as ag, ParagraphFormatCommand as ah, Point as ai, PreservedImageMime as aj, Rect as ak, RenderableImageMime as al, SelectionPin as am, SupportedImageMime as an, Unsubscribe as ao, ValidatedImageBytesHandle as ap, VectorImageMime as aq, Watermark as ar, WatermarkLayout as as, WatermarkState as at, TreeDocOp as au, OoxmlElement as av, OoxmlContentControlNode as aw, OoxmlGenericElementNode as ax, OoxmlContentControlContentNode as ay, OoxmlProperty as az, ReviewRevisionItem as b, TextFormFieldRange as b0, TextFormFieldOptions as b1, DrawingTransform as b2, TableBorderStyle as b3, DrawingAccessibility as b4, DrawingImageEffects as b5, VectorShapeProjection as b6, DrawingProjection as b7, OoxmlDrawingNode as b8, OoxmlInvariantResult as b9, ContentControlProperties as bA, ContentTypeError as bB, ContentTypeIndex as bC, ContentTypeRecords as bD, CreateImageResourceCacheOptions as bE, DefaultRecord as bI, DeleteBookmarkOp as bJ, DeleteTextOp as bK, HyperlinkKind as bN, HyperlinkTarget as bO, ImageRelationshipResolution as bR, ImageResourceLookup as bS, IndexResult as bT, InsertBookmarkOp as bU, InsertBuildingBlockOp as bV, InsertComplexFieldOp as bW, InsertEquationOp as bX, InsertPageFieldOp as bY, InsertTextOp as bZ, LegacyCheckboxFieldRange as b_, OoxmlFldCharNode as ba, OoxmlFldSimpleNode as bb, OoxmlInstrTextNode as bc, TreeOpResult as bd, RelationshipRecord as be, OoxmlHardBreakNode as bf, OoxmlAttribute as bg, ResourceLimits as bh, CommentThreadState as bi, BookmarkOpPosition as bl, CommentAnchor as bo, CommentPosition as bp, CommitTextFormFieldOp as bq, ContentControlCheckbox as br, ContentControlCheckboxState as bs, ContentControlDataBinding as bt, ContentControlDateFormat as bu, ContentControlEntry as bv, ContentControlKind as bw, ContentControlLevel as bx, ContentControlListItem as by, ContentControlLock as bz, ReviewCommentItem as c, NameRejection as c2, NameResult as c3, OoxmlBodyNode as c6, OoxmlBookmarkEndNode as c7, OoxmlBookmarkStartNode as c8, OoxmlContentControlCalendarNode as c9, OoxmlReadResult as cA, OoxmlRunNode as cB, OoxmlRunPropertiesNode as cC, OoxmlTabNode as cD, OoxmlTextElementNode as cE, OoxmlTextNode as cF, OoxmlWmlValAttribute as cG, OoxmlXmlSpaceAttribute as cH, OverrideRecord as cI, RelationshipError as cJ, RelationshipSetResult as cK, RelationshipTargetResolver as cL, ResolveResult as cM, ResolvedRelationship as cN, SetFieldResultOp as cO, SetLegacyCheckboxOp as cP, SetLegacyDropdownOp as cQ, SetTextFormFieldDefaultOp as cR, TabStopWrite as cT, TargetMode as cU, TextFormFieldType as cV, TreeDocOpKind as cW, TreeOpEffect as cX, ValidatedRasterHeader as cY, OoxmlContentControlCheckboxNode as ca, OoxmlContentControlCheckedNode as cb, OoxmlContentControlCheckedStateNode as cc, OoxmlContentControlComboBoxNode as cd, OoxmlContentControlDataBindingNode as ce, OoxmlContentControlDateFormatNode as cf, OoxmlContentControlDateNode as cg, OoxmlContentControlDropDownListNode as ch, OoxmlContentControlEndPropertiesNode as ci, OoxmlContentControlLidNode as cj, OoxmlContentControlListItemNode as ck, OoxmlContentControlPropertiesNode as cl, OoxmlContentControlStoreMappedDataAsNode as cm, OoxmlContentControlTextNode as cn, OoxmlContentControlUncheckedStateNode as co, OoxmlDocumentNode as cp, OoxmlExternalTarget as cq, OoxmlGenericExtensionAttribute as cr, OoxmlHyperlinkNode as cs, OoxmlInvariantIssueCode as ct, OoxmlKnownNodeAttribute as cu, OoxmlNamespaceBinding as cv, OoxmlNodeIdentityRules as cw, OoxmlParagraphPropertiesNode as cx, OoxmlPartMetadata as cy, OoxmlReadRejection as cz, ReviewCustomItem as d, XmlLimits as d1, XmlNode as d2, XmlRejection as d3, XmlResult as d4, ZipLimits as d5, ZipReadResult as d6, ZipRejection as d7, ReviewPosition as e, VectorShapeComponent as eg, ReviewRange as f, ReviewRevisionKind as g, RevisionAddress as h, ContentControlType as i, DocTarget as j, RunFormatting as k, Extent as l, ContainerRef as m, ContentControlFilter as n, DocRange as o, Revision as p, DocComment as q, ColorValue as r, ContentControl as s, DocAnchor as t, DocAnchorRange as u, DocLocation as v, DocumentBody as w, ExecErrorCode as x, IndentFormatting as y, Paragraph as z };
5304
+ export { DEFAULT_ZIP_LIMITS as b$, DEFAULT_IMAGE_RESOURCE_LIMITS as b6, IMAGE_WRAP_TARGETS as b7, TEXT_FORM_FORMATS as b8, resolveImageResourceLimits as b9, CHART_GRAPHIC_DATA_URI as bA, CHART_NAMESPACE_URI as bB, CHART_STYLE_NAMESPACE_URI as bC, CONTENT_CONTROL_ID_MAX as bD, CONTENT_CONTROL_PROPERTY_ORDER as bE, DEFAULT_LIMITS as bZ, DEFAULT_OOXML_PACKAGE_LIMITS as b_, resolveSvgIntrinsicSize as ba, sniffImageMime as bb, validateRasterHeader as bc, ACCEPTED_PARAGRAPH_PROPERTIES as bv, ACCEPTED_RUN_PROPERTIES as bw, CHARTEX_GRAPHIC_DATA_URI as by, CHARTEX_NAMESPACE_URI as bz, DIAGRAM_NAMESPACE_URI as c0, DRAWINGML_MAIN_NAMESPACE_URI as c1, HARD_CEILINGS as c7, HYPERLINK_RELATIONSHIP_TYPE as c8, IMAGE_RELATIONSHIP_TYPE as cb, IMAGE_RESOURCE_HARD_CEILINGS as cc, MAX_CONTENT_CONTROLS_PER_PART as cp, MAX_CONTENT_CONTROL_NESTING as cq, MAX_SVG_SNIFF_BYTES as cr, OFFICE_RELATIONSHIP_NAMESPACE_URI as cv, OOXML_NODE_IDENTITY_RULES as cw, firstReviewRange as d$, allocateContentControlId as dF, asciiFold as dG, buildContentTypeIndex as dH, buildRelationshipSet as dI, childElements as dJ, commentAnchorsOfStory as dK, commentsOfPart as dL, contentControlContentChildren as dM, contentControlContentNodeOf as dN, contentControlEndPropertiesNodeOf as dO, contentControlLevelOf as dP, contentControlPropertiesNodeOf as dQ, contentControlPropertiesOf as dR, contentControlTextOf as dS, contentControlsIn as dT, createImageResourceCache as dU, detectDuplicateNames as dV, directFill as dW, enclosedBookmarkDeletions as dX, extensionKey as dY, findContentControl as dZ, findElement as d_, TABLE_BORDER_STYLES as dj, W15_NAMESPACE_URI as du, WML_NAMESPACE_URI as dv, XMLNS_NAMESPACE_URI as dw, XML_NAMESPACE_URI as dx, flattenContentControls as e0, hasAnyComment as e1, hasBoundedSvgRoot as e2, hyperlinkAnchorOf as e3, hyperlinkRelationshipIdOf as e4, hyperlinkTargetOf as e5, imageResourceLookupFor as e6, isContentControlContentNode as e7, isContentControlNode as e8, isContentControlWrapper as e9, resolveLimits as eA, resolveRelationship as eB, reviewItemKey as eC, reviewItemRanges as eD, textContent as eE, textFormFieldsOf as eF, threadStateOfPart as eG, validateExternalTarget as eH, validateGifHeader as eI, validateJpegHeader as eJ, validatePngHeader as eK, withPart as eL, withoutBookmarkInPart as eM, writeOoxmlPackage as eN, writeZip as eO, activeReviewItem as eT, reviewItemPositionRank as eU, reviewItemsAt as eV, reviewThreadRootOf as eW, isContentRevisionKind as ea, isElement as eb, isHyperlinkNode as ec, isRangeMarkerKind as ed, isValidMime as ee, legacyCheckboxFieldsOf as ef, liveDrawingReferenceCount as eg, lockForbidsEdit as eh, lockForbidsRemoval as ei, normalizePartName as ej, orderedContentControlProperties as ek, parseContentControlId as el, partNameKey as em, planRevisionAuthorChange as en, planRevisionBatch as eo, projectDrawing as ep, readOnOffChild as eq, readOoxmlPackage as er, readOoxmlPart as es, readXml as et, readZip as eu, resolveColorNode as ev, resolveContentControlLock as ew, resolveContentType as ex, resolveImageRelationship as ey, resolveInternalTarget as ez };
5305
+ export type { Table as $, ParagraphDisagreements as A, Block as B, CommentRecord as C, DocxDocument as D, ExecResult as E, ParagraphFlags as F, ParagraphTabStop as G, HeaderFooterSet as H, InsertableContentControlType as I, RevisionAuthorEntry as J, RevisionAuthorResult as K, RevisionAuthorSkipReason as L, RevisionBatchEntry as M, NumberingRef as N, OoxmlPart as O, PageMargins as P, RevisionBatchResult as Q, ReviewModelInput as R, StyleDefinitions as S, RevisionBatchSkipDetail as T, RevisionBatchSkipReason as U, RevisionSiteRefusal as V, RevisionType as W, Run as X, Section as Y, SectionProperties as Z, StyleDefinition as _, ReviewItem as a, VectorShapeProjection as a$, TableCell as a0, TableRow as a1, Theme as a2, ThemeColorScheme as a3, OoxmlNode as a4, OoxmlPackage as a5, DocxDocumentJSON as a6, DrawingHorizontalReferenceFrame as a7, DrawingKind as a8, DrawingLocks as a9, OoxmlPackageRejection as aA, AutomationTableMutation as aB, OoxmlProperty as aC, OoxmlPackageResult as aD, RevisionAttributionInput as aE, TreeOpRejection as aF, OoxmlNodeId as aG, PackageWatermarkWrite as aH, OoxmlInvariantIssue as aI, DrawingTreeDocOp as aJ, ImpactClass as aK, OoxmlParagraphNode as aL, OoxmlNoteNode as aM, OoxmlContinuationSeparatorNode as aN, OoxmlEndnotesNode as aO, OoxmlFootnotesNode as aP, OoxmlNoteRefNode as aQ, OoxmlNoteReferenceNode as aR, OoxmlSeparatorNode as aS, SourceCrop as aT, TableBorderStyle as aU, TextboxOutlineProjection as aV, VectorShapeComponent as aW, DrawingAccessibility as aX, DrawingImageEffects as aY, DrawingTransform as aZ, DrawingChartSummary as a_, DrawingPositionInput as aa, DrawingVerticalReferenceFrame as ab, FontDefinition as ac, ImageDecodePort as ad, ImageResourceLimits as ae, ImageResourceState as af, ImageWrapTarget as ag, ParagraphFormatCommand as ah, Point as ai, PreservedImageMime as aj, Rect as ak, RenderableImageMime as al, SelectionPin as am, SupportedImageMime as an, Unsubscribe as ao, ValidatedImageBytesHandle as ap, VectorImageMime as aq, Watermark as ar, WatermarkLayout as as, WatermarkState as at, TreeDocOp as au, OoxmlElement as av, OoxmlContentControlNode as aw, OoxmlGenericElementNode as ax, OoxmlContentControlContentNode as ay, OoxmlPackageLimits as az, ReviewRevisionItem as b, PictureFrameEffects as b0, DrawingProjection as b1, OoxmlDrawingNode as b2, TextFormFieldRange as b3, TextFormFieldOptions as b4, TreeDocColorValue as b5, ChartPart as bF, ChartThemeFaces as bG, ChartexPart as bH, CommentAnchor as bI, CommentPosition as bJ, CommitTextFormFieldOp as bK, ContentControlCheckbox as bL, ContentControlCheckboxState as bM, ContentControlDataBinding as bN, ContentControlDateFormat as bO, ContentControlEntry as bP, ContentControlKind as bQ, ContentControlLevel as bR, ContentControlListItem as bS, ContentControlLock as bT, ContentControlProperties as bU, ContentTypeError as bV, ContentTypeIndex as bW, ContentTypeRecords as bX, CreateImageResourceCacheOptions as bY, OoxmlAttribute as bd, OoxmlInvariantResult as be, LegacyTextArtProjection as bf, ChartPartResolver as bg, ChartexPartResolver as bh, ShapeSchemeColorResolver as bi, ShapeEffectList as bj, GroupTextboxProjection as bk, MetafileImageMime as bl, OoxmlFldCharNode as bm, OoxmlFldSimpleNode as bn, OoxmlInstrTextNode as bo, TreeOpResult as bp, RelationshipRecord as bq, OoxmlHardBreakNode as br, ShapeColor as bs, ResourceLimits as bt, CommentThreadState as bu, BookmarkOpPosition as bx, ReviewCommentItem as c, OoxmlReadResult as c$, DefaultRecord as c2, DeleteBookmarkOp as c3, DeleteTextOp as c4, DiagramPartResolver as c5, DiagramParts as c6, HyperlinkKind as c9, OoxmlContentControlCalendarNode as cA, OoxmlContentControlCheckboxNode as cB, OoxmlContentControlCheckedNode as cC, OoxmlContentControlCheckedStateNode as cD, OoxmlContentControlComboBoxNode as cE, OoxmlContentControlDataBindingNode as cF, OoxmlContentControlDateFormatNode as cG, OoxmlContentControlDateNode as cH, OoxmlContentControlDropDownListNode as cI, OoxmlContentControlEndPropertiesNode as cJ, OoxmlContentControlLidNode as cK, OoxmlContentControlListItemNode as cL, OoxmlContentControlPropertiesNode as cM, OoxmlContentControlStoreMappedDataAsNode as cN, OoxmlContentControlTextNode as cO, OoxmlContentControlUncheckedStateNode as cP, OoxmlDocumentNode as cQ, OoxmlExternalTarget as cR, OoxmlGenericExtensionAttribute as cS, OoxmlHyperlinkNode as cT, OoxmlInvariantIssueCode as cU, OoxmlKnownNodeAttribute as cV, OoxmlNamespaceBinding as cW, OoxmlNodeIdentityRules as cX, OoxmlParagraphPropertiesNode as cY, OoxmlPartMetadata as cZ, OoxmlReadRejection as c_, HyperlinkTarget as ca, ImageRelationshipResolution as cd, ImageResourceLookup as ce, IndexResult as cf, InsertBookmarkOp as cg, InsertBuildingBlockOp as ch, InsertComplexFieldOp as ci, InsertEquationOp as cj, InsertPageFieldOp as ck, InsertParagraphBesideTableOp as cl, InsertTableOp as cm, InsertTextOp as cn, LegacyCheckboxFieldRange as co, MoveTableOp as cs, NameRejection as ct, NameResult as cu, OoxmlBodyNode as cx, OoxmlBookmarkEndNode as cy, OoxmlBookmarkStartNode as cz, ReviewCustomItem as d, OoxmlRunNode as d0, OoxmlRunPropertiesNode as d1, OoxmlTabNode as d2, OoxmlTextElementNode as d3, OoxmlTextNode as d4, OoxmlWmlValAttribute as d5, OoxmlXmlSpaceAttribute as d6, OverrideRecord as d7, RelationshipError as d8, RelationshipSetResult as d9, XmlRejection as dA, XmlResult as dB, ZipLimits as dC, ZipReadResult as dD, ZipRejection as dE, RelationshipTargetResolver as da, ResolveResult as db, ResolvedRelationship as dc, SetFieldResultOp as dd, SetLegacyCheckboxOp as de, SetLegacyDropdownOp as df, SetTextFormFieldDefaultOp as dg, ShapeReflection as dh, ShapeShadow as di, TabStopWrite as dk, TargetMode as dl, TextFormFieldType as dm, TextboxStoryProjection as dn, TreeDocOpKind as dp, TreeOpEffect as dq, ValidatedRasterHeader as dr, VectorGradient as ds, VectorPattern as dt, XmlLimits as dy, XmlNode as dz, ReviewPosition as e, AffineMatrix as eP, DrawingChartPlotType as eQ, DrawingChartShownAs as eR, GradientStop as eS, ReviewRange as f, ReviewRevisionKind as g, RevisionAddress as h, ContentControlType as i, DocTarget as j, RunFormatting as k, Extent as l, ContainerRef as m, ContentControlFilter as n, DocRange as o, Revision as p, DocComment as q, ColorValue as r, ContentControl as s, DocAnchor as t, DocAnchorRange as u, DocLocation as v, DocumentBody as w, ExecErrorCode as x, IndentFormatting as y, Paragraph as z };