@docx-editor.dev/core 2.30.0 → 2.32.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 (133) hide show
  1. package/README.md +24 -0
  2. package/dist/automation.cjs +1 -1
  3. package/dist/automation.d.ts +18 -27
  4. package/dist/automation.js +1 -1
  5. package/dist/binding.cjs +1 -1
  6. package/dist/binding.d.ts +17 -16
  7. package/dist/binding.js +1 -1
  8. package/dist/bookmark-names-DDuAra_V.d.ts +37 -0
  9. package/dist/{chrome-print-BM3Js-6X.d.ts → chrome-print-CznJ0ucN.d.ts} +361 -41
  10. package/dist/chunk-25EXMBV2.cjs +5 -0
  11. package/dist/chunk-2CWQY27B.cjs +1 -0
  12. package/dist/chunk-3IEXDEFH.cjs +7 -0
  13. package/dist/chunk-65XBN67F.cjs +2 -0
  14. package/dist/chunk-6NVZNB7O.cjs +3 -0
  15. package/dist/chunk-6UDJUI3W.cjs +2 -0
  16. package/dist/chunk-ACLR4DMK.js +1 -0
  17. package/dist/{chunk-RJCQGJR7.js → chunk-B2BEELUE.js} +1 -1
  18. package/dist/chunk-DDFHKQFU.js +30 -0
  19. package/dist/chunk-E4IAO4CY.cjs +2 -0
  20. package/dist/chunk-ETDZFNMI.js +2 -0
  21. package/dist/chunk-FDSL5OJU.cjs +30 -0
  22. package/dist/chunk-FS7CMYLT.js +4 -0
  23. package/dist/chunk-GDS24SZN.js +30 -0
  24. package/dist/chunk-GIY6NT2X.js +5 -0
  25. package/dist/chunk-GWM3AKUD.js +18 -0
  26. package/dist/chunk-HDOXACHP.js +2 -0
  27. package/dist/chunk-IILEENID.js +1 -0
  28. package/dist/chunk-L5TYBFDB.js +1 -0
  29. package/dist/chunk-MNF2K7NN.cjs +30 -0
  30. package/dist/chunk-O324RB6R.cjs +1 -0
  31. package/dist/chunk-OKMEMSKB.cjs +1 -0
  32. package/dist/chunk-QXJKYNYZ.js +1 -0
  33. package/dist/chunk-RALTVLB6.js +2 -0
  34. package/dist/chunk-SRVKFUFI.js +3 -0
  35. package/dist/chunk-TELQ52LG.cjs +1 -0
  36. package/dist/chunk-TJHE5EET.cjs +1 -0
  37. package/dist/chunk-UMMRURPE.js +7 -0
  38. package/dist/chunk-WN7ICTA5.js +1 -0
  39. package/dist/{chunk-FLBEJC6X.cjs → chunk-XJYZVGQR.cjs} +1 -1
  40. package/dist/chunk-ZGTIE3QJ.cjs +4 -0
  41. package/dist/chunk-ZOZI27AW.cjs +18 -0
  42. package/dist/collaboration/replication.cjs +1 -1
  43. package/dist/collaboration/replication.d.ts +20 -5
  44. package/dist/collaboration/replication.js +1 -1
  45. package/dist/collaboration.cjs +1 -1
  46. package/dist/collaboration.d.ts +5 -6
  47. package/dist/collaboration.js +1 -1
  48. package/dist/contracts/document.d.ts +3 -3
  49. package/dist/contracts/editor.d.ts +13 -10
  50. package/dist/contracts/interaction.d.ts +2 -2
  51. package/dist/contracts/modules.d.ts +15 -13
  52. package/dist/contracts/types.d.ts +135 -2
  53. package/dist/{custom-node-writes-0v0Kgw1T.d.ts → custom-node-writes-CLJKGD9t.d.ts} +7 -2
  54. package/dist/{diagnostic-context-CcAO4q1s.d.ts → diagnostic-context-BtDUY3v2.d.ts} +3 -2
  55. package/dist/{diagnostic-hints-2Bke6H_w.d.ts → diagnostic-hints-DK8-V0fk.d.ts} +2 -2
  56. package/dist/{document-protection-8eyMWIJ0.d.ts → document-protection-NaniLHWF.d.ts} +1 -1
  57. package/dist/{editor-DaEJd2so.d.ts → editor-DZwOTmlR.d.ts} +386 -279
  58. package/dist/editor-fonts-D_-vjuJi.d.ts +53 -0
  59. package/dist/{editor-scope-7o9xweiJ.d.ts → editor-scope-B3L-1ALc.d.ts} +57 -4
  60. package/dist/editor.cjs +1 -1
  61. package/dist/editor.css +6 -4
  62. package/dist/editor.d.ts +646 -31
  63. package/dist/editor.js +1 -1
  64. package/dist/export.cjs +2 -2
  65. package/dist/export.d.ts +9 -16
  66. package/dist/export.js +2 -2
  67. package/dist/{failure-NS2lsya4.d.ts → failure-6KGFrDO9.d.ts} +1 -1
  68. package/dist/{font-resolver-CL9BVKZo.d.ts → font-resolver-BlQNGdvR.d.ts} +1 -1
  69. package/dist/{headless-document-view-DZQN8Bnx.d.ts → headless-document-view-Bcz9_Qva.d.ts} +115 -4
  70. package/dist/index.cjs +1 -1
  71. package/dist/index.d.ts +27 -26
  72. package/dist/index.js +1 -1
  73. package/dist/{layout-shaping-cEnVrhWg.d.ts → layout-shaping-E5J4Z1Gf.d.ts} +1 -1
  74. package/dist/layout.cjs +1 -1
  75. package/dist/layout.d.ts +95 -23
  76. package/dist/layout.js +1 -1
  77. package/dist/{note-properties-9FH8zAeG.d.ts → note-properties-Ds5R2_3F.d.ts} +1 -1
  78. package/dist/output.cjs +1 -1
  79. package/dist/output.d.ts +24 -10
  80. package/dist/output.js +1 -1
  81. package/dist/{protocol-CZ1uUlPO.d.ts → protocol-DKa4qt7F.d.ts} +167 -5
  82. package/dist/{review-paragraph-order-CqVelc5A.d.ts → review-paragraph-order-Dc17w_6v.d.ts} +1 -1
  83. package/dist/revision-projection-Cn6rZJ7H.d.ts +258 -0
  84. package/dist/{semantic-cell-selection-Dr9yxFZt.d.ts → semantic-cell-selection-BaUR0iJ4.d.ts} +2 -2
  85. package/dist/{semantic-interaction-Dc3pf3hr.d.ts → semantic-interaction-CJoHLoOl.d.ts} +1 -1
  86. package/dist/{semantic-paint-Bz3FBAoH.d.ts → semantic-paint-BPw_n0li.d.ts} +7 -4
  87. package/dist/{semantic-record-queries-Bx0pl6kL.d.ts → semantic-record-queries-C0rJ3sB4.d.ts} +1 -1
  88. package/dist/{semantic-records-CjcF26ZL.d.ts → semantic-records-BvN-WWst.d.ts} +365 -512
  89. package/dist/store.cjs +1 -1
  90. package/dist/store.d.ts +47 -22
  91. package/dist/store.js +1 -1
  92. package/dist/{types-barrel-CA0xB8kH.d.ts → tree-op-types-C_S2niXW.d.ts} +1239 -747
  93. package/dist/{tree-package-store-DKhdEVym.d.ts → tree-package-store-CRHvMyNj.d.ts} +676 -646
  94. package/dist/{tree-session-contract-CwnTEVLF.d.ts → tree-session-contract-D1awo_dA.d.ts} +26 -13
  95. package/dist/unsupported-elements-CVos5cqe.d.ts +23 -0
  96. package/docs/accept-reject-without-scrolling.md +95 -0
  97. package/docs/comment-on-found-text.md +72 -0
  98. package/docs/custom-review-cards.md +178 -0
  99. package/docs/highlight-ranges.md +48 -0
  100. package/docs/index.md +36 -0
  101. package/docs/propose-rewrite.md +247 -0
  102. package/docs/tracked-replacement.md +68 -0
  103. package/package.json +3 -2
  104. package/dist/chunk-2PV5L5NJ.js +0 -5
  105. package/dist/chunk-5OTS2EJ7.js +0 -7
  106. package/dist/chunk-5P4223J4.cjs +0 -27
  107. package/dist/chunk-5RRAZMBU.cjs +0 -1
  108. package/dist/chunk-5SPITS5F.js +0 -18
  109. package/dist/chunk-6JIJOZDW.js +0 -1
  110. package/dist/chunk-7ATNKARV.js +0 -2
  111. package/dist/chunk-BGCUTKWE.cjs +0 -5
  112. package/dist/chunk-BTQKU64Q.cjs +0 -1
  113. package/dist/chunk-EBCXSH2W.js +0 -3
  114. package/dist/chunk-ERECKTIR.cjs +0 -2
  115. package/dist/chunk-HYASLE2G.cjs +0 -1
  116. package/dist/chunk-JC47NRJC.cjs +0 -3
  117. package/dist/chunk-KJRTNY2Q.cjs +0 -2
  118. package/dist/chunk-NKPUH3QJ.js +0 -1
  119. package/dist/chunk-PF5NJWS3.js +0 -2
  120. package/dist/chunk-PWTRJSES.cjs +0 -18
  121. package/dist/chunk-QFKGI242.cjs +0 -30
  122. package/dist/chunk-RPPV4S6T.cjs +0 -4
  123. package/dist/chunk-T32MGBJS.js +0 -1
  124. package/dist/chunk-UM26GH5B.js +0 -30
  125. package/dist/chunk-VRCZBFLH.js +0 -27
  126. package/dist/chunk-WF7JZ755.cjs +0 -1
  127. package/dist/chunk-WK5X2MMA.cjs +0 -7
  128. package/dist/chunk-WPDD2Y32.js +0 -2
  129. package/dist/chunk-YBMWBXST.cjs +0 -2
  130. package/dist/chunk-YZGUBCHP.js +0 -1
  131. package/dist/chunk-ZOS2PM4A.js +0 -4
  132. package/dist/image-resources-Bipz8toD.d.ts +0 -211
  133. package/dist/omml-equation-DP2WpUbK.d.ts +0 -97
@@ -1,252 +1,6 @@
1
- import { N as OoxmlNode, am as OoxmlProperty, O as OoxmlPart, ah as OoxmlElement, aQ as TableBorderStyle, aR as DrawingAccessibility, aS as DrawingImageEffects, aJ as SourceCrop, aP as DrawingTransform, aT as VectorShapeProjection, X as DrawingHorizontalReferenceFrame, $ as DrawingVerticalReferenceFrame, a1 as ImageWrapTarget, al as DrawingProjection, aU as OoxmlDrawingNode } from './types-barrel-CA0xB8kH.js';
2
- import { I as ImageResourceState } from './image-resources-Bipz8toD.js';
3
- import { O as OmmlEquationProjection } from './omml-equation-DP2WpUbK.js';
4
-
5
- /** Named revision colors. Identifiers are stable and never contain CSS. @public */
6
- 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'];
7
- /** @public */
8
- type RevisionMarkupNamedColor = (typeof REVISION_MARKUP_COLORS)[number];
9
- /** @public */
10
- type RevisionMarkupColor = RevisionMarkupNamedColor | 'byAuthor' | 'auto';
11
- /** @public */
12
- type RevisionMarkupMark = 'none' | 'colorOnly' | 'bold' | 'italic' | 'underline' | 'doubleUnderline' | 'strikethrough' | 'doubleStrikethrough';
13
- /** @public */
14
- type RevisionDeletionMark = RevisionMarkupMark | 'hidden' | 'caret' | 'pound';
15
- /** @public */
16
- type RevisionChangedLinesMark = 'none' | 'leftBorder' | 'rightBorder' | 'outsideBorder';
17
- /** @public */
18
- interface RevisionMarkupStyle<Mark extends string = RevisionMarkupMark> {
19
- readonly mark: Mark;
20
- readonly color: RevisionMarkupColor;
21
- }
22
- /** Viewer-only text styling. Document highlighting remains unchanged. @public */
23
- interface RevisionMarkupTextStyle<Mark extends string = RevisionMarkupMark> extends RevisionMarkupStyle<Mark> {
24
- /** Background color behind revision text. Defaults to `none`. */
25
- readonly background: RevisionMarkupNamedColor | 'byAuthor' | 'none';
26
- }
27
- /** Fully resolved, immutable viewer preferences. @public */
28
- interface ResolvedRevisionMarkup {
29
- readonly insertions: RevisionMarkupTextStyle;
30
- readonly deletions: RevisionMarkupTextStyle<RevisionDeletionMark>;
31
- readonly movedFrom: RevisionMarkupTextStyle<RevisionDeletionMark>;
32
- readonly movedTo: RevisionMarkupTextStyle;
33
- readonly formatting: RevisionMarkupTextStyle;
34
- readonly changedLines: RevisionMarkupStyle<RevisionChangedLinesMark>;
35
- readonly cells: {
36
- readonly inserted: RevisionMarkupNamedColor | 'byAuthor' | 'none';
37
- readonly deleted: RevisionMarkupNamedColor | 'byAuthor' | 'none';
38
- readonly merged: RevisionMarkupNamedColor | 'byAuthor' | 'none';
39
- readonly split: RevisionMarkupNamedColor | 'byAuthor' | 'none';
40
- };
41
- readonly trackMoves: boolean;
42
- readonly trackFormatting: boolean;
43
- }
44
- /** Partial viewer preferences. Omitted values keep the previous value. @public */
45
- type RevisionMarkupOptions = {
46
- readonly [K in keyof ResolvedRevisionMarkup]?: ResolvedRevisionMarkup[K] extends boolean ? boolean : Partial<ResolvedRevisionMarkup[K]>;
47
- };
48
- /** Initial viewer preferences. @public */
49
- declare const DEFAULT_REVISION_MARKUP: ResolvedRevisionMarkup;
50
- /** Validate and merge preferences without modifying the input. @public */
51
- declare function resolveRevisionMarkup(input?: RevisionMarkupOptions, previous?: ResolvedRevisionMarkup): ResolvedRevisionMarkup;
52
- /** A local settings draft owned by the editor. @public */
53
- interface RevisionMarkupDialogSession {
54
- /** Aborts on close, replacement, load, detach, destroy, or renderer disposal. */
55
- readonly signal: AbortSignal;
56
- /** Read the immutable draft. */
57
- get(): ResolvedRevisionMarkup;
58
- /** Merge validated options into the draft without committing preferences. */
59
- set(options: RevisionMarkupOptions): void;
60
- /** Restore default preferences in the draft only. */
61
- reset(): void;
62
- /** Observe draft changes, including effective external preference changes. */
63
- subscribe(listener: () => void): () => void;
64
- canApply(): boolean;
65
- /** Commit the draft and close. Returns false after cancellation. */
66
- apply(): boolean;
67
- /** Close without committing the draft. */
68
- cancel(): void;
69
- }
70
- /** Host rendering for the Track changes options dialog. @public */
71
- interface RevisionMarkupChromeHandlers {
72
- readonly onRequest?: (session: RevisionMarkupDialogSession) => void;
73
- }
74
-
75
- /**
76
- * What a revision wrapper asserts about the content inside it.
77
- *
78
- * `moveFrom` / `moveTo` are deliberately distinct from `delete` / `insert`: a move is one
79
- * decision with two halves, and presenting it as an unrelated deletion and insertion invites
80
- * resolving one without the other, which duplicates or loses the content.
81
- */
82
- type RevisionKind = 'insert' | 'delete' | 'moveFrom' | 'moveTo' | 'format';
83
- /**
84
- * One revision wrapper's provenance, as authored.
85
- *
86
- * `id` is the verbatim `@w:id` string rather than a number: `ST_DecimalNumber` restricts
87
- * `xsd:integer` with no bounds, so a file may carry a value outside the safe integer range, and
88
- * parsing it to a number would silently merge two distinct revisions.
89
- *
90
- * `date` is absent when the file omits it. `@w:date` is optional on `CT_TrackChange`, and
91
- * inventing one is a silent content change.
92
- */
93
- interface RevisionAttribution {
94
- readonly kind: RevisionKind;
95
- readonly id: string;
96
- readonly author: string;
97
- readonly date?: string;
98
- /** The wrapper's node id, so a surface can address this exact site. */
99
- readonly nodeId: string;
100
- }
101
- /**
102
- * Which revisions layout resolves before producing pages.
103
- *
104
- * - `all-markup` shows both halves of every change.
105
- * - `proposed` shows what the document becomes if every change is accepted.
106
- * - `original` shows what it was before any of them.
107
- *
108
- * The last two are specified as equal to accept-all and reject-all OUTPUT, which is what makes
109
- * them testable, without either applying an op.
110
- */
111
- type RevisionDisplayMode = 'all-markup' | 'proposed' | 'original';
112
- /**
113
- * The views the review chrome offers, in Word's terms: the three layout projections plus
114
- * Simple Markup, which reads as the proposed result with a red change bar beside every line
115
- * a change touched — the document as accepting everything would leave it, and where.
116
- */
117
- type ReviewDisplayMode = RevisionDisplayMode | 'simple-markup';
118
- /**
119
- * How a document renders tracked changes when nothing says otherwise.
120
- *
121
- * `all-markup` matches Word's own default: a reader who opens a document with pending changes
122
- * sees them, rather than a clean-looking document hiding edits nobody has accepted.
123
- */
124
- declare const DEFAULT_REVISION_DISPLAY_MODE: RevisionDisplayMode;
125
- /**
126
- * A view-time tracked-change filter. Revisions rejected by `includes` use the filter's accepted
127
- * or rejected projection, while included revisions keep the display mode's normal projection.
128
- *
129
- * `cacheKey` is a canonical, content-based identity for layout caches. The set itself is kept
130
- * because author names are attacker-controlled strings and must never be parsed back from a
131
- * delimiter-based key.
132
- */
133
- interface RevisionFilter {
134
- readonly revisionMarkup?: ResolvedRevisionMarkup;
135
- readonly hiddenAuthors: ReadonlySet<string>;
136
- readonly includes?: (revision: RevisionAttribution) => boolean;
137
- readonly includesNode?: (nodeId: string, author: string) => boolean;
138
- /** Accepted/original projection for a revision excluded by `includesNode`. */
139
- readonly excludedNodeMode?: (nodeId: string, author: string) => 'proposed' | 'original';
140
- /**
141
- * In a resolved view, content the view keeps paints as ORDINARY text: no author ink, no
142
- * decoration, no change bar of its own. This is Word's No Markup, Original and Simple
143
- * Markup, which the review chrome asks for. Without it the accepted projection keeps the
144
- * attribution on kept insertions, which is what the engine paints when no review module
145
- * is registered — colour by author, deletions resolved — and what its roster reads.
146
- */
147
- readonly resolvedMarkup?: 'plain';
148
- readonly cacheKey: string;
149
- }
150
- /** @deprecated Use {@link RevisionFilter}. */
151
- interface RevisionAuthorFilter extends RevisionFilter {
152
- }
153
- /** Build a canonical reviewer filter. An empty input returns `undefined` for the fast path. */
154
- declare function revisionAuthorFilter(hiddenAuthors: Iterable<string>): RevisionAuthorFilter | undefined;
155
- /**
156
- * Whether content under this stack of revisions is laid out in the given mode.
157
- *
158
- * Containment governs, so a single enclosing wrapper the mode resolves away suppresses
159
- * everything inside it regardless of what the inner wrappers say. An insertion inside a
160
- * deletion does not survive the proposed result: the deletion it sits in was accepted.
161
- */
162
- declare function revisionsVisible(revisions: readonly RevisionAttribution[], mode: RevisionDisplayMode, authorFilter?: RevisionAuthorFilter): boolean;
163
- /**
164
- * Every revision on a paragraph's own MARK, from `w:pPr/w:rPr/w:ins|w:del|w:moveFrom|w:moveTo`.
165
- *
166
- * All four members of `EG_ParaRPrTrackChanges`. A moved paragraph carries `w:moveFrom` on the
167
- * mark of the copy it left and `w:moveTo` on the mark of the copy it arrived at, so a move
168
- * that spans whole paragraphs is recorded here and nowhere else.
169
- *
170
- * `EG_ParaRPrTrackChanges` records that the pilcrow itself was inserted or deleted, which is how
171
- * Word writes a paragraph split or merge. It is not content — there is no text to decorate — so
172
- * a surface shows it as a mark of its own beside the paragraph, the way Word draws a struck-
173
- * through ¶.
174
- *
175
- * A LIST, because the group is `ins? del? moveFrom? moveTo?` and the first two can both be
176
- * there: that pair is what Word writes when a second author proposes removing a mark the first
177
- * proposed adding, and it is what this engine's own writer emits (`tree-op-tracked.ts`).
178
- * Answering with the first one hid the second author's decision from the PAGE. The review pane
179
- * walks the tree itself and always listed both, which is the worse shape of the two: a card
180
- * offering a decision the reader could see no sign of.
181
- *
182
- * Ordered as the file orders them, which is the order the group declares.
183
- *
184
- * Property-position `w:ins`/`w:del` stay `generic` in the tree deliberately, so this reads them
185
- * by name rather than by kind.
186
- */
187
- declare function paragraphMarkRevisionsOf(paragraph: OoxmlNode): readonly RevisionAttribution[];
188
- /**
189
- * The tracked FORMAT change on a paragraph's own mark, from `w:pPr/w:rPr/w:rPrChange`.
190
- *
191
- * `CT_ParaRPr` ends with it (§17.13.5.32), and Word writes it when a user changes the mark's
192
- * own run properties with tracking on. It reaches the fragment rather than a span because it
193
- * decorates no characters, and it is not in `props`: a fragment's `props` carry the mark's
194
- * `w:rPr` by NAME only, with none of its children.
195
- *
196
- * Note that `w:rPrChange/w:rPr` is `CT_ParaRPrOriginal`, which may carry its own revision
197
- * marks. Those describe the mark as it WAS and must not be read as live ones, which is why
198
- * this reads the change element's own attributes and never descends into it.
199
- */
200
- declare function paragraphMarkFormatRevisionOf(paragraph: OoxmlNode): RevisionAttribution | null;
201
- /**
202
- * The single decision a one-field reader sees.
203
- *
204
- * A DELETION wins when a mark carries both, for the reason paint draws it that way: a break
205
- * proposed and then unproposed ends up removed, so that is the decision a reader who can only
206
- * see one must see. One function decides it, so the deprecated field, the deprecated function
207
- * and the painted glyph cannot answer differently.
208
- */
209
- declare function shownMarkRevision(revisions: readonly RevisionAttribution[]): RevisionAttribution | undefined;
210
- /**
211
- * Does this decision, taken, remove the paragraph mark?
212
- *
213
- * A deletion does, and so does a `moveFrom`: the copy the paragraph moved OUT of goes away
214
- * when the move is accepted. `insert` and `moveTo` are the other half of each pair, and they
215
- * keep the break. Paint, the change bar and the resolved views all ask this one question, so
216
- * a `moveFrom` cannot end up struck through in the margin and blue on the glyph.
217
- */
218
- declare function markRevisionRemovesMark(revision: RevisionAttribution): boolean;
219
- /**
220
- * The one decision on a paragraph's mark that a single-field reader sees.
221
- *
222
- * @deprecated Reads one of the revisions a mark can carry. Use {@link paragraphMarkRevisionsOf},
223
- * which answers with all of them.
224
- */
225
- declare function paragraphMarkRevisionOf(paragraph: OoxmlNode): RevisionAttribution | null;
226
- /**
227
- * The tracked FORMAT change on a property list, from `w:rPrChange` or `w:pPrChange`.
228
- *
229
- * A property change alters no characters, so it has no span of its own to strike or underline.
230
- * Word marks the affected text and says what changed; the minimum a reader needs is to see that
231
- * this text's formatting is itself a pending decision.
232
- *
233
- * Read from the flattened property list because that is what layout already carries — the
234
- * change wrapper is a `w:rPr`/`w:pPr` child like any other.
235
- */
236
- declare function formatRevisionOf(properties: readonly {
237
- readonly localName: string;
238
- readonly attributes?: Readonly<Record<string, string>>;
239
- }[]): RevisionAttribution | null;
240
- /** True when this stack of revisions marks its content as deleted from the live document. */
241
- declare function revisionsAreDeletion(revisions: readonly RevisionAttribution[]): boolean;
242
-
243
- /** A strikeout stroke at the drawn size, in points. `offsetPt` is the stroke TOP. @public */
244
- interface StrikeoutStrokePt {
245
- /** Distance from the baseline UP to the top of the stroke. */
246
- readonly offsetPt: number;
247
- /** Stroke height. Always positive. */
248
- readonly thicknessPt: number;
249
- }
1
+ import { a4 as OoxmlNode, az as OoxmlProperty, O as OoxmlPart, av as OoxmlElement, b3 as TableBorderStyle, af as ImageResourceState, b4 as DrawingAccessibility, b5 as DrawingImageEffects, aT as SourceCrop, b2 as DrawingTransform, b6 as VectorShapeProjection, a7 as DrawingHorizontalReferenceFrame, ab as DrawingVerticalReferenceFrame, ag as ImageWrapTarget, b7 as DrawingProjection, b8 as OoxmlDrawingNode } from './tree-op-types-C_S2niXW.js';
2
+ import { b as RevisionDisplayMode, p as RevisionAuthorFilter, q as RevisionAttribution } from './revision-projection-Cn6rZJ7H.js';
3
+ import { O as OmmlEquationProjection, H as HeadlessDocumentView } from './headless-document-view-Bcz9_Qva.js';
250
4
 
251
5
  /**
252
6
  * Whether a paragraph must start a new page (`w:pageBreakBefore`).
@@ -1682,112 +1436,6 @@ interface StoryPageFieldNeeds {
1682
1436
  readonly hasPageParity?: boolean;
1683
1437
  }
1684
1438
 
1685
- interface DrawingPoint {
1686
- readonly x: number;
1687
- readonly y: number;
1688
- }
1689
- interface DrawingInsets {
1690
- readonly top: number;
1691
- readonly right: number;
1692
- readonly bottom: number;
1693
- readonly left: number;
1694
- }
1695
- type DrawingClipFallback = 'none' | 'unsupported-preset';
1696
- interface DrawingGeometry {
1697
- readonly contentBounds: LayoutBox;
1698
- readonly paintBounds: LayoutBox;
1699
- readonly hitBounds: LayoutBox;
1700
- readonly transformedCorners: readonly DrawingPoint[];
1701
- /** Unclipped image corners for affine encoding; clipping must not stretch the image. */
1702
- readonly imageTransformCorners?: readonly DrawingPoint[];
1703
- readonly clipPolygon: readonly DrawingPoint[] | null;
1704
- readonly clipFallback: DrawingClipFallback;
1705
- readonly effectInsets: DrawingInsets;
1706
- }
1707
-
1708
- /**
1709
- * UAX #9 embedding levels, one per UTF-16 code unit, plus the paragraph ranges they were resolved
1710
- * within.
1711
- *
1712
- * The level is EXACT, not a direction: its parity gives direction, but the numeric value is what
1713
- * reordering needs, and collapsing it early loses nested isolates.
1714
- */
1715
- interface BidiEmbeddingLevels {
1716
- readonly levels: Uint8Array;
1717
- readonly paragraphs: readonly {
1718
- readonly start: number;
1719
- readonly end: number;
1720
- readonly level: number;
1721
- }[];
1722
- }
1723
-
1724
- /**
1725
- * Which `w:rFonts` slot a character resolves its face through.
1726
- *
1727
- * OOXML gives a run up to four faces and picks between them by SCRIPT, so one run of mixed Latin
1728
- * and CJK text uses two different fonts without saying so anywhere in its properties.
1729
- */
1730
- type FontSlot = 'ascii' | 'hAnsi' | 'eastAsia' | 'cs';
1731
- /**
1732
- * A run of text sharing one script, direction and font slot — the unit handed to the shaper.
1733
- *
1734
- * Shaping cannot span a script change: Arabic and Latin in one call would produce wrong joining
1735
- * behaviour, so a run is itemized into these first.
1736
- */
1737
- interface ScriptItem {
1738
- readonly from: number;
1739
- readonly to: number;
1740
- readonly direction: TextDirection;
1741
- readonly bidiLevel: number;
1742
- readonly script: 'Zyyy' | 'Latn' | 'Grek' | 'Cyrl' | 'Hani' | 'Hebr' | 'Arab' | 'Deva' | 'Beng' | 'Thai' | 'Khmr';
1743
- readonly slot: FontSlot;
1744
- }
1745
- /**
1746
- * A code point whose script this engine does not itemize.
1747
- *
1748
- * Carries the offending `codePoint` so the caller can report which character stopped it, rather
1749
- * than failing anonymously somewhere in the middle of a paragraph.
1750
- */
1751
- declare class UnsupportedScriptError extends Error {
1752
- readonly name = "UnsupportedScriptError";
1753
- readonly code = "unsupportedScript";
1754
- readonly codePoint: number;
1755
- constructor(codePoint: number);
1756
- }
1757
- /**
1758
- * Split text into shapeable runs by script, bidi level and font slot.
1759
- *
1760
- * Consumes the bidi levels rather than re-deriving direction, so itemization and reordering agree
1761
- * by construction instead of by two implementations happening to match.
1762
- */
1763
- declare function itemizeScriptFontSlots(text: string, paragraphOffset: number, embedding: BidiEmbeddingLevels): readonly ScriptItem[];
1764
- /**
1765
- * The style a piece's text is MEASURED AND PAINTED in, given the font slot it carries.
1766
- *
1767
- * This is the measurer-boundary resolution: pieces and spans keep the run's real resolved
1768
- * style — with `fontFamily` and `fontFamilyEastAsia` both intact, so formatting readback
1769
- * and the format painter see the run as authored — and every consumer that turns text into
1770
- * geometry or ink resolves the face through here. The derived object is memoized per
1771
- * (style, family) by {@link withFontFamily}, so measurers amortizing over style identity
1772
- * keep their caches.
1773
- */
1774
- declare function styleForFontSlot(style: ResolvedRunStyle, slot: FontSlot | undefined): ResolvedRunStyle;
1775
-
1776
- /**
1777
- * One parsed `HYPERLINK` instruction: the raw, unsanitized pieces.
1778
- *
1779
- * `target` and `anchor` are verbatim from the instruction — the projector at the trust
1780
- * boundary decides what, if anything, they become in a DOM sink.
1781
- */
1782
- interface HyperlinkFieldSpec {
1783
- /** The target as authored (first quoted or bare non-switch token), or null. */
1784
- readonly target: string | null;
1785
- /** `\l` — a bookmark name in this document, or null. */
1786
- readonly anchor: string | null;
1787
- /** `\o` — the hover tooltip, or null. */
1788
- readonly tooltip: string | null;
1789
- }
1790
-
1791
1439
  /** One recognized REF instruction: the target name and the supported switches, nothing else. */
1792
1440
  interface RefFieldSpec {
1793
1441
  readonly bookmark: string;
@@ -1867,35 +1515,244 @@ interface RefFieldContext {
1867
1515
  */
1868
1516
  type PageRefCalibrationCell = Readonly<Record<never, never>>;
1869
1517
  /**
1870
- * What a `PAGEREF` span carries to document finalize: the resolved target, the normalized
1871
- * authored cache (the calibration oracle), and the sticky calibration identity.
1518
+ * What a `PAGEREF` span carries to document finalize: the resolved target, the normalized
1519
+ * authored cache (the calibration oracle), and the sticky calibration identity.
1520
+ */
1521
+ interface PageRefFieldProjection {
1522
+ /** Canonical id of the paragraph the bookmark names — first declaration wins. */
1523
+ readonly targetParagraphId: string;
1524
+ /** The authored cached result, whitespace-collapsed — what the computed number must reproduce. */
1525
+ readonly cached: string;
1526
+ readonly calibration: PageRefCalibrationCell;
1527
+ }
1528
+ /**
1529
+ * Note parts whose stories join the context: their REF fields resolve against the body's
1530
+ * bookmarks and numbering (a footnote citing "Section 1.2(c)" targets a body paragraph),
1531
+ * and their bookmark declarations become plain-REF targets. Number switches aimed AT a
1532
+ * note paragraph still fall back to the cached result — the list map is the body's.
1533
+ */
1534
+ interface RefNoteParts {
1535
+ readonly footnotesPart: OoxmlPart | null;
1536
+ readonly endnotesPart: OoxmlPart | null;
1537
+ }
1538
+ /**
1539
+ * Resolve the document's REF fields for one layout pass, or null when it has none.
1540
+ *
1541
+ * Bookmarks and REF fields resolve across the body story and (when `notes` is given) the
1542
+ * footnote/endnote stories, against ONE shared target index — a footnote REF finds the
1543
+ * body bookmark it cites. Header/footer and text-box stories are not given a context and
1544
+ * keep painting cached results.
1545
+ */
1546
+ declare function resolveStoryRefFields(blocks: readonly OoxmlElement[], listItems: ReadonlyMap<string, ResolvedListItem> | undefined, notes?: RefNoteParts): RefFieldContext | null;
1547
+
1548
+ interface EquationGeometryBase {
1549
+ readonly box: LayoutBox;
1550
+ /** Baseline measured from this node's top edge. */
1551
+ readonly baseline: number;
1552
+ }
1553
+ interface EquationTextGeometry extends EquationGeometryBase {
1554
+ readonly kind: 'text' | 'fallback';
1555
+ readonly text: string;
1556
+ readonly fontSizePt: number;
1557
+ /** The same resolved face used by measurement and the trusted paint sink. */
1558
+ readonly runStyle?: ResolvedRunStyle;
1559
+ }
1560
+ interface EquationRowGeometry extends EquationGeometryBase {
1561
+ readonly kind: 'row';
1562
+ readonly items: readonly EquationGeometry[];
1563
+ }
1564
+ interface EquationFractionGeometry extends EquationGeometryBase {
1565
+ readonly kind: 'fraction';
1566
+ readonly numerator: EquationGeometry;
1567
+ readonly denominator: EquationGeometry;
1568
+ readonly bar: LayoutBox;
1569
+ }
1570
+ interface EquationRadicalGeometry extends EquationGeometryBase {
1571
+ readonly kind: 'radical';
1572
+ readonly sign: EquationTextGeometry;
1573
+ readonly radicand: EquationGeometry;
1574
+ readonly degree?: EquationGeometry;
1575
+ readonly bar: LayoutBox;
1576
+ }
1577
+ interface EquationBarGeometry extends EquationGeometryBase {
1578
+ readonly kind: 'bar';
1579
+ readonly body: EquationGeometry;
1580
+ readonly bar: LayoutBox;
1581
+ }
1582
+ interface EquationScriptGeometry extends EquationGeometryBase {
1583
+ readonly kind: 'script';
1584
+ readonly base: EquationGeometry;
1585
+ readonly subscript?: EquationGeometry;
1586
+ readonly superscript?: EquationGeometry;
1587
+ }
1588
+ interface EquationNaryGeometry extends EquationGeometryBase {
1589
+ readonly kind: 'nary';
1590
+ readonly operator: EquationTextGeometry;
1591
+ readonly body: EquationGeometry;
1592
+ readonly lowerLimit?: EquationGeometry;
1593
+ readonly upperLimit?: EquationGeometry;
1594
+ }
1595
+ type EquationGeometry = EquationTextGeometry | EquationRowGeometry | EquationFractionGeometry | EquationRadicalGeometry | EquationBarGeometry | EquationScriptGeometry | EquationNaryGeometry;
1596
+ /** Equation metadata carried by one atomic semantic span. */
1597
+ interface EquationSpanRecord {
1598
+ readonly sourceNodeId: string;
1599
+ readonly geometry: EquationGeometry;
1600
+ readonly fallbackText: string;
1601
+ readonly truncated: boolean;
1602
+ }
1603
+ /** Compose one bounded OMML projection into paint-ready point geometry. */
1604
+ declare function layoutEquation(projection: OmmlEquationProjection, measurer: TextMeasurer, style: ResolvedRunStyle): EquationSpanRecord;
1605
+
1606
+ /** Source metadata for content the engine cannot render. @public */
1607
+ interface UnsupportedElement {
1608
+ readonly nodeId: string;
1609
+ readonly ownerPartName: string;
1610
+ readonly namespaceUri: string | null;
1611
+ readonly localName: string;
1612
+ /** Lossless canonical source. Treat this value as read-only and untrusted. */
1613
+ readonly source: OoxmlElement | null;
1614
+ readonly placement: 'inline' | 'block';
1615
+ readonly label: string;
1616
+ /** Reserved geometry in document points, when the element has been laid out. */
1617
+ readonly bounds?: LayoutBox;
1618
+ readonly drawing?: InlineDrawingRecord | AnchoredDrawingRecord;
1619
+ readonly equation?: EquationSpanRecord;
1620
+ }
1621
+ /** Dimensions reserved before pagination, in document points. @public */
1622
+ interface UnsupportedElementLayout {
1623
+ readonly width: number;
1624
+ readonly height: number;
1625
+ }
1626
+ /** The first matching registration renders each unsupported element. @public */
1627
+ interface UnsupportedElementRule {
1628
+ readonly match?: (element: UnsupportedElement) => boolean;
1629
+ readonly layout?: UnsupportedElementLayout;
1630
+ }
1631
+
1632
+ /** Reserved geometry for one opaque content component. @internal */
1633
+ interface UnsupportedContentRecord {
1634
+ readonly element: UnsupportedElement;
1635
+ readonly display: 'inline' | 'block';
1636
+ readonly width: number;
1637
+ readonly height: number;
1638
+ }
1639
+ /** Host dimensions in points; absent keeps the engine's hidden fallback. @internal */
1640
+ type UnsupportedContentResolver = (element: UnsupportedElement) => UnsupportedElementLayout | null | undefined;
1641
+ /**
1642
+ * Create one projection per renderer registration set. Reused source parts retain identity.
1643
+ * The result is layout input only. Never serialize it or use it as an editing store.
1644
+ * @internal
1645
+ */
1646
+ declare function createUnsupportedContentProjector(resolve: UnsupportedContentResolver): {
1647
+ part(part: OoxmlPart): OoxmlPart;
1648
+ view(view: HeadlessDocumentView): HeadlessDocumentView;
1649
+ };
1650
+
1651
+ interface DrawingPoint {
1652
+ readonly x: number;
1653
+ readonly y: number;
1654
+ }
1655
+ interface DrawingInsets {
1656
+ readonly top: number;
1657
+ readonly right: number;
1658
+ readonly bottom: number;
1659
+ readonly left: number;
1660
+ }
1661
+ type DrawingClipFallback = 'none' | 'unsupported-preset';
1662
+ interface DrawingGeometry {
1663
+ readonly contentBounds: LayoutBox;
1664
+ readonly paintBounds: LayoutBox;
1665
+ readonly hitBounds: LayoutBox;
1666
+ readonly transformedCorners: readonly DrawingPoint[];
1667
+ /** Unclipped image corners for affine encoding; clipping must not stretch the image. */
1668
+ readonly imageTransformCorners?: readonly DrawingPoint[];
1669
+ readonly clipPolygon: readonly DrawingPoint[] | null;
1670
+ readonly clipFallback: DrawingClipFallback;
1671
+ readonly effectInsets: DrawingInsets;
1672
+ }
1673
+
1674
+ /**
1675
+ * UAX #9 embedding levels, one per UTF-16 code unit, plus the paragraph ranges they were resolved
1676
+ * within.
1677
+ *
1678
+ * The level is EXACT, not a direction: its parity gives direction, but the numeric value is what
1679
+ * reordering needs, and collapsing it early loses nested isolates.
1680
+ */
1681
+ interface BidiEmbeddingLevels {
1682
+ readonly levels: Uint8Array;
1683
+ readonly paragraphs: readonly {
1684
+ readonly start: number;
1685
+ readonly end: number;
1686
+ readonly level: number;
1687
+ }[];
1688
+ }
1689
+
1690
+ /**
1691
+ * Which `w:rFonts` slot a character resolves its face through.
1692
+ *
1693
+ * OOXML gives a run up to four faces and picks between them by SCRIPT, so one run of mixed Latin
1694
+ * and CJK text uses two different fonts without saying so anywhere in its properties.
1695
+ */
1696
+ type FontSlot = 'ascii' | 'hAnsi' | 'eastAsia' | 'cs';
1697
+ /**
1698
+ * A run of text sharing one script, direction and font slot — the unit handed to the shaper.
1699
+ *
1700
+ * Shaping cannot span a script change: Arabic and Latin in one call would produce wrong joining
1701
+ * behaviour, so a run is itemized into these first.
1702
+ */
1703
+ interface ScriptItem {
1704
+ readonly from: number;
1705
+ readonly to: number;
1706
+ readonly direction: TextDirection;
1707
+ readonly bidiLevel: number;
1708
+ readonly script: 'Zyyy' | 'Latn' | 'Grek' | 'Cyrl' | 'Hani' | 'Hebr' | 'Arab' | 'Deva' | 'Beng' | 'Thai' | 'Khmr';
1709
+ readonly slot: FontSlot;
1710
+ }
1711
+ /**
1712
+ * A code point whose script this engine does not itemize.
1713
+ *
1714
+ * Carries the offending `codePoint` so the caller can report which character stopped it, rather
1715
+ * than failing anonymously somewhere in the middle of a paragraph.
1716
+ */
1717
+ declare class UnsupportedScriptError extends Error {
1718
+ readonly name = "UnsupportedScriptError";
1719
+ readonly code = "unsupportedScript";
1720
+ readonly codePoint: number;
1721
+ constructor(codePoint: number);
1722
+ }
1723
+ /**
1724
+ * Split text into shapeable runs by script, bidi level and font slot.
1725
+ *
1726
+ * Consumes the bidi levels rather than re-deriving direction, so itemization and reordering agree
1727
+ * by construction instead of by two implementations happening to match.
1872
1728
  */
1873
- interface PageRefFieldProjection {
1874
- /** Canonical id of the paragraph the bookmark names — first declaration wins. */
1875
- readonly targetParagraphId: string;
1876
- /** The authored cached result, whitespace-collapsed — what the computed number must reproduce. */
1877
- readonly cached: string;
1878
- readonly calibration: PageRefCalibrationCell;
1879
- }
1729
+ declare function itemizeScriptFontSlots(text: string, paragraphOffset: number, embedding: BidiEmbeddingLevels): readonly ScriptItem[];
1880
1730
  /**
1881
- * Note parts whose stories join the context: their REF fields resolve against the body's
1882
- * bookmarks and numbering (a footnote citing "Section 1.2(c)" targets a body paragraph),
1883
- * and their bookmark declarations become plain-REF targets. Number switches aimed AT a
1884
- * note paragraph still fall back to the cached result — the list map is the body's.
1731
+ * The style a piece's text is MEASURED AND PAINTED in, given the font slot it carries.
1732
+ *
1733
+ * This is the measurer-boundary resolution: pieces and spans keep the run's real resolved
1734
+ * style — with `fontFamily` and `fontFamilyEastAsia` both intact, so formatting readback
1735
+ * and the format painter see the run as authored — and every consumer that turns text into
1736
+ * geometry or ink resolves the face through here. The derived object is memoized per
1737
+ * (style, family) by {@link withFontFamily}, so measurers amortizing over style identity
1738
+ * keep their caches.
1885
1739
  */
1886
- interface RefNoteParts {
1887
- readonly footnotesPart: OoxmlPart | null;
1888
- readonly endnotesPart: OoxmlPart | null;
1889
- }
1740
+ declare function styleForFontSlot(style: ResolvedRunStyle, slot: FontSlot | undefined): ResolvedRunStyle;
1741
+
1890
1742
  /**
1891
- * Resolve the document's REF fields for one layout pass, or null when it has none.
1743
+ * One parsed `HYPERLINK` instruction: the raw, unsanitized pieces.
1892
1744
  *
1893
- * Bookmarks and REF fields resolve across the body story and (when `notes` is given) the
1894
- * footnote/endnote stories, against ONE shared target index — a footnote REF finds the
1895
- * body bookmark it cites. Header/footer and text-box stories are not given a context and
1896
- * keep painting cached results.
1745
+ * `target` and `anchor` are verbatim from the instruction — the projector at the trust
1746
+ * boundary decides what, if anything, they become in a DOM sink.
1897
1747
  */
1898
- declare function resolveStoryRefFields(blocks: readonly OoxmlElement[], listItems: ReadonlyMap<string, ResolvedListItem> | undefined, notes?: RefNoteParts): RefFieldContext | null;
1748
+ interface HyperlinkFieldSpec {
1749
+ /** The target as authored (first quoted or bare non-switch token), or null. */
1750
+ readonly target: string | null;
1751
+ /** `\l` — a bookmark name in this document, or null. */
1752
+ readonly anchor: string | null;
1753
+ /** `\o` — the hover tooltip, or null. */
1754
+ readonly tooltip: string | null;
1755
+ }
1899
1756
 
1900
1757
  /**
1901
1758
  * What a piece says about the FIELD result it came from, for Word's shading.
@@ -1905,6 +1762,12 @@ declare function resolveStoryRefFields(blocks: readonly OoxmlElement[], listItem
1905
1762
  * view decision made downstream, so this states the fact and nothing about the appearance.
1906
1763
  */
1907
1764
  interface FieldAtomMarker {
1765
+ /**
1766
+ * A plain REF cross-reference with no nested field (not PAGEREF or NOTEREF): its result,
1767
+ * the target's text or number, never changes with pagination, so a justified line may treat
1768
+ * it as an ordinary word.
1769
+ */
1770
+ readonly fixedResult?: true;
1908
1771
  /**
1909
1772
  * A legacy form field: `w:fldChar/w:ffData` (FORMTEXT, FORMCHECKBOX, FORMDROPDOWN).
1910
1773
  *
@@ -1988,6 +1851,22 @@ type HyperlinkProjector = (link: OoxmlNode) => SpanLinkRecord | null;
1988
1851
  */
1989
1852
  type FieldLinkProjector = (spec: HyperlinkFieldSpec) => SpanLinkRecord | null;
1990
1853
 
1854
+ /** Document-wide East Asian line-break and whitespace policy. @public */
1855
+ interface CjkTypographySettings {
1856
+ /** Apply the strict Japanese small-kana and prolonged-sound-mark restrictions. */
1857
+ readonly strict: boolean;
1858
+ /** Disable adjacent full-width punctuation compression when false. */
1859
+ readonly punctuationKerning?: boolean;
1860
+ /** The document defaults explicitly select an East Asian face as the East Asian font. */
1861
+ readonly sourceEastAsianFont?: boolean;
1862
+ /** Whitespace compression selected by `w:characterSpacingControl`. */
1863
+ readonly compression: 'doNotCompress' | 'compressPunctuation' | 'compressPunctuationAndJapaneseKana';
1864
+ /** Custom no-line-start characters, keyed by normalized language tag. */
1865
+ readonly before: Readonly<Record<string, string>>;
1866
+ /** Custom no-line-end characters, keyed by normalized language tag. */
1867
+ readonly after: Readonly<Record<string, string>>;
1868
+ }
1869
+
1991
1870
  /** Soft ceiling matching Word's practical custom-tab UI limit. */
1992
1871
  declare const MAX_TAB_STOPS = 64;
1993
1872
  /**
@@ -2109,22 +1988,6 @@ declare function tabAdvanceWidth(alignment: TabAlignment, currentX: number, dest
2109
1988
  */
2110
1989
  declare function tabStopsFingerprint(tabs: ResolvedTabStops): string;
2111
1990
 
2112
- /** Document-wide East Asian line-break and whitespace policy. @public */
2113
- interface CjkTypographySettings {
2114
- /** Apply the strict Japanese small-kana and prolonged-sound-mark restrictions. */
2115
- readonly strict: boolean;
2116
- /** Disable adjacent full-width punctuation compression when false. */
2117
- readonly punctuationKerning?: boolean;
2118
- /** The document defaults explicitly select an East Asian face as the East Asian font. */
2119
- readonly sourceEastAsianFont?: boolean;
2120
- /** Whitespace compression selected by `w:characterSpacingControl`. */
2121
- readonly compression: 'doNotCompress' | 'compressPunctuation' | 'compressPunctuationAndJapaneseKana';
2122
- /** Custom no-line-start characters, keyed by normalized language tag. */
2123
- readonly before: Readonly<Record<string, string>>;
2124
- /** Custom no-line-end characters, keyed by normalized language tag. */
2125
- readonly after: Readonly<Record<string, string>>;
2126
- }
2127
-
2128
1991
  /** Test-only mutable counters; omitted by production call sites. Not package-public. */
2129
1992
  interface TableBorderGridResolveWork {
2130
1993
  /** Sparse intervals emitted (not dense column slots). */
@@ -2378,6 +2241,39 @@ interface GroupTextboxStoryRecord {
2378
2241
  readonly rotationDegrees: number;
2379
2242
  }
2380
2243
 
2244
+ /** `x' = scaleX * x + offsetX`, `y' = scaleY * y + offsetY`, from text space into the box. */
2245
+ interface TextArtFit {
2246
+ readonly scaleX: number;
2247
+ readonly scaleY: number;
2248
+ readonly offsetX: number;
2249
+ readonly offsetY: number;
2250
+ }
2251
+ interface DrawingTextArtRecord {
2252
+ readonly text: string;
2253
+ readonly fontFamily: string;
2254
+ readonly bold: boolean;
2255
+ readonly italic: boolean;
2256
+ /** Size of the unfitted text that `fit` maps into the box. */
2257
+ readonly fontSizePt: number;
2258
+ /** `RRGGBB`, or null when the text is not filled. */
2259
+ readonly fillHex: string | null;
2260
+ readonly fillAlpha: number;
2261
+ /** `RRGGBB`, or null when the text is not outlined. */
2262
+ readonly strokeHex: string | null;
2263
+ readonly strokeAlpha: number;
2264
+ readonly strokeWidthPt: number;
2265
+ /** Clockwise rotation about the box centre. */
2266
+ readonly rotationDegrees: number;
2267
+ /**
2268
+ * The fitted glyph outlines in points from the box's top-left corner, as absolute M/L/Q/C/Z
2269
+ * path data. Null when the measurer knew only the ink box: paint then draws the text at
2270
+ * `fontSizePt` through `fit`.
2271
+ */
2272
+ readonly path: string | null;
2273
+ /** Null when the measurer could not bound the string's ink: nothing paints. */
2274
+ readonly fit: TextArtFit | null;
2275
+ }
2276
+
2381
2277
  /** Clip `box` to a horizontal content band; preserves authored size, zeroes clipped axes. */
2382
2278
  /** How a drawing record holds the picture member of a shape group. */
2383
2279
  interface DrawingGroupPictureRecord {
@@ -2495,6 +2391,8 @@ interface AnchoredDrawingRecord extends Omit<InlineDrawingRecord, 'kind' | 'base
2495
2391
  readonly layoutFallback?: AnchoredDrawingLayoutFallback;
2496
2392
  /** Canonical document traversal index within the owner story part. */
2497
2393
  readonly sourceOrder?: number;
2394
+ /** Floating VML text art fitted to the box; paint draws it instead of a resource. */
2395
+ readonly textArt?: DrawingTextArtRecord;
2498
2396
  }
2499
2397
 
2500
2398
  /**
@@ -2557,25 +2455,6 @@ declare function readNumPr(paragraphPropertyNodes: readonly OoxmlNode[]): {
2557
2455
  * and so it is when nothing delegates, which keeps layout cache identity.
2558
2456
  */
2559
2457
  declare function withNumberingStyleLinks(index: NumberingIndex, styleCascade: StyleCascadeTable | undefined): NumberingIndex;
2560
- /**
2561
- * The effective indent of a list paragraph: `inherited`, then the numbering LEVEL, then
2562
- * `direct`, per attribute.
2563
- *
2564
- * A level's `w:pPr/w:ind` applies per attribute between the two tiers, and the ordering
2565
- * matters on real documents. A converted agreement numbers its `(a)` items with a level
2566
- * stating `left=1512 hanging=738` under a `ListParagraph` style stating
2567
- * `left=775 hanging=624`, and states only `hanging="737"` on the paragraph itself. Reading
2568
- * the flattened cascade as "the paragraph's indent" gave the STYLE's 775 to a level that had
2569
- * overridden it, so every lettered sub-item hung a full indent step to the left of where
2570
- * Word puts it.
2571
- *
2572
- * `inherited` is what the level outranks and `direct` is what outranks it. When the
2573
- * paragraph's own `w:pPr` states a `w:numPr`, these are the style chain (after the document
2574
- * defaults) and that `w:pPr`. Otherwise the level sits directly below the nearest style that
2575
- * states a `w:numPr`: that style, the styles based on it and the paragraph's own `w:pPr` go
2576
- * in `direct`, and the defaults and that style's bases go in `inherited`.
2577
- */
2578
- declare function mergeListIndent(levelIndent: NumberingLevelIndent, inherited: readonly OoxmlProperty[], direct?: readonly OoxmlProperty[]): NumberingLevelIndent;
2579
2458
 
2580
2459
  /**
2581
2460
  * Resolve every list paragraph in a story to a {@link ResolvedListItem}, keyed by node id.
@@ -2842,64 +2721,6 @@ interface ParagraphLayoutInputs {
2842
2721
  */
2843
2722
  declare function resolveParagraphLayoutInputs(paragraph: OoxmlElement, contentWidth: number, styleCascade: StyleCascadeTable | undefined, listItem?: ResolvedListItem, tableCellStyle?: TableCellStyleFormatting, inTableCell?: boolean, lineUnitPt?: number): ParagraphLayoutInputs;
2844
2723
 
2845
- interface EquationGeometryBase {
2846
- readonly box: LayoutBox;
2847
- /** Baseline measured from this node's top edge. */
2848
- readonly baseline: number;
2849
- }
2850
- interface EquationTextGeometry extends EquationGeometryBase {
2851
- readonly kind: 'text' | 'fallback';
2852
- readonly text: string;
2853
- readonly fontSizePt: number;
2854
- /** The same resolved face used by measurement and the trusted paint sink. */
2855
- readonly runStyle?: ResolvedRunStyle;
2856
- }
2857
- interface EquationRowGeometry extends EquationGeometryBase {
2858
- readonly kind: 'row';
2859
- readonly items: readonly EquationGeometry[];
2860
- }
2861
- interface EquationFractionGeometry extends EquationGeometryBase {
2862
- readonly kind: 'fraction';
2863
- readonly numerator: EquationGeometry;
2864
- readonly denominator: EquationGeometry;
2865
- readonly bar: LayoutBox;
2866
- }
2867
- interface EquationRadicalGeometry extends EquationGeometryBase {
2868
- readonly kind: 'radical';
2869
- readonly sign: EquationTextGeometry;
2870
- readonly radicand: EquationGeometry;
2871
- readonly degree?: EquationGeometry;
2872
- readonly bar: LayoutBox;
2873
- }
2874
- interface EquationBarGeometry extends EquationGeometryBase {
2875
- readonly kind: 'bar';
2876
- readonly body: EquationGeometry;
2877
- readonly bar: LayoutBox;
2878
- }
2879
- interface EquationScriptGeometry extends EquationGeometryBase {
2880
- readonly kind: 'script';
2881
- readonly base: EquationGeometry;
2882
- readonly subscript?: EquationGeometry;
2883
- readonly superscript?: EquationGeometry;
2884
- }
2885
- interface EquationNaryGeometry extends EquationGeometryBase {
2886
- readonly kind: 'nary';
2887
- readonly operator: EquationTextGeometry;
2888
- readonly body: EquationGeometry;
2889
- readonly lowerLimit?: EquationGeometry;
2890
- readonly upperLimit?: EquationGeometry;
2891
- }
2892
- type EquationGeometry = EquationTextGeometry | EquationRowGeometry | EquationFractionGeometry | EquationRadicalGeometry | EquationBarGeometry | EquationScriptGeometry | EquationNaryGeometry;
2893
- /** Equation metadata carried by one atomic semantic span. */
2894
- interface EquationSpanRecord {
2895
- readonly sourceNodeId: string;
2896
- readonly geometry: EquationGeometry;
2897
- readonly fallbackText: string;
2898
- readonly truncated: boolean;
2899
- }
2900
- /** Compose one bounded OMML projection into paint-ready point geometry. */
2901
- declare function layoutEquation(projection: OmmlEquationProjection, measurer: TextMeasurer, style: ResolvedRunStyle): EquationSpanRecord;
2902
-
2903
2724
  /** Published root story containing an artifact occurrence. @public */
2904
2725
  type SemanticArtifactRootStoryKind = 'body' | 'header' | 'footer' | 'footnote' | 'endnote' | 'note-separator';
2905
2726
  /** Exact story in which a review artifact's source anchor was laid out. @public */
@@ -3072,6 +2893,75 @@ interface PageGeometry {
3072
2893
  /** US Letter with one-inch margins, in points. */
3073
2894
  declare const DEFAULT_PAGE_GEOMETRY: PageGeometry;
3074
2895
 
2896
+ /** A strikeout stroke at the drawn size, in points. `offsetPt` is the stroke TOP. @public */
2897
+ interface StrikeoutStrokePt {
2898
+ /** Distance from the baseline UP to the top of the stroke. */
2899
+ readonly offsetPt: number;
2900
+ /** Stroke height. Always positive. */
2901
+ readonly thicknessPt: number;
2902
+ }
2903
+
2904
+ /**
2905
+ * A string's glyphs in points, x right and y down from the pen origin on the baseline, at the
2906
+ * style's size.
2907
+ *
2908
+ * `path` is SVG path data made only of absolute `M`, `L`, `Q`, `C` and `Z` commands, or null
2909
+ * when the measurer knows the ink box but not the outlines (a canvas measurer). `ink` bounds
2910
+ * every glyph's ink in the same space.
2911
+ */
2912
+ interface TextOutline {
2913
+ readonly path: string | null;
2914
+ readonly ink: {
2915
+ readonly left: number;
2916
+ readonly top: number;
2917
+ readonly right: number;
2918
+ readonly bottom: number;
2919
+ };
2920
+ }
2921
+ /**
2922
+ * Text measurement, injected.
2923
+ *
2924
+ * A real implementation shapes with the resolved font; the tests supply a deterministic one.
2925
+ * Layout never reads the DOM, so this is the only way width and height enter it.
2926
+ */
2927
+ interface TextMeasurer {
2928
+ /** Advance width of `text` in the resolved style. */
2929
+ measure(text: string, style: ResolvedRunStyle): number;
2930
+ /**
2931
+ * Optional whole-span logical caret advances, indexed by UTF-16 offset. Values
2932
+ * are nondecreasing, start at zero, and end at the measured advance. Ligature
2933
+ * interiors may share an edge. Undefined selects a bounded approximate fallback.
2934
+ */
2935
+ caretAdvances?(text: string, style: ResolvedRunStyle): readonly number[] | undefined;
2936
+ /**
2937
+ * Optional conservative ink bounds for one grapheme, in points from its origin.
2938
+ * Includes size and horizontal scale, but not trailing character spacing.
2939
+ * Undefined keeps layout on the advance-only path.
2940
+ */
2941
+ inkBounds?(text: string, style: ResolvedRunStyle): {
2942
+ left: number;
2943
+ right: number;
2944
+ } | undefined;
2945
+ /**
2946
+ * Optional glyph outlines of a whole string, for text drawn as a shape (VML text art).
2947
+ * Undefined when the face cannot answer; the shape then paints nothing rather than guess.
2948
+ */
2949
+ textOutline?(text: string, style: ResolvedRunStyle): TextOutline | undefined;
2950
+ /** Whether line metrics use an admitted face instead of approximate fallback metrics. */
2951
+ hasResolvedFont?(style: ResolvedRunStyle): boolean;
2952
+ /**
2953
+ * Optional `OS/2` strikeout stroke for the resolved face, at the drawn size. Word paints
2954
+ * `w:separator` as a strikeout, so the note rule reads its thickness and offset here rather
2955
+ * than assuming one face's numbers. Undefined keeps the caller's own default.
2956
+ */
2957
+ strikeoutMetrics?(style: ResolvedRunStyle): StrikeoutStrokePt | undefined;
2958
+ /** Line metrics for the actual text faces; omitted text measures the primary face. */
2959
+ lineMetrics(style: ResolvedRunStyle, text?: string): {
2960
+ height: number;
2961
+ baseline: number;
2962
+ };
2963
+ }
2964
+
3075
2965
  /** A half-open UTF-16 range inside one paragraph, addressed by its canonical node id. */
3076
2966
  interface SourceRange {
3077
2967
  readonly paragraphId: string;
@@ -3287,6 +3177,8 @@ interface StyleSpanRecord {
3287
3177
  * and selection mapping refuses them the way it refuses markers.
3288
3178
  */
3289
3179
  readonly projected?: boolean;
3180
+ /** Zero-model-width component geometry for opaque content. */
3181
+ readonly unsupported?: UnsupportedContentRecord;
3290
3182
  /** Authored inline separator rule; its advance belongs to one note atom. */
3291
3183
  readonly noteSeparator?: 'separator' | 'continuationSeparator';
3292
3184
  /** Paint-ready geometry for one atomic Office Math equation. */
@@ -3965,44 +3857,5 @@ interface SectionBreakMarkRecord {
3965
3857
  readonly kind: SectionBreakType;
3966
3858
  }
3967
3859
 
3968
- /**
3969
- * Text measurement, injected.
3970
- *
3971
- * A real implementation shapes with the resolved font; the tests supply a deterministic one.
3972
- * Layout never reads the DOM, so this is the only way width and height enter it.
3973
- */
3974
- interface TextMeasurer {
3975
- /** Advance width of `text` in the resolved style. */
3976
- measure(text: string, style: ResolvedRunStyle): number;
3977
- /**
3978
- * Optional whole-span logical caret advances, indexed by UTF-16 offset. Values
3979
- * are nondecreasing, start at zero, and end at the measured advance. Ligature
3980
- * interiors may share an edge. Undefined selects a bounded approximate fallback.
3981
- */
3982
- caretAdvances?(text: string, style: ResolvedRunStyle): readonly number[] | undefined;
3983
- /**
3984
- * Optional conservative ink bounds for one grapheme, in points from its origin.
3985
- * Includes size and horizontal scale, but not trailing character spacing.
3986
- * Undefined keeps layout on the advance-only path.
3987
- */
3988
- inkBounds?(text: string, style: ResolvedRunStyle): {
3989
- left: number;
3990
- right: number;
3991
- } | undefined;
3992
- /** Whether line metrics use an admitted face instead of approximate fallback metrics. */
3993
- hasResolvedFont?(style: ResolvedRunStyle): boolean;
3994
- /**
3995
- * Optional `OS/2` strikeout stroke for the resolved face, at the drawn size. Word paints
3996
- * `w:separator` as a strikeout, so the note rule reads its thickness and offset here rather
3997
- * than assuming one face's numbers. Undefined keeps the caller's own default.
3998
- */
3999
- strikeoutMetrics?(style: ResolvedRunStyle): StrikeoutStrokePt | undefined;
4000
- /** Line metrics for the actual text faces; omitted text measures the primary face. */
4001
- lineMetrics(style: ResolvedRunStyle, text?: string): {
4002
- height: number;
4003
- baseline: number;
4004
- };
4005
- }
4006
-
4007
- export { DEFAULT_REVISION_MARKUP as D, resolveRevisionMarkup as Q, DEFAULT_PAGE_GEOMETRY as aA, DEFAULT_REVISION_DISPLAY_MODE as aB, DEFAULT_RUN_STYLE as aC, DEFAULT_SECTION_PROPERTIES as aD, DEFAULT_TAB_INTERVAL_PT as aE, DEFAULT_TAB_INTERVAL_TWIPS as aF, EMPTY_NUMBERING_INDEX as aM, EMPTY_TAB_STOPS as aN, FontResolutionError as aZ, AUTO_PARAGRAPH_SPACING_PT as ap, HARD_MAX_AGGREGATE_FONT_BYTES as b6, HARD_MAX_FONT_BYTES as b7, HARD_MAX_FONT_SOURCES as b8, SINGLE_LINE_SPACING as bU, MAX_BORDER_SPACE_PT as be, MAX_BORDER_WIDTH_PT as bf, MAX_DOCUMENT_SECTIONS as bg, MAX_LVL_OVERRIDES as bh, MAX_NUMBERING_DEFINITIONS as bi, MAX_PARAGRAPH_SPACING_PT as bj, MAX_SHAPING_CONTEXT as bk, MAX_STYLE_DEFINITIONS as bl, MAX_TABLE_BORDER_STROKES as bm, MAX_TAB_POSITION_TWIPS as bn, MAX_TAB_STOPS as bo, PAGE_BORDER_SIDES as bs, PARAGRAPH_BORDER_SIDES as bt, nextTabDestination as c$, boundedStructuralFontValidator as cA, buildNumberingIndex as cB, buildStyleCascadeTable as cC, cascadeParagraphFormatting as cD, cascadeRunProperties as cE, cascadedBottomBorder as cF, cascadedParagraphBorders as cG, cascadedTabStops as cH, collapsedSpaceBefore as cI, createFontResourceSnapshot as cJ, createShapedRun as cK, createShapingEnvironment as cL, defaultTabIntervalFromSettings as cM, displayText as cN, enumerateDocumentSections as cO, enumerateDocumentSectionsBounded as cP, fixedPoint as cQ, fontRequestKey as cR, formatRevisionOf as cS, geometryOfSection as cT, glyphSizeFactorOf as cU, isValidStyleId as cV, itemizeScriptFontSlots as cW, layoutEquation as cX, markRevisionRemovesMark as cY, measureDisplayText as cZ, mergeListIndent as c_, TAB_LEADER_GLYPH as ch, UnsupportedScriptError as cs, appliedSpaceBefore as cu, applyLineSpacing as cv, baselineShiftPtOf as cw, borderExtentPt as cx, borderWeight as cy, bottomBorderExtentPt as cz, pageBordersFingerprint as d0, paragraphBorderExtentPt as d1, paragraphBorderStrokeWidthPt as d2, paragraphBorders as d3, paragraphBordersFingerprint as d4, paragraphBreaksBefore as d5, paragraphContextualSpacing as d6, paragraphLineSpacing as d7, paragraphMarkFormatRevisionOf as d8, paragraphMarkRevisionOf as d9, shapedRunComparatorInputs as dA, shapingEnvironmentFingerprint as dB, shapingEnvironmentFingerprintInputs as dC, shownMarkRevision as dD, styleForFontSlot as dE, tabAdvanceWidth as dF, tabStopsFingerprint as dG, withDefaultTabInterval as dH, withNumberingStyleLinks as dI, withResolvedListItems as dJ, paragraphMarkRevisionsOf as da, paragraphSectionNode as db, paragraphSpacing as dc, paragraphTabStops as dd, parsePageBorders as de, parsePageNumbering as df, parseRefInstruction as dg, parseSectionProperties as dh, projectedSectionSourceIndexes as di, readBorderSide as dj, readCellBorders as dk, readNumPr as dl, readSectionProperties as dm, readTableBorders as dn, resolveBorderConflict as dp, resolveNumberingLevel as dq, resolveParagraphLayoutInputs as dr, resolveRunStyle as ds, resolveStoryListItems as dt, resolveStoryRefFields as du, resolveTableCellBorderGrid as dv, revisionAuthorFilter as dw, revisionsAreDeletion as dx, revisionsVisible as dy, runStylesEqual as dz, REVISION_MARKUP_COLORS as w };
4008
- export type { TableBorderSide as $, AnchoredDrawingRecord as A, BlockFragmentRecord as B, ContentControlBoundaryRecord as C, RevisionMarkupColor as E, FontResourceSnapshot as F, RevisionMarkupMark as G, HeaderFooterStoryRecord as H, InlineDrawingRecord as I, RevisionMarkupNamedColor as J, RevisionMarkupStyle as K, LineRecord as L, RevisionMarkupTextStyle as M, NoteAreaRecord as N, SectionProperties as O, ParagraphFragmentRecord as P, RevisionMarkupDialogSession as R, SemanticLayout as S, TextMeasurer as T, NumberingLevel as U, VersionedShapingLibrary as V, NumberingIndex as W, DrawingPoint as X, DrawingInsets as Y, ModelRange as Z, RevisionAttribution as _, ReviewDisplayMode as a, FontResourceDefinition as a$, TableFloatXSpec as a0, TableFloatYSpec as a1, ResolvedListItem as a2, RefFieldContext as a3, InlineDrawingLayoutContext as a4, CellBorderBox as a5, TableBorderBox as a6, TableCellStyleFormatting as a7, TableFloatPosition as a8, StyleCascadeTable as a9, DeclaredFontSubstitution as aG, DocumentSection as aH, DocumentSectionsEnumeration as aI, DrawingClipFallback as aJ, DrawingGeometry as aK, DrawingGroupPictureRecord as aL, EquationBarGeometry as aO, EquationFractionGeometry as aP, EquationGeometry as aQ, EquationNaryGeometry as aR, EquationRadicalGeometry as aS, EquationRowGeometry as aT, EquationScriptGeometry as aU, EquationSpanRecord as aV, EquationTextGeometry as aW, FieldAtomMarker as aX, FontFingerprintInputs as aY, FontResolutionErrorCode as a_, RevisionAuthorFilter as aa, FixedPoint as ab, FontByteValidator as ac, SourceRange as ad, HyperlinkProjector as ae, FieldLinkProjector as af, StoryPageFieldNeeds as ag, HyperlinkFieldSpec as ah, SpanLinkRecord as ai, PageGeometry as aj, SectionColumns as ak, SectionPageBorders as al, PageBorderFrameRecord as am, ParagraphBorderStrokeRecord as an, StrikeoutStrokePt as ao, AbstractNumDefinition as aq, AnchoredDrawingLayoutFallback as ar, BidiEmbeddingLevels as as, BorderGridGeometry as at, CascadedParagraphFormatting as au, CjkTypographySettings as av, ContentControlGeometryFragment as aw, ContentControlLevel as ax, ContentControlMappedType as ay, ContentControlModelRange as az, RevisionDisplayMode as b, SemanticArtifactRootStoryKind as b$, FontResourceInstrumentation as b0, FontResourceSnapshotOptions as b1, FontSlot as b2, FontValidationResult as b3, GlyphOutline as b4, GroupTextboxStoryRecord as b5, LevelOverride as b9, PageRefFieldProjection as bA, ParagraphAutoSpacingContext as bB, ParagraphBorderEdge as bC, ParagraphBorderSide as bD, ParagraphBorders as bE, ParagraphBottomBorderRecord as bF, ParagraphIndent as bG, ParagraphLayoutInputs as bH, ParagraphLineSpacing as bI, ParagraphSpacing as bJ, RefFieldSpec as bK, RefNoteParts as bL, ResolvedCellBorders as bM, ResolvedPictureBullet as bN, ResolvedTabStops as bO, ResolvedTableBorderEdge as bP, ResolvedTableBorderEdgeSegment as bQ, ResolvedUnderline as bR, RevisionFilter as bS, RevisionKind as bT, ScriptItem as bV, SectionBreakMarkRecord as bW, SectionBreakType as bX, SectionColumnDefinition as bY, SectionMargins as bZ, SectionPageNumbering as b_, LineSpacingRule as ba, ListMarkerAlign as bb, ListMarkerRecord as bc, ListSuffix as bd, NumDefinition as bp, NumberingLevelIndent as bq, NumberingPictureBullet as br, PageBorderDisplay as bu, PageBorderOffsetFrom as bv, PageBorderSide as bw, PageBorderStrokeRecord as bx, PageBorderZOrder as by, PageRefCalibrationCell as bz, PageRecord as c, SemanticArtifactStoryKind as c0, SemanticCommentArtifactRecord as c1, SemanticReviewArtifactOccurrence as c2, SemanticReviewArtifactOccurrenceGeometry as c3, SemanticReviewArtifactPosition as c4, SemanticReviewArtifactSource as c5, SemanticTrackedChangeArtifactRecord as c6, ShapeInput as c7, ShapedCluster as c8, ShapedFontSpan as c9, ShapedGlyph as ca, ShapedRunComparatorInputs as cb, ShapedVerticalMetrics as cc, ShapingContext as cd, ShapingEnvironment as ce, ShapingEnvironmentFingerprintInputs as cf, StyleDefinition as cg, TabAlignment as ci, TabDestination as cj, TabLeader as ck, TabStop as cl, TableBorderSideName as cm, TableBorderStrokeRecord as cn, TableFragmentRecord as co, TextDirection as cp, TextboxStoryFallbackReason as cq, TextboxStoryLayout as cr, VerticalAlign as ct, LayoutBox as d, NoteStoryRecord as e, ContentControlLock as f, StyleSpanRecord as g, TableRowFragmentRecord as h, TableCellFragmentRecord as i, ShapingEnvironmentInput as j, TextShaper as k, ResolvedRunStyle as l, ResolvedFont as m, NormalizationPolicy as n, FixedPointRoundingMode as o, FontRequest as p, ResolvedRevisionMarkup as q, SemanticReviewArtifactRecord as r, ListMarkerPictureRecord as s, RevisionMarkupOptions as t, FontSubstitution as u, ShapedRun as v, RevisionChangedLinesMark as x, RevisionDeletionMark as y, RevisionMarkupChromeHandlers as z };
3860
+ export { FontResolutionError as aL, HARD_MAX_AGGREGATE_FONT_BYTES as aU, HARD_MAX_FONT_BYTES as aV, HARD_MAX_FONT_SOURCES as aW, AUTO_PARAGRAPH_SPACING_PT as ab, DEFAULT_PAGE_GEOMETRY as am, DEFAULT_RUN_STYLE as an, DEFAULT_SECTION_PROPERTIES as ao, DEFAULT_TAB_INTERVAL_PT as ap, DEFAULT_TAB_INTERVAL_TWIPS as aq, EMPTY_NUMBERING_INDEX as ay, EMPTY_TAB_STOPS as az, MAX_BORDER_SPACE_PT as b0, MAX_BORDER_WIDTH_PT as b1, MAX_DOCUMENT_SECTIONS as b2, MAX_LVL_OVERRIDES as b3, MAX_NUMBERING_DEFINITIONS as b4, MAX_PARAGRAPH_SPACING_PT as b5, MAX_SHAPING_CONTEXT as b6, MAX_STYLE_DEFINITIONS as b7, MAX_TABLE_BORDER_STROKES as b8, MAX_TAB_POSITION_TWIPS as b9, SINGLE_LINE_SPACING as bD, MAX_TAB_STOPS as ba, PAGE_BORDER_SIDES as bd, PARAGRAPH_BORDER_SIDES as be, readBorderSide as c$, TAB_LEADER_GLYPH as c0, enumerateDocumentSections as cA, enumerateDocumentSectionsBounded as cB, fixedPoint as cC, fontRequestKey as cD, geometryOfSection as cE, glyphSizeFactorOf as cF, isValidStyleId as cG, itemizeScriptFontSlots as cH, layoutEquation as cI, measureDisplayText as cJ, nextTabDestination as cK, pageBordersFingerprint as cL, paragraphBorderExtentPt as cM, paragraphBorderStrokeWidthPt as cN, paragraphBorders as cO, paragraphBordersFingerprint as cP, paragraphBreaksBefore as cQ, paragraphContextualSpacing as cR, paragraphLineSpacing as cS, paragraphSectionNode as cT, paragraphSpacing as cU, paragraphTabStops as cV, parsePageBorders as cW, parsePageNumbering as cX, parseRefInstruction as cY, parseSectionProperties as cZ, projectedSectionSourceIndexes as c_, UnsupportedScriptError as cd, appliedSpaceBefore as cf, applyLineSpacing as cg, baselineShiftPtOf as ch, borderExtentPt as ci, borderWeight as cj, bottomBorderExtentPt as ck, boundedStructuralFontValidator as cl, buildNumberingIndex as cm, buildStyleCascadeTable as cn, cascadeParagraphFormatting as co, cascadeRunProperties as cp, cascadedBottomBorder as cq, cascadedParagraphBorders as cr, cascadedTabStops as cs, collapsedSpaceBefore as ct, createFontResourceSnapshot as cu, createShapedRun as cv, createShapingEnvironment as cw, createUnsupportedContentProjector as cx, defaultTabIntervalFromSettings as cy, displayText as cz, readCellBorders as d0, readNumPr as d1, readSectionProperties as d2, readTableBorders as d3, resolveBorderConflict as d4, resolveNumberingLevel as d5, resolveParagraphLayoutInputs as d6, resolveRunStyle as d7, resolveStoryListItems as d8, resolveStoryRefFields as d9, resolveTableCellBorderGrid as da, runStylesEqual as db, shapedRunComparatorInputs as dc, shapingEnvironmentFingerprint as dd, shapingEnvironmentFingerprintInputs as de, styleForFontSlot as df, tabAdvanceWidth as dg, tabStopsFingerprint as dh, withDefaultTabInterval as di, withNumberingStyleLinks as dj, withResolvedListItems as dk };
3861
+ export type { SourceRange as $, AnchoredDrawingRecord as A, BlockFragmentRecord as B, ContentControlBoundaryRecord as C, DrawingPoint as D, NumberingLevelIndent as E, FontResourceSnapshot as F, ResolvedListItem as G, HeaderFooterStoryRecord as H, InlineDrawingRecord as I, RefFieldContext as J, InlineDrawingLayoutContext as K, LineRecord as L, ModelRange as M, NoteAreaRecord as N, CellBorderBox as O, ParagraphFragmentRecord as P, TableBorderBox as Q, ResolvedRunStyle as R, SemanticLayout as S, TextMeasurer as T, UnsupportedElement as U, VersionedShapingLibrary as V, TableCellStyleFormatting as W, TableFloatPosition as X, StyleCascadeTable as Y, FixedPoint as Z, FontByteValidator as _, PageRecord as a, ListSuffix as a$, HyperlinkProjector as a0, FieldLinkProjector as a1, StoryPageFieldNeeds as a2, HyperlinkFieldSpec as a3, SpanLinkRecord as a4, PageGeometry as a5, SectionColumns as a6, SectionPageBorders as a7, PageBorderFrameRecord as a8, ParagraphBorderStrokeRecord as a9, EquationBarGeometry as aA, EquationFractionGeometry as aB, EquationGeometry as aC, EquationNaryGeometry as aD, EquationRadicalGeometry as aE, EquationRowGeometry as aF, EquationScriptGeometry as aG, EquationSpanRecord as aH, EquationTextGeometry as aI, FieldAtomMarker as aJ, FontFingerprintInputs as aK, FontResolutionErrorCode as aM, FontResourceDefinition as aN, FontResourceInstrumentation as aO, FontResourceSnapshotOptions as aP, FontSlot as aQ, FontValidationResult as aR, GlyphOutline as aS, GroupTextboxStoryRecord as aT, LevelOverride as aX, LineSpacingRule as aY, ListMarkerAlign as aZ, ListMarkerRecord as a_, StrikeoutStrokePt as aa, AbstractNumDefinition as ac, AnchoredDrawingLayoutFallback as ad, BidiEmbeddingLevels as ae, BorderGridGeometry as af, CascadedParagraphFormatting as ag, CjkTypographySettings as ah, ContentControlGeometryFragment as ai, ContentControlLevel as aj, ContentControlMappedType as ak, ContentControlModelRange as al, DeclaredFontSubstitution as ar, DocumentSection as as, DocumentSectionsEnumeration as at, DrawingClipFallback as au, DrawingGeometry as av, DrawingGroupPictureRecord as aw, DrawingTextArtRecord as ax, LayoutBox as b, StyleDefinition as b$, ResolvedTableBorderEdge as bA, ResolvedTableBorderEdgeSegment as bB, ResolvedUnderline as bC, ScriptItem as bE, SectionBreakMarkRecord as bF, SectionBreakType as bG, SectionColumnDefinition as bH, SectionMargins as bI, SectionPageNumbering as bJ, SemanticArtifactRootStoryKind as bK, SemanticArtifactStoryKind as bL, SemanticCommentArtifactRecord as bM, SemanticReviewArtifactOccurrence as bN, SemanticReviewArtifactOccurrenceGeometry as bO, SemanticReviewArtifactPosition as bP, SemanticReviewArtifactSource as bQ, SemanticTrackedChangeArtifactRecord as bR, ShapeInput as bS, ShapedCluster as bT, ShapedFontSpan as bU, ShapedGlyph as bV, ShapedRunComparatorInputs as bW, ShapedVerticalMetrics as bX, ShapingContext as bY, ShapingEnvironment as bZ, ShapingEnvironmentFingerprintInputs as b_, NumDefinition as bb, NumberingPictureBullet as bc, PageBorderDisplay as bf, PageBorderOffsetFrom as bg, PageBorderSide as bh, PageBorderStrokeRecord as bi, PageBorderZOrder as bj, PageRefCalibrationCell as bk, PageRefFieldProjection as bl, ParagraphAutoSpacingContext as bm, ParagraphBorderEdge as bn, ParagraphBorderSide as bo, ParagraphBorders as bp, ParagraphBottomBorderRecord as bq, ParagraphIndent as br, ParagraphLayoutInputs as bs, ParagraphLineSpacing as bt, ParagraphSpacing as bu, RefFieldSpec as bv, RefNoteParts as bw, ResolvedCellBorders as bx, ResolvedPictureBullet as by, ResolvedTabStops as bz, NoteStoryRecord as c, TabAlignment as c1, TabDestination as c2, TabLeader as c3, TabStop as c4, TableBorderSideName as c5, TableBorderStrokeRecord as c6, TableFragmentRecord as c7, TextArtFit as c8, TextDirection as c9, TextOutline as ca, TextboxStoryFallbackReason as cb, TextboxStoryLayout as cc, VerticalAlign as ce, ContentControlLock as d, UnsupportedElementLayout as e, UnsupportedElementRule as f, StyleSpanRecord as g, TableRowFragmentRecord as h, TableCellFragmentRecord as i, ShapingEnvironmentInput as j, TextShaper as k, ResolvedFont as l, NormalizationPolicy as m, FixedPointRoundingMode as n, FontRequest as o, SemanticReviewArtifactRecord as p, ListMarkerPictureRecord as q, FontSubstitution as r, ShapedRun as s, SectionProperties as t, NumberingLevel as u, NumberingIndex as v, DrawingInsets as w, TableBorderSide as x, TableFloatXSpec as y, TableFloatYSpec as z };