gesso-core 0.6.20 → 0.6.22

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.
@@ -591,9 +591,10 @@ type UiTransitionSpec = {
591
591
  /**
592
592
  * What an element may write for one property of a `transition`.
593
593
  *
594
- * A bare number is a duration in milliseconds, which is what makes
595
- * `transition: { opacity: 200, transform: spring() }` read the way
596
- * That is how it was written.
594
+ * A bare number is a duration in milliseconds, so the common case,
595
+ * `transition: { opacity: 200, transform: 120 }`, reads the way a CSS
596
+ * transition does. A spring is for a property that is one number, like
597
+ * `opacity`: a transform only tweens (see `spring`).
597
598
  */
598
599
  type UiTransitionValue = number | UiTransitionSpec;
599
600
  /** A tween of `duration` milliseconds along `easing`. */
@@ -889,7 +890,304 @@ declare class UiEnvironment {
889
890
  providesOwn(name: string): boolean;
890
891
  }
891
892
  //#endregion
893
+ //#region src/layout/TextMeasurer.d.ts
894
+ type TextWrap = 'word' | 'char' | 'none';
895
+ type TextOverflow = 'clip' | 'ellipsis';
896
+ /**
897
+ * The font a piece of text is measured in.
898
+ *
899
+ * Structural rather than imported so that layout keeps depending on
900
+ * nothing above it; a `UiResolvedTextSpan` is one of these plus the
901
+ * fields that only paint reads.
902
+ */
903
+ interface TextRunStyle {
904
+ fontFamily?: string;
905
+ fontWeight?: string | number;
906
+ fontSize?: number;
907
+ fontStyle?: string;
908
+ fontStretch?: string;
909
+ fontVariant?: string;
910
+ fontKerning?: string;
911
+ letterSpacing?: number;
912
+ }
913
+ /** A run of the paragraph with a font of its own, as offsets into the text. */
914
+ interface TextRunSpan extends TextRunStyle {
915
+ readonly start: number;
916
+ readonly end: number;
917
+ /**
918
+ * The run is in the text but takes no room: every width that touches
919
+ * it counts it as nothing, and a line's `runs` leave it out, so no
920
+ * renderer has anything to draw for it.
921
+ */
922
+ readonly hidden?: boolean;
923
+ }
924
+ interface TextMeasureRequest {
925
+ text: string;
926
+ fontSize: number;
927
+ /** Available width. Wrapping and fit-content sizing happen against it. */
928
+ maxWidth?: number;
929
+ /**
930
+ * `maxWidth` is the box's own width, fixed from outside (a width
931
+ * set, or the box being painted): lines wrap against it, and a word
932
+ * wider than it overflows on a line of its own. Otherwise the
933
+ * paragraph is fit-content, and a word wider than `maxWidth` widens
934
+ * it, every line wrapping against that wider box, as CSS lays out a
935
+ * box sized by its content.
936
+ */
937
+ exactWidth?: boolean;
938
+ /**
939
+ * Font family for platforms that can shape text.
940
+ *
941
+ * Deterministic measurers may ignore every style field; they
942
+ * are hints for platform-backed implementations only.
943
+ */
944
+ fontFamily?: string;
945
+ fontWeight?: string | number;
946
+ lineHeight?: number;
947
+ letterSpacing?: number;
948
+ fontStyle?: string;
949
+ fontStretch?: string;
950
+ fontVariant?: string;
951
+ fontKerning?: string;
952
+ /** Default 'word'. */
953
+ wrap?: TextWrap;
954
+ /** Keep at most this many lines. */
955
+ maxLines?: number;
956
+ /** What happens to a line that does not fit. Default 'clip'. */
957
+ overflow?: TextOverflow;
958
+ /**
959
+ * Runs of `text` with a font of their own, in order and not
960
+ * overlapping. Text outside every run is measured in the request's
961
+ * own font.
962
+ *
963
+ * Only the fields that change a width are here. A run that differs
964
+ * from its neighbours only in colour, background or underline is not
965
+ * in this list at all, so it costs a paint and never a re-layout.
966
+ */
967
+ spans?: readonly TextRunSpan[];
968
+ }
969
+ /** One run of a line: where it sits in the line and which span it came from. */
970
+ interface TextLineRun {
971
+ /** Index into the request's `spans`, or -1 for text outside every run. */
972
+ span: number;
973
+ /** Offsets into the source text. */
974
+ start: number;
975
+ end: number;
976
+ text: string;
977
+ /** Distance from the line's left edge to this run's left edge. */
978
+ x: number;
979
+ width: number;
980
+ }
981
+ /** One laid-out line. `text` is what gets drawn and may end in an ellipsis. */
982
+ interface TextLine {
983
+ /** Offsets into the source text; hanging spaces and the ellipsis are outside them. */
984
+ start: number;
985
+ end: number;
986
+ text: string;
987
+ width: number;
988
+ /**
989
+ * The line cut at its runs, present only for a paragraph that has
990
+ * spans. A hidden run is not among them.
991
+ *
992
+ * Measured once, here, where the line's own width is measured. That
993
+ * is what keeps a spanned paragraph as cheap to paint as a plain
994
+ * one: a renderer walks these and asks the platform for nothing.
995
+ */
996
+ runs?: readonly TextLineRun[];
997
+ }
998
+ interface FontMetrics {
999
+ /** Distance from the alphabetic baseline to the top of the glyph box. */
1000
+ ascent: number;
1001
+ /** Distance from the alphabetic baseline to the bottom of the glyph box. */
1002
+ descent: number;
1003
+ }
1004
+ /**
1005
+ * A measured paragraph: everything layout, alignment and painting need.
1006
+ *
1007
+ * `width` is fit-content, `height` is lines × lineHeight, and
1008
+ * `firstBaseline` is the distance from the paragraph top to the first
1009
+ * line's alphabetic baseline (half-leading plus ascent).
1010
+ */
1011
+ interface ParagraphLayout {
1012
+ lines: TextLine[];
1013
+ width: number;
1014
+ height: number;
1015
+ lineHeight: number;
1016
+ ascent: number;
1017
+ descent: number;
1018
+ firstBaseline: number;
1019
+ /** Widest unbreakable segment under the requested wrap mode. */
1020
+ minContentWidth: number;
1021
+ /** Width with no wrapping at all. */
1022
+ maxContentWidth: number;
1023
+ }
1024
+ /**
1025
+ * Abstraction between layout and text platforms.
1026
+ *
1027
+ * Layout never measures text itself; a platform layer
1028
+ * (Canvas2D, WebGPU, tests) supplies an implementation.
1029
+ */
1030
+ interface TextMeasurer {
1031
+ measure(request: TextMeasureRequest): Size;
1032
+ layout(request: TextMeasureRequest): ParagraphLayout;
1033
+ /**
1034
+ * The advance width of one run in the request's font. Caret and
1035
+ * selection geometry is built from prefix widths, so it has to come
1036
+ * from the same source as the line widths.
1037
+ */
1038
+ measureRunWidth(text: string, request: TextMeasureRequest): number;
1039
+ /**
1040
+ * Forgets every cached answer. Called when what a font string means
1041
+ * has changed under the measurer: a declared face finished loading,
1042
+ * so widths measured with its fallback are wrong now. Measurers with
1043
+ * nothing cached need not implement it.
1044
+ */
1045
+ invalidate?(): void;
1046
+ /**
1047
+ * Counts `invalidate` calls. A caller that keeps a paragraph past the
1048
+ * call that returned it (the layout engine keeps each node's last
1049
+ * one) may trust it only while this is unchanged. A measurer that
1050
+ * leaves it out is asked again every time.
1051
+ */
1052
+ readonly generation?: number;
1053
+ }
1054
+ /**
1055
+ * The primitive a platform has to provide: the advance width of one
1056
+ * run of text, and the font's vertical metrics. Everything above it
1057
+ * is shared (see ParagraphLayout.ts).
1058
+ */
1059
+ interface TextRunMeasurer {
1060
+ measureRunWidth(text: string, request: TextMeasureRequest): number;
1061
+ fontMetrics(request: TextMeasureRequest): FontMetrics;
1062
+ }
1063
+ /**
1064
+ * The widths of a paragraph whose runs have fonts of their own.
1065
+ *
1066
+ * Everything above it — line breaking, hanging blanks, the ellipsis,
1067
+ * caret and selection geometry — asks for the width of a stretch of
1068
+ * the text by its offsets rather than by its characters, and this
1069
+ * splits that stretch at the run boundaries and measures each piece in
1070
+ * its own font. That is the whole of what a span costs: the paragraph
1071
+ * algorithm is unchanged, and a paragraph with no spans never builds
1072
+ * one of these at all.
1073
+ */
1074
+ interface SpannedRuns {
1075
+ /** The runs, as the request gave them. */
1076
+ readonly spans: readonly TextRunSpan[];
1077
+ /** Index of the run covering `offset`, or -1 where no run does. */
1078
+ indexAt(offset: number): number;
1079
+ /** The request an offset is measured with: its run's, or the paragraph's. */
1080
+ requestAt(offset: number): TextMeasureRequest;
1081
+ /** Whether the character at `offset` is in a hidden run. */
1082
+ hiddenAt(offset: number): boolean;
1083
+ /** Width of `text.slice(start, end)`, measured run by run. */
1084
+ width(text: string, start: number, end: number): number;
1085
+ /**
1086
+ * Width of a string that is not in the text, in the font of the run
1087
+ * covering `offset`: the ellipsis, and the space a tab is counted
1088
+ * as.
1089
+ */
1090
+ widthOf(run: string, offset: number): number;
1091
+ /**
1092
+ * `text.slice(start, end)` cut at the run boundaries, each piece
1093
+ * placed from `x`. Hidden pieces take no room and are left out.
1094
+ */
1095
+ cut(text: string, start: number, end: number, x: number): TextLineRun[];
1096
+ }
1097
+ /**
1098
+ * Builds the run widths for a request, or undefined when it has no
1099
+ * runs.
1100
+ *
1101
+ * One request object per run, built once: the paragraph cache means a
1102
+ * paragraph is laid out once per distinct request, so this runs once
1103
+ * per paragraph rather than once per frame.
1104
+ */
1105
+ declare function spannedRunsFor(request: TextMeasureRequest, runs: Pick<TextRunMeasurer, 'measureRunWidth'>): SpannedRuns | undefined;
1106
+ /**
1107
+ * Base class for measurers: implement the two primitives and the
1108
+ * paragraph algorithm does the rest.
1109
+ *
1110
+ * **Every paragraph is laid out once per distinct request.** The same
1111
+ * request arrives several times a frame and on every frame after: the
1112
+ * layout engine asks when it measures the node, and both renderers ask
1113
+ * again when they paint it, because a `PaintState` and a box are all a
1114
+ * renderer holds. Without a cache a repaint is a line break, and a
1115
+ * transition that repaints the whole screen for half a second breaks
1116
+ * every paragraph on it sixty times a second. Measured on Sluice's
1117
+ * Bluesky feed opening a post: 30 to 50 ms a frame in `segmentParagraph`,
1118
+ * `measureRunWidth` and `applySpacing`, against under 13 ms on the same
1119
+ * click over short Wikipedia titles. The cache is keyed by every field
1120
+ * of the request, so a paragraph that changed in any way is laid out
1121
+ * again, and it is least-recently-used with a cap, so a feed that
1122
+ * mounts forty new rows a second does not grow it without bound.
1123
+ *
1124
+ * The result is shared between callers and must not be mutated.
1125
+ */
1126
+ declare abstract class ParagraphTextMeasurer implements TextMeasurer, TextRunMeasurer {
1127
+ private readonly paragraphs;
1128
+ /**
1129
+ * Paragraphs that came out the same at every width they fit in, by
1130
+ * their key without the width; see `layoutFitsAnyWidth`.
1131
+ *
1132
+ * A resize asks every paragraph again at a width a few pixels from
1133
+ * the last, and a title, a caption or a label that fitted before
1134
+ * fits still: its lines, its box and everything else are what they
1135
+ * were. Keyed by its width as well, each of those missed on every
1136
+ * step of a dragged window edge and was laid out again, and the
1137
+ * box it was then painted in (its own width, exact) missed once
1138
+ * more.
1139
+ */
1140
+ private readonly fitting;
1141
+ private generations;
1142
+ abstract measureRunWidth(text: string, request: TextMeasureRequest): number;
1143
+ abstract fontMetrics(request: TextMeasureRequest): FontMetrics;
1144
+ layout(request: TextMeasureRequest): ParagraphLayout;
1145
+ measure(request: TextMeasureRequest): Size;
1146
+ /** How many paragraphs are remembered right now; for specs. */
1147
+ get cachedParagraphs(): number;
1148
+ get generation(): number;
1149
+ /**
1150
+ * Forgets every laid-out paragraph. A subclass that caches its own
1151
+ * primitives overrides this and calls it, so a font that finished
1152
+ * loading invalidates the lines as well as the widths they were
1153
+ * built from.
1154
+ */
1155
+ invalidate(): void;
1156
+ }
1157
+ interface FixedMetricsOptions {
1158
+ /** Advance of every glyph as a fraction of the font size. Default 0.6. */
1159
+ glyphWidth?: number;
1160
+ /** Ascent as a fraction of the font size. Default 0.8. */
1161
+ ascent?: number;
1162
+ /** Descent as a fraction of the font size. Default 0.2. */
1163
+ descent?: number;
1164
+ }
1165
+ /**
1166
+ * Deterministic measurer: every glyph is `glyphWidth` em wide, the
1167
+ * font is `ascent + descent` em tall, and the default line is 1.2em.
1168
+ *
1169
+ * Intended for tests and headless environments. With `glyphWidth: 1`
1170
+ * it reproduces the Ahem test font exactly, which is how the layout
1171
+ * conformance fixtures compare real wrapping text against Chrome.
1172
+ */
1173
+ declare class CharacterCountTextMeasurer extends ParagraphTextMeasurer {
1174
+ private readonly glyphWidth;
1175
+ private readonly ascentFactor;
1176
+ private readonly descentFactor;
1177
+ constructor(options?: FixedMetricsOptions);
1178
+ measureRunWidth(text: string, request: TextMeasureRequest): number;
1179
+ fontMetrics(request: TextMeasureRequest): FontMetrics;
1180
+ }
1181
+ //#endregion
892
1182
  //#region src/layout/LayoutRecord.d.ts
1183
+ /** A text leaf's paragraph, the request it was laid out for, and the measurer generation it was laid out under. */
1184
+ interface TextMemo {
1185
+ readonly request: TextMeasureRequest;
1186
+ readonly paragraph: ParagraphLayout;
1187
+ readonly generation: number;
1188
+ /** The paragraph is the same at any width it fits in; see `layoutFitsAnyWidth`. */
1189
+ readonly fitsAnyWidth: boolean;
1190
+ }
893
1191
  /**
894
1192
  * Mutable per-node layout projection owned by LayoutEngine.
895
1193
  *
@@ -1124,6 +1422,23 @@ declare class LayoutRecord {
1124
1422
  contentHeight: number;
1125
1423
  /** Constraints this record was last measured under. */
1126
1424
  lastConstraints: Constraints;
1425
+ /**
1426
+ * The paragraphs a text leaf was last measured as, one asked with a
1427
+ * width and one without; see `LayoutEngine.measureLeaf`. Flex asks
1428
+ * an item both questions every pass (its max-content basis, then its
1429
+ * final width), so one slot would be overwritten by the other every
1430
+ * time. Null until the node is measured as text that way.
1431
+ *
1432
+ * **Not reset.** These are the one thing a record carries from one
1433
+ * full pass into the next, on purpose: a full pass re-asks every
1434
+ * text leaf, and a memo that every pass cleared would answer
1435
+ * nothing a resize asks. They are safe to keep because they check
1436
+ * themselves — a memo is used only when every field of the request
1437
+ * it was laid out for matches and the measurer has not been
1438
+ * invalidated since — rather than trusting that nothing changed.
1439
+ */
1440
+ textBounded: TextMemo | null;
1441
+ textUnbounded: TextMemo | null;
1127
1442
  /**
1128
1443
  * The percentage base the current measurement resolved against, and
1129
1444
  * whether the node has a length that resolves against one.
@@ -1214,6 +1529,20 @@ declare class LayoutRecord {
1214
1529
  propsPass: number;
1215
1530
  propsBaseWidth: number | undefined;
1216
1531
  propsBaseHeight: number | undefined;
1532
+ /**
1533
+ * The node's `propertyVersion` when its layout properties were last
1534
+ * resolved, and whether that resolution read the node and nothing
1535
+ * else (no inherited direction, no scroll leader). Together with the
1536
+ * percentage base they let a later pass, a full one included, keep
1537
+ * what the last one resolved instead of reading forty properties
1538
+ * again; see `LayoutEngine.resolveLayoutProps`.
1539
+ *
1540
+ * **Not reset,** with the fields they vouch for: `reset()` leaves
1541
+ * every field `resolveLayoutProps` writes as it was, because these
1542
+ * say whether it is still right.
1543
+ */
1544
+ propsVersion: number;
1545
+ propsFromNodeAlone: boolean;
1217
1546
  /**
1218
1547
  * Returns the record to the state a freshly constructed one is in,
1219
1548
  * so a full layout can reuse the object instead of replacing it.
@@ -1228,7 +1557,9 @@ declare class LayoutRecord {
1228
1557
  * never reused across.
1229
1558
  *
1230
1559
  * **Every field above has to appear here, with the value it is
1231
- * declared with.** A field that is added and not reset would carry
1560
+ * declared with,** but the two text memos and the resolved layout
1561
+ * properties, which check themselves and are kept across passes on
1562
+ * purpose. A field that is added and not reset would carry
1232
1563
  * one pass's answer into the next, which is the kind of fault that
1233
1564
  * shows as a stale box on a screen and as nothing at all in a test
1234
1565
  * that lays out once. `LayoutRecord.spec.ts` compares a reset record
@@ -1724,8 +2055,23 @@ declare class UiNode {
1724
2055
  * opacity → 0.5
1725
2056
  * visible → true
1726
2057
  * width → 200
2058
+ *
2059
+ * Read it directly; write it through `setProperty` and
2060
+ * `removeProperty`, which count the change in `propertyVersion`.
1727
2061
  */
1728
2062
  readonly properties: Map<string, unknown>;
2063
+ /**
2064
+ * Counts writes to `properties`.
2065
+ *
2066
+ * Lets something derived from a node's own properties tell that it
2067
+ * is still right without reading them again. The layout engine
2068
+ * resolves forty of them into each record, and on a full pass over a
2069
+ * tree where nothing changed that reading was most of a sixth of the
2070
+ * pass. A counter is exact where a dirty flag is not: flags are
2071
+ * cleared by whichever pass runs next, and a record is resolved by
2072
+ * whichever pass reaches it.
2073
+ */
2074
+ propertyVersion: number;
1729
2075
  /**
1730
2076
  * Values a modifier has written over the element's own.
1731
2077
  *
@@ -1765,6 +2111,8 @@ declare class UiNode {
1765
2111
  isDirty(): boolean;
1766
2112
  getProperty<T>(property: NodeProperty): T | undefined;
1767
2113
  setProperty<T>(property: NodeProperty, value: T): void;
2114
+ /** Removes a property; whether it was there. */
2115
+ removeProperty(property: NodeProperty): boolean;
1768
2116
  }
1769
2117
  //#endregion
1770
2118
  //#region src/layout/LayoutTypes.d.ts
@@ -3027,8 +3375,13 @@ declare class UiFocusManager {
3027
3375
  * when that scope was pushed, when that node is still in the tree
3028
3376
  * and still focusable. Otherwise focus is dropped rather than left
3029
3377
  * on a node the scope was hiding.
3378
+ *
3379
+ * Given its root, only that scope ends: none, when it has gone already
3380
+ * (its subtree removed, which pops it), so a trap released after its
3381
+ * content was taken away cannot end the one under it, a submenu's
3382
+ * menu's; and one under another is taken out where it is.
3030
3383
  */
3031
- popScope(): void;
3384
+ popScope(root?: UiNode): void;
3032
3385
  /**
3033
3386
  * Reacts to a subtree leaving the graph.
3034
3387
  *
@@ -6571,6 +6924,12 @@ declare const UiProperties: {
6571
6924
  readonly multiline: UiPropertyDefinition<boolean | undefined>;
6572
6925
  /** The text can be selected and copied but not changed. */
6573
6926
  readonly readOnly: UiPropertyDefinition<boolean | undefined>;
6927
+ /**
6928
+ * A password field: every character is drawn as a bullet, copy and
6929
+ * cut take nothing, and the shell edits it through a password input.
6930
+ * The value itself is unchanged. Single-line only.
6931
+ */
6932
+ readonly secret: UiPropertyDefinition<boolean | undefined>;
6574
6933
  /** Colour of the caret; defaults to the text colour. */
6575
6934
  readonly caretColor: UiPropertyDefinition<UiColorValue | undefined>;
6576
6935
  /** Colour behind selected text; defaults to a translucent theme primary. */
@@ -7009,7 +7368,7 @@ type TextProps = CommonProps & TextContentProps;
7009
7368
  * offset into the model's string, and runs describing a different one
7010
7369
  * would put the glyphs where the caret does not agree with them.
7011
7370
  */
7012
- type EditableTextProps = CommonProps & PropsOf<'value' | 'spans' | 'placeholder' | 'multiline' | 'readOnly' | 'textWrap' | 'verticalAlign' | 'caretColor' | 'selectionColor' | 'placeholderColor'>;
7371
+ type EditableTextProps = CommonProps & PropsOf<'value' | 'spans' | 'placeholder' | 'multiline' | 'readOnly' | 'secret' | 'textWrap' | 'verticalAlign' | 'caretColor' | 'selectionColor' | 'placeholderColor'>;
7013
7372
  /**
7014
7373
  * A Box stacks its children in one content box, aligned by `x` / `y`,
7015
7374
  * and may draw an image behind them.
@@ -8021,378 +8380,120 @@ declare function graphemeBoundaries(text: string): number[];
8021
8380
  * of its own so word moves never skip a line.
8022
8381
  */
8023
8382
  declare function nextWordEnd(text: string, index: number): number;
8024
- /**
8025
- * Where a word-wise move to the left stops: back over spaces and
8026
- * punctuation, to the start of the previous word.
8027
- */
8028
- declare function previousWordStart(text: string, index: number): number;
8029
- /**
8030
- * The word under `index`, for a double-click: a run of word
8031
- * characters, else the run of whatever else is there (spaces,
8032
- * punctuation), never crossing a newline.
8033
- */
8034
- declare function wordRangeAt(text: string, index: number): {
8035
- start: number;
8036
- end: number;
8037
- };
8038
- /** The offset just after the previous newline, or 0. */
8039
- declare function lineStartAt(text: string, index: number): number;
8040
- /** The offset of the next newline, or `text.length`. */
8041
- declare function lineEndAt(text: string, index: number): number;
8042
- //#endregion
8043
- //#region src/editing/TextGeometry.d.ts
8044
- /**
8045
- * A placed line, as `placeLines` in the text renderer produces: the
8046
- * source offsets it covers, its box after alignment, and its text.
8047
- */
8048
- interface PlacedLine {
8049
- readonly text: string;
8050
- readonly start: number;
8051
- readonly end: number;
8052
- readonly x: number;
8053
- readonly y: number;
8054
- readonly width: number;
8055
- readonly height: number;
8056
- }
8057
- /**
8058
- * The advance width of a run in the paragraph's font.
8059
- *
8060
- * `start` is the run's first character's offset in the source text,
8061
- * and is what a paragraph with runs of its own needs to know which
8062
- * font to measure in; a paragraph in one font ignores it. Omitted for
8063
- * a string that is not in the text at all, such as the space a
8064
- * selection past the end of a line is widened by.
8065
- */
8066
- type RunMeasure = (text: string, start?: number) => number;
8067
- interface CaretRect {
8068
- x: number;
8069
- y: number;
8070
- height: number;
8071
- /** Index of the line the caret is on. */
8072
- line: number;
8073
- }
8074
- /**
8075
- * Caret and selection geometry over laid-out lines.
8076
- *
8077
- * The lines are the paragraph the layout engine sized the node with
8078
- * and the renderer draws, so a caret computed here sits exactly where
8079
- * the glyphs are. Widths come from the same measurer: the x of offset
8080
- * `n` on a line is the width of that line's first `n` characters.
8081
- *
8082
- * Direction: `rtl` mirrors every x against the line's right edge, so a
8083
- * right-to-left paragraph places its caret and selection from the
8084
- * right. Runs of mixed direction within one line are not reordered —
8085
- * the renderers do not shape them either — so this is direction-aware
8086
- * rather than fully bidirectional, and says so.
8087
- */
8088
- /**
8089
- * The line an offset belongs to. Hanging spaces at a wrap belong to
8090
- * the line before the break; the first character after the break
8091
- * starts the next line.
8092
- */
8093
- declare function lineIndexForOffset(lines: readonly PlacedLine[], offset: number): number;
8094
- /**
8095
- * The offset a line's caret positions run to, hanging spaces included:
8096
- * the text's end on the last line, else up to the break — the newline
8097
- * character itself, or the first character of the next line.
8098
- *
8099
- * `line.end` stops at the last glyph, since spaces at a wrap hang and
8100
- * have no width in layout. The caret still has to move through them,
8101
- * as it does in a textarea, so geometry measures them from `text`.
8102
- */
8103
- declare function lineLimit(lines: readonly PlacedLine[], index: number, text: string): number;
8104
- /** Where the caret for `offset` is drawn. */
8105
- declare function caretRectFor(lines: readonly PlacedLine[], text: string, offset: number, measure: RunMeasure, rtl: boolean): CaretRect;
8106
- /** The line whose box contains `y`, clamped to the first and last. */
8107
- declare function lineIndexAtY(lines: readonly PlacedLine[], y: number): number;
8108
- /** The caret position nearest to a point: the boundary closest to `x` on the line under `y`. */
8109
- declare function offsetAtPoint(lines: readonly PlacedLine[], text: string, x: number, y: number, measure: RunMeasure, rtl: boolean): number;
8110
- /**
8111
- * The caret position on one line nearest to `x`. Widths grow with the
8112
- * prefix, so the boundary is found by bisection: O(log n) measures per
8113
- * click on a line of n graphemes.
8114
- *
8115
- * On the last line the trailing spaces are positions too, so a click
8116
- * past the text lands after them. On a wrapped line the hanging spaces
8117
- * are not: a click past the glyphs stops before the break, as it does
8118
- * in a textarea.
8119
- */
8120
- declare function offsetAtX(lines: readonly PlacedLine[], index: number, text: string, x: number, measure: RunMeasure, rtl: boolean): number;
8121
- /**
8122
- * The offset a vertical move lands on: the position nearest the
8123
- * caret's x (or `goalX`, the x of the line the run of moves started
8124
- * on) on the adjacent line. Null when there is no line that way, which
8125
- * callers turn into "go to the start / end of the text".
8126
- */
8127
- declare function offsetForVerticalMove(lines: readonly PlacedLine[], text: string, offset: number, direction: -1 | 1, measure: RunMeasure, rtl: boolean, goalX?: number): {
8128
- offset: number;
8129
- x: number;
8130
- } | null;
8131
- /**
8132
- * The boxes covering `[start, end)`, one per line touched. Hanging
8133
- * spaces inside the range are highlighted at their width; a line the
8134
- * range runs past with nothing hanging gets a space's width more, so a
8135
- * selected line break is visible.
8136
- */
8137
- declare function selectionRects(lines: readonly PlacedLine[], text: string, start: number, end: number, measure: RunMeasure, rtl: boolean): LayoutBox[];
8138
- //#endregion
8139
- //#region src/layout/TextMeasurer.d.ts
8140
- type TextWrap = 'word' | 'char' | 'none';
8141
- type TextOverflow = 'clip' | 'ellipsis';
8142
- /**
8143
- * The font a piece of text is measured in.
8144
- *
8145
- * Structural rather than imported so that layout keeps depending on
8146
- * nothing above it; a `UiResolvedTextSpan` is one of these plus the
8147
- * fields that only paint reads.
8148
- */
8149
- interface TextRunStyle {
8150
- fontFamily?: string;
8151
- fontWeight?: string | number;
8152
- fontSize?: number;
8153
- fontStyle?: string;
8154
- fontStretch?: string;
8155
- fontVariant?: string;
8156
- fontKerning?: string;
8157
- letterSpacing?: number;
8158
- }
8159
- /** A run of the paragraph with a font of its own, as offsets into the text. */
8160
- interface TextRunSpan extends TextRunStyle {
8161
- readonly start: number;
8162
- readonly end: number;
8163
- /**
8164
- * The run is in the text but takes no room: every width that touches
8165
- * it counts it as nothing, and a line's `runs` leave it out, so no
8166
- * renderer has anything to draw for it.
8167
- */
8168
- readonly hidden?: boolean;
8169
- }
8170
- interface TextMeasureRequest {
8171
- text: string;
8172
- fontSize: number;
8173
- /** Available width. Wrapping and fit-content sizing happen against it. */
8174
- maxWidth?: number;
8175
- /**
8176
- * Font family for platforms that can shape text.
8177
- *
8178
- * Deterministic measurers may ignore every style field; they
8179
- * are hints for platform-backed implementations only.
8180
- */
8181
- fontFamily?: string;
8182
- fontWeight?: string | number;
8183
- lineHeight?: number;
8184
- letterSpacing?: number;
8185
- fontStyle?: string;
8186
- fontStretch?: string;
8187
- fontVariant?: string;
8188
- fontKerning?: string;
8189
- /** Default 'word'. */
8190
- wrap?: TextWrap;
8191
- /** Keep at most this many lines. */
8192
- maxLines?: number;
8193
- /** What happens to a line that does not fit. Default 'clip'. */
8194
- overflow?: TextOverflow;
8195
- /**
8196
- * Runs of `text` with a font of their own, in order and not
8197
- * overlapping. Text outside every run is measured in the request's
8198
- * own font.
8199
- *
8200
- * Only the fields that change a width are here. A run that differs
8201
- * from its neighbours only in colour, background or underline is not
8202
- * in this list at all, so it costs a paint and never a re-layout.
8203
- */
8204
- spans?: readonly TextRunSpan[];
8205
- }
8206
- /** One run of a line: where it sits in the line and which span it came from. */
8207
- interface TextLineRun {
8208
- /** Index into the request's `spans`, or -1 for text outside every run. */
8209
- span: number;
8210
- /** Offsets into the source text. */
8211
- start: number;
8212
- end: number;
8213
- text: string;
8214
- /** Distance from the line's left edge to this run's left edge. */
8215
- x: number;
8216
- width: number;
8217
- }
8218
- /** One laid-out line. `text` is what gets drawn and may end in an ellipsis. */
8219
- interface TextLine {
8220
- /** Offsets into the source text; hanging spaces and the ellipsis are outside them. */
8383
+ /**
8384
+ * Where a word-wise move to the left stops: back over spaces and
8385
+ * punctuation, to the start of the previous word.
8386
+ */
8387
+ declare function previousWordStart(text: string, index: number): number;
8388
+ /**
8389
+ * The word under `index`, for a double-click: a run of word
8390
+ * characters, else the run of whatever else is there (spaces,
8391
+ * punctuation), never crossing a newline.
8392
+ */
8393
+ declare function wordRangeAt(text: string, index: number): {
8221
8394
  start: number;
8222
8395
  end: number;
8223
- text: string;
8224
- width: number;
8225
- /**
8226
- * The line cut at its runs, present only for a paragraph that has
8227
- * spans. A hidden run is not among them.
8228
- *
8229
- * Measured once, here, where the line's own width is measured. That
8230
- * is what keeps a spanned paragraph as cheap to paint as a plain
8231
- * one: a renderer walks these and asks the platform for nothing.
8232
- */
8233
- runs?: readonly TextLineRun[];
8234
- }
8235
- interface FontMetrics {
8236
- /** Distance from the alphabetic baseline to the top of the glyph box. */
8237
- ascent: number;
8238
- /** Distance from the alphabetic baseline to the bottom of the glyph box. */
8239
- descent: number;
8396
+ };
8397
+ /** The offset just after the previous newline, or 0. */
8398
+ declare function lineStartAt(text: string, index: number): number;
8399
+ /** The offset of the next newline, or `text.length`. */
8400
+ declare function lineEndAt(text: string, index: number): number;
8401
+ //#endregion
8402
+ //#region src/editing/TextGeometry.d.ts
8403
+ /**
8404
+ * A placed line, as `placeLines` in the text renderer produces: the
8405
+ * source offsets it covers, its box after alignment, and its text.
8406
+ */
8407
+ interface PlacedLine {
8408
+ readonly text: string;
8409
+ readonly start: number;
8410
+ readonly end: number;
8411
+ readonly x: number;
8412
+ readonly y: number;
8413
+ readonly width: number;
8414
+ readonly height: number;
8240
8415
  }
8241
8416
  /**
8242
- * A measured paragraph: everything layout, alignment and painting need.
8417
+ * The advance width of a run in the paragraph's font.
8243
8418
  *
8244
- * `width` is fit-content, `height` is lines × lineHeight, and
8245
- * `firstBaseline` is the distance from the paragraph top to the first
8246
- * line's alphabetic baseline (half-leading plus ascent).
8419
+ * `start` is the run's first character's offset in the source text,
8420
+ * and is what a paragraph with runs of its own needs to know which
8421
+ * font to measure in; a paragraph in one font ignores it. Omitted for
8422
+ * a string that is not in the text at all, such as the space a
8423
+ * selection past the end of a line is widened by.
8247
8424
  */
8248
- interface ParagraphLayout {
8249
- lines: TextLine[];
8250
- width: number;
8425
+ type RunMeasure = (text: string, start?: number) => number;
8426
+ interface CaretRect {
8427
+ x: number;
8428
+ y: number;
8251
8429
  height: number;
8252
- lineHeight: number;
8253
- ascent: number;
8254
- descent: number;
8255
- firstBaseline: number;
8256
- /** Widest unbreakable segment under the requested wrap mode. */
8257
- minContentWidth: number;
8258
- /** Width with no wrapping at all. */
8259
- maxContentWidth: number;
8430
+ /** Index of the line the caret is on. */
8431
+ line: number;
8260
8432
  }
8261
8433
  /**
8262
- * Abstraction between layout and text platforms.
8434
+ * Caret and selection geometry over laid-out lines.
8263
8435
  *
8264
- * Layout never measures text itself; a platform layer
8265
- * (Canvas2D, WebGPU, tests) supplies an implementation.
8436
+ * The lines are the paragraph the layout engine sized the node with
8437
+ * and the renderer draws, so a caret computed here sits exactly where
8438
+ * the glyphs are. Widths come from the same measurer: the x of offset
8439
+ * `n` on a line is the width of that line's first `n` characters.
8440
+ *
8441
+ * Direction: `rtl` mirrors every x against the line's right edge, so a
8442
+ * right-to-left paragraph places its caret and selection from the
8443
+ * right. Runs of mixed direction within one line are not reordered —
8444
+ * the renderers do not shape them either — so this is direction-aware
8445
+ * rather than fully bidirectional, and says so.
8266
8446
  */
8267
- interface TextMeasurer {
8268
- measure(request: TextMeasureRequest): Size;
8269
- layout(request: TextMeasureRequest): ParagraphLayout;
8270
- /**
8271
- * The advance width of one run in the request's font. Caret and
8272
- * selection geometry is built from prefix widths, so it has to come
8273
- * from the same source as the line widths.
8274
- */
8275
- measureRunWidth(text: string, request: TextMeasureRequest): number;
8276
- /**
8277
- * Forgets every cached answer. Called when what a font string means
8278
- * has changed under the measurer: a declared face finished loading,
8279
- * so widths measured with its fallback are wrong now. Measurers with
8280
- * nothing cached need not implement it.
8281
- */
8282
- invalidate?(): void;
8283
- }
8284
8447
  /**
8285
- * The primitive a platform has to provide: the advance width of one
8286
- * run of text, and the font's vertical metrics. Everything above it
8287
- * is shared (see ParagraphLayout.ts).
8448
+ * The line an offset belongs to. Hanging spaces at a wrap belong to
8449
+ * the line before the break; the first character after the break
8450
+ * starts the next line.
8288
8451
  */
8289
- interface TextRunMeasurer {
8290
- measureRunWidth(text: string, request: TextMeasureRequest): number;
8291
- fontMetrics(request: TextMeasureRequest): FontMetrics;
8292
- }
8452
+ declare function lineIndexForOffset(lines: readonly PlacedLine[], offset: number): number;
8293
8453
  /**
8294
- * The widths of a paragraph whose runs have fonts of their own.
8454
+ * The offset a line's caret positions run to, hanging spaces included:
8455
+ * the text's end on the last line, else up to the break — the newline
8456
+ * character itself, or the first character of the next line.
8295
8457
  *
8296
- * Everything above it — line breaking, hanging blanks, the ellipsis,
8297
- * caret and selection geometry — asks for the width of a stretch of
8298
- * the text by its offsets rather than by its characters, and this
8299
- * splits that stretch at the run boundaries and measures each piece in
8300
- * its own font. That is the whole of what a span costs: the paragraph
8301
- * algorithm is unchanged, and a paragraph with no spans never builds
8302
- * one of these at all.
8458
+ * `line.end` stops at the last glyph, since spaces at a wrap hang and
8459
+ * have no width in layout. The caret still has to move through them,
8460
+ * as it does in a textarea, so geometry measures them from `text`.
8303
8461
  */
8304
- interface SpannedRuns {
8305
- /** The runs, as the request gave them. */
8306
- readonly spans: readonly TextRunSpan[];
8307
- /** Index of the run covering `offset`, or -1 where no run does. */
8308
- indexAt(offset: number): number;
8309
- /** The request an offset is measured with: its run's, or the paragraph's. */
8310
- requestAt(offset: number): TextMeasureRequest;
8311
- /** Whether the character at `offset` is in a hidden run. */
8312
- hiddenAt(offset: number): boolean;
8313
- /** Width of `text.slice(start, end)`, measured run by run. */
8314
- width(text: string, start: number, end: number): number;
8315
- /**
8316
- * Width of a string that is not in the text, in the font of the run
8317
- * covering `offset`: the ellipsis, and the space a tab is counted
8318
- * as.
8319
- */
8320
- widthOf(run: string, offset: number): number;
8321
- /**
8322
- * `text.slice(start, end)` cut at the run boundaries, each piece
8323
- * placed from `x`. Hidden pieces take no room and are left out.
8324
- */
8325
- cut(text: string, start: number, end: number, x: number): TextLineRun[];
8326
- }
8462
+ declare function lineLimit(lines: readonly PlacedLine[], index: number, text: string): number;
8463
+ /** Where the caret for `offset` is drawn. */
8464
+ declare function caretRectFor(lines: readonly PlacedLine[], text: string, offset: number, measure: RunMeasure, rtl: boolean): CaretRect;
8465
+ /** The line whose box contains `y`, clamped to the first and last. */
8466
+ declare function lineIndexAtY(lines: readonly PlacedLine[], y: number): number;
8467
+ /** The caret position nearest to a point: the boundary closest to `x` on the line under `y`. */
8468
+ declare function offsetAtPoint(lines: readonly PlacedLine[], text: string, x: number, y: number, measure: RunMeasure, rtl: boolean): number;
8327
8469
  /**
8328
- * Builds the run widths for a request, or undefined when it has no
8329
- * runs.
8470
+ * The caret position on one line nearest to `x`. Widths grow with the
8471
+ * prefix, so the boundary is found by bisection: O(log n) measures per
8472
+ * click on a line of n graphemes.
8330
8473
  *
8331
- * One request object per run, built once: the paragraph cache means a
8332
- * paragraph is laid out once per distinct request, so this runs once
8333
- * per paragraph rather than once per frame.
8474
+ * On the last line the trailing spaces are positions too, so a click
8475
+ * past the text lands after them. On a wrapped line the hanging spaces
8476
+ * are not: a click past the glyphs stops before the break, as it does
8477
+ * in a textarea.
8334
8478
  */
8335
- declare function spannedRunsFor(request: TextMeasureRequest, runs: Pick<TextRunMeasurer, 'measureRunWidth'>): SpannedRuns | undefined;
8479
+ declare function offsetAtX(lines: readonly PlacedLine[], index: number, text: string, x: number, measure: RunMeasure, rtl: boolean): number;
8336
8480
  /**
8337
- * Base class for measurers: implement the two primitives and the
8338
- * paragraph algorithm does the rest.
8339
- *
8340
- * **Every paragraph is laid out once per distinct request.** The same
8341
- * request arrives several times a frame and on every frame after: the
8342
- * layout engine asks when it measures the node, and both renderers ask
8343
- * again when they paint it, because a `PaintState` and a box are all a
8344
- * renderer holds. Without a cache a repaint is a line break, and a
8345
- * transition that repaints the whole screen for half a second breaks
8346
- * every paragraph on it sixty times a second. Measured on Sluice's
8347
- * Bluesky feed opening a post: 30 to 50 ms a frame in `segmentParagraph`,
8348
- * `measureRunWidth` and `applySpacing`, against under 13 ms on the same
8349
- * click over short Wikipedia titles. The cache is keyed by every field
8350
- * of the request, so a paragraph that changed in any way is laid out
8351
- * again, and it is least-recently-used with a cap, so a feed that
8352
- * mounts forty new rows a second does not grow it without bound.
8353
- *
8354
- * The result is shared between callers and must not be mutated.
8481
+ * The offset a vertical move lands on: the position nearest the
8482
+ * caret's x (or `goalX`, the x of the line the run of moves started
8483
+ * on) on the adjacent line. Null when there is no line that way, which
8484
+ * callers turn into "go to the start / end of the text".
8355
8485
  */
8356
- declare abstract class ParagraphTextMeasurer implements TextMeasurer, TextRunMeasurer {
8357
- private readonly paragraphs;
8358
- abstract measureRunWidth(text: string, request: TextMeasureRequest): number;
8359
- abstract fontMetrics(request: TextMeasureRequest): FontMetrics;
8360
- layout(request: TextMeasureRequest): ParagraphLayout;
8361
- measure(request: TextMeasureRequest): Size;
8362
- /** How many paragraphs are remembered right now; for specs. */
8363
- get cachedParagraphs(): number;
8364
- /**
8365
- * Forgets every laid-out paragraph. A subclass that caches its own
8366
- * primitives overrides this and calls it, so a font that finished
8367
- * loading invalidates the lines as well as the widths they were
8368
- * built from.
8369
- */
8370
- invalidate(): void;
8371
- }
8372
- interface FixedMetricsOptions {
8373
- /** Advance of every glyph as a fraction of the font size. Default 0.6. */
8374
- glyphWidth?: number;
8375
- /** Ascent as a fraction of the font size. Default 0.8. */
8376
- ascent?: number;
8377
- /** Descent as a fraction of the font size. Default 0.2. */
8378
- descent?: number;
8379
- }
8486
+ declare function offsetForVerticalMove(lines: readonly PlacedLine[], text: string, offset: number, direction: -1 | 1, measure: RunMeasure, rtl: boolean, goalX?: number): {
8487
+ offset: number;
8488
+ x: number;
8489
+ } | null;
8380
8490
  /**
8381
- * Deterministic measurer: every glyph is `glyphWidth` em wide, the
8382
- * font is `ascent + descent` em tall, and the default line is 1.2em.
8383
- *
8384
- * Intended for tests and headless environments. With `glyphWidth: 1`
8385
- * it reproduces the Ahem test font exactly, which is how the layout
8386
- * conformance fixtures compare real wrapping text against Chrome.
8491
+ * The boxes covering `[start, end)`, one per line touched. Hanging
8492
+ * spaces inside the range are highlighted at their width; a line the
8493
+ * range runs past with nothing hanging gets a space's width more, so a
8494
+ * selected line break is visible.
8387
8495
  */
8388
- declare class CharacterCountTextMeasurer extends ParagraphTextMeasurer {
8389
- private readonly glyphWidth;
8390
- private readonly ascentFactor;
8391
- private readonly descentFactor;
8392
- constructor(options?: FixedMetricsOptions);
8393
- measureRunWidth(text: string, request: TextMeasureRequest): number;
8394
- fontMetrics(request: TextMeasureRequest): FontMetrics;
8395
- }
8496
+ declare function selectionRects(lines: readonly PlacedLine[], text: string, start: number, end: number, measure: RunMeasure, rtl: boolean): LayoutBox[];
8396
8497
  //#endregion
8397
8498
  //#region src/selection/UiSelectable.d.ts
8398
8499
  /**
@@ -8977,6 +9078,13 @@ declare class EditableLayout {
8977
9078
  readonly placeholderLines: readonly TextLinePlacement[];
8978
9079
  readonly measure: RunMeasure;
8979
9080
  readonly rtl: boolean;
9081
+ /**
9082
+ * The text as drawn: the model's, or a secret field's mask of it
9083
+ * (see `maskText`). The geometry is the drawing's, so it is measured
9084
+ * from this; the two are the same length, so its offsets are the
9085
+ * model's.
9086
+ */
9087
+ readonly text: string;
8980
9088
  constructor(model: EditableTextModel, box: LayoutBox, state: PaintState, measurer: TextMeasurer);
8981
9089
  caretRect(offset?: number): CaretRect;
8982
9090
  /**
@@ -9090,6 +9198,7 @@ declare function editorOf(node: UiNode): EditableTextModel | undefined;
9090
9198
  /** Applies a changed `value` property to the model; see editorFor. */
9091
9199
  declare function syncEditorValue(node: UiNode, model: EditableTextModel): void;
9092
9200
  declare function isEditableNode(node: UiNode): boolean;
9201
+ /** Whether Enter inserts a newline. Never in a secret field, which is one line, as a password input is. */
9093
9202
  declare function isMultiline(node: UiNode): boolean;
9094
9203
  declare function isReadOnly(node: UiNode): boolean;
9095
9204
  /**
@@ -11509,6 +11618,14 @@ interface EditingState {
11509
11618
  * `UiEditingGroup.copyHtml`). Absent otherwise.
11510
11619
  */
11511
11620
  readonly html?: string;
11621
+ /**
11622
+ * A secret field (`UiProperties.secret`). `text` is then its mask,
11623
+ * not its value, so the value never leaves the runtime; `clipboard`
11624
+ * is empty, so a copy or a cut takes nothing. A shell edits it
11625
+ * through a password input, which is what tells the platform not to
11626
+ * learn, correct or read out what is typed.
11627
+ */
11628
+ readonly secret?: true;
11512
11629
  }
11513
11630
  interface EditingControllerOptions {
11514
11631
  /** Keyboard conventions; detected from the user agent by default. */
@@ -12305,6 +12422,8 @@ declare class UiHostFrameClock implements UiFrameClock {
12305
12422
  /** This thread's own `requestAnimationFrame`, or null where there is none. */
12306
12423
  private local;
12307
12424
  private localHandle;
12425
+ /** Whether the page is hidden, when this thread's refreshes do not come. */
12426
+ private hidden;
12308
12427
  private readonly timeOrigin;
12309
12428
  /** Gaps between this thread's own refreshes while frames ran back to back. */
12310
12429
  private readonly localIntervals;
@@ -12333,6 +12452,13 @@ declare class UiHostFrameClock implements UiFrameClock {
12333
12452
  /** Whether this clock is driving itself from the compositor. */
12334
12453
  get isLocal(): boolean;
12335
12454
  requestFrame(): void;
12455
+ /**
12456
+ * The page was hidden or shown. While it is hidden this thread's own
12457
+ * refreshes stop, so a frame asked for is paced by the timer, as a
12458
+ * hosted clock is when its host stops ticking; one already waiting
12459
+ * for a refresh that will not come is handed to the timer.
12460
+ */
12461
+ setHidden(hidden: boolean): void;
12336
12462
  /**
12337
12463
  * Tells the clock the display's interval, measured on the host's own
12338
12464
  * refreshes, and the host's \`timeOrigin\`, which puts the host's frame
@@ -12829,6 +12955,8 @@ declare class LayoutEngine {
12829
12955
  */
12830
12956
  private readonly stickyShifted;
12831
12957
  private readonly textMeasurer;
12958
+ /** Where `measureLeaf` resolves a text node's font; read before anything else can resolve one. */
12959
+ private readonly fontScratch;
12832
12960
  /**
12833
12961
  * The definite size percentages resolve against while a container's
12834
12962
  * children are measured: its content box. Undefined on an axis whose
@@ -12862,6 +12990,12 @@ declare class LayoutEngine {
12862
12990
  private boundsVersion;
12863
12991
  constructor(textMeasurer?: TextMeasurer);
12864
12992
  recordFor(node: UiNode): LayoutRecord | undefined;
12993
+ /**
12994
+ * Every `position: 'sticky'` node in the tree. A sticky node moves
12995
+ * with a scroll without its box moving, so a renderer keeping a
12996
+ * scroll container's pixels has to be told where they are.
12997
+ */
12998
+ allStickyNodes(): ReadonlySet<UiNode>;
12865
12999
  /**
12866
13000
  * A box around everything in a node's subtree that could take a
12867
13001
  * point, so a hit test can pass the subtree over instead of
@@ -13880,7 +14014,10 @@ declare const ELLIPSIS = "…";
13880
14014
  * narrower than the widest segment. When a segment is wider than the
13881
14015
  * available width the paragraph grows to it, and every line wraps
13882
14016
  * against that grown width rather than the one asked for, because that
13883
- * is the box the lines will be painted in.
14017
+ * is the box the lines will be painted in. When the width is the box's
14018
+ * own (`exactWidth`: a width set from outside, or the box being
14019
+ * painted), it does not grow: the lines wrap against it and the wide
14020
+ * segment overflows alone, as CSS wraps text in a box of a fixed width.
13884
14021
  *
13885
14022
  * The first baseline sits half the leading below the line top, plus the
13886
14023
  * ascent, with the half-leading floored to a whole pixel. That floor is
@@ -16032,6 +16169,12 @@ declare function drawOverlayShapes(ctx: Canvas2DContext, shapes: readonly Overla
16032
16169
  */
16033
16170
  interface LayoutReader {
16034
16171
  recordFor(node: UiNode): LayoutRecord | undefined;
16172
+ /**
16173
+ * Every `position: 'sticky'` node. A scroll layer reads it to repaint
16174
+ * where a sticky node was and is, since a scroll moves one without
16175
+ * moving its box. A reader without it gets no scroll layers.
16176
+ */
16177
+ allStickyNodes?(): ReadonlySet<UiNode>;
16035
16178
  }
16036
16179
  /**
16037
16180
  * Frame-level inputs handed to every renderer.
@@ -19263,5 +19406,5 @@ interface UiSemanticsAction {
19263
19406
  readonly value?: string;
19264
19407
  }
19265
19408
  //#endregion
19266
- export { Mp4AudioTrack as $, UiDroppedFile as $a, Responsive as $c, editableSpansOf as $d, UiBoxShadow as $f, cubicBezier as $g, colorsEqualPalette as $h, AxisExplanation as $i, UiPropertyName as $l, NodeId as $m, ScrollOffset as $n, scrollbarThumbs as $o, UiPropValue as $p, clickOutside as $r, PaintState as $s, registerFontStack as $t, UiThemeExtensionOptions as $u, offsetAtPointIn as A, resolveCursor as Aa, TextRunSpan as Ac, UiLayoutChild as Ad, UiRadialGradient as Af, defaultMotion as Ag, UiTextAlign as Ah, propertyValuesEqualByName as Ai, ContainerProps as Al, MotionStateInput as Am, LABEL_PADDING_X as An, overrideSources as Ao, UiModifierEnvironment as Ap, ImageResolver as Ar, CanvasTextStyle as As, createTextCache as At, LazyAxis as Au, markNow as B, touchActionFor as Ba, lineLimit as Bc, UiFontKerning as Bd, UiLength as Bf, transformIsIdentity as Bg, borderRadiusCorners as Bh, parseAlignContent as Bi, PaintProps as Bl, slideFrom as Bm, resolvePropertyByName as Bn, HitTestResult as Bo, UiModifierHost as Bp, ZoomState as Br, layoutTextLines as Bs, isWebGPUAvailable as Bt, VirtualUpdate as Bu, hasTextLinks as C, isNodeFocusable as Ca, SpannedRuns as Cc, UiTypography as Cd, MAX_GRADIENT_STOPS as Cf, UiTweenOptions as Cg, UiObjectFit as Ch, findPropertyDefinition as Ci, UiChildrenBinding as Cl, noKeyModifiers as Cm, LayerCanvasFactory as Cn, UiGestureRecognizer as Co, UiEditingGroup as Cp, IconContext as Cr, syncEditorValue as Cs, RenderList as Ct, SheetRowRenderer as Cu, setLinkHover as D, isNodeTabStop as Da, TextMeasurer as Dc, isTypographyRole as Dd, UiGradientOffset as Df, UiMotion as Dg, UiPosition as Dh, propertyEffects as Di, ButtonProps as Dl, MOTION_REST as Dm, LayoutReader as Dn, NodeTransitions as Do, comparePositions as Dp, iconKey as Dr, detectEditingPlatform as Ds, TEXTURED_STRIDE_FLOATS as Dt, UiVirtualSheetOptions as Du, linkRunAtPointIn as E, isNodeSelectable as Ea, TextMeasureRequest as Ec, defaultTypography as Ed, UiGradient as Ef, UiEasingToken as Eg, UiPointerEvents as Eh, inheritedPropertyNames as Ei, BoxProps as El, MOTION_CHANNELS as Em, UiRenderer as En, FocusNotifier as Eo, adjacentField as Ep, IconSpec as Er, commandForKey as Es, TEXTURED_STRIDE_BYTES as Et, UiVirtualSheet as Eu, UiFrameCallback as F, UiPlatformAdapter as Fa, PlacedLine as Fc, UiVisualStateSet as Fd, validateGradient as Ff, interpolatorFor as Fg, UiVerticalAlign as Fh, placeGridItems as Fi, GridItemProps as Fl, pop as Fm, CanvasSurface as Fn, UiFindController as Fo, assertModifierList as Fp, ShortcutsOptions as Fr, applyCanvasTextStyle as Fs, GlyphSlot as Ft, UiVirtualWindow as Fu, VttTrack as G, TouchScrollerOptions as Ga, graphemeBoundaries as Gc, UiSpannedText as Gd, isFrLength as Gf, colorToRgba as Gg, uniformBorderRadius as Gh, ELLIPSIS as Gi, ScrollViewProps as Gl, LayoutBox as Gm, InsetPaddingArgs as Gn, SCROLLBAR_INSET as Go, ComponentResolver as Gp, ReorderableOptions as Gr, Canvas2DContext as Gs, WebGPURenderer as Gt, videoFrameSize as Gu, performanceMarksEnabled as H, EditingHost as Ha, offsetAtX as Hc, UiFontStyle as Hd, auto as Hf, UiBasicColors as Hg, borderRadiusIsZero as Hh, parseMainAxisAlignment as Hi, PropsOf as Hl, SharedClaim as Hm, ThemeTokenTarget as Hn, UiHitTester as Ho, FocusOptions as Hp, AutoScrollOptions as Hr, runFontString as Hs, CapturedFrame as Ht, lazySource as Hu, UiScheduler as I, capturePointer as Ia, RunMeasure as Ic, defaultVisualState as Id, AutoLength as If, UiTransform as Ig, validateSubgrid as Ih, sizeGridTracks as Ii, GridProps as Il, resolveMotionState as Im, createCanvasSurface as In, SelectionControllerOptions as Io, UiModifier as Ip, contextMenu as Ir, buildFontString as Is, GlyphUpload as It, VIRTUAL_INDEX_PROP as Iu, ByteSource as J, UiDragPayload as Ja, nextGraphemeEnd as Jc, UiTextMetrics as Jd, minmax as Jf, normalizeColor as Jg, UiShapes as Jh, LayoutNotifier as Ji, TextProps as Jl, Size as Jm, publishInset as Jn, ScrollbarAxis as Jo, UiElement as Jp, reorderable as Jr, DEFAULT_FONT_SIZE as Js, WebGPUSurface as Jt, lightTheme as Ju, cueAt as K, UiTouchScroller as Ka, lineEndAt as Kc, UiTextDecoration as Kd, isMinMaxTrack as Kf, colorValuesEqual as Kg, UiShapeExtensions as Kh, layoutParagraph as Ki, StackProps as Kl, LayoutResult as Km, PublishInsetArgs as Kn, SCROLLBAR_MIN_THUMB as Ko, ComponentLikeElement as Kp, dragSource as Kr, Canvas2DGradient as Ks, WebGPURendererOptions as Kt, UiTheme as Ku, UiSchedulerOptions as L, isImeKey as La, caretRectFor as Lc, hasVisualState as Ld, FrLength as Lf, UiTransforms as Lg, UiBorderRadius as Lh, AlignContent as Li, IdentityProps as Ll, rotateFrom as Lm, resolveBoolean as Ln, SelectionHost as Lo, UiModifierKind as Lp, shortcut as Lr, createCanvasTextStyle as Ls, WebGPUGlyphAtlas as Lt, VIRTUAL_LEAD_PROP as Lu, paragraphGeometryFrom as M, PlatformAdapterOptions as Ma, TextWrap as Mc, UiLayoutProtocol as Md, gradientsEqual as Mf, interpolateColor as Mg, UiTextOverflowValue as Mh, GridItemRequest as Mi, EnvironmentProps as Ml, ResolvedMotionState as Mm, drawOverlayShapes as Mn, writeDeclaredProperty as Mo, UiModifierLayout as Mp, animateLayout as Mr, SpanPaint as Ms, textRuns as Mt, LazyItemRenderer as Mu, selectionRectsIn as N, PlatformEventTarget as Na, spannedRunsFor as Nc, isLayoutProtocol as Nd, linearGradient as Nf, interpolateNumber as Ng, UiTextWrapValue as Nh, GridPlacement as Ni, FlexContainerProps as Nl, fade as Nm, labelOrigin as Nn, writeOverrideProperty as No, UiModifierSet as Np, ContextMenuOptions as Nr, TextLinePlacement as Ns, GlyphShaper as Nt, LazyListOptions as Nu, ParagraphGeometry as O, isSubtreeInert as Oa, TextOverflow as Oc, typographyEqual as Od, UiGradientStop as Of, UiSpringSpec as Og, UiSelfAlignment as Oh, propertyIsInherited as Oi, ColumnProps as Ol, MotionChannel as Om, RenderChanges as On, resetTransitionWarnings as Oo, edgeField as Op, DefaultImageResolver as Or, isPrintable as Os, TextRunDraw as Ot, VIRTUAL_SHEET_PROP as Ou, wordRangeIn as P, PlatformSurface as Pa, CaretRect as Pc, UiVisualState as Pd, radialGradient as Pf, interpolateTransform as Pg, UiThemeColorName as Ph, GridTrack as Pi, FlexItemProps as Pl, isMotionRest as Pm, CanvasHost as Pn, FindHost as Po, UiUnknownModifierPropertyError as Pp, ShortcutOptions as Pr, TextRunRect as Ps, GLYPH_SUBPIXEL_PHASES as Pt, LazySourceArgs as Pu, rangeSource as Q, UiDropZone as Qa, wordRangeAt as Qc, defaultTextStyle as Qd, BOX_SHADOW_BLUR_REACH as Qf, UiEasing as Qg, UiColors as Qh, ScrollAdjustment as Qi, UiProperties as Ql, tightenConstraints as Qm, sizeContainer as Qn, scrollbarThumb as Qo, isUiElement as Qp, ClickOutsideOptions as Qr, PaintBoxShadow as Qs, fontStackFor as Qt, UiThemeExtension as Qu, MARK_PREFIX as R, pointerDeviceOf as Ra, lineIndexAtY as Rc, visualState as Rd, MinMaxTrack as Rf, parseTransform as Rg, UiBorderRadiuses as Rh, CrossAxisAlignment as Ri, InteractionProps as Rl, scaleFrom as Rm, resolveNumber as Rn, UiSelectionController as Ro, defineModifier as Rp, shortcuts as Rr, drawText as Rs, WebGPUTextureCache as Rt, VIRTUAL_WINDOW_PROP as Ru, clearLinkHover as S, UiTimerFrameClockOptions as Sa, ParagraphTextMeasurer as Sc, shadowsEqual as Sd, GradientPaint as Sf, UiTween as Sg, UiGridAutoFlow as Sh, closestPropertyName as Si, ChildrenBindingId as Sl, UiWheelEvent as Sm, traceRoundedRect as Sn, GestureRecognizerOptions as So, textInputOf as Sp, IconCanvas as Sr, nextCaretToggle as Ss, RenderCommand as St, SheetRange as Su, linkOf as T, isNodeInert as Ta, TextLineRun as Tc, UiTypographyRole as Td, ResolvedGradientStop as Tf, UiDurationToken as Tg, UiPlacement as Th, inheritedPropertyFlags as Ti, BoxModelProps as Tl, DirtyNodeSet as Tm, RendererBackend as Tn, UiPinchRecognizer as To, UiTextPosition as Tp, IconRasterizerOptions as Tr, EditingPlatform as Ts, ScissorRect as Tt, SheetViewport as Tu, setPerformanceMarks as U, EditingState as Ua, offsetForVerticalMove as Uc, UiFontVariant as Ud, fr as Uf, UiColor as Ug, borderRadiusValuesEqual as Uh, FlexDirection as Ui, Reactive as Ul, UiSharedElements as Um, themeTokens as Un, UiPoint as Uo, FocusSource as Up, DragSourceOptions as Ur, textRunBackgrounds as Us, DrawStats as Ut, UiVideoSurface as Uu, measureSpan as V, EditingControllerOptions as Va, offsetAtPoint as Vc, UiFontStretch as Vd, UiTrackSize as Vf, transformsEqual as Vg, borderRadiusEqual as Vh, parseCrossAxisAlignment as Vi, PositionProps as Vl, slideUp as Vm, resolveString as Vn, HitTester as Vo, UiModifierTeardown as Vp, pinchable as Vr, runCanvasStyleInto as Vs, WebGPUError as Vt, VirtualViewport as Vu, VttCue as W, UiEditingController as Wa, selectionRects as Wc, UiResolvedTextSpan as Wd, isAutoLength as Wf, colorToHex as Wg, normalizeBorderRadius as Wh, parseFlexDirection as Wi, RowProps as Wl, Constraints as Wm, sameArgs as Wn, SCROLLBAR_HOVER_ZONE as Wo, UiFocusManager as Wp, DropTargetOptions as Wr, textRunDecorations as Ws, RenderHooks as Wt, isVideoSurface as Wu, RangeSourceOptions as X, UiDragState as Xa, previousGraphemeStart as Xc, UiTextSpan as Xd, repeat as Xf, rgb8 as Xg, isShapeName as Xh, SCROLLBAR_FADE_MS as Xi, UiEventProps as Xl, clampSize as Xm, SizeContainerArgs as Xn, scrollLeaderOf as Xo, isObservable$1 as Xp, DraggableOptions as Xr, DEFAULT_TEXT_COLOR as Xs, bumpFontStack as Xt, withContrast as Xu, DEFAULT_BLOCK_SIZE as Y, UiDragSession as Ya, nextWordEnd as Yc, UiTextRange as Yd, percent as Yf, parseColor as Yg, defaultShapes as Yh, LayoutEngine as Yi, TypographyProps as Yl, TightenOptions as Ym, BreakpointArgs as Yn, ScrollbarThumb as Yo, isComponentLikeElement as Yp, DragOffset as Yr, DEFAULT_FONT_WEIGHT as Ys, createWebGPUSurface as Yt, themesEqual as Yu, bufferSource as Z, UiDropEffect as Za, previousWordStart as Zc, UiTextStyle as Zd, resolveLength as Zf, rgba as Zg, shapesEqual as Zh, SCROLLBAR_LINGER_MS as Zi, UiNodeRef as Zl, constraintsEqual as Zm, breakpoint as Zn, scrollRange as Zo, isUiChild as Zp, draggable as Zr, ObjectFit as Zs, clearFontStacks as Zt, withDensity as Zu, buildSemanticsTree as _, UiFrameTime as _a, setSelectionRange as _c, scaleSpacing as _d, UiPath as _f, UiAnimation as _g, UiContentDistribution as _h, bundle as _i, UiDefinition as _l, UiPointerEvent as _m, LayoutInspector as _n, UiScrollBehavior as _o, bandOf as _p, IconSourceArgs as _r, editorFor as _s, INSTANCE_STRIDE_FLOATS as _t, EditUnit as _u, diffSemantics as a, RelayoutExplanation as aa, createPaintState as ac, themeExtensionsEqual as ad, spansDifferOnlyInPaint as af, createEnvironmentKey as ag, DecorationFill as ah, borderShapes as ai, LazyRow as al, MOUSE_POINTER as am, PaintContext2D as an, UiShortcutRegistry as ao, UiPropertyDefinition as ap, VideoTransport as ar, setMatchRanges as as, Mp3Frame as at, UiLiveRegion as au, semanticsMemory as b, UiManualFrameClock as ba, FontMetrics as bc, UiShadows as bd, pathValuesEqual as bf, UiSpring as bg, UiFlexWrap as bh, accumulatedOffsetTo as bi, UiGraph as bl, UiTextChangeEvent as bm, Canvas2DRenderer as bn, isScrollContainer as bo, UiTextInput as bp, iconSource as br, isMultiline as bs, PrimitiveCommand as bt, LazySheetProps as bu, SemanticsMemory as c, describeOverrides as ca, normalizeVerticalAlign as cc, UiContrast as cd, textStylesEqual as cf, DirtyFlags as cg, DecorationStroke as ch, focusRing as ci, Column as cl, UiEventType as cm, PaintTarget as cn, formatShortcut as co, UiInsetEdge as cp, DefaultVideoResolverOptions as cr, findMatchesIn as cs, readMp3Header as ct, UiSemanticState as cu, SemanticsRewalk as d, labelNode as da, TEXT_SELECTION_PROP as dc, raiseContrast as dd, PaintLineCap as df, UiTransitionValue as dg, hasDecorationPhase as dh, hoverable as di, Paint as dl, UiInputEvent as dm, PaintOp as dn, KeyboardControllerOptions as do, UiInsets as dp, VideoResolver as dr, UiEnvironmentKeys as ds, Affine as dt, isUiSemanticState as du, easings as e_, CustomLayoutExplanation as ea, PaintTextSpan as ec, UiThemeExtensions as ed, flattenTextSpans as ef, darkColors as eg, NodeProperty as eh, autoFocus as ei, ResponsiveProps as el, UiProps as em, PaintCanvas as en, UiFileDropMessage as eo, boxShadow as ep, ScrollPositionArgs as er, scrollbarZoneAt as es, Mp4Sample as et, UiPropertyValueOf as eu, SemanticsSpan as f, withOverrideSource as fa, TextRange as fc, relativeLuminance as fd, PaintLineJoin as ff, assertTransitionMap as fg, paintsAfterChildren as fh, interactive as fi, Row as fl, UiKeyModifiers as fm, PaintRecorder as fn, UiKeyboardController as fo, insetsEqual as fp, canDecodeVideo as fr, EnvironmentNotifier as fs, CLIP_STRIDE_BYTES as ft, normalizeStates as fu, buildSemanticsSubtree as g, UiFrameClockFactory as ga, selectionRangeOf as gc, defaultSpacing as gd, UiPaint as gf, AnimatedCell as gg, UiColorValue as gh, UiModifierBundle as gi, createElement as gl, UiPointerDevice as gm, InspectorOverlay as gn, ScrollSink as go, UiContainerSizeSource as gp, sharedElement as gr, caretVisibleAt as gs, INSTANCE_STRIDE_BYTES as gt, CompositionRange as gu, UiSemanticsRecord as h, UiFrameClock as ha, selectableTextOf as hc, UiSpacing as hd, PaintTextStyle as hf, tween as hg, UiBorderRadiusValue as hh, pressable as hi, Text as hl, UiPinchEvent as hm, INSPECTOR_HEAT_MS as hn, ScrollContainerState as ho, UiContainerSize as hp, motion as hr, EDITOR_PROP as hs, GlyphCommand as ht, validateStates as hu, UiSemanticsPatch as i, OverrideSources as ia, computeObjectFitRect as ic, themeExtension as id, spannedTextOf as if, UiEnvironmentKey as ig, UiPropertyOverrides as ih, FocusRingOptions as ii, LazyListProps as il, UiListenerErrorReporter as im, paintPictures as in, UiShortcutBinding as io, boxShadowsEqual as ip, VideoState as ir, matchRangesOf as is, Mp3Format as it, UiAutocomplete as iu, paragraphGeometry as j, CanvasPlatformSurface as ja, TextRunStyle as jc, UiLayoutContext as jd, gradientPaint as jf, UiInterpolator as jg, UiTextDirection as jh, GridContribution as ji, EditableTextProps as jl, MotionTiming as jm, OverlayShape as jn, resetOverrideWarnings as jo, UiModifierFocus as jp, AnimateLayoutOptions as jr, PlacedTextRun as js, glyphCount as jt, LazyGridOptions as ju, hasDrawnText as k, pointerEventsOf as ka, TextRunMeasurer as kc, MAX_MEASURES_PER_CHILD as kd, UiLinearGradient as kf, UiSpringToken as kg, UiSubgridAxis as kh, propertyNarrowers as ki, CommonProps as kl, MotionState as km, RenderContext as kn, clearOverrideProperty as ko, editingGroupOf as kp, DefaultImageResolverOptions as kr, EditableLayout as ks, buildRenderList as kt, sheetSource as ku, SemanticsPlacement as l, formatConstraints as la, resolvePaintState as lc, contrastRatio as ld, PaintBox as lf, AnimationDriver as lg, decorationColor as lh, BUTTON_INTERACTION as li, EditableText as ll, UiFocusEvent as lm, tracePathData as ln, parseShortcut as lo, UiInsetRegistry as lp, RangeResponse as lr, UiEnvironmentProvider as ls, splitMp3Frames as lt, UiSemanticStates as lu, UiSemanticsMap as m, UiAnimationFrameClock as ma, selectableTextNodes as mc, densityFactors as md, PaintTextAlign as mf, spring as mg, UiAlignment as mh, measureFlow as mi, Stack as ml, UiPasteEvent as mm, replayPaint as mn, UiPointerController as mo, observeViewportInsets as mp, SharedElementArgs as mr, CARET_WIDTH as ms, CommandKind as mt, validateRole as mu, UiSemanticsBox as n, steps as n_, LayoutExplanation as na, VerticalAlign as nc, hasThemeExtension as nd, resolvedSpansOf as nf, LayoutRecord as ng, UiNodeTransitions as nh, BordersOptions as ni, LazyGrid as nl, UiEventListenerOptions as nm, PaintPictureCache as nn, ShortcutRegistryOptions as no, boxShadowRadius as np, VideoClock as nr, TEXT_MATCHES_PROP as ns, demuxMp4Audio as nt, UI_ROLES as nu, dropIndexShifts as o, SizeDecision as oa, isPaintVisible as oc, withThemeExtension as od, textContentOf as of, findEnvironmentKey as og, DecorationRect as oh, borders as oi, Box as ol, UiBeforeInputEvent as om, PaintGradient as on, UiShortcutStep as oo, defineProperty as op, videoSource as or, FindMatch as os, Mp3Frames as ot, UiOrientation as ou, TEXT_RUN_ID_SEPARATOR as p, UiFrame as pa, clearSelectionRange as pc, UiDensity as pd, PaintSurface as pf, normalizeTransition as pg, UI_SUBGRID_AXES as ph, measure as pi, ScrollView as pl, UiKeyboardEvent as pm, PaintRecording as pn, PointerControllerOptions as po, noInsets as pp, MotionArgs as pr, CARET_BLINK_MS as ps, CLIP_STRIDE_FLOATS as pt, statesEqual as pu, parseWebVtt as q, EXTERNAL_FILES as qa, lineStartAt as qc, UiTextLink as qd, isPercentLength as qf, colorsEqual as qg, UiShapeName as qh, proportionalFontMetrics as qi, TextContentProps as ql, LayoutStats as qm, insetPadding as qn, SCROLLBAR_THICKNESS as qo, UiChild as qp, dropTarget as qr, DEFAULT_FONT_FAMILY as qs, WebGPUCanvasHost as qt, darkTheme as qu, UiSemanticsUpdate as r, LayoutStateExplanation as ra, colorToCss as rc, noThemeExtensions as rd, spanAtOffset as rf, UiEnvironment as rg, UiPropertyOverride as rh, Decorations as ri, LazyGridProps as rl, UiInputDispatcher as rm, PaintStats as rn, UiShortcut as ro, boxShadowReach as rp, VideoSourceArgs as rr, clearMatchRanges as rs, demuxMp4Video as rt, UI_SEMANTIC_STATES as ru, recordsEqual as s, describeLength as sa, normalizeTextAlign as sc, HighContrastOptions as sd, textSpansEqual as sf, UiNodeType as sg, DecorationShape as sh, decorated as si, Button as sl, UiCompositionEvent as sm, PaintResolver as sn, describeShortcut as so, propertyValuesEqual as sp, DefaultVideoResolver as sr, FindOptions as ss, Mp3Header as st, UiRole as su, UiSemanticsAction as t, linear as t_, Edges as ta, TextAlign as tc, defineThemeExtension as td, hiddenRangesOf as tf, lightColors as tg, UiNode as th, BorderEdge as ti, LazyColumn as tl, UiEventListener as tm, PaintCanvasFactory as tn, dragSessionFor as to, boxShadowArraysEqual as tp, scrollPosition as tr, SubtreeBounds as ts, Mp4VideoTrack as tt, UiPropertyValues as tu, SemanticsReuse as u, formatExplanation as ua, DEFAULT_LINE_HEIGHT_FACTOR as uc, highContrastColors as ud, PaintFillRule as uf, UiTransitionSpec as ug, decorationRect as uh, InteractiveOptions as ui, Grid as ul, UiGestureEvent as um, EMPTY_RECORDING as un, shortcutKeyCaps as uo, UiInsetSource as up, VideoPlayback as ur, provideEnvironment as us, WebGPUGlyphPages as ut, isUiRole as uu, rewalkSemantics as v, UiHostFrameClock as va, CharacterCountTextMeasurer as vc, spacingEqual as vd, inputsEqual as vf, UiAnimationOptions as vg, UiCursor as vh, noModifiers as vi, BindingId as vl, UiPointerKind as vm, LayoutInspectorOptions as vn, UiScrollability as vo, containerBands as vp, ImageSourceArgs as vr, editorOf as vs, ImageCommand as vt, EditableTextModel as vu, linkHoverOf as w, isNodeHitTestable as wa, TextLine as wc, UiTypographyExtensions as wd, ResolvedGradient as wf, createTween as wg, UiOverflow as wh, getPropertyNames as wi, UiGraphBuilder as wl, wheelDeltaYOf as wm, ScrollLayerStats as wn, PinchRecognizerOptions as wo, UiGroupEdit as wp, IconRasterizer as wr, EditCommand as ws, RenderTextCache as wt, SheetSourceArgs as wu, textRunOfRecordId as x, UiTimerFrameClock as xa, ParagraphLayout as xc, defaultShadows as xd, UiImage as xf, UiSpringOptions as xg, UiFontWeight as xh, contentOffset as xi, UiEventBinding as xl, UiWheelDeltaMode as xm, Canvas2DRendererOptions as xn, GestureInput as xo, UiTextInputState as xp, imageSource as xr, isReadOnly as xs, PrimitiveKind as xt, SheetHeaderRenderer as xu, semanticsInertAbove as y, UiHostFrameClockOptions as ya, FixedMetricsOptions as yc, spacingSteps as yd, paintValuesEqual as yf, UiReducedMotionPolicy as yg, UiDirection as yh, Transform as yi, UiBinding as yl, UiSelectionChangeEvent as ym, CanvasTextMeasurer as yn, UiWheelController as yo, unknownContainerSize as yp, ImageSources as yr, isEditableNode as ys, NO_CLIP_INDEX as yt, LazySheet as yu, markInstant as z, prepareInputSurface as za, lineIndexForOffset as zc, visualStatesEqual as zd, PercentLength as zf, transform as zg, borderRadius as zh, MainAxisAlignment as zi, PaintElementProps as zl, slideDown as zm, resolveProperty as zn, HitTestLayoutReader as zo, isUiModifier as zp, PinchableOptions as zr, fillTextRects as zs, initializeWebGPU as zt, VirtualItemMeasure as zu };
19267
- //# sourceMappingURL=index-lzNLHD-1.d.ts.map
19409
+ export { Mp4AudioTrack as $, UiDroppedFile as $a, Text as $c, PaintTextStyle as $d, UiContainerSize as $f, cubicBezier as $g, TextRunSpan as $h, AxisExplanation as $i, validateStates as $l, UiBorderRadiusValue as $m, ScrollOffset as $n, scrollbarThumbs as $o, UiPinchEvent as $p, clickOutside as $r, PaintState as $s, registerFontStack as $t, UiSpacing as $u, offsetAtPointIn as A, resolveCursor as Aa, lineEndAt as Ac, UiTextDecoration as Ad, isMinMaxTrack as Af, defaultMotion as Ag, UiShapeExtensions as Ah, propertyValuesEqualByName as Ai, StackProps as Al, LayoutResult as Am, LABEL_PADDING_X as An, overrideSources as Ao, ComponentLikeElement as Ap, ImageResolver as Ar, CanvasTextStyle as As, createTextCache as At, UiTheme as Au, markNow as B, touchActionFor as Ba, LazyGrid as Bc, resolvedSpansOf as Bd, boxShadowRadius as Bf, transformIsIdentity as Bg, LayoutRecord as Bh, parseAlignContent as Bi, UI_ROLES as Bl, UiNodeTransitions as Bm, resolvePropertyByName as Bn, HitTestResult as Bo, UiEventListenerOptions as Bp, ZoomState as Br, layoutTextLines as Bs, isWebGPUAvailable as Bt, hasThemeExtension as Bu, hasTextLinks as C, isNodeFocusable as Ca, lineIndexForOffset as Cc, visualStatesEqual as Cd, PercentLength as Cf, UiTweenOptions as Cg, borderRadius as Ch, findPropertyDefinition as Ci, PaintElementProps as Cl, slideDown as Cm, LayerCanvasFactory as Cn, UiGestureRecognizer as Co, isUiModifier as Cp, IconContext as Cr, syncEditorValue as Cs, RenderList as Ct, VirtualItemMeasure as Cu, setLinkHover as D, isNodeTabStop as Da, offsetForVerticalMove as Dc, UiFontVariant as Dd, fr as Df, UiMotion as Dg, borderRadiusValuesEqual as Dh, propertyEffects as Di, Reactive as Dl, UiSharedElements as Dm, LayoutReader as Dn, NodeTransitions as Do, FocusSource as Dp, iconKey as Dr, detectEditingPlatform as Ds, TEXTURED_STRIDE_FLOATS as Dt, UiVideoSurface as Du, linkRunAtPointIn as E, isNodeSelectable as Ea, offsetAtX as Ec, UiFontStyle as Ed, auto as Ef, UiEasingToken as Eg, borderRadiusIsZero as Eh, inheritedPropertyNames as Ei, PropsOf as El, SharedClaim as Em, UiRenderer as En, FocusNotifier as Eo, FocusOptions as Ep, IconSpec as Er, commandForKey as Es, TEXTURED_STRIDE_BYTES as Et, lazySource as Eu, UiFrameCallback as F, UiPlatformAdapter as Fa, previousWordStart as Fc, UiTextStyle as Fd, resolveLength as Ff, interpolatorFor as Fg, shapesEqual as Fh, placeGridItems as Fi, UiNodeRef as Fl, constraintsEqual as Fm, CanvasSurface as Fn, UiFindController as Fo, isUiChild as Fp, ShortcutsOptions as Fr, applyCanvasTextStyle as Fs, GlyphSlot as Ft, withDensity as Fu, VttTrack as G, TouchScrollerOptions as Ga, Button as Gc, textSpansEqual as Gd, propertyValuesEqual as Gf, colorToRgba as Gg, ParagraphTextMeasurer as Gh, ELLIPSIS as Gi, UiRole as Gl, DecorationShape as Gm, InsetPaddingArgs as Gn, SCROLLBAR_INSET as Go, UiCompositionEvent as Gp, ReorderableOptions as Gr, Canvas2DContext as Gs, WebGPURenderer as Gt, HighContrastOptions as Gu, performanceMarksEnabled as H, EditingHost as Ha, LazyListProps as Hc, spannedTextOf as Hd, boxShadowsEqual as Hf, UiBasicColors as Hg, FixedMetricsOptions as Hh, parseMainAxisAlignment as Hi, UiAutocomplete as Hl, UiPropertyOverrides as Hm, ThemeTokenTarget as Hn, UiHitTester as Ho, UiListenerErrorReporter as Hp, AutoScrollOptions as Hr, runFontString as Hs, CapturedFrame as Ht, themeExtension as Hu, UiScheduler as I, capturePointer as Ia, wordRangeAt as Ic, defaultTextStyle as Id, BOX_SHADOW_BLUR_REACH as If, UiTransform as Ig, UiColors as Ih, sizeGridTracks as Ii, UiProperties as Il, tightenConstraints as Im, createCanvasSurface as In, SelectionControllerOptions as Io, isUiElement as Ip, contextMenu as Ir, buildFontString as Is, GlyphUpload as It, UiThemeExtension as Iu, ByteSource as J, UiDragPayload as Ja, Grid as Jc, PaintFillRule as Jd, UiInsetSource as Jf, normalizeColor as Jg, TextLineRun as Jh, LayoutNotifier as Ji, isUiRole as Jl, decorationRect as Jm, publishInset as Jn, ScrollbarAxis as Jo, UiGestureEvent as Jp, reorderable as Jr, DEFAULT_FONT_SIZE as Js, WebGPUSurface as Jt, highContrastColors as Ju, cueAt as K, UiTouchScroller as Ka, Column as Kc, textStylesEqual as Kd, UiInsetEdge as Kf, colorValuesEqual as Kg, SpannedRuns as Kh, layoutParagraph as Ki, UiSemanticState as Kl, DecorationStroke as Km, PublishInsetArgs as Kn, SCROLLBAR_MIN_THUMB as Ko, UiEventType as Kp, dragSource as Kr, Canvas2DGradient as Ks, WebGPURendererOptions as Kt, UiContrast as Ku, UiSchedulerOptions as L, isImeKey as La, Responsive as Lc, editableSpansOf as Ld, UiBoxShadow as Lf, UiTransforms as Lg, colorsEqualPalette as Lh, AlignContent as Li, UiPropertyName as Ll, NodeId as Lm, resolveBoolean as Ln, SelectionHost as Lo, UiPropValue as Lp, shortcut as Lr, createCanvasTextStyle as Ls, WebGPUGlyphAtlas as Lt, UiThemeExtensionOptions as Lu, paragraphGeometryFrom as M, PlatformAdapterOptions as Ma, nextGraphemeEnd as Mc, UiTextMetrics as Md, minmax as Mf, interpolateColor as Mg, UiShapes as Mh, GridItemRequest as Mi, TextProps as Ml, Size as Mm, drawOverlayShapes as Mn, writeDeclaredProperty as Mo, UiElement as Mp, animateLayout as Mr, SpanPaint as Ms, textRuns as Mt, lightTheme as Mu, selectionRectsIn as N, PlatformEventTarget as Na, nextWordEnd as Nc, UiTextRange as Nd, percent as Nf, interpolateNumber as Ng, defaultShapes as Nh, GridPlacement as Ni, TypographyProps as Nl, TightenOptions as Nm, labelOrigin as Nn, writeOverrideProperty as No, isComponentLikeElement as Np, ContextMenuOptions as Nr, TextLinePlacement as Ns, GlyphShaper as Nt, themesEqual as Nu, ParagraphGeometry as O, isSubtreeInert as Oa, selectionRects as Oc, UiResolvedTextSpan as Od, isAutoLength as Of, UiSpringSpec as Og, normalizeBorderRadius as Oh, propertyIsInherited as Oi, RowProps as Ol, Constraints as Om, RenderChanges as On, resetTransitionWarnings as Oo, UiFocusManager as Op, DefaultImageResolver as Or, isPrintable as Os, TextRunDraw as Ot, isVideoSurface as Ou, wordRangeIn as P, PlatformSurface as Pa, previousGraphemeStart as Pc, UiTextSpan as Pd, repeat as Pf, interpolateTransform as Pg, isShapeName as Ph, GridTrack as Pi, UiEventProps as Pl, clampSize as Pm, CanvasHost as Pn, FindHost as Po, isObservable$1 as Pp, ShortcutOptions as Pr, TextRunRect as Ps, GLYPH_SUBPIXEL_PHASES as Pt, withContrast as Pu, rangeSource as Q, UiDropZone as Qa, Stack as Qc, PaintTextAlign as Qd, observeViewportInsets as Qf, UiEasing as Qg, TextRunMeasurer as Qh, ScrollAdjustment as Qi, validateRole as Ql, UiAlignment as Qm, sizeContainer as Qn, scrollbarThumb as Qo, UiPasteEvent as Qp, ClickOutsideOptions as Qr, PaintBoxShadow as Qs, fontStackFor as Qt, densityFactors as Qu, MARK_PREFIX as R, pointerDeviceOf as Ra, ResponsiveProps as Rc, flattenTextSpans as Rd, boxShadow as Rf, parseTransform as Rg, darkColors as Rh, CrossAxisAlignment as Ri, UiPropertyValueOf as Rl, NodeProperty as Rm, resolveNumber as Rn, UiSelectionController as Ro, UiProps as Rp, shortcuts as Rr, drawText as Rs, WebGPUTextureCache as Rt, UiThemeExtensions as Ru, clearLinkHover as S, UiTimerFrameClockOptions as Sa, lineIndexAtY as Sc, visualState as Sd, MinMaxTrack as Sf, UiTween as Sg, UiBorderRadiuses as Sh, closestPropertyName as Si, InteractionProps as Sl, scaleFrom as Sm, traceRoundedRect as Sn, GestureRecognizerOptions as So, defineModifier as Sp, IconCanvas as Sr, nextCaretToggle as Ss, RenderCommand as St, VIRTUAL_WINDOW_PROP as Su, linkOf as T, isNodeInert as Ta, offsetAtPoint as Tc, UiFontStretch as Td, UiTrackSize as Tf, UiDurationToken as Tg, borderRadiusEqual as Th, inheritedPropertyFlags as Ti, PositionProps as Tl, slideUp as Tm, RendererBackend as Tn, UiPinchRecognizer as To, UiModifierTeardown as Tp, IconRasterizerOptions as Tr, EditingPlatform as Ts, ScissorRect as Tt, VirtualViewport as Tu, setPerformanceMarks as U, EditingState as Ua, LazyRow as Uc, spansDifferOnlyInPaint as Ud, UiPropertyDefinition as Uf, UiColor as Ug, FontMetrics as Uh, FlexDirection as Ui, UiLiveRegion as Ul, DecorationFill as Um, themeTokens as Un, UiPoint as Uo, MOUSE_POINTER as Up, DragSourceOptions as Ur, textRunBackgrounds as Us, DrawStats as Ut, themeExtensionsEqual as Uu, measureSpan as V, EditingControllerOptions as Va, LazyGridProps as Vc, spanAtOffset as Vd, boxShadowReach as Vf, transformsEqual as Vg, CharacterCountTextMeasurer as Vh, parseCrossAxisAlignment as Vi, UI_SEMANTIC_STATES as Vl, UiPropertyOverride as Vm, resolveString as Vn, HitTester as Vo, UiInputDispatcher as Vp, pinchable as Vr, runCanvasStyleInto as Vs, WebGPUError as Vt, noThemeExtensions as Vu, VttCue as W, UiEditingController as Wa, Box as Wc, textContentOf as Wd, defineProperty as Wf, colorToHex as Wg, ParagraphLayout as Wh, parseFlexDirection as Wi, UiOrientation as Wl, DecorationRect as Wm, sameArgs as Wn, SCROLLBAR_HOVER_ZONE as Wo, UiBeforeInputEvent as Wp, DropTargetOptions as Wr, textRunDecorations as Ws, RenderHooks as Wt, withThemeExtension as Wu, RangeSourceOptions as X, UiDragState as Xa, Row as Xc, PaintLineJoin as Xd, insetsEqual as Xf, rgb8 as Xg, TextMeasurer as Xh, SCROLLBAR_FADE_MS as Xi, normalizeStates as Xl, paintsAfterChildren as Xm, SizeContainerArgs as Xn, scrollLeaderOf as Xo, UiKeyModifiers as Xp, DraggableOptions as Xr, DEFAULT_TEXT_COLOR as Xs, bumpFontStack as Xt, relativeLuminance as Xu, DEFAULT_BLOCK_SIZE as Y, UiDragSession as Ya, Paint as Yc, PaintLineCap as Yd, UiInsets as Yf, parseColor as Yg, TextMeasureRequest as Yh, LayoutEngine as Yi, isUiSemanticState as Yl, hasDecorationPhase as Ym, BreakpointArgs as Yn, ScrollbarThumb as Yo, UiInputEvent as Yp, DragOffset as Yr, DEFAULT_FONT_WEIGHT as Ys, createWebGPUSurface as Yt, raiseContrast as Yu, bufferSource as Z, UiDropEffect as Za, ScrollView as Zc, PaintSurface as Zd, noInsets as Zf, rgba as Zg, TextOverflow as Zh, SCROLLBAR_LINGER_MS as Zi, statesEqual as Zl, UI_SUBGRID_AXES as Zm, breakpoint as Zn, scrollRange as Zo, UiKeyboardEvent as Zp, draggable as Zr, ObjectFit as Zs, clearFontStacks as Zt, UiDensity as Zu, buildSemanticsTree as _, UiFrameTime as _a, setSelectionRange as _c, isLayoutProtocol as _d, linearGradient as _f, UiAnimation as _g, UiTextWrapValue as _h, bundle as _i, FlexContainerProps as _l, fade as _m, LayoutInspector as _n, UiScrollBehavior as _o, UiModifierSet as _p, IconSourceArgs as _r, editorFor as _s, INSTANCE_STRIDE_FLOATS as _t, LazyListOptions as _u, diffSemantics as a, RelayoutExplanation as aa, createPaintState as ac, defaultShadows as ad, UiImage as af, createEnvironmentKey as ag, UiFontWeight as ah, borderShapes as ai, UiEventBinding as al, UiWheelDeltaMode as am, PaintContext2D as an, UiShortcutRegistry as ao, UiTextInputState as ap, VideoTransport as ar, setMatchRanges as as, Mp3Frame as at, SheetHeaderRenderer as au, semanticsMemory as b, UiManualFrameClock as ba, RunMeasure as bc, defaultVisualState as bd, AutoLength as bf, UiSpring as bg, validateSubgrid as bh, accumulatedOffsetTo as bi, GridProps as bl, resolveMotionState as bm, Canvas2DRenderer as bn, isScrollContainer as bo, UiModifier as bp, iconSource as br, isMultiline as bs, PrimitiveCommand as bt, VIRTUAL_INDEX_PROP as bu, SemanticsMemory as c, describeOverrides as ca, normalizeVerticalAlign as cc, UiTypographyExtensions as cd, ResolvedGradient as cf, DirtyFlags as cg, UiOverflow as ch, focusRing as ci, UiGraphBuilder as cl, wheelDeltaYOf as cm, PaintTarget as cn, formatShortcut as co, UiGroupEdit as cp, DefaultVideoResolverOptions as cr, findMatchesIn as cs, readMp3Header as ct, SheetSourceArgs as cu, SemanticsRewalk as d, labelNode as da, TEXT_SELECTION_PROP as dc, isTypographyRole as dd, UiGradientOffset as df, UiTransitionValue as dg, UiPosition as dh, hoverable as di, ButtonProps as dl, MOTION_REST as dm, PaintOp as dn, KeyboardControllerOptions as do, comparePositions as dp, VideoResolver as dr, UiEnvironmentKeys as ds, Affine as dt, UiVirtualSheetOptions as du, easings as e_, CustomLayoutExplanation as ea, PaintTextSpan as ec, defaultSpacing as ed, UiPaint as ef, TextRunStyle as eg, UiColorValue as eh, autoFocus as ei, createElement as el, UiPointerDevice as em, PaintCanvas as en, UiFileDropMessage as eo, UiContainerSizeSource as ep, ScrollPositionArgs as er, scrollbarZoneAt as es, Mp4Sample as et, CompositionRange as eu, SemanticsSpan as f, withOverrideSource as fa, TextRange as fc, typographyEqual as fd, UiGradientStop as ff, assertTransitionMap as fg, UiSelfAlignment as fh, interactive as fi, ColumnProps as fl, MotionChannel as fm, PaintRecorder as fn, UiKeyboardController as fo, edgeField as fp, canDecodeVideo as fr, EnvironmentNotifier as fs, CLIP_STRIDE_BYTES as ft, VIRTUAL_SHEET_PROP as fu, buildSemanticsSubtree as g, UiFrameClockFactory as ga, selectionRangeOf as gc, UiLayoutProtocol as gd, gradientsEqual as gf, AnimatedCell as gg, UiTextOverflowValue as gh, UiModifierBundle as gi, EnvironmentProps as gl, ResolvedMotionState as gm, InspectorOverlay as gn, ScrollSink as go, UiModifierLayout as gp, sharedElement as gr, caretVisibleAt as gs, INSTANCE_STRIDE_BYTES as gt, LazyItemRenderer as gu, UiSemanticsRecord as h, UiFrameClock as ha, selectableTextOf as hc, UiLayoutContext as hd, gradientPaint as hf, tween as hg, UiTextDirection as hh, pressable as hi, EditableTextProps as hl, MotionTiming as hm, INSPECTOR_HEAT_MS as hn, ScrollContainerState as ho, UiModifierFocus as hp, motion as hr, EDITOR_PROP as hs, GlyphCommand as ht, LazyGridOptions as hu, UiSemanticsPatch as i, OverrideSources as ia, computeObjectFitRect as ic, UiShadows as id, pathValuesEqual as if, UiEnvironmentKey as ig, UiFlexWrap as ih, FocusRingOptions as ii, UiGraph as il, UiTextChangeEvent as im, paintPictures as in, UiShortcutBinding as io, UiTextInput as ip, VideoState as ir, matchRangesOf as is, Mp3Format as it, LazySheetProps as iu, paragraphGeometry as j, CanvasPlatformSurface as ja, lineStartAt as jc, UiTextLink as jd, isPercentLength as jf, UiInterpolator as jg, UiShapeName as jh, GridContribution as ji, TextContentProps as jl, LayoutStats as jm, OverlayShape as jn, resetOverrideWarnings as jo, UiChild as jp, AnimateLayoutOptions as jr, PlacedTextRun as js, glyphCount as jt, darkTheme as ju, hasDrawnText as k, pointerEventsOf as ka, graphemeBoundaries as kc, UiSpannedText as kd, isFrLength as kf, UiSpringToken as kg, uniformBorderRadius as kh, propertyNarrowers as ki, ScrollViewProps as kl, LayoutBox as km, RenderContext as kn, clearOverrideProperty as ko, ComponentResolver as kp, DefaultImageResolverOptions as kr, EditableLayout as ks, buildRenderList as kt, videoFrameSize as ku, SemanticsPlacement as l, formatConstraints as la, resolvePaintState as lc, UiTypographyRole as ld, ResolvedGradientStop as lf, AnimationDriver as lg, UiPlacement as lh, BUTTON_INTERACTION as li, BoxModelProps as ll, DirtyNodeSet as lm, tracePathData as ln, parseShortcut as lo, UiTextPosition as lp, RangeResponse as lr, UiEnvironmentProvider as ls, splitMp3Frames as lt, SheetViewport as lu, UiSemanticsMap as m, UiAnimationFrameClock as ma, selectableTextNodes as mc, UiLayoutChild as md, UiRadialGradient as mf, spring as mg, UiTextAlign as mh, measureFlow as mi, ContainerProps as ml, MotionStateInput as mm, replayPaint as mn, UiPointerController as mo, UiModifierEnvironment as mp, SharedElementArgs as mr, CARET_WIDTH as ms, CommandKind as mt, LazyAxis as mu, UiSemanticsBox as n, steps as n_, LayoutExplanation as na, VerticalAlign as nc, spacingEqual as nd, inputsEqual as nf, spannedRunsFor as ng, UiCursor as nh, BordersOptions as ni, BindingId as nl, UiPointerKind as nm, PaintPictureCache as nn, ShortcutRegistryOptions as no, containerBands as np, VideoClock as nr, TEXT_MATCHES_PROP as ns, demuxMp4Audio as nt, EditableTextModel as nu, dropIndexShifts as o, SizeDecision as oa, isPaintVisible as oc, shadowsEqual as od, GradientPaint as of, findEnvironmentKey as og, UiGridAutoFlow as oh, borders as oi, ChildrenBindingId as ol, UiWheelEvent as om, PaintGradient as on, UiShortcutStep as oo, textInputOf as op, videoSource as or, FindMatch as os, Mp3Frames as ot, SheetRange as ou, TEXT_RUN_ID_SEPARATOR as p, UiFrame as pa, clearSelectionRange as pc, MAX_MEASURES_PER_CHILD as pd, UiLinearGradient as pf, normalizeTransition as pg, UiSubgridAxis as ph, measure as pi, CommonProps as pl, MotionState as pm, PaintRecording as pn, PointerControllerOptions as po, editingGroupOf as pp, MotionArgs as pr, CARET_BLINK_MS as ps, CLIP_STRIDE_FLOATS as pt, sheetSource as pu, parseWebVtt as q, EXTERNAL_FILES as qa, EditableText as qc, PaintBox as qd, UiInsetRegistry as qf, colorsEqual as qg, TextLine as qh, proportionalFontMetrics as qi, UiSemanticStates as ql, decorationColor as qm, insetPadding as qn, SCROLLBAR_THICKNESS as qo, UiFocusEvent as qp, dropTarget as qr, DEFAULT_FONT_FAMILY as qs, WebGPUCanvasHost as qt, contrastRatio as qu, UiSemanticsUpdate as r, LayoutStateExplanation as ra, colorToCss as rc, spacingSteps as rd, paintValuesEqual as rf, UiEnvironment as rg, UiDirection as rh, Decorations as ri, UiBinding as rl, UiSelectionChangeEvent as rm, PaintStats as rn, UiShortcut as ro, unknownContainerSize as rp, VideoSourceArgs as rr, clearMatchRanges as rs, demuxMp4Video as rt, LazySheet as ru, recordsEqual as s, describeLength as sa, normalizeTextAlign as sc, UiTypography as sd, MAX_GRADIENT_STOPS as sf, UiNodeType as sg, UiObjectFit as sh, decorated as si, UiChildrenBinding as sl, noKeyModifiers as sm, PaintResolver as sn, describeShortcut as so, UiEditingGroup as sp, DefaultVideoResolver as sr, FindOptions as ss, Mp3Header as st, SheetRowRenderer as su, UiSemanticsAction as t, linear as t_, Edges as ta, TextAlign as tc, scaleSpacing as td, UiPath as tf, TextWrap as tg, UiContentDistribution as th, BorderEdge as ti, UiDefinition as tl, UiPointerEvent as tm, PaintCanvasFactory as tn, dragSessionFor as to, bandOf as tp, scrollPosition as tr, SubtreeBounds as ts, Mp4VideoTrack as tt, EditUnit as tu, SemanticsReuse as u, formatExplanation as ua, DEFAULT_LINE_HEIGHT_FACTOR as uc, defaultTypography as ud, UiGradient as uf, UiTransitionSpec as ug, UiPointerEvents as uh, InteractiveOptions as ui, BoxProps as ul, MOTION_CHANNELS as um, EMPTY_RECORDING as un, shortcutKeyCaps as uo, adjacentField as up, VideoPlayback as ur, provideEnvironment as us, WebGPUGlyphPages as ut, UiVirtualSheet as uu, rewalkSemantics as v, UiHostFrameClock as va, CaretRect as vc, UiVisualState as vd, radialGradient as vf, UiAnimationOptions as vg, UiThemeColorName as vh, noModifiers as vi, FlexItemProps as vl, isMotionRest as vm, LayoutInspectorOptions as vn, UiScrollability as vo, UiUnknownModifierPropertyError as vp, ImageSourceArgs as vr, editorOf as vs, ImageCommand as vt, LazySourceArgs as vu, linkHoverOf as w, isNodeHitTestable as wa, lineLimit as wc, UiFontKerning as wd, UiLength as wf, createTween as wg, borderRadiusCorners as wh, getPropertyNames as wi, PaintProps as wl, slideFrom as wm, ScrollLayerStats as wn, PinchRecognizerOptions as wo, UiModifierHost as wp, IconRasterizer as wr, EditCommand as ws, RenderTextCache as wt, VirtualUpdate as wu, textRunOfRecordId as x, UiTimerFrameClock as xa, caretRectFor as xc, hasVisualState as xd, FrLength as xf, UiSpringOptions as xg, UiBorderRadius as xh, contentOffset as xi, IdentityProps as xl, rotateFrom as xm, Canvas2DRendererOptions as xn, GestureInput as xo, UiModifierKind as xp, imageSource as xr, isReadOnly as xs, PrimitiveKind as xt, VIRTUAL_LEAD_PROP as xu, semanticsInertAbove as y, UiHostFrameClockOptions as ya, PlacedLine as yc, UiVisualStateSet as yd, validateGradient as yf, UiReducedMotionPolicy as yg, UiVerticalAlign as yh, Transform as yi, GridItemProps as yl, pop as ym, CanvasTextMeasurer as yn, UiWheelController as yo, assertModifierList as yp, ImageSources as yr, isEditableNode as ys, NO_CLIP_INDEX as yt, UiVirtualWindow as yu, markInstant as z, prepareInputSurface as za, LazyColumn as zc, hiddenRangesOf as zd, boxShadowArraysEqual as zf, transform as zg, lightColors as zh, MainAxisAlignment as zi, UiPropertyValues as zl, UiNode as zm, resolveProperty as zn, HitTestLayoutReader as zo, UiEventListener as zp, PinchableOptions as zr, fillTextRects as zs, initializeWebGPU as zt, defineThemeExtension as zu };
19410
+ //# sourceMappingURL=index-BtTF_OxB.d.ts.map