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