@docx-editor.dev/core 2.8.0 → 2.9.1

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 (114) hide show
  1. package/dist/automation.cjs +1 -1
  2. package/dist/automation.d.cts +5 -6
  3. package/dist/automation.d.ts +5 -6
  4. package/dist/automation.js +1 -1
  5. package/dist/binding.cjs +1 -1
  6. package/dist/binding.d.cts +11 -12
  7. package/dist/binding.d.ts +11 -12
  8. package/dist/binding.js +1 -1
  9. package/dist/chunk-5VC5HGJA.js +2 -0
  10. package/dist/chunk-A2JIBG75.js +1 -0
  11. package/dist/chunk-DKMKH77K.cjs +5 -0
  12. package/dist/chunk-FWUI7EXG.cjs +15 -0
  13. package/dist/chunk-GZWMLQJO.js +18 -0
  14. package/dist/chunk-IEXDXWTA.cjs +1 -0
  15. package/dist/chunk-IMMAG4QP.cjs +10 -0
  16. package/dist/chunk-JTSNJQFO.js +15 -0
  17. package/dist/chunk-KBCC66CI.js +5 -0
  18. package/dist/chunk-LJ6BY6IU.cjs +18 -0
  19. package/dist/chunk-QDBAXFIK.js +2 -0
  20. package/dist/chunk-RD266XSK.cjs +2 -0
  21. package/dist/chunk-VUJGPCPU.js +10 -0
  22. package/dist/chunk-XMHWBL3K.cjs +2 -0
  23. package/dist/contracts/editor.d.cts +9 -9
  24. package/dist/contracts/editor.d.ts +9 -9
  25. package/dist/contracts/interaction.d.cts +9 -9
  26. package/dist/contracts/interaction.d.ts +9 -9
  27. package/dist/contracts/modules.d.cts +5 -5
  28. package/dist/contracts/modules.d.ts +5 -5
  29. package/dist/{custom-node-writes-BdVl-LAC.d.ts → custom-node-writes-7ERv0f_X.d.cts} +9 -10
  30. package/dist/{custom-node-writes-Bu8JIqfA.d.cts → custom-node-writes-QyVZdTUA.d.ts} +9 -10
  31. package/dist/{editor-CWlj33GH.d.cts → editor-CojjwMmF.d.cts} +4 -4
  32. package/dist/{editor-D52SD4jG.d.ts → editor-PUlv5Pp7.d.ts} +4 -4
  33. package/dist/editor.cjs +1 -1
  34. package/dist/editor.css +129 -14
  35. package/dist/editor.d.cts +25 -25
  36. package/dist/editor.d.ts +25 -25
  37. package/dist/editor.js +1 -1
  38. package/dist/{hf-references-BdjsQNE_.d.ts → hf-references-Dvk6De4Q.d.cts} +1 -2
  39. package/dist/{hf-references-CgEOSw3i.d.cts → hf-references-z5Y4N1ab.d.ts} +1 -2
  40. package/dist/{image-resources-BveffuKp.d.cts → image-resources-DQOiwOuE.d.cts} +2 -2
  41. package/dist/{image-resources-D63k8w5f.d.ts → image-resources-eZqD_-vC.d.ts} +2 -2
  42. package/dist/{index-39yzaZO_.d.cts → index-DGPSeLI0.d.cts} +66 -13
  43. package/dist/{index-ZuqIj0b9.d.ts → index-oN-v8DQ5.d.ts} +66 -13
  44. package/dist/index.cjs +1 -1
  45. package/dist/index.d.cts +18 -18
  46. package/dist/index.d.ts +18 -18
  47. package/dist/index.js +1 -1
  48. package/dist/layout.cjs +1 -1
  49. package/dist/layout.d.cts +353 -272
  50. package/dist/layout.d.ts +353 -272
  51. package/dist/layout.js +1 -1
  52. package/dist/{note-nodes-BPSTVDMr.d.ts → note-nodes-BNCANoGN.d.ts} +1 -1
  53. package/dist/{note-nodes-C6DLxlvj.d.cts → note-nodes-DL-Au22P.d.cts} +1 -1
  54. package/dist/note-properties-CQlxjic_.d.cts +67 -0
  55. package/dist/note-properties-jvnw_DGG.d.ts +67 -0
  56. package/dist/omml-equation-BD-LsmWE.d.cts +84 -0
  57. package/dist/omml-equation-Dd3mBep-.d.ts +84 -0
  58. package/dist/{ooxml-tree-BU0e3DVi.d.cts → ooxml-package-CdEy9ufK.d.cts} +352 -1
  59. package/dist/{ooxml-tree-BU0e3DVi.d.ts → ooxml-package-CdEy9ufK.d.ts} +352 -1
  60. package/dist/output.cjs +1 -1
  61. package/dist/output.d.cts +8 -8
  62. package/dist/output.d.ts +8 -8
  63. package/dist/output.js +1 -1
  64. package/dist/{protocol-CD7slqvl.d.cts → protocol-C7ahrdUx.d.ts} +28 -4
  65. package/dist/{protocol-DsbfgBwA.d.ts → protocol-UuZOcOp7.d.cts} +28 -4
  66. package/dist/{review-support--I4ChuzF.d.ts → review-items-D5SPFtsO.d.ts} +49 -102
  67. package/dist/{review-support-CG7aVSPh.d.cts → review-items-DpsqTHio.d.cts} +49 -102
  68. package/dist/review-reads-B2Ji3fVU.d.ts +176 -0
  69. package/dist/review-reads-CP106AHp.d.cts +176 -0
  70. package/dist/{revision-projection-UKqvPa4-.d.ts → revision-projection-CILpvv4M.d.ts} +1 -1
  71. package/dist/{revision-projection-WzlQGBJx.d.cts → revision-projection-Cc4wz30g.d.cts} +1 -1
  72. package/dist/{semantic-cell-selection-I-uAmi0q.d.ts → semantic-cell-selection-BWhVAk5B.d.ts} +4 -4
  73. package/dist/{semantic-cell-selection-C45Gn4K-.d.cts → semantic-cell-selection-DJPjBWzf.d.cts} +4 -4
  74. package/dist/{semantic-interaction-DVUqu_47.d.cts → semantic-interaction-BjOcDB06.d.cts} +1 -1
  75. package/dist/{semantic-interaction-Bu_3IPaV.d.ts → semantic-interaction-Cca1-X_a.d.ts} +1 -1
  76. package/dist/{semantic-paint-BKiiDJol.d.ts → semantic-paint-CufpIQFw.d.ts} +7 -7
  77. package/dist/{semantic-paint-COQY0Lnq.d.cts → semantic-paint-Ur7pAINj.d.cts} +7 -7
  78. package/dist/{semantic-records-rAKWaD-1.d.cts → semantic-records-C3Z76KeN.d.cts} +59 -5
  79. package/dist/{semantic-records-DHcMZM2-.d.ts → semantic-records-Cc1MJrhM.d.ts} +59 -5
  80. package/dist/{shaped-measurer-Cw45Nu5R.d.ts → shaped-measurer-CYSK20E2.d.cts} +2 -4
  81. package/dist/{shaped-measurer-BRL__nm2.d.cts → shaped-measurer-CwlTPDJO.d.ts} +2 -4
  82. package/dist/store.cjs +1 -1
  83. package/dist/store.d.cts +78 -18
  84. package/dist/store.d.ts +78 -18
  85. package/dist/store.js +1 -1
  86. package/dist/{tree-op-types-A-SLSKzK.d.cts → tree-op-types-B0-sCtw-.d.cts} +27 -3
  87. package/dist/{tree-op-types-BbzrA-kg.d.ts → tree-op-types-XMVsJSpe.d.ts} +27 -3
  88. package/dist/{tree-session-C2NsEgfW.d.cts → tree-session-D945D43B.d.cts} +9 -18
  89. package/dist/{tree-session-DeNJa86l.d.ts → tree-session-DBJgmdmc.d.ts} +9 -18
  90. package/dist/{tree-store-CKswbQl3.d.ts → tree-store-C6vc8E_2.d.cts} +2 -3
  91. package/dist/{tree-store-Dob9Us6Y.d.cts → tree-store-ClA-qng4.d.ts} +2 -3
  92. package/package.json +2 -2
  93. package/dist/chunk-2WIXJ7CW.js +0 -10
  94. package/dist/chunk-42PRWWVE.js +0 -2
  95. package/dist/chunk-5XKD3VFP.js +0 -18
  96. package/dist/chunk-HCSWWXS2.cjs +0 -2
  97. package/dist/chunk-HTJLSGBH.cjs +0 -18
  98. package/dist/chunk-JEHWQPXS.cjs +0 -1
  99. package/dist/chunk-KCJLRAKT.js +0 -5
  100. package/dist/chunk-KTL3UMPK.js +0 -2
  101. package/dist/chunk-M6ZIVJUA.cjs +0 -2
  102. package/dist/chunk-NU57YOQE.js +0 -15
  103. package/dist/chunk-RUS2YBWU.cjs +0 -10
  104. package/dist/chunk-TJEWP7MX.cjs +0 -15
  105. package/dist/chunk-UGUPVZDY.cjs +0 -5
  106. package/dist/chunk-XJRMFS6O.js +0 -1
  107. package/dist/chunk-XN634HAC.js +0 -2
  108. package/dist/chunk-XRDTD4X3.cjs +0 -2
  109. package/dist/content-control-walk-CbTqHq6O.d.cts +0 -56
  110. package/dist/content-control-walk-D06GijR0.d.ts +0 -56
  111. package/dist/ooxml-package-CR5us6ad.d.cts +0 -354
  112. package/dist/ooxml-package-D_CtywTW.d.ts +0 -354
  113. package/dist/review-reads-B_pXe43J.d.ts +0 -432
  114. package/dist/review-reads-Bn7aZU4u.d.cts +0 -432
package/dist/layout.d.cts CHANGED
@@ -1,24 +1,24 @@
1
- import { V as VersionedShapingLibrary, T as TextShaper, F as FontByteValidator, a as FixedPointRoundingMode, b as FixedPoint, c as TextDirection, S as ShapedRun } from './shaped-measurer-BRL__nm2.cjs';
2
- export { C as CacheLookup, d as CacheMiss, e as CacheProvenance, D as DeclaredFontSubstitution, f as FontFingerprintInputs, g as FontRequest, h as FontResolutionError, i as FontResolutionErrorCode, j as FontResourceDefinition, k as FontResourceInstrumentation, l as FontResourceSnapshot, m as FontResourceSnapshotOptions, n as FontSubstitution, o as FontValidationResult, G as GlyphOutline, H as HARD_MAX_AGGREGATE_FONT_BYTES, p as HARD_MAX_FONT_BYTES, q as HARD_MAX_FONT_SOURCES, L as LayoutShapingOptions, N as NormalizationPolicy, O as OperationSnapshot, r as OperationSnapshotField, s as OperationSnapshotGuard, R as ResolvedCache, t as ResolvedFont, u as ResourceDependencyProvenance, v as ShapeInput, w as ShapedCluster, x as ShapedFontSpan, y as ShapedGlyph, z as ShapedMeasurerOptions, A as ShapedRunComparatorInputs, B as ShapedVerticalMetrics, E as ShapingEnvironment, I as ShapingEnvironmentFingerprintInputs, J as ShapingEnvironmentInput, K as boundedStructuralFontValidator, M as captureOperationSnapshot, P as createFontResourceSnapshot, Q as createShapedMeasurer, U as createShapedRun, W as createShapingEnvironment, X as fixedPoint, Y as fontRequestKey, Z as guardOperationSnapshot, _ as sha256FontBytes, $ as shapedRunComparatorInputs, a0 as shapingEnvironmentFingerprint, a1 as shapingEnvironmentFingerprintInputs } from './shaped-measurer-BRL__nm2.cjs';
3
- import { d as LayoutBox, D as DrawingPoint, e as DrawingInsets, a as StyleSpanRecord, I as InlineDrawingRecord, M as ModelRange, R as ResolvedRunStyle, f as ThemeFonts, g as ParagraphSpacing, h as ParagraphLineSpacing, i as ParagraphBorderEdge, j as ParagraphBorders, k as ResolvedTabStops, l as TableBorderSide, S as SemanticLayout, C as ContentControlBoundaryRecord$1, m as ContentControlLock, n as ParagraphFragmentRecord, L as LineRecord, o as PageRecord, B as BlockFragmentRecord, p as InlineDrawingLayoutContext, T as TextMeasurer, H as HyperlinkProjector, F as FieldLinkProjector, q as StoryPageFieldNeeds, A as AnchoredDrawingRecord, P as PageGeometry, r as CellBorderBox, s as TableBorderBox } from './semantic-records-rAKWaD-1.cjs';
4
- export { t as AUTO_PARAGRAPH_SPACING_PT, u as BorderGridGeometry, v as ContentControlGeometryFragment, w as ContentControlLevel, x as ContentControlMappedType, y as DEFAULT_PAGE_GEOMETRY, z as DEFAULT_RUN_STYLE, E as DEFAULT_TAB_INTERVAL_PT, G as DEFAULT_TAB_INTERVAL_TWIPS, J as EMPTY_TAB_STOPS, K as FieldAtomMarker, N as HeaderFooterStoryRecord, O as HyperlinkFieldSpec, Q as LineSpacingRule, U as ListMarkerRecord, V as MAX_BORDER_SPACE_PT, W as MAX_BORDER_WIDTH_PT, X as MAX_PARAGRAPH_SPACING_PT, Y as MAX_TABLE_BORDER_STROKES, Z as MAX_TAB_POSITION_TWIPS, _ as MAX_TAB_STOPS, $ as PARAGRAPH_BORDER_SIDES, a0 as ParagraphAutoSpacingContext, a1 as ParagraphBorderSide, a2 as ParagraphBorderStrokeRecord, a3 as ParagraphBottomBorderRecord, a4 as ParagraphIndent, a5 as ResolvedCellBorders, a6 as ResolvedTableBorderEdge, a7 as ResolvedTableBorderEdgeSegment, a8 as ResolvedUnderline, a9 as SINGLE_LINE_SPACING, aa as SourceRange, ab as SpanLinkRecord, ac as TAB_LEADER_GLYPH, ad as TabAlignment, ae as TabDestination, af as TabLeader, ag as TabStop, ah as TableBorderSideName, ai as TableBorderStrokeRecord, c as TableCellFragmentRecord, aj as TableFragmentRecord, b as TableRowFragmentRecord, ak as VerticalAlign, al as appliedSpaceBefore, am as applyLineSpacing, an as baselineShiftPtOf, ao as borderExtentPt, ap as borderWeight, aq as bottomBorderExtentPt, ar as cascadedParagraphBorders, as as cascadedTabStops, at as collapsedSpaceBefore, au as defaultTabIntervalFromSettings, av as displayText, aw as measureDisplayText, ax as nextTabDestination, ay as paragraphBorderExtentPt, az as paragraphBorderStrokeWidthPt, aA as paragraphBorders, aB as paragraphBordersFingerprint, aC as paragraphBreaksBefore, aD as paragraphContextualSpacing, aE as paragraphLineSpacing, aF as paragraphSpacing, aG as paragraphTabStops, aH as readBorderSide, aI as readCellBorders, aJ as readTableBorders, aK as resolveBorderConflict, aL as resolveRunStyle, aM as resolveTableCellBorderGrid, aN as runStylesEqual, aO as tabAdvanceWidth, aP as tabStopsFingerprint, aQ as withDefaultTabInterval } from './semantic-records-rAKWaD-1.cjs';
5
- import { O as OoxmlNode, a as OoxmlElement, e as OoxmlPart } from './ooxml-tree-BU0e3DVi.cjs';
6
- import { O as OoxmlProperty, C as ContentControlKind, n as ContentControlLevel, o as ContentControlLock$1, p as ContentControlDataBinding, I as ImpactClass } from './tree-op-types-A-SLSKzK.cjs';
7
- export { k as TableBorderStyle } from './tree-op-types-A-SLSKzK.cjs';
8
- import { N as NoteKind, n as noteTypeOf } from './note-nodes-C6DLxlvj.cjs';
9
- import { R as ResolvedFootnoteProperties, a as ResolvedEndnoteProperties } from './review-reads-Bn7aZU4u.cjs';
10
- export { p as paragraphOrderOfPart } from './review-reads-Bn7aZU4u.cjs';
11
- import { D as DocumentProperties, T as TreeModelChange } from './tree-store-Dob9Us6Y.cjs';
12
- import { R as RevisionDisplayMode } from './revision-projection-WzlQGBJx.cjs';
13
- export { D as DEFAULT_REVISION_DISPLAY_MODE, a as RevisionAttribution, b as RevisionKind, f as formatRevisionOf, m as markRevisionRemovesMark, p as paragraphMarkFormatRevisionOf, c as paragraphMarkRevisionOf, d as paragraphMarkRevisionsOf, r as revisionsAreDeletion, e as revisionsVisible, s as shownMarkRevision } from './revision-projection-WzlQGBJx.cjs';
14
- import { a as SectionColumns } from './semantic-cell-selection-C45Gn4K-.cjs';
15
- export { C as CellSelection, D as DEFAULT_SECTION_PROPERTIES, b as DEFAULT_VERTICAL_WEIGHT, c as DocumentSection, d as DocumentSectionsEnumeration, e as DrawingOverlayFrame, H as HitPoint, f as HitTestOptions, M as MAX_DOCUMENT_SECTIONS, P as PlacedCell, g as SectionBreakType, h as SectionColumnDefinition, i as SectionMargins, j as SectionPageNumbering, S as SectionProperties, k as SemanticHit, l as SemanticHitDrawing, T as TableCellAddress, m as TableCellContext, n as caretBoxOnLine, o as cellSelectionBetween, p as cellSelectionRects, q as cellSelectionText, r as contentControlAtPoint, s as enumerateDocumentSections, t as enumerateDocumentSectionsBounded, u as findDrawingOverlayFrameInLayout, v as geometryOfSection, w as hitTestPage, x as hitTestSheet, y as isFurniturePoint, z as lineEndOffset, A as pageAtY, B as paragraphSectionNode, E as paragraphsInCells, F as parsePageNumbering, G as parseSectionProperties, I as readSectionProperties, J as spanOffsetX, K as spansInCells, L as tableContextAt } from './semantic-cell-selection-C45Gn4K-.cjs';
16
- export { M as MAX_SDT_NESTING, c as collectFlowBlocks, a as contentControlContentChildren, i as isContentControl, b as isContentControlContent } from './content-control-walk-CbTqHq6O.cjs';
17
- export { h as CommentAnchor, i as CommentPosition, C as CommentRecord, j as CommentThreadState, c as ReviewCommentItem, d as ReviewCustomItem, a as ReviewItem, R as ReviewModelInput, k as ReviewParagraphAnchor, e as ReviewPosition, f as ReviewRange, b as ReviewRevisionItem, g as ReviewRevisionKind, W as W15_NAMESPACE_URI, l as activeReviewItem, m as anchorLineY, n as commentBodyText, o as commentInitials, p as firstReviewRange, r as reviewAnchorIndex, q as reviewItemGeometry, s as reviewItemKey, t as reviewItemPositionRank, u as reviewItemRanges, v as reviewItemsAt, w as reviewThreadRootOf } from './review-support-CG7aVSPh.cjs';
18
- import { S as SemanticPosition, b as SelectionRect, a as SemanticSelection } from './semantic-interaction-DVUqu_47.cjs';
19
- export { c as CaretAtOptions, C as CaretGeometry, M as MoveCaretOptions, N as NavigationCommand, d as caretAt, e as caretStops, f as caretStopsForBlocks, g as compositionAnchor, h as contentControlAtSemantic, i as contentControlsInLayout, j as hitTestSemantic, m as moveCaret, p as paragraphTextFromLayout, s as spansInSelection } from './semantic-interaction-DVUqu_47.cjs';
20
- import './image-resources-BveffuKp.cjs';
21
- import './ooxml-package-CR5us6ad.cjs';
1
+ import { V as VersionedShapingLibrary, T as TextShaper, F as FontByteValidator, a as FixedPointRoundingMode, b as FixedPoint, c as TextDirection, S as ShapedRun } from './shaped-measurer-CYSK20E2.cjs';
2
+ export { C as CacheLookup, d as CacheMiss, e as CacheProvenance, D as DeclaredFontSubstitution, f as FontFingerprintInputs, g as FontRequest, h as FontResolutionError, i as FontResolutionErrorCode, j as FontResourceDefinition, k as FontResourceInstrumentation, l as FontResourceSnapshot, m as FontResourceSnapshotOptions, n as FontSubstitution, o as FontValidationResult, G as GlyphOutline, H as HARD_MAX_AGGREGATE_FONT_BYTES, p as HARD_MAX_FONT_BYTES, q as HARD_MAX_FONT_SOURCES, L as LayoutShapingOptions, N as NormalizationPolicy, O as OperationSnapshot, r as OperationSnapshotField, s as OperationSnapshotGuard, R as ResolvedCache, t as ResolvedFont, u as ResourceDependencyProvenance, v as ShapeInput, w as ShapedCluster, x as ShapedFontSpan, y as ShapedGlyph, z as ShapedMeasurerOptions, A as ShapedRunComparatorInputs, B as ShapedVerticalMetrics, E as ShapingEnvironment, I as ShapingEnvironmentFingerprintInputs, J as ShapingEnvironmentInput, K as boundedStructuralFontValidator, M as captureOperationSnapshot, P as createFontResourceSnapshot, Q as createShapedMeasurer, U as createShapedRun, W as createShapingEnvironment, X as fixedPoint, Y as fontRequestKey, Z as guardOperationSnapshot, _ as shapedRunComparatorInputs, $ as shapingEnvironmentFingerprint, a0 as shapingEnvironmentFingerprintInputs } from './shaped-measurer-CYSK20E2.cjs';
3
+ import { d as LayoutBox, D as DrawingPoint, e as DrawingInsets, a as StyleSpanRecord, I as InlineDrawingRecord, M as ModelRange, S as SemanticLayout, B as BlockFragmentRecord, A as AnchoredDrawingRecord, f as PageRecord, R as ResolvedRunStyle, g as ThemeFonts, h as ParagraphSpacing, i as ParagraphLineSpacing, j as ParagraphBorderEdge, k as ParagraphBorders, l as ResolvedTabStops, m as TableBorderSide, C as ContentControlBoundaryRecord$1, n as ContentControlLock, o as ParagraphFragmentRecord, L as LineRecord, p as InlineDrawingLayoutContext, T as TextMeasurer, H as HyperlinkProjector, F as FieldLinkProjector, q as StoryPageFieldNeeds, P as PageGeometry, r as CellBorderBox, s as TableBorderBox } from './semantic-records-C3Z76KeN.cjs';
4
+ export { t as AUTO_PARAGRAPH_SPACING_PT, u as BorderGridGeometry, v as ContentControlGeometryFragment, w as ContentControlLevel, x as ContentControlMappedType, y as DEFAULT_PAGE_GEOMETRY, z as DEFAULT_RUN_STYLE, E as DEFAULT_TAB_INTERVAL_PT, G as DEFAULT_TAB_INTERVAL_TWIPS, J as EMPTY_TAB_STOPS, K as EquationFractionGeometry, N as EquationGeometry, O as EquationNaryGeometry, Q as EquationRadicalGeometry, U as EquationRowGeometry, V as EquationScriptGeometry, W as EquationSpanRecord, X as EquationTextGeometry, Y as FieldAtomMarker, Z as HeaderFooterStoryRecord, _ as HyperlinkFieldSpec, $ as LineSpacingRule, a0 as ListMarkerRecord, a1 as MAX_BORDER_SPACE_PT, a2 as MAX_BORDER_WIDTH_PT, a3 as MAX_PARAGRAPH_SPACING_PT, a4 as MAX_TABLE_BORDER_STROKES, a5 as MAX_TAB_POSITION_TWIPS, a6 as MAX_TAB_STOPS, a7 as PARAGRAPH_BORDER_SIDES, a8 as ParagraphAutoSpacingContext, a9 as ParagraphBorderSide, aa as ParagraphBorderStrokeRecord, ab as ParagraphBottomBorderRecord, ac as ParagraphIndent, ad as ResolvedCellBorders, ae as ResolvedTableBorderEdge, af as ResolvedTableBorderEdgeSegment, ag as ResolvedUnderline, ah as SINGLE_LINE_SPACING, ai as SourceRange, aj as SpanLinkRecord, ak as TAB_LEADER_GLYPH, al as TabAlignment, am as TabDestination, an as TabLeader, ao as TabStop, ap as TableBorderSideName, aq as TableBorderStrokeRecord, c as TableCellFragmentRecord, ar as TableFragmentRecord, b as TableRowFragmentRecord, as as VerticalAlign, at as appliedSpaceBefore, au as applyLineSpacing, av as baselineShiftPtOf, aw as borderExtentPt, ax as borderWeight, ay as bottomBorderExtentPt, az as cascadedParagraphBorders, aA as cascadedTabStops, aB as collapsedSpaceBefore, aC as defaultTabIntervalFromSettings, aD as displayText, aE as layoutEquation, aF as measureDisplayText, aG as nextTabDestination, aH as paragraphBorderExtentPt, aI as paragraphBorderStrokeWidthPt, aJ as paragraphBorders, aK as paragraphBordersFingerprint, aL as paragraphBreaksBefore, aM as paragraphContextualSpacing, aN as paragraphLineSpacing, aO as paragraphSpacing, aP as paragraphTabStops, aQ as readBorderSide, aR as readCellBorders, aS as readTableBorders, aT as resolveBorderConflict, aU as resolveRunStyle, aV as resolveTableCellBorderGrid, aW as runStylesEqual, aX as tabAdvanceWidth, aY as tabStopsFingerprint, aZ as withDefaultTabInterval } from './semantic-records-C3Z76KeN.cjs';
5
+ import { a as OoxmlNode, b as OoxmlElement, O as OoxmlPart } from './ooxml-package-CdEy9ufK.cjs';
6
+ import { O as OoxmlProperty, I as ImpactClass, C as ContentControlKind, n as ContentControlLevel, o as ContentControlLock$1, p as ContentControlDataBinding } from './tree-op-types-B0-sCtw-.cjs';
7
+ export { m as TableBorderStyle } from './tree-op-types-B0-sCtw-.cjs';
8
+ import { N as NoteKind, n as noteTypeOf } from './note-nodes-DL-Au22P.cjs';
9
+ import { R as ResolvedFootnoteProperties, a as ResolvedEndnoteProperties } from './note-properties-CQlxjic_.cjs';
10
+ import { T as TreeModelChange, D as DocumentProperties } from './tree-store-C6vc8E_2.cjs';
11
+ import { R as RevisionDisplayMode } from './revision-projection-Cc4wz30g.cjs';
12
+ export { D as DEFAULT_REVISION_DISPLAY_MODE, a as RevisionAttribution, b as RevisionKind, f as formatRevisionOf, m as markRevisionRemovesMark, p as paragraphMarkFormatRevisionOf, c as paragraphMarkRevisionOf, d as paragraphMarkRevisionsOf, r as revisionsAreDeletion, e as revisionsVisible, s as shownMarkRevision } from './revision-projection-Cc4wz30g.cjs';
13
+ import { a as SectionColumns } from './semantic-cell-selection-DJPjBWzf.cjs';
14
+ export { C as CellSelection, D as DEFAULT_SECTION_PROPERTIES, b as DEFAULT_VERTICAL_WEIGHT, c as DocumentSection, d as DocumentSectionsEnumeration, e as DrawingOverlayFrame, H as HitPoint, f as HitTestOptions, M as MAX_DOCUMENT_SECTIONS, P as PlacedCell, g as SectionBreakType, h as SectionColumnDefinition, i as SectionMargins, j as SectionPageNumbering, S as SectionProperties, k as SemanticHit, l as SemanticHitDrawing, T as TableCellAddress, m as TableCellContext, n as caretBoxOnLine, o as cellSelectionBetween, p as cellSelectionRects, q as cellSelectionText, r as contentControlAtPoint, s as enumerateDocumentSections, t as enumerateDocumentSectionsBounded, u as findDrawingOverlayFrameInLayout, v as geometryOfSection, w as hitTestPage, x as hitTestSheet, y as isFurniturePoint, z as lineEndOffset, A as pageAtY, B as paragraphSectionNode, E as paragraphsInCells, F as parsePageNumbering, G as parseSectionProperties, I as readSectionProperties, J as spanOffsetX, K as spansInCells, L as tableContextAt } from './semantic-cell-selection-DJPjBWzf.cjs';
15
+ export { M as MAX_SDT_NESTING, c as collectFlowBlocks, a as commentBodyText, b as commentInitials, d as contentControlContentChildren, i as isContentControl, e as isContentControlContent, p as paragraphOrderOfPart } from './review-reads-CP106AHp.cjs';
16
+ import { a as ReviewItem } from './review-items-DpsqTHio.cjs';
17
+ export { i as CommentAnchor, j as CommentPosition, C as CommentRecord, h as CommentThreadState, c as ReviewCommentItem, d as ReviewCustomItem, R as ReviewModelInput, e as ReviewPosition, f as ReviewRange, b as ReviewRevisionItem, g as ReviewRevisionKind, W as W15_NAMESPACE_URI, k as activeReviewItem, l as firstReviewRange, r as reviewItemKey, m as reviewItemPositionRank, n as reviewItemRanges, o as reviewItemsAt, p as reviewThreadRootOf } from './review-items-DpsqTHio.cjs';
18
+ import { S as SemanticPosition, b as SelectionRect, a as SemanticSelection } from './semantic-interaction-BjOcDB06.cjs';
19
+ export { c as CaretAtOptions, C as CaretGeometry, M as MoveCaretOptions, N as NavigationCommand, d as caretAt, e as caretStops, f as caretStopsForBlocks, g as compositionAnchor, h as contentControlAtSemantic, i as contentControlsInLayout, j as hitTestSemantic, m as moveCaret, p as paragraphTextFromLayout, s as spansInSelection } from './semantic-interaction-BjOcDB06.cjs';
20
+ import './image-resources-DQOiwOuE.cjs';
21
+ import './omml-equation-BD-LsmWE.cjs';
22
22
  import './contracts/types.cjs';
23
23
 
24
24
  /**
@@ -399,6 +399,246 @@ declare function resolveNumberingLevel(index: NumberingIndex, numId: string, ilv
399
399
  /** Empty index for tests / documents without numbering. */
400
400
  declare const EMPTY_NUMBERING_INDEX: NumberingIndex;
401
401
 
402
+ /**
403
+ * What a batch of commits can affect.
404
+ *
405
+ * `paragraphIds` is the set the commits touched directly. What that set MEANS depends on
406
+ * `impact`: for a local impact it bounds the work, for a structural one it only says where
407
+ * the reflow starts.
408
+ */
409
+ interface LayoutScope {
410
+ readonly impact: ImpactClass;
411
+ /** Node ids touched directly by the coalesced commits. */
412
+ readonly paragraphIds: ReadonlySet<string>;
413
+ /** Ids the commits created — no previous layout exists for these. */
414
+ readonly created: ReadonlySet<string>;
415
+ /** Ids the commits removed — any retained layout for these must be released. */
416
+ readonly deleted: ReadonlySet<string>;
417
+ /** Cache keys the commits invalidated (styles, numbering, fonts). */
418
+ readonly dependencyKeys: ReadonlySet<string>;
419
+ /** True when the block SEQUENCE changed, so ids alone cannot bound the reflow. */
420
+ readonly structural: boolean;
421
+ /** The revision this scope describes — the layout result must carry the same one. */
422
+ readonly revision: number;
423
+ }
424
+ /** How the scheduler produces layouts and when it publishes them. */
425
+ interface LayoutSchedulerOptions {
426
+ /**
427
+ * Produce a complete layout for the CURRENT model state.
428
+ *
429
+ * Given the accumulated scope so an incremental implementation can use it. It must tag
430
+ * the result with the revision it actually read, which is what makes staleness detectable
431
+ * rather than assumed.
432
+ */
433
+ readonly run: (scope: LayoutScope) => SemanticLayout;
434
+ /** The model's revision right now. Read at publish time, never cached. */
435
+ readonly currentRevision: () => number;
436
+ /** Called with a layout that is known current. Never called with a stale one. */
437
+ readonly publish: (layout: SemanticLayout, scope: LayoutScope) => void;
438
+ /**
439
+ * Defer work to a later turn, returning a canceller.
440
+ *
441
+ * Injected rather than assumed: the browser wants an animation frame, tests want to step
442
+ * the queue by hand, and a server has neither.
443
+ */
444
+ readonly schedule?: (run: () => void) => () => void;
445
+ /**
446
+ * Run a layout in slices instead of in one call (task 9.5).
447
+ *
448
+ * Optional: without it `run` is used and completes in one turn, which is right for a
449
+ * document small enough that slicing costs more than it saves.
450
+ */
451
+ readonly runCooperatively?: (scope: LayoutScope) => CooperativeRun;
452
+ }
453
+ interface CooperativeRun {
454
+ /**
455
+ * Advance the work. Returns the finished layout, or null to be called again.
456
+ *
457
+ * Split so a global relayout does not hold the main thread for the whole document: the
458
+ * scheduler yields between slices and a newer revision can cancel the run mid-flight
459
+ * rather than the user waiting for work whose result is already stale.
460
+ */
461
+ step(): SemanticLayout | null;
462
+ /** Abandon the run. Nothing partial is ever published. */
463
+ cancel(): void;
464
+ }
465
+ /**
466
+ * Coalesces commits into layout passes.
467
+ *
468
+ * A keystroke is one commit but must not be one full layout pass, so changes accumulate into a
469
+ * scope and are laid out together. Every published layout is tagged with the revision it actually
470
+ * read, which is what makes a stale result detectable rather than merely late.
471
+ */
472
+ interface LayoutScheduler {
473
+ /** Record a commit. Coalesces with anything already pending. */
474
+ notify(change: TreeModelChange): void;
475
+ /** Request a relayout for a reason the store did not report (page size, zoom, fonts). */
476
+ invalidateAll(revision: number, reason?: string): void;
477
+ /** Run any pending work now, synchronously. Returns whether a layout was published. */
478
+ flush(): boolean;
479
+ /** The scope that would be used if `flush` ran now, or null when nothing is pending. */
480
+ pending(): LayoutScope | null;
481
+ /** Drop pending work without publishing — for teardown. */
482
+ cancel(): void;
483
+ /** How many layouts were discarded for being stale. Diagnostics, and a test hook. */
484
+ readonly staleDiscards: number;
485
+ /** How many cooperative runs were abandoned because a newer revision arrived. */
486
+ readonly cancelledRuns: number;
487
+ }
488
+ /**
489
+ * Build the scheduler that turns a stream of commits into coalesced layout passes.
490
+ *
491
+ * Keystrokes arrive faster than a document can be laid out, so changes accumulate into one scope
492
+ * and are laid out together rather than once per commit.
493
+ */
494
+ declare function createLayoutScheduler(options: LayoutSchedulerOptions): LayoutScheduler;
495
+
496
+ /** The flow state as it stood immediately before one block was placed. */
497
+ interface FlowCheckpoint {
498
+ /** Completed pages at this point. The prefix of the previous layout that still stands. */
499
+ readonly pageCount: number;
500
+ /** Fragments already on the page being built. */
501
+ readonly pageFragments: readonly BlockFragmentRecord[];
502
+ /** Anchored drawings already collected for the open page. */
503
+ readonly pendingAnchoredDrawings: readonly AnchoredDrawingRecord[];
504
+ /**
505
+ * Anchored drawings overlap resolution pushed onto the NEXT page, and how many times each
506
+ * drawing has been pushed.
507
+ *
508
+ * Flow state like the rest of this record, and carried for the same reason: a resume that
509
+ * started with an empty list dropped a drawing that the previous pass had deferred but not
510
+ * yet placed, and a convergence that did not compare them accepted a flow that still owed
511
+ * the next page a drawing as equal to one that owed it nothing.
512
+ */
513
+ readonly deferredAnchoredDrawings: readonly AnchoredDrawingRecord[];
514
+ readonly anchorPageDeferCounts: ReadonlyMap<string, number>;
515
+ readonly cursorY: number;
516
+ readonly lineCounter: number;
517
+ /** Trailing paragraph spacing participating in adjacent-spacing collapse. */
518
+ readonly previousSpaceAfter: number;
519
+ /** Active column index when the section uses multiple columns. */
520
+ readonly flowColumnIndex: number;
521
+ }
522
+ /**
523
+ * What the last layout pass actually did — the observable evidence that incremental layout is
524
+ * working.
525
+ *
526
+ * `reusedPages` and `fullPasses` are the ones that matter: a typing keystroke that rebuilds every
527
+ * page produces identical output and unusable performance, so the tests assert on these rather
528
+ * than on the rendered result.
529
+ */
530
+ interface LayoutSessionStats {
531
+ /** Paragraphs placed by the last pass, against the number in the document. */
532
+ readonly placed: number;
533
+ readonly total: number;
534
+ /** Pages carried over from the previous layout without being rebuilt. */
535
+ readonly reusedPages: number;
536
+ /** Passes that could not resume and laid the document out from the top. */
537
+ readonly fullPasses: number;
538
+ }
539
+ /** One section's place on the previous document sheet stack. */
540
+ interface SectionStackSpan {
541
+ readonly startIndex: number;
542
+ readonly pageCount: number;
543
+ readonly sheetY: number;
544
+ /** Remapped pages (projectors intact) from the last pass for this section. */
545
+ readonly remappedPages: readonly PageRecord[];
546
+ }
547
+ /** Orchestrator state for multi-section incremental layout. */
548
+ interface MultiSectionLayoutState {
549
+ structureKey: string;
550
+ sections: LayoutSession[];
551
+ spans: SectionStackSpan[];
552
+ previousRemapped: readonly PageRecord[];
553
+ previousFinalized: SemanticLayout | null;
554
+ previousPageCount: number;
555
+ }
556
+ /**
557
+ * Carried-over state that makes layout incremental.
558
+ *
559
+ * A caller creates one and hands the SAME object back each pass. It holds the previous pages, the
560
+ * per-block cache keys and the flow checkpoints a pass resumes from, so an edit low in a document
561
+ * re-lays only what follows it. A no-change pass returns the previous pages by identity.
562
+ */
563
+ interface LayoutSession {
564
+ /** @internal Mutable across passes; a caller only creates one and passes it back. */
565
+ previous: SemanticLayout | null;
566
+ checkpoints: FlowCheckpoint[];
567
+ keys: string[];
568
+ /** Geometry and producer of the previous pass; a change to either forces a full pass. */
569
+ context: string;
570
+ /**
571
+ * Whether the previous pass read page PARITY: even/odd header variants, or an anchored
572
+ * drawing positioned against an inside/outside frame or alignment.
573
+ *
574
+ * The document page index is not part of {@link context} — page numbers re-project at
575
+ * finalize and page shells renumber at remap — so parity is the only page-position input
576
+ * that can invalidate a section's layout. Tracked separately so the common document pays
577
+ * nothing for a start-index shift.
578
+ */
579
+ parityDependent: boolean;
580
+ /** Parity (0/1) of the document page index this session's layout started on. */
581
+ startPageParity: number;
582
+ /**
583
+ * The section's memoized prepass (prepared blocks, cache keys, flow keys, document
584
+ * order), reused verbatim while its inputs are unchanged. Opaque here: the shape is
585
+ * owned by `semantic-layout.ts`, which is the only reader and writer.
586
+ */
587
+ prepass: unknown;
588
+ /**
589
+ * The notes pass's memoized state (reference hits, mark contexts, per-page attach
590
+ * results), reused while its inputs are unchanged. Opaque here: the shape is owned by
591
+ * `note-pagination.ts`, which is the only reader and writer.
592
+ */
593
+ notes: unknown;
594
+ /** Line counter at the start of the previous pass, for translating reused section counts. */
595
+ startLineCounter: number;
596
+ /**
597
+ * Line counter after the last block of the previous pass.
598
+ *
599
+ * Multi-section orchestration threads a global line counter across sections; early-exit
600
+ * paths (unchanged / converged) must report this rather than the resume cursor.
601
+ */
602
+ endLineCounter: number;
603
+ /**
604
+ * Flow state after the last block of the previous pass, for a section that CONTINUES
605
+ * onto this one's last sheet (`w:type="continuous"`).
606
+ *
607
+ * `endCursorY` is the used height of that sheet's content column; `endSpaceAfter` is the
608
+ * trailing paragraph spacing still eligible for adjacent-spacing collapse. Reported by
609
+ * the early-exit paths (unchanged / converged) for the same reason as
610
+ * {@link endLineCounter}: the resume cursor is not the end of the flow.
611
+ */
612
+ endCursorY: number;
613
+ endSpaceAfter: number;
614
+ /** Whether the last page of that pass was still open (no trailing page break). */
615
+ endsOpenPage: boolean;
616
+ stats: LayoutSessionStats;
617
+ /**
618
+ * Column-height limit chosen by the last balanced multi-column pass, or null when the
619
+ * last pass did not balance.
620
+ *
621
+ * Lets the next pass try the remembered limit FIRST: an unchanged balanced section
622
+ * early-exits on that single attempt instead of re-running the natural pass and the
623
+ * whole balance search every time.
624
+ */
625
+ balanceLimit: number | null;
626
+ /** Present when the last pass was multi-section; child sessions live here. */
627
+ multi: MultiSectionLayoutState | null;
628
+ /**
629
+ * Page-bottom footnote reserves from the last published notes layout.
630
+ *
631
+ * Seeded into the next {@link layoutSemanticDocumentWithNotes} call so the first body
632
+ * pass already matches the reserved context key — without this, every notes document
633
+ * starts empty, mismatches, and throws away the session on reflow.
634
+ */
635
+ notePageBottomReserves: ReadonlyMap<number, number> | null;
636
+ }
637
+ /**
638
+ * A layout session, retained across revisions by the caller.
639
+ */
640
+ declare function createLayoutSession(): LayoutSession;
641
+
402
642
  /**
403
643
  * A paragraph's list membership fully resolved: definition, level, marker text and geometry.
404
644
  *
@@ -417,7 +657,7 @@ interface ResolvedListItem {
417
657
  /** Effective indent after merging level + paragraph indents, in points. */
418
658
  readonly indent: NumberingLevelIndent;
419
659
  readonly markerStyle: ResolvedRunStyle;
420
- /** Fingerprint for layout cache keys (indent + level identity, not ordinal). */
660
+ /** Fingerprint for layout cache keys (indent, marker text, marker face). */
421
661
  readonly cacheToken: string;
422
662
  }
423
663
  /**
@@ -475,15 +715,6 @@ declare function withResolvedListItems<T extends {
475
715
  readonly numberingIndex?: NumberingIndex;
476
716
  readonly listItems?: ReadonlyMap<string, ResolvedListItem>;
477
717
  readonly styleCascade?: StyleCascadeTable;
478
- /**
479
- * Host oracle for "is this font family really loaded". Supplied, a Symbol/Wingdings
480
- * bullet keeps the file's own private-use codepoint so the authored typeface draws it;
481
- * absent, it falls back to the Unicode equivalent rather than a tofu box.
482
- *
483
- * The resolve is memoized on this function's IDENTITY: a host whose answers change
484
- * over time (a font finished loading) must supply a new closure at that point, or the
485
- * memo will keep serving marker glyphs computed from the old answers.
486
- */
487
718
  readonly isFontAvailable?: (family: string) => boolean;
488
719
  }>(options: T, blocks: readonly OoxmlElement[]): T & {
489
720
  readonly numberingIndex: NumberingIndex;
@@ -856,6 +1087,9 @@ declare function wordBoundary(text: string, offset: number, direction: -1 | 1):
856
1087
  */
857
1088
  declare function positionPastDeletion(layout: SemanticLayout, position: SemanticPosition): SemanticPosition;
858
1089
 
1090
+ /** Synchronous platform-neutral SHA-256 used before font bytes cross into a shaping implementation. */
1091
+ declare const sha256FontBytes: (bytes: Uint8Array) => string;
1092
+
859
1093
  /**
860
1094
  * The exact HarfBuzz build this engine shapes against.
861
1095
  *
@@ -1685,152 +1919,6 @@ interface HeaderFooterStoryInputs {
1685
1919
  */
1686
1920
  declare function layoutHeaderFooterStory(part: OoxmlPart, contentWidth: number, measurer: TextMeasurer, producer: string, cache?: ParagraphLayoutCache<readonly PendingLine[]>, styleCascade?: StyleCascadeTable, pageContext?: FieldPageContext, maxPageContextEntries?: number, defaultTabStopPt?: number, displayMode?: RevisionDisplayMode, inlineDrawingLayout?: InlineDrawingLayoutContext, drawingTokenForParagraph?: (paragraph: OoxmlNode) => string, drawingLayoutToken?: string, hfPageContext?: HeaderFooterPageContext, documentProperties?: DocumentProperties, inputs?: HeaderFooterStoryInputs): HeaderFooterStoryLayout;
1687
1921
 
1688
- /** The flow state as it stood immediately before one block was placed. */
1689
- interface FlowCheckpoint {
1690
- /** Completed pages at this point. The prefix of the previous layout that still stands. */
1691
- readonly pageCount: number;
1692
- /** Fragments already on the page being built. */
1693
- readonly pageFragments: readonly BlockFragmentRecord[];
1694
- /** Anchored drawings already collected for the open page. */
1695
- readonly pendingAnchoredDrawings: readonly AnchoredDrawingRecord[];
1696
- /**
1697
- * Anchored drawings overlap resolution pushed onto the NEXT page, and how many times each
1698
- * drawing has been pushed.
1699
- *
1700
- * Flow state like the rest of this record, and carried for the same reason: a resume that
1701
- * started with an empty list dropped a drawing that the previous pass had deferred but not
1702
- * yet placed, and a convergence that did not compare them accepted a flow that still owed
1703
- * the next page a drawing as equal to one that owed it nothing.
1704
- */
1705
- readonly deferredAnchoredDrawings: readonly AnchoredDrawingRecord[];
1706
- readonly anchorPageDeferCounts: ReadonlyMap<string, number>;
1707
- readonly cursorY: number;
1708
- readonly lineCounter: number;
1709
- /** Trailing paragraph spacing participating in adjacent-spacing collapse. */
1710
- readonly previousSpaceAfter: number;
1711
- /** Active column index when the section uses multiple columns. */
1712
- readonly flowColumnIndex: number;
1713
- }
1714
- /**
1715
- * What the last layout pass actually did — the observable evidence that incremental layout is
1716
- * working.
1717
- *
1718
- * `reusedPages` and `fullPasses` are the ones that matter: a typing keystroke that rebuilds every
1719
- * page produces identical output and unusable performance, so the tests assert on these rather
1720
- * than on the rendered result.
1721
- */
1722
- interface LayoutSessionStats {
1723
- /** Paragraphs placed by the last pass, against the number in the document. */
1724
- readonly placed: number;
1725
- readonly total: number;
1726
- /** Pages carried over from the previous layout without being rebuilt. */
1727
- readonly reusedPages: number;
1728
- /** Passes that could not resume and laid the document out from the top. */
1729
- readonly fullPasses: number;
1730
- }
1731
- /** One section's place on the previous document sheet stack. */
1732
- interface SectionStackSpan {
1733
- readonly startIndex: number;
1734
- readonly pageCount: number;
1735
- readonly sheetY: number;
1736
- /** Remapped pages (projectors intact) from the last pass for this section. */
1737
- readonly remappedPages: readonly PageRecord[];
1738
- }
1739
- /** Orchestrator state for multi-section incremental layout. */
1740
- interface MultiSectionLayoutState {
1741
- structureKey: string;
1742
- sections: LayoutSession[];
1743
- spans: SectionStackSpan[];
1744
- previousRemapped: readonly PageRecord[];
1745
- previousFinalized: SemanticLayout | null;
1746
- previousPageCount: number;
1747
- }
1748
- /**
1749
- * Carried-over state that makes layout incremental.
1750
- *
1751
- * A caller creates one and hands the SAME object back each pass. It holds the previous pages, the
1752
- * per-block cache keys and the flow checkpoints a pass resumes from, so an edit low in a document
1753
- * re-lays only what follows it. A no-change pass returns the previous pages by identity.
1754
- */
1755
- interface LayoutSession {
1756
- /** @internal Mutable across passes; a caller only creates one and passes it back. */
1757
- previous: SemanticLayout | null;
1758
- checkpoints: FlowCheckpoint[];
1759
- keys: string[];
1760
- /** Geometry and producer of the previous pass; a change to either forces a full pass. */
1761
- context: string;
1762
- /**
1763
- * Whether the previous pass read page PARITY: even/odd header variants, or an anchored
1764
- * drawing positioned against an inside/outside frame or alignment.
1765
- *
1766
- * The document page index is not part of {@link context} — page numbers re-project at
1767
- * finalize and page shells renumber at remap — so parity is the only page-position input
1768
- * that can invalidate a section's layout. Tracked separately so the common document pays
1769
- * nothing for a start-index shift.
1770
- */
1771
- parityDependent: boolean;
1772
- /** Parity (0/1) of the document page index this session's layout started on. */
1773
- startPageParity: number;
1774
- /**
1775
- * The section's memoized prepass (prepared blocks, cache keys, flow keys, document
1776
- * order), reused verbatim while its inputs are unchanged. Opaque here: the shape is
1777
- * owned by `semantic-layout.ts`, which is the only reader and writer.
1778
- */
1779
- prepass: unknown;
1780
- /**
1781
- * The notes pass's memoized state (reference hits, mark contexts, per-page attach
1782
- * results), reused while its inputs are unchanged. Opaque here: the shape is owned by
1783
- * `note-pagination.ts`, which is the only reader and writer.
1784
- */
1785
- notes: unknown;
1786
- /** Line counter at the start of the previous pass, for translating reused section counts. */
1787
- startLineCounter: number;
1788
- /**
1789
- * Line counter after the last block of the previous pass.
1790
- *
1791
- * Multi-section orchestration threads a global line counter across sections; early-exit
1792
- * paths (unchanged / converged) must report this rather than the resume cursor.
1793
- */
1794
- endLineCounter: number;
1795
- /**
1796
- * Flow state after the last block of the previous pass, for a section that CONTINUES
1797
- * onto this one's last sheet (`w:type="continuous"`).
1798
- *
1799
- * `endCursorY` is the used height of that sheet's content column; `endSpaceAfter` is the
1800
- * trailing paragraph spacing still eligible for adjacent-spacing collapse. Reported by
1801
- * the early-exit paths (unchanged / converged) for the same reason as
1802
- * {@link endLineCounter}: the resume cursor is not the end of the flow.
1803
- */
1804
- endCursorY: number;
1805
- endSpaceAfter: number;
1806
- /** Whether the last page of that pass was still open (no trailing page break). */
1807
- endsOpenPage: boolean;
1808
- stats: LayoutSessionStats;
1809
- /**
1810
- * Column-height limit chosen by the last balanced multi-column pass, or null when the
1811
- * last pass did not balance.
1812
- *
1813
- * Lets the next pass try the remembered limit FIRST: an unchanged balanced section
1814
- * early-exits on that single attempt instead of re-running the natural pass and the
1815
- * whole balance search every time.
1816
- */
1817
- balanceLimit: number | null;
1818
- /** Present when the last pass was multi-section; child sessions live here. */
1819
- multi: MultiSectionLayoutState | null;
1820
- /**
1821
- * Page-bottom footnote reserves from the last published notes layout.
1822
- *
1823
- * Seeded into the next {@link layoutSemanticDocumentWithNotes} call so the first body
1824
- * pass already matches the reserved context key — without this, every notes document
1825
- * starts empty, mismatches, and throws away the session on reflow.
1826
- */
1827
- notePageBottomReserves: ReadonlyMap<number, number> | null;
1828
- }
1829
- /**
1830
- * A layout session, retained across revisions by the caller.
1831
- */
1832
- declare function createLayoutSession(): LayoutSession;
1833
-
1834
1922
  /**
1835
1923
  * A deterministic measurer for tests and headless use.
1836
1924
  *
@@ -2325,6 +2413,93 @@ interface ContentControlBoundaryRecord {
2325
2413
  */
2326
2414
  declare function contentControlBoundaries(part: OoxmlPart, layout: SemanticLayout): readonly ContentControlBoundaryRecord[];
2327
2415
 
2416
+ /** Where one paragraph sits, resolved once so a card is an O(1) lookup. */
2417
+ interface ReviewParagraphAnchor {
2418
+ readonly pageIndex: number;
2419
+ /** Sheet-absolute y of the page's content box. */
2420
+ readonly contentY: number;
2421
+ /** The fragment's own y, measured from that content box. */
2422
+ readonly fragmentY: number;
2423
+ readonly lines?: readonly {
2424
+ readonly range: {
2425
+ readonly end: number;
2426
+ };
2427
+ readonly box: {
2428
+ readonly y: number;
2429
+ };
2430
+ /**
2431
+ * Present on a real line. A merged fragment's join line carries spans from two
2432
+ * paragraphs, and its `range` can only name one of them, so the OTHER paragraph's extent
2433
+ * on that line is readable here and nowhere else.
2434
+ */
2435
+ readonly spans?: readonly {
2436
+ readonly range: {
2437
+ readonly paragraphId: string;
2438
+ readonly end: number;
2439
+ };
2440
+ }[];
2441
+ }[];
2442
+ }
2443
+ /**
2444
+ * The y of the line a position sits on, measured from the anchor's own origin.
2445
+ *
2446
+ * An ordinary line answers from its own range, exactly as it always did. On a merged
2447
+ * fragment's join line the range names one of the two paragraphs, so an offset compared
2448
+ * against it either overshot — putting a card in the absorbed half beside the wrong line —
2449
+ * or matched the first line every time.
2450
+ */
2451
+ declare function anchorLineY(anchor: ReviewParagraphAnchor, paragraphId: string, offset: number): number;
2452
+ /**
2453
+ * Paragraph id to its place on the page, in ONE pass over the layout.
2454
+ *
2455
+ * Built once per layout and reused by every card. The straightforward version — scan the
2456
+ * pages until the paragraph turns up, per card — is a full-document walk per card, and a
2457
+ * contract with two hundred comments walked the document two hundred times every time the
2458
+ * caret moved. Toggling the pane was visibly slow for exactly that reason.
2459
+ */
2460
+ declare function reviewAnchorIndex<TPage extends {
2461
+ readonly index: number;
2462
+ readonly contentBox: {
2463
+ readonly y: number;
2464
+ };
2465
+ }>(layout: {
2466
+ readonly pages: readonly TPage[];
2467
+ }, paragraphFragments: (page: TPage) => readonly {
2468
+ readonly paragraphId: string;
2469
+ readonly box: {
2470
+ readonly y: number;
2471
+ };
2472
+ readonly lines?: readonly {
2473
+ readonly range: {
2474
+ readonly end: number;
2475
+ };
2476
+ readonly box: {
2477
+ readonly y: number;
2478
+ };
2479
+ /** Present on a real line; a merged one carries spans from more than one paragraph. */
2480
+ readonly spans?: readonly {
2481
+ readonly range: {
2482
+ readonly paragraphId: string;
2483
+ readonly end: number;
2484
+ };
2485
+ }[];
2486
+ }[];
2487
+ }[]): Map<string, ReviewParagraphAnchor>;
2488
+ /**
2489
+ * Where a card belongs beside the page, from LAYOUT RECORDS.
2490
+ *
2491
+ * The one question the tree cannot answer, and the one a surface must not answer for itself:
2492
+ * measuring painted DOM puts the sidebar a repaint behind the document and breaks outright
2493
+ * while pagination is in flight.
2494
+ *
2495
+ * Returns null when the item has no resolvable range, or when its paragraph is not in this
2496
+ * layout — a comment anchored in a header belongs to a story the body layout never saw.
2497
+ */
2498
+ declare function reviewItemGeometry(item: ReviewItem, index: ReadonlyMap<string, ReviewParagraphAnchor>): {
2499
+ readonly pageIndex: number;
2500
+ readonly y: number;
2501
+ } | null;
2502
+
2328
2503
  /** The visible band of the document, in layout units. */
2329
2504
  interface ViewportWindow {
2330
2505
  /** Distance from the top of the document to the top of the visible area, in layout units. */
@@ -2354,100 +2529,6 @@ interface MaterializationInput {
2354
2529
  */
2355
2530
  declare function pagesToMaterialize(input: MaterializationInput): Set<number>;
2356
2531
 
2357
- /**
2358
- * What a batch of commits can affect.
2359
- *
2360
- * `paragraphIds` is the set the commits touched directly. What that set MEANS depends on
2361
- * `impact`: for a local impact it bounds the work, for a structural one it only says where
2362
- * the reflow starts.
2363
- */
2364
- interface LayoutScope {
2365
- readonly impact: ImpactClass;
2366
- /** Node ids touched directly by the coalesced commits. */
2367
- readonly paragraphIds: ReadonlySet<string>;
2368
- /** Ids the commits created — no previous layout exists for these. */
2369
- readonly created: ReadonlySet<string>;
2370
- /** Ids the commits removed — any retained layout for these must be released. */
2371
- readonly deleted: ReadonlySet<string>;
2372
- /** Cache keys the commits invalidated (styles, numbering, fonts). */
2373
- readonly dependencyKeys: ReadonlySet<string>;
2374
- /** True when the block SEQUENCE changed, so ids alone cannot bound the reflow. */
2375
- readonly structural: boolean;
2376
- /** The revision this scope describes — the layout result must carry the same one. */
2377
- readonly revision: number;
2378
- }
2379
- /** How the scheduler produces layouts and when it publishes them. */
2380
- interface LayoutSchedulerOptions {
2381
- /**
2382
- * Produce a complete layout for the CURRENT model state.
2383
- *
2384
- * Given the accumulated scope so an incremental implementation can use it. It must tag
2385
- * the result with the revision it actually read, which is what makes staleness detectable
2386
- * rather than assumed.
2387
- */
2388
- readonly run: (scope: LayoutScope) => SemanticLayout;
2389
- /** The model's revision right now. Read at publish time, never cached. */
2390
- readonly currentRevision: () => number;
2391
- /** Called with a layout that is known current. Never called with a stale one. */
2392
- readonly publish: (layout: SemanticLayout, scope: LayoutScope) => void;
2393
- /**
2394
- * Defer work to a later turn, returning a canceller.
2395
- *
2396
- * Injected rather than assumed: the browser wants an animation frame, tests want to step
2397
- * the queue by hand, and a server has neither.
2398
- */
2399
- readonly schedule?: (run: () => void) => () => void;
2400
- /**
2401
- * Run a layout in slices instead of in one call (task 9.5).
2402
- *
2403
- * Optional: without it `run` is used and completes in one turn, which is right for a
2404
- * document small enough that slicing costs more than it saves.
2405
- */
2406
- readonly runCooperatively?: (scope: LayoutScope) => CooperativeRun;
2407
- }
2408
- interface CooperativeRun {
2409
- /**
2410
- * Advance the work. Returns the finished layout, or null to be called again.
2411
- *
2412
- * Split so a global relayout does not hold the main thread for the whole document: the
2413
- * scheduler yields between slices and a newer revision can cancel the run mid-flight
2414
- * rather than the user waiting for work whose result is already stale.
2415
- */
2416
- step(): SemanticLayout | null;
2417
- /** Abandon the run. Nothing partial is ever published. */
2418
- cancel(): void;
2419
- }
2420
- /**
2421
- * Coalesces commits into layout passes.
2422
- *
2423
- * A keystroke is one commit but must not be one full layout pass, so changes accumulate into a
2424
- * scope and are laid out together. Every published layout is tagged with the revision it actually
2425
- * read, which is what makes a stale result detectable rather than merely late.
2426
- */
2427
- interface LayoutScheduler {
2428
- /** Record a commit. Coalesces with anything already pending. */
2429
- notify(change: TreeModelChange): void;
2430
- /** Request a relayout for a reason the store did not report (page size, zoom, fonts). */
2431
- invalidateAll(revision: number, reason?: string): void;
2432
- /** Run any pending work now, synchronously. Returns whether a layout was published. */
2433
- flush(): boolean;
2434
- /** The scope that would be used if `flush` ran now, or null when nothing is pending. */
2435
- pending(): LayoutScope | null;
2436
- /** Drop pending work without publishing — for teardown. */
2437
- cancel(): void;
2438
- /** How many layouts were discarded for being stale. Diagnostics, and a test hook. */
2439
- readonly staleDiscards: number;
2440
- /** How many cooperative runs were abandoned because a newer revision arrived. */
2441
- readonly cancelledRuns: number;
2442
- }
2443
- /**
2444
- * Build the scheduler that turns a stream of commits into coalesced layout passes.
2445
- *
2446
- * Keystrokes arrive faster than a document can be laid out, so changes accumulate into one scope
2447
- * and are laid out together rather than once per commit.
2448
- */
2449
- declare function createLayoutScheduler(options: LayoutSchedulerOptions): LayoutScheduler;
2450
-
2451
2532
  /** Far above anything Word authors (its UI caps at 63) while keeping allocation bounded. */
2452
2533
  declare const MAX_TABLE_COLUMNS = 1024;
2453
2534
 
@@ -2716,4 +2797,4 @@ declare class TablePaginationError extends Error {
2716
2797
  constructor(code: TablePaginationErrorCode, message: string);
2717
2798
  }
2718
2799
 
2719
- export { AUTO_PREFERRED_WIDTH, type AbstractNumDefinition, type BidiEmbeddingLevels, BlockFragmentRecord, CELL_PAD, COMPOUND_BORDER_MIN_GAP_PT, COMPOUND_BORDER_MIN_STROKE_PT, type CanvasMeasurerOptions, type CanvasTextContext, type CanvasTextMetrics, type CascadedParagraphFormatting, CellBorderBox, type CellMarginsPt, type CellVerticalAlign, type CompoundBorderMetrics, ContentControlBoundaryRecord$1 as ContentControlBoundaryRecord, type ContentControlFragmentRecord, ContentControlLock, DEFAULT_CANVAS_FONT_STACK, DEFAULT_CELL_MARGINS, EMPTY_NUMBERING_INDEX, FieldLinkProjector, FixedPoint, FixedPointRoundingMode, FontByteValidator, type FontSlot, GRAPHEME_SEGMENTER_LOCALE, type GraphemeBoundary, type GraphemeSegment, type GraphemeWordSegmentRecord, HARFBUZZ_SHAPING_LIBRARY, type HarfBuzzFaceCacheEvent, type HarfBuzzOutlineCacheEvent, type HarfBuzzShapeCacheEvent, HarfBuzzShapingError, type HarfBuzzShapingErrorCode, type HarfBuzzTextShaper, type HarfBuzzTextShaperInstrumentation, type HarfBuzzTextShaperOptions, type HeaderFooterVariantName, HyperlinkProjector, type KeyedRange, LayoutBox, type LayoutCacheStats, type LayoutScheduler, type LayoutSchedulerOptions, type LayoutScope, type LayoutSession, type LayoutSessionStats, type LevelOverride, LineRecord, type ListCounterAdvance, type ListCounterState, type ListMarkerAlign, type ListSuffix, MAX_EACH_PAGE_MARK_CANDIDATES, MAX_LVL_OVERRIDES, MAX_LVL_TEXT_LENGTH, MAX_MARKER_TEXT_LENGTH, MAX_NOTES_LAID_OUT, MAX_NOTE_FRAGMENTS, MAX_NOTE_OVERFLOW_PAGES, MAX_NOTE_REFLOW_ATTEMPTS, MAX_NUMBERING_DEFINITIONS, MAX_STYLE_BASED_ON_DEPTH, MAX_STYLE_DEFINITIONS, MAX_TABLE_COLUMNS, MAX_TABLE_NESTING, MAX_TABLE_ROW_FRAGMENTS, MAX_TABLE_ROW_HEIGHT_PT, type MaterializationInput, type NoteDisplayMark, type NoteLayoutFallbackReason, type NoteMarkContext, type NotePaginationFallbackReason, type NoteReferenceSite, type NoteSeparatorLayout, type NoteSeparatorRuleStyle, type NoteStoryDrawings, type NoteStoryLayout, type NotesAttachResult, type NotesLayoutInput, type NumDefinition, type NumberingIndex, type NumberingLevel, type NumberingLevelIndent, type PageFurniture, PageGeometry, PageRecord, type PageRefIndex, ParagraphBorderEdge, ParagraphBorders, ParagraphFragmentRecord, type ParagraphKeyInputs, type ParagraphLayoutCache, type ParagraphLayoutCacheOptions, type ParagraphLayoutInputs, ParagraphLineSpacing, ParagraphSpacing, type PreferredWidth, type PreferredWidthType, type ResolvedListItem, ResolvedRunStyle, type ResolvedSurfaceMeasurer, ResolvedTabStops, RevisionDisplayMode, type ScriptItem, SectionColumns, SelectionRect, SemanticLayout, type SemanticLayoutOptions, SemanticPosition, SemanticSelection, type SemanticTableCell, type SemanticTableRow, type SemanticTableStructure, ShapedRun, type StyleCascadeTable, type StyleDefinition, StyleSpanRecord, type TableAlignment, TableBorderBox, TableBorderSide, type TableCellStyleFormatting, TablePaginationError, type TablePaginationErrorCode, type TableRowHeight, type TableRowHeightRule, TextDirection, TextMeasurer, TextShaper, UnsupportedScriptError, VersionedShapingLibrary, type ViewportWindow, WORD_SEGMENTER_LOCALE, type WordBoundary, type WordBoundaryResolverDeps, type WordSegment, attachNotesToLayout, boundedFallbackWordSegments, buildNumberingIndex, buildPageRefIndex, buildStyleCascadeTable, cascadeParagraphFormatting, cascadeRunProperties, cascadedBottomBorder, clampListValue, computeDoubleBorderMetricsPt, computeFootnoteReserves, contentControlBoundaries, contentControlHoldingParagraph, contentControlRecordsInPart, contentControlsOfLayout, createBoundedFallbackWordBoundary, createDefaultWordBoundary, createFixedMeasurer, createHarfBuzzTextShaper, createIntlWordBoundary, createLayoutScheduler, createLayoutSession, createListCounterState, createParagraphLayoutCache, defaultNoteSeparatorRuleStyle, deriveNoteDisplayMarks, deriveNoteDisplayMarksResolved, documentOrder, effectiveBorderSide, effectiveContentControlLock, emptyTocPlaceholderParagraphIds, emptyTocSuppressedResultParagraphIds, everyStoryOrder, expandLvlText, filterRefsOnPage, findSeparatorNote, formatDecimal, formatDecimalZero, formatLowerLetter, formatLowerRoman, formatNumFmt, formatPageNumber, formatUpperLetter, formatUpperRoman, fragmentOwnsAtomOffset, fragmentsOfParagraph, graphemeBoundaryEpoch, graphemeCount, graphemeOffsetToUtf16, harfBuzzFontValidator, initializeHarfBuzz, intlGraphemeBoundary, isCanvasMeasurementAvailable, isCumulativeGeometryTrustedFromLineOrigin, isGeometryTrustedCaretOffset, isHarfBuzzInitialized, isIntlSegmenterAvailable, isIntlWordSegmenterAvailable, isMarkerOnlySeparatorNote, isValidStyleId, isWholeGraphemeHorizontalBoundary, itemizeScriptFontSlots, keyedRangeRects, layoutHeaderFooterStory, layoutNoteById, layoutNoteSeparator, layoutNoteStory, layoutSemanticDocument, lineAtPosition, linesOf, listMarkerBox, mergeListIndent, normalNotesOf, noteDisplayMarkMap, noteLineIdPrefix, noteMarkKey, noteSeparatorAreaBox, noteStoryBlocks, pagesToMaterialize, paragraphFragmentsOf, paragraphFragmentsOfBlocks, paragraphLayoutKey, paragraphMarkDeleted, paragraphShading, paragraphShadingBox, positionPastDeletion, projectedNoteMarkText, provisionalNoteMarks, readNumPr, readTableStructure, resetGraphemeBoundary, resolveDefaultSurfaceMeasurer, resolveDefaultWordBoundary, resolveNumberingLevel, resolveOoxmlShadingFill, resolveParagraphLayoutInputs, resolveStoryListItems, resolveStrictHexFill, revisionRemovesParagraph, roundFontUnitToFixedPoint, segmentGraphemes, segmentWords, selectionRects, semanticHorizontalBoundaries, setGraphemeBoundary, setHarfBuzzWasmUrl, shadingFillFromElement, shapedHorizontalBoundaries, storyBlocks, syntheticSeparatorBox, tableOriginX, tocFieldChromeParagraphIds, tryCreateCanvasMeasurer, unionLayoutBoxes, utf16OffsetToGrapheme, walkStoryParagraphs, withNumberingStyleLinks, withResolvedListItems, wordBoundary, wordSegmentsToGraphemeRecords };
2800
+ export { AUTO_PREFERRED_WIDTH, type AbstractNumDefinition, type BidiEmbeddingLevels, BlockFragmentRecord, CELL_PAD, COMPOUND_BORDER_MIN_GAP_PT, COMPOUND_BORDER_MIN_STROKE_PT, type CanvasMeasurerOptions, type CanvasTextContext, type CanvasTextMetrics, type CascadedParagraphFormatting, CellBorderBox, type CellMarginsPt, type CellVerticalAlign, type CompoundBorderMetrics, ContentControlBoundaryRecord$1 as ContentControlBoundaryRecord, type ContentControlFragmentRecord, ContentControlLock, DEFAULT_CANVAS_FONT_STACK, DEFAULT_CELL_MARGINS, EMPTY_NUMBERING_INDEX, FieldLinkProjector, FixedPoint, FixedPointRoundingMode, FontByteValidator, type FontSlot, GRAPHEME_SEGMENTER_LOCALE, type GraphemeBoundary, type GraphemeSegment, type GraphemeWordSegmentRecord, HARFBUZZ_SHAPING_LIBRARY, type HarfBuzzFaceCacheEvent, type HarfBuzzOutlineCacheEvent, type HarfBuzzShapeCacheEvent, HarfBuzzShapingError, type HarfBuzzShapingErrorCode, type HarfBuzzTextShaper, type HarfBuzzTextShaperInstrumentation, type HarfBuzzTextShaperOptions, type HeaderFooterVariantName, HyperlinkProjector, type KeyedRange, LayoutBox, type LayoutCacheStats, type LayoutScheduler, type LayoutSchedulerOptions, type LayoutScope, type LayoutSession, type LayoutSessionStats, type LevelOverride, LineRecord, type ListCounterAdvance, type ListCounterState, type ListMarkerAlign, type ListSuffix, MAX_EACH_PAGE_MARK_CANDIDATES, MAX_LVL_OVERRIDES, MAX_LVL_TEXT_LENGTH, MAX_MARKER_TEXT_LENGTH, MAX_NOTES_LAID_OUT, MAX_NOTE_FRAGMENTS, MAX_NOTE_OVERFLOW_PAGES, MAX_NOTE_REFLOW_ATTEMPTS, MAX_NUMBERING_DEFINITIONS, MAX_STYLE_BASED_ON_DEPTH, MAX_STYLE_DEFINITIONS, MAX_TABLE_COLUMNS, MAX_TABLE_NESTING, MAX_TABLE_ROW_FRAGMENTS, MAX_TABLE_ROW_HEIGHT_PT, type MaterializationInput, type NoteDisplayMark, type NoteLayoutFallbackReason, type NoteMarkContext, type NotePaginationFallbackReason, type NoteReferenceSite, type NoteSeparatorLayout, type NoteSeparatorRuleStyle, type NoteStoryDrawings, type NoteStoryLayout, type NotesAttachResult, type NotesLayoutInput, type NumDefinition, type NumberingIndex, type NumberingLevel, type NumberingLevelIndent, type PageFurniture, PageGeometry, PageRecord, type PageRefIndex, ParagraphBorderEdge, ParagraphBorders, ParagraphFragmentRecord, type ParagraphKeyInputs, type ParagraphLayoutCache, type ParagraphLayoutCacheOptions, type ParagraphLayoutInputs, ParagraphLineSpacing, ParagraphSpacing, type PreferredWidth, type PreferredWidthType, type ResolvedListItem, ResolvedRunStyle, type ResolvedSurfaceMeasurer, ResolvedTabStops, ReviewItem, type ReviewParagraphAnchor, RevisionDisplayMode, type ScriptItem, SectionColumns, SelectionRect, SemanticLayout, type SemanticLayoutOptions, SemanticPosition, SemanticSelection, type SemanticTableCell, type SemanticTableRow, type SemanticTableStructure, ShapedRun, type StyleCascadeTable, type StyleDefinition, StyleSpanRecord, type TableAlignment, TableBorderBox, TableBorderSide, type TableCellStyleFormatting, TablePaginationError, type TablePaginationErrorCode, type TableRowHeight, type TableRowHeightRule, TextDirection, TextMeasurer, TextShaper, UnsupportedScriptError, VersionedShapingLibrary, type ViewportWindow, WORD_SEGMENTER_LOCALE, type WordBoundary, type WordBoundaryResolverDeps, type WordSegment, anchorLineY, attachNotesToLayout, boundedFallbackWordSegments, buildNumberingIndex, buildPageRefIndex, buildStyleCascadeTable, cascadeParagraphFormatting, cascadeRunProperties, cascadedBottomBorder, clampListValue, computeDoubleBorderMetricsPt, computeFootnoteReserves, contentControlBoundaries, contentControlHoldingParagraph, contentControlRecordsInPart, contentControlsOfLayout, createBoundedFallbackWordBoundary, createDefaultWordBoundary, createFixedMeasurer, createHarfBuzzTextShaper, createIntlWordBoundary, createLayoutScheduler, createLayoutSession, createListCounterState, createParagraphLayoutCache, defaultNoteSeparatorRuleStyle, deriveNoteDisplayMarks, deriveNoteDisplayMarksResolved, documentOrder, effectiveBorderSide, effectiveContentControlLock, emptyTocPlaceholderParagraphIds, emptyTocSuppressedResultParagraphIds, everyStoryOrder, expandLvlText, filterRefsOnPage, findSeparatorNote, formatDecimal, formatDecimalZero, formatLowerLetter, formatLowerRoman, formatNumFmt, formatPageNumber, formatUpperLetter, formatUpperRoman, fragmentOwnsAtomOffset, fragmentsOfParagraph, graphemeBoundaryEpoch, graphemeCount, graphemeOffsetToUtf16, harfBuzzFontValidator, initializeHarfBuzz, intlGraphemeBoundary, isCanvasMeasurementAvailable, isCumulativeGeometryTrustedFromLineOrigin, isGeometryTrustedCaretOffset, isHarfBuzzInitialized, isIntlSegmenterAvailable, isIntlWordSegmenterAvailable, isMarkerOnlySeparatorNote, isValidStyleId, isWholeGraphemeHorizontalBoundary, itemizeScriptFontSlots, keyedRangeRects, layoutHeaderFooterStory, layoutNoteById, layoutNoteSeparator, layoutNoteStory, layoutSemanticDocument, lineAtPosition, linesOf, listMarkerBox, mergeListIndent, normalNotesOf, noteDisplayMarkMap, noteLineIdPrefix, noteMarkKey, noteSeparatorAreaBox, noteStoryBlocks, pagesToMaterialize, paragraphFragmentsOf, paragraphFragmentsOfBlocks, paragraphLayoutKey, paragraphMarkDeleted, paragraphShading, paragraphShadingBox, positionPastDeletion, projectedNoteMarkText, provisionalNoteMarks, readNumPr, readTableStructure, resetGraphemeBoundary, resolveDefaultSurfaceMeasurer, resolveDefaultWordBoundary, resolveNumberingLevel, resolveOoxmlShadingFill, resolveParagraphLayoutInputs, resolveStoryListItems, resolveStrictHexFill, reviewAnchorIndex, reviewItemGeometry, revisionRemovesParagraph, roundFontUnitToFixedPoint, segmentGraphemes, segmentWords, selectionRects, semanticHorizontalBoundaries, setGraphemeBoundary, setHarfBuzzWasmUrl, sha256FontBytes, shadingFillFromElement, shapedHorizontalBoundaries, storyBlocks, syntheticSeparatorBox, tableOriginX, tocFieldChromeParagraphIds, tryCreateCanvasMeasurer, unionLayoutBoxes, utf16OffsetToGrapheme, walkStoryParagraphs, withNumberingStyleLinks, withResolvedListItems, wordBoundary, wordSegmentsToGraphemeRecords };