@docx-editor.dev/core 2.32.0 → 2.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/README.md +1 -1
  2. package/THIRD_PARTY_NOTICES.md +1 -0
  3. package/dist/automation.cjs +1 -1
  4. package/dist/automation.d.ts +14 -52
  5. package/dist/automation.js +1 -1
  6. package/dist/binding.cjs +1 -1
  7. package/dist/binding.d.ts +14 -14
  8. package/dist/binding.js +1 -1
  9. package/dist/{chrome-print-CznJ0ucN.d.ts → chrome-print-DY0xsXm_.d.ts} +231 -125
  10. package/dist/chunk-37IYWENL.cjs +1 -0
  11. package/dist/chunk-37RNWL45.js +4 -0
  12. package/dist/chunk-5HUVQXET.cjs +4 -0
  13. package/dist/chunk-5JP3QQF7.js +7 -0
  14. package/dist/chunk-5KOLFKOB.cjs +5 -0
  15. package/dist/chunk-6MF5PN2E.js +236 -0
  16. package/dist/chunk-77JT2AU7.js +2 -0
  17. package/dist/{chunk-ETDZFNMI.js → chunk-7FUORGCW.js} +1 -1
  18. package/dist/chunk-A5BTVPET.cjs +236 -0
  19. package/dist/chunk-AFXFH2T2.js +3 -0
  20. package/dist/chunk-AVCYP7OY.js +5 -0
  21. package/dist/chunk-BL2E4QRA.js +1 -0
  22. package/dist/chunk-DB7X4Y6O.js +4 -0
  23. package/dist/chunk-DR6W23TB.cjs +2 -0
  24. package/dist/chunk-DYLB5U42.js +1 -0
  25. package/dist/chunk-E5BKDHIP.cjs +1 -0
  26. package/dist/chunk-IWXBRUPG.cjs +4 -0
  27. package/dist/{chunk-L5TYBFDB.js → chunk-KCUXXO3Q.js} +1 -1
  28. package/dist/chunk-KYA4Y2YB.js +1 -0
  29. package/dist/{chunk-6UDJUI3W.cjs → chunk-L74TCGVH.cjs} +1 -1
  30. package/dist/chunk-NBSSQSKY.js +30 -0
  31. package/dist/{chunk-OKMEMSKB.cjs → chunk-NEM774E3.cjs} +1 -1
  32. package/dist/chunk-NKZVMMHU.cjs +1 -0
  33. package/dist/chunk-TXIO5WYQ.cjs +32 -0
  34. package/dist/chunk-UKG2TXWH.cjs +7 -0
  35. package/dist/chunk-V7CO55DO.cjs +3 -0
  36. package/dist/chunk-VLQDQNSS.js +1 -0
  37. package/dist/chunk-VQOAC3VI.cjs +30 -0
  38. package/dist/chunk-YWJSQA2O.js +32 -0
  39. package/dist/chunk-ZJ74LCFI.cjs +1 -0
  40. package/dist/collaboration/replication.cjs +1 -1
  41. package/dist/collaboration/replication.d.ts +13 -4
  42. package/dist/collaboration/replication.js +1 -1
  43. package/dist/collaboration.d.ts +3 -3
  44. package/dist/contracts/document.d.ts +3 -3
  45. package/dist/contracts/editor.d.ts +10 -10
  46. package/dist/contracts/interaction.d.ts +2 -2
  47. package/dist/contracts/modules.d.ts +12 -12
  48. package/dist/contracts/types.d.ts +4 -4
  49. package/dist/{custom-node-writes-CLJKGD9t.d.ts → custom-node-writes-DparEcZK.d.ts} +45 -7
  50. package/dist/diagnostic-context-CkZKkKvB.d.ts +98 -0
  51. package/dist/{diagnostic-hints-DK8-V0fk.d.ts → diagnostic-hints-BTyb8yzX.d.ts} +3 -3
  52. package/dist/{document-protection-NaniLHWF.d.ts → document-protection-DdWxihIN.d.ts} +1 -1
  53. package/dist/{headless-document-view-Bcz9_Qva.d.ts → drawing-graphic-kind-CK0cMc7H.d.ts} +161 -18
  54. package/dist/drawing-preview-package-fFjXpOMS.d.ts +115 -0
  55. package/dist/{editor-DZwOTmlR.d.ts → editor-DDCkWqfD.d.ts} +125 -21
  56. package/dist/{editor-scope-B3L-1ALc.d.ts → editor-scope-CA6egMaK.d.ts} +5 -1
  57. package/dist/editor.cjs +1 -1
  58. package/dist/editor.css +4 -4
  59. package/dist/editor.d.ts +387 -78
  60. package/dist/editor.js +1 -1
  61. package/dist/export.cjs +2 -2
  62. package/dist/export.d.ts +47 -12
  63. package/dist/export.js +2 -2
  64. package/dist/{font-resolver-BlQNGdvR.d.ts → font-resolver-Bm9XqTNO.d.ts} +14 -0
  65. package/dist/index.cjs +1 -1
  66. package/dist/index.d.ts +38 -23
  67. package/dist/index.js +1 -1
  68. package/dist/{layout-shaping-E5J4Z1Gf.d.ts → layout-shaping-Byj-TwsI.d.ts} +1 -1
  69. package/dist/layout.cjs +1 -1
  70. package/dist/layout.d.ts +434 -199
  71. package/dist/layout.js +1 -1
  72. package/dist/metafile-drawing-Ce6TuWLm.d.ts +115 -0
  73. package/dist/{note-properties-Ds5R2_3F.d.ts → note-properties-BiunaIQa.d.ts} +31 -7
  74. package/dist/output.cjs +1 -1
  75. package/dist/output.d.ts +77 -13
  76. package/dist/output.js +1 -1
  77. package/dist/{protocol-DKa4qt7F.d.ts → protocol-Dn44dL4M.d.ts} +184 -120
  78. package/dist/{review-paragraph-order-Dc17w_6v.d.ts → review-paragraph-order-BWMXAKuA.d.ts} +1 -1
  79. package/dist/{revision-projection-Cn6rZJ7H.d.ts → revision-projection-DwFhgIR0.d.ts} +1 -1
  80. package/dist/{semantic-cell-selection-BaUR0iJ4.d.ts → semantic-cell-selection-DhalxEBH.d.ts} +2 -2
  81. package/dist/{semantic-interaction-CJoHLoOl.d.ts → semantic-interaction-QeuzEtAk.d.ts} +2 -4
  82. package/dist/{semantic-paint-BPw_n0li.d.ts → semantic-paint-BYDZbTiY.d.ts} +16 -9
  83. package/dist/{semantic-record-queries-C0rJ3sB4.d.ts → semantic-record-queries-Bf5bgQL3.d.ts} +1 -1
  84. package/dist/{semantic-records-BvN-WWst.d.ts → semantic-records-CzZiWMY8.d.ts} +348 -132
  85. package/dist/store.cjs +1 -1
  86. package/dist/store.d.ts +526 -19
  87. package/dist/store.js +1 -1
  88. package/dist/{tree-op-types-C_S2niXW.d.ts → tree-op-types-DKvJSH8T.d.ts} +1024 -501
  89. package/dist/{tree-package-store-CRHvMyNj.d.ts → tree-package-store-Cl3BkWXF.d.ts} +8 -3
  90. package/dist/{tree-session-contract-D1awo_dA.d.ts → tree-session-contract-BL50pqs8.d.ts} +15 -8
  91. package/dist/{unsupported-elements-CVos5cqe.d.ts → unsupported-elements-Bra4QTOM.d.ts} +1 -1
  92. package/licenses/ECMA-376.md +29 -0
  93. package/package.json +2 -2
  94. package/dist/bookmark-names-DDuAra_V.d.ts +0 -37
  95. package/dist/chunk-25EXMBV2.cjs +0 -5
  96. package/dist/chunk-3IEXDEFH.cjs +0 -7
  97. package/dist/chunk-65XBN67F.cjs +0 -2
  98. package/dist/chunk-6NVZNB7O.cjs +0 -3
  99. package/dist/chunk-ACLR4DMK.js +0 -1
  100. package/dist/chunk-B2BEELUE.js +0 -1
  101. package/dist/chunk-DDFHKQFU.js +0 -30
  102. package/dist/chunk-E4IAO4CY.cjs +0 -2
  103. package/dist/chunk-FDSL5OJU.cjs +0 -30
  104. package/dist/chunk-FS7CMYLT.js +0 -4
  105. package/dist/chunk-GDS24SZN.js +0 -30
  106. package/dist/chunk-GIY6NT2X.js +0 -5
  107. package/dist/chunk-GWM3AKUD.js +0 -18
  108. package/dist/chunk-HDOXACHP.js +0 -2
  109. package/dist/chunk-IILEENID.js +0 -1
  110. package/dist/chunk-MNF2K7NN.cjs +0 -30
  111. package/dist/chunk-O324RB6R.cjs +0 -1
  112. package/dist/chunk-QXJKYNYZ.js +0 -1
  113. package/dist/chunk-RALTVLB6.js +0 -2
  114. package/dist/chunk-SRVKFUFI.js +0 -3
  115. package/dist/chunk-TELQ52LG.cjs +0 -1
  116. package/dist/chunk-TJHE5EET.cjs +0 -1
  117. package/dist/chunk-UMMRURPE.js +0 -7
  118. package/dist/chunk-XJYZVGQR.cjs +0 -1
  119. package/dist/chunk-ZGTIE3QJ.cjs +0 -4
  120. package/dist/chunk-ZOZI27AW.cjs +0 -18
  121. package/dist/diagnostic-context-BtDUY3v2.d.ts +0 -31
package/dist/layout.d.ts CHANGED
@@ -11,24 +11,25 @@
11
11
  * @packageDocumentation
12
12
  * @public
13
13
  */
14
- import { u as NumberingLevel, v as NumberingIndex, S as SemanticLayout, b as LayoutBox, D as DrawingPoint, w as DrawingInsets, g as StyleSpanRecord, I as InlineDrawingRecord, M as ModelRange, x as TableBorderSide, y as TableFloatXSpec, z as TableFloatYSpec, P as ParagraphFragmentRecord, B as BlockFragmentRecord, A as AnchoredDrawingRecord, a as PageRecord, E as NumberingLevelIndent, G as ResolvedListItem, J as RefFieldContext, T as TextMeasurer, K as InlineDrawingLayoutContext, O as CellBorderBox, Q as TableBorderBox, W as TableCellStyleFormatting, X as TableFloatPosition, Y as StyleCascadeTable, C as ContentControlBoundaryRecord$1, n as FixedPointRoundingMode, Z as FixedPoint, V as VersionedShapingLibrary, k as TextShaper, _ as FontByteValidator, s as ShapedRun, L as LineRecord, $ as SourceRange, a0 as HyperlinkProjector, a1 as FieldLinkProjector, a2 as StoryPageFieldNeeds, a3 as HyperlinkFieldSpec, a4 as SpanLinkRecord, a5 as PageGeometry, a6 as SectionColumns, a7 as SectionPageBorders, a8 as PageBorderFrameRecord, a9 as ParagraphBorderStrokeRecord, aa as StrikeoutStrokePt } from './semantic-records-BvN-WWst.js';
15
- export { ab as AUTO_PARAGRAPH_SPACING_PT, ac as AbstractNumDefinition, ad as AnchoredDrawingLayoutFallback, ae as BidiEmbeddingLevels, af as BorderGridGeometry, ag as CascadedParagraphFormatting, ah as CjkTypographySettings, ai as ContentControlGeometryFragment, aj as ContentControlLevel, d as ContentControlLock, ak as ContentControlMappedType, al as ContentControlModelRange, am as DEFAULT_PAGE_GEOMETRY, an as DEFAULT_RUN_STYLE, ao as DEFAULT_SECTION_PROPERTIES, ap as DEFAULT_TAB_INTERVAL_PT, aq as DEFAULT_TAB_INTERVAL_TWIPS, ar as DeclaredFontSubstitution, as as DocumentSection, at as DocumentSectionsEnumeration, au as DrawingClipFallback, av as DrawingGeometry, aw as DrawingGroupPictureRecord, ax as DrawingTextArtRecord, ay as EMPTY_NUMBERING_INDEX, az as EMPTY_TAB_STOPS, aA as EquationBarGeometry, aB as EquationFractionGeometry, aC as EquationGeometry, aD as EquationNaryGeometry, aE as EquationRadicalGeometry, aF as EquationRowGeometry, aG as EquationScriptGeometry, aH as EquationSpanRecord, aI as EquationTextGeometry, aJ as FieldAtomMarker, aK as FontFingerprintInputs, o as FontRequest, aL as FontResolutionError, aM as FontResolutionErrorCode, aN as FontResourceDefinition, aO as FontResourceInstrumentation, F as FontResourceSnapshot, aP as FontResourceSnapshotOptions, aQ as FontSlot, r as FontSubstitution, aR as FontValidationResult, aS as GlyphOutline, aT as GroupTextboxStoryRecord, aU as HARD_MAX_AGGREGATE_FONT_BYTES, aV as HARD_MAX_FONT_BYTES, aW as HARD_MAX_FONT_SOURCES, H as HeaderFooterStoryRecord, aX as LevelOverride, aY as LineSpacingRule, aZ as ListMarkerAlign, q as ListMarkerPictureRecord, a_ as ListMarkerRecord, a$ as ListSuffix, b0 as MAX_BORDER_SPACE_PT, b1 as MAX_BORDER_WIDTH_PT, b2 as MAX_DOCUMENT_SECTIONS, b3 as MAX_LVL_OVERRIDES, b4 as MAX_NUMBERING_DEFINITIONS, b5 as MAX_PARAGRAPH_SPACING_PT, b6 as MAX_SHAPING_CONTEXT, b7 as MAX_STYLE_DEFINITIONS, b8 as MAX_TABLE_BORDER_STROKES, b9 as MAX_TAB_POSITION_TWIPS, ba as MAX_TAB_STOPS, m as NormalizationPolicy, N as NoteAreaRecord, c as NoteStoryRecord, bb as NumDefinition, bc as NumberingPictureBullet, bd as PAGE_BORDER_SIDES, be as PARAGRAPH_BORDER_SIDES, bf as PageBorderDisplay, bg as PageBorderOffsetFrom, bh as PageBorderSide, bi as PageBorderStrokeRecord, bj as PageBorderZOrder, bk as PageRefCalibrationCell, bl as PageRefFieldProjection, bm as ParagraphAutoSpacingContext, bn as ParagraphBorderEdge, bo as ParagraphBorderSide, bp as ParagraphBorders, bq as ParagraphBottomBorderRecord, br as ParagraphIndent, bs as ParagraphLayoutInputs, bt as ParagraphLineSpacing, bu as ParagraphSpacing, bv as RefFieldSpec, bw as RefNoteParts, bx as ResolvedCellBorders, l as ResolvedFont, by as ResolvedPictureBullet, R as ResolvedRunStyle, bz as ResolvedTabStops, bA as ResolvedTableBorderEdge, bB as ResolvedTableBorderEdgeSegment, bC as ResolvedUnderline, bD as SINGLE_LINE_SPACING, bE as ScriptItem, bF as SectionBreakMarkRecord, bG as SectionBreakType, bH as SectionColumnDefinition, bI as SectionMargins, bJ as SectionPageNumbering, t as SectionProperties, bK as SemanticArtifactRootStoryKind, bL as SemanticArtifactStoryKind, bM as SemanticCommentArtifactRecord, bN as SemanticReviewArtifactOccurrence, bO as SemanticReviewArtifactOccurrenceGeometry, bP as SemanticReviewArtifactPosition, p as SemanticReviewArtifactRecord, bQ as SemanticReviewArtifactSource, bR as SemanticTrackedChangeArtifactRecord, bS as ShapeInput, bT as ShapedCluster, bU as ShapedFontSpan, bV as ShapedGlyph, bW as ShapedRunComparatorInputs, bX as ShapedVerticalMetrics, bY as ShapingContext, bZ as ShapingEnvironment, b_ as ShapingEnvironmentFingerprintInputs, j as ShapingEnvironmentInput, b$ as StyleDefinition, c0 as TAB_LEADER_GLYPH, c1 as TabAlignment, c2 as TabDestination, c3 as TabLeader, c4 as TabStop, c5 as TableBorderSideName, c6 as TableBorderStrokeRecord, i as TableCellFragmentRecord, c7 as TableFragmentRecord, h as TableRowFragmentRecord, c8 as TextArtFit, c9 as TextDirection, ca as TextOutline, cb as TextboxStoryFallbackReason, cc as TextboxStoryLayout, U as UnsupportedElement, e as UnsupportedElementLayout, f as UnsupportedElementRule, cd as UnsupportedScriptError, ce as VerticalAlign, cf as appliedSpaceBefore, cg as applyLineSpacing, ch as baselineShiftPtOf, ci as borderExtentPt, cj as borderWeight, ck as bottomBorderExtentPt, cl as boundedStructuralFontValidator, cm as buildNumberingIndex, cn as buildStyleCascadeTable, co as cascadeParagraphFormatting, cp as cascadeRunProperties, cq as cascadedBottomBorder, cr as cascadedParagraphBorders, cs as cascadedTabStops, ct as collapsedSpaceBefore, cu as createFontResourceSnapshot, cv as createShapedRun, cw as createShapingEnvironment, cx as createUnsupportedContentProjector, cy as defaultTabIntervalFromSettings, cz as displayText, cA as enumerateDocumentSections, cB as enumerateDocumentSectionsBounded, cC as fixedPoint, cD as fontRequestKey, cE as geometryOfSection, cF as glyphSizeFactorOf, cG as isValidStyleId, cH as itemizeScriptFontSlots, cI as layoutEquation, cJ as measureDisplayText, cK as nextTabDestination, cL as pageBordersFingerprint, cM as paragraphBorderExtentPt, cN as paragraphBorderStrokeWidthPt, cO as paragraphBorders, cP as paragraphBordersFingerprint, cQ as paragraphBreaksBefore, cR as paragraphContextualSpacing, cS as paragraphLineSpacing, cT as paragraphSectionNode, cU as paragraphSpacing, cV as paragraphTabStops, cW as parsePageBorders, cX as parsePageNumbering, cY as parseRefInstruction, cZ as parseSectionProperties, c_ as projectedSectionSourceIndexes, c$ as readBorderSide, d0 as readCellBorders, d1 as readNumPr, d2 as readSectionProperties, d3 as readTableBorders, d4 as resolveBorderConflict, d5 as resolveNumberingLevel, d6 as resolveParagraphLayoutInputs, d7 as resolveRunStyle, d8 as resolveStoryListItems, d9 as resolveStoryRefFields, da as resolveTableCellBorderGrid, db as runStylesEqual, dc as shapedRunComparatorInputs, dd as shapingEnvironmentFingerprint, de as shapingEnvironmentFingerprintInputs, df as styleForFontSlot, dg as tabAdvanceWidth, dh as tabStopsFingerprint, di as withDefaultTabInterval, dj as withNumberingStyleLinks, dk as withResolvedListItems } from './semantic-records-BvN-WWst.js';
14
+ import { v as NumberingLevel, w as NumberingIndex, S as SemanticLayout, x as TextDirection, y as FontSlot, R as ResolvedRunStyle, e as StyleSpanRecord, I as InlineDrawingRecord, M as ModelRange, z as TableBorderSide, b as LayoutBox, D as DrawingPoint, E as DrawingInsets, G as TableFloatXSpec, J as TableFloatYSpec, P as ParagraphFragmentRecord, B as BlockFragmentRecord, A as AnchoredDrawingRecord, a as PageRecord, K as NumberingLevelIndent, O as ResolvedListItem, Q as RefFieldContext, T as TextMeasurer, W as InlineDrawingLayoutContext, X as CellBorderBox, Y as TableBorderBox, Z as TableCellStyleFormatting, _ as TableFloatPosition, $ as StyleCascadeTable, C as ContentControlBoundaryRecord$1, n as FixedPointRoundingMode, a0 as FixedPoint, V as VersionedShapingLibrary, k as TextShaper, a1 as FontByteValidator, s as ShapedRun, L as LineRecord, a2 as SourceRange, a3 as HyperlinkProjector, a4 as FieldLinkProjector, a5 as StoryPageFieldNeeds, a6 as HyperlinkFieldSpec, a7 as SpanLinkRecord, a8 as PageGeometry, a9 as SectionColumns, aa as SectionPageBorders, ab as PageBorderFrameRecord, ac as ParagraphBorderStrokeRecord, ad as StrikeoutStrokePt, ae as TextOutline } from './semantic-records-CzZiWMY8.js';
15
+ export { af as AUTO_PARAGRAPH_SPACING_PT, ag as AbstractNumDefinition, ah as AnchoredDrawingLayoutFallback, ai as BorderGridGeometry, aj as CascadedParagraphFormatting, ak as CjkTypographySettings, al as ContentControlGeometryFragment, am as ContentControlLevel, d as ContentControlLock, an as ContentControlMappedType, ao as ContentControlModelRange, ap as DEFAULT_PAGE_GEOMETRY, aq as DEFAULT_RUN_STYLE, ar as DEFAULT_SECTION_PROPERTIES, as as DEFAULT_TAB_INTERVAL_PT, at as DEFAULT_TAB_INTERVAL_TWIPS, au as DeclaredFontSubstitution, av as DocumentSection, aw as DocumentSectionsEnumeration, ax as DrawingClipFallback, ay as DrawingGeometry, az as DrawingGroupPictureLayerRecord, aA as DrawingGroupPictureRecord, aB as DrawingPlaceholderKind, aC as DrawingTextArtRecord, aD as EMPTY_NUMBERING_INDEX, aE as EMPTY_TAB_STOPS, aF as EquationBarGeometry, aG as EquationBorderBoxGeometry, aH as EquationDiagonal, aI as EquationFractionGeometry, aJ as EquationGeometry, aK as EquationNaryGeometry, aL as EquationRadicalGeometry, aM as EquationRowGeometry, aN as EquationScriptGeometry, aO as EquationSpanRecord, aP as EquationTextGeometry, aQ as FieldAtomMarker, aR as FontFingerprintInputs, o as FontRequest, aS as FontResolutionError, aT as FontResolutionErrorCode, aU as FontResourceDefinition, aV as FontResourceInstrumentation, F as FontResourceSnapshot, aW as FontResourceSnapshotOptions, r as FontSubstitution, aX as FontValidationResult, aY as GlyphOutline, aZ as GroupTextboxStoryRecord, a_ as HARD_MAX_AGGREGATE_FONT_BYTES, a$ as HARD_MAX_FONT_BYTES, b0 as HARD_MAX_FONT_SOURCES, H as HeaderFooterStoryRecord, b1 as LevelOverride, b2 as LineSpacingRule, b3 as ListMarkerAlign, q as ListMarkerPictureRecord, b4 as ListMarkerRecord, b5 as ListSuffix, b6 as MAX_BORDER_SPACE_PT, b7 as MAX_BORDER_WIDTH_PT, b8 as MAX_DOCUMENT_SECTIONS, b9 as MAX_LVL_OVERRIDES, ba as MAX_NUMBERING_DEFINITIONS, bb as MAX_PARAGRAPH_SPACING_PT, bc as MAX_SHAPING_CONTEXT, bd as MAX_STYLE_DEFINITIONS, be as MAX_TABLE_BORDER_STROKES, bf as MAX_TAB_POSITION_TWIPS, bg as MAX_TAB_STOPS, m as NormalizationPolicy, N as NoteAreaRecord, c as NoteStoryRecord, bh as NumDefinition, bi as NumberingPictureBullet, bj as PAGE_BORDER_SIDES, bk as PARAGRAPH_BORDER_SIDES, bl as PageBorderDisplay, bm as PageBorderOffsetFrom, bn as PageBorderSide, bo as PageBorderStrokeRecord, bp as PageBorderZOrder, bq as PageRefCalibrationCell, br as PageRefFieldProjection, bs as ParagraphAutoSpacingContext, bt as ParagraphBorderEdge, bu as ParagraphBorderSide, bv as ParagraphBorders, bw as ParagraphBottomBorderRecord, bx as ParagraphIndent, by as ParagraphLayoutInputs, bz as ParagraphLineSpacing, bA as ParagraphSpacing, bB as RefFieldSpec, bC as RefNoteParts, bD as ResolvedCellBorders, l as ResolvedFont, bE as ResolvedPictureBullet, bF as ResolvedTabStops, bG as ResolvedTableBorderEdge, bH as ResolvedTableBorderEdgeSegment, bI as ResolvedUnderline, bJ as SINGLE_LINE_SPACING, bK as SectionBreakMarkRecord, bL as SectionBreakType, bM as SectionColumnDefinition, bN as SectionMargins, bO as SectionPageNumbering, t as SectionProperties, bP as SemanticArtifactRootStoryKind, bQ as SemanticArtifactStoryKind, bR as SemanticCommentArtifactRecord, bS as SemanticReviewArtifactOccurrence, bT as SemanticReviewArtifactOccurrenceGeometry, bU as SemanticReviewArtifactPosition, p as SemanticReviewArtifactRecord, bV as SemanticReviewArtifactSource, bW as SemanticTrackedChangeArtifactRecord, bX as ShapeInput, bY as ShapedCluster, bZ as ShapedFontSpan, b_ as ShapedGlyph, b$ as ShapedRunComparatorInputs, c0 as ShapedVerticalMetrics, c1 as ShapingContext, c2 as ShapingEnvironment, c3 as ShapingEnvironmentFingerprintInputs, j as ShapingEnvironmentInput, c4 as StyleDefinition, c5 as TAB_LEADER_GLYPH, c6 as TabAlignment, c7 as TabDestination, c8 as TabLeader, c9 as TabStop, ca as TableBorderSideName, cb as TableBorderStrokeRecord, cc as TableCellDiagonalRecord, g as TableCellFragmentRecord, cd as TableFragmentRecord, f as TableRowFragmentRecord, ce as TextArtFit, cf as TextboxStoryFallbackReason, cg as TextboxStoryLayout, U as UnsupportedElement, h as UnsupportedElementLayout, i as UnsupportedElementRule, ch as VerticalAlign, ci as appliedSpaceBefore, cj as applyLineSpacing, ck as baselineShiftPtOf, cl as borderExtentPt, cm as borderWeight, cn as bottomBorderExtentPt, co as boundedStructuralFontValidator, cp as buildNumberingIndex, cq as buildStyleCascadeTable, cr as cascadeParagraphFormatting, cs as cascadeRunProperties, ct as cascadedBottomBorder, cu as cascadedParagraphBorders, cv as cascadedTabStops, cw as collapsedSpaceBefore, cx as createFontResourceSnapshot, cy as createShapedRun, cz as createShapingEnvironment, cA as createUnsupportedContentProjector, cB as defaultTabIntervalFromSettings, cC as displayText, cD as enumerateDocumentSections, cE as enumerateDocumentSectionsBounded, cF as fixedPoint, cG as fontRequestKey, cH as geometryOfSection, cI as glyphSizeFactorOf, cJ as groupPictureLayerDrawing, cK as isValidStyleId, cL as layoutEquation, cM as measureDisplayText, cN as nextTabDestination, cO as pageBordersFingerprint, cP as paragraphBorderExtentPt, cQ as paragraphBorderStrokeWidthPt, cR as paragraphBorders, cS as paragraphBordersFingerprint, cT as paragraphBreaksBefore, cU as paragraphContextualSpacing, cV as paragraphLineSpacing, cW as paragraphSectionNode, cX as paragraphSpacing, cY as paragraphTabStops, cZ as parsePageBorders, c_ as parsePageNumbering, c$ as parseRefInstruction, d0 as parseSectionProperties, d1 as projectedSectionSourceIndexes, d2 as readBorderSide, d3 as readCellBorders, d4 as readSectionProperties, d5 as readTableBorders, d6 as resolveBorderConflict, d7 as resolveNumberingLevel, d8 as resolveParagraphLayoutInputs, d9 as resolveRunStyle, da as resolveStoryListItems, db as resolveStoryRefFields, dc as resolveTableCellBorderGrid, dd as runStylesEqual, de as shapedRunComparatorInputs, df as shapingEnvironmentFingerprint, dg as shapingEnvironmentFingerprintInputs, dh as tabAdvanceWidth, di as tabStopsFingerprint, dj as withDefaultTabInterval, dk as withNumberingStyleLinks, dl as withResolvedListItems } from './semantic-records-CzZiWMY8.js';
16
16
  export { F as FontShapingOptions } from './font-shaping-policy-BvpkrfxM.js';
17
- export { C as CacheLookup, b as CacheMiss, c as CacheProvenance, e as LayoutEnvironmentShapedMeasurerOptions, f as LayoutFontConfiguration, g as LayoutFontSource, h as LayoutFontSubstitution, i as LayoutShapingConfigurationError, j as LayoutShapingEnvironment, L as LayoutShapingInstrumentation, a as LayoutShapingOptions, O as OperationSnapshot, k as OperationSnapshotField, l as OperationSnapshotGuard, P as PreparedLayoutFontConfiguration, R as ResolvedCache, m as ResourceDependencyProvenance, S as ShapedMeasurerOptions, n as captureOperationSnapshot, o as createLayoutShapedMeasurer, p as createLayoutShaping, q as createShapedMeasurer, d as disposeLayoutShaping, r as guardOperationSnapshot, s as layoutFontConfigurationFingerprint, t as prepareLayoutFontConfiguration } from './layout-shaping-E5J4Z1Gf.js';
18
- import { a as SemanticStoryKind, S as SemanticRootStoryKind, b as SemanticStoryVisit, T as TextboxOwnerRecord } from './semantic-record-queries-C0rJ3sB4.js';
19
- export { c as SemanticDrawingLayer, d as SemanticDrawingVisit, e as StoryDrawingContext, f as StoryDrawingHost, g as StoryParagraphFragmentContext, h as contentControlsOfLayout, i as effectiveContentControlLock, j as forEachSemanticDrawing, k as forEachSemanticStory, l as forEachStoryParagraphFragment, m as fragmentsOfParagraph, n as lineAtPosition, o as linesOf, p as paragraphFragmentsOf, q as paragraphFragmentsOfBlocks, u as unionLayoutBoxes } from './semantic-record-queries-C0rJ3sB4.js';
20
- import { aK as ImpactClass, a4 as OoxmlNode, az as OoxmlProperty, av as OoxmlElement, O as OoxmlPart, au as TreeDocOp, a5 as OoxmlPackage, bw as ContentControlKind, bx as ContentControlLevel, bz as ContentControlLock, bt as ContentControlDataBinding, a as ReviewItem } from './tree-op-types-C_S2niXW.js';
21
- export { bo as CommentAnchor, bp as CommentPosition, C as CommentRecord, bi as CommentThreadState, b4 as DrawingAccessibility, a7 as DrawingHorizontalReferenceFrame, b5 as DrawingImageEffects, b2 as DrawingTransform, ab as DrawingVerticalReferenceFrame, ag as ImageWrapTarget, c as ReviewCommentItem, d as ReviewCustomItem, R as ReviewModelInput, e as ReviewPosition, f as ReviewRange, b as ReviewRevisionItem, g as ReviewRevisionKind, aT as SourceCrop, b3 as TableBorderStyle, eg as VectorShapeComponent, b6 as VectorShapeProjection, cZ as W15_NAMESPACE_URI, eh as activeReviewItem, du as firstReviewRange, e3 as reviewItemKey, ei as reviewItemPositionRank, e4 as reviewItemRanges, ej as reviewItemsAt, ek as reviewThreadRootOf } from './tree-op-types-C_S2niXW.js';
22
- import { D as DocumentProperties, H as HeadlessDocumentView, s as relationshipTargetIn } from './headless-document-view-Bcz9_Qva.js';
23
- import { q as RevisionAttribution, b as RevisionDisplayMode, p as RevisionAuthorFilter } from './revision-projection-Cn6rZJ7H.js';
24
- export { s as DEFAULT_REVISION_DISPLAY_MODE, t as RevisionFilter, u as RevisionKind, v as formatRevisionOf, w as markRevisionRemovesMark, x as paragraphMarkFormatRevisionOf, y as paragraphMarkRevisionOf, z as paragraphMarkRevisionsOf, A as revisionAuthorFilter, B as revisionsAreDeletion, C as revisionsVisible, E as shownMarkRevision } from './revision-projection-Cn6rZJ7H.js';
25
- import { R as ResolvedFootnoteProperties, a as ResolvedEndnoteProperties } from './note-properties-Ds5R2_3F.js';
26
- import { e as TreeModelChange, N as NoteKind, aK as noteTypeOf, F as FieldResultsMode } from './tree-package-store-CRHvMyNj.js';
27
- export { M as MAX_SDT_NESTING, c as collectFlowBlocks, a as commentBodyText, b as commentInitials, j as contentControlContentChildren, i as isContentControl, f as isContentControlContent, p as paragraphOrderOfPart } from './review-paragraph-order-Dc17w_6v.js';
28
- import { S as SemanticPosition, b as SelectionRect, a as SemanticSelection, C as CaretGeometry } from './semantic-interaction-CJoHLoOl.js';
29
- export { c as CaretAtOptions, M as MoveCaretOptions, N as NavigationCommand, d as caretAt, e as caretStops, f as caretStopsForBlocks, g as compositionAnchor, h as contentControlsInLayout, i as deletedTextBoundaries, m as moveCaret, p as paragraphTextFromLayout, s as spansInSelection } from './semantic-interaction-CJoHLoOl.js';
30
- export { C as CellSelection, D as DEFAULT_VERTICAL_WEIGHT, a as DrawingOverlayFrame, H as HitPoint, b as HitTestOptions, P as PlacedCell, S as SemanticHit, c as SemanticHitDrawing, T as TableCellAddress, d as TableCellContext, e as caretBoxOnLine, f as cellSelectionBetween, g as cellSelectionRects, h as cellSelectionText, i as contentControlAtPoint, j as findDrawingOverlayFrameInLayout, k as hitTestPage, l as hitTestSheet, m as isFurniturePoint, n as lineEndOffset, p as pageAtY, o as paragraphsInCells, s as spanOffsetX, q as spansInCells, t as tableContextAt } from './semantic-cell-selection-BaUR0iJ4.js';
31
- import './editor-scope-B3L-1ALc.js';
17
+ export { C as CacheLookup, b as CacheMiss, c as CacheProvenance, e as LayoutEnvironmentShapedMeasurerOptions, f as LayoutFontConfiguration, g as LayoutFontSource, h as LayoutFontSubstitution, i as LayoutShapingConfigurationError, j as LayoutShapingEnvironment, L as LayoutShapingInstrumentation, a as LayoutShapingOptions, O as OperationSnapshot, k as OperationSnapshotField, l as OperationSnapshotGuard, P as PreparedLayoutFontConfiguration, R as ResolvedCache, m as ResourceDependencyProvenance, S as ShapedMeasurerOptions, n as captureOperationSnapshot, o as createLayoutShapedMeasurer, p as createLayoutShaping, q as createShapedMeasurer, d as disposeLayoutShaping, r as guardOperationSnapshot, s as layoutFontConfigurationFingerprint, t as prepareLayoutFontConfiguration } from './layout-shaping-Byj-TwsI.js';
18
+ import { a as SemanticStoryKind, S as SemanticRootStoryKind, b as SemanticStoryVisit, T as TextboxOwnerRecord } from './semantic-record-queries-Bf5bgQL3.js';
19
+ export { c as SemanticDrawingLayer, d as SemanticDrawingVisit, e as StoryDrawingContext, f as StoryDrawingHost, g as StoryParagraphFragmentContext, h as contentControlsOfLayout, i as effectiveContentControlLock, j as forEachSemanticDrawing, k as forEachSemanticStory, l as forEachStoryParagraphFragment, m as fragmentsOfParagraph, n as lineAtPosition, o as linesOf, p as paragraphFragmentsOf, q as paragraphFragmentsOfBlocks, u as unionLayoutBoxes } from './semantic-record-queries-Bf5bgQL3.js';
20
+ import { aK as ImpactClass, a4 as OoxmlNode, aC as OoxmlProperty, av as OoxmlElement, O as OoxmlPart, au as TreeDocOp, a5 as OoxmlPackage, bQ as ContentControlKind, bR as ContentControlLevel, bT as ContentControlLock, bN as ContentControlDataBinding, a as ReviewItem } from './tree-op-types-DKvJSH8T.js';
21
+ export { eP as AffineMatrix, bI as CommentAnchor, bJ as CommentPosition, C as CommentRecord, bu as CommentThreadState, aX as DrawingAccessibility, eQ as DrawingChartPlotType, eR as DrawingChartShownAs, a_ as DrawingChartSummary, a7 as DrawingHorizontalReferenceFrame, aY as DrawingImageEffects, aZ as DrawingTransform, ab as DrawingVerticalReferenceFrame, eS as GradientStop, ag as ImageWrapTarget, b0 as PictureFrameEffects, c as ReviewCommentItem, d as ReviewCustomItem, R as ReviewModelInput, e as ReviewPosition, f as ReviewRange, b as ReviewRevisionItem, g as ReviewRevisionKind, bs as ShapeColor, dh as ShapeReflection, di as ShapeShadow, aT as SourceCrop, aU as TableBorderStyle, aV as TextboxOutlineProjection, ds as VectorGradient, dt as VectorPattern, aW as VectorShapeComponent, a$ as VectorShapeProjection, du as W15_NAMESPACE_URI, eT as activeReviewItem, d$ as firstReviewRange, eC as reviewItemKey, eU as reviewItemPositionRank, eD as reviewItemRanges, eV as reviewItemsAt, eW as reviewThreadRootOf } from './tree-op-types-DKvJSH8T.js';
22
+ import { c as DocumentProperties, H as HeadlessDocumentView, x as relationshipTargetIn } from './drawing-graphic-kind-CK0cMc7H.js';
23
+ export { D as DrawingGraphicKind, a as DrawingSupport, b as DrawingSupportIssue } from './drawing-graphic-kind-CK0cMc7H.js';
24
+ import { q as RevisionAttribution, b as RevisionDisplayMode, p as RevisionAuthorFilter } from './revision-projection-DwFhgIR0.js';
25
+ export { s as DEFAULT_REVISION_DISPLAY_MODE, t as RevisionFilter, u as RevisionKind, v as formatRevisionOf, w as markRevisionRemovesMark, x as paragraphMarkFormatRevisionOf, y as paragraphMarkRevisionOf, z as paragraphMarkRevisionsOf, A as revisionAuthorFilter, B as revisionsAreDeletion, C as revisionsVisible, E as shownMarkRevision } from './revision-projection-DwFhgIR0.js';
26
+ import { R as ResolvedFootnoteProperties, a as ResolvedEndnoteProperties } from './note-properties-BiunaIQa.js';
27
+ import { c as TreeModelChange, N as NoteKind, aK as noteTypeOf, F as FieldResultsMode } from './tree-package-store-Cl3BkWXF.js';
28
+ export { M as MAX_SDT_NESTING, c as collectFlowBlocks, a as commentBodyText, b as commentInitials, j as contentControlContentChildren, i as isContentControl, f as isContentControlContent, p as paragraphOrderOfPart } from './review-paragraph-order-BWMXAKuA.js';
29
+ import { S as SemanticPosition, b as SelectionRect, a as SemanticSelection, C as CaretGeometry } from './semantic-interaction-QeuzEtAk.js';
30
+ export { c as CaretAtOptions, M as MoveCaretOptions, N as NavigationCommand, d as caretAt, e as caretStops, f as caretStopsForBlocks, g as compositionAnchor, h as contentControlsInLayout, m as moveCaret, p as paragraphTextFromLayout, s as spansInSelection } from './semantic-interaction-QeuzEtAk.js';
31
+ export { C as CellSelection, D as DEFAULT_VERTICAL_WEIGHT, a as DrawingOverlayFrame, H as HitPoint, b as HitTestOptions, P as PlacedCell, S as SemanticHit, c as SemanticHitDrawing, T as TableCellAddress, d as TableCellContext, e as caretBoxOnLine, f as cellSelectionBetween, g as cellSelectionRects, h as cellSelectionText, i as contentControlAtPoint, j as findDrawingOverlayFrameInLayout, k as hitTestPage, l as hitTestSheet, m as isFurniturePoint, n as lineEndOffset, p as pageAtY, o as paragraphsInCells, s as spanOffsetX, q as spansInCells, t as tableContextAt } from './semantic-cell-selection-DhalxEBH.js';
32
+ import './editor-scope-CA6egMaK.js';
32
33
 
33
34
  /**
34
35
  * The result of counting ONE list paragraph: the level that applied, the counter vector after it,
@@ -64,8 +65,23 @@ interface ListCounterState {
64
65
  */
65
66
  advance(numId: string, ilvl: number): ListCounterAdvance | null;
66
67
  }
68
+ /** The counter values of one bag at one point of its walk. */
69
+ interface ListCounterSnapshot {
70
+ /** Keyed by abstractNumId. */
71
+ readonly counters: ReadonlyMap<string, readonly number[]>;
72
+ /** Keyed by abstractNumId. */
73
+ readonly initialized: ReadonlyMap<string, readonly boolean[]>;
74
+ /** The numIds whose `w:startOverride` restart has already applied. */
75
+ readonly restarted: ReadonlySet<string>;
76
+ }
67
77
  /**
68
78
  * Create a fresh counter bag for one story (body, or one header/footer part).
79
+ *
80
+ * Every `w:num` over one `w:abstractNum` counts on the same vector. A `w:num` with a
81
+ * `w:startOverride` restarts it once: at its first paragraph whose level carries an override,
82
+ * that level starts again from the `w:num`'s value. The restart applies to that level alone and
83
+ * is then spent, so a later paragraph of the same `w:num` on another overridden level continues.
84
+ * A level that starts again after a parent level takes the start of the `w:num` counting it.
69
85
  */
70
86
  declare function createListCounterState(index: NumberingIndex): ListCounterState;
71
87
 
@@ -166,19 +182,6 @@ interface LayoutScheduler {
166
182
  */
167
183
  declare function createLayoutScheduler(options: LayoutSchedulerOptions): LayoutScheduler;
168
184
 
169
- interface PositionedTableAnchorSignal {
170
- readonly anchorId: string;
171
- readonly column: number;
172
- readonly fragmentIndex: number;
173
- readonly anchorY: number;
174
- }
175
- interface PendingPositionedTableTokens {
176
- readonly token: string;
177
- readonly previous: PendingPositionedTableTokens | undefined;
178
- readonly length: number;
179
- readonly signature: string;
180
- }
181
-
182
185
  /**
183
186
  * What the BODY flow knows about page numbering while it MEASURES a page-field placeholder.
184
187
  *
@@ -222,66 +225,67 @@ interface FieldPageContext {
222
225
  */
223
226
  declare function formatPageNumber(value: number, format: string | undefined): string;
224
227
 
225
- type WrapTextSide = 'bothSides' | 'left' | 'right' | 'largest';
226
- interface WrapExclusionInput {
227
- readonly mode: 'square' | 'tight' | 'through' | 'topAndBottom';
228
- readonly contentBounds: LayoutBox;
229
- readonly polygon: readonly DrawingPoint[] | null;
230
- readonly clipPolygon: readonly DrawingPoint[] | null;
231
- readonly wrapDistances: DrawingInsets;
232
- readonly effectInsets: DrawingInsets;
233
- readonly textSide: WrapTextSide;
234
- readonly contentLeft: number;
235
- readonly contentRight: number;
228
+ /**
229
+ * UAX #9 embedding levels, one per UTF-16 code unit, plus the paragraph ranges they were resolved
230
+ * within.
231
+ *
232
+ * The level is EXACT, not a direction: its parity gives direction, but the numeric value is what
233
+ * reordering needs, and collapsing it early loses nested isolates.
234
+ */
235
+ interface BidiEmbeddingLevels {
236
+ readonly levels: Uint8Array;
237
+ readonly paragraphs: readonly {
238
+ readonly start: number;
239
+ readonly end: number;
240
+ readonly level: number;
241
+ }[];
236
242
  }
237
243
 
238
- /** Paint layer relative to body text — not the OOXML wrap element. */
239
- type DrawingPaintLayer = 'behind' | 'inFront';
240
- /** The header or footer object a furniture exclusion zone comes from. */
241
- interface FurnitureZoneSource {
242
- readonly partName: string;
243
- readonly kind: 'drawing' | 'table';
244
- readonly nodeId: string;
244
+ /**
245
+ * A run of text sharing one script, direction and font slot — the unit handed to the shaper.
246
+ *
247
+ * Shaping cannot span a script change: Arabic and Latin in one call would produce wrong joining
248
+ * behaviour, so a run is itemized into these first.
249
+ */
250
+ interface ScriptItem {
251
+ readonly from: number;
252
+ readonly to: number;
253
+ readonly direction: TextDirection;
254
+ readonly bidiLevel: number;
255
+ /** The shaping script. The public union restates the shared slot policy's set. */
256
+ readonly script: 'Zyyy' | 'Latn' | 'Grek' | 'Cyrl' | 'Hani' | 'Hebr' | 'Arab' | 'Deva' | 'Beng' | 'Thai' | 'Khmr';
257
+ readonly slot: FontSlot;
245
258
  }
246
- interface ExclusionZone {
247
- /** Objects outside body drawing flow publish their exclusion directly instead of synthesizing it. */
248
- readonly sourceKind?: 'table' | 'frame' | 'furniture';
249
- /**
250
- * Placed by an earlier section on the sheet a `continuous` section continues on. Its anchor
251
- * is not in the continued section, so the zone reaches every line and column there.
252
- */
253
- readonly earlierSection?: boolean;
254
- /**
255
- * The header or footer object a `furniture` zone comes from. Node ids are unique only within
256
- * one part, so a furniture zone is identified by its part, its kind, and its node together
257
- * (see {@link exclusionZoneIdentity}), never by a composed id string.
258
- */
259
- readonly furnitureSource?: FurnitureZoneSource;
260
- readonly drawingNodeId: string;
261
- readonly anchorParagraphId: string;
262
- /** UTF-16 model offset of the anchor atom — exclusions apply at/after this point in the paragraph. */
263
- readonly anchorModelStart: number;
264
- /**
265
- * The band's vertical position is resolved against the page or a margin, not against the
266
- * anchor's own flow position, so it cannot move when the text beside it reflows.
267
- *
268
- * Such a band excludes every line it crosses on its page, including lines that PRECEDE the
269
- * anchor — a picture pinned to the top of the margin wraps the paragraphs above its anchor
270
- * exactly as it wraps the ones below. Flow-relative bands (`paragraph`, `line`) stay
271
- * forward-only: reaching back would move the anchor that positions them.
272
- */
273
- readonly pageFramedBand?: boolean;
274
- readonly sourceOrder: number;
275
- readonly paintLayer: DrawingPaintLayer;
276
- readonly relativeHeight: number;
277
- readonly allowOverlap: boolean;
278
- /** Owning column index in a multi-column section — 0 for single-column and HF stories. */
279
- readonly columnIndex: number;
280
- /** Resolved top edge in page-content coordinates after overlap displacement. */
281
- readonly y: number;
282
- readonly verticalBand: LayoutBox;
283
- readonly input: WrapExclusionInput;
259
+ /**
260
+ * A code point whose script this engine does not itemize.
261
+ *
262
+ * Carries the offending `codePoint` so the caller can report which character stopped it, rather
263
+ * than failing anonymously somewhere in the middle of a paragraph.
264
+ */
265
+ declare class UnsupportedScriptError extends Error {
266
+ readonly name = "UnsupportedScriptError";
267
+ readonly code = "unsupportedScript";
268
+ readonly codePoint: number;
269
+ constructor(codePoint: number);
284
270
  }
271
+ /**
272
+ * Split text into shapeable runs by script, bidi level and font slot.
273
+ *
274
+ * Consumes the bidi levels rather than re-deriving direction, so itemization and reordering agree
275
+ * by construction instead of by two implementations happening to match.
276
+ */
277
+ declare function itemizeScriptFontSlots(text: string, paragraphOffset: number, embedding: BidiEmbeddingLevels): readonly ScriptItem[];
278
+ /**
279
+ * The style a piece's text is MEASURED AND PAINTED in, given the font slot it carries.
280
+ *
281
+ * This is the measurer-boundary resolution: pieces and spans keep the run's real resolved
282
+ * style — with `fontFamily` and `fontFamilyEastAsia` both intact, so formatting readback
283
+ * and the format painter see the run as authored — and every consumer that turns text into
284
+ * geometry or ink resolves the face through here. The derived object is memoized per
285
+ * (style, family) by {@link withFontFamily}, so measurers amortizing over style identity
286
+ * keep their caches.
287
+ */
288
+ declare function styleForFontSlot(style: ResolvedRunStyle, slot: FontSlot | undefined): ResolvedRunStyle;
285
289
 
286
290
  type AutonumFieldKind = 'AUTONUM' | 'AUTONUMLGL' | 'AUTONUMOUT';
287
291
  /** One recognized AUTONUM-family instruction: the kind and its supported switches. */
@@ -299,6 +303,133 @@ interface AutonumFieldSpec {
299
303
  */
300
304
  declare function parseAutonumInstruction(raw: string): AutonumFieldSpec | null;
301
305
 
306
+ /** A horizontal run of x a float leaves free on one line, in paragraph-local coordinates. */
307
+ interface WrapInterval {
308
+ readonly start: number;
309
+ readonly end: number;
310
+ }
311
+ /** The one passage that holds a whole line. */
312
+ interface WrapSegment extends WrapInterval {
313
+ /**
314
+ * Where the content ends, when the pen stepped over a float but placed nothing past it.
315
+ * Alignment measures the content from here rather than from the pen.
316
+ */
317
+ readonly contentEnd?: number;
318
+ }
319
+
320
+ /**
321
+ * How far each space may shrink under a legacy compatibility rule: down to half its face's
322
+ * average character width (OS/2 `xAvgCharWidth`, the metric of the reverse automatic spacing
323
+ * gap), or down to a quarter of its font size.
324
+ */
325
+ type SpaceShrinkFloor = 'halfAverage' | 'quarterEm';
326
+
327
+ interface PendingLine {
328
+ readonly spans: StyleSpanRecord[];
329
+ readonly drawings: InlineDrawingRecord[];
330
+ readonly start: number;
331
+ end: number;
332
+ width: number;
333
+ height: number;
334
+ baseline: number;
335
+ /**
336
+ * Space ABOVE the glyph band inside {@link height}.
337
+ *
338
+ * Exact spacing can center the glyphs and move the baseline. Auto/atLeast spacing leaves
339
+ * this at zero and puts its extra depth below instead.
340
+ */
341
+ leading: number;
342
+ /**
343
+ * Auto/atLeast line-spacing depth below the painted glyph band.
344
+ *
345
+ * Word lets this external depth cross the bottom text margin when the glyphs themselves
346
+ * still fit. Pagination therefore budgets {@link height} minus this amount at a page
347
+ * bottom, while paint keeps the full box and padding.
348
+ */
349
+ trailingSpacing: number;
350
+ /** When true, layout must start a new page after this line is placed. */
351
+ pageBreakAfter?: boolean;
352
+ /** When true, layout must advance to the next authored section column. */
353
+ columnBreakAfter?: boolean;
354
+ /** An authored line break (`w:br` textWrapping or `w:cr`), never an automatic wrap. */
355
+ manualBreakAfter?: true;
356
+ /**
357
+ * The flow kept the paragraph's last word on this line by borrowing inter-word space.
358
+ * Alignment compresses a paragraph's last line only when this is set, never for another
359
+ * overflow such as hanging punctuation.
360
+ */
361
+ spaceShrink?: true;
362
+ /**
363
+ * The flow admitted a word on this line by borrowing inter-word space, so its natural
364
+ * content can run past its float passage while the compressed line stays inside it.
365
+ */
366
+ borrowedSpace?: true;
367
+ /**
368
+ * The line borrowed inter-word space under a rule for every alignment
369
+ * (`SpaceShrinkRule.everyAlignment`), so alignment compresses it to fill the measure as it
370
+ * does a justified line, each space down to this floor.
371
+ */
372
+ compressesSpaces?: SpaceShrinkFloor;
373
+ /** Model ranges on this line covering deleted content; see {@link LineRecord.deletedRanges}. */
374
+ deletedRanges?: readonly ModelRange[];
375
+ /** Vertical gap inserted before this line to clear a drawing exclusion band. */
376
+ exclusionSkipBefore?: number;
377
+ /**
378
+ * The line follows a text wrapping break that clears floating objects (`w:br w:clear`).
379
+ * Placement keeps its skip even on a line before the paragraph's first anchor.
380
+ */
381
+ breakClearance?: true;
382
+ /**
383
+ * The skip clears a paragraph-framed band of an anchor on a later line of the same paragraph
384
+ * (`top-and-bottom-earlier-lines.ts`). Placement keeps it, as it keeps {@link breakClearance}.
385
+ */
386
+ ownBandClearance?: true;
387
+ /** Clearance inherited by an empty anchor paragraph from other drawing bands. */
388
+ anchorClearanceBefore?: number;
389
+ /**
390
+ * The first-line offset this line was broken with: the paragraph's first line, and the
391
+ * first line after page breaks that open it ({@link holdsOnlyPageBreak}). Absent when zero.
392
+ */
393
+ firstLineOffset?: number;
394
+ /**
395
+ * The horizontal passage a float left this line, when that passage is narrower than the
396
+ * paragraph's measure and holds the whole line.
397
+ *
398
+ * `start` is where the line's content begins (after any first-line indent) and `end` is the
399
+ * passage's right edge, both in paragraph-local coordinates. Centring, right alignment and
400
+ * justification align INSIDE this passage: Word centres a heading between the two pictures
401
+ * beside it, not between the page margins, and stretches a justified line to the float's
402
+ * near edge rather than through it. Absent when no float shortens the line, when the line
403
+ * steps over a float into a later passage, or when the passage is the whole measure.
404
+ * `contentEnd` marks a line whose pen stepped over a float without placing anything past it.
405
+ */
406
+ wrapSegment?: WrapSegment;
407
+ /**
408
+ * The float passages a line that steps over a float holds content in, in the order its pen
409
+ * met them, in paragraph-local coordinates (mirrored when {@link wrapMirrored}). The first
410
+ * starts where the line's content begins.
411
+ *
412
+ * Each part of such a line aligns INSIDE its own passage: centred text is centred beside the
413
+ * float on each side, and right-aligned text ends at each passage's right edge. Aligning the
414
+ * line as one block moved the text before the float onto the picture. Absent on a line that
415
+ * one passage holds whole, which {@link wrapSegment} describes.
416
+ */
417
+ wrapPassages?: readonly {
418
+ readonly start: number;
419
+ readonly end: number;
420
+ }[];
421
+ /**
422
+ * The line broke in x mirrored about its paragraph's measure, as a right-to-left line does
423
+ * beside a float (`wrap-break-space.ts`): it fills the rightmost passage first. Its spans,
424
+ * {@link wrapSegment} and {@link wrapPassages} are then in that mirrored x, in break order.
425
+ */
426
+ wrapMirrored?: true;
427
+ /** Tracked anchored-drawing attributions on this line; see {@link LineRecord.anchorRevisions}. */
428
+ anchorRevisions?: readonly RevisionAttribution[];
429
+ /** Revisions a resolved view answered on this line; see {@link LineRecord.changeSites}. */
430
+ changeSites?: readonly RevisionAttribution[];
431
+ }
432
+
302
433
  /**
303
434
  * Lookup of derived display marks keyed by {@link formatNoteScopeId}.
304
435
  *
@@ -488,103 +619,6 @@ interface FieldCodeRange {
488
619
  }
489
620
  type FieldCodeRanges = ReadonlyMap<string, readonly FieldCodeRange[]>;
490
621
 
491
- /** A horizontal run of x a float leaves free on one line, in paragraph-local coordinates. */
492
- interface WrapInterval {
493
- readonly start: number;
494
- readonly end: number;
495
- }
496
- /** The one passage that holds a whole line. */
497
- interface WrapSegment extends WrapInterval {
498
- /**
499
- * Where the content ends, when the pen stepped over a float but placed nothing past it.
500
- * Alignment measures the content from here rather than from the pen.
501
- */
502
- readonly contentEnd?: number;
503
- }
504
-
505
- interface PendingLine {
506
- readonly spans: StyleSpanRecord[];
507
- readonly drawings: InlineDrawingRecord[];
508
- readonly start: number;
509
- end: number;
510
- width: number;
511
- height: number;
512
- baseline: number;
513
- /**
514
- * Space ABOVE the glyph band inside {@link height}.
515
- *
516
- * Exact spacing can center the glyphs and move the baseline. Auto/atLeast spacing leaves
517
- * this at zero and puts its extra depth below instead.
518
- */
519
- leading: number;
520
- /**
521
- * Auto/atLeast line-spacing depth below the painted glyph band.
522
- *
523
- * Word lets this external depth cross the bottom text margin when the glyphs themselves
524
- * still fit. Pagination therefore budgets {@link height} minus this amount at a page
525
- * bottom, while paint keeps the full box and padding.
526
- */
527
- trailingSpacing: number;
528
- /** When true, layout must start a new page after this line is placed. */
529
- pageBreakAfter?: boolean;
530
- /** When true, layout must advance to the next authored section column. */
531
- columnBreakAfter?: boolean;
532
- /** An authored line break (`w:br` textWrapping or `w:cr`), never an automatic wrap. */
533
- manualBreakAfter?: true;
534
- /**
535
- * The flow kept the paragraph's last word on this line by borrowing inter-word space.
536
- * Alignment compresses a paragraph's last line only when this is set, never for another
537
- * overflow such as hanging punctuation.
538
- */
539
- spaceShrink?: true;
540
- /** Model ranges on this line covering deleted content; see {@link LineRecord.deletedRanges}. */
541
- deletedRanges?: readonly ModelRange[];
542
- /** Vertical gap inserted before this line to clear a drawing exclusion band. */
543
- exclusionSkipBefore?: number;
544
- /**
545
- * The line follows a text wrapping break that clears floating objects (`w:br w:clear`).
546
- * Placement keeps its skip even on a line before the paragraph's first anchor.
547
- */
548
- breakClearance?: true;
549
- /** Clearance inherited by an empty anchor paragraph from other drawing bands. */
550
- anchorClearanceBefore?: number;
551
- /**
552
- * The first-line offset this line was broken with: the paragraph's first line, and the
553
- * first line after page breaks that open it ({@link holdsOnlyPageBreak}). Absent when zero.
554
- */
555
- firstLineOffset?: number;
556
- /**
557
- * The horizontal passage a float left this line, when that passage is narrower than the
558
- * paragraph's measure and holds the whole line.
559
- *
560
- * `start` is where the line's content begins (after any first-line indent) and `end` is the
561
- * passage's right edge, both in paragraph-local coordinates. Centring, right alignment and
562
- * justification align INSIDE this passage: Word centres a heading between the two pictures
563
- * beside it, not between the page margins, and stretches a justified line to the float's
564
- * near edge rather than through it. Absent when no float shortens the line, when the line
565
- * steps over a float into a later passage, or when the passage is the whole measure.
566
- * `contentEnd` marks a line whose pen stepped over a float without placing anything past it.
567
- */
568
- wrapSegment?: WrapSegment;
569
- /**
570
- * The float passages a line that steps over a float holds content in, left to right, in
571
- * paragraph-local coordinates. The first starts where the line's content begins.
572
- *
573
- * Each part of such a line aligns INSIDE its own passage: centred text is centred beside the
574
- * float on each side, and right-aligned text ends at each passage's right edge. Aligning the
575
- * line as one block moved the text before the float onto the picture. Absent on a line that
576
- * one passage holds whole, which {@link wrapSegment} describes.
577
- */
578
- wrapPassages?: readonly {
579
- readonly start: number;
580
- readonly end: number;
581
- }[];
582
- /** Tracked anchored-drawing attributions on this line; see {@link LineRecord.anchorRevisions}. */
583
- anchorRevisions?: readonly RevisionAttribution[];
584
- /** Revisions a resolved view answered on this line; see {@link LineRecord.changeSites}. */
585
- changeSites?: readonly RevisionAttribution[];
586
- }
587
-
588
622
  /**
589
623
  * What one cell side is before any ADJACENT cell has its say.
590
624
  *
@@ -621,6 +655,20 @@ interface CompoundBorderMetrics {
621
655
  * belongs to rendering; these layout metrics remain in continuous points.
622
656
  */
623
657
  declare function computeDoubleBorderMetricsPt(widthPt: number): CompoundBorderMetrics;
658
+ /** One stroke of a compound border: offset from the band's top or left edge, and width. @internal */
659
+ interface CompoundBorderStroke {
660
+ /** Distance from the band's top (or left) edge to this stroke, in points. */
661
+ readonly offsetPt: number;
662
+ /** Thickness of this stroke, in points. */
663
+ readonly widthPt: number;
664
+ }
665
+ /**
666
+ * The strokes of a triple or thin-thick border whose painted band is `extentPt` thick, for a
667
+ * painter that holds the band and not the authored width. Null for any other style.
668
+ *
669
+ * @internal
670
+ */
671
+ declare function compoundBorderStrokesForExtentPt(val: string, extentPt: number): readonly CompoundBorderStroke[] | null;
624
672
 
625
673
  /** Soft ceiling on fragments emitted for one authored row (hostile / runaway splits). */
626
674
  declare const MAX_TABLE_ROW_FRAGMENTS = 4096;
@@ -640,6 +688,92 @@ declare class TablePaginationError extends Error {
640
688
  constructor(code: TablePaginationErrorCode, message: string);
641
689
  }
642
690
 
691
+ type WrapTextSide = 'bothSides' | 'left' | 'right' | 'largest';
692
+ interface WrapExclusionInput {
693
+ readonly mode: 'square' | 'tight' | 'through' | 'topAndBottom';
694
+ readonly contentBounds: LayoutBox;
695
+ readonly polygon: readonly DrawingPoint[] | null;
696
+ readonly clipPolygon: readonly DrawingPoint[] | null;
697
+ readonly wrapDistances: DrawingInsets;
698
+ readonly effectInsets: DrawingInsets;
699
+ readonly textSide: WrapTextSide;
700
+ /**
701
+ * The physical side `largest` keeps when both sides are equally wide. Absent means the
702
+ * right, as in compatibility modes before 15; the paragraph breaker sets the left for
703
+ * mode 15 and later (`largestWrapTieLeft`).
704
+ */
705
+ readonly largestTie?: 'left' | 'right';
706
+ readonly contentLeft: number;
707
+ readonly contentRight: number;
708
+ }
709
+
710
+ /** Paint layer relative to body text — not the OOXML wrap element. */
711
+ type DrawingPaintLayer = 'behind' | 'inFront';
712
+ /** The header or footer object a furniture exclusion zone comes from. */
713
+ interface FurnitureZoneSource {
714
+ readonly partName: string;
715
+ readonly kind: 'drawing' | 'table';
716
+ readonly nodeId: string;
717
+ }
718
+ interface ExclusionZone {
719
+ /** Objects outside body drawing flow publish their exclusion directly instead of synthesizing it. */
720
+ readonly sourceKind?: 'table' | 'frame' | 'furniture';
721
+ /**
722
+ * Placed by an earlier section on the sheet a `continuous` section continues on. Its anchor
723
+ * is not in the continued section, so the zone reaches every line and column there.
724
+ */
725
+ readonly earlierSection?: boolean;
726
+ /**
727
+ * The header or footer object a `furniture` zone comes from. Node ids are unique only within
728
+ * one part, so a furniture zone is identified by its part, its kind, and its node together
729
+ * (see {@link exclusionZoneIdentity}), never by a composed id string.
730
+ */
731
+ readonly furnitureSource?: FurnitureZoneSource;
732
+ readonly drawingNodeId: string;
733
+ readonly anchorParagraphId: string;
734
+ /** UTF-16 model offset of the anchor atom — exclusions apply at/after this point in the paragraph. */
735
+ readonly anchorModelStart: number;
736
+ /**
737
+ * The band's vertical position is resolved against the page or a margin, not against the
738
+ * anchor's own flow position, so it cannot move when the text beside it reflows.
739
+ *
740
+ * Such a band excludes every line it crosses on its page, including lines that PRECEDE the
741
+ * anchor — a picture pinned to the top of the margin wraps the paragraphs above its anchor
742
+ * exactly as it wraps the ones below. Flow-relative bands (`paragraph`, `line`) stay
743
+ * forward-only: reaching back would move the anchor that positions them.
744
+ */
745
+ readonly pageFramedBand?: boolean;
746
+ /**
747
+ * A text-anchored table raised above its anchor that leaves no text passage beside it. Like a
748
+ * page-framed band it moves the earlier lines it covers on its page below it. Its own position
749
+ * leaves out that move, so it does not chase its anchor.
750
+ */
751
+ readonly reachesEarlierLines?: boolean;
752
+ readonly sourceOrder: number;
753
+ readonly paintLayer: DrawingPaintLayer;
754
+ readonly relativeHeight: number;
755
+ readonly allowOverlap: boolean;
756
+ /** Owning column index in a multi-column section — 0 for single-column and HF stories. */
757
+ readonly columnIndex: number;
758
+ /** Resolved top edge in page-content coordinates after overlap displacement. */
759
+ readonly y: number;
760
+ readonly verticalBand: LayoutBox;
761
+ readonly input: WrapExclusionInput;
762
+ }
763
+
764
+ interface PositionedTableAnchorSignal {
765
+ readonly anchorId: string;
766
+ readonly column: number;
767
+ readonly fragmentIndex: number;
768
+ readonly anchorY: number;
769
+ }
770
+ interface PendingPositionedTableTokens {
771
+ readonly token: string;
772
+ readonly previous: PendingPositionedTableTokens | undefined;
773
+ readonly length: number;
774
+ readonly signature: string;
775
+ }
776
+
643
777
  type ParagraphFrameHeightRule = 'auto' | 'atLeast' | 'exact';
644
778
  type ParagraphFrameWrap = 'auto' | 'around' | 'tight' | 'through' | 'none' | 'notBeside';
645
779
  /** Bounded text-frame properties resolved for semantic layout. */
@@ -866,6 +1000,26 @@ interface LayoutSession {
866
1000
  */
867
1001
  declare function createLayoutSession(): LayoutSession;
868
1002
 
1003
+ /**
1004
+ * Read `w:numPr` from cascaded paragraph-property nodes (lowest precedence first).
1005
+ *
1006
+ * Flat `OoxmlProperty[]` bags drop nested `ilvl`/`numId`, so this walks the tree nodes
1007
+ * the same way borders and tabs do.
1008
+ *
1009
+ * `w:ilvl` and `w:numId` inherit INDEPENDENTLY through the style chain and the direct
1010
+ * `w:pPr` (§17.3.1.19): a tier stating only the level keeps the id it inherits — Word's
1011
+ * standard Heading2–Heading9 shape, where only Heading1 names the `w:num` — and a tier
1012
+ * stating only the id keeps the inherited level. Treating each `w:numPr` node as a full
1013
+ * replacement dropped the id at every level-only tier and unnumbered the paragraph. A
1014
+ * stated `w:numId w:val="0"` (or an invalid value) still switches numbering off at that
1015
+ * tier even when a lower tier set one; a higher tier stating a valid id re-enables. A
1016
+ * level-only tier with no id inherited from below resolves to no numbering.
1017
+ */
1018
+ declare function readNumPr(paragraphPropertyNodes: readonly OoxmlNode[]): {
1019
+ numId: string;
1020
+ ilvl: number;
1021
+ } | null;
1022
+
869
1023
  /**
870
1024
  * The effective indent of a list paragraph: `inherited`, then the numbering LEVEL, then
871
1025
  * `direct`, per attribute.
@@ -886,8 +1040,15 @@ declare function createLayoutSession(): LayoutSession;
886
1040
  */
887
1041
  declare function mergeListIndent(levelIndent: NumberingLevelIndent, inherited: readonly OoxmlProperty[], direct?: readonly OoxmlProperty[]): NumberingLevelIndent;
888
1042
 
889
- /** Collect story paragraphs, preserving table depth limits across immutable row reuse. */
890
- declare function walkStoryParagraphs(blocks: readonly OoxmlElement[], maxTableDepth?: number): OoxmlElement[];
1043
+ /**
1044
+ * Collect story paragraphs, preserving table depth limits across immutable row reuse.
1045
+ *
1046
+ * `skipMergedCells` leaves out the paragraphs of a cell that continues a vertical merge from
1047
+ * the cell above it in the same grid column (`w:vMerge` without `restart`). Such a cell shows
1048
+ * nothing, so list numbering skips it; a continuation with no merged cell above it starts its
1049
+ * own merge and keeps its paragraphs.
1050
+ */
1051
+ declare function walkStoryParagraphs(blocks: readonly OoxmlElement[], maxTableDepth?: number, skipMergedCells?: boolean): OoxmlElement[];
891
1052
 
892
1053
  /**
893
1054
  * Horizontal marker box inside the first-line indent slot.
@@ -971,6 +1132,7 @@ type CellVerticalAlign = 'top' | 'center' | 'bottom';
971
1132
  interface TableAutofitContext {
972
1133
  /** Measures text exactly as line breaking does. */
973
1134
  readonly measurer: TextMeasurer;
1135
+ /** Nested in a fixed table's cell (`nestedAutofitStructure`). */ readonly parentTableFixed?: true;
974
1136
  /** List items by paragraph id: a list level indents its paragraph. */
975
1137
  readonly listItems?: ReadonlyMap<string, ResolvedListItem>;
976
1138
  /** Resolves inline pictures, so a picture column keeps the width the picture paints at. */
@@ -979,6 +1141,12 @@ interface TableAutofitContext {
979
1141
  readonly fields?: AutofitFieldContext;
980
1142
  /** The document's default tab interval, where an unwrapped line's tabs advance to. */
981
1143
  readonly defaultTabStopPt?: number;
1144
+ /**
1145
+ * The document's compatibility mode, as `w:compatSetting` states it. Absent means no
1146
+ * declaration, which lays out as a legacy mode: a positive first-line indent is left out of a
1147
+ * column's minimum. Callers that set it must also fold it into {@link passToken}.
1148
+ */
1149
+ readonly compatibilityMode?: number;
982
1150
  /**
983
1151
  * A token that changes whenever a paragraph's projected text can change: the same tokens
984
1152
  * the paragraph break cache keys on. Minimums are cached only when this and
@@ -1092,6 +1260,8 @@ interface SemanticTableCell {
1092
1260
  readonly headsVerticalMerge?: true;
1093
1261
  /** `w:hideMark` excludes the end-of-cell glyph from row sizing. */
1094
1262
  readonly hideEndMark?: boolean;
1263
+ /** `w:noWrap`: autofit never narrows the cell's column below its preferred width. */
1264
+ readonly noWrap?: true;
1095
1265
  /** `w:vAlign` — defaults to top when omitted/unrecognised. */
1096
1266
  readonly vAlign: CellVerticalAlign;
1097
1267
  /** `w:textDirection`; unsupported values keep horizontal layout. */
@@ -1108,8 +1278,6 @@ interface SemanticTableCell {
1108
1278
  readonly contentBottomIsOuter?: boolean;
1109
1279
  /** Clearance this AUTHORED ROW reserves above its content for its own top rule, in points. */
1110
1280
  readonly topBandClearancePt?: number;
1111
- /** The CELL declares `w:tcBorders/w:top` as `nil`, rather than a table style doing so. */
1112
- readonly suppressesTopBand?: true;
1113
1281
  /** Row-local clearance in points for authored minima, before vMerge combines content boxes. */
1114
1282
  readonly minimumContentInsets?: {
1115
1283
  readonly top: number;
@@ -1180,16 +1348,33 @@ interface SemanticTableStructure {
1180
1348
  readonly legacyTrailingOuterEdge?: true;
1181
1349
  /**
1182
1350
  * Derived, never serialized: how far the grid moves from the aligned table edge, in points.
1183
- * A supported mode-14 fixed table shifts by its leading cell margin in the other direction.
1351
+ * A supported legacy table with an absolute width shifts by its aligned cell margin so its
1352
+ * content meets the aligned text edge (`legacyContentOffsetPt`).
1184
1353
  * A compatibility-mode-15 left- or right-aligned table puts the outer edge of its side rule
1185
1354
  * on that edge, so its first grid line sits half a rule inward. Positive moves right.
1186
1355
  */
1187
1356
  readonly outerRuleOffsetPt?: number;
1357
+ /**
1358
+ * Derived, never serialized: the legacy content-edge offset, which `outerRuleOffsetPt`
1359
+ * carries. It does not depend on the column widths, so AutoFit widening keeps it.
1360
+ */
1361
+ readonly legacyContentOffsetPt?: number;
1188
1362
  /**
1189
1363
  * Derived, never serialized: the outer side rule an automatic-width mode-15 AutoFit table
1190
1364
  * keeps inside its container, so its grid settles that much narrower than the room.
1191
1365
  */
1192
1366
  readonly autoOuterRulePt?: number;
1367
+ /** Derived, never serialized: a right-to-left text-box table's move right, in points. */
1368
+ readonly textBoxBidiShiftPt?: number;
1369
+ /** Derived, never serialized: a top-level table of a text box story. */
1370
+ readonly textBox?: true;
1371
+ /** Derived, never serialized: AutoFit widening keeps the shared grid lines. */
1372
+ readonly sharedGridLinesHold?: true;
1373
+ /**
1374
+ * Derived, never serialized: a top-level autofit table whose absolute `w:tblW` is wider than
1375
+ * its text column. See `tableWidthPastTextColumn`.
1376
+ */
1377
+ readonly pastTextColumn?: true;
1193
1378
  /** `w:tblPr/w:tblW` — the width the table asked for. */
1194
1379
  readonly tableWidth: PreferredWidth;
1195
1380
  /**
@@ -1313,6 +1498,9 @@ pages?: ReadonlySet<number>,
1313
1498
  /** For exact intra-span edge positions (see {@link selectionRects}). */
1314
1499
  measurer?: TextMeasurer): Map<string, SelectionRect[]>;
1315
1500
 
1501
+ /** Visible deletion boundaries split words without changing canonical text offsets. */
1502
+ declare function deletedTextBoundaries(layout: SemanticLayout, paragraphId: string): ReadonlySet<number>;
1503
+
1316
1504
  /**
1317
1505
  * The next word boundary from `offset`, in `direction`.
1318
1506
  *
@@ -1720,9 +1908,14 @@ interface SemanticSpanVisit {
1720
1908
  declare function exportSourceRangeOf(span: StyleSpanRecord): SourceRange | null;
1721
1909
  /**
1722
1910
  * Visit every published span in page/story order without consulting the source package.
1911
+ * With `spanlessMarkers`, a paragraph fragment that publishes a list marker but no span, such
1912
+ * as an empty numbered paragraph, is visited once, in order, with an empty span on its first
1913
+ * line, so an exporter that paints markers beside spans paints its marker too.
1723
1914
  * @public
1724
1915
  */
1725
- declare function forEachSemanticSpan(layout: SemanticLayout, visitor: (visit: SemanticSpanVisit) => void): void;
1916
+ declare function forEachSemanticSpan(layout: SemanticLayout, visitor: (visit: SemanticSpanVisit) => void, options?: {
1917
+ readonly spanlessMarkers?: boolean;
1918
+ }): void;
1726
1919
 
1727
1920
  /**
1728
1921
  * The part of a line that belongs to ONE paragraph.
@@ -1745,7 +1938,7 @@ declare function lineSegments(line: LineRecord): readonly LineSegment[];
1745
1938
 
1746
1939
  /**
1747
1940
  * The box a painter clips a vector shape to: `bounds` grown on each side where a stroked
1748
- * outline reaches past the drawing extent.
1941
+ * outline or an outer shadow reaches past the drawing extent.
1749
1942
  *
1750
1943
  * An outline is centred on its geometry and is not cut at the extent, a text column, or a cell
1751
1944
  * edge that meets the extent: a rule at x=0 of a group with `wp:effectExtent l="0"` keeps
@@ -1881,6 +2074,14 @@ interface HeaderFooterStoryInputs {
1881
2074
  * merged into the paragraph's own.
1882
2075
  */
1883
2076
  readonly numberingIndex?: NumberingIndex;
2077
+ /**
2078
+ * The list counters this story starts from. Header and footer stories continue one count
2079
+ * across the document (see `furniture-list-seeds.ts`); absent, the story counts from fresh
2080
+ * counters.
2081
+ *
2082
+ * @internal
2083
+ */
2084
+ readonly listCounterSeed?: ListCounterSnapshot;
1884
2085
  /** Sanitized hyperlink seams scoped to this header/footer part. */
1885
2086
  readonly projectLink?: HyperlinkProjector;
1886
2087
  readonly projectFieldLink?: FieldLinkProjector;
@@ -1996,17 +2197,22 @@ type ResolvedNoteProperties = ResolvedFootnoteProperties | ResolvedEndnoteProper
1996
2197
  /**
1997
2198
  * Derive display marks for references of one note kind in document order.
1998
2199
  *
1999
- * Restart rules:
2000
- * - `continuous` — single sequence across the document from `numStart`
2001
- * - `eachSect` — restart at `numStart` when `sectionIndex` changes
2002
- * - `eachPage` — restart when `pageIndex` changes (falls back to continuous if unknown)
2200
+ * A note's number is its section's `numStart` plus the note's index in its numbering domain:
2201
+ * - `continuous` — the domain is the whole document, so the index counts every earlier
2202
+ * numbered note, in any section
2203
+ * - `eachSect` — the domain is the reference's section
2204
+ * - `eachPage` — the domain is the reference's page (continuous when the page is unknown)
2205
+ *
2206
+ * So a later section that sets only `numStart` 10, after two notes, numbers its notes 12 and
2207
+ * 13, and a section without its own `numStart` continues from 1 plus the index.
2003
2208
  *
2004
2209
  * IDs are stable; only display numbers change. Non-mutating.
2005
2210
  */
2006
2211
  declare function deriveNoteDisplayMarks(noteKind: NoteKind, references: readonly NoteReferenceSite[], properties: ResolvedNoteProperties): readonly NoteDisplayMark[];
2007
2212
  /**
2008
2213
  * Derive marks using per-reference-section resolved properties (`numFmt` / `numStart` /
2009
- * `numRestart`). Restart rules consult each site's own section props.
2214
+ * `numRestart`). Each site uses its own section's properties: the format, the start value, and
2215
+ * the restart rule that picks its numbering domain (see {@link deriveNoteDisplayMarks}).
2010
2216
  */
2011
2217
  declare function deriveNoteDisplayMarksResolved(_noteKind: NoteKind, references: readonly NoteReferenceSite[], resolveProps: (sectionIndex: number) => ResolvedNoteProperties): readonly NoteDisplayMark[];
2012
2218
  /** Map noteId → formatted mark for quick lookup (last site wins if duplicated). */
@@ -2265,7 +2471,10 @@ interface NotesLayoutInput {
2265
2471
  readonly footnotePropsBySection: readonly ResolvedFootnoteProperties[];
2266
2472
  /** Per-section resolved endnote properties. */
2267
2473
  readonly endnotePropsBySection: readonly ResolvedEndnoteProperties[];
2268
- /** Document-level defaults (section 0 fallback). */
2474
+ /**
2475
+ * Properties of a section with none of its own: the defaults, plus the settings.xml endnote
2476
+ * position. The fallback when the document has no enumerated sections.
2477
+ */
2269
2478
  readonly documentFootnoteProps: ResolvedFootnoteProperties;
2270
2479
  readonly documentEndnoteProps: ResolvedEndnoteProperties;
2271
2480
  readonly measurer: TextMeasurer;
@@ -2503,6 +2712,14 @@ declare function paragraphShading(props: readonly OoxmlProperty[]): string | und
2503
2712
  declare function paragraphShadingBox(lines: readonly {
2504
2713
  readonly box: LayoutBox;
2505
2714
  }[], x: number, width: number): LayoutBox | undefined;
2715
+ /**
2716
+ * The colour of automatic text on a `background` fill: white on a dark fill, null for the
2717
+ * default black. A fill is dark when its luma (0.299 R + 0.587 G + 0.114 B, out of 255) is
2718
+ * under 59.5: grey `3B3B3B` takes white text and `3C3C3C` black, as measured.
2719
+ *
2720
+ * @internal
2721
+ */
2722
+ declare function automaticTextColor(background: string | null | undefined): 'FFFFFF' | null;
2506
2723
 
2507
2724
  /**
2508
2725
  * Everything a layout pass needs beyond the document itself.
@@ -2779,7 +2996,7 @@ declare function layoutSemanticDocument(part: OoxmlPart, revision: number, optio
2779
2996
  declare const MAX_MARKER_TEXT_LENGTH = 64;
2780
2997
  /** Soft ceiling on authored `w:lvlText` before expansion. */
2781
2998
  declare const MAX_LVL_TEXT_LENGTH = 64;
2782
- /** Clamp a list counter into a safe non-negative integer Word can format. */
2999
+ /** Clamp a list counter into a safe non-negative integer that every format can display. */
2783
3000
  declare function clampListValue(value: number): number;
2784
3001
  /** `decimal` (§17.18.59). Clamped, because the counter derives from file-declared restarts. */
2785
3002
  declare function formatDecimal(value: number): string;
@@ -3178,6 +3395,17 @@ interface MaterializationInput {
3178
3395
  */
3179
3396
  declare function pagesToMaterialize(input: MaterializationInput): Set<number>;
3180
3397
 
3398
+ /**
3399
+ * Extra advance of each inked glyph when bold is synthesized, as a fraction of the font size.
3400
+ *
3401
+ * A face without a bold style draws bold by thickening its outlines, and each glyph that has
3402
+ * ink then advances 1/50 em further. Blank glyphs such as spaces keep their advance. Measured
3403
+ * on Arabic text at 10, 20, 30, and 36 pt: the extra width matched this rule to the pixel.
3404
+ *
3405
+ * @public
3406
+ */
3407
+ declare const SYNTHETIC_BOLD_ADVANCE_EM: number;
3408
+
3181
3409
  /** Character border geometry from placed spans, shared by screen and export painters. */
3182
3410
  declare function runBorderStrokesForLine(line: LineRecord): readonly ParagraphBorderStrokeRecord[];
3183
3411
 
@@ -3219,5 +3447,12 @@ declare function tabLeaderPattern(startPt: number, widthPt: number, advancePt: n
3219
3447
  */
3220
3448
  declare function noteSeparatorRuleBox(span: StyleSpanRecord, line: LineRecord, stroke?: StrikeoutStrokePt): LayoutBox;
3221
3449
 
3222
- export { AUTO_PREFERRED_WIDTH, AnchoredDrawingRecord, BlockFragmentRecord, CELL_PAD, COMPOUND_BORDER_MIN_GAP_PT, COMPOUND_BORDER_MIN_STROKE_PT, CaretGeometry, CellBorderBox, ContentControlBoundaryRecord$1 as ContentControlBoundaryRecord, DEFAULT_CANVAS_FONT_STACK, DEFAULT_CELL_MARGINS, DrawingInsets, DrawingPoint, FieldLinkProjector, FixedPoint, FixedPointRoundingMode, FontByteValidator, GRAPHEME_SEGMENTER_LOCALE, HARFBUZZ_SHAPING_LIBRARY, HarfBuzzShapingError, HyperlinkFieldSpec, HyperlinkProjector, InlineDrawingRecord, LayoutBox, LineRecord, MAX_EACH_PAGE_MARK_CANDIDATES, MAX_LVL_TEXT_LENGTH, MAX_MARKER_TEXT_LENGTH, MAX_NOTES_LAID_OUT, MAX_NOTE_FRAGMENTS, MAX_NOTE_OVERFLOW_PAGES, MAX_NOTE_REFLOW_ATTEMPTS, MAX_STYLE_BASED_ON_DEPTH, MAX_TABLE_COLUMNS, MAX_TABLE_NESTING, MAX_TABLE_ROW_FRAGMENTS, MAX_TABLE_ROW_HEIGHT_PT, NumberingIndex, NumberingLevel, NumberingLevelIndent, PageBorderFrameRecord, PageGeometry, PageRecord, ParagraphBorderStrokeRecord, ParagraphFragmentRecord, RefFieldContext, ResolvedListItem, ReviewItem, RevisionAttribution, RevisionAuthorFilter, RevisionDisplayMode, SectionColumns, SectionPageBorders, SelectionRect, SemanticLayout, SemanticPosition, SemanticRootStoryKind, SemanticSelection, SemanticStoryKind, SemanticStoryVisit, ShapedRun, SourceRange, SpanLinkRecord, StrikeoutStrokePt, StyleCascadeTable, StyleSpanRecord, TableBorderBox, TableBorderSide, TableCellStyleFormatting, TablePaginationError, TextMeasurer, TextShaper, TextboxOwnerRecord, VersionedShapingLibrary, WORD_SEGMENTER_LOCALE, anchorLineY, attachNotesToLayout, boundedFallbackWordSegments, buildPageRefIndex, clampListValue, computeDoubleBorderMetricsPt, computeFootnoteReserves, contentControlAtSemantic, contentControlBoundaries, contentControlHoldingParagraph, contentControlRecordsInPart, createBoundedFallbackWordBoundary, createDefaultWordBoundary, createDocumentFurnitureSource, createDocumentLinkProjectors, createDocumentNotesInput, createDocumentStyleDependencies, createFieldLinkRegistry, createFixedMeasurer, createHarfBuzzTextShaper, createIntlWordBoundary, createLayoutScheduler, createLayoutSession, createListCounterState, createParagraphLayoutCache, defaultNoteSeparatorRuleStyle, deriveNoteDisplayMarks, deriveNoteDisplayMarksResolved, documentOrder, documentRelationshipTargetIn, effectiveBorderSide, emptyTocPlaceholderParagraphIds, emptyTocSuppressedResultParagraphIds, everyStoryOrder, expandLvlText, exportSourceRangeOf, filterRefsOnPage, findSeparatorNote, forEachSemanticSpan, formatDecimal, formatDecimalZero, formatLowerLetter, formatLowerRoman, formatNumFmt, formatPageNumber, formatUpperLetter, formatUpperRoman, fragmentOwnsAtomOffset, graphemeBoundaryEpoch, graphemeCount, graphemeOffsetToUtf16, harfBuzzFontValidator, hitTestSemantic, initializeHarfBuzz, intlGraphemeBoundary, isCanvasMeasurementAvailable, isCumulativeGeometryTrustedFromLineOrigin, isGeometryTrustedCaretOffset, isHarfBuzzInitialized, isIntlSegmenterAvailable, isIntlWordSegmenterAvailable, isMarkerOnlySeparatorNote, isWholeGraphemeHorizontalBoundary, keyedRangeRects, layoutHeaderFooterStory, layoutNoteById, layoutNoteSeparator, layoutNoteStory, layoutSemanticDocument, lineSegments, listMarkerBox, mapSymbolPuaText, mergeListIndent, normalNotesOf, noteDisplayMarkMap, noteLineIdPrefix, noteMarkKey, noteSeparatorAreaBox, noteSeparatorRuleBox, noteStoryBlocks, pageBorderFrame, pageRefPageNumbersFromLayout, pagesToMaterialize, paragraphLayoutKey, paragraphMarkDeleted, paragraphShading, paragraphShadingBox, parseAutonumInstruction, planRefFieldResultRefresh, positionPastDeletion, projectedNoteMarkText, provisionalNoteMarks, readTableStructure, resetGraphemeBoundary, resolveDefaultSurfaceMeasurer, resolveDefaultWordBoundary, resolveOoxmlShadingFill, resolveStrictHexFill, reviewAnchorIndex, reviewItemGeometry, revisionRemovesParagraph, roundFontUnitToFixedPoint, runBorderStrokesForLine, segmentGraphemes, segmentWords, selectionRects, semanticHorizontalBoundaries, setGraphemeBoundary, setHarfBuzzWasmUrl, sha256FontBytes, shadingFillFromElement, shapedHorizontalBoundaries, storyBlocks, syntheticSeparatorBox, tabLeaderPattern, tableOriginX, tocFieldChromeParagraphIds, tryCreateCanvasMeasurer, utf16OffsetToGrapheme, vectorShapeInkClip, walkStoryParagraphs, wordBoundary, wordSegmentsToGraphemeRecords };
3223
- export type { AutofitFieldContext, AutonumFieldKind, AutonumFieldSpec, CanvasMeasurerOptions, CanvasTextContext, CanvasTextMetrics, CellMarginsPt, CellVerticalAlign, CompoundBorderMetrics, ContentControlFragmentRecord, CreateDocumentFurnitureSourceOptions, CreateDocumentNotesInputOptions, DocumentFurnitureSource, DocumentLinkProjectors, DocumentStyleDependencies, FieldLinkRegistry, GraphemeBoundary, GraphemeSegment, GraphemeWordSegmentRecord, HarfBuzzFaceCacheEvent, HarfBuzzOutlineCacheEvent, HarfBuzzShapeCacheEvent, HarfBuzzShapingErrorCode, HarfBuzzTextShaper, HarfBuzzTextShaperInstrumentation, HarfBuzzTextShaperOptions, HeaderFooterVariantName, KeyedRange, LayoutCacheStats, LayoutScheduler, LayoutSchedulerOptions, LayoutScope, LayoutSession, LayoutSessionStats, LineSegment, ListCounterAdvance, ListCounterState, MaterializationInput, NoteDisplayMark, NoteLayoutFallbackReason, NoteMarkContext, NotePaginationFallbackReason, NoteReferenceSite, NoteSeparatorLayout, NoteSeparatorRuleStyle, NoteStoryDrawings, NoteStoryLayout, NotesAttachResult, NotesLayoutInput, PageFurniture, PageRefIndex, ParagraphKeyInputs, ParagraphLayoutCache, ParagraphLayoutCacheOptions, PreferredWidth, PreferredWidthType, RefFieldRefreshOptions, RegisteredFieldLink, ResolvedSurfaceMeasurer, ReviewParagraphAnchor, SemanticLayoutOptions, SemanticSpanVisit, SemanticTableCell, SemanticTableRow, SemanticTableStructure, StoryProjectionDependencies, TableAlignment, TableAutofitContext, TablePaginationErrorCode, TableRowHeight, TableRowHeightRule, ViewportWindow, WordBoundary, WordBoundaryResolverDeps, WordSegment };
3450
+ /**
3451
+ * The run's ink as one path, or undefined when a glyph has no outline the path grammar can
3452
+ * read, a glyph is missing from the face (`.notdef`), or the path would exceed its budget.
3453
+ * @internal
3454
+ */
3455
+ declare function shapedRunOutline(run: ShapedRun, pointSize: number, fixedPointScale: number): TextOutline | undefined;
3456
+
3457
+ export { AUTO_PREFERRED_WIDTH, AnchoredDrawingRecord, BlockFragmentRecord, CELL_PAD, COMPOUND_BORDER_MIN_GAP_PT, COMPOUND_BORDER_MIN_STROKE_PT, CaretGeometry, CellBorderBox, ContentControlBoundaryRecord$1 as ContentControlBoundaryRecord, DEFAULT_CANVAS_FONT_STACK, DEFAULT_CELL_MARGINS, DrawingInsets, DrawingPoint, FieldLinkProjector, FixedPoint, FixedPointRoundingMode, FontByteValidator, FontSlot, GRAPHEME_SEGMENTER_LOCALE, HARFBUZZ_SHAPING_LIBRARY, HarfBuzzShapingError, HyperlinkFieldSpec, HyperlinkProjector, InlineDrawingRecord, LayoutBox, LineRecord, MAX_EACH_PAGE_MARK_CANDIDATES, MAX_LVL_TEXT_LENGTH, MAX_MARKER_TEXT_LENGTH, MAX_NOTES_LAID_OUT, MAX_NOTE_FRAGMENTS, MAX_NOTE_OVERFLOW_PAGES, MAX_NOTE_REFLOW_ATTEMPTS, MAX_STYLE_BASED_ON_DEPTH, MAX_TABLE_COLUMNS, MAX_TABLE_NESTING, MAX_TABLE_ROW_FRAGMENTS, MAX_TABLE_ROW_HEIGHT_PT, NumberingIndex, NumberingLevel, NumberingLevelIndent, PageBorderFrameRecord, PageGeometry, PageRecord, ParagraphBorderStrokeRecord, ParagraphFragmentRecord, RefFieldContext, ResolvedListItem, ResolvedRunStyle, ReviewItem, RevisionAttribution, RevisionAuthorFilter, RevisionDisplayMode, SYNTHETIC_BOLD_ADVANCE_EM, SectionColumns, SectionPageBorders, SelectionRect, SemanticLayout, SemanticPosition, SemanticRootStoryKind, SemanticSelection, SemanticStoryKind, SemanticStoryVisit, ShapedRun, SourceRange, SpanLinkRecord, StrikeoutStrokePt, StyleCascadeTable, StyleSpanRecord, TableBorderBox, TableBorderSide, TableCellStyleFormatting, TablePaginationError, TextDirection, TextMeasurer, TextOutline, TextShaper, TextboxOwnerRecord, UnsupportedScriptError, VersionedShapingLibrary, WORD_SEGMENTER_LOCALE, anchorLineY, attachNotesToLayout, automaticTextColor, boundedFallbackWordSegments, buildPageRefIndex, clampListValue, compoundBorderStrokesForExtentPt, computeDoubleBorderMetricsPt, computeFootnoteReserves, contentControlAtSemantic, contentControlBoundaries, contentControlHoldingParagraph, contentControlRecordsInPart, createBoundedFallbackWordBoundary, createDefaultWordBoundary, createDocumentFurnitureSource, createDocumentLinkProjectors, createDocumentNotesInput, createDocumentStyleDependencies, createFieldLinkRegistry, createFixedMeasurer, createHarfBuzzTextShaper, createIntlWordBoundary, createLayoutScheduler, createLayoutSession, createListCounterState, createParagraphLayoutCache, defaultNoteSeparatorRuleStyle, deletedTextBoundaries, deriveNoteDisplayMarks, deriveNoteDisplayMarksResolved, documentOrder, documentRelationshipTargetIn, effectiveBorderSide, emptyTocPlaceholderParagraphIds, emptyTocSuppressedResultParagraphIds, everyStoryOrder, expandLvlText, exportSourceRangeOf, filterRefsOnPage, findSeparatorNote, forEachSemanticSpan, formatDecimal, formatDecimalZero, formatLowerLetter, formatLowerRoman, formatNumFmt, formatPageNumber, formatUpperLetter, formatUpperRoman, fragmentOwnsAtomOffset, graphemeBoundaryEpoch, graphemeCount, graphemeOffsetToUtf16, harfBuzzFontValidator, hitTestSemantic, initializeHarfBuzz, intlGraphemeBoundary, isCanvasMeasurementAvailable, isCumulativeGeometryTrustedFromLineOrigin, isGeometryTrustedCaretOffset, isHarfBuzzInitialized, isIntlSegmenterAvailable, isIntlWordSegmenterAvailable, isMarkerOnlySeparatorNote, isWholeGraphemeHorizontalBoundary, itemizeScriptFontSlots, keyedRangeRects, layoutHeaderFooterStory, layoutNoteById, layoutNoteSeparator, layoutNoteStory, layoutSemanticDocument, lineSegments, listMarkerBox, mapSymbolPuaText, mergeListIndent, normalNotesOf, noteDisplayMarkMap, noteLineIdPrefix, noteMarkKey, noteSeparatorAreaBox, noteSeparatorRuleBox, noteStoryBlocks, pageBorderFrame, pageRefPageNumbersFromLayout, pagesToMaterialize, paragraphLayoutKey, paragraphMarkDeleted, paragraphShading, paragraphShadingBox, parseAutonumInstruction, planRefFieldResultRefresh, positionPastDeletion, projectedNoteMarkText, provisionalNoteMarks, readNumPr, readTableStructure, resetGraphemeBoundary, resolveDefaultSurfaceMeasurer, resolveDefaultWordBoundary, resolveOoxmlShadingFill, resolveStrictHexFill, reviewAnchorIndex, reviewItemGeometry, revisionRemovesParagraph, roundFontUnitToFixedPoint, runBorderStrokesForLine, segmentGraphemes, segmentWords, selectionRects, semanticHorizontalBoundaries, setGraphemeBoundary, setHarfBuzzWasmUrl, sha256FontBytes, shadingFillFromElement, shapedHorizontalBoundaries, shapedRunOutline, storyBlocks, styleForFontSlot, syntheticSeparatorBox, tabLeaderPattern, tableOriginX, tocFieldChromeParagraphIds, tryCreateCanvasMeasurer, utf16OffsetToGrapheme, vectorShapeInkClip, walkStoryParagraphs, wordBoundary, wordSegmentsToGraphemeRecords };
3458
+ export type { AutofitFieldContext, AutonumFieldKind, AutonumFieldSpec, BidiEmbeddingLevels, CanvasMeasurerOptions, CanvasTextContext, CanvasTextMetrics, CellMarginsPt, CellVerticalAlign, CompoundBorderMetrics, CompoundBorderStroke, ContentControlFragmentRecord, CreateDocumentFurnitureSourceOptions, CreateDocumentNotesInputOptions, DocumentFurnitureSource, DocumentLinkProjectors, DocumentStyleDependencies, FieldLinkRegistry, GraphemeBoundary, GraphemeSegment, GraphemeWordSegmentRecord, HarfBuzzFaceCacheEvent, HarfBuzzOutlineCacheEvent, HarfBuzzShapeCacheEvent, HarfBuzzShapingErrorCode, HarfBuzzTextShaper, HarfBuzzTextShaperInstrumentation, HarfBuzzTextShaperOptions, HeaderFooterVariantName, KeyedRange, LayoutCacheStats, LayoutScheduler, LayoutSchedulerOptions, LayoutScope, LayoutSession, LayoutSessionStats, LineSegment, ListCounterAdvance, ListCounterState, MaterializationInput, NoteDisplayMark, NoteLayoutFallbackReason, NoteMarkContext, NotePaginationFallbackReason, NoteReferenceSite, NoteSeparatorLayout, NoteSeparatorRuleStyle, NoteStoryDrawings, NoteStoryLayout, NotesAttachResult, NotesLayoutInput, PageFurniture, PageRefIndex, ParagraphKeyInputs, ParagraphLayoutCache, ParagraphLayoutCacheOptions, PreferredWidth, PreferredWidthType, RefFieldRefreshOptions, RegisteredFieldLink, ResolvedSurfaceMeasurer, ReviewParagraphAnchor, ScriptItem, SemanticLayoutOptions, SemanticSpanVisit, SemanticTableCell, SemanticTableRow, SemanticTableStructure, StoryProjectionDependencies, TableAlignment, TableAutofitContext, TablePaginationErrorCode, TableRowHeight, TableRowHeightRule, ViewportWindow, WordBoundary, WordBoundaryResolverDeps, WordSegment };