docxodus 9.8.0 → 10.0.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 (151) hide show
  1. package/README.md +178 -0
  2. package/dist/canonical.d.ts +7 -0
  3. package/dist/canonical.d.ts.map +1 -0
  4. package/dist/canonical.js +56 -0
  5. package/dist/canonical.js.map +1 -0
  6. package/dist/docxodus.worker.d.ts +2 -1
  7. package/dist/docxodus.worker.d.ts.map +1 -1
  8. package/dist/docxodus.worker.js +244 -3
  9. package/dist/docxodus.worker.js.map +1 -1
  10. package/dist/editor.bundle.js +2024 -388
  11. package/dist/editor.d.ts +22 -2
  12. package/dist/editor.d.ts.map +1 -1
  13. package/dist/editor.js +94 -9
  14. package/dist/editor.js.map +1 -1
  15. package/dist/embed.bundle.js +2912 -437
  16. package/dist/embed.iife.js +2911 -436
  17. package/dist/export-assets.json +283 -0
  18. package/dist/export-browser.bundle.js +7990 -0
  19. package/dist/export-browser.d.ts +266 -0
  20. package/dist/export-browser.d.ts.map +1 -0
  21. package/dist/export-browser.js +2915 -0
  22. package/dist/export-browser.js.map +1 -0
  23. package/dist/export-resource-limits-v1.json +57 -0
  24. package/dist/font-contract.d.ts +150 -0
  25. package/dist/font-contract.d.ts.map +1 -0
  26. package/dist/font-contract.js +59 -0
  27. package/dist/font-contract.js.map +1 -0
  28. package/dist/font-runtime.d.ts +33 -0
  29. package/dist/font-runtime.d.ts.map +1 -0
  30. package/dist/font-runtime.js +1100 -0
  31. package/dist/font-runtime.js.map +1 -0
  32. package/dist/index.d.ts +62 -5
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +130 -16
  35. package/dist/index.js.map +1 -1
  36. package/dist/page-geometry.d.ts +8 -1
  37. package/dist/page-geometry.d.ts.map +1 -1
  38. package/dist/page-geometry.js +37 -11
  39. package/dist/page-geometry.js.map +1 -1
  40. package/dist/pagination.bundle.js +1937 -380
  41. package/dist/pagination.d.ts +277 -15
  42. package/dist/pagination.d.ts.map +1 -1
  43. package/dist/pagination.js +2055 -438
  44. package/dist/pagination.js.map +1 -1
  45. package/dist/react.d.ts +11 -4
  46. package/dist/react.d.ts.map +1 -1
  47. package/dist/react.js +38 -5
  48. package/dist/react.js.map +1 -1
  49. package/dist/render-report-v2.schema.json +1581 -0
  50. package/dist/ribbon-chrome.d.ts +1 -1
  51. package/dist/ribbon-chrome.d.ts.map +1 -1
  52. package/dist/ribbon-chrome.js +46 -0
  53. package/dist/ribbon-chrome.js.map +1 -1
  54. package/dist/ribbon.js +70 -0
  55. package/dist/ribbon.js.map +1 -1
  56. package/dist/session.bundle.js +695 -29
  57. package/dist/session.d.ts +134 -19
  58. package/dist/session.d.ts.map +1 -1
  59. package/dist/session.js +562 -25
  60. package/dist/session.js.map +1 -1
  61. package/dist/types.d.ts +1207 -16
  62. package/dist/types.d.ts.map +1 -1
  63. package/dist/types.js.map +1 -1
  64. package/dist/wasm/_framework/DocumentFormat.OpenXml.Framework.wasm +0 -0
  65. package/dist/wasm/_framework/DocumentFormat.OpenXml.Framework.wasm.br +0 -0
  66. package/dist/wasm/_framework/DocumentFormat.OpenXml.wasm +0 -0
  67. package/dist/wasm/_framework/DocumentFormat.OpenXml.wasm.br +0 -0
  68. package/dist/wasm/_framework/Docxodus.wasm +0 -0
  69. package/dist/wasm/_framework/Docxodus.wasm.br +0 -0
  70. package/dist/wasm/_framework/DocxodusWasm.wasm +0 -0
  71. package/dist/wasm/_framework/DocxodusWasm.wasm.br +0 -0
  72. package/dist/wasm/_framework/System.Collections.Concurrent.wasm +0 -0
  73. package/dist/wasm/_framework/System.Collections.Concurrent.wasm.br +0 -0
  74. package/dist/wasm/_framework/System.Collections.Immutable.wasm +0 -0
  75. package/dist/wasm/_framework/System.Collections.Immutable.wasm.br +0 -0
  76. package/dist/wasm/_framework/System.Collections.NonGeneric.wasm +0 -0
  77. package/dist/wasm/_framework/System.Collections.NonGeneric.wasm.br +0 -0
  78. package/dist/wasm/_framework/System.Collections.Specialized.wasm +0 -0
  79. package/dist/wasm/_framework/System.Collections.Specialized.wasm.br +0 -0
  80. package/dist/wasm/_framework/System.Collections.wasm +0 -0
  81. package/dist/wasm/_framework/System.Collections.wasm.br +0 -0
  82. package/dist/wasm/_framework/System.ComponentModel.Primitives.wasm +0 -0
  83. package/dist/wasm/_framework/System.ComponentModel.Primitives.wasm.br +0 -0
  84. package/dist/wasm/_framework/System.ComponentModel.TypeConverter.wasm +0 -0
  85. package/dist/wasm/_framework/System.ComponentModel.TypeConverter.wasm.br +0 -0
  86. package/dist/wasm/_framework/System.ComponentModel.wasm +0 -0
  87. package/dist/wasm/_framework/System.ComponentModel.wasm.br +0 -0
  88. package/dist/wasm/_framework/System.Console.wasm +0 -0
  89. package/dist/wasm/_framework/System.Console.wasm.br +0 -0
  90. package/dist/wasm/_framework/System.Diagnostics.Process.wasm +0 -0
  91. package/dist/wasm/_framework/System.Diagnostics.Process.wasm.br +0 -0
  92. package/dist/wasm/_framework/System.IO.Compression.wasm +0 -0
  93. package/dist/wasm/_framework/System.IO.Compression.wasm.br +0 -0
  94. package/dist/wasm/_framework/System.IO.Packaging.wasm +0 -0
  95. package/dist/wasm/_framework/System.IO.Packaging.wasm.br +0 -0
  96. package/dist/wasm/_framework/System.IO.Pipelines.wasm +0 -0
  97. package/dist/wasm/_framework/System.IO.Pipelines.wasm.br +0 -0
  98. package/dist/wasm/_framework/System.Linq.Expressions.wasm +0 -0
  99. package/dist/wasm/_framework/System.Linq.Expressions.wasm.br +0 -0
  100. package/dist/wasm/_framework/System.Linq.wasm +0 -0
  101. package/dist/wasm/_framework/System.Linq.wasm.br +0 -0
  102. package/dist/wasm/_framework/System.Memory.wasm +0 -0
  103. package/dist/wasm/_framework/System.Memory.wasm.br +0 -0
  104. package/dist/wasm/_framework/System.Net.Http.wasm +0 -0
  105. package/dist/wasm/_framework/System.Net.Http.wasm.br +0 -0
  106. package/dist/wasm/_framework/System.Net.Primitives.wasm +0 -0
  107. package/dist/wasm/_framework/System.Net.Primitives.wasm.br +0 -0
  108. package/dist/wasm/_framework/System.ObjectModel.wasm +0 -0
  109. package/dist/wasm/_framework/System.ObjectModel.wasm.br +0 -0
  110. package/dist/wasm/_framework/System.Private.CoreLib.wasm +0 -0
  111. package/dist/wasm/_framework/System.Private.CoreLib.wasm.br +0 -0
  112. package/dist/wasm/_framework/System.Private.Uri.wasm +0 -0
  113. package/dist/wasm/_framework/System.Private.Uri.wasm.br +0 -0
  114. package/dist/wasm/_framework/System.Private.Xml.Linq.wasm +0 -0
  115. package/dist/wasm/_framework/System.Private.Xml.Linq.wasm.br +0 -0
  116. package/dist/wasm/_framework/System.Private.Xml.wasm +0 -0
  117. package/dist/wasm/_framework/System.Private.Xml.wasm.br +0 -0
  118. package/dist/wasm/_framework/System.Runtime.InteropServices.JavaScript.wasm +0 -0
  119. package/dist/wasm/_framework/System.Runtime.InteropServices.JavaScript.wasm.br +0 -0
  120. package/dist/wasm/_framework/System.Runtime.wasm +0 -0
  121. package/dist/wasm/_framework/System.Runtime.wasm.br +0 -0
  122. package/dist/wasm/_framework/System.Security.Cryptography.wasm +0 -0
  123. package/dist/wasm/_framework/System.Security.Cryptography.wasm.br +0 -0
  124. package/dist/wasm/_framework/System.Text.Encodings.Web.wasm +0 -0
  125. package/dist/wasm/_framework/System.Text.Encodings.Web.wasm.br +0 -0
  126. package/dist/wasm/_framework/System.Text.Json.wasm +0 -0
  127. package/dist/wasm/_framework/System.Text.Json.wasm.br +0 -0
  128. package/dist/wasm/_framework/System.Text.RegularExpressions.wasm +0 -0
  129. package/dist/wasm/_framework/System.Text.RegularExpressions.wasm.br +0 -0
  130. package/dist/wasm/_framework/System.Xml.Linq.wasm +0 -0
  131. package/dist/wasm/_framework/System.Xml.Linq.wasm.br +0 -0
  132. package/dist/wasm/_framework/System.Xml.XDocument.wasm +0 -0
  133. package/dist/wasm/_framework/System.Xml.XDocument.wasm.br +0 -0
  134. package/dist/wasm/_framework/System.wasm +0 -0
  135. package/dist/wasm/_framework/System.wasm.br +0 -0
  136. package/dist/wasm/_framework/dotnet.boot.js +38 -38
  137. package/dist/wasm/_framework/dotnet.boot.js.br +0 -0
  138. package/dist/wasm/_framework/dotnet.js +1 -1
  139. package/dist/wasm/_framework/dotnet.js.br +0 -0
  140. package/dist/wasm/_framework/dotnet.native.js +3 -3
  141. package/dist/wasm/_framework/dotnet.native.js.br +0 -0
  142. package/dist/wasm/_framework/dotnet.native.wasm +0 -0
  143. package/dist/wasm/_framework/dotnet.native.wasm.br +0 -0
  144. package/dist/wasm/_framework/dotnet.runtime.js +1 -1
  145. package/dist/wasm/_framework/dotnet.runtime.js.br +0 -0
  146. package/dist/worker-proxy.bundle.js +196 -29
  147. package/dist/worker-proxy.d.ts +36 -3
  148. package/dist/worker-proxy.d.ts.map +1 -1
  149. package/dist/worker-proxy.js +186 -33
  150. package/dist/worker-proxy.js.map +1 -1
  151. package/package.json +24 -7
@@ -45,6 +45,8 @@ export type HeaderFooterRegistry = Map<number, SectionHeaderFooter>;
45
45
  export interface MeasuredBlock {
46
46
  /** The DOM element */
47
47
  element: HTMLElement;
48
+ /** Section whose body owns this block after a continuous section transition. */
49
+ sectionIndex: number;
48
50
  /** Measured height in points (content + padding + border, excluding margins) */
49
51
  heightPt: number;
50
52
  /** Top margin in points */
@@ -59,6 +61,8 @@ export interface MeasuredBlock {
59
61
  pageBreakBefore: boolean;
60
62
  /** Whether this is a page break marker */
61
63
  isPageBreak: boolean;
64
+ /** Whether the block is a Word paragraph whose top margin represents paragraph space-before */
65
+ isWordParagraph?: boolean;
62
66
  }
63
67
  /**
64
68
  * Information about a rendered page.
@@ -81,7 +85,77 @@ export interface PaginationResult {
81
85
  totalPages: number;
82
86
  /** Array of page information */
83
87
  pages: PageInfo[];
88
+ /** Present only when the caller supplied an exact layoutToken. */
89
+ pageMap?: PageMap;
90
+ }
91
+ export type PageMapMode = "paginated" | "continuous";
92
+ export type PageMapAvailability = "available" | "unavailable";
93
+ export type PageMapStory = "body" | "header" | "footer" | "footnote" | "endnote" | "comment";
94
+ export interface PageMapRect {
95
+ /** Page-relative points, independent of viewer zoom/transform. */
96
+ x: number;
97
+ y: number;
98
+ width: number;
99
+ height: number;
100
+ }
101
+ export interface PageMapPage {
102
+ pageNumber: number;
103
+ pageInSection: number;
104
+ width: number;
105
+ height: number;
106
+ sectionIndex?: number;
107
+ pageName: string;
108
+ }
109
+ export interface PageMapFragment {
110
+ fragmentId: string;
111
+ /** Canonical collision-safe `kind:scope:unid`, never the bare editor Unid. */
112
+ anchorId: string;
113
+ fragmentIndex: number;
114
+ pageNumber: number;
115
+ geometry: PageMapRect;
116
+ story: PageMapStory;
117
+ /** Table-cell ownership is orthogonal to story (e.g. a body or footnote table cell). */
118
+ inTableCell: boolean;
119
+ }
120
+ /** Versioned portable layout contract consumed by DocxSession and remote agent surfaces. */
121
+ export interface PageMap {
122
+ schemaVersion: 1;
123
+ mode: PageMapMode;
124
+ availability: PageMapAvailability;
125
+ documentVersion: number;
126
+ rendererFingerprint: string;
127
+ pages: PageMapPage[];
128
+ fragments: PageMapFragment[];
129
+ }
130
+ /** Explicit no-pages contract for a continuous viewer. It never estimates page numbers. */
131
+ export declare function createUnavailablePageMap(documentVersion: number, rendererFingerprint: string, mode?: "continuous"): PageMap;
132
+ export interface PageCitationNavigation {
133
+ navigated: boolean;
134
+ target?: HTMLElement;
135
+ pageNumber?: number;
136
+ fragmentId?: string;
137
+ unavailableReason?: "citation_unavailable" | "fragment_not_found";
84
138
  }
139
+ /** Remove the citation highlight previously applied within this paginated root. */
140
+ export declare function clearPageCitationHighlight(root: ParentNode): void;
141
+ /**
142
+ * Navigate an exact citation over an already-paginated DOM. The page-qualified fragment id is
143
+ * authoritative; page + canonical source identity is a compatibility fallback for older v1 DOMs.
144
+ */
145
+ export declare function navigateToPageCitation(root: ParentNode, citation: {
146
+ availability: PageMapAvailability;
147
+ anchorId: string;
148
+ fragments: Array<{
149
+ fragmentId: string;
150
+ pageNumber: number;
151
+ }>;
152
+ }, options?: {
153
+ highlightClass?: string;
154
+ /** Apply a visible inline highlight when no class is supplied. Default true. */
155
+ highlight?: boolean;
156
+ behavior?: ScrollBehavior;
157
+ block?: ScrollLogicalPosition;
158
+ }): PageCitationNavigation;
85
159
  /**
86
160
  * Options for the pagination engine.
87
161
  */
@@ -100,6 +174,24 @@ export interface PaginationOptions {
100
174
  * entry points opt in explicitly.
101
175
  */
102
176
  fragmentParagraphs?: boolean;
177
+ /** Cooperative checkpoint for bounded non-yielding browser layout work. */
178
+ checkCancellation?: () => void;
179
+ /**
180
+ * Skip fragment-identity stamping at the end of paginate(). Callers that mutate the page tree
181
+ * afterwards (running-story placement) and then call normalizePageMapFragmentIdentities() would
182
+ * otherwise pay the whole forced-layout pass twice and discard the first result. Default: false.
183
+ */
184
+ deferFragmentIdentities?: boolean;
185
+ /**
186
+ * Incremental admission check invoked immediately before each physical page is allocated.
187
+ * Export callers use this to enforce `finalPages` without constructing an over-limit DOM first.
188
+ */
189
+ checkPageCount?: (prospectivePageCount: number) => void;
190
+ /** Exact invalidation tokens used to materialize an authoritative PageMap with the result. */
191
+ layoutToken?: {
192
+ documentVersion: number;
193
+ rendererFingerprint: string;
194
+ };
103
195
  }
104
196
  /**
105
197
  * Pagination engine that converts HTML with pagination metadata
@@ -112,16 +204,30 @@ export type FootnoteRegistry = Map<string, HTMLElement>;
112
204
  export declare class PaginationEngine {
113
205
  private stagingElement;
114
206
  private containerElement;
207
+ private document;
208
+ private view;
115
209
  private scale;
116
210
  private cssPrefix;
117
211
  private showPageNumbers;
118
212
  private pageGap;
119
213
  private fragmentParagraphs;
214
+ private deferFragmentIdentities;
215
+ private cancellationCheckpoint?;
216
+ private pageCountCheckpoint?;
217
+ private createdPageCount;
218
+ private layoutToken?;
120
219
  private hfRegistry;
121
220
  private footnoteRegistry;
221
+ private footnoteSeparator;
222
+ private footnoteContinuationSeparator;
223
+ private commentMarginRegistry;
224
+ private footnoteLayoutLikeWord8;
122
225
  private pendingFootnoteContinuation;
123
226
  /** Per-section `w:pgNumType` (start / format), read off the section wrappers. */
124
227
  private pageNumbering;
228
+ private lastPages;
229
+ private expectedPageMapAnchorIds;
230
+ private state;
125
231
  /**
126
232
  * Creates a new pagination engine.
127
233
  *
@@ -136,6 +242,48 @@ export declare class PaginationEngine {
136
242
  * @returns PaginationResult with page information
137
243
  */
138
244
  paginate(): PaginationResult;
245
+ private checkpoint;
246
+ /**
247
+ * Normalize visible fragment identities after a caller applies final standalone styles. This
248
+ * deliberately runs before the stability barrier; materializePageMap is read-only so PageMap
249
+ * measurement cannot mutate a tree after it was declared stable.
250
+ */
251
+ normalizePageMapFragmentIdentities(): void;
252
+ /**
253
+ * Materialize the last completed browser layout as portable page-relative point geometry.
254
+ * The caller supplies both invalidation tokens; this engine never guesses a document version
255
+ * or renderer fingerprint.
256
+ */
257
+ materializePageMap(documentVersion: number, rendererFingerprint: string): PageMap;
258
+ private normalizeVisiblePageFragments;
259
+ /**
260
+ * Intersect an element with every ancestor that establishes an overflow clip before the page
261
+ * root. getBoundingClientRect() reports layout outside those clips, which is not rendered and
262
+ * therefore must not satisfy PageMap completeness or inflate portable geometry.
263
+ */
264
+ private intersectWithClippingAncestors;
265
+ private storyForCanonicalAnchor;
266
+ /**
267
+ * Add canonical IDs from an addressable source subtree to the pre-pagination inventory.
268
+ * Registry wrappers are excluded when scanning staging because selectable registry contents are
269
+ * inventoried separately. Producers may explicitly mark content that has no visual substrate
270
+ * with `data-page-map-exclude="true"`; native hidden semantics carry the same signal.
271
+ */
272
+ private collectExpectedSourceAnchors;
273
+ private isZeroHeightExplicitBreakCarrier;
274
+ private isDeliberatelyUnrenderedSource;
275
+ /**
276
+ * Keep exactly one active bare-Unid editor anchor per source block. Presentation clones use
277
+ * canonical source identity plus page/fragment qualification instead.
278
+ */
279
+ private qualifyPageFragments;
280
+ /**
281
+ * Page flow clones source blocks while the hidden staging tree stays in the document. Any HTML
282
+ * fragment target copied into a visible page would therefore resolve to its earlier hidden
283
+ * source. Transfer target ownership to the page presentation after flow is complete; registry
284
+ * and wrapper IDs that have no visible counterpart remain available to pagination internals.
285
+ */
286
+ private transferVisibleFragmentTargets;
139
287
  /** Read each section's `w:pgNumType` off its wrapper (see {@link SectionPageNumbering}). */
140
288
  private parsePageNumbering;
141
289
  /**
@@ -162,6 +310,27 @@ export declare class PaginationEngine {
162
310
  * Measures all content blocks in a section.
163
311
  */
164
312
  private measureBlocks;
313
+ /**
314
+ * Flatten the converter's `section.endnotes > ol > li > p` presentation into
315
+ * ordinary paragraph blocks. This preserves paragraph formatting and canonical
316
+ * p:en/en:en identities while allowing the existing paragraph fragmenter to
317
+ * split a long endnote across page boundaries.
318
+ */
319
+ private measureSafeEndnoteBlocks;
320
+ /** Render the CSS ordered-list formats emitted by the converter after an endnote is flattened. */
321
+ private formatOrderedListMarker;
322
+ /**
323
+ * Flows a multi-column (`w:cols`) section's children into CSS-multicol container
324
+ * blocks. Word lays such a section out as N columns inside the same body extent;
325
+ * a balanced `column-count` container reproduces that geometry, and the paginator
326
+ * then places each container as one ordinary measured block. A container grows
327
+ * greedily until its balanced height would exceed the smallest page body available
328
+ * to the section, so a long columned section still splits across pages at block
329
+ * boundaries. Each child lands in exactly one container, so anchors never
330
+ * duplicate. An explicit page break child passes through as its own block, which
331
+ * ends the current container and lets the normal flow logic turn the page.
332
+ */
333
+ private buildColumnBlocks;
165
334
  /**
166
335
  * Measures one element in the same hidden staging context used for the source blocks.
167
336
  * This is intentionally DOM-based: table row heights cannot be inferred from individual
@@ -182,6 +351,20 @@ export declare class PaginationEngine {
182
351
  * intentionally excluded, matching the individual block fit check.
183
352
  */
184
353
  private measureKeepWithNextChainBodyHeight;
354
+ /** Word paragraphs render as `p`, or as `h1`–`h6` when their style has an outline level. */
355
+ private isWordParagraphElement;
356
+ private shouldSuppressPageTopSpacing;
357
+ /**
358
+ * Resolves the part of a block's top margin that consumes the current page.
359
+ *
360
+ * In Word's native DOCX layout, paragraph space-before is suppressed when a paragraph is the
361
+ * first body block on a later page of the SAME section. The first page of a document/section is
362
+ * the exception and keeps its spacing. Tables and other block margins are not paragraph spacing,
363
+ * so they continue to use the ordinary CSS collapsing rule.
364
+ */
365
+ private effectiveBlockMarginTop;
366
+ /** Clone a source block with the same page-top spacing decision used by the height budget. */
367
+ private cloneBlockForPage;
185
368
  /**
186
369
  * Finds footnote references introduced by a sequence of blocks, preserving
187
370
  * document order and excluding references already assigned to the page.
@@ -206,17 +389,38 @@ export declare class PaginationEngine {
206
389
  */
207
390
  private trySplitSimpleOversizedTable;
208
391
  /**
209
- * A DOM endpoint that can finish a paragraph fragment. Endpoints are chosen
210
- * after whitespace or at a run boundary so the paginator never deliberately
211
- * cuts through an ordinary word merely to fill a little more of a page.
392
+ * DOM endpoints that can finish a paragraph fragment. The flattened UTF-16
393
+ * offsets are checked against the browser's Unicode grapheme segmenter, so a
394
+ * formatting-run boundary can never bisect a surrogate pair, combining
395
+ * sequence, or joined emoji. NBSP/word-joiner boundaries remain indivisible.
396
+ * PAGE/NUMPAGES field results are atomic because splitting their marker would
397
+ * make later substitution duplicate or replace only half of the field.
212
398
  */
213
399
  private paragraphFragmentEndpoints;
400
+ /** Browser-native UAX #29 boundaries; null keeps older runtimes conservative. */
401
+ private graphemeBoundaryOffsets;
402
+ /**
403
+ * Conservative UAX #14/CSS wrapping opportunities used for synthetic page
404
+ * boundaries. In particular, a formatting-run boundary is not itself a word
405
+ * boundary, and Japanese opening/closing punctuation stays with its pair.
406
+ * Arbitrary grapheme breaks are admitted only when the paragraph's CSS asks
407
+ * the browser to wrap anywhere.
408
+ */
409
+ private isLegalParagraphLineBoundary;
410
+ /** Never fragment across characters whose line-break meaning is explicitly non-breaking. */
411
+ private isNonBreakingTextBoundary;
412
+ /**
413
+ * Without Intl.Segmenter, admit only an all-ASCII boundary. This still
414
+ * fragments ordinary prose while refusing to guess about Unicode clusters.
415
+ */
416
+ private isConservativeFallbackTextBoundary;
214
417
  /**
215
418
  * Whether a range contains visible text after ignoring bidi/zero-width marks.
216
419
  * Paragraph fragmentation deliberately excludes non-textual descendants, so
217
420
  * this is enough to reject empty head or tail fragments.
218
421
  */
219
422
  private hasVisibleFragmentText;
423
+ private hasVisibleText;
220
424
  /**
221
425
  * Phase one only handles text-like paragraph descendants. Objects, explicit
222
426
  * line breaks, list markers, notes, and out-of-flow/inline-block content all
@@ -224,12 +428,38 @@ export declare class PaginationEngine {
224
428
  * fallback instead of risking broken content or duplicate anchors.
225
429
  */
226
430
  private canFragmentParagraph;
431
+ /**
432
+ * Shared structural gate for body and note paragraph fragmentation. Footnote
433
+ * first paragraphs are inline beside their marker, so that one known layout
434
+ * context may opt into an inline root while retaining every descendant and
435
+ * break-safety restriction used for body text.
436
+ */
437
+ private canRangeFragmentParagraph;
438
+ /**
439
+ * A range clone preserves nested inline formatting exactly. Anything that establishes its own
440
+ * box/layout context is deferred until a future fragmenter can model it accurately. Callers
441
+ * must invoke this while the paragraph is attached to the styled document.
442
+ */
443
+ private hasRangeFragmentSafeLayout;
227
444
  /**
228
445
  * Builds one range-cloned paragraph fragment. Only the leading fragment keeps
229
446
  * the source paragraph's addressability; continuations must not duplicate an
230
447
  * id/data-anchor in the rendered document.
231
448
  */
232
449
  private createParagraphFragment;
450
+ /**
451
+ * Range clones repeat an inline ancestor when the split lands inside it. Keep
452
+ * semantic wrappers (links, comments, formatting) on both sides, but retain a
453
+ * duplicated HTML/editor identity only on the leading fragment. Targets that
454
+ * occur wholly after the split are absent from `head` and remain on `tail`.
455
+ */
456
+ private reconcileParagraphFragmentIdentities;
457
+ /**
458
+ * Range-clone the largest safe prefix accepted by `fits`. The measurement
459
+ * policy stays with the caller, allowing body blocks and note bands to share
460
+ * one DOM fragmenter while measuring in their respective layout contexts.
461
+ */
462
+ private splitParagraphAtLargestFit;
233
463
  /**
234
464
  * Splits a simple paragraph at the largest DOM Range endpoint that fits the
235
465
  * currently available body space. The caller then processes the tail normally,
@@ -245,10 +475,43 @@ export declare class PaginationEngine {
245
475
  * Parses the footnote registry from the staging element.
246
476
  */
247
477
  private parseFootnoteRegistry;
478
+ /** Read Word's optional normal and continuation separator stories. */
479
+ private parseFootnoteSeparators;
480
+ /** Append the exact separator story selected for this initial/continued note band. */
481
+ private appendFootnoteSeparator;
482
+ /** Parses the hidden source notes used to render paginated margin comments. */
483
+ private parseCommentMarginRegistry;
248
484
  /**
249
485
  * Extracts footnote reference IDs from an element.
250
486
  */
251
487
  private extractFootnoteRefs;
488
+ /** Clone a note child for the continuation queue with its original selector position. */
489
+ private cloneFootnoteElementForContinuation;
490
+ /** Remove identities that belong only to the initial registry presentation shell. */
491
+ private makeContinuationShellInert;
492
+ /**
493
+ * Build the exact continuation shape shared by measurement and paint.
494
+ *
495
+ * Keep the source `.footnote-item > .footnote-content` ancestry: document
496
+ * CSS, inherited direction/language, and custom classes frequently target
497
+ * those shells. Only the number and initial HTML/editor identities are
498
+ * omitted. A hidden sentinel preserves `p:not(:first-of-type)` for a page
499
+ * whose first carried element was a later source paragraph.
500
+ */
501
+ private createFootnoteContinuationWrapper;
502
+ /** Build the exact partial-note item shape shared by measurement and paint. */
503
+ private createPartialFootnoteItem;
504
+ /**
505
+ * Where a note measurement tree is attached.
506
+ *
507
+ * A note band is reserved from a measurement and then painted; if the two
508
+ * happen under different inherited typography the painted notes overflow the
509
+ * reserve, which is the invisible clipping this engine exists to avoid. The
510
+ * registry lives in the staging tree but a band paints inside the output
511
+ * container, so measure there. The host is never a page box, so a page's
512
+ * `zoom` cannot scale a reserve that is accounted for in unscaled points.
513
+ */
514
+ private noteMeasurementHost;
252
515
  /**
253
516
  * Measures the height of footnotes for given IDs (in points).
254
517
  * Creates a temporary container to measure the footnotes.
@@ -258,29 +521,24 @@ export declare class PaginationEngine {
258
521
  */
259
522
  private measureFootnotesHeight;
260
523
  /**
261
- * Measures the height of just the continuation content (in points).
524
+ * Partition a continuation for one page's note band, preferring complete children
525
+ * and range-fragmenting an eligible paragraph when necessary. Always advances by
526
+ * at least one element so an indivisible oversized paragraph follows the established
527
+ * clipped fallback without trapping pagination in a loop.
262
528
  */
263
- private measureContinuationHeight;
529
+ private splitContinuationForPage;
264
530
  /**
265
531
  * Splits a footnote element into parts that fit within the available height.
266
532
  * Returns the elements that fit and the elements that need to continue.
267
533
  */
268
534
  private splitFootnoteToFit;
269
- /**
270
- * Measures a single footnote's height.
271
- */
272
- private measureSingleFootnoteHeight;
273
535
  /**
274
536
  * Adds footnotes to a page container, including continuation content.
275
537
  */
276
538
  private addPageFootnotes;
277
- /**
278
- * Selects the appropriate header for a page based on section, page position, and page number.
279
- */
539
+ /** Select the section's first/odd/even header from its one-based page position. */
280
540
  private selectHeader;
281
- /**
282
- * Selects the appropriate footer for a page based on section, page position, and page number.
283
- */
541
+ /** Select the section's first/odd/even footer from its one-based page position. */
284
542
  private selectFooter;
285
543
  /**
286
544
  * The header, body, and footer bands for one page position.
@@ -327,6 +585,8 @@ export declare class PaginationEngine {
327
585
  * cloned node cannot be uniquely addressed.
328
586
  */
329
587
  private makeClonedStoryInert;
588
+ /** A repeated margin note is presentation, not a second bookmark/link target. */
589
+ private makeClonedMarginCommentInert;
330
590
  /**
331
591
  * Resolves floating DrawingML objects after their anchor paragraphs have landed on a page.
332
592
  *
@@ -340,6 +600,8 @@ export declare class PaginationEngine {
340
600
  private horizontalAnchorReference;
341
601
  private verticalAnchorReference;
342
602
  private resolveAnchorAxis;
603
+ /** Charge a physical page before any page-owned partitioning or DOM allocation. */
604
+ private admitPageAllocation;
343
605
  /**
344
606
  * Creates a page container element.
345
607
  */
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"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"}