@docx-editor.dev/core 2.31.0 → 2.33.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 (140) hide show
  1. package/README.md +25 -1
  2. package/THIRD_PARTY_NOTICES.md +1 -0
  3. package/dist/automation.cjs +1 -1
  4. package/dist/automation.d.ts +16 -54
  5. package/dist/automation.js +1 -1
  6. package/dist/binding.cjs +1 -1
  7. package/dist/binding.d.ts +17 -15
  8. package/dist/binding.js +1 -1
  9. package/dist/{chrome-print-BWvaVEhD.d.ts → chrome-print-CrPI9ZQc.d.ts} +128 -38
  10. package/dist/chunk-23MKR33J.js +4 -0
  11. package/dist/chunk-2CWQY27B.cjs +1 -0
  12. package/dist/chunk-2DEY5NUC.cjs +32 -0
  13. package/dist/chunk-2DR4TH6B.js +1 -0
  14. package/dist/chunk-2F2UEAE2.js +2 -0
  15. package/dist/chunk-2GPGAFOJ.cjs +5 -0
  16. package/dist/chunk-ALD626VU.cjs +2 -0
  17. package/dist/chunk-AU33YWEJ.js +236 -0
  18. package/dist/chunk-AXU63LYW.cjs +1 -0
  19. package/dist/chunk-CM5VZRBV.js +32 -0
  20. package/dist/chunk-D7FAFFTN.js +1 -0
  21. package/dist/chunk-DYUVJNDD.cjs +1 -0
  22. package/dist/chunk-ESYUKD5D.js +2 -0
  23. package/dist/chunk-F7TGQMVR.js +5 -0
  24. package/dist/chunk-FLW7KIQX.js +30 -0
  25. package/dist/chunk-JG4A6W6I.js +7 -0
  26. package/dist/chunk-JNGLSBPH.js +2 -0
  27. package/dist/chunk-KE6ZWRIY.cjs +236 -0
  28. package/dist/chunk-L3YXJDPX.js +1 -0
  29. package/dist/chunk-LI42N7OW.cjs +4 -0
  30. package/dist/chunk-PLKDS4JT.js +1 -0
  31. package/dist/chunk-PXMTQ73F.cjs +2 -0
  32. package/dist/chunk-R4R3AAE4.js +1 -0
  33. package/dist/chunk-RFUNFTGV.cjs +1 -0
  34. package/dist/chunk-SVM6PGMS.js +3 -0
  35. package/dist/chunk-SZURLHR3.cjs +3 -0
  36. package/dist/chunk-UYCGCVZ2.cjs +1 -0
  37. package/dist/chunk-WN7ICTA5.js +1 -0
  38. package/dist/chunk-X34QRAUU.cjs +1 -0
  39. package/dist/chunk-XNBYG4XJ.cjs +30 -0
  40. package/dist/chunk-ZDFJW5XS.cjs +2 -0
  41. package/dist/chunk-ZWO4JHNN.cjs +7 -0
  42. package/dist/collaboration/replication.cjs +1 -1
  43. package/dist/collaboration/replication.d.ts +29 -4
  44. package/dist/collaboration/replication.js +1 -1
  45. package/dist/collaboration.cjs +1 -1
  46. package/dist/collaboration.d.ts +5 -5
  47. package/dist/collaboration.js +1 -1
  48. package/dist/contracts/document.d.ts +3 -3
  49. package/dist/contracts/editor.d.ts +13 -9
  50. package/dist/contracts/interaction.d.ts +2 -2
  51. package/dist/contracts/modules.d.ts +15 -12
  52. package/dist/contracts/types.d.ts +135 -2
  53. package/dist/{custom-node-writes-TeUvMP13.d.ts → custom-node-writes-AqY5KpVx.d.ts} +7 -2
  54. package/dist/diagnostic-context-CuzhOX0g.d.ts +98 -0
  55. package/dist/{diagnostic-hints-C9JlLz1L.d.ts → diagnostic-hints-BtCaCqQC.d.ts} +4 -4
  56. package/dist/{document-protection-C8x3P2J6.d.ts → document-protection-BvbpSXbQ.d.ts} +1 -1
  57. package/dist/drawing-graphic-kind-CXYGYbB3.d.ts +324 -0
  58. package/dist/drawing-preview-package-B9lSLRg4.d.ts +115 -0
  59. package/dist/{editor-B2ShlO23.d.ts → editor-B7OOAAie.d.ts} +181 -244
  60. package/dist/editor-fonts-D_-vjuJi.d.ts +53 -0
  61. package/dist/{editor-scope-C7ke1KJG.d.ts → editor-scope-CA6egMaK.d.ts} +6 -2
  62. package/dist/editor.cjs +1 -1
  63. package/dist/editor.css +4 -4
  64. package/dist/editor.d.ts +259 -31
  65. package/dist/editor.js +1 -1
  66. package/dist/export.cjs +2 -2
  67. package/dist/export.d.ts +48 -19
  68. package/dist/export.js +2 -2
  69. package/dist/{failure-NS2lsya4.d.ts → failure-6KGFrDO9.d.ts} +1 -1
  70. package/dist/{font-resolver-CWh40DYp.d.ts → font-resolver-Bm9XqTNO.d.ts} +15 -1
  71. package/dist/index.cjs +1 -1
  72. package/dist/index.d.ts +43 -26
  73. package/dist/index.js +1 -1
  74. package/dist/{layout-shaping-CWS3j0Xr.d.ts → layout-shaping-Ci_BTnSU.d.ts} +1 -1
  75. package/dist/layout.cjs +1 -1
  76. package/dist/layout.d.ts +181 -99
  77. package/dist/layout.js +1 -1
  78. package/dist/metafile-drawing-DtMFyMKq.d.ts +107 -0
  79. package/dist/{note-properties-QsKh24sM.d.ts → note-properties-DCIJUKIy.d.ts} +1 -1
  80. package/dist/output.cjs +1 -1
  81. package/dist/output.d.ts +11 -7
  82. package/dist/output.js +1 -1
  83. package/dist/{protocol-COZJUKUY.d.ts → protocol-Cp_QzVxS.d.ts} +75 -5
  84. package/dist/{review-paragraph-order-C_QbCKcH.d.ts → review-paragraph-order-BJQ43_r0.d.ts} +1 -1
  85. package/dist/revision-projection-OVusTS77.d.ts +258 -0
  86. package/dist/{semantic-cell-selection-Cub9FDa8.d.ts → semantic-cell-selection-CoI5hHBm.d.ts} +2 -2
  87. package/dist/{semantic-interaction-dApRIYpt.d.ts → semantic-interaction-BbA4dgEo.d.ts} +1 -1
  88. package/dist/{semantic-paint-DLzA8sjP.d.ts → semantic-paint-B5JcIv9c.d.ts} +19 -9
  89. package/dist/{semantic-record-queries-3yp9o11g.d.ts → semantic-record-queries-DnO8J5_j.d.ts} +1 -1
  90. package/dist/{semantic-records-B-akgRch.d.ts → semantic-records-DoK0lNjS.d.ts} +439 -418
  91. package/dist/store.cjs +1 -1
  92. package/dist/store.d.ts +511 -20
  93. package/dist/store.js +1 -1
  94. package/dist/{types-barrel-CkF2JbU4.d.ts → tree-op-types-Df4oY2u4.d.ts} +1081 -524
  95. package/dist/{tree-package-store-B8l8DX3Z.d.ts → tree-package-store-DXhX1PE-.d.ts} +8 -3
  96. package/dist/{tree-session-contract-DeLRqohz.d.ts → tree-session-contract-CF2625mv.d.ts} +5 -5
  97. package/dist/unsupported-elements-CUojsaCr.d.ts +23 -0
  98. package/docs/accept-reject-without-scrolling.md +95 -0
  99. package/docs/comment-on-found-text.md +72 -0
  100. package/docs/custom-review-cards.md +178 -0
  101. package/docs/highlight-ranges.md +48 -0
  102. package/docs/index.md +36 -0
  103. package/docs/propose-rewrite.md +247 -0
  104. package/docs/tracked-replacement.md +68 -0
  105. package/licenses/ECMA-376.md +29 -0
  106. package/package.json +3 -2
  107. package/dist/bookmark-names-DDuAra_V.d.ts +0 -37
  108. package/dist/chunk-243W4WW2.cjs +0 -2
  109. package/dist/chunk-2E2RPEKX.js +0 -1
  110. package/dist/chunk-4S24UOPG.js +0 -30
  111. package/dist/chunk-5JPIEN54.cjs +0 -3
  112. package/dist/chunk-5SO5QDMV.cjs +0 -2
  113. package/dist/chunk-6IDOVU6L.cjs +0 -1
  114. package/dist/chunk-6JIJOZDW.js +0 -1
  115. package/dist/chunk-BTQKU64Q.cjs +0 -1
  116. package/dist/chunk-DBOOTED4.cjs +0 -30
  117. package/dist/chunk-EOTAXOJY.cjs +0 -5
  118. package/dist/chunk-FDAKJ2SJ.cjs +0 -30
  119. package/dist/chunk-FNNOJNGY.js +0 -3
  120. package/dist/chunk-FT33HRZP.js +0 -5
  121. package/dist/chunk-HC6YNKUI.cjs +0 -1
  122. package/dist/chunk-HZ66UCIS.js +0 -2
  123. package/dist/chunk-IBRBNT37.cjs +0 -1
  124. package/dist/chunk-IVIN7X43.js +0 -30
  125. package/dist/chunk-LZY6B6IV.js +0 -4
  126. package/dist/chunk-MOYYRVFV.cjs +0 -2
  127. package/dist/chunk-N6B3BXCL.js +0 -1
  128. package/dist/chunk-Q5K2GGNG.js +0 -2
  129. package/dist/chunk-R2XINWVE.js +0 -7
  130. package/dist/chunk-SUEXVBPR.js +0 -1
  131. package/dist/chunk-T2QQHG5C.js +0 -18
  132. package/dist/chunk-VWIJKH4A.js +0 -1
  133. package/dist/chunk-WO4V6PNS.cjs +0 -18
  134. package/dist/chunk-XMJKFURD.cjs +0 -4
  135. package/dist/chunk-XSTGE3NI.cjs +0 -1
  136. package/dist/chunk-YQWMI6J5.cjs +0 -7
  137. package/dist/chunk-ZCJS7D7S.js +0 -2
  138. package/dist/diagnostic-context-DJ0P1uZE.d.ts +0 -31
  139. package/dist/headless-document-view-qOpaCF82.d.ts +0 -143
  140. package/dist/omml-equation-BsLAa2lX.d.ts +0 -115
@@ -0,0 +1,107 @@
1
+ /** A 2D affine matrix `[a, b, c, d, e, f]`: x' = a·x + c·y + e, y' = b·x + d·y + f. @internal */
2
+ type MetafileMatrix = readonly [number, number, number, number, number, number];
3
+ /** One path command in canvas pixels, y down. @internal */
4
+ type MetafilePathCommand = {
5
+ readonly op: 'M' | 'L';
6
+ readonly x: number;
7
+ readonly y: number;
8
+ } | {
9
+ readonly op: 'C';
10
+ readonly x1: number;
11
+ readonly y1: number;
12
+ readonly x2: number;
13
+ readonly y2: number;
14
+ readonly x: number;
15
+ readonly y: number;
16
+ } | {
17
+ readonly op: 'Z';
18
+ };
19
+ /** A solid paint: 0–255 channels and 0–1 alpha. @internal */
20
+ interface MetafilePaint {
21
+ readonly r: number;
22
+ readonly g: number;
23
+ readonly b: number;
24
+ readonly alpha: number;
25
+ }
26
+ /** The face a text command names. @internal */
27
+ interface MetafileFont {
28
+ readonly family: string;
29
+ readonly sizePx: number;
30
+ readonly bold: boolean;
31
+ readonly italic: boolean;
32
+ }
33
+ /** Raster content a metafile draws. @internal */
34
+ type MetafileRaster = {
35
+ readonly kind: 'rgba';
36
+ readonly width: number;
37
+ readonly height: number;
38
+ readonly data: Uint8Array;
39
+ } | {
40
+ readonly kind: 'encoded';
41
+ readonly mime: 'image/png' | 'image/jpeg';
42
+ readonly width: number;
43
+ readonly height: number;
44
+ readonly bytes: Uint8Array;
45
+ };
46
+ /**
47
+ * One recorded drawing command. Paths are in canvas pixels with the transform already
48
+ * applied. `matrix` on an image maps its unit square (y down) into canvas pixels; on text and
49
+ * a nested drawing it is the transform in force when it was drawn.
50
+ * @internal
51
+ */
52
+ type MetafileCommand = {
53
+ readonly kind: 'save';
54
+ } | {
55
+ readonly kind: 'restore';
56
+ } | {
57
+ readonly kind: 'fill';
58
+ readonly path: readonly MetafilePathCommand[];
59
+ readonly evenOdd: boolean;
60
+ readonly paint: MetafilePaint;
61
+ } | {
62
+ readonly kind: 'stroke';
63
+ readonly path: readonly MetafilePathCommand[];
64
+ readonly width: number;
65
+ readonly dash: readonly number[];
66
+ readonly paint: MetafilePaint;
67
+ } | {
68
+ readonly kind: 'clip';
69
+ readonly path: readonly MetafilePathCommand[];
70
+ readonly evenOdd: boolean;
71
+ } | {
72
+ readonly kind: 'image';
73
+ readonly raster: MetafileRaster;
74
+ readonly matrix: MetafileMatrix;
75
+ } | {
76
+ readonly kind: 'text';
77
+ readonly text: string;
78
+ readonly font: MetafileFont;
79
+ readonly x: number;
80
+ readonly y: number;
81
+ readonly align: 'left' | 'center' | 'right';
82
+ readonly baseline: 'alphabetic' | 'top' | 'bottom' | 'middle';
83
+ readonly matrix: MetafileMatrix;
84
+ readonly paint: MetafilePaint;
85
+ } | {
86
+ readonly kind: 'drawing';
87
+ readonly drawing: MetafileDrawing;
88
+ readonly matrix: MetafileMatrix;
89
+ };
90
+ /** A replayed metafile: its canvas size in pixels and its commands in order. @internal */
91
+ interface MetafileDrawing {
92
+ readonly width: number;
93
+ readonly height: number;
94
+ readonly commands: readonly MetafileCommand[];
95
+ }
96
+ /** What a metafile renderer reads beside the bytes. @internal */
97
+ interface MetafileRenderOptions {
98
+ /** Advance width of `text` in `font`, in pixels at `font.sizePx`. */
99
+ readonly textAdvance: (text: string, font: MetafileFont) => number;
100
+ }
101
+ /** A replayed metafile. `complete` is false when a bound stopped recording early. @internal */
102
+ interface MetafileReplay {
103
+ readonly drawing: MetafileDrawing;
104
+ readonly complete: boolean;
105
+ }
106
+
107
+ export type { MetafileFont as M, MetafileReplay as a, MetafileCommand as b, MetafileDrawing as c, MetafileMatrix as d, MetafilePaint as e, MetafilePathCommand as f, MetafileRaster as g, MetafileRenderOptions as h };
@@ -1,4 +1,4 @@
1
- import { O as OoxmlPart, N as OoxmlNode, Q as OoxmlPackage } from './types-barrel-CkF2JbU4.js';
1
+ import { O as OoxmlPart, a4 as OoxmlNode, a5 as OoxmlPackage } from './tree-op-types-Df4oY2u4.js';
2
2
 
3
3
  /** `w:pos` — where a section's footnotes are laid out. */
4
4
  type FootnotePosition = 'pageBottom' | 'beneathText' | 'sectEnd' | 'docEnd';
package/dist/output.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunkXMJKFURD_cjs=require('./chunk-XMJKFURD.cjs');require('./chunk-5JPIEN54.cjs'),require('./chunk-DBOOTED4.cjs'),require('./chunk-IBRBNT37.cjs'),require('./chunk-243W4WW2.cjs'),require('./chunk-WO4V6PNS.cjs');Object.defineProperty(exports,"DEFAULT_FIELD_SHADING",{enumerable:true,get:function(){return chunkXMJKFURD_cjs.n}});Object.defineProperty(exports,"collectPageChangeBars",{enumerable:true,get:function(){return chunkXMJKFURD_cjs.h}});Object.defineProperty(exports,"lumTransfer",{enumerable:true,get:function(){return chunkXMJKFURD_cjs.i}});Object.defineProperty(exports,"paintSelectionOverlay",{enumerable:true,get:function(){return chunkXMJKFURD_cjs.s}});Object.defineProperty(exports,"paintSemanticLayout",{enumerable:true,get:function(){return chunkXMJKFURD_cjs.q}});
1
+ 'use strict';var chunkLI42N7OW_cjs=require('./chunk-LI42N7OW.cjs');require('./chunk-SZURLHR3.cjs'),require('./chunk-2DEY5NUC.cjs'),require('./chunk-DYUVJNDD.cjs'),require('./chunk-ZDFJW5XS.cjs'),require('./chunk-KE6ZWRIY.cjs');Object.defineProperty(exports,"DEFAULT_FIELD_SHADING",{enumerable:true,get:function(){return chunkLI42N7OW_cjs.p}});Object.defineProperty(exports,"collectPageChangeBars",{enumerable:true,get:function(){return chunkLI42N7OW_cjs.j}});Object.defineProperty(exports,"lumTransfer",{enumerable:true,get:function(){return chunkLI42N7OW_cjs.k}});Object.defineProperty(exports,"observeUnsupportedElements",{enumerable:true,get:function(){return chunkLI42N7OW_cjs.a}});Object.defineProperty(exports,"paintSelectionOverlay",{enumerable:true,get:function(){return chunkLI42N7OW_cjs.u}});Object.defineProperty(exports,"paintSemanticLayout",{enumerable:true,get:function(){return chunkLI42N7OW_cjs.s}});
package/dist/output.d.ts CHANGED
@@ -8,13 +8,17 @@
8
8
  * @packageDocumentation
9
9
  * @public
10
10
  */
11
- import { R as ReviewAuthorInfo } from './semantic-paint-DLzA8sjP.js';
12
- export { B as BreakMarkStrings, C as ChangeBarsMode, D as DEFAULT_FIELD_SHADING, F as FieldShadingMode, P as PageChangeBars, a as PaintOptions, b as RevisionAuthorAssignments, c as RevisionAuthorStyle, d as RevisionStyles, e as collectPageChangeBars, p as paintSemanticLayout } from './semantic-paint-DLzA8sjP.js';
13
- import { S as SemanticLayout } from './semantic-records-B-akgRch.js';
14
- import './semantic-record-queries-3yp9o11g.js';
15
- import './types-barrel-CkF2JbU4.js';
16
- import './editor-scope-C7ke1KJG.js';
17
- import './omml-equation-BsLAa2lX.js';
11
+ import { R as ReviewAuthorInfo } from './semantic-paint-B5JcIv9c.js';
12
+ export { B as BreakMarkStrings, C as ChangeBarsMode, D as DEFAULT_FIELD_SHADING, F as FieldShadingMode, P as PageChangeBars, d as PaintOptions, a as RevisionAuthorAssignments, b as RevisionAuthorStyle, c as RevisionStyles, e as collectPageChangeBars, p as paintSemanticLayout } from './semantic-paint-B5JcIv9c.js';
13
+ import { S as SemanticLayout } from './semantic-records-DoK0lNjS.js';
14
+ export { U as UnsupportedElement, e as UnsupportedElementLayout, f as UnsupportedElementRule } from './semantic-records-DoK0lNjS.js';
15
+ export { U as UnsupportedElementHost, o as observeUnsupportedElements } from './unsupported-elements-CUojsaCr.js';
16
+ export { D as DrawingGraphicKind, a as DrawingSupport, b as DrawingSupportIssue } from './drawing-graphic-kind-CXYGYbB3.js';
17
+ import './revision-projection-OVusTS77.js';
18
+ import './tree-op-types-Df4oY2u4.js';
19
+ import './editor-scope-CA6egMaK.js';
20
+ import './semantic-record-queries-DnO8J5_j.js';
21
+ import './tree-package-store-DXhX1PE-.js';
18
22
 
19
23
  /** A rectangle in page-content coordinates, on a named page. */
20
24
  interface OverlayRect {
package/dist/output.js CHANGED
@@ -1 +1 @@
1
- export{n as DEFAULT_FIELD_SHADING,h as collectPageChangeBars,i as lumTransfer,s as paintSelectionOverlay,q as paintSemanticLayout}from'./chunk-LZY6B6IV.js';import'./chunk-FNNOJNGY.js';import'./chunk-RIYSCEFQ.js';import'./chunk-4S24UOPG.js';import'./chunk-VWIJKH4A.js';import'./chunk-Q5K2GGNG.js';import'./chunk-T2QQHG5C.js';
1
+ export{p as DEFAULT_FIELD_SHADING,j as collectPageChangeBars,k as lumTransfer,a as observeUnsupportedElements,u as paintSelectionOverlay,s as paintSemanticLayout}from'./chunk-23MKR33J.js';import'./chunk-SVM6PGMS.js';import'./chunk-RIYSCEFQ.js';import'./chunk-CM5VZRBV.js';import'./chunk-PLKDS4JT.js';import'./chunk-JNGLSBPH.js';import'./chunk-AU33YWEJ.js';
@@ -1,5 +1,5 @@
1
- import { aF as AutomationTableMutation, ac as RevisionBatchResult, ab as RevisionAuthorResult } from './types-barrel-CkF2JbU4.js';
2
- import { c as HeaderFooterVariant, N as NoteKind } from './tree-package-store-B8l8DX3Z.js';
1
+ import { aB as AutomationTableMutation, Q as RevisionBatchResult, K as RevisionAuthorResult } from './tree-op-types-Df4oY2u4.js';
2
+ import { H as HeaderFooterVariant, N as NoteKind } from './tree-package-store-DXhX1PE-.js';
3
3
 
4
4
  /** Word's shape types, as `Word.ShapeType` spells them. */
5
5
  type AutomationShapeType = 'TextBox' | 'GeometricShape' | 'Picture' | 'Group' | 'Canvas' | 'Unsupported';
@@ -162,6 +162,25 @@ type AutomationAuthoringOperation = {
162
162
  readonly op: 'setFieldCode';
163
163
  readonly field: AutomationHandle;
164
164
  readonly code: string;
165
+ }
166
+ /** The text of a field's cached result, read as a range over the field reads it. */
167
+ | {
168
+ readonly op: 'getFieldResult';
169
+ readonly field: AutomationHandle;
170
+ readonly projection?: AutomationTextProjection;
171
+ }
172
+ /** Replace a field's cached result with plain text. The instruction never changes. */
173
+ | {
174
+ readonly op: 'setFieldResult';
175
+ readonly field: AutomationHandle;
176
+ readonly text: string;
177
+ }
178
+ /** Insert the one equation a Flat OPC package holds. See `equation-snippet.ts`. */
179
+ | {
180
+ readonly op: 'insertOoxml';
181
+ readonly span: AutomationSpanRef;
182
+ readonly location: 'Before' | 'After' | 'Start' | 'End' | 'Replace';
183
+ readonly ooxml: string;
165
184
  } | {
166
185
  readonly op: 'insertField';
167
186
  readonly span: AutomationSpanRef;
@@ -189,6 +208,15 @@ type AutomationAuthoringOperation = {
189
208
  readonly table: AutomationHandle;
190
209
  readonly rowIndex: number;
191
210
  readonly cellIndex: number;
211
+ }
212
+ /** The cell a merge of this rectangle merges into, read before the merge applies. */
213
+ | {
214
+ readonly op: 'getMergedTableCell';
215
+ readonly table: AutomationHandle;
216
+ readonly topRow: number;
217
+ readonly firstCell: number;
218
+ readonly bottomRow: number;
219
+ readonly lastCell: number;
192
220
  } | {
193
221
  readonly op: 'getTableCellProperties' | 'getTableCellBody';
194
222
  readonly cell: AutomationHandle;
@@ -199,6 +227,8 @@ type AutomationAuthoringOperation = {
199
227
  kind: 'cell';
200
228
  } | {
201
229
  kind: 'insertRows';
230
+ } | {
231
+ kind: 'splitCell';
202
232
  }>;
203
233
  } | {
204
234
  readonly op: 'updateTableCell';
@@ -208,6 +238,13 @@ type AutomationAuthoringOperation = {
208
238
  } | {
209
239
  kind: 'insertRows';
210
240
  }>, 'kind' | 'cellId'>;
241
+ }
242
+ /** Split one cell into `rowCount` by `columnCount` cells. */
243
+ | {
244
+ readonly op: 'splitTableCell';
245
+ readonly cell: AutomationHandle;
246
+ readonly rowCount: number;
247
+ readonly columnCount: number;
211
248
  } | {
212
249
  readonly op: 'insertTable';
213
250
  readonly span: AutomationSpanRef;
@@ -344,16 +381,20 @@ type AutomationSpanRef = {
344
381
  readonly body: AutomationHandle;
345
382
  };
346
383
  /**
347
- * Where to look for content controls: a whole story, or inside one control.
384
+ * Where to look for content controls: a whole story, inside one control, or across a span.
348
385
  *
349
386
  * A control's own scope is how nesting is expressed. Listing every control of a story flat
350
387
  * would answer a form field and the group wrapping it as siblings, which is not what either of
351
- * them is.
388
+ * them is. A SPAN scope is the exception on purpose: it answers every control the span
389
+ * overlaps, at any depth, including a control that holds the whole span, because a caller asks
390
+ * a range for its controls to learn what an edit through it would touch.
352
391
  */
353
392
  type AutomationContentControlScope = {
354
393
  readonly body: AutomationHandle;
355
394
  } | {
356
395
  readonly contentControl: AutomationHandle;
396
+ } | {
397
+ readonly span: AutomationSpanRef;
357
398
  };
358
399
  /** The value a control accepts, by what kind of control it is. */
359
400
  type AutomationContentControlValue = {
@@ -496,6 +537,35 @@ type AutomationOperation = AutomationAuthoringOperation | {
496
537
  readonly span: AutomationSpanRef;
497
538
  readonly projection?: AutomationTextProjection;
498
539
  }
540
+ /**
541
+ * A span split into ranges that each end after one of `endingMarks`, or at a paragraph end.
542
+ *
543
+ * Boundaries come from the model text, so a field, an equation, or another atom is never
544
+ * split. `trimSpacing` removes spaces, tabs, and column breaks from each range's edges and
545
+ * drops a range left empty. A range the projection shows no character of is not answered.
546
+ */
547
+ | {
548
+ readonly op: 'getTextRanges';
549
+ readonly scope: AutomationSpanRef;
550
+ readonly endingMarks: readonly string[];
551
+ readonly trimSpacing?: boolean;
552
+ readonly projection?: AutomationTextProjection;
553
+ }
554
+ /** The smallest span covering both spans. Both must be in one story. */
555
+ | {
556
+ readonly op: 'expandSpan';
557
+ readonly span: AutomationSpanRef;
558
+ readonly to: AutomationSpanRef;
559
+ }
560
+ /**
561
+ * A span's text as if every pending revision were accepted (`current`) or rejected
562
+ * (`original`), with a carriage return at each paragraph mark that view keeps.
563
+ */
564
+ | {
565
+ readonly op: 'getReviewedText';
566
+ readonly span: AutomationSpanRef;
567
+ readonly version: 'original' | 'current';
568
+ }
499
569
  /**
500
570
  * A paragraph's own identity as the DOCUMENT writes it (`w14:paraId`).
501
571
  *
@@ -1740,4 +1810,4 @@ interface AutomationHost {
1740
1810
  dispose(): void;
1741
1811
  }
1742
1812
 
1743
- export type { AutomationOperation as A, AutomationPoint as B, AutomationReadingOrder as C, AutomationSaveResult as D, AutomationSearchOptions as E, AutomationSelectionMode as F, AutomationSpan as G, AutomationSpanRef as H, AutomationTextProjection as I, AutomationUnsubscribe as J, AutomationValue as K, AutomationCapabilities as a, AutomationHost as b, AutomationAlignment as c, AutomationBatchRequest as d, AutomationBatchResponse as e, AutomationChangeEvent as f, AutomationContentControlLock as g, AutomationContentControlRangeLocation as h, AutomationContentControlScope as i, AutomationContentControlSubtype as j, AutomationContentControlValue as k, AutomationError as l, AutomationErrorCode as m, AutomationFontRead as n, AutomationFontWrite as o, AutomationHandle as p, AutomationHandleRef as q, AutomationObjectKind as r, AutomationOperationKind as s, AutomationOperationResult as t, AutomationPageOrientation as u, AutomationPageSetupRead as v, AutomationPageSetupWrite as w, AutomationParagraphFormatRead as x, AutomationParagraphFormatWrite as y, AutomationParagraphRef as z };
1813
+ export type { AutomationOperation as A, AutomationOperationKind as B, AutomationOperationResult as C, AutomationPageOrientation as D, AutomationPageSetupRead as E, AutomationPageSetupWrite as F, AutomationParagraphFormatRead as G, AutomationParagraphFormatWrite as H, AutomationParagraphRef as I, AutomationPoint as J, AutomationReadingOrder as K, AutomationSaveResult as L, AutomationSearchOptions as M, AutomationSelectionMode as N, AutomationShapeRead as O, AutomationShapeType as P, AutomationSpan as Q, AutomationSpanRef as R, AutomationTextProjection as S, AutomationUnsubscribe as T, AutomationValue as U, AutomationCapabilities as a, AutomationHost as b, AutomationAlignment as c, AutomationAuthoringOperation as d, AutomationBatchRequest as e, AutomationBatchResponse as f, AutomationChangeEvent as g, AutomationContentControlLock as h, AutomationContentControlRangeLocation as i, AutomationContentControlScope as j, AutomationContentControlSubtype as k, AutomationContentControlValue as l, AutomationCustomNodePayload as m, AutomationEndpoint as n, AutomationError as o, AutomationErrorCode as p, AutomationFontRead as q, AutomationFontWrite as r, AutomationHandle as s, AutomationHandleRef as t, AutomationInlinePictureRead as u, AutomationInlinePictureWrite as v, AutomationListBullet as w, AutomationListLevelFormat as x, AutomationListNumbering as y, AutomationObjectKind as z };
@@ -1,4 +1,4 @@
1
- import { N as OoxmlNode, ap as OoxmlElement, aq as OoxmlContentControlNode, V as OoxmlGenericElementNode, ar as OoxmlContentControlContentNode, C as CommentRecord, O as OoxmlPart } from './types-barrel-CkF2JbU4.js';
1
+ import { a4 as OoxmlNode, av as OoxmlElement, aw as OoxmlContentControlNode, ax as OoxmlGenericElementNode, ay as OoxmlContentControlContentNode, C as CommentRecord, O as OoxmlPart } from './tree-op-types-Df4oY2u4.js';
2
2
 
3
3
  /** Nested content-control wrappers deeper than this stop flattening; content stays preserved. */
4
4
  declare const MAX_CONTENT_CONTROL_NESTING = 32;
@@ -0,0 +1,258 @@
1
+ import { a4 as OoxmlNode } from './tree-op-types-Df4oY2u4.js';
2
+
3
+ /** Named revision colors. Identifiers are stable and never contain CSS. @public */
4
+ declare const REVISION_MARKUP_COLORS: readonly ['black', 'blue', 'turquoise', 'green', 'pink', 'red', 'yellow', 'white', 'darkBlue', 'teal', 'darkGreen', 'violet', 'darkRed', 'darkYellow', 'gray50', 'gray25', 'lightBlue', 'lightYellow', 'lightOrange', 'lightPurple', 'lightGreen', 'gray'];
5
+ /** @public */
6
+ type RevisionMarkupNamedColor = (typeof REVISION_MARKUP_COLORS)[number];
7
+ /** @public */
8
+ type RevisionMarkupColor = RevisionMarkupNamedColor | 'byAuthor' | 'auto';
9
+ /** @public */
10
+ type RevisionMarkupMark = 'none' | 'colorOnly' | 'bold' | 'italic' | 'underline' | 'doubleUnderline' | 'strikethrough' | 'doubleStrikethrough';
11
+ /** @public */
12
+ type RevisionDeletionMark = RevisionMarkupMark | 'hidden' | 'caret' | 'pound';
13
+ /** @public */
14
+ type RevisionChangedLinesMark = 'none' | 'leftBorder' | 'rightBorder' | 'outsideBorder';
15
+ /** @public */
16
+ interface RevisionMarkupStyle<Mark extends string = RevisionMarkupMark> {
17
+ readonly mark: Mark;
18
+ readonly color: RevisionMarkupColor;
19
+ }
20
+ /** Viewer-only text styling. Document highlighting remains unchanged. @public */
21
+ interface RevisionMarkupTextStyle<Mark extends string = RevisionMarkupMark> extends RevisionMarkupStyle<Mark> {
22
+ /** Background color behind revision text. Defaults to `none`. */
23
+ readonly background: RevisionMarkupNamedColor | 'byAuthor' | 'none';
24
+ }
25
+ /** Fully resolved, immutable viewer preferences. @public */
26
+ interface ResolvedRevisionMarkup {
27
+ readonly insertions: RevisionMarkupTextStyle;
28
+ readonly deletions: RevisionMarkupTextStyle<RevisionDeletionMark>;
29
+ readonly movedFrom: RevisionMarkupTextStyle<RevisionDeletionMark>;
30
+ readonly movedTo: RevisionMarkupTextStyle;
31
+ readonly formatting: RevisionMarkupTextStyle;
32
+ readonly changedLines: RevisionMarkupStyle<RevisionChangedLinesMark>;
33
+ readonly cells: {
34
+ readonly inserted: RevisionMarkupNamedColor | 'byAuthor' | 'none';
35
+ readonly deleted: RevisionMarkupNamedColor | 'byAuthor' | 'none';
36
+ readonly merged: RevisionMarkupNamedColor | 'byAuthor' | 'none';
37
+ readonly split: RevisionMarkupNamedColor | 'byAuthor' | 'none';
38
+ };
39
+ readonly trackMoves: boolean;
40
+ readonly trackFormatting: boolean;
41
+ }
42
+ /** Partial viewer preferences. Omitted values keep the previous value. @public */
43
+ type RevisionMarkupOptions = {
44
+ readonly [K in keyof ResolvedRevisionMarkup]?: ResolvedRevisionMarkup[K] extends boolean ? boolean : Partial<ResolvedRevisionMarkup[K]>;
45
+ };
46
+ /** Initial viewer preferences. @public */
47
+ declare const DEFAULT_REVISION_MARKUP: ResolvedRevisionMarkup;
48
+ /** Validate and merge preferences without modifying the input. @public */
49
+ declare function resolveRevisionMarkup(input?: RevisionMarkupOptions, previous?: ResolvedRevisionMarkup): ResolvedRevisionMarkup;
50
+ /** CSS token for a validated named color. */
51
+ declare function revisionMarkupColor(color: RevisionMarkupColor, authorColor: string, auto?: string): string;
52
+ /** Select the visual style without changing revision identity. */
53
+ declare function revisionMarkupStyle(settings: ResolvedRevisionMarkup, kind: 'insert' | 'delete' | 'moveFrom' | 'moveTo' | 'format'): RevisionMarkupTextStyle<RevisionDeletionMark>;
54
+ /** A local settings draft owned by the editor. @public */
55
+ interface RevisionMarkupDialogSession {
56
+ /** Aborts on close, replacement, load, detach, destroy, or renderer disposal. */
57
+ readonly signal: AbortSignal;
58
+ /** Read the immutable draft. */
59
+ get(): ResolvedRevisionMarkup;
60
+ /** Merge validated options into the draft without committing preferences. */
61
+ set(options: RevisionMarkupOptions): void;
62
+ /** Restore default preferences in the draft only. */
63
+ reset(): void;
64
+ /** Observe draft changes, including effective external preference changes. */
65
+ subscribe(listener: () => void): () => void;
66
+ canApply(): boolean;
67
+ /** Commit the draft and close. Returns false after cancellation. */
68
+ apply(): boolean;
69
+ /** Close without committing the draft. */
70
+ cancel(): void;
71
+ }
72
+ /** Host rendering for the Track changes options dialog. @public */
73
+ interface RevisionMarkupChromeHandlers {
74
+ readonly onRequest?: (session: RevisionMarkupDialogSession) => void;
75
+ }
76
+
77
+ /**
78
+ * What a revision wrapper asserts about the content inside it.
79
+ *
80
+ * `moveFrom` / `moveTo` are deliberately distinct from `delete` / `insert`: a move is one
81
+ * decision with two halves, and presenting it as an unrelated deletion and insertion invites
82
+ * resolving one without the other, which duplicates or loses the content.
83
+ */
84
+ type RevisionKind = 'insert' | 'delete' | 'moveFrom' | 'moveTo' | 'format';
85
+ /**
86
+ * One revision wrapper's provenance, as authored.
87
+ *
88
+ * `id` is the verbatim `@w:id` string rather than a number: `ST_DecimalNumber` restricts
89
+ * `xsd:integer` with no bounds, so a file may carry a value outside the safe integer range, and
90
+ * parsing it to a number would silently merge two distinct revisions.
91
+ *
92
+ * `date` is absent when the file omits it. `@w:date` is optional on `CT_TrackChange`, and
93
+ * inventing one is a silent content change.
94
+ */
95
+ interface RevisionAttribution {
96
+ readonly kind: RevisionKind;
97
+ readonly id: string;
98
+ readonly author: string;
99
+ readonly date?: string;
100
+ /** The wrapper's node id, so a surface can address this exact site. */
101
+ readonly nodeId: string;
102
+ }
103
+ /**
104
+ * Which revisions layout resolves before producing pages.
105
+ *
106
+ * - `all-markup` shows both halves of every change.
107
+ * - `proposed` shows what the document becomes if every change is accepted.
108
+ * - `original` shows what it was before any of them.
109
+ *
110
+ * The last two are specified as equal to accept-all and reject-all OUTPUT, which is what makes
111
+ * them testable, without either applying an op.
112
+ */
113
+ type RevisionDisplayMode = 'all-markup' | 'proposed' | 'original';
114
+ /**
115
+ * The views the review chrome offers, in Word's terms: the three layout projections plus
116
+ * Simple Markup, which reads as the proposed result with a red change bar beside every line
117
+ * a change touched — the document as accepting everything would leave it, and where.
118
+ */
119
+ type ReviewDisplayMode = RevisionDisplayMode | 'simple-markup';
120
+ /**
121
+ * How a document renders tracked changes when nothing says otherwise.
122
+ *
123
+ * `all-markup` matches Word's own default: a reader who opens a document with pending changes
124
+ * sees them, rather than a clean-looking document hiding edits nobody has accepted.
125
+ */
126
+ declare const DEFAULT_REVISION_DISPLAY_MODE: RevisionDisplayMode;
127
+ /**
128
+ * A view-time tracked-change filter. Revisions rejected by `includes` use the filter's accepted
129
+ * or rejected projection, while included revisions keep the display mode's normal projection.
130
+ *
131
+ * `cacheKey` is a canonical, content-based identity for layout caches. The set itself is kept
132
+ * because author names are attacker-controlled strings and must never be parsed back from a
133
+ * delimiter-based key.
134
+ */
135
+ interface RevisionFilter {
136
+ readonly revisionMarkup?: ResolvedRevisionMarkup;
137
+ readonly hiddenAuthors: ReadonlySet<string>;
138
+ readonly includes?: (revision: RevisionAttribution) => boolean;
139
+ readonly includesNode?: (nodeId: string, author: string) => boolean;
140
+ /** Accepted/original projection for a revision excluded by `includesNode`. */
141
+ readonly excludedNodeMode?: (nodeId: string, author: string) => 'proposed' | 'original';
142
+ /**
143
+ * In a resolved view, content the view keeps paints as ORDINARY text: no author ink, no
144
+ * decoration, no change bar of its own. This is Word's No Markup, Original and Simple
145
+ * Markup, which the review chrome asks for. Without it the accepted projection keeps the
146
+ * attribution on kept insertions, which is what the engine paints when no review module
147
+ * is registered — colour by author, deletions resolved — and what its roster reads.
148
+ */
149
+ readonly resolvedMarkup?: 'plain';
150
+ readonly cacheKey: string;
151
+ /**
152
+ * @internal Revision records the review queue leaves out, by change-element node id, and the
153
+ * paragraphs that hold them. Their paragraphs project without those records, so they paint
154
+ * no markup. Not a selection: it never moves a projection off the unfiltered path.
155
+ */
156
+ readonly unlisted?: {
157
+ readonly sites: ReadonlySet<string>;
158
+ /** Each paragraph that holds one, keyed by the records it holds. */
159
+ readonly paragraphs: ReadonlyMap<string, string>;
160
+ /** Names the styles and numbering the records were decided against. */
161
+ readonly key: string;
162
+ };
163
+ }
164
+ /** @deprecated Use {@link RevisionFilter}. */
165
+ interface RevisionAuthorFilter extends RevisionFilter {
166
+ }
167
+ /** Build a canonical reviewer filter. An empty input returns `undefined` for the fast path. */
168
+ declare function revisionAuthorFilter(hiddenAuthors: Iterable<string>): RevisionAuthorFilter | undefined;
169
+ /**
170
+ * Whether content under this stack of revisions is laid out in the given mode.
171
+ *
172
+ * Containment governs, so a single enclosing wrapper the mode resolves away suppresses
173
+ * everything inside it regardless of what the inner wrappers say. An insertion inside a
174
+ * deletion does not survive the proposed result: the deletion it sits in was accepted.
175
+ */
176
+ declare function revisionsVisible(revisions: readonly RevisionAttribution[], mode: RevisionDisplayMode, authorFilter?: RevisionAuthorFilter): boolean;
177
+ /**
178
+ * Every revision on a paragraph's own MARK, from `w:pPr/w:rPr/w:ins|w:del|w:moveFrom|w:moveTo`.
179
+ *
180
+ * All four members of `EG_ParaRPrTrackChanges`. A moved paragraph carries `w:moveFrom` on the
181
+ * mark of the copy it left and `w:moveTo` on the mark of the copy it arrived at, so a move
182
+ * that spans whole paragraphs is recorded here and nowhere else.
183
+ *
184
+ * `EG_ParaRPrTrackChanges` records that the pilcrow itself was inserted or deleted, which is how
185
+ * Word writes a paragraph split or merge. It is not content — there is no text to decorate — so
186
+ * a surface shows it as a mark of its own beside the paragraph, the way Word draws a struck-
187
+ * through ¶.
188
+ *
189
+ * A LIST, because the group is `ins? del? moveFrom? moveTo?` and the first two can both be
190
+ * there: that pair is what Word writes when a second author proposes removing a mark the first
191
+ * proposed adding, and it is what this engine's own writer emits (`tree-op-tracked.ts`).
192
+ * Answering with the first one hid the second author's decision from the PAGE. The review pane
193
+ * walks the tree itself and always listed both, which is the worse shape of the two: a card
194
+ * offering a decision the reader could see no sign of.
195
+ *
196
+ * Ordered as the file orders them, which is the order the group declares.
197
+ *
198
+ * Property-position `w:ins`/`w:del` stay `generic` in the tree deliberately, so this reads them
199
+ * by name rather than by kind.
200
+ */
201
+ declare function paragraphMarkRevisionsOf(paragraph: OoxmlNode): readonly RevisionAttribution[];
202
+ /**
203
+ * The tracked FORMAT change on a paragraph's own mark, from `w:pPr/w:rPr/w:rPrChange`.
204
+ *
205
+ * `CT_ParaRPr` ends with it (§17.13.5.32), and Word writes it when a user changes the mark's
206
+ * own run properties with tracking on. It reaches the fragment rather than a span because it
207
+ * decorates no characters, and it is not in `props`: a fragment's `props` carry the mark's
208
+ * `w:rPr` by NAME only, with none of its children.
209
+ *
210
+ * Note that `w:rPrChange/w:rPr` is `CT_ParaRPrOriginal`, which may carry its own revision
211
+ * marks. Those describe the mark as it WAS and must not be read as live ones, which is why
212
+ * this reads the change element's own attributes and never descends into it.
213
+ */
214
+ declare function paragraphMarkFormatRevisionOf(paragraph: OoxmlNode): RevisionAttribution | null;
215
+ /**
216
+ * The single decision a one-field reader sees.
217
+ *
218
+ * A DELETION wins when a mark carries both, for the reason paint draws it that way: a break
219
+ * proposed and then unproposed ends up removed, so that is the decision a reader who can only
220
+ * see one must see. One function decides it, so the deprecated field, the deprecated function
221
+ * and the painted glyph cannot answer differently.
222
+ */
223
+ declare function shownMarkRevision(revisions: readonly RevisionAttribution[]): RevisionAttribution | undefined;
224
+ /**
225
+ * Does this decision, taken, remove the paragraph mark?
226
+ *
227
+ * A deletion does, and so does a `moveFrom`: the copy the paragraph moved OUT of goes away
228
+ * when the move is accepted. `insert` and `moveTo` are the other half of each pair, and they
229
+ * keep the break. Paint, the change bar and the resolved views all ask this one question, so
230
+ * a `moveFrom` cannot end up struck through in the margin and blue on the glyph.
231
+ */
232
+ declare function markRevisionRemovesMark(revision: RevisionAttribution): boolean;
233
+ /**
234
+ * The one decision on a paragraph's mark that a single-field reader sees.
235
+ *
236
+ * @deprecated Reads one of the revisions a mark can carry. Use {@link paragraphMarkRevisionsOf},
237
+ * which answers with all of them.
238
+ */
239
+ declare function paragraphMarkRevisionOf(paragraph: OoxmlNode): RevisionAttribution | null;
240
+ /**
241
+ * The tracked FORMAT change on a property list, from `w:rPrChange` or `w:pPrChange`.
242
+ *
243
+ * A property change alters no characters, so it has no span of its own to strike or underline.
244
+ * Word marks the affected text and says what changed; the minimum a reader needs is to see that
245
+ * this text's formatting is itself a pending decision.
246
+ *
247
+ * Read from the flattened property list because that is what layout already carries — the
248
+ * change wrapper is a `w:rPr`/`w:pPr` child like any other.
249
+ */
250
+ declare function formatRevisionOf(properties: readonly {
251
+ readonly localName: string;
252
+ readonly attributes?: Readonly<Record<string, string>>;
253
+ }[]): RevisionAttribution | null;
254
+ /** True when this stack of revisions marks its content as deleted from the live document. */
255
+ declare function revisionsAreDeletion(revisions: readonly RevisionAttribution[]): boolean;
256
+
257
+ export { revisionAuthorFilter as A, revisionsAreDeletion as B, revisionsVisible as C, DEFAULT_REVISION_MARKUP as D, shownMarkRevision as E, REVISION_MARKUP_COLORS as c, revisionMarkupColor as n, revisionMarkupStyle as o, resolveRevisionMarkup as r, DEFAULT_REVISION_DISPLAY_MODE as s, formatRevisionOf as v, markRevisionRemovesMark as w, paragraphMarkFormatRevisionOf as x, paragraphMarkRevisionOf as y, paragraphMarkRevisionsOf as z };
258
+ export type { RevisionMarkupDialogSession as R, ReviewDisplayMode as a, RevisionDisplayMode as b, ResolvedRevisionMarkup as d, RevisionChangedLinesMark as e, RevisionDeletionMark as f, RevisionMarkupChromeHandlers as g, RevisionMarkupColor as h, RevisionMarkupMark as i, RevisionMarkupNamedColor as j, RevisionMarkupOptions as k, RevisionMarkupStyle as l, RevisionMarkupTextStyle as m, RevisionAuthorFilter as p, RevisionAttribution as q, RevisionFilter as t, RevisionKind as u };
@@ -1,5 +1,5 @@
1
- import { S as SemanticPosition, C as CaretGeometry, a as SemanticSelection } from './semantic-interaction-dApRIYpt.js';
2
- import { I as InlineDrawingRecord, A as AnchoredDrawingRecord, T as TextMeasurer, L as LineRecord, g as StyleSpanRecord, S as SemanticLayout, C as ContentControlBoundaryRecord, h as TableRowFragmentRecord, i as TableCellFragmentRecord } from './semantic-records-B-akgRch.js';
1
+ import { S as SemanticPosition, C as CaretGeometry, a as SemanticSelection } from './semantic-interaction-BbA4dgEo.js';
2
+ import { I as InlineDrawingRecord, A as AnchoredDrawingRecord, T as TextMeasurer, L as LineRecord, g as StyleSpanRecord, S as SemanticLayout, C as ContentControlBoundaryRecord, h as TableRowFragmentRecord, i as TableCellFragmentRecord } from './semantic-records-DoK0lNjS.js';
3
3
 
4
4
  /** A point in the coordinate space named by the function taking it. */
5
5
  interface HitPoint {
@@ -1,4 +1,4 @@
1
- import { T as TextMeasurer, S as SemanticLayout, B as BlockFragmentRecord, C as ContentControlBoundaryRecord, g as StyleSpanRecord } from './semantic-records-B-akgRch.js';
1
+ import { T as TextMeasurer, S as SemanticLayout, B as BlockFragmentRecord, C as ContentControlBoundaryRecord, g as StyleSpanRecord } from './semantic-records-DoK0lNjS.js';
2
2
 
3
3
  /** How `moveCaret` resolves a motion. */
4
4
  interface MoveCaretOptions {
@@ -1,6 +1,7 @@
1
- import { c as PageRecord, q as ResolvedRevisionMarkup, C as ContentControlBoundaryRecord, S as SemanticLayout } from './semantic-records-B-akgRch.js';
2
- import { S as SemanticRootStoryKind } from './semantic-record-queries-3yp9o11g.js';
3
- import { aj as ValidatedImageBytesHandle, aa as RenderableImageMime } from './types-barrel-CkF2JbU4.js';
1
+ import { d as ResolvedRevisionMarkup } from './revision-projection-OVusTS77.js';
2
+ import { ap as ValidatedImageBytesHandle, al as RenderableImageMime, av as OoxmlElement } from './tree-op-types-Df4oY2u4.js';
3
+ import { a as PageRecord, C as ContentControlBoundaryRecord, S as SemanticLayout } from './semantic-records-DoK0lNjS.js';
4
+ import { S as SemanticRootStoryKind } from './semantic-record-queries-DnO8J5_j.js';
4
5
 
5
6
  /**
6
7
  * Everything a host can say about ONE author's presentation. Every field is optional and
@@ -118,14 +119,14 @@ interface RevisionStyleContext {
118
119
  readonly key: string;
119
120
  }
120
121
 
121
- /** Host port for safe blob URLs — only called for {@link ImageResourceState.kind} `ready`. */
122
- interface PaintImageUrlPort {
123
- create(handle: ValidatedImageBytesHandle, mime: RenderableImageMime): string;
124
- revoke(url: string): void;
125
- }
126
122
  /** Localized refusal labels; adapters supply i18n-backed implementations. */
127
123
  interface DrawingPaintStrings {
128
124
  readonly unsupportedFormat: (format: string) => string;
125
+ /**
126
+ * The whole label of a placeholder for a graphic that is not a picture. `kind` is a
127
+ * `DrawingPlaceholderKind` (`chart`, `diagram`, `shape`, `group`, `textbox`, `canvas` or
128
+ * `graphic`); the label names that kind, so a chart reads as a chart that is not shown.
129
+ */
129
130
  readonly nonPictureGraphic: (kind: string) => string;
130
131
  readonly missingResource: string;
131
132
  readonly externalResource: string;
@@ -136,6 +137,12 @@ interface DrawingPaintStrings {
136
137
  readonly pendingResource: string;
137
138
  }
138
139
 
140
+ /** Host port for safe blob URLs — only called for {@link ImageResourceState.kind} `ready`. */
141
+ interface PaintImageUrlPort {
142
+ create(handle: ValidatedImageBytesHandle, mime: RenderableImageMime): string;
143
+ revoke(url: string): void;
144
+ }
145
+
139
146
  /** Localized break labels; adapters supply i18n-backed implementations. */
140
147
  interface BreakMarkStrings {
141
148
  readonly pageBreak: string;
@@ -199,6 +206,9 @@ declare const DEFAULT_FIELD_SHADING: FieldShadingMode;
199
206
  * set through these options is ever serialised back into the document.
200
207
  */
201
208
  interface PaintOptions {
209
+ readonly unsupportedOwnerPartName?: (nodeId: string) => string;
210
+ readonly includePartial?: boolean;
211
+ readonly unsupportedSource?: (nodeId: string, ownerPartName?: string) => OoxmlElement | null;
202
212
  /** Points to CSS pixels. 96/72 renders a point as a CSS point at 100% zoom. */
203
213
  readonly scale?: number;
204
214
  /** Generated paragraphs that paint as non-editable navigation surfaces. */
@@ -335,4 +345,4 @@ interface PaintOptions {
335
345
  declare function paintSemanticLayout(container: HTMLElement, layout: SemanticLayout, options?: PaintOptions): void;
336
346
 
337
347
  export { DEFAULT_FIELD_SHADING as D, collectPageChangeBars as e, paintSemanticLayout as p };
338
- export type { BreakMarkStrings as B, ChangeBarsMode as C, FieldShadingMode as F, PageChangeBars as P, ReviewAuthorInfo as R, PaintOptions as a, RevisionAuthorAssignments as b, RevisionAuthorStyle as c, RevisionStyles as d, DrawingPaintStrings as f };
348
+ export type { BreakMarkStrings as B, ChangeBarsMode as C, FieldShadingMode as F, PageChangeBars as P, ReviewAuthorInfo as R, RevisionAuthorAssignments as a, RevisionAuthorStyle as b, RevisionStyles as c, PaintOptions as d, DrawingPaintStrings as f };
@@ -1,4 +1,4 @@
1
- import { I as InlineDrawingRecord, A as AnchoredDrawingRecord, P as ParagraphFragmentRecord, L as LineRecord, c as PageRecord, N as NoteAreaRecord, d as LayoutBox, H as HeaderFooterStoryRecord, e as NoteStoryRecord, B as BlockFragmentRecord, S as SemanticLayout, C as ContentControlBoundaryRecord, f as ContentControlLock } from './semantic-records-B-akgRch.js';
1
+ import { I as InlineDrawingRecord, A as AnchoredDrawingRecord, P as ParagraphFragmentRecord, L as LineRecord, a as PageRecord, N as NoteAreaRecord, b as LayoutBox, H as HeaderFooterStoryRecord, c as NoteStoryRecord, B as BlockFragmentRecord, S as SemanticLayout, C as ContentControlBoundaryRecord, d as ContentControlLock } from './semantic-records-DoK0lNjS.js';
2
2
 
3
3
  /**
4
4
  * Depth-first paragraph fragments of one page, in reading order.