@docx-editor.dev/core 2.2.1 → 2.3.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 (74) hide show
  1. package/dist/automation.cjs +1 -1
  2. package/dist/automation.d.cts +2 -2
  3. package/dist/automation.d.ts +2 -2
  4. package/dist/automation.js +1 -1
  5. package/dist/binding.cjs +1 -1
  6. package/dist/binding.d.cts +2 -2
  7. package/dist/binding.d.ts +2 -2
  8. package/dist/binding.js +1 -1
  9. package/dist/chunk-2H6LCX4H.js +10 -0
  10. package/dist/chunk-5LFOW7UO.cjs +1 -0
  11. package/dist/chunk-AMLGAD5Q.js +5 -0
  12. package/dist/chunk-G5D7EXZD.js +2 -0
  13. package/dist/chunk-G7Y6EPB2.cjs +12 -0
  14. package/dist/chunk-J6743NQP.cjs +5 -0
  15. package/dist/chunk-JQSVJSR7.js +12 -0
  16. package/dist/chunk-LD4YWMBO.cjs +12 -0
  17. package/dist/chunk-LKWSYFJQ.js +12 -0
  18. package/dist/chunk-QONAJ66B.cjs +10 -0
  19. package/dist/chunk-TDYP32AL.cjs +2 -0
  20. package/dist/chunk-UKI45YR7.cjs +2 -0
  21. package/dist/chunk-XIKXGERI.js +2 -0
  22. package/dist/chunk-YTRVI333.js +1 -0
  23. package/dist/contracts/editor.d.cts +2 -2
  24. package/dist/contracts/editor.d.ts +2 -2
  25. package/dist/contracts/interaction.d.cts +2 -2
  26. package/dist/contracts/interaction.d.ts +2 -2
  27. package/dist/{editor-25RmHnxu.d.cts → editor-BXstgYTp.d.cts} +1 -1
  28. package/dist/{editor-C8oaTHr3.d.ts → editor-BajbOumY.d.ts} +1 -1
  29. package/dist/editor.cjs +1 -1
  30. package/dist/editor.css +2 -0
  31. package/dist/editor.d.cts +9 -9
  32. package/dist/editor.d.ts +9 -9
  33. package/dist/editor.js +1 -1
  34. package/dist/{index-Beyo2mTa.d.cts → index-D67PwDZQ.d.cts} +5 -5
  35. package/dist/{index-BWiuzoVN.d.ts → index-DaJ8nU56.d.ts} +5 -5
  36. package/dist/index.cjs +1 -1
  37. package/dist/index.d.cts +6 -6
  38. package/dist/index.d.ts +6 -6
  39. package/dist/index.js +1 -1
  40. package/dist/layout.cjs +1 -1
  41. package/dist/layout.d.cts +16 -6
  42. package/dist/layout.d.ts +16 -6
  43. package/dist/layout.js +1 -1
  44. package/dist/output.cjs +1 -1
  45. package/dist/output.js +1 -1
  46. package/dist/{protocol-FAz_nPm_.d.cts → protocol-DAs0YOP3.d.cts} +62 -3
  47. package/dist/{protocol-BWVA3Q1p.d.ts → protocol-r6hje8Kf.d.ts} +62 -3
  48. package/dist/{review-reads-D3r3tnoo.d.cts → review-reads-JBOmRH--.d.cts} +8 -1
  49. package/dist/{review-reads-CMAqdMnE.d.ts → review-reads-cgvJLJc2.d.ts} +8 -1
  50. package/dist/{semantic-cell-selection-CI3loBKq.d.cts → semantic-cell-selection-9vfCLkd4.d.cts} +1 -1
  51. package/dist/{semantic-cell-selection-Cx8P64j2.d.ts → semantic-cell-selection-bA5HTLkV.d.ts} +1 -1
  52. package/dist/{semantic-interaction-B4HrJFQ2.d.cts → semantic-interaction-BG0jWJ0I.d.cts} +4 -36
  53. package/dist/{semantic-interaction-unGpRNCk.d.ts → semantic-interaction-lHDX4yIt.d.ts} +4 -36
  54. package/dist/store.cjs +1 -1
  55. package/dist/store.d.cts +33 -25
  56. package/dist/store.d.ts +33 -25
  57. package/dist/store.js +1 -1
  58. package/dist/{tree-session-CMA7n4Rm.d.ts → tree-session-COduYhKr.d.ts} +14 -2
  59. package/dist/{tree-session-Cow6LjPn.d.cts → tree-session-ZpXtFxlP.d.cts} +14 -2
  60. package/package.json +2 -2
  61. package/dist/chunk-2QPRJAHK.js +0 -5
  62. package/dist/chunk-3JENXX7Q.cjs +0 -2
  63. package/dist/chunk-5WEA7SIG.cjs +0 -12
  64. package/dist/chunk-73X5I53C.cjs +0 -2
  65. package/dist/chunk-7D2CP2J7.js +0 -2
  66. package/dist/chunk-C3YJR64Q.cjs +0 -5
  67. package/dist/chunk-EWRKYYUA.js +0 -12
  68. package/dist/chunk-GLHPDILJ.cjs +0 -1
  69. package/dist/chunk-PD4BVZW5.js +0 -12
  70. package/dist/chunk-PEIEVTWR.js +0 -2
  71. package/dist/chunk-QIFQTG57.cjs +0 -10
  72. package/dist/chunk-RFO2O56I.js +0 -10
  73. package/dist/chunk-SAUKKJWZ.cjs +0 -12
  74. package/dist/chunk-WKZR6YPE.js +0 -1
package/dist/layout.d.cts CHANGED
@@ -6,16 +6,16 @@ import { O as OoxmlNode, a as OoxmlElement, e as OoxmlPart } from './ooxml-tree-
6
6
  import { O as OoxmlProperty, C as ContentControlKind, n as ContentControlLevel, o as ContentControlLock, p as ContentControlDataBinding, I as ImpactClass } from './tree-op-types-UOXlRUqQ.cjs';
7
7
  export { l as TableBorderStyle } from './tree-op-types-UOXlRUqQ.cjs';
8
8
  import { N as NoteKind, n as noteTypeOf } from './note-nodes-C6DLxlvj.cjs';
9
- import { R as ResolvedFootnoteProperties, a as ResolvedEndnoteProperties } from './review-reads-D3r3tnoo.cjs';
10
- export { p as paragraphOrderOfPart } from './review-reads-D3r3tnoo.cjs';
9
+ import { R as ResolvedFootnoteProperties, a as ResolvedEndnoteProperties } from './review-reads-JBOmRH--.cjs';
10
+ export { p as paragraphOrderOfPart } from './review-reads-JBOmRH--.cjs';
11
11
  import { R as RevisionDisplayMode } from './revision-projection-72ZApe-g.cjs';
12
12
  export { D as DEFAULT_REVISION_DISPLAY_MODE, a as RevisionAttribution, b as RevisionKind, f as formatRevisionOf, p as paragraphMarkRevisionOf, r as revisionsAreDeletion, c as revisionsVisible } from './revision-projection-72ZApe-g.cjs';
13
- import { a as SectionColumns } from './semantic-cell-selection-CI3loBKq.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-CI3loBKq.cjs';
13
+ import { a as SectionColumns } from './semantic-cell-selection-9vfCLkd4.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-9vfCLkd4.cjs';
15
15
  export { M as MAX_SDT_NESTING, c as collectFlowBlocks, a as contentControlContentChildren, i as isContentControl, b as isContentControlContent } from './content-control-walk-CbTqHq6O.cjs';
16
16
  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 commentBodyText, n as commentInitials, o as firstReviewRange, r as reviewAnchorIndex, p as reviewItemGeometry, q as reviewItemKey, s as reviewItemPositionRank, t as reviewItemRanges, u as reviewItemsAt, v as reviewThreadRootOf } from './review-support-rsyGP5-9.cjs';
17
17
  import { T as TreeModelChange } from './tree-store-B1lEkdXc.cjs';
18
- export { b as CaretAtOptions, C as CaretGeometry, K as KeyedRange, M as MoveCaretOptions, N as NavigationCommand, c as SelectionRect, S as SemanticPosition, a as SemanticSelection, d as caretAt, e as caretStops, f as caretStopsForBlocks, g as compositionAnchor, h as contentControlAtSemantic, i as contentControlsInLayout, j as documentOrder, k as hitTestSemantic, l as keyedRangeRects, m as moveCaret, p as paragraphTextFromLayout, s as selectionRects, n as spansInSelection, w as wordBoundary } from './semantic-interaction-B4HrJFQ2.cjs';
18
+ export { b as CaretAtOptions, C as CaretGeometry, K as KeyedRange, M as MoveCaretOptions, N as NavigationCommand, c as SelectionRect, S as SemanticPosition, a as SemanticSelection, d as caretAt, e as caretStops, f as caretStopsForBlocks, g as compositionAnchor, h as contentControlAtSemantic, i as contentControlsInLayout, j as documentOrder, k as hitTestSemantic, l as keyedRangeRects, m as moveCaret, p as paragraphTextFromLayout, s as selectionRects, n as spansInSelection } from './semantic-interaction-BG0jWJ0I.cjs';
19
19
  import './image-resources-DwpNnTg3.cjs';
20
20
  import './ooxml-package-CR5us6ad.cjs';
21
21
 
@@ -736,6 +736,14 @@ interface CompoundBorderMetrics {
736
736
  */
737
737
  declare function computeDoubleBorderMetricsPt(widthPt: number): CompoundBorderMetrics;
738
738
 
739
+ /**
740
+ * The next word boundary from `offset`, in `direction`.
741
+ *
742
+ * Word-LEFT skips any whitespace immediately behind the caret and then the word behind that,
743
+ * which makes repeated presses walk words rather than alternate with the preceding space.
744
+ */
745
+ declare function wordBoundary(text: string, offset: number, direction: -1 | 1): number;
746
+
739
747
  /**
740
748
  * The exact HarfBuzz build this engine shapes against.
741
749
  *
@@ -1526,6 +1534,8 @@ interface LayoutSession {
1526
1534
  keys: string[];
1527
1535
  /** Geometry and producer of the previous pass; a change to either forces a full pass. */
1528
1536
  context: string;
1537
+ /** Line counter at the start of the previous pass, for translating reused section counts. */
1538
+ startLineCounter: number;
1529
1539
  /**
1530
1540
  * Line counter after the last block of the previous pass.
1531
1541
  *
@@ -2397,4 +2407,4 @@ declare class TablePaginationError extends Error {
2397
2407
  constructor(code: TablePaginationErrorCode, message: string);
2398
2408
  }
2399
2409
 
2400
- 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, type ContentControlFragmentRecord, DEFAULT_CANVAS_FONT_STACK, DEFAULT_CELL_MARGINS, EMPTY_NUMBERING_INDEX, 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, type HyperlinkProjector, LayoutBox, type LayoutCacheStats, type LayoutScheduler, type LayoutSchedulerOptions, type LayoutScope, type LayoutSession, type LayoutSessionStats, type LevelOverride, 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, SemanticLayout, type SemanticLayoutOptions, type SemanticTableCell, type SemanticTableRow, type SemanticTableStructure, ShapedRun, SpanLinkRecord, 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, createBoundedFallbackWordBoundary, createDefaultWordBoundary, createFixedMeasurer, createHarfBuzzTextShaper, createIntlWordBoundary, createLayoutScheduler, createLayoutSession, createListCounterState, createParagraphLayoutCache, defaultNoteSeparatorRuleStyle, deriveNoteDisplayMarks, deriveNoteDisplayMarksResolved, effectiveBorderSide, emptyTocPlaceholderParagraphIds, emptyTocSuppressedResultParagraphIds, expandLvlText, filterRefsOnPage, findSeparatorNote, formatDecimal, formatDecimalZero, formatLowerLetter, formatLowerRoman, formatNumFmt, formatPageNumber, formatUpperLetter, formatUpperRoman, fragmentOwnsAtomOffset, graphemeBoundaryEpoch, graphemeCount, graphemeOffsetToUtf16, harfBuzzFontValidator, initializeHarfBuzz, intlGraphemeBoundary, isCanvasMeasurementAvailable, isCumulativeGeometryTrustedFromLineOrigin, isGeometryTrustedCaretOffset, isHarfBuzzInitialized, isIntlSegmenterAvailable, isIntlWordSegmenterAvailable, isMarkerOnlySeparatorNote, isValidStyleId, isWholeGraphemeHorizontalBoundary, itemizeScriptFontSlots, layoutHeaderFooterStory, layoutNoteById, layoutNoteSeparator, layoutNoteStory, layoutSemanticDocument, listMarkerBox, mergeListIndent, normalNotesOf, noteDisplayMarkMap, noteLineIdPrefix, noteMarkKey, noteSeparatorAreaBox, noteStoryBlocks, pagesToMaterialize, paragraphLayoutKey, paragraphMarkDeleted, paragraphShading, paragraphShadingBox, projectedNoteMarkText, provisionalNoteMarks, readNumPr, readTableStructure, resetGraphemeBoundary, resolveDefaultSurfaceMeasurer, resolveDefaultWordBoundary, resolveNumberingLevel, resolveOoxmlShadingFill, resolveParagraphLayoutInputs, resolveStoryListItems, resolveStrictHexFill, revisionRemovesParagraph, roundFontUnitToFixedPoint, segmentGraphemes, segmentWords, semanticHorizontalBoundaries, setGraphemeBoundary, shadingFillFromElement, shapedHorizontalBoundaries, storyBlocks, syntheticSeparatorBox, tableOriginX, tocFieldChromeParagraphIds, tryCreateCanvasMeasurer, utf16OffsetToGrapheme, walkStoryParagraphs, withNumberingStyleLinks, withResolvedListItems, wordSegmentsToGraphemeRecords };
2410
+ 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, type ContentControlFragmentRecord, DEFAULT_CANVAS_FONT_STACK, DEFAULT_CELL_MARGINS, EMPTY_NUMBERING_INDEX, 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, type HyperlinkProjector, LayoutBox, type LayoutCacheStats, type LayoutScheduler, type LayoutSchedulerOptions, type LayoutScope, type LayoutSession, type LayoutSessionStats, type LevelOverride, 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, SemanticLayout, type SemanticLayoutOptions, type SemanticTableCell, type SemanticTableRow, type SemanticTableStructure, ShapedRun, SpanLinkRecord, 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, createBoundedFallbackWordBoundary, createDefaultWordBoundary, createFixedMeasurer, createHarfBuzzTextShaper, createIntlWordBoundary, createLayoutScheduler, createLayoutSession, createListCounterState, createParagraphLayoutCache, defaultNoteSeparatorRuleStyle, deriveNoteDisplayMarks, deriveNoteDisplayMarksResolved, effectiveBorderSide, emptyTocPlaceholderParagraphIds, emptyTocSuppressedResultParagraphIds, expandLvlText, filterRefsOnPage, findSeparatorNote, formatDecimal, formatDecimalZero, formatLowerLetter, formatLowerRoman, formatNumFmt, formatPageNumber, formatUpperLetter, formatUpperRoman, fragmentOwnsAtomOffset, graphemeBoundaryEpoch, graphemeCount, graphemeOffsetToUtf16, harfBuzzFontValidator, initializeHarfBuzz, intlGraphemeBoundary, isCanvasMeasurementAvailable, isCumulativeGeometryTrustedFromLineOrigin, isGeometryTrustedCaretOffset, isHarfBuzzInitialized, isIntlSegmenterAvailable, isIntlWordSegmenterAvailable, isMarkerOnlySeparatorNote, isValidStyleId, isWholeGraphemeHorizontalBoundary, itemizeScriptFontSlots, layoutHeaderFooterStory, layoutNoteById, layoutNoteSeparator, layoutNoteStory, layoutSemanticDocument, listMarkerBox, mergeListIndent, normalNotesOf, noteDisplayMarkMap, noteLineIdPrefix, noteMarkKey, noteSeparatorAreaBox, noteStoryBlocks, pagesToMaterialize, paragraphLayoutKey, paragraphMarkDeleted, paragraphShading, paragraphShadingBox, projectedNoteMarkText, provisionalNoteMarks, readNumPr, readTableStructure, resetGraphemeBoundary, resolveDefaultSurfaceMeasurer, resolveDefaultWordBoundary, resolveNumberingLevel, resolveOoxmlShadingFill, resolveParagraphLayoutInputs, resolveStoryListItems, resolveStrictHexFill, revisionRemovesParagraph, roundFontUnitToFixedPoint, segmentGraphemes, segmentWords, semanticHorizontalBoundaries, setGraphemeBoundary, shadingFillFromElement, shapedHorizontalBoundaries, storyBlocks, syntheticSeparatorBox, tableOriginX, tocFieldChromeParagraphIds, tryCreateCanvasMeasurer, utf16OffsetToGrapheme, walkStoryParagraphs, withNumberingStyleLinks, withResolvedListItems, wordBoundary, wordSegmentsToGraphemeRecords };
package/dist/layout.d.ts CHANGED
@@ -6,16 +6,16 @@ import { O as OoxmlNode, a as OoxmlElement, e as OoxmlPart } from './ooxml-tree-
6
6
  import { O as OoxmlProperty, C as ContentControlKind, n as ContentControlLevel, o as ContentControlLock, p as ContentControlDataBinding, I as ImpactClass } from './tree-op-types-DWLCllG7.js';
7
7
  export { l as TableBorderStyle } from './tree-op-types-DWLCllG7.js';
8
8
  import { N as NoteKind, n as noteTypeOf } from './note-nodes-BPSTVDMr.js';
9
- import { R as ResolvedFootnoteProperties, a as ResolvedEndnoteProperties } from './review-reads-CMAqdMnE.js';
10
- export { p as paragraphOrderOfPart } from './review-reads-CMAqdMnE.js';
9
+ import { R as ResolvedFootnoteProperties, a as ResolvedEndnoteProperties } from './review-reads-cgvJLJc2.js';
10
+ export { p as paragraphOrderOfPart } from './review-reads-cgvJLJc2.js';
11
11
  import { R as RevisionDisplayMode } from './revision-projection-DHAkcD_L.js';
12
12
  export { D as DEFAULT_REVISION_DISPLAY_MODE, a as RevisionAttribution, b as RevisionKind, f as formatRevisionOf, p as paragraphMarkRevisionOf, r as revisionsAreDeletion, c as revisionsVisible } from './revision-projection-DHAkcD_L.js';
13
- import { a as SectionColumns } from './semantic-cell-selection-Cx8P64j2.js';
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-Cx8P64j2.js';
13
+ import { a as SectionColumns } from './semantic-cell-selection-bA5HTLkV.js';
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-bA5HTLkV.js';
15
15
  export { M as MAX_SDT_NESTING, c as collectFlowBlocks, a as contentControlContentChildren, i as isContentControl, b as isContentControlContent } from './content-control-walk-D06GijR0.js';
16
16
  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 commentBodyText, n as commentInitials, o as firstReviewRange, r as reviewAnchorIndex, p as reviewItemGeometry, q as reviewItemKey, s as reviewItemPositionRank, t as reviewItemRanges, u as reviewItemsAt, v as reviewThreadRootOf } from './review-support-B9ykYpoZ.js';
17
17
  import { T as TreeModelChange } from './tree-store-BscFPB7x.js';
18
- export { b as CaretAtOptions, C as CaretGeometry, K as KeyedRange, M as MoveCaretOptions, N as NavigationCommand, c as SelectionRect, S as SemanticPosition, a as SemanticSelection, d as caretAt, e as caretStops, f as caretStopsForBlocks, g as compositionAnchor, h as contentControlAtSemantic, i as contentControlsInLayout, j as documentOrder, k as hitTestSemantic, l as keyedRangeRects, m as moveCaret, p as paragraphTextFromLayout, s as selectionRects, n as spansInSelection, w as wordBoundary } from './semantic-interaction-unGpRNCk.js';
18
+ export { b as CaretAtOptions, C as CaretGeometry, K as KeyedRange, M as MoveCaretOptions, N as NavigationCommand, c as SelectionRect, S as SemanticPosition, a as SemanticSelection, d as caretAt, e as caretStops, f as caretStopsForBlocks, g as compositionAnchor, h as contentControlAtSemantic, i as contentControlsInLayout, j as documentOrder, k as hitTestSemantic, l as keyedRangeRects, m as moveCaret, p as paragraphTextFromLayout, s as selectionRects, n as spansInSelection } from './semantic-interaction-lHDX4yIt.js';
19
19
  import './image-resources-C_YnqPhn.js';
20
20
  import './ooxml-package-D_CtywTW.js';
21
21
 
@@ -736,6 +736,14 @@ interface CompoundBorderMetrics {
736
736
  */
737
737
  declare function computeDoubleBorderMetricsPt(widthPt: number): CompoundBorderMetrics;
738
738
 
739
+ /**
740
+ * The next word boundary from `offset`, in `direction`.
741
+ *
742
+ * Word-LEFT skips any whitespace immediately behind the caret and then the word behind that,
743
+ * which makes repeated presses walk words rather than alternate with the preceding space.
744
+ */
745
+ declare function wordBoundary(text: string, offset: number, direction: -1 | 1): number;
746
+
739
747
  /**
740
748
  * The exact HarfBuzz build this engine shapes against.
741
749
  *
@@ -1526,6 +1534,8 @@ interface LayoutSession {
1526
1534
  keys: string[];
1527
1535
  /** Geometry and producer of the previous pass; a change to either forces a full pass. */
1528
1536
  context: string;
1537
+ /** Line counter at the start of the previous pass, for translating reused section counts. */
1538
+ startLineCounter: number;
1529
1539
  /**
1530
1540
  * Line counter after the last block of the previous pass.
1531
1541
  *
@@ -2397,4 +2407,4 @@ declare class TablePaginationError extends Error {
2397
2407
  constructor(code: TablePaginationErrorCode, message: string);
2398
2408
  }
2399
2409
 
2400
- 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, type ContentControlFragmentRecord, DEFAULT_CANVAS_FONT_STACK, DEFAULT_CELL_MARGINS, EMPTY_NUMBERING_INDEX, 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, type HyperlinkProjector, LayoutBox, type LayoutCacheStats, type LayoutScheduler, type LayoutSchedulerOptions, type LayoutScope, type LayoutSession, type LayoutSessionStats, type LevelOverride, 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, SemanticLayout, type SemanticLayoutOptions, type SemanticTableCell, type SemanticTableRow, type SemanticTableStructure, ShapedRun, SpanLinkRecord, 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, createBoundedFallbackWordBoundary, createDefaultWordBoundary, createFixedMeasurer, createHarfBuzzTextShaper, createIntlWordBoundary, createLayoutScheduler, createLayoutSession, createListCounterState, createParagraphLayoutCache, defaultNoteSeparatorRuleStyle, deriveNoteDisplayMarks, deriveNoteDisplayMarksResolved, effectiveBorderSide, emptyTocPlaceholderParagraphIds, emptyTocSuppressedResultParagraphIds, expandLvlText, filterRefsOnPage, findSeparatorNote, formatDecimal, formatDecimalZero, formatLowerLetter, formatLowerRoman, formatNumFmt, formatPageNumber, formatUpperLetter, formatUpperRoman, fragmentOwnsAtomOffset, graphemeBoundaryEpoch, graphemeCount, graphemeOffsetToUtf16, harfBuzzFontValidator, initializeHarfBuzz, intlGraphemeBoundary, isCanvasMeasurementAvailable, isCumulativeGeometryTrustedFromLineOrigin, isGeometryTrustedCaretOffset, isHarfBuzzInitialized, isIntlSegmenterAvailable, isIntlWordSegmenterAvailable, isMarkerOnlySeparatorNote, isValidStyleId, isWholeGraphemeHorizontalBoundary, itemizeScriptFontSlots, layoutHeaderFooterStory, layoutNoteById, layoutNoteSeparator, layoutNoteStory, layoutSemanticDocument, listMarkerBox, mergeListIndent, normalNotesOf, noteDisplayMarkMap, noteLineIdPrefix, noteMarkKey, noteSeparatorAreaBox, noteStoryBlocks, pagesToMaterialize, paragraphLayoutKey, paragraphMarkDeleted, paragraphShading, paragraphShadingBox, projectedNoteMarkText, provisionalNoteMarks, readNumPr, readTableStructure, resetGraphemeBoundary, resolveDefaultSurfaceMeasurer, resolveDefaultWordBoundary, resolveNumberingLevel, resolveOoxmlShadingFill, resolveParagraphLayoutInputs, resolveStoryListItems, resolveStrictHexFill, revisionRemovesParagraph, roundFontUnitToFixedPoint, segmentGraphemes, segmentWords, semanticHorizontalBoundaries, setGraphemeBoundary, shadingFillFromElement, shapedHorizontalBoundaries, storyBlocks, syntheticSeparatorBox, tableOriginX, tocFieldChromeParagraphIds, tryCreateCanvasMeasurer, utf16OffsetToGrapheme, walkStoryParagraphs, withNumberingStyleLinks, withResolvedListItems, wordSegmentsToGraphemeRecords };
2410
+ 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, type ContentControlFragmentRecord, DEFAULT_CANVAS_FONT_STACK, DEFAULT_CELL_MARGINS, EMPTY_NUMBERING_INDEX, 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, type HyperlinkProjector, LayoutBox, type LayoutCacheStats, type LayoutScheduler, type LayoutSchedulerOptions, type LayoutScope, type LayoutSession, type LayoutSessionStats, type LevelOverride, 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, SemanticLayout, type SemanticLayoutOptions, type SemanticTableCell, type SemanticTableRow, type SemanticTableStructure, ShapedRun, SpanLinkRecord, 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, createBoundedFallbackWordBoundary, createDefaultWordBoundary, createFixedMeasurer, createHarfBuzzTextShaper, createIntlWordBoundary, createLayoutScheduler, createLayoutSession, createListCounterState, createParagraphLayoutCache, defaultNoteSeparatorRuleStyle, deriveNoteDisplayMarks, deriveNoteDisplayMarksResolved, effectiveBorderSide, emptyTocPlaceholderParagraphIds, emptyTocSuppressedResultParagraphIds, expandLvlText, filterRefsOnPage, findSeparatorNote, formatDecimal, formatDecimalZero, formatLowerLetter, formatLowerRoman, formatNumFmt, formatPageNumber, formatUpperLetter, formatUpperRoman, fragmentOwnsAtomOffset, graphemeBoundaryEpoch, graphemeCount, graphemeOffsetToUtf16, harfBuzzFontValidator, initializeHarfBuzz, intlGraphemeBoundary, isCanvasMeasurementAvailable, isCumulativeGeometryTrustedFromLineOrigin, isGeometryTrustedCaretOffset, isHarfBuzzInitialized, isIntlSegmenterAvailable, isIntlWordSegmenterAvailable, isMarkerOnlySeparatorNote, isValidStyleId, isWholeGraphemeHorizontalBoundary, itemizeScriptFontSlots, layoutHeaderFooterStory, layoutNoteById, layoutNoteSeparator, layoutNoteStory, layoutSemanticDocument, listMarkerBox, mergeListIndent, normalNotesOf, noteDisplayMarkMap, noteLineIdPrefix, noteMarkKey, noteSeparatorAreaBox, noteStoryBlocks, pagesToMaterialize, paragraphLayoutKey, paragraphMarkDeleted, paragraphShading, paragraphShadingBox, projectedNoteMarkText, provisionalNoteMarks, readNumPr, readTableStructure, resetGraphemeBoundary, resolveDefaultSurfaceMeasurer, resolveDefaultWordBoundary, resolveNumberingLevel, resolveOoxmlShadingFill, resolveParagraphLayoutInputs, resolveStoryListItems, resolveStrictHexFill, revisionRemovesParagraph, roundFontUnitToFixedPoint, segmentGraphemes, segmentWords, semanticHorizontalBoundaries, setGraphemeBoundary, shadingFillFromElement, shapedHorizontalBoundaries, storyBlocks, syntheticSeparatorBox, tableOriginX, tocFieldChromeParagraphIds, tryCreateCanvasMeasurer, utf16OffsetToGrapheme, walkStoryParagraphs, withNumberingStyleLinks, withResolvedListItems, wordBoundary, wordSegmentsToGraphemeRecords };
package/dist/layout.js CHANGED
@@ -1 +1 @@
1
- export{fa as AUTO_PARAGRAPH_SPACING_PT,Hb as AUTO_PREFERRED_WIDTH,Jb as CELL_PAD,$ as COMPOUND_BORDER_MIN_GAP_PT,_ as COMPOUND_BORDER_MIN_STROKE_PT,gd as DEFAULT_CANVAS_FONT_STACK,Lb as DEFAULT_CELL_MARGINS,Q as DEFAULT_PAGE_GEOMETRY,cb as DEFAULT_REVISION_DISPLAY_MODE,Ya as DEFAULT_RUN_STYLE,yc as DEFAULT_SECTION_PROPERTIES,Ca as DEFAULT_TAB_INTERVAL_PT,Ba as DEFAULT_TAB_INTERVAL_TWIPS,$b as DEFAULT_VERTICAL_WEIGHT,Sb as EMPTY_NUMBERING_INDEX,Ea as EMPTY_TAB_STOPS,p as GRAPHEME_SEGMENTER_LOCALE,g as HARFBUZZ_SHAPING_LIBRARY,j as HarfBuzzShapingError,ea as MAX_BORDER_SPACE_PT,da as MAX_BORDER_WIDTH_PT,xc as MAX_DOCUMENT_SECTIONS,Xc as MAX_EACH_PAGE_MARK_CANDIDATES,Pb as MAX_LVL_OVERRIDES,Na as MAX_LVL_TEXT_LENGTH,Ma as MAX_MARKER_TEXT_LENGTH,Jc as MAX_NOTES_LAID_OUT,Kc as MAX_NOTE_FRAGMENTS,Wc as MAX_NOTE_OVERFLOW_PAGES,Vc as MAX_NOTE_REFLOW_ATTEMPTS,Ob as MAX_NUMBERING_DEFINITIONS,ca as MAX_PARAGRAPH_SPACING_PT,ob as MAX_STYLE_BASED_ON_DEPTH,pb as MAX_STYLE_DEFINITIONS,zb as MAX_TABLE_BORDER_STROKES,Ib as MAX_TABLE_NESTING,pc as MAX_TABLE_ROW_FRAGMENTS,Kb as MAX_TABLE_ROW_HEIGHT_PT,Aa as MAX_TAB_POSITION_TWIPS,za as MAX_TAB_STOPS,ha as PARAGRAPH_BORDER_SIDES,P as ResolvedCache,ga as SINGLE_LINE_SPACING,Da as TAB_LEADER_GLYPH,qc as TablePaginationError,n as UnsupportedScriptError,E as WORD_SEGMENTER_LOCALE,ta as appliedSpaceBefore,ka as applyLineSpacing,ad as attachNotesToLayout,bb as baselineShiftPtOf,Gb as borderExtentPt,Db as borderWeight,qa as bottomBorderExtentPt,H as boundedFallbackWordSegments,Qb as buildNumberingIndex,Zc as buildPageRefIndex,rb as buildStyleCascadeTable,N as captureOperationSnapshot,qd as caretAt,ic as caretBoxOnLine,od as caretStops,pd as caretStopsForBlocks,sb as cascadeParagraphFormatting,ub as cascadeRunProperties,tb as cascadedBottomBorder,na as cascadedParagraphBorders,Fa as cascadedTabStops,Cd as cellSelectionBetween,Fd as cellSelectionRects,Gd as cellSelectionText,Oa as clampListValue,sa as collapsedSpaceBefore,Ad as compositionAnchor,aa as computeDoubleBorderMetricsPt,$c as computeFootnoteReserves,fc as contentControlAtPoint,sd as contentControlAtSemantic,kd as contentControlBoundaries,td as contentControlsInLayout,X as contentControlsOfLayout,I as createBoundedFallbackWordBoundary,J as createDefaultWordBoundary,ed as createFixedMeasurer,m as createHarfBuzzTextShaper,G as createIntlWordBoundary,nd as createLayoutScheduler,dd as createLayoutSession,Tb as createListCounterState,kb as createParagraphLayoutCache,ld as createShapedMeasurer,e as createShapedRun,b as createShapingEnvironment,Qc as defaultNoteSeparatorRuleStyle,Ia as defaultTabIntervalFromSettings,Gc as deriveNoteDisplayMarks,Hc as deriveNoteDisplayMarksResolved,_a as displayText,wd as documentOrder,yb as effectiveBorderSide,Z as effectiveContentControlLock,vc as emptyTocPlaceholderParagraphIds,wc as emptyTocSuppressedResultParagraphIds,Dc as enumerateDocumentSections,Ec as enumerateDocumentSectionsBounded,Wa as expandLvlText,_c as filterRefsOnPage,jc as findDrawingOverlayFrameInLayout,Nc as findSeparatorNote,a as fixedPoint,Pa as formatDecimal,Qa as formatDecimalZero,Ua as formatLowerLetter,Sa as formatLowerRoman,Va as formatNumFmt,Xa as formatPageNumber,fb as formatRevisionOf,Ta as formatUpperLetter,Ra as formatUpperRoman,Yc as fragmentOwnsAtomOffset,V as fragmentsOfParagraph,Fc as geometryOfSection,s as graphemeBoundaryEpoch,w as graphemeCount,y as graphemeOffsetToUtf16,O as guardOperationSnapshot,k as harfBuzzFontValidator,cc as hitTestPage,rd as hitTestSemantic,ec as hitTestSheet,h as initializeHarfBuzz,r as intlGraphemeBoundary,hd as isCanvasMeasurementAvailable,C as isCumulativeGeometryTrustedFromLineOrigin,bc as isFurniturePoint,B as isGeometryTrustedCaretOffset,i as isHarfBuzzInitialized,q as isIntlSegmenterAvailable,F as isIntlWordSegmenterAvailable,Rc as isMarkerOnlySeparatorNote,qb as isValidStyleId,A as isWholeGraphemeHorizontalBoundary,o as itemizeScriptFontSlots,vd as keyedRangeRects,cd as layoutHeaderFooterStory,Pc as layoutNoteById,Sc as layoutNoteSeparator,Oc as layoutNoteStory,fd as layoutSemanticDocument,W as lineAtPosition,gc as lineEndOffset,T as linesOf,_b as listMarkerBox,$a as measureDisplayText,Wb as mergeListIndent,zd as moveCaret,Ja as nextTabDestination,Mc as normalNotesOf,Ic as noteDisplayMarkMap,Lc as noteLineIdPrefix,hb as noteMarkKey,Uc as noteSeparatorAreaBox,sc as noteStoryBlocks,ac as pageAtY,md as pagesToMaterialize,pa as paragraphBorderExtentPt,oa as paragraphBorderStrokeWidthPt,ma as paragraphBorders,ra as paragraphBordersFingerprint,ba as paragraphBreaksBefore,la as paragraphContextualSpacing,R as paragraphFragmentsOf,S as paragraphFragmentsOfBlocks,jb as paragraphLayoutKey,ja as paragraphLineSpacing,wb as paragraphMarkDeleted,eb as paragraphMarkRevisionOf,Bc as paragraphSectionNode,xa as paragraphShading,ya as paragraphShadingBox,ia as paragraphSpacing,Ga as paragraphTabStops,xd as paragraphTextFromLayout,Dd as paragraphsInCells,zc as parsePageNumbering,Ac as parseSectionProperties,ib as projectedNoteMarkText,bd as provisionalNoteMarks,Ab as readBorderSide,Cb as readCellBorders,Ub as readNumPr,Cc as readSectionProperties,Bb as readTableBorders,Nb as readTableStructure,v as resetGraphemeBoundary,Eb as resolveBorderConflict,jd as resolveDefaultSurfaceMeasurer,K as resolveDefaultWordBoundary,Rb as resolveNumberingLevel,va as resolveOoxmlShadingFill,vb as resolveParagraphLayoutInputs,Za as resolveRunStyle,Yb as resolveStoryListItems,ua as resolveStrictHexFill,Fb as resolveTableCellBorderGrid,xb as revisionRemovesParagraph,gb as revisionsAreDeletion,db as revisionsVisible,l as roundFontUnitToFixedPoint,ab as runStylesEqual,t as segmentGraphemes,L as segmentWords,ud as selectionRects,D as semanticHorizontalBoundaries,u as setGraphemeBoundary,wa as shadingFillFromElement,z as shapedHorizontalBoundaries,f as shapedRunComparatorInputs,d as shapingEnvironmentFingerprint,c as shapingEnvironmentFingerprintInputs,hc as spanOffsetX,Ed as spansInCells,Bd as spansInSelection,rc as storyBlocks,Tc as syntheticSeparatorBox,Ka as tabAdvanceWidth,La as tabStopsFingerprint,Hd as tableContextAt,Mb as tableOriginX,uc as tocFieldChromeParagraphIds,id as tryCreateCanvasMeasurer,Y as unionLayoutBoxes,x as utf16OffsetToGrapheme,Xb as walkStoryParagraphs,Ha as withDefaultTabInterval,Vb as withNumberingStyleLinks,Zb as withResolvedListItems,yd as wordBoundary,M as wordSegmentsToGraphemeRecords}from'./chunk-EWRKYYUA.js';export{a as W15_NAMESPACE_URI,i as activeReviewItem,c as commentBodyText,d as commentInitials,f as firstReviewRange,k as reviewAnchorIndex,l as reviewItemGeometry,b as reviewItemKey,g as reviewItemPositionRank,e as reviewItemRanges,h as reviewItemsAt,j as reviewThreadRootOf}from'./chunk-4WWEDTTE.js';import'./chunk-PEIEVTWR.js';export{d as FontResolutionError,c as HARD_MAX_AGGREGATE_FONT_BYTES,a as HARD_MAX_FONT_BYTES,b as HARD_MAX_FONT_SOURCES,Ib as MAX_SDT_NESTING,hf as MAX_TABLE_COLUMNS,j as boundedStructuralFontValidator,Nb as collectFlowBlocks,Mb as contentControlContentChildren,k as createFontResourceSnapshot,e as fontRequestKey,Jb as isContentControl,Kb as isContentControlContent,hg as paragraphOrderOfPart,i as sha256FontBytes}from'./chunk-RFO2O56I.js';
1
+ export{fa as AUTO_PARAGRAPH_SPACING_PT,Hb as AUTO_PREFERRED_WIDTH,Jb as CELL_PAD,$ as COMPOUND_BORDER_MIN_GAP_PT,_ as COMPOUND_BORDER_MIN_STROKE_PT,gd as DEFAULT_CANVAS_FONT_STACK,Lb as DEFAULT_CELL_MARGINS,Q as DEFAULT_PAGE_GEOMETRY,cb as DEFAULT_REVISION_DISPLAY_MODE,Ya as DEFAULT_RUN_STYLE,yc as DEFAULT_SECTION_PROPERTIES,Ca as DEFAULT_TAB_INTERVAL_PT,Ba as DEFAULT_TAB_INTERVAL_TWIPS,$b as DEFAULT_VERTICAL_WEIGHT,Sb as EMPTY_NUMBERING_INDEX,Ea as EMPTY_TAB_STOPS,p as GRAPHEME_SEGMENTER_LOCALE,g as HARFBUZZ_SHAPING_LIBRARY,j as HarfBuzzShapingError,ea as MAX_BORDER_SPACE_PT,da as MAX_BORDER_WIDTH_PT,xc as MAX_DOCUMENT_SECTIONS,Xc as MAX_EACH_PAGE_MARK_CANDIDATES,Pb as MAX_LVL_OVERRIDES,Na as MAX_LVL_TEXT_LENGTH,Ma as MAX_MARKER_TEXT_LENGTH,Jc as MAX_NOTES_LAID_OUT,Kc as MAX_NOTE_FRAGMENTS,Wc as MAX_NOTE_OVERFLOW_PAGES,Vc as MAX_NOTE_REFLOW_ATTEMPTS,Ob as MAX_NUMBERING_DEFINITIONS,ca as MAX_PARAGRAPH_SPACING_PT,ob as MAX_STYLE_BASED_ON_DEPTH,pb as MAX_STYLE_DEFINITIONS,zb as MAX_TABLE_BORDER_STROKES,Ib as MAX_TABLE_NESTING,pc as MAX_TABLE_ROW_FRAGMENTS,Kb as MAX_TABLE_ROW_HEIGHT_PT,Aa as MAX_TAB_POSITION_TWIPS,za as MAX_TAB_STOPS,ha as PARAGRAPH_BORDER_SIDES,P as ResolvedCache,ga as SINGLE_LINE_SPACING,Da as TAB_LEADER_GLYPH,qc as TablePaginationError,n as UnsupportedScriptError,E as WORD_SEGMENTER_LOCALE,ta as appliedSpaceBefore,ka as applyLineSpacing,ad as attachNotesToLayout,bb as baselineShiftPtOf,Gb as borderExtentPt,Db as borderWeight,qa as bottomBorderExtentPt,H as boundedFallbackWordSegments,Qb as buildNumberingIndex,Zc as buildPageRefIndex,rb as buildStyleCascadeTable,N as captureOperationSnapshot,rd as caretAt,ic as caretBoxOnLine,pd as caretStops,qd as caretStopsForBlocks,sb as cascadeParagraphFormatting,ub as cascadeRunProperties,tb as cascadedBottomBorder,na as cascadedParagraphBorders,Fa as cascadedTabStops,Cd as cellSelectionBetween,Fd as cellSelectionRects,Gd as cellSelectionText,Oa as clampListValue,sa as collapsedSpaceBefore,Ad as compositionAnchor,aa as computeDoubleBorderMetricsPt,$c as computeFootnoteReserves,fc as contentControlAtPoint,td as contentControlAtSemantic,kd as contentControlBoundaries,ud as contentControlsInLayout,X as contentControlsOfLayout,I as createBoundedFallbackWordBoundary,J as createDefaultWordBoundary,ed as createFixedMeasurer,m as createHarfBuzzTextShaper,G as createIntlWordBoundary,nd as createLayoutScheduler,dd as createLayoutSession,Tb as createListCounterState,kb as createParagraphLayoutCache,ld as createShapedMeasurer,e as createShapedRun,b as createShapingEnvironment,Qc as defaultNoteSeparatorRuleStyle,Ia as defaultTabIntervalFromSettings,Gc as deriveNoteDisplayMarks,Hc as deriveNoteDisplayMarksResolved,_a as displayText,xd as documentOrder,yb as effectiveBorderSide,Z as effectiveContentControlLock,vc as emptyTocPlaceholderParagraphIds,wc as emptyTocSuppressedResultParagraphIds,Dc as enumerateDocumentSections,Ec as enumerateDocumentSectionsBounded,Wa as expandLvlText,_c as filterRefsOnPage,jc as findDrawingOverlayFrameInLayout,Nc as findSeparatorNote,a as fixedPoint,Pa as formatDecimal,Qa as formatDecimalZero,Ua as formatLowerLetter,Sa as formatLowerRoman,Va as formatNumFmt,Xa as formatPageNumber,fb as formatRevisionOf,Ta as formatUpperLetter,Ra as formatUpperRoman,Yc as fragmentOwnsAtomOffset,V as fragmentsOfParagraph,Fc as geometryOfSection,s as graphemeBoundaryEpoch,w as graphemeCount,y as graphemeOffsetToUtf16,O as guardOperationSnapshot,k as harfBuzzFontValidator,cc as hitTestPage,sd as hitTestSemantic,ec as hitTestSheet,h as initializeHarfBuzz,r as intlGraphemeBoundary,hd as isCanvasMeasurementAvailable,C as isCumulativeGeometryTrustedFromLineOrigin,bc as isFurniturePoint,B as isGeometryTrustedCaretOffset,i as isHarfBuzzInitialized,q as isIntlSegmenterAvailable,F as isIntlWordSegmenterAvailable,Rc as isMarkerOnlySeparatorNote,qb as isValidStyleId,A as isWholeGraphemeHorizontalBoundary,o as itemizeScriptFontSlots,wd as keyedRangeRects,cd as layoutHeaderFooterStory,Pc as layoutNoteById,Sc as layoutNoteSeparator,Oc as layoutNoteStory,fd as layoutSemanticDocument,W as lineAtPosition,gc as lineEndOffset,T as linesOf,_b as listMarkerBox,$a as measureDisplayText,Wb as mergeListIndent,zd as moveCaret,Ja as nextTabDestination,Mc as normalNotesOf,Ic as noteDisplayMarkMap,Lc as noteLineIdPrefix,hb as noteMarkKey,Uc as noteSeparatorAreaBox,sc as noteStoryBlocks,ac as pageAtY,md as pagesToMaterialize,pa as paragraphBorderExtentPt,oa as paragraphBorderStrokeWidthPt,ma as paragraphBorders,ra as paragraphBordersFingerprint,ba as paragraphBreaksBefore,la as paragraphContextualSpacing,R as paragraphFragmentsOf,S as paragraphFragmentsOfBlocks,jb as paragraphLayoutKey,ja as paragraphLineSpacing,wb as paragraphMarkDeleted,eb as paragraphMarkRevisionOf,Bc as paragraphSectionNode,xa as paragraphShading,ya as paragraphShadingBox,ia as paragraphSpacing,Ga as paragraphTabStops,yd as paragraphTextFromLayout,Dd as paragraphsInCells,zc as parsePageNumbering,Ac as parseSectionProperties,ib as projectedNoteMarkText,bd as provisionalNoteMarks,Ab as readBorderSide,Cb as readCellBorders,Ub as readNumPr,Cc as readSectionProperties,Bb as readTableBorders,Nb as readTableStructure,v as resetGraphemeBoundary,Eb as resolveBorderConflict,jd as resolveDefaultSurfaceMeasurer,K as resolveDefaultWordBoundary,Rb as resolveNumberingLevel,va as resolveOoxmlShadingFill,vb as resolveParagraphLayoutInputs,Za as resolveRunStyle,Yb as resolveStoryListItems,ua as resolveStrictHexFill,Fb as resolveTableCellBorderGrid,xb as revisionRemovesParagraph,gb as revisionsAreDeletion,db as revisionsVisible,l as roundFontUnitToFixedPoint,ab as runStylesEqual,t as segmentGraphemes,L as segmentWords,vd as selectionRects,D as semanticHorizontalBoundaries,u as setGraphemeBoundary,wa as shadingFillFromElement,z as shapedHorizontalBoundaries,f as shapedRunComparatorInputs,d as shapingEnvironmentFingerprint,c as shapingEnvironmentFingerprintInputs,hc as spanOffsetX,Ed as spansInCells,Bd as spansInSelection,rc as storyBlocks,Tc as syntheticSeparatorBox,Ka as tabAdvanceWidth,La as tabStopsFingerprint,Hd as tableContextAt,Mb as tableOriginX,uc as tocFieldChromeParagraphIds,id as tryCreateCanvasMeasurer,Y as unionLayoutBoxes,x as utf16OffsetToGrapheme,Xb as walkStoryParagraphs,Ha as withDefaultTabInterval,Vb as withNumberingStyleLinks,Zb as withResolvedListItems,od as wordBoundary,M as wordSegmentsToGraphemeRecords}from'./chunk-LKWSYFJQ.js';export{a as W15_NAMESPACE_URI,i as activeReviewItem,c as commentBodyText,d as commentInitials,f as firstReviewRange,k as reviewAnchorIndex,l as reviewItemGeometry,b as reviewItemKey,g as reviewItemPositionRank,e as reviewItemRanges,h as reviewItemsAt,j as reviewThreadRootOf}from'./chunk-4WWEDTTE.js';import'./chunk-G5D7EXZD.js';export{d as FontResolutionError,c as HARD_MAX_AGGREGATE_FONT_BYTES,a as HARD_MAX_FONT_BYTES,b as HARD_MAX_FONT_SOURCES,Jb as MAX_SDT_NESTING,kf as MAX_TABLE_COLUMNS,j as boundedStructuralFontValidator,Ob as collectFlowBlocks,Nb as contentControlContentChildren,k as createFontResourceSnapshot,e as fontRequestKey,Kb as isContentControl,Lb as isContentControlContent,og as paragraphOrderOfPart,i as sha256FontBytes}from'./chunk-2H6LCX4H.js';
package/dist/output.cjs CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunk3JENXX7Q_cjs=require('./chunk-3JENXX7Q.cjs');require('./chunk-SAUKKJWZ.cjs'),require('./chunk-BS554B6D.cjs'),require('./chunk-73X5I53C.cjs'),require('./chunk-QIFQTG57.cjs');Object.defineProperty(exports,"DEFAULT_FIELD_SHADING",{enumerable:true,get:function(){return chunk3JENXX7Q_cjs.d}});Object.defineProperty(exports,"paintSelectionOverlay",{enumerable:true,get:function(){return chunk3JENXX7Q_cjs.f}});Object.defineProperty(exports,"paintSemanticLayout",{enumerable:true,get:function(){return chunk3JENXX7Q_cjs.e}});
1
+ 'use strict';var chunkTDYP32AL_cjs=require('./chunk-TDYP32AL.cjs');require('./chunk-LD4YWMBO.cjs'),require('./chunk-BS554B6D.cjs'),require('./chunk-UKI45YR7.cjs'),require('./chunk-QONAJ66B.cjs');Object.defineProperty(exports,"DEFAULT_FIELD_SHADING",{enumerable:true,get:function(){return chunkTDYP32AL_cjs.d}});Object.defineProperty(exports,"paintSelectionOverlay",{enumerable:true,get:function(){return chunkTDYP32AL_cjs.f}});Object.defineProperty(exports,"paintSemanticLayout",{enumerable:true,get:function(){return chunkTDYP32AL_cjs.e}});
package/dist/output.js CHANGED
@@ -1 +1 @@
1
- export{d as DEFAULT_FIELD_SHADING,f as paintSelectionOverlay,e as paintSemanticLayout}from'./chunk-7D2CP2J7.js';import'./chunk-EWRKYYUA.js';import'./chunk-4WWEDTTE.js';import'./chunk-PEIEVTWR.js';import'./chunk-RFO2O56I.js';
1
+ export{d as DEFAULT_FIELD_SHADING,f as paintSelectionOverlay,e as paintSemanticLayout}from'./chunk-XIKXGERI.js';import'./chunk-LKWSYFJQ.js';import'./chunk-4WWEDTTE.js';import'./chunk-G5D7EXZD.js';import'./chunk-2H6LCX4H.js';
@@ -455,6 +455,16 @@ type AutomationOperation =
455
455
  readonly op: 'getNoteBody';
456
456
  readonly note: AutomationHandle;
457
457
  }
458
+ /**
459
+ * One note's story as plain text.
460
+ *
461
+ * Exactly the same projection as reading `getText` from the body returned by `getNoteBody`,
462
+ * without requiring that intermediate handle: paragraphs joined by one `\r` paragraph mark.
463
+ */
464
+ | {
465
+ readonly op: 'getNoteText';
466
+ readonly note: AutomationHandle;
467
+ }
458
468
  /** Whether a note is a footnote or an endnote. */
459
469
  | {
460
470
  readonly op: 'getNoteKind';
@@ -648,6 +658,23 @@ type AutomationOperation =
648
658
  readonly op: 'getCommentResolved';
649
659
  readonly comment: AutomationHandle;
650
660
  }
661
+ /**
662
+ * Create a top-level comment anchored to a span.
663
+ *
664
+ * Empty spans are valid insertion-point comments. A span may cross paragraphs in one story,
665
+ * but not table-cell boundaries: range markers cannot safely open in one cell and close in
666
+ * another. `author` and non-empty, single-paragraph `text` are required by this slice.
667
+ *
668
+ * Answers the NEW comment whose id is minted inside the package transaction.
669
+ */
670
+ | {
671
+ readonly op: 'insertComment';
672
+ readonly span: AutomationSpanRef;
673
+ readonly text: string;
674
+ readonly author: string;
675
+ /** ISO-8601. Omitted writes no `@w:date` — inventing one is a content change. */
676
+ readonly date?: string;
677
+ }
651
678
  /**
652
679
  * Resolve a comment thread, or reopen it.
653
680
  *
@@ -677,6 +704,17 @@ type AutomationOperation =
677
704
  /** ISO-8601. Omitted writes no `@w:date` — inventing one is a content change. */
678
705
  readonly date?: string;
679
706
  }
707
+ /**
708
+ * Delete one comment object.
709
+ *
710
+ * A top-level comment removes its whole thread and anchors. A reply removes only that reply;
711
+ * its parent and siblings remain. Several delete operations may share one batch and commit as
712
+ * one package transaction and one undo unit, but they cannot share a batch with any other write.
713
+ */
714
+ | {
715
+ readonly op: 'deleteComment';
716
+ readonly comment: AutomationHandle;
717
+ }
680
718
  /**
681
719
  * The tracked changes of a story, in document order.
682
720
  *
@@ -736,6 +774,17 @@ type AutomationOperation =
736
774
  readonly span: AutomationSpanRef;
737
775
  readonly mode: AutomationSelectionMode;
738
776
  }
777
+ /**
778
+ * Put the reader's selection on the range a bookmark currently encloses.
779
+ *
780
+ * The bookmark is resolved inside the batch so callers do not need a separate round trip to
781
+ * obtain an addressable range. Requires the `selection` capability, like `selectSpan`.
782
+ */
783
+ | {
784
+ readonly op: 'selectBookmark';
785
+ readonly bookmark: AutomationHandle;
786
+ readonly mode: AutomationSelectionMode;
787
+ }
739
788
  /**
740
789
  * The content controls a scope holds, outermost first and in document order.
741
790
  *
@@ -802,6 +851,16 @@ type AutomationOperation =
802
851
  readonly op: 'getContentControlLock';
803
852
  readonly contentControl: AutomationHandle;
804
853
  }
854
+ /**
855
+ * Whether the control declares `w:dataBinding`.
856
+ *
857
+ * Presence only: no XPath, namespace mapping, store id, or custom XML content crosses this
858
+ * protocol boundary, and the binding target is never resolved or fetched.
859
+ */
860
+ | {
861
+ readonly op: 'getContentControlIsBound';
862
+ readonly contentControl: AutomationHandle;
863
+ }
805
864
  /** Whether the control is showing its placeholder rather than a value (`w:showingPlcHdr`). */
806
865
  | {
807
866
  readonly op: 'getContentControlPlaceholderShown';
@@ -937,9 +996,9 @@ interface AutomationCustomNodePayload {
937
996
  /** Just the `op` discriminants of {@link AutomationOperation}, for dispatch tables. */
938
997
  type AutomationOperationKind = AutomationOperation['op'];
939
998
  /** Operations that read. They never open a transaction. */
940
- declare const AUTOMATION_QUERY_OPERATIONS: readonly ["getDocument", "getBody", "getParagraphs", "getSpanParagraphs", "getText", "getSpanText", "getParagraphId", "search", "getFont", "getParagraphFormat", "getStyle", "getSections", "getPageSetup", "getFurniture", "getNotes", "getNoteBody", "getNoteKind", "getLists", "getListId", "getListById", "getListParagraphs", "getParagraphList", "getListLevel", "getHyperlink", "getBookmarks", "getBookmarkName", "getBookmarkRange", "getComments", "getCommentReplies", "getCommentId", "getCommentAuthor", "getCommentDate", "getCommentText", "getCommentRange", "getCommentResolved", "getRevisions", "getRevisionType", "getRevisionAuthor", "getRevisionDate", "getRevisionRange", "getContentControls", "getContentControlById", "getContentControlsByTag", "getContentControlsByTitle", "getContentControlTag", "getContentControlTitle", "getContentControlFileId", "getContentControlSubtype", "getContentControlLock", "getContentControlPlaceholderShown", "getContentControlTemporary", "getContentControlText", "getContentControlParagraphs", "getContentControlRange"];
999
+ declare const AUTOMATION_QUERY_OPERATIONS: readonly ["getDocument", "getBody", "getParagraphs", "getSpanParagraphs", "getText", "getSpanText", "getParagraphId", "search", "getFont", "getParagraphFormat", "getStyle", "getSections", "getPageSetup", "getFurniture", "getNotes", "getNoteBody", "getNoteText", "getNoteKind", "getLists", "getListId", "getListById", "getListParagraphs", "getParagraphList", "getListLevel", "getHyperlink", "getBookmarks", "getBookmarkName", "getBookmarkRange", "getComments", "getCommentReplies", "getCommentId", "getCommentAuthor", "getCommentDate", "getCommentText", "getCommentRange", "getCommentResolved", "getRevisions", "getRevisionType", "getRevisionAuthor", "getRevisionDate", "getRevisionRange", "getContentControls", "getContentControlById", "getContentControlsByTag", "getContentControlsByTitle", "getContentControlTag", "getContentControlTitle", "getContentControlFileId", "getContentControlSubtype", "getContentControlLock", "getContentControlIsBound", "getContentControlPlaceholderShown", "getContentControlTemporary", "getContentControlText", "getContentControlParagraphs", "getContentControlRange"];
941
1000
  /** Operations that write. Every one of these goes through the single transaction path. */
942
- declare const AUTOMATION_COMMAND_OPERATIONS: readonly ["insertText", "replaceSpan", "insertParagraph", "splitParagraph", "deleteParagraph", "selectSpan", "setFont", "setParagraphFormat", "setStyle", "setPageSetup", "deleteNote", "setListLevel", "insertListParagraph", "setHyperlink", "setCommentResolved", "replyToComment", "acceptRevision", "rejectRevision", "acceptAllRevisions", "rejectAllRevisions", "setContentControlValue", "setContentControlProperties", "deleteContentControl", "insertContentControlText", "insertContentControl", "insertCustomNode"];
1001
+ declare const AUTOMATION_COMMAND_OPERATIONS: readonly ["insertText", "replaceSpan", "insertParagraph", "splitParagraph", "deleteParagraph", "selectSpan", "selectBookmark", "setFont", "setParagraphFormat", "setStyle", "setPageSetup", "deleteNote", "setListLevel", "insertListParagraph", "setHyperlink", "insertComment", "setCommentResolved", "replyToComment", "deleteComment", "acceptRevision", "rejectRevision", "acceptAllRevisions", "rejectAllRevisions", "setContentControlValue", "setContentControlProperties", "deleteContentControl", "insertContentControlText", "insertContentControl", "insertCustomNode"];
943
1002
  /**
944
1003
  * Commands that commit as a PACKAGE transaction and therefore share a batch with nothing.
945
1004
  *
@@ -949,7 +1008,7 @@ declare const AUTOMATION_COMMAND_OPERATIONS: readonly ["insertText", "replaceSpa
949
1008
  * beside a story command, would be two commits: two revisions, and a moment where half the
950
1009
  * caller's batch is published. Refused while planning instead.
951
1010
  */
952
- declare const AUTOMATION_SOLITARY_OPERATIONS: readonly ["deleteNote", "setCommentResolved", "replyToComment", "insertCustomNode"];
1011
+ declare const AUTOMATION_SOLITARY_OPERATIONS: readonly ["deleteNote", "insertComment", "setCommentResolved", "replyToComment", "insertCustomNode"];
953
1012
  /** Whether an operation must be the only one in its batch. */
954
1013
  declare function isSolitaryAutomationCommand(operation: AutomationOperation): boolean;
955
1014
  /** Whether an operation writes. Drives the query/command split inside one batch. */
@@ -455,6 +455,16 @@ type AutomationOperation =
455
455
  readonly op: 'getNoteBody';
456
456
  readonly note: AutomationHandle;
457
457
  }
458
+ /**
459
+ * One note's story as plain text.
460
+ *
461
+ * Exactly the same projection as reading `getText` from the body returned by `getNoteBody`,
462
+ * without requiring that intermediate handle: paragraphs joined by one `\r` paragraph mark.
463
+ */
464
+ | {
465
+ readonly op: 'getNoteText';
466
+ readonly note: AutomationHandle;
467
+ }
458
468
  /** Whether a note is a footnote or an endnote. */
459
469
  | {
460
470
  readonly op: 'getNoteKind';
@@ -648,6 +658,23 @@ type AutomationOperation =
648
658
  readonly op: 'getCommentResolved';
649
659
  readonly comment: AutomationHandle;
650
660
  }
661
+ /**
662
+ * Create a top-level comment anchored to a span.
663
+ *
664
+ * Empty spans are valid insertion-point comments. A span may cross paragraphs in one story,
665
+ * but not table-cell boundaries: range markers cannot safely open in one cell and close in
666
+ * another. `author` and non-empty, single-paragraph `text` are required by this slice.
667
+ *
668
+ * Answers the NEW comment whose id is minted inside the package transaction.
669
+ */
670
+ | {
671
+ readonly op: 'insertComment';
672
+ readonly span: AutomationSpanRef;
673
+ readonly text: string;
674
+ readonly author: string;
675
+ /** ISO-8601. Omitted writes no `@w:date` — inventing one is a content change. */
676
+ readonly date?: string;
677
+ }
651
678
  /**
652
679
  * Resolve a comment thread, or reopen it.
653
680
  *
@@ -677,6 +704,17 @@ type AutomationOperation =
677
704
  /** ISO-8601. Omitted writes no `@w:date` — inventing one is a content change. */
678
705
  readonly date?: string;
679
706
  }
707
+ /**
708
+ * Delete one comment object.
709
+ *
710
+ * A top-level comment removes its whole thread and anchors. A reply removes only that reply;
711
+ * its parent and siblings remain. Several delete operations may share one batch and commit as
712
+ * one package transaction and one undo unit, but they cannot share a batch with any other write.
713
+ */
714
+ | {
715
+ readonly op: 'deleteComment';
716
+ readonly comment: AutomationHandle;
717
+ }
680
718
  /**
681
719
  * The tracked changes of a story, in document order.
682
720
  *
@@ -736,6 +774,17 @@ type AutomationOperation =
736
774
  readonly span: AutomationSpanRef;
737
775
  readonly mode: AutomationSelectionMode;
738
776
  }
777
+ /**
778
+ * Put the reader's selection on the range a bookmark currently encloses.
779
+ *
780
+ * The bookmark is resolved inside the batch so callers do not need a separate round trip to
781
+ * obtain an addressable range. Requires the `selection` capability, like `selectSpan`.
782
+ */
783
+ | {
784
+ readonly op: 'selectBookmark';
785
+ readonly bookmark: AutomationHandle;
786
+ readonly mode: AutomationSelectionMode;
787
+ }
739
788
  /**
740
789
  * The content controls a scope holds, outermost first and in document order.
741
790
  *
@@ -802,6 +851,16 @@ type AutomationOperation =
802
851
  readonly op: 'getContentControlLock';
803
852
  readonly contentControl: AutomationHandle;
804
853
  }
854
+ /**
855
+ * Whether the control declares `w:dataBinding`.
856
+ *
857
+ * Presence only: no XPath, namespace mapping, store id, or custom XML content crosses this
858
+ * protocol boundary, and the binding target is never resolved or fetched.
859
+ */
860
+ | {
861
+ readonly op: 'getContentControlIsBound';
862
+ readonly contentControl: AutomationHandle;
863
+ }
805
864
  /** Whether the control is showing its placeholder rather than a value (`w:showingPlcHdr`). */
806
865
  | {
807
866
  readonly op: 'getContentControlPlaceholderShown';
@@ -937,9 +996,9 @@ interface AutomationCustomNodePayload {
937
996
  /** Just the `op` discriminants of {@link AutomationOperation}, for dispatch tables. */
938
997
  type AutomationOperationKind = AutomationOperation['op'];
939
998
  /** Operations that read. They never open a transaction. */
940
- declare const AUTOMATION_QUERY_OPERATIONS: readonly ["getDocument", "getBody", "getParagraphs", "getSpanParagraphs", "getText", "getSpanText", "getParagraphId", "search", "getFont", "getParagraphFormat", "getStyle", "getSections", "getPageSetup", "getFurniture", "getNotes", "getNoteBody", "getNoteKind", "getLists", "getListId", "getListById", "getListParagraphs", "getParagraphList", "getListLevel", "getHyperlink", "getBookmarks", "getBookmarkName", "getBookmarkRange", "getComments", "getCommentReplies", "getCommentId", "getCommentAuthor", "getCommentDate", "getCommentText", "getCommentRange", "getCommentResolved", "getRevisions", "getRevisionType", "getRevisionAuthor", "getRevisionDate", "getRevisionRange", "getContentControls", "getContentControlById", "getContentControlsByTag", "getContentControlsByTitle", "getContentControlTag", "getContentControlTitle", "getContentControlFileId", "getContentControlSubtype", "getContentControlLock", "getContentControlPlaceholderShown", "getContentControlTemporary", "getContentControlText", "getContentControlParagraphs", "getContentControlRange"];
999
+ declare const AUTOMATION_QUERY_OPERATIONS: readonly ["getDocument", "getBody", "getParagraphs", "getSpanParagraphs", "getText", "getSpanText", "getParagraphId", "search", "getFont", "getParagraphFormat", "getStyle", "getSections", "getPageSetup", "getFurniture", "getNotes", "getNoteBody", "getNoteText", "getNoteKind", "getLists", "getListId", "getListById", "getListParagraphs", "getParagraphList", "getListLevel", "getHyperlink", "getBookmarks", "getBookmarkName", "getBookmarkRange", "getComments", "getCommentReplies", "getCommentId", "getCommentAuthor", "getCommentDate", "getCommentText", "getCommentRange", "getCommentResolved", "getRevisions", "getRevisionType", "getRevisionAuthor", "getRevisionDate", "getRevisionRange", "getContentControls", "getContentControlById", "getContentControlsByTag", "getContentControlsByTitle", "getContentControlTag", "getContentControlTitle", "getContentControlFileId", "getContentControlSubtype", "getContentControlLock", "getContentControlIsBound", "getContentControlPlaceholderShown", "getContentControlTemporary", "getContentControlText", "getContentControlParagraphs", "getContentControlRange"];
941
1000
  /** Operations that write. Every one of these goes through the single transaction path. */
942
- declare const AUTOMATION_COMMAND_OPERATIONS: readonly ["insertText", "replaceSpan", "insertParagraph", "splitParagraph", "deleteParagraph", "selectSpan", "setFont", "setParagraphFormat", "setStyle", "setPageSetup", "deleteNote", "setListLevel", "insertListParagraph", "setHyperlink", "setCommentResolved", "replyToComment", "acceptRevision", "rejectRevision", "acceptAllRevisions", "rejectAllRevisions", "setContentControlValue", "setContentControlProperties", "deleteContentControl", "insertContentControlText", "insertContentControl", "insertCustomNode"];
1001
+ declare const AUTOMATION_COMMAND_OPERATIONS: readonly ["insertText", "replaceSpan", "insertParagraph", "splitParagraph", "deleteParagraph", "selectSpan", "selectBookmark", "setFont", "setParagraphFormat", "setStyle", "setPageSetup", "deleteNote", "setListLevel", "insertListParagraph", "setHyperlink", "insertComment", "setCommentResolved", "replyToComment", "deleteComment", "acceptRevision", "rejectRevision", "acceptAllRevisions", "rejectAllRevisions", "setContentControlValue", "setContentControlProperties", "deleteContentControl", "insertContentControlText", "insertContentControl", "insertCustomNode"];
943
1002
  /**
944
1003
  * Commands that commit as a PACKAGE transaction and therefore share a batch with nothing.
945
1004
  *
@@ -949,7 +1008,7 @@ declare const AUTOMATION_COMMAND_OPERATIONS: readonly ["insertText", "replaceSpa
949
1008
  * beside a story command, would be two commits: two revisions, and a moment where half the
950
1009
  * caller's batch is published. Refused while planning instead.
951
1010
  */
952
- declare const AUTOMATION_SOLITARY_OPERATIONS: readonly ["deleteNote", "setCommentResolved", "replyToComment", "insertCustomNode"];
1011
+ declare const AUTOMATION_SOLITARY_OPERATIONS: readonly ["deleteNote", "insertComment", "setCommentResolved", "replyToComment", "insertCustomNode"];
953
1012
  /** Whether an operation must be the only one in its batch. */
954
1013
  declare function isSolitaryAutomationCommand(operation: AutomationOperation): boolean;
955
1014
  /** Whether an operation writes. Drives the query/command split inside one batch. */
@@ -135,6 +135,13 @@ declare function commentsOfPart(part: OoxmlPart): CommentRecord[];
135
135
  * file rather than a default this code chose.
136
136
  */
137
137
  declare function threadStateOfPart(part: OoxmlPart): Map<string, CommentThreadState>;
138
+ /**
139
+ * Whether the package holds any `w:comment` record — the cheap gate before a reap.
140
+ *
141
+ * Overflow cannot prove the package is comment-free, so it returns true and the reap still
142
+ * runs rather than skipping cleanup.
143
+ */
144
+ declare function hasAnyComment(pkg: OoxmlPackage): boolean;
138
145
 
139
146
  /** A position in the model offset space of one story. */
140
147
  interface ReviewPosition {
@@ -398,4 +405,4 @@ declare function reviewItemRanges(item: ReviewItem): readonly ReviewRange[];
398
405
  /** The range an item is anchored at — where its card belongs and how it sorts. */
399
406
  declare function firstReviewRange(item: ReviewItem): ReviewRange | null;
400
407
 
401
- export { type AuthoredNoteProperties as A, isLegalFootnotePosition as B, type CommentAnchor as C, DEFAULT_ENDNOTE_PROPERTIES as D, type EndnotePosition as E, type FootnotePosition as F, isLegalNumRestart as G, linkRevisionReplies as H, parseAuthoredNoteProperties as I, resolveEndnoteProperties as J, resolveFootnoteProperties as K, type LinkableReviewItem as L, reviewItemKey as M, type NoteNumRestart as N, reviewItemRanges as O, revisionItemsOf as P, settingsPartOf as Q, type ResolvedFootnoteProperties as R, threadStateOfPart as S, W15_NAMESPACE_URI as W, type ResolvedEndnoteProperties as a, type CommentPosition as b, type CommentRecord as c, type CommentThreadState as d, DEFAULT_FOOTNOTE_PROPERTIES as e, type ReviewCommentItem as f, type ReviewItem as g, type ReviewModelInput as h, type ReviewPosition as i, type ReviewRange as j, type ReviewRevisionItem as k, type ReviewRevisionKind as l, authoredDocumentEndnoteProperties as m, authoredDocumentFootnoteProperties as n, authoredEndnotePropertiesFromSectPr as o, paragraphOrderOfPart as p, authoredFootnotePropertiesFromSectPr as q, collectReviewItems as r, commentAnchorsOfStory as s, commentBodyText as t, commentInitials as u, commentItemsOf as v, commentsOfPart as w, deepParagraphOrderOfPart as x, firstReviewRange as y, isLegalEndnotePosition as z };
408
+ export { type AuthoredNoteProperties as A, isLegalEndnotePosition as B, type CommentAnchor as C, DEFAULT_ENDNOTE_PROPERTIES as D, type EndnotePosition as E, type FootnotePosition as F, isLegalFootnotePosition as G, isLegalNumRestart as H, linkRevisionReplies as I, parseAuthoredNoteProperties as J, resolveEndnoteProperties as K, type LinkableReviewItem as L, resolveFootnoteProperties as M, type NoteNumRestart as N, reviewItemKey as O, reviewItemRanges as P, revisionItemsOf as Q, type ResolvedFootnoteProperties as R, settingsPartOf as S, threadStateOfPart as T, W15_NAMESPACE_URI as W, type ResolvedEndnoteProperties as a, type CommentPosition as b, type CommentRecord as c, type CommentThreadState as d, DEFAULT_FOOTNOTE_PROPERTIES as e, type ReviewCommentItem as f, type ReviewItem as g, type ReviewModelInput as h, type ReviewPosition as i, type ReviewRange as j, type ReviewRevisionItem as k, type ReviewRevisionKind as l, authoredDocumentEndnoteProperties as m, authoredDocumentFootnoteProperties as n, authoredEndnotePropertiesFromSectPr as o, paragraphOrderOfPart as p, authoredFootnotePropertiesFromSectPr as q, collectReviewItems as r, commentAnchorsOfStory as s, commentBodyText as t, commentInitials as u, commentItemsOf as v, commentsOfPart as w, deepParagraphOrderOfPart as x, firstReviewRange as y, hasAnyComment as z };
@@ -135,6 +135,13 @@ declare function commentsOfPart(part: OoxmlPart): CommentRecord[];
135
135
  * file rather than a default this code chose.
136
136
  */
137
137
  declare function threadStateOfPart(part: OoxmlPart): Map<string, CommentThreadState>;
138
+ /**
139
+ * Whether the package holds any `w:comment` record — the cheap gate before a reap.
140
+ *
141
+ * Overflow cannot prove the package is comment-free, so it returns true and the reap still
142
+ * runs rather than skipping cleanup.
143
+ */
144
+ declare function hasAnyComment(pkg: OoxmlPackage): boolean;
138
145
 
139
146
  /** A position in the model offset space of one story. */
140
147
  interface ReviewPosition {
@@ -398,4 +405,4 @@ declare function reviewItemRanges(item: ReviewItem): readonly ReviewRange[];
398
405
  /** The range an item is anchored at — where its card belongs and how it sorts. */
399
406
  declare function firstReviewRange(item: ReviewItem): ReviewRange | null;
400
407
 
401
- export { type AuthoredNoteProperties as A, isLegalFootnotePosition as B, type CommentAnchor as C, DEFAULT_ENDNOTE_PROPERTIES as D, type EndnotePosition as E, type FootnotePosition as F, isLegalNumRestart as G, linkRevisionReplies as H, parseAuthoredNoteProperties as I, resolveEndnoteProperties as J, resolveFootnoteProperties as K, type LinkableReviewItem as L, reviewItemKey as M, type NoteNumRestart as N, reviewItemRanges as O, revisionItemsOf as P, settingsPartOf as Q, type ResolvedFootnoteProperties as R, threadStateOfPart as S, W15_NAMESPACE_URI as W, type ResolvedEndnoteProperties as a, type CommentPosition as b, type CommentRecord as c, type CommentThreadState as d, DEFAULT_FOOTNOTE_PROPERTIES as e, type ReviewCommentItem as f, type ReviewItem as g, type ReviewModelInput as h, type ReviewPosition as i, type ReviewRange as j, type ReviewRevisionItem as k, type ReviewRevisionKind as l, authoredDocumentEndnoteProperties as m, authoredDocumentFootnoteProperties as n, authoredEndnotePropertiesFromSectPr as o, paragraphOrderOfPart as p, authoredFootnotePropertiesFromSectPr as q, collectReviewItems as r, commentAnchorsOfStory as s, commentBodyText as t, commentInitials as u, commentItemsOf as v, commentsOfPart as w, deepParagraphOrderOfPart as x, firstReviewRange as y, isLegalEndnotePosition as z };
408
+ export { type AuthoredNoteProperties as A, isLegalEndnotePosition as B, type CommentAnchor as C, DEFAULT_ENDNOTE_PROPERTIES as D, type EndnotePosition as E, type FootnotePosition as F, isLegalFootnotePosition as G, isLegalNumRestart as H, linkRevisionReplies as I, parseAuthoredNoteProperties as J, resolveEndnoteProperties as K, type LinkableReviewItem as L, resolveFootnoteProperties as M, type NoteNumRestart as N, reviewItemKey as O, reviewItemRanges as P, revisionItemsOf as Q, type ResolvedFootnoteProperties as R, settingsPartOf as S, threadStateOfPart as T, W15_NAMESPACE_URI as W, type ResolvedEndnoteProperties as a, type CommentPosition as b, type CommentRecord as c, type CommentThreadState as d, DEFAULT_FOOTNOTE_PROPERTIES as e, type ReviewCommentItem as f, type ReviewItem as g, type ReviewModelInput as h, type ReviewPosition as i, type ReviewRange as j, type ReviewRevisionItem as k, type ReviewRevisionKind as l, authoredDocumentEndnoteProperties as m, authoredDocumentFootnoteProperties as n, authoredEndnotePropertiesFromSectPr as o, paragraphOrderOfPart as p, authoredFootnotePropertiesFromSectPr as q, collectReviewItems as r, commentAnchorsOfStory as s, commentBodyText as t, commentInitials as u, commentItemsOf as v, commentsOfPart as w, deepParagraphOrderOfPart as x, firstReviewRange as y, hasAnyComment as z };
@@ -1,7 +1,7 @@
1
1
  import { e as OoxmlPart, a as OoxmlElement, O as OoxmlNode } from './ooxml-tree-BU0e3DVi.cjs';
2
2
  import { P as PageGeometry, I as InlineDrawingRecord, A as AnchoredDrawingRecord, T as TextMeasurer, L as LineRecord, S as SemanticLayout, C as ContentControlBoundaryRecord, a as StyleSpanRecord, b as TableRowFragmentRecord, c as TableCellFragmentRecord } from './semantic-records-DC6V1U3T.cjs';
3
3
  import { R as RevisionDisplayMode } from './revision-projection-72ZApe-g.cjs';
4
- import { S as SemanticPosition, C as CaretGeometry, a as SemanticSelection } from './semantic-interaction-B4HrJFQ2.cjs';
4
+ import { S as SemanticPosition, C as CaretGeometry, a as SemanticSelection } from './semantic-interaction-BG0jWJ0I.cjs';
5
5
 
6
6
  /**
7
7
  * Hard ceiling on sections enumerated from a document (matches write-path
@@ -1,7 +1,7 @@
1
1
  import { e as OoxmlPart, a as OoxmlElement, O as OoxmlNode } from './ooxml-tree-BU0e3DVi.js';
2
2
  import { P as PageGeometry, I as InlineDrawingRecord, A as AnchoredDrawingRecord, T as TextMeasurer, L as LineRecord, S as SemanticLayout, C as ContentControlBoundaryRecord, a as StyleSpanRecord, b as TableRowFragmentRecord, c as TableCellFragmentRecord } from './semantic-records-BC4bIKKL.js';
3
3
  import { R as RevisionDisplayMode } from './revision-projection-DHAkcD_L.js';
4
- import { S as SemanticPosition, C as CaretGeometry, a as SemanticSelection } from './semantic-interaction-unGpRNCk.js';
4
+ import { S as SemanticPosition, C as CaretGeometry, a as SemanticSelection } from './semantic-interaction-lHDX4yIt.js';
5
5
 
6
6
  /**
7
7
  * Hard ceiling on sections enumerated from a document (matches write-path
@@ -34,14 +34,6 @@ interface SelectionRect {
34
34
  readonly width: number;
35
35
  readonly height: number;
36
36
  }
37
- /**
38
- * Every caret stop in the document body, in reading order.
39
- *
40
- * One per character boundary on every line, plus the line end. Derived rather than stored,
41
- * so a stop can never survive the content it described. Ownership of a position SHARED by
42
- * two lines is decided here exactly as `caretAt` decides it. Furniture stories use
43
- * {@link caretStopsForBlocks} so open header/footer navigation never walks body stops.
44
- */
45
37
  declare function caretStops(layout: SemanticLayout, measurer?: TextMeasurer): CaretGeometry[];
46
38
  /**
47
39
  * Caret stops for one story's block fragments (header/footer), in reading order.
@@ -138,37 +130,13 @@ type NavigationCommand = 'left' | 'right' | 'up' | 'down' | 'wordLeft' | 'wordRi
138
130
  * motion in the interaction lane instead of making it a second consumer of the model.
139
131
  */
140
132
  declare function paragraphTextFromLayout(layout: SemanticLayout, paragraphId: string): string;
141
- /**
142
- * The next word boundary from `offset`, in `direction`.
143
- *
144
- * Word-LEFT skips any whitespace immediately behind the caret and then the word behind that,
145
- * which is what every editor does and what makes repeated presses walk words rather than
146
- * alternate between a word and the space before it. Word-RIGHT stops at the END of the
147
- * current word, then skips the following whitespace on the next press.
148
- */
149
- declare function wordBoundary(text: string, offset: number, direction: -1 | 1): number;
150
- /**
151
- * How a caret move resolves.
152
- *
153
- * Story-scoped stops are REQUIRED when navigating inside an open header or footer: the body's
154
- * stops describe a different story, and moving through them would walk the caret out of the
155
- * furniture the user is editing.
156
- */
133
+ /** Story-scoped stops are required when navigating inside an open header or footer. */
157
134
  interface MoveCaretOptions {
158
- /**
159
- * Precomputed stops for the active story. Open header/footer navigation MUST pass
160
- * story-scoped stops from {@link caretStopsForBlocks}; body keeps the default.
161
- */
135
+ /** Precomputed active-story stops; body navigation keeps the indexed default. */
162
136
  readonly stops?: readonly CaretGeometry[];
163
137
  readonly measurer?: TextMeasurer;
164
138
  }
165
- /**
166
- * Move a caret.
167
- *
168
- * Vertical movement keeps a DESIRED X so a caret travelling through short lines returns to
169
- * its original column rather than collapsing to the end of the shortest one. The caller
170
- * threads that value; passing null starts a fresh vertical run from the current position.
171
- */
139
+ /** Move a caret; vertical movement carries a desired X through shorter lines. */
172
140
  declare function moveCaret(layout: SemanticLayout, position: SemanticPosition, command: NavigationCommand, desiredX?: number | null, options?: MoveCaretOptions): {
173
141
  position: SemanticPosition;
174
142
  desiredX: number | null;
@@ -184,4 +152,4 @@ declare function compositionAnchor(layout: SemanticLayout, position: SemanticPos
184
152
  /** The style spans a selection touches, for reporting active formatting. */
185
153
  declare function spansInSelection(layout: SemanticLayout, selection: SemanticSelection): StyleSpanRecord[];
186
154
 
187
- export { type CaretGeometry as C, type KeyedRange as K, type MoveCaretOptions as M, type NavigationCommand as N, type SemanticPosition as S, type SemanticSelection as a, type CaretAtOptions as b, type SelectionRect as c, caretAt as d, caretStops as e, caretStopsForBlocks as f, compositionAnchor as g, contentControlAtSemantic as h, contentControlsInLayout as i, documentOrder as j, hitTestSemantic as k, keyedRangeRects as l, moveCaret as m, spansInSelection as n, paragraphTextFromLayout as p, selectionRects as s, wordBoundary as w };
155
+ export { type CaretGeometry as C, type KeyedRange as K, type MoveCaretOptions as M, type NavigationCommand as N, type SemanticPosition as S, type SemanticSelection as a, type CaretAtOptions as b, type SelectionRect as c, caretAt as d, caretStops as e, caretStopsForBlocks as f, compositionAnchor as g, contentControlAtSemantic as h, contentControlsInLayout as i, documentOrder as j, hitTestSemantic as k, keyedRangeRects as l, moveCaret as m, spansInSelection as n, paragraphTextFromLayout as p, selectionRects as s };