gesso-core 0.2.1 → 0.4.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/CHANGELOG.md +121 -0
- package/dist/{CanvasSurface-5dU-U3qQ.js → CanvasSurface-BR7hECHm.js} +1075 -72
- package/dist/CanvasSurface-BR7hECHm.js.map +1 -0
- package/dist/{index-DAdauEn9.d.ts → index-BzXn0Bci.d.ts} +854 -12
- package/dist/index.d.ts +2 -2
- package/dist/index.js +756 -577
- package/dist/index.js.map +1 -1
- package/dist/testing.d.ts +10 -1
- package/dist/testing.js +24 -1
- package/dist/testing.js.map +1 -1
- package/package.json +1 -1
- package/dist/CanvasSurface-5dU-U3qQ.js.map +0 -1
|
@@ -1480,6 +1480,29 @@ interface DecorationBox {
|
|
|
1480
1480
|
readonly y?: number;
|
|
1481
1481
|
readonly width?: number;
|
|
1482
1482
|
readonly height?: number;
|
|
1483
|
+
/**
|
|
1484
|
+
* The far edges, as distances inward from the node's right and
|
|
1485
|
+
* bottom. Any two of `x`, `width`, `right` fix the horizontal axis,
|
|
1486
|
+
* exactly as CSS's `left`, `width` and `right` do, and likewise
|
|
1487
|
+
* `y`, `height`, `bottom`.
|
|
1488
|
+
*
|
|
1489
|
+
* { y: 0, height: 2 } the top edge, two pixels
|
|
1490
|
+
* { bottom: 0, height: 2 } the bottom edge
|
|
1491
|
+
* { x: 0, width: 2, y: 2, bottom: 2 } the left edge, between them
|
|
1492
|
+
*
|
|
1493
|
+
* Without them a shape could only be placed from the top left, and
|
|
1494
|
+
* `width` and `height` only defaulted to the node's own — so
|
|
1495
|
+
* anything pinned to a far edge, or spanning between two, had to be
|
|
1496
|
+
* built by a caller that had already measured the node. An
|
|
1497
|
+
* application that declares its own geometry, as a spreadsheet
|
|
1498
|
+
* declares its row height, does not need this; a general modifier
|
|
1499
|
+
* such as `borders()` cannot exist without it.
|
|
1500
|
+
*
|
|
1501
|
+
* Given all three on one axis, the size wins and the far inset is
|
|
1502
|
+
* ignored, which is the rule CSS settles the same conflict with.
|
|
1503
|
+
*/
|
|
1504
|
+
readonly right?: number;
|
|
1505
|
+
readonly bottom?: number;
|
|
1483
1506
|
/**
|
|
1484
1507
|
* Grows the rectangle on all four sides. This is what puts a focus
|
|
1485
1508
|
* ring outside the control instead of on top of it.
|
|
@@ -1993,7 +2016,43 @@ declare enum UiEventType {
|
|
|
1993
2016
|
BeforeInput = "beforeinput",
|
|
1994
2017
|
/** An editable's text changed. */
|
|
1995
2018
|
Input = "input",
|
|
2019
|
+
/**
|
|
2020
|
+
* An editable's selection moved, whether or not its text changed.
|
|
2021
|
+
*
|
|
2022
|
+
* Separate from `Input` because the caret moves without the text on
|
|
2023
|
+
* every arrow key, every click into the text and every
|
|
2024
|
+
* select-all — and something has to be able to follow it. A formula
|
|
2025
|
+
* editor that colours the bracket beside the caret has no other way
|
|
2026
|
+
* to know it moved.
|
|
2027
|
+
*
|
|
2028
|
+
* Fires *after* `Input` when a change did both, so a listener that
|
|
2029
|
+
* reads the text sees the new one. It is skipped entirely when the
|
|
2030
|
+
* selection did not actually move, so holding a key that is already
|
|
2031
|
+
* at the end of the text is silent.
|
|
2032
|
+
*/
|
|
2033
|
+
SelectionChange = "selectionchange",
|
|
2034
|
+
/**
|
|
2035
|
+
* Text arrived from the system clipboard with nothing editable
|
|
2036
|
+
* focused.
|
|
2037
|
+
*
|
|
2038
|
+
* A paste with a caret in it belongs to the text and never reaches
|
|
2039
|
+
* here. This is the other case: a surface that owns a selection of
|
|
2040
|
+
* its own — a grid with a rectangle of cells picked out — and is the
|
|
2041
|
+
* only thing that knows what a block of text means to it.
|
|
2042
|
+
* `preventDefault()` says it was taken.
|
|
2043
|
+
*/
|
|
2044
|
+
Paste = "paste",
|
|
1996
2045
|
Click = "click",
|
|
2046
|
+
/**
|
|
2047
|
+
* A second Click on the same node, soon enough after the first and
|
|
2048
|
+
* close enough to it.
|
|
2049
|
+
*
|
|
2050
|
+
* Dispatched after that second Click rather than instead of it, as
|
|
2051
|
+
* the DOM's `dblclick` is: a listener that answers a click has
|
|
2052
|
+
* already answered both by the time this arrives, which is what lets
|
|
2053
|
+
* a double click on a cell select it and then do more.
|
|
2054
|
+
*/
|
|
2055
|
+
DoubleClick = "doubleclick",
|
|
1997
2056
|
LongPress = "longpress",
|
|
1998
2057
|
DragStart = "dragstart",
|
|
1999
2058
|
DragMove = "dragmove",
|
|
@@ -2220,12 +2279,45 @@ declare class UiBeforeInputEvent extends UiInputEvent {
|
|
|
2220
2279
|
* An editable node's text changed: the new value and the selection
|
|
2221
2280
|
* after the change. Bubbles, so a form can watch all its fields.
|
|
2222
2281
|
*/
|
|
2282
|
+
/**
|
|
2283
|
+
* Text from the system clipboard, offered to whatever holds focus.
|
|
2284
|
+
*
|
|
2285
|
+
* Carries the text rather than a clipboard handle, because a render
|
|
2286
|
+
* worker has neither a clipboard nor a window: the shell reads it and
|
|
2287
|
+
* sends it across, which is the same path `ShellService.copyText`
|
|
2288
|
+
* takes in the other direction.
|
|
2289
|
+
*/
|
|
2290
|
+
declare class UiPasteEvent extends UiInputEvent {
|
|
2291
|
+
readonly text: string;
|
|
2292
|
+
constructor(text: string);
|
|
2293
|
+
}
|
|
2223
2294
|
declare class UiTextChangeEvent extends UiInputEvent {
|
|
2224
2295
|
readonly value: string;
|
|
2225
2296
|
readonly selectionStart: number;
|
|
2226
2297
|
readonly selectionEnd: number;
|
|
2227
2298
|
constructor(value: string, selectionStart: number, selectionEnd: number);
|
|
2228
2299
|
}
|
|
2300
|
+
/**
|
|
2301
|
+
* An editable's selection moved.
|
|
2302
|
+
*
|
|
2303
|
+
* Carries the text as well as the offsets, because every use of this
|
|
2304
|
+
* is "what is under the caret" and the answer needs both — and
|
|
2305
|
+
* reading the text back off the model afterwards is a second source
|
|
2306
|
+
* of truth that can disagree by a frame.
|
|
2307
|
+
*
|
|
2308
|
+
* `start` and `end` are ordered; `anchor` and `focus` are where the
|
|
2309
|
+
* selection was begun and where the caret now is, which is the pair
|
|
2310
|
+
* that says which way it was dragged.
|
|
2311
|
+
*/
|
|
2312
|
+
declare class UiSelectionChangeEvent extends UiInputEvent {
|
|
2313
|
+
readonly value: string;
|
|
2314
|
+
readonly start: number;
|
|
2315
|
+
readonly end: number;
|
|
2316
|
+
readonly anchor: number;
|
|
2317
|
+
readonly focus: number;
|
|
2318
|
+
constructor(value: string, start: number, end: number, anchor: number, focus: number);
|
|
2319
|
+
get collapsed(): boolean;
|
|
2320
|
+
}
|
|
2229
2321
|
/**
|
|
2230
2322
|
* Wheel scroll input event.
|
|
2231
2323
|
*
|
|
@@ -3760,6 +3852,24 @@ declare function spannedTextOf(node: UiNode): UiSpannedText | undefined;
|
|
|
3760
3852
|
declare function textContentOf(node: UiNode): string;
|
|
3761
3853
|
/** The runs of a node's paragraph; empty when it has none. */
|
|
3762
3854
|
declare function resolvedSpansOf(node: UiNode): readonly UiResolvedTextSpan[];
|
|
3855
|
+
/**
|
|
3856
|
+
* The runs an *editable* node styles its own text with.
|
|
3857
|
+
*
|
|
3858
|
+
* An editable's paragraph is the user's, held by its model rather
|
|
3859
|
+
* than by a property — so unlike a `Text`, its runs do not supply the
|
|
3860
|
+
* text, they only describe it. `spans` on an editable is presentation
|
|
3861
|
+
* over a string somebody is typing.
|
|
3862
|
+
*
|
|
3863
|
+
* Which is why this checks. Every offset the editor works in — the
|
|
3864
|
+
* caret, the selection, the hit test that turns a click into a text
|
|
3865
|
+
* position — is an offset into the model's string. Runs describing a
|
|
3866
|
+
* *different* string would put the glyphs somewhere the caret does
|
|
3867
|
+
* not agree with, and the field would look subtly, unfixably wrong.
|
|
3868
|
+
* When they disagree the text is drawn unstyled, which is a frame of
|
|
3869
|
+
* plain colour rather than a frame of nonsense, and corrects itself
|
|
3870
|
+
* as soon as the application catches up.
|
|
3871
|
+
*/
|
|
3872
|
+
declare function editableSpansOf(node: UiNode, text: string): readonly UiResolvedTextSpan[];
|
|
3763
3873
|
/** The span covering an offset, or undefined where no run does. */
|
|
3764
3874
|
declare function spanAtOffset(spans: readonly UiResolvedTextSpan[], offset: number): UiResolvedTextSpan | undefined;
|
|
3765
3875
|
/**
|
|
@@ -4640,6 +4750,430 @@ declare const lazySource: ((args: LazySourceArgs, key?: string | number) => UiMo
|
|
|
4640
4750
|
readonly kind: UiModifierKind<LazySourceArgs>;
|
|
4641
4751
|
};
|
|
4642
4752
|
//#endregion
|
|
4753
|
+
//#region src/composition/UiVirtualSheet.d.ts
|
|
4754
|
+
/**
|
|
4755
|
+
* Two-axis windowing, for a surface whose geometry is known rather
|
|
4756
|
+
* than measured.
|
|
4757
|
+
*
|
|
4758
|
+
* `LazyColumn` and `LazyGrid` window one axis and learn the extent of
|
|
4759
|
+
* an item by mounting and measuring it, correcting an estimate as the
|
|
4760
|
+
* user scrolls. A spreadsheet is the other case: every row is the same
|
|
4761
|
+
* height and every column the same width because the sheet says so, so
|
|
4762
|
+
* there is nothing to measure and nothing to correct, and the window
|
|
4763
|
+
* on each axis is arithmetic on the scroll offset.
|
|
4764
|
+
*
|
|
4765
|
+
* That difference is why this is its own class rather than a second
|
|
4766
|
+
* axis bolted onto `UiVirtualWindow`. Dropping measurement drops the
|
|
4767
|
+
* correction table, the scroll anchoring and the per-frame walk that
|
|
4768
|
+
* collects extents — none of which a sheet can use — and what is left
|
|
4769
|
+
* is small enough to read in one sitting.
|
|
4770
|
+
*
|
|
4771
|
+
* It also deliberately does **not** use `subgrid: 'columns'`. A lazy
|
|
4772
|
+
* grid's rows share tracks with a header because their widths come
|
|
4773
|
+
* from their content, and `LayoutEngine.collectSubgridColumns` pays
|
|
4774
|
+
* for that by measuring every cell of every mounted row, at unbounded
|
|
4775
|
+
* constraints, on every layout. A sheet is told its column widths, so
|
|
4776
|
+
* a row is an ordinary `Row` of fixed-width cells and the tracks never
|
|
4777
|
+
* have to be sized at all.
|
|
4778
|
+
*/
|
|
4779
|
+
interface SheetViewport {
|
|
4780
|
+
/** Horizontal scroll offset of the container. */
|
|
4781
|
+
scrollX: number;
|
|
4782
|
+
/** Vertical scroll offset of the container. */
|
|
4783
|
+
scrollY: number;
|
|
4784
|
+
/** Visible width. */
|
|
4785
|
+
width: number;
|
|
4786
|
+
/** Visible height. */
|
|
4787
|
+
height: number;
|
|
4788
|
+
}
|
|
4789
|
+
/** The cells the window has mounted, inclusive on both ends. */
|
|
4790
|
+
interface SheetRange {
|
|
4791
|
+
readonly firstRow: number;
|
|
4792
|
+
readonly lastRow: number;
|
|
4793
|
+
readonly firstColumn: number;
|
|
4794
|
+
readonly lastColumn: number;
|
|
4795
|
+
}
|
|
4796
|
+
/**
|
|
4797
|
+
* Builds one row, given the columns the window wants in it.
|
|
4798
|
+
*
|
|
4799
|
+
* It must return a `Row` (or anything that lays its children out
|
|
4800
|
+
* horizontally), and exactly one child per column in `[firstColumn,
|
|
4801
|
+
* lastColumn]`, each keyed by its **absolute** column index. The
|
|
4802
|
+
* window adds the leading spacer and sets the row's own geometry, so
|
|
4803
|
+
* the renderer is only ever asked for cells.
|
|
4804
|
+
*
|
|
4805
|
+
* Keys are absolute rather than positional on purpose: a scroll of one
|
|
4806
|
+
* row then reconciles to one row built and one dropped, instead of
|
|
4807
|
+
* every mounted cell being rewritten to hold its neighbour's value.
|
|
4808
|
+
*/
|
|
4809
|
+
type SheetRowRenderer = (row: number, firstColumn: number, lastColumn: number) => UiChild;
|
|
4810
|
+
interface UiVirtualSheetOptions {
|
|
4811
|
+
readonly rowCount: Reactive<number>;
|
|
4812
|
+
readonly columnCount: Reactive<number>;
|
|
4813
|
+
/** The height every row has unless `rowHeights` says otherwise. */
|
|
4814
|
+
readonly rowHeight: number;
|
|
4815
|
+
/**
|
|
4816
|
+
* The rows that are not the default height, by row index.
|
|
4817
|
+
*
|
|
4818
|
+
* **Sparse, where `columnWidth` is an array, and the asymmetry is
|
|
4819
|
+
* deliberate.** A sheet has a few hundred columns and a width for
|
|
4820
|
+
* each of them is a reasonable thing to hand over; it has up to a
|
|
4821
|
+
* million rows, and an array that long — rebuilt whenever one row
|
|
4822
|
+
* changed — would be the largest allocation in the application, to
|
|
4823
|
+
* describe a sheet where every row but two is the same.
|
|
4824
|
+
*
|
|
4825
|
+
* What actually produces a non-default height is hiding a row
|
|
4826
|
+
* (zero), autofitting one, or wrapping text in it. All three are
|
|
4827
|
+
* exceptions by nature, and there are tens of them rather than
|
|
4828
|
+
* thousands, so the offsets are a multiplication plus a binary
|
|
4829
|
+
* search over the exceptions rather than a prefix sum over
|
|
4830
|
+
* everything.
|
|
4831
|
+
*/
|
|
4832
|
+
readonly rowHeights?: ReadonlyMap<number, number>;
|
|
4833
|
+
/**
|
|
4834
|
+
* One width for every column, or a width per column.
|
|
4835
|
+
*
|
|
4836
|
+
* An array is what makes a column resizable, and it is the reason
|
|
4837
|
+
* the offsets below are a prefix sum rather than a multiplication.
|
|
4838
|
+
* A sheet of a few hundred columns keeps the sum and searches it;
|
|
4839
|
+
* that is two orders of magnitude cheaper than measuring, which is
|
|
4840
|
+
* the thing this class exists not to do.
|
|
4841
|
+
*/
|
|
4842
|
+
readonly columnWidth: number | readonly number[];
|
|
4843
|
+
/** Rows mounted beyond each edge of the viewport. Default 3. */
|
|
4844
|
+
readonly rowOverscan?: Reactive<number>;
|
|
4845
|
+
/** Columns mounted beyond each edge of the viewport. Default 2. */
|
|
4846
|
+
readonly columnOverscan?: Reactive<number>;
|
|
4847
|
+
/**
|
|
4848
|
+
* A frozen strip at the start of every row — a sheet's row numbers.
|
|
4849
|
+
*
|
|
4850
|
+
* The window needs its width because it is content: it shifts every
|
|
4851
|
+
* column along by that much and it is part of the scrollable extent.
|
|
4852
|
+
* Keeping it *visible* while the sheet scrolls sideways is the
|
|
4853
|
+
* renderer's business, with `position: 'sticky'` on whatever the row
|
|
4854
|
+
* renderer puts there.
|
|
4855
|
+
*/
|
|
4856
|
+
readonly gutterWidth?: number;
|
|
4857
|
+
/** Height of the header row above the rows, when there is one. */
|
|
4858
|
+
readonly headerHeight?: number;
|
|
4859
|
+
/**
|
|
4860
|
+
* Rows and columns kept mounted however far the sheet is scrolled.
|
|
4861
|
+
*
|
|
4862
|
+
* A frozen pane, and the second thing that cannot be windowed by
|
|
4863
|
+
* position alone — `extendRange` is no use here, because widening
|
|
4864
|
+
* the window back to row 0 from row 5,000 would mount five thousand
|
|
4865
|
+
* rows to show one.
|
|
4866
|
+
*
|
|
4867
|
+
* What this does is *mount* them and take them out of the scrolled
|
|
4868
|
+
* window, so they appear once rather than twice and the spacers
|
|
4869
|
+
* account for them. Keeping them **visible** is the renderer's
|
|
4870
|
+
* business, with `position: 'sticky'` — exactly as it already is
|
|
4871
|
+
* for the header row and the gutter, which are this idea with the
|
|
4872
|
+
* count fixed at one.
|
|
4873
|
+
*
|
|
4874
|
+
* With `frozenColumns` set, a row renderer is asked for the columns
|
|
4875
|
+
* in `[0, frozenColumns)` first and then for `[firstColumn,
|
|
4876
|
+
* lastColumn]`, and the window puts the leading spacer between the
|
|
4877
|
+
* two groups.
|
|
4878
|
+
*/
|
|
4879
|
+
readonly frozenRows?: number;
|
|
4880
|
+
readonly frozenColumns?: number;
|
|
4881
|
+
/**
|
|
4882
|
+
* Widens the window the viewport implies, for things the document
|
|
4883
|
+
* says reach outside it.
|
|
4884
|
+
*
|
|
4885
|
+
* **The one place a sheet's geometry is allowed to depend on its
|
|
4886
|
+
* contents.** Everything else here is arithmetic on the scroll
|
|
4887
|
+
* offset, which is what makes it cheap; this is the exception, and
|
|
4888
|
+
* it exists because two things genuinely cannot be windowed by
|
|
4889
|
+
* position alone.
|
|
4890
|
+
*
|
|
4891
|
+
* A **merged cell** is the case that forced it. A merge spanning
|
|
4892
|
+
* C3:E3 is drawn by its anchor, C3, and when the sheet is scrolled
|
|
4893
|
+
* so the window begins at column D there is no anchor to draw —
|
|
4894
|
+
* the merge silently disappears at the left edge of the screen.
|
|
4895
|
+
* Widening the window to include the anchor is the only fix that
|
|
4896
|
+
* does not put the document inside this class: the caller knows
|
|
4897
|
+
* where its merges are, and returns a range that covers them.
|
|
4898
|
+
*
|
|
4899
|
+
* Called on every recompute, so it must be cheap — a lookup, not a
|
|
4900
|
+
* scan. Returning the range unchanged costs nothing at all. If what
|
|
4901
|
+
* it would answer changes without the viewport moving, the caller
|
|
4902
|
+
* says so with `invalidate`.
|
|
4903
|
+
*/
|
|
4904
|
+
readonly extendRange?: (range: SheetRange) => SheetRange;
|
|
4905
|
+
/** Viewport assumed before the first layout. */
|
|
4906
|
+
readonly initialViewport?: {
|
|
4907
|
+
readonly width: number;
|
|
4908
|
+
readonly height: number;
|
|
4909
|
+
};
|
|
4910
|
+
}
|
|
4911
|
+
/**
|
|
4912
|
+
* Builds the row above the rows, for the columns now in the window.
|
|
4913
|
+
*
|
|
4914
|
+
* Rendered once per column window rather than once per frame, and
|
|
4915
|
+
* placed before the leading spacer, so a header that is
|
|
4916
|
+
* `position: 'sticky'` with `top: 0` stays put while the rows scroll
|
|
4917
|
+
* under it and moves with them when they scroll sideways.
|
|
4918
|
+
*/
|
|
4919
|
+
type SheetHeaderRenderer = (firstColumn: number, lastColumn: number) => UiChild;
|
|
4920
|
+
/** The sheet sits on its scroll container under this property. */
|
|
4921
|
+
declare const VIRTUAL_SHEET_PROP = "virtualSheet";
|
|
4922
|
+
declare class UiVirtualSheet {
|
|
4923
|
+
readonly children$: BehaviorSubject<UiElement[]>;
|
|
4924
|
+
/**
|
|
4925
|
+
* The range now mounted, for whoever has to fetch the values in it.
|
|
4926
|
+
*
|
|
4927
|
+
* This is the whole reason the window is reachable from outside: the
|
|
4928
|
+
* render thread does not hold the cells, so the range it settles on
|
|
4929
|
+
* each frame is what it asks the application thread for. Emits only
|
|
4930
|
+
* when the range changes, so binding a command to it does not send
|
|
4931
|
+
* one per frame.
|
|
4932
|
+
*/
|
|
4933
|
+
readonly range$: BehaviorSubject<SheetRange>;
|
|
4934
|
+
private rowCount;
|
|
4935
|
+
private columnCount;
|
|
4936
|
+
private rowOverscan;
|
|
4937
|
+
private columnOverscan;
|
|
4938
|
+
private rowHeight;
|
|
4939
|
+
private readonly gutterWidth;
|
|
4940
|
+
private readonly headerHeight;
|
|
4941
|
+
private frozenRows;
|
|
4942
|
+
private frozenColumns;
|
|
4943
|
+
private readonly renderRow;
|
|
4944
|
+
private renderHeader;
|
|
4945
|
+
private readonly extendRange;
|
|
4946
|
+
/** One width per column, or undefined when every column is the same. */
|
|
4947
|
+
private widths;
|
|
4948
|
+
/** `offsets[c]` is where column `c` starts, measured past the gutter. */
|
|
4949
|
+
private offsets;
|
|
4950
|
+
private uniformWidth;
|
|
4951
|
+
/**
|
|
4952
|
+
* The rows that are not `rowHeight` tall, in row order.
|
|
4953
|
+
*
|
|
4954
|
+
* Three parallel arrays rather than a map of objects: this is
|
|
4955
|
+
* searched on every hit test and on every frame that scrolls, and
|
|
4956
|
+
* the arrays are read in step.
|
|
4957
|
+
*/
|
|
4958
|
+
private exceptionRows;
|
|
4959
|
+
private exceptionHeights;
|
|
4960
|
+
/** `exceptionStarts[i]` is where `exceptionRows[i]` starts, past the header. */
|
|
4961
|
+
private exceptionStarts;
|
|
4962
|
+
private range;
|
|
4963
|
+
private viewport;
|
|
4964
|
+
/** Rows built for the current column range, so a vertical scroll rebuilds one row. */
|
|
4965
|
+
private readonly mountedRows;
|
|
4966
|
+
/** The frozen rows, kept separately because they never leave. */
|
|
4967
|
+
private readonly frozenMounted;
|
|
4968
|
+
private mountedHeader;
|
|
4969
|
+
constructor(options: UiVirtualSheetOptions, renderRow: SheetRowRenderer, renderHeader?: SheetHeaderRenderer);
|
|
4970
|
+
/**
|
|
4971
|
+
* New column widths, as a drag on a header edge produces.
|
|
4972
|
+
*
|
|
4973
|
+
* The prefix sum is rebuilt whole. It is one pass over the columns
|
|
4974
|
+
* and it happens once per frame of a drag at most, against a
|
|
4975
|
+
* per-column offset that would otherwise have to be corrected
|
|
4976
|
+
* everywhere downstream of the column that moved.
|
|
4977
|
+
*/
|
|
4978
|
+
setColumnWidths(widths: number | readonly number[]): void;
|
|
4979
|
+
private adoptWidths;
|
|
4980
|
+
/**
|
|
4981
|
+
* New row heights, as hiding a row or autofitting one produces.
|
|
4982
|
+
*
|
|
4983
|
+
* The exceptions are rebuilt whole, which is one pass over *them*
|
|
4984
|
+
* and not over the rows — the whole reason they are sparse. A
|
|
4985
|
+
* height of zero is a hidden row and is allowed; a negative one is
|
|
4986
|
+
* not.
|
|
4987
|
+
*/
|
|
4988
|
+
setRowHeights(heights: ReadonlyMap<number, number> | undefined): void;
|
|
4989
|
+
/** The height every row has unless it is an exception. */
|
|
4990
|
+
setRowHeight(height: number): void;
|
|
4991
|
+
private adoptHeights;
|
|
4992
|
+
/**
|
|
4993
|
+
* Where each exception begins, and what they cost in total.
|
|
4994
|
+
*
|
|
4995
|
+
* `start` is the row's own offset past the header, so the inverse —
|
|
4996
|
+
* `rowAt` — can binary search it directly rather than reconstructing
|
|
4997
|
+
* it per probe.
|
|
4998
|
+
*/
|
|
4999
|
+
private rebuildExceptionStarts;
|
|
5000
|
+
/** The index of the last exception starting at or before an offset, or -1. */
|
|
5001
|
+
private exceptionAt;
|
|
5002
|
+
/** How many exceptions come before a row, as an index into them. */
|
|
5003
|
+
private exceptionsBefore;
|
|
5004
|
+
/** The height of one row. Zero when it is hidden. */
|
|
5005
|
+
rowHeightOf(row: number): number;
|
|
5006
|
+
/** Where a row starts, measured past the header. */
|
|
5007
|
+
rowOffsetOf(row: number): number;
|
|
5008
|
+
/** Total height of the rows, not counting the header. */
|
|
5009
|
+
private get rowsHeight();
|
|
5010
|
+
/**
|
|
5011
|
+
* What the exceptions before `row` add to or take off the offset.
|
|
5012
|
+
*
|
|
5013
|
+
* Read off the last exception before it rather than summed: the
|
|
5014
|
+
* start of an exception already carries everything before it, so
|
|
5015
|
+
* its end minus where it *would* have ended is the running total.
|
|
5016
|
+
*/
|
|
5017
|
+
private extraWithin;
|
|
5018
|
+
/** The width of one column. */
|
|
5019
|
+
widthOf(column: number): number;
|
|
5020
|
+
/** Where a column starts, measured past the gutter. */
|
|
5021
|
+
offsetOf(column: number): number;
|
|
5022
|
+
/** Total width of the columns, not counting the gutter. */
|
|
5023
|
+
private get columnsWidth();
|
|
5024
|
+
get contentWidth(): number;
|
|
5025
|
+
/** Where the scrolled columns begin, past the gutter and the frozen ones. */
|
|
5026
|
+
private get frozenWidth();
|
|
5027
|
+
get contentHeight(): number;
|
|
5028
|
+
/**
|
|
5029
|
+
* The cell under a point in the scroll container's own coordinates.
|
|
5030
|
+
*
|
|
5031
|
+
* The window already knows where everything is and how far it is
|
|
5032
|
+
* scrolled, which is the whole of this: a drag towards a cell — a
|
|
5033
|
+
* fill handle, a selection being stretched — is usually heading for
|
|
5034
|
+
* one that has not been mounted, so there is no node to hit-test and
|
|
5035
|
+
* arithmetic is the only answer available.
|
|
5036
|
+
*/
|
|
5037
|
+
cellAt(x: number, y: number): {
|
|
5038
|
+
row: number;
|
|
5039
|
+
column: number;
|
|
5040
|
+
};
|
|
5041
|
+
/**
|
|
5042
|
+
* The row at a content offset, clamped to the sheet.
|
|
5043
|
+
*
|
|
5044
|
+
* A division when every row is the default height — the common case
|
|
5045
|
+
* by a very long way — and otherwise a binary search over the
|
|
5046
|
+
* exceptions followed by a division inside the uniform run that
|
|
5047
|
+
* follows the one it lands in.
|
|
5048
|
+
*
|
|
5049
|
+
* A hidden row occupies no offset at all, so the offset where it
|
|
5050
|
+
* *would* be belongs to the row after it. That falls out of the
|
|
5051
|
+
* arithmetic rather than being special-cased: a zero-height
|
|
5052
|
+
* exception starts and ends at the same place, so the point is
|
|
5053
|
+
* never inside it.
|
|
5054
|
+
*/
|
|
5055
|
+
rowAt(offset: number): number;
|
|
5056
|
+
/**
|
|
5057
|
+
* The column at a content offset, clamped to the sheet.
|
|
5058
|
+
*
|
|
5059
|
+
* A binary search over the prefix sum when the columns differ, and
|
|
5060
|
+
* a division when they do not — the uniform case is the common one
|
|
5061
|
+
* and should not pay for the general one.
|
|
5062
|
+
*/
|
|
5063
|
+
columnAt(offset: number): number;
|
|
5064
|
+
setRowCount(count: number): void;
|
|
5065
|
+
setColumnCount(count: number): void;
|
|
5066
|
+
/**
|
|
5067
|
+
* The bands, which the spike tunes from the screen.
|
|
5068
|
+
*
|
|
5069
|
+
* A band is the only defence against the round trip to the
|
|
5070
|
+
* application thread: rows inside it already hold their values when
|
|
5071
|
+
* the scroll reaches them. Widening it costs nodes on every frame
|
|
5072
|
+
* and cells on every publish, so what it should be is a measurement,
|
|
5073
|
+
* not a default — hence setters rather than a constant.
|
|
5074
|
+
*/
|
|
5075
|
+
setOverscan(rows: number, columns: number): void;
|
|
5076
|
+
/**
|
|
5077
|
+
* How many rows and columns stay put while the rest scrolls.
|
|
5078
|
+
*
|
|
5079
|
+
* Freezing changes which rows are in the scrolled window, so every
|
|
5080
|
+
* mounted row is rebuilt — a row that was scrolling is now frozen
|
|
5081
|
+
* or the other way about.
|
|
5082
|
+
*/
|
|
5083
|
+
setFrozen(rows: number, columns: number): void;
|
|
5084
|
+
/** Drops every mounted row and rebuilds against the last viewport. */
|
|
5085
|
+
invalidate(): void;
|
|
5086
|
+
/**
|
|
5087
|
+
* One step, run by the host each frame before layout.
|
|
5088
|
+
*
|
|
5089
|
+
* Nothing is measured and nothing is anchored: the offsets are exact,
|
|
5090
|
+
* so the rows a scroll reveals are placed correctly on the frame
|
|
5091
|
+
* that reveals them rather than corrected on the one after.
|
|
5092
|
+
*/
|
|
5093
|
+
update(viewport: SheetViewport): void;
|
|
5094
|
+
private recompute;
|
|
5095
|
+
/**
|
|
5096
|
+
* The window, in content coordinates.
|
|
5097
|
+
*
|
|
5098
|
+
* The header and the gutter are *content*: they occupy the first
|
|
5099
|
+
* `headerHeight` pixels and the first `gutterWidth`, and `rowAt` and
|
|
5100
|
+
* `columnAt` already subtract them. So the range comes out slightly
|
|
5101
|
+
* generous at the near edges — the rows a header is covering are
|
|
5102
|
+
* mounted, and the columns behind the gutter are too — which is
|
|
5103
|
+
* correct rather than wasteful, since a sticky strip is drawn over
|
|
5104
|
+
* cells that are really there.
|
|
5105
|
+
*/
|
|
5106
|
+
private windowFor;
|
|
5107
|
+
private buildChildren;
|
|
5108
|
+
/**
|
|
5109
|
+
* The header, given the same geometry a row gets.
|
|
5110
|
+
*
|
|
5111
|
+
* Its own children are laid out exactly like a row's, so that a
|
|
5112
|
+
* column header lines up with the column under it without either
|
|
5113
|
+
* being told where the other is: the same leading spacer, the same
|
|
5114
|
+
* gutter-sized first cell, the same widths.
|
|
5115
|
+
*/
|
|
5116
|
+
private wrapHeader;
|
|
5117
|
+
/**
|
|
5118
|
+
* A row's children with the leading spacer in the right place.
|
|
5119
|
+
*
|
|
5120
|
+
* With a gutter, the renderer's first child *is* the gutter: it sits
|
|
5121
|
+
* at content x 0 and the columns begin past it, so the spacer for
|
|
5122
|
+
* the columns scrolled out of view goes after it. Without one the
|
|
5123
|
+
* spacer goes first. Either way the renderer is handed a range of
|
|
5124
|
+
* columns and never has to know where the window is.
|
|
5125
|
+
*/
|
|
5126
|
+
private withLead;
|
|
5127
|
+
/**
|
|
5128
|
+
* The row the renderer returned, given its place in the sheet.
|
|
5129
|
+
*
|
|
5130
|
+
* The leading spacer is prepended here rather than asked of the
|
|
5131
|
+
* renderer, because it is windowing bookkeeping and not a cell: it is
|
|
5132
|
+
* what puts column `firstColumn` at its own offset without the row
|
|
5133
|
+
* holding the columns to its left.
|
|
5134
|
+
*/
|
|
5135
|
+
private wrap;
|
|
5136
|
+
}
|
|
5137
|
+
/** What `sheetSource` carries from a LazySheet's props to its window. */
|
|
5138
|
+
interface SheetSourceArgs {
|
|
5139
|
+
readonly sheet: UiVirtualSheet;
|
|
5140
|
+
readonly rowCount: Reactive<number>;
|
|
5141
|
+
readonly columnCount: Reactive<number>;
|
|
5142
|
+
readonly rowOverscan?: Reactive<number>;
|
|
5143
|
+
readonly columnOverscan?: Reactive<number>;
|
|
5144
|
+
}
|
|
5145
|
+
/**
|
|
5146
|
+
* Feeds a sheet the inputs that may change, with the node's lifetime.
|
|
5147
|
+
*
|
|
5148
|
+
* The same reasoning as `lazySource`: a modifier is released inside
|
|
5149
|
+
* `removeSubtree`, and it attaches after the element's props and
|
|
5150
|
+
* before its children, so a count that arrives with the tree is in the
|
|
5151
|
+
* window before the first children are read from it.
|
|
5152
|
+
*/
|
|
5153
|
+
declare const sheetSource: ((args: SheetSourceArgs, key?: string | number) => UiModifier<SheetSourceArgs>) & {
|
|
5154
|
+
readonly kind: UiModifierKind<SheetSourceArgs>;
|
|
5155
|
+
};
|
|
5156
|
+
type LazySheetProps = ScrollViewProps & Omit<UiVirtualSheetOptions, 'initialViewport'> & {
|
|
5157
|
+
/** Hands the window to the caller, once, as the element is built. */
|
|
5158
|
+
sheetRef?: (sheet: UiVirtualSheet) => void;
|
|
5159
|
+
/** The row above the rows, sized by `headerHeight`. */
|
|
5160
|
+
header?: SheetHeaderRenderer;
|
|
5161
|
+
};
|
|
5162
|
+
/**
|
|
5163
|
+
* A scrolling surface that mounts only the cells in view, on both axes.
|
|
5164
|
+
*
|
|
5165
|
+
* LazySheet({ rowCount: 10_000, columnCount: 100, rowHeight: 24, columnWidth: 96 },
|
|
5166
|
+
* (row, first, last) => Row({}, ...cells(row, first, last)))
|
|
5167
|
+
*
|
|
5168
|
+
* It is a ScrollView whose children are a spacer for the rows above
|
|
5169
|
+
* the window, the mounted rows, and a spacer for the rows below; each
|
|
5170
|
+
* row carries a spacer for the columns to its left and is as wide as
|
|
5171
|
+
* the whole sheet, so the container's content extent — and both
|
|
5172
|
+
* scrollbars — are the sheet's real size on the first frame rather
|
|
5173
|
+
* than an estimate that settles.
|
|
5174
|
+
*/
|
|
5175
|
+
declare function LazySheet(props: LazySheetProps, renderRow: SheetRowRenderer): UiElement;
|
|
5176
|
+
//#endregion
|
|
4643
5177
|
//#region src/editing/EditableTextModel.d.ts
|
|
4644
5178
|
/** How far a caret move or a delete reaches. */
|
|
4645
5179
|
type EditUnit = 'grapheme' | 'word' | 'line' | 'document';
|
|
@@ -4693,6 +5227,21 @@ declare class EditableTextModel {
|
|
|
4693
5227
|
blinkOrigin: number;
|
|
4694
5228
|
/** The last `value` the host synchronised in; see `UiEditable`. */
|
|
4695
5229
|
syncedValue: string | undefined;
|
|
5230
|
+
/**
|
|
5231
|
+
* The selection the last `selectionchange` reported.
|
|
5232
|
+
*
|
|
5233
|
+
* Kept on the model rather than worked out at each call site,
|
|
5234
|
+
* because the caret is moved from a dozen places — arrows, clicks,
|
|
5235
|
+
* select-all, an edit that replaces a range — and every one of them
|
|
5236
|
+
* would otherwise have to remember to compare. Storing what was
|
|
5237
|
+
* last said makes the comparison the notifier's job and the answer
|
|
5238
|
+
* the same wherever the move came from.
|
|
5239
|
+
*
|
|
5240
|
+
* `NaN` to begin with, so the first report always fires: a fresh
|
|
5241
|
+
* model at offset zero has genuinely not told anyone yet.
|
|
5242
|
+
*/
|
|
5243
|
+
notifiedAnchor: number;
|
|
5244
|
+
notifiedFocus: number;
|
|
4696
5245
|
constructor(text?: string);
|
|
4697
5246
|
get text(): string;
|
|
4698
5247
|
get anchor(): number;
|
|
@@ -5079,6 +5628,18 @@ declare const UiProperties: {
|
|
|
5079
5628
|
* 'right-end'.
|
|
5080
5629
|
*/
|
|
5081
5630
|
readonly placement: UiPropertyDefinition<UiPlacement | undefined>;
|
|
5631
|
+
/**
|
|
5632
|
+
* A point to be placed beside, as though it were an anchor of no
|
|
5633
|
+
* size: where a context menu was asked for. Relative to the
|
|
5634
|
+
* containing block, like `top` and `left`, and with `placement` the
|
|
5635
|
+
* same flip and clamp an anchored node gets — so a menu opened near
|
|
5636
|
+
* the bottom edge opens upward instead of off the screen. Ignored
|
|
5637
|
+
* when `anchor` is set.
|
|
5638
|
+
*/
|
|
5639
|
+
readonly anchorPoint: UiPropertyDefinition<{
|
|
5640
|
+
readonly x: number;
|
|
5641
|
+
readonly y: number;
|
|
5642
|
+
} | undefined>;
|
|
5082
5643
|
/** Gap between an anchored node and its anchor. */
|
|
5083
5644
|
readonly anchorOffset: UiPropertyDefinition<number | undefined>;
|
|
5084
5645
|
/**
|
|
@@ -5202,6 +5763,7 @@ declare const UiProperties: {
|
|
|
5202
5763
|
readonly selectable: UiPropertyDefinition<boolean | undefined>;
|
|
5203
5764
|
readonly pointerEvents: UiPropertyDefinition<UiPointerEvents | undefined>;
|
|
5204
5765
|
readonly focusable: UiPropertyDefinition<boolean | undefined>;
|
|
5766
|
+
readonly tabStop: UiPropertyDefinition<boolean | undefined>;
|
|
5205
5767
|
readonly disabled: UiPropertyDefinition<boolean | undefined>;
|
|
5206
5768
|
/** What this node is, in ARIA's vocabulary. Closed: a typo throws. */
|
|
5207
5769
|
readonly role: UiPropertyDefinition<UiRole | undefined>;
|
|
@@ -5292,6 +5854,8 @@ declare const UiProperties: {
|
|
|
5292
5854
|
readonly virtualLead: UiPropertyDefinition<boolean | undefined>;
|
|
5293
5855
|
/** Set by LazyColumn/LazyRow on the scroll container: its UiVirtualWindow. */
|
|
5294
5856
|
readonly virtualWindow: UiPropertyDefinition<UiVirtualWindow | undefined>;
|
|
5857
|
+
/** Set by LazySheet on the scroll container: its UiVirtualSheet. */
|
|
5858
|
+
readonly virtualSheet: UiPropertyDefinition<UiVirtualSheet | undefined>;
|
|
5295
5859
|
readonly theme: UiPropertyDefinition<UiTheme | undefined>;
|
|
5296
5860
|
/**
|
|
5297
5861
|
* The type this element and its subtree are written in: a role in
|
|
@@ -5400,6 +5964,8 @@ type UiEventProps = {
|
|
|
5400
5964
|
onPointerEnter?: (event: UiPointerEvent) => void;
|
|
5401
5965
|
onPointerLeave?: (event: UiPointerEvent) => void;
|
|
5402
5966
|
onClick?: (event: UiPointerEvent) => void;
|
|
5967
|
+
/** A second Click on the same node, within the double-click window. */
|
|
5968
|
+
onDoubleClick?: (event: UiPointerEvent) => void;
|
|
5403
5969
|
onLongPress?: (event: UiPointerEvent) => void;
|
|
5404
5970
|
onDragStart?: (event: UiPointerEvent) => void;
|
|
5405
5971
|
onDragMove?: (event: UiPointerEvent) => void;
|
|
@@ -5421,6 +5987,23 @@ type UiEventProps = {
|
|
|
5421
5987
|
onBeforeInput?: (event: UiBeforeInputEvent) => void;
|
|
5422
5988
|
/** An editable's text changed. */
|
|
5423
5989
|
onInput?: (event: UiTextChangeEvent) => void;
|
|
5990
|
+
/**
|
|
5991
|
+
* An editable's selection moved, with or without a text change.
|
|
5992
|
+
*
|
|
5993
|
+
* The caret moves without the text on every arrow key, every click
|
|
5994
|
+
* into the text and every select-all, and `onInput` says nothing
|
|
5995
|
+
* about any of them. Anything that decorates by caret position — a
|
|
5996
|
+
* bracket matched against the one beside it, a hint about the
|
|
5997
|
+
* argument being typed — needs this one.
|
|
5998
|
+
*/
|
|
5999
|
+
onSelectionChange?: (event: UiSelectionChangeEvent) => void;
|
|
6000
|
+
/**
|
|
6001
|
+
* Text from the clipboard, when nothing editable has the caret.
|
|
6002
|
+
*
|
|
6003
|
+
* `preventDefault()` says it was taken. A paste with a caret in it
|
|
6004
|
+
* belongs to the text and never reaches here.
|
|
6005
|
+
*/
|
|
6006
|
+
onPaste?: (event: UiPasteEvent) => void;
|
|
5424
6007
|
};
|
|
5425
6008
|
/** Reconciliation identity and node access; never stored on the node. */
|
|
5426
6009
|
type IdentityProps = {
|
|
@@ -5432,14 +6015,14 @@ type BoxModelProps = PropsOf<'width' | 'height' | 'minWidth' | 'maxWidth' | 'min
|
|
|
5432
6015
|
type FlexItemProps = PropsOf<'flex' | 'flexGrow' | 'flexShrink' | 'flexBasis' | 'selfX' | 'selfY' | 'layoutData'>;
|
|
5433
6016
|
/** Where an element sits in a Grid. */
|
|
5434
6017
|
type GridItemProps = PropsOf<'column' | 'columnSpan' | 'row' | 'rowSpan'>;
|
|
5435
|
-
type PositionProps = PropsOf<'position' | 'top' | 'right' | 'bottom' | 'left' | 'inset' | 'zIndex' | 'lift' | 'liftBoundary' | 'anchor' | 'placement' | 'anchorOffset'>;
|
|
6018
|
+
type PositionProps = PropsOf<'position' | 'top' | 'right' | 'bottom' | 'left' | 'inset' | 'zIndex' | 'lift' | 'liftBoundary' | 'anchor' | 'anchorPoint' | 'placement' | 'anchorOffset'>;
|
|
5436
6019
|
type PaintProps = PropsOf<'backgroundColor' | 'backgroundGradient' | 'borderColor' | 'borderWidth' | 'borderRadius' | 'opacity' | 'boxShadows' | 'visible' | 'transform'>;
|
|
5437
6020
|
/**
|
|
5438
6021
|
* Inherited text properties. Legal on any element: set on a container,
|
|
5439
6022
|
* they cascade to the text below it.
|
|
5440
6023
|
*/
|
|
5441
6024
|
type TypographyProps = PropsOf<'color' | 'fontFamily' | 'fontSize' | 'fontWeight' | 'lineHeight' | 'letterSpacing' | 'textAlign' | 'textDirection' | 'fontStyle' | 'fontStretch' | 'fontVariant' | 'fontKerning' | 'textDecoration'>;
|
|
5442
|
-
type InteractionProps = PropsOf<'cursor' | 'pointerEvents' | 'focusable' | 'disabled' | 'hitTestable' | 'visualState' | 'selectable'>;
|
|
6025
|
+
type InteractionProps = PropsOf<'cursor' | 'pointerEvents' | 'focusable' | 'tabStop' | 'disabled' | 'hitTestable' | 'visualState' | 'selectable'>;
|
|
5443
6026
|
/**
|
|
5444
6027
|
* What the element means, for assistive technology. Legal on any
|
|
5445
6028
|
* element; a component sets them on the node that *is* the control,
|
|
@@ -5496,8 +6079,16 @@ type TextProps = CommonProps & TextContentProps;
|
|
|
5496
6079
|
* every change; `multiline` lets Enter insert a newline. Wrapping
|
|
5497
6080
|
* follows `textWrap` (use `'none'` for a single-line field that scrolls
|
|
5498
6081
|
* rather than wraps).
|
|
6082
|
+
*
|
|
6083
|
+
* `spans` styles that text in runs, and here it means something
|
|
6084
|
+
* narrower than it does on a `Text`: an editable's paragraph is the
|
|
6085
|
+
* model's, so the runs describe the text rather than supplying it.
|
|
6086
|
+
* Their concatenation has to equal `value`, and when it does not the
|
|
6087
|
+
* text is drawn unstyled — every offset the editor works in is an
|
|
6088
|
+
* offset into the model's string, and runs describing a different one
|
|
6089
|
+
* would put the glyphs where the caret does not agree with them.
|
|
5499
6090
|
*/
|
|
5500
|
-
type EditableTextProps = CommonProps & PropsOf<'value' | 'placeholder' | 'multiline' | 'readOnly' | 'textWrap' | 'verticalAlign' | 'caretColor' | 'selectionColor' | 'placeholderColor'>;
|
|
6091
|
+
type EditableTextProps = CommonProps & PropsOf<'value' | 'spans' | 'placeholder' | 'multiline' | 'readOnly' | 'textWrap' | 'verticalAlign' | 'caretColor' | 'selectionColor' | 'placeholderColor'>;
|
|
5501
6092
|
/**
|
|
5502
6093
|
* A Box stacks its children in one content box, aligned by `x` / `y`,
|
|
5503
6094
|
* and may draw an image behind them.
|
|
@@ -8417,6 +9008,20 @@ declare class UiFocusManager {
|
|
|
8417
9008
|
* this again once the frame's tree is built, which is when a dialog
|
|
8418
9009
|
* gets its caret. Idempotent: with focus already inside the scope,
|
|
8419
9010
|
* or no scope at all, it does nothing.
|
|
9011
|
+
*
|
|
9012
|
+
* **The scope root is the fallback, and it is the whole reason
|
|
9013
|
+
* `tabStop` exists.** A scope with no tab stop inside it used to
|
|
9014
|
+
* blur, which hands the keyboard to nothing: a `Dialog` whose body
|
|
9015
|
+
* is a sentence and a button could not be dismissed with Escape,
|
|
9016
|
+
* because Escape had nowhere to be delivered. Falling back to the
|
|
9017
|
+
* root fixes that only if the root can hold focus without becoming a
|
|
9018
|
+
* stop of its own, or every dialog grows a tab stop that announces
|
|
9019
|
+
* nothing. `focusable: true, tabStop: false` on the body is exactly
|
|
9020
|
+
* that pair, and the fallback is what makes it worth setting.
|
|
9021
|
+
*
|
|
9022
|
+
* Blurring is still what happens when the root cannot hold focus
|
|
9023
|
+
* either, because a scope that has genuinely nothing to focus is
|
|
9024
|
+
* better admitted than faked.
|
|
8420
9025
|
*/
|
|
8421
9026
|
settleScope(): void;
|
|
8422
9027
|
/**
|
|
@@ -8443,7 +9048,14 @@ declare class UiFocusManager {
|
|
|
8443
9048
|
*/
|
|
8444
9049
|
handleNodeRemoved(_node: UiNode): void;
|
|
8445
9050
|
private moveFocus;
|
|
8446
|
-
/**
|
|
9051
|
+
/**
|
|
9052
|
+
* The tab stops in document order (parent before children).
|
|
9053
|
+
*
|
|
9054
|
+
* Tab stops and not every focusable node: a container with
|
|
9055
|
+
* `tabStop: false` can hold focus and is not a place the cycle
|
|
9056
|
+
* stops, which is what lets a dialog body be the keyboard's home of
|
|
9057
|
+
* last resort without becoming a stop of its own.
|
|
9058
|
+
*/
|
|
8447
9059
|
private collectFocusable;
|
|
8448
9060
|
/** Whether the node may hold focus given the active scope, if any. */
|
|
8449
9061
|
private withinScope;
|
|
@@ -8787,7 +9399,15 @@ interface ScrollContainerState {
|
|
|
8787
9399
|
scrollY: number;
|
|
8788
9400
|
maxScrollX: number;
|
|
8789
9401
|
maxScrollY: number;
|
|
8790
|
-
/**
|
|
9402
|
+
/**
|
|
9403
|
+
* True when the container lays its children out in a row.
|
|
9404
|
+
*
|
|
9405
|
+
* The wheel no longer reads this: it asks each axis whether it has
|
|
9406
|
+
* room, so a container that overflows both ways takes both deltas.
|
|
9407
|
+
* `UiTouchScroller` still reads it to pick the axis a drag and its
|
|
9408
|
+
* inertia run along, which is a single-axis model — a two-axis
|
|
9409
|
+
* container is panned on whichever axis this names.
|
|
9410
|
+
*/
|
|
8791
9411
|
horizontal: boolean;
|
|
8792
9412
|
/**
|
|
8793
9413
|
* The visible extent, which is what a page-mode wheel delta means.
|
|
@@ -9007,6 +9627,11 @@ interface PointerControllerOptions {
|
|
|
9007
9627
|
* follows the pointer through this.
|
|
9008
9628
|
*/
|
|
9009
9629
|
onHoverChange?: (node: UiNode | null) => void;
|
|
9630
|
+
/**
|
|
9631
|
+
* The clock a double click is timed against, in milliseconds.
|
|
9632
|
+
* `performance.now` by default; a spec hands in its own.
|
|
9633
|
+
*/
|
|
9634
|
+
now?: () => number;
|
|
9010
9635
|
/**
|
|
9011
9636
|
* Default pointer behaviour for editable text: a press places the
|
|
9012
9637
|
* caret (or selects a word, a line), a drag extends the selection.
|
|
@@ -9100,6 +9725,15 @@ declare class UiPointerController {
|
|
|
9100
9725
|
private readonly onHoverChange;
|
|
9101
9726
|
private readonly editing;
|
|
9102
9727
|
private readonly selection;
|
|
9728
|
+
private readonly now;
|
|
9729
|
+
/**
|
|
9730
|
+
* The last Click, for telling whether the next one makes a pair.
|
|
9731
|
+
*
|
|
9732
|
+
* Only a Click counts, not a press: a press that became a drag, or
|
|
9733
|
+
* was cancelled, is not half of a double click, and a release that
|
|
9734
|
+
* followed one would otherwise be read as the second half of it.
|
|
9735
|
+
*/
|
|
9736
|
+
private lastClick;
|
|
9103
9737
|
private hoverNode;
|
|
9104
9738
|
private downTarget;
|
|
9105
9739
|
private downX;
|
|
@@ -9148,6 +9782,18 @@ declare class UiPointerController {
|
|
|
9148
9782
|
* the same node. Returns null when nothing was pressed.
|
|
9149
9783
|
*/
|
|
9150
9784
|
pointerUp(x: number, y: number, buttons?: number, modifiers?: UiKeyModifiers, pointer?: UiPointerDevice): UiPointerEvent | null;
|
|
9785
|
+
/**
|
|
9786
|
+
* Pairs this Click with the one before it, and dispatches a
|
|
9787
|
+
* DoubleClick when they make a pair.
|
|
9788
|
+
*
|
|
9789
|
+
* A pair is two Clicks on the same node within `MULTI_CLICK_MS` and
|
|
9790
|
+
* `MULTI_CLICK_SLOP` of each other — the window the editing and
|
|
9791
|
+
* selection controllers already use for a word, so a double click
|
|
9792
|
+
* means the same thing on a label as it does in a field. The pair is
|
|
9793
|
+
* spent once it has fired: a third Click starts the next pair rather
|
|
9794
|
+
* than making a second DoubleClick out of the second and third.
|
|
9795
|
+
*/
|
|
9796
|
+
private countClick;
|
|
9151
9797
|
/**
|
|
9152
9798
|
* Aborts the active press: dispatches PointerCancel to the pressed
|
|
9153
9799
|
* node and clears press state so no Click is synthesized.
|
|
@@ -9219,7 +9865,7 @@ interface KeyboardControllerOptions {
|
|
|
9219
9865
|
* preventDefault(); a key it handles is marked default-prevented.
|
|
9220
9866
|
*/
|
|
9221
9867
|
editing?: {
|
|
9222
|
-
handleKey(node: UiNode, key: string, modifiers: UiKeyModifiers): boolean;
|
|
9868
|
+
handleKey(node: UiNode, key: string, modifiers: UiKeyModifiers, textFromKeys?: boolean): boolean;
|
|
9223
9869
|
};
|
|
9224
9870
|
/**
|
|
9225
9871
|
* Default keyboard behaviour for a canvas text selection: copy it,
|
|
@@ -9261,7 +9907,13 @@ declare class UiKeyboardController {
|
|
|
9261
9907
|
private readonly activation;
|
|
9262
9908
|
private readonly root;
|
|
9263
9909
|
constructor(dispatcher: UiInputDispatcher, focusManager: UiFocusManager, root: UiNode | (() => UiNode), options?: KeyboardControllerOptions);
|
|
9264
|
-
|
|
9910
|
+
/**
|
|
9911
|
+
* `textFollows` says whether the shell will send the key's text on its
|
|
9912
|
+
* own, as a `beforeinput`. False — a key that reached the canvas while
|
|
9913
|
+
* an editable held the focus — has the key inserted here, whatever the
|
|
9914
|
+
* text source; absent leaves it to the editing controller's setting.
|
|
9915
|
+
*/
|
|
9916
|
+
keyDown(key: string, modifiers?: UiKeyModifiers, textFollows?: boolean): UiKeyboardEvent;
|
|
9265
9917
|
keyUp(key: string, modifiers?: UiKeyModifiers): UiKeyboardEvent;
|
|
9266
9918
|
}
|
|
9267
9919
|
//#endregion
|
|
@@ -9732,7 +10384,7 @@ declare class UiTouchScroller {
|
|
|
9732
10384
|
*/
|
|
9733
10385
|
private releaseVelocity;
|
|
9734
10386
|
/**
|
|
9735
|
-
* The container that should take this movement.
|
|
10387
|
+
* The container that should take this movement, and which of its axes.
|
|
9736
10388
|
*
|
|
9737
10389
|
* The nearest scroll container that can still move in the direction
|
|
9738
10390
|
* asked for, walking outward. A container already at its end is
|
|
@@ -9740,6 +10392,18 @@ declare class UiTouchScroller {
|
|
|
9740
10392
|
* that has hit its bottom keep scrolling the page it sits in. When
|
|
9741
10393
|
* nothing can move, the innermost container is returned so the
|
|
9742
10394
|
* gesture still belongs somewhere.
|
|
10395
|
+
*
|
|
10396
|
+
* **Each axis is asked for separately**, because a container may
|
|
10397
|
+
* scroll on both, and this used to pick one from the container's
|
|
10398
|
+
* flex direction and drop the other on the floor. A spreadsheet is
|
|
10399
|
+
* the case that found it on the wheel in 38e70a3: one `ScrollView`
|
|
10400
|
+
* whose content overflows in both directions, classified as vertical,
|
|
10401
|
+
* so a sideways drag moved nothing at all. This is the same fix on
|
|
10402
|
+
* the same shared state, so the two input paths cannot disagree about
|
|
10403
|
+
* which container takes a gesture.
|
|
10404
|
+
*
|
|
10405
|
+
* A container that overflows on one axis only is unaffected: the axis
|
|
10406
|
+
* it does not scroll has no room, so it is not taken.
|
|
9743
10407
|
*/
|
|
9744
10408
|
private resolve;
|
|
9745
10409
|
}
|
|
@@ -9826,7 +10490,8 @@ declare class UiEditingController {
|
|
|
9826
10490
|
* when the key was an editing command, so the caller can mark the
|
|
9827
10491
|
* event handled.
|
|
9828
10492
|
*/
|
|
9829
|
-
|
|
10493
|
+
/** `textFromKeys` overrides the controller's own setting for this one key; see `UiKeyboardController.keyDown`. */
|
|
10494
|
+
handleKey(node: UiNode, key: string, modifiers: UiKeyModifiers, textFromKeys?: boolean): boolean;
|
|
9830
10495
|
private execute;
|
|
9831
10496
|
private move;
|
|
9832
10497
|
/**
|
|
@@ -9850,8 +10515,18 @@ declare class UiEditingController {
|
|
|
9850
10515
|
* `onInput` rather than a delete and an insert.
|
|
9851
10516
|
*/
|
|
9852
10517
|
replaceText(text: string): boolean;
|
|
9853
|
-
/**
|
|
10518
|
+
/**
|
|
10519
|
+
* Pastes text: newlines are kept in a multiline field and become
|
|
10520
|
+
* spaces in a single-line one.
|
|
10521
|
+
*
|
|
10522
|
+
* With nothing editable focused the text is offered to whatever is,
|
|
10523
|
+
* as a `Paste` event, instead of being dropped. That is the case a
|
|
10524
|
+
* grid needs: it owns a rectangle of cells, a block of tab-separated
|
|
10525
|
+
* text means something to it that it means to nothing else, and
|
|
10526
|
+
* before this there was no way for it to hear about one at all.
|
|
10527
|
+
*/
|
|
9854
10528
|
paste(text: string): boolean;
|
|
10529
|
+
private offerPaste;
|
|
9855
10530
|
private insert;
|
|
9856
10531
|
compositionStart(): void;
|
|
9857
10532
|
/** The composition text so far and the caret within it. */
|
|
@@ -9890,6 +10565,18 @@ declare class UiEditingController {
|
|
|
9890
10565
|
private applyEdit;
|
|
9891
10566
|
private history;
|
|
9892
10567
|
private afterTextChange;
|
|
10568
|
+
/**
|
|
10569
|
+
* Reports the selection, if it has actually moved since last time.
|
|
10570
|
+
*
|
|
10571
|
+
* The guard is what keeps this quiet: holding a right arrow against
|
|
10572
|
+
* the end of the text moves nothing and must say nothing, and a
|
|
10573
|
+
* listener that recomputed decoration on every key would otherwise
|
|
10574
|
+
* do it forever for no reason.
|
|
10575
|
+
*
|
|
10576
|
+
* `hasListeners` already makes an unheard dispatch free, so the
|
|
10577
|
+
* cost when nobody is listening is the two comparisons here.
|
|
10578
|
+
*/
|
|
10579
|
+
private notifySelection;
|
|
9893
10580
|
private afterSelectionChange;
|
|
9894
10581
|
/**
|
|
9895
10582
|
* Asks the host to scroll the caret into view, when the node has been
|
|
@@ -9911,6 +10598,23 @@ declare class UiEditingController {
|
|
|
9911
10598
|
* layout the record is empty and the lines fall at the origin, which
|
|
9912
10599
|
* is still a valid place for a caret.
|
|
9913
10600
|
*/
|
|
10601
|
+
/**
|
|
10602
|
+
* Where the caret is inside a field, in the field's own coordinates.
|
|
10603
|
+
*
|
|
10604
|
+
* Relative to the node's border-box origin, with the field's own
|
|
10605
|
+
* scroll already applied — so a popup placed under the caret adds
|
|
10606
|
+
* the node's position on screen and nothing else.
|
|
10607
|
+
*
|
|
10608
|
+
* Public because an application cannot work this out. The geometry
|
|
10609
|
+
* needs the paragraph as it was *laid out*, which means the
|
|
10610
|
+
* measurer, the resolved paint and the layout record, and an
|
|
10611
|
+
* application that re-measured the text to find the caret would be
|
|
10612
|
+
* a second measurer that must never disagree with this one. Asking
|
|
10613
|
+
* is the only version that stays right.
|
|
10614
|
+
*
|
|
10615
|
+
* Null when the node is not an editable, or has not been laid out.
|
|
10616
|
+
*/
|
|
10617
|
+
caretRectOf(node: UiNode): CaretRect | null;
|
|
9914
10618
|
private layoutOf;
|
|
9915
10619
|
}
|
|
9916
10620
|
//#endregion
|
|
@@ -10204,6 +10908,24 @@ declare function isNodeHitTestable(node: UiNode): boolean;
|
|
|
10204
10908
|
* not. The graph Root never participates in tab order.
|
|
10205
10909
|
*/
|
|
10206
10910
|
declare function isNodeFocusable(node: UiNode): boolean;
|
|
10911
|
+
/**
|
|
10912
|
+
* Whether Tab should stop here.
|
|
10913
|
+
*
|
|
10914
|
+
* Every tab stop is focusable and not every focusable node is a tab
|
|
10915
|
+
* stop, which is the distinction `tabindex="-1"` draws in the DOM and
|
|
10916
|
+
* the one this engine was missing. `focusable` answers "may this node
|
|
10917
|
+
* hold focus at all", and that is the wrong question for a container:
|
|
10918
|
+
* a dialog's body must be able to *take* the keyboard, so that opening
|
|
10919
|
+
* a dialog whose content is a sentence does not hand it to nothing, and
|
|
10920
|
+
* must not be a place Tab *lands*, or every dialog gains a stop that
|
|
10921
|
+
* announces nothing and does nothing.
|
|
10922
|
+
*
|
|
10923
|
+
* So `tabStop: false` means focusable, reachable by a press and by
|
|
10924
|
+
* `focus()`, and skipped by the cycle. It says nothing on a node that
|
|
10925
|
+
* is not focusable in the first place, because there is no order to be
|
|
10926
|
+
* out of.
|
|
10927
|
+
*/
|
|
10928
|
+
declare function isNodeTabStop(node: UiNode): boolean;
|
|
10207
10929
|
/**
|
|
10208
10930
|
* Whether the user may select this node's text with the pointer.
|
|
10209
10931
|
*
|
|
@@ -10694,6 +11416,7 @@ declare function formatExplanation(explanation: LayoutExplanation): string;
|
|
|
10694
11416
|
declare const SCROLLBAR_LINGER_MS = 1200;
|
|
10695
11417
|
/** Portion of the linger during which the scrollbar fades out. */
|
|
10696
11418
|
declare const SCROLLBAR_FADE_MS = 350;
|
|
11419
|
+
/** An editable's text is the user's; runs are a property of a `Text` node. */
|
|
10697
11420
|
interface ScrollAdjustment {
|
|
10698
11421
|
container: UiNode;
|
|
10699
11422
|
scrollX: number;
|
|
@@ -11097,6 +11820,26 @@ declare class LayoutEngine {
|
|
|
11097
11820
|
* an item that fits nowhere starts a line of its own.
|
|
11098
11821
|
*/
|
|
11099
11822
|
private breakLines;
|
|
11823
|
+
/**
|
|
11824
|
+
* A line's main size when the container shrink-wraps it.
|
|
11825
|
+
*
|
|
11826
|
+
* The sum of the hypothetical sizes would be the answer if an item
|
|
11827
|
+
* never grew — but `flex: 1` is `flex-basis: 0`, and an item that
|
|
11828
|
+
* starts flexing from zero asks for nothing while its content still
|
|
11829
|
+
* wants the width of its text. A container wrapped around that sum
|
|
11830
|
+
* comes out too narrow; the item's text then wraps inside a box that
|
|
11831
|
+
* was measured as though it had not, and the container is left
|
|
11832
|
+
* shorter than the children it draws — a menu whose last rows fall
|
|
11833
|
+
* out of its own panel.
|
|
11834
|
+
*
|
|
11835
|
+
* So an item that can grow contributes whichever is larger, the size
|
|
11836
|
+
* its basis gives it or the size its content asks for. Chrome ignores
|
|
11837
|
+
* the basis entirely here and browsers disagree with each other about
|
|
11838
|
+
* it; the larger of the two is the reading that keeps `flex-basis`
|
|
11839
|
+
* counting for something, which is what `basis/sizes-container`
|
|
11840
|
+
* already records this engine as doing.
|
|
11841
|
+
*/
|
|
11842
|
+
private lineMaxContentMain;
|
|
11100
11843
|
private lineOuterMain;
|
|
11101
11844
|
/**
|
|
11102
11845
|
* Resolves the flexible lengths of one line (CSS Flexbox §9.7).
|
|
@@ -11252,6 +11995,13 @@ declare class LayoutEngine {
|
|
|
11252
11995
|
* into the same visible space before comparing them.
|
|
11253
11996
|
*/
|
|
11254
11997
|
private placeAnchored;
|
|
11998
|
+
/**
|
|
11999
|
+
* Places a measured node beside a box — an anchor's, or a point's of
|
|
12000
|
+
* no size — flipping to the opposite side when the named one would
|
|
12001
|
+
* overflow the block and the other has more room, and clamping along
|
|
12002
|
+
* the side to stay inside it.
|
|
12003
|
+
*/
|
|
12004
|
+
private placeBeside;
|
|
11255
12005
|
/**
|
|
11256
12006
|
* Records which anchor an anchored node is placed against, in both
|
|
11257
12007
|
* directions, so a moved anchor can name its dependents. Passing
|
|
@@ -12083,6 +12833,75 @@ interface FocusRingOptions {
|
|
|
12083
12833
|
* attachment.
|
|
12084
12834
|
*/
|
|
12085
12835
|
declare function focusRing(options?: FocusRingOptions): UiModifier<FocusRingOptions>;
|
|
12836
|
+
/** One edge's border: a thickness, and a colour if it is not the shared one. */
|
|
12837
|
+
interface BorderEdge {
|
|
12838
|
+
readonly width: number;
|
|
12839
|
+
readonly color?: UiColorValue;
|
|
12840
|
+
}
|
|
12841
|
+
/** What `borders()` takes. An omitted edge is not drawn. */
|
|
12842
|
+
interface BordersOptions {
|
|
12843
|
+
readonly top?: number | BorderEdge;
|
|
12844
|
+
readonly right?: number | BorderEdge;
|
|
12845
|
+
readonly bottom?: number | BorderEdge;
|
|
12846
|
+
readonly left?: number | BorderEdge;
|
|
12847
|
+
/** The colour for any edge that does not name its own. Defaults to `border`. */
|
|
12848
|
+
readonly color?: UiColorValue;
|
|
12849
|
+
}
|
|
12850
|
+
/**
|
|
12851
|
+
* A border per edge, as paint rather than as layout.
|
|
12852
|
+
*
|
|
12853
|
+
* `borderWidth` is one number and `borderColor` one colour, so a node
|
|
12854
|
+
* cannot have a heavy bottom edge and a hairline top. This is the gap
|
|
12855
|
+
* closed from the cheap side. A border in Gesso is paint-only —
|
|
12856
|
+
* `paintBorder` strokes inside the box and touches no layout — so four
|
|
12857
|
+
* edges are four filled rectangles in the node's own paint pass, with
|
|
12858
|
+
* nothing to lay out and nothing to hit test. A bordered cell costs
|
|
12859
|
+
* four draw instances and no extra nodes.
|
|
12860
|
+
*
|
|
12861
|
+
* Box({ modifiers: [borders({ bottom: 2, right: 1, color: 'border' })] })
|
|
12862
|
+
*
|
|
12863
|
+
* They lie *inside* the box, where `borderWidth` puts them, so a border
|
|
12864
|
+
* never changes where anything sits and never overlaps a neighbour.
|
|
12865
|
+
*
|
|
12866
|
+
* **Why this is a modifier and not four props, and why that is the
|
|
12867
|
+
* answer rather than a stopgap.** First-class `borderTopWidth` is a
|
|
12868
|
+
* much larger change, and the cost is not where it looks: the
|
|
12869
|
+
* property, the paint state and the Canvas2D stroke are easy, but the
|
|
12870
|
+
* WebGPU instance packs `radius, opacity, borderWidth` as one
|
|
12871
|
+
* `float32x3`, the fragment shader draws the border as an isotropic
|
|
12872
|
+
* SDF band, and one instance carries one colour — so four widths need
|
|
12873
|
+
* a wider vertex format, an anisotropic inner rect in the shader, and
|
|
12874
|
+
* up to four instances when the colours differ. This needs none of it,
|
|
12875
|
+
* because a decoration is already a rectangle with its own colour that
|
|
12876
|
+
* both backends draw.
|
|
12877
|
+
*
|
|
12878
|
+
* What the properties would buy over this, once written, is a rounded
|
|
12879
|
+
* per-edge border and one instance instead of four. The first is a
|
|
12880
|
+
* thing square-cornered borders are for — a grid, a table, a rule —
|
|
12881
|
+
* and the second is four draws on a node that already costs one. So
|
|
12882
|
+
* the properties are not planned. If something turns up that wants a
|
|
12883
|
+
* heavy bottom edge on a rounded card, that is the case to reopen it
|
|
12884
|
+
* with, and it will be a better case than "for completeness".
|
|
12885
|
+
*
|
|
12886
|
+
* What it does not do is round its corners. Four rectangles meeting at
|
|
12887
|
+
* a square corner is right for a grid, a table and a rule, which is
|
|
12888
|
+
* what per-edge borders are for; a rounded box wants the single
|
|
12889
|
+
* `borderWidth`, which the renderers draw as one band and get right.
|
|
12890
|
+
*/
|
|
12891
|
+
declare function borders(options: BordersOptions): UiModifier<Decorations>;
|
|
12892
|
+
/**
|
|
12893
|
+
* The rectangles `borders()` draws, without the modifier around them.
|
|
12894
|
+
*
|
|
12895
|
+
* For a surface that cannot afford a modifier per node and pushes its
|
|
12896
|
+
* decorations in instead. A spreadsheet is the case: ten thousand
|
|
12897
|
+
* mounted cells, each with its own border, fed from one writer into a
|
|
12898
|
+
* subject per cell — a modifier per cell would be ten thousand
|
|
12899
|
+
* attachments to do what ten thousand array writes already do. The
|
|
12900
|
+
* arithmetic is the same either way, and sharing it is the point:
|
|
12901
|
+
* an application that rolled its own would be the second place a
|
|
12902
|
+
* corner could be painted twice.
|
|
12903
|
+
*/
|
|
12904
|
+
declare function borderShapes(options: BordersOptions): readonly DecorationShape[];
|
|
12086
12905
|
//#endregion
|
|
12087
12906
|
//#region src/modifiers/focus.d.ts
|
|
12088
12907
|
/** Takes focus the first time the node is laid out. */
|
|
@@ -16025,6 +16844,28 @@ interface UiSchedulerOptions {
|
|
|
16025
16844
|
* animation reading it would not be reproducible.
|
|
16026
16845
|
*/
|
|
16027
16846
|
beforeCollect?: (time: UiFrameTime) => void;
|
|
16847
|
+
/**
|
|
16848
|
+
* Told when a frame throws, instead of the clock simply stopping.
|
|
16849
|
+
*
|
|
16850
|
+
* A frame is the only thing that drives a Gesso application, so an
|
|
16851
|
+
* exception escaping one used to end it: the throw unwound past the
|
|
16852
|
+
* re-arm at the bottom of `handleFrame`, `pending` was already
|
|
16853
|
+
* false, and nothing ever asked for another frame. The application
|
|
16854
|
+
* did not crash — it *stopped*, with its last frame still on screen
|
|
16855
|
+
* and every click landing in a surface nobody was listening to. The
|
|
16856
|
+
* worker sat idle, so a debugger attached to it reported nothing
|
|
16857
|
+
* running and nothing to pause.
|
|
16858
|
+
*
|
|
16859
|
+
* That failure is silent, indistinguishable from a hang, and was
|
|
16860
|
+
* found by typing quickly into a spreadsheet. The scheduler now
|
|
16861
|
+
* survives it: the frame is abandoned, this is called, and the
|
|
16862
|
+
* clock keeps running so the next frame can try again.
|
|
16863
|
+
*
|
|
16864
|
+
* Defaults to reporting on `console.error`, because a frame that
|
|
16865
|
+
* threw is a bug somewhere and the one thing that must not happen
|
|
16866
|
+
* is for nobody to hear about it.
|
|
16867
|
+
*/
|
|
16868
|
+
onFrameError?: (error: unknown, time: UiFrameTime) => void;
|
|
16028
16869
|
}
|
|
16029
16870
|
/**
|
|
16030
16871
|
* Decides when a dirty graph gets processed.
|
|
@@ -16042,6 +16883,7 @@ declare class UiScheduler {
|
|
|
16042
16883
|
private readonly dirty;
|
|
16043
16884
|
private readonly onFrame;
|
|
16044
16885
|
private readonly beforeCollect;
|
|
16886
|
+
private readonly onFrameError;
|
|
16045
16887
|
private disposed;
|
|
16046
16888
|
private active;
|
|
16047
16889
|
private pending;
|
|
@@ -16392,5 +17234,5 @@ interface UiSemanticsAction {
|
|
|
16392
17234
|
readonly value?: string;
|
|
16393
17235
|
}
|
|
16394
17236
|
//#endregion
|
|
16395
|
-
export { Mp3Header as $, GestureRecognizerOptions as $a, UiChildrenBinding as $c, UiTrackSize as $d, UiInputDispatcher as $f, UiFrameClockFactory as $i, VIRTUAL_INDEX_PROP as $l, findEnvironmentKey as $m, VideoPlayback as $n, nextCaretToggle as $o, DecorationRect as $p, pressable as $r, SpannedRuns as $s, PaintResolver as $t, hasVisualState as $u, MARK_PREFIX as A, UiDropEffect as Aa, ResponsiveProps as Ac, inputsEqual as Ad, UiModifierFocus as Af, UiTransforms as Ah, proportionalFontMetrics as Ai, UiPropertyValueOf as Al, UiBorderRadius as Am, resolveString as An, scrollbarThumbs as Ao, rotateFrom as Ap, pinchable as Ar, PaintTextSpan as As, WebGPUTextureCache as At, densityFactors as Au, ByteSource as B, formatShortcut as Ba, Grid as Bc, UiGradientStop as Bd, UiModifierTeardown as Bf, colorsEqual as Bh, LayoutStateExplanation as Bi, normalizeStates as Bl, UiShapeName as Bm, breakpoint as Bn, UiEnvironmentProvider as Bo, LayoutStats as Bp, draggable as Br, DEFAULT_LINE_HEIGHT_FACTOR as Bs, WebGPUSurface as Bt, UiTypographyExtensions as Bu, paragraphGeometry as C, UiEditingController as Ca, lineStartAt as Cc, PaintLineCap as Cd, observeViewportInsets as Cf, defaultMotion as Ch, parseAlignContent as Ci, TextContentProps as Cl, UiTextAlign as Cm, CanvasHost as Cn, SCROLLBAR_HOVER_ZONE as Co, MotionStateInput as Cp, ShortcutOptions as Cr, Canvas2DGradient as Cs, glyphCount as Ct, withThemeExtension as Cu, UiFrameCallback as D, UiDragPayload as Da, previousWordStart as Dc, PaintTextStyle as Dd, containerBands as Df, interpolateTransform as Dh, parseFlexDirection as Di, UiNodeRef as Dl, UiThemeColorName as Dm, resolveNumber as Dn, ScrollbarAxis as Do, isMotionRest as Dp, shortcuts as Dr, DEFAULT_TEXT_COLOR as Ds, GlyphSlot as Dt, raiseContrast as Du, wordRangeIn as E, EXTERNAL_FILES as Ea, previousGraphemeStart as Ec, PaintTextAlign as Ed, bandOf as Ef, interpolateNumber as Eh, FlexDirection as Ei, UiEventProps as El, UiTextWrapValue as Em, resolveBoolean as En, SCROLLBAR_THICKNESS as Eo, fade as Ep, shortcut as Er, DEFAULT_FONT_WEIGHT as Es, GLYPH_SUBPIXEL_PHASES as Et, highContrastColors as Eu, setPerformanceMarks as F, ShortcutRegistryOptions as Fa, LazyRow as Fc, MAX_GRADIENT_STOPS as Fd, UiModifier as Ff, UiBasicColors as Fh, ScrollAdjustment as Fi, UiRole as Fl, borderRadiusIsZero as Fm, PublishInsetArgs as Fn, matchRangesOf as Fo, SharedClaim as Fp, dragSource as Fr, createPaintState as Fs, DrawStats as Ft, spacingSteps as Fu, Mp4AudioTrack as G, UiPointerController as Ga, Text as Gc, linearGradient as Gd, isComponentLikeElement as Gf, UiEasing as Gh, describeOverrides as Gi, EditUnit as Gl, UiColors as Gm, VideoClock as Gn, CARET_WIDTH as Go, tightenConstraints as Gp, FocusRingOptions as Gr, selectableTextOf as Gs, registerFontStack as Gt, MAX_MEASURES_PER_CHILD as Gu, RangeSourceOptions as H, KeyboardControllerOptions as Ha, Row as Hc, UiRadialGradient as Hd, ComponentLikeElement as Hf, parseColor as Hh, RelayoutExplanation as Hi, validateRole as Hl, defaultShapes as Hm, ScrollOffset as Hn, UiEnvironmentKeys as Ho, TightenOptions as Hp, clickOutside as Hr, TextRange as Hs, bumpFontStack as Ht, defaultTypography as Hu, VttCue as I, UiShortcut as Ia, Box as Ic, ResolvedGradient as Id, UiModifierKind as If, UiColor as Ih, AxisExplanation as Ii, UiSemanticState as Il, borderRadiusValuesEqual as Im, insetPadding as In, setMatchRanges as Io, UiSharedElements as Ip, dropTarget as Ir, isPaintVisible as Is, RenderHooks as It, UiShadows as Iu, demuxMp4Audio as J, UiScrollBehavior as Ja, BindingId as Jc, AutoLength as Jd, isUiElement as Jf, linear as Jh, labelNode as Ji, LazyGridOptions as Jl, lightColors as Jm, VideoTransport as Jn, editorFor as Jo, UiNode as Jp, BUTTON_INTERACTION as Jr, CharacterCountTextMeasurer as Js, PaintPictureCache as Jt, UiLayoutProtocol as Ju, Mp4Sample as K, ScrollContainerState as Ka, createElement as Kc, radialGradient as Kd, isObservable$1 as Kf, cubicBezier as Kh, formatConstraints as Ki, EditableTextModel as Kl, colorsEqualPalette as Km, VideoSourceArgs as Kn, EDITOR_PROP as Ko, NodeId as Kp, decorated as Kr, selectionRangeOf as Ks, PaintCanvas as Kt, UiLayoutChild as Ku, VttTrack as L, UiShortcutBinding as La, Button as Lc, ResolvedGradientStop as Ld, defineModifier as Lf, colorToHex as Lh, CustomLayoutExplanation as Li, UiSemanticStates as Ll, normalizeBorderRadius as Lm, publishInset as Ln, FindMatch as Lo, Constraints as Lp, reorderable as Lr, normalizeTextAlign as Ls, WebGPURenderer as Lt, defaultShadows as Lu, markNow as M, UiDroppedFile as Ma, LazyGrid as Mc, pathValuesEqual as Md, UiModifierSet as Mf, transform as Mh, LayoutEngine as Mi, UI_ROLES as Ml, borderRadius as Mm, themeTokens as Mn, SubtreeBounds as Mo, slideDown as Mp, DragSourceOptions as Mr, VerticalAlign as Ms, isWebGPUAvailable as Mt, defaultSpacing as Mu, measureSpan as N, UiFileDropMessage as Na, LazyGridProps as Nc, UiImage as Nd, UiUnknownModifierPropertyError as Nf, transformIsIdentity as Nh, SCROLLBAR_FADE_MS as Ni, UI_SEMANTIC_STATES as Nl, borderRadiusCorners as Nm, sameArgs as Nn, TEXT_MATCHES_PROP as No, slideFrom as Np, DropTargetOptions as Nr, colorToCss as Ns, WebGPUError as Nt, scaleSpacing as Nu, UiScheduler as O, UiDragSession as Oa, wordRangeAt as Oc, UiPaint as Od, unknownContainerSize as Of, interpolatorFor as Oh, ELLIPSIS as Oi, UiProperties as Ol, UiVerticalAlign as Om, resolveProperty as On, ScrollbarThumb as Oo, pop as Op, PinchableOptions as Or, ObjectFit as Os, GlyphUpload as Ot, relativeLuminance as Ou, performanceMarksEnabled as P, dragSessionFor as Pa, LazyListProps as Pc, GradientPaint as Pd, assertModifierList as Pf, transformsEqual as Ph, SCROLLBAR_LINGER_MS as Pi, UiLiveRegion as Pl, borderRadiusEqual as Pm, InsetPaddingArgs as Pn, clearMatchRanges as Po, slideUp as Pp, ReorderableOptions as Pr, computeObjectFitRect as Ps, CapturedFrame as Pt, spacingEqual as Pu, Mp3Frames as Q, GestureInput as Qa, ChildrenBindingId as Qc, UiLength as Qd, UiEventListenerOptions as Qf, UiFrameClock as Qi, UiVirtualWindow as Ql, createEnvironmentKey as Qm, RangeResponse as Qn, isReadOnly as Qo, DecorationFill as Qp, measure as Qr, ParagraphTextMeasurer as Qs, PaintGradient as Qt, defaultVisualState as Qu, cueAt as R, UiShortcutRegistry as Ra, Column as Rc, UiGradient as Rd, isUiModifier as Rf, colorToRgba as Rh, Edges as Ri, isUiRole as Rl, uniformBorderRadius as Rm, BreakpointArgs as Rn, FindOptions as Ro, LayoutBox as Rp, DragOffset as Rr, normalizeVerticalAlign as Rs, WebGPURendererOptions as Rt, shadowsEqual as Ru, offsetAtPointIn as S, EditingState as Sa, lineEndAt as Sc, PaintFillRule as Sd, noInsets as Sf, UiSpringToken as Sh, MainAxisAlignment as Si, StackProps as Sl, UiSubgridAxis as Sm, labelOrigin as Sn, UiPoint as So, MotionState as Sp, ContextMenuOptions as Sr, Canvas2DContext as Ss, createTextCache as St, themeExtensionsEqual as Su, selectionRectsIn as T, UiTouchScroller as Ta, nextWordEnd as Tc, PaintSurface as Td, UiContainerSizeSource as Tf, interpolateColor as Th, parseMainAxisAlignment as Ti, TypographyProps as Tl, UiTextOverflowValue as Tm, createCanvasSurface as Tn, SCROLLBAR_MIN_THUMB as To, ResolvedMotionState as Tp, contextMenu as Tr, DEFAULT_FONT_SIZE as Ts, GlyphShaper as Tt, contrastRatio as Tu, bufferSource as U, UiKeyboardController as Ua, ScrollView as Uc, gradientPaint as Ud, UiChild as Uf, rgb8 as Uh, SizeDecision as Ui, validateStates as Ul, isShapeName as Um, ScrollPositionArgs as Un, EnvironmentNotifier as Uo, clampSize as Up, autoFocus as Ur, clearSelectionRange as Us, clearFontStacks as Ut, isTypographyRole as Uu, DEFAULT_BLOCK_SIZE as V, parseShortcut as Va, Paint as Vc, UiLinearGradient as Vd, ComponentResolver as Vf, normalizeColor as Vh, OverrideSources as Vi, statesEqual as Vl, UiShapes as Vm, sizeContainer as Vn, provideEnvironment as Vo, Size as Vp, ClickOutsideOptions as Vr, TEXT_SELECTION_PROP as Vs, createWebGPUSurface as Vt, UiTypographyRole as Vu, rangeSource as W, PointerControllerOptions as Wa, Stack as Wc, gradientsEqual as Wd, UiElement as Wf, rgba as Wh, describeLength as Wi, CompositionRange as Wl, shapesEqual as Wm, scrollPosition as Wn, CARET_BLINK_MS as Wo, constraintsEqual as Wp, Decorations as Wr, selectableTextNodes as Ws, fontStackFor as Wt, typographyEqual as Wu, Mp3Format as X, UiWheelController as Xa, UiGraph as Xc, MinMaxTrack as Xd, UiProps as Xf, UiFrame as Xi, LazyListOptions as Xl, UiEnvironment as Xm, DefaultVideoResolver as Xn, isEditableNode as Xo, UiPropertyOverride as Xp, hoverable as Xr, FontMetrics as Xs, paintPictures as Xt, UiVisualState as Xu, demuxMp4Video as Y, UiScrollability as Ya, UiBinding as Yc, FrLength as Yd, UiPropValue as Yf, steps as Yh, withOverrideSource as Yi, LazyItemRenderer as Yl, LayoutRecord as Ym, videoSource as Yn, editorOf as Yo, UiNodeTransitions as Yp, InteractiveOptions as Yr, FixedMetricsOptions as Ys, PaintStats as Yt, isLayoutProtocol as Yu, Mp3Frame as Z, isScrollContainer as Za, UiEventBinding as Zc, PercentLength as Zd, UiEventListener as Zf, UiAnimationFrameClock as Zi, LazySourceArgs as Zl, UiEnvironmentKey as Zm, DefaultVideoResolverOptions as Zn, isMultiline as Zo, UiPropertyOverrides as Zp, interactive as Zr, ParagraphLayout as Zs, PaintContext2D as Zt, UiVisualStateSet as Zu, linkOf as _, pointerDeviceOf as _a, offsetAtPoint as _c, spannedTextOf as _d, UiInsetEdge as _f, createTween as _h, GridTrack as _i, PositionProps as _l, UiOverflow as _m, LayoutReader as _n, UiSelectionController as _o, wheelDeltaYOf as _p, DefaultImageResolver as _r, layoutTextLines as _s, ScissorRect as _t, UiThemeExtensions as _u, diffSemantics as a, UiTimerFrameClockOptions as aa, TextRunMeasurer as ac, UiFontVariant as ad, isPercentLength as af, assertTransitionMap as ah, contentOffset as ai, CommonProps as al, paintsAfterChildren as am, PaintRecording as an, UiFocusManager as ao, UiGestureEvent as ap, sharedElement as ar, isPrintable as as, CLIP_STRIDE_FLOATS as at, lazySource as au, ParagraphGeometry as b, EditingControllerOptions as ba, selectionRects as bc, textStylesEqual as bd, UiInsets as bf, UiMotion as bh, AlignContent as bi, RowProps as bl, UiPosition as bm, OverlayShape as bn, HitTester as bo, MOTION_REST as bp, AnimateLayoutOptions as br, textRunBackgrounds as bs, TextRunDraw as bt, noThemeExtensions as bu, UiSemanticsMap as c, isNodeInert as ca, TextWrap as cc, UiTextDecoration as cd, repeat as cf, tween as ch, getPropertyNames as ci, EnvironmentProps as cl, UiBorderRadiusValue as cm, InspectorOverlay as cn, clearOverrideProperty as co, UiKeyboardEvent as cp, ImageSources as cr, PlacedTextRun as cs, INSTANCE_STRIDE_BYTES as ct, videoFrameSize as cu, buildSemanticsTree as d, CanvasPlatformSurface as da, PlacedLine as dc, UiTextSpan as dd, boxShadow as df, UiAnimationOptions as dh, propertyEffects as di, GridItemProps as dl, UiCursor as dm, CanvasTextMeasurer as dn, writeDeclaredProperty as do, UiPointerEvent as dp, IconCanvas as dr, TextRunRect as ds, NO_CLIP_INDEX as dt, lightTheme as du, UiFrameTime as ea, TextLine as ec, visualState as ed, auto as ef, UiNodeType as eh, UiModifierBundle as ei, UiGraphBuilder as el, DecorationShape as em, PaintTarget as en, UiGestureRecognizer as eo, UiListenerErrorReporter as ep, VideoResolver as er, syncEditorValue as es, readMp3Header as et, VIRTUAL_LEAD_PROP as eu, semanticsInertAbove as f, PlatformAdapterOptions as fa, RunMeasure as fc, UiTextStyle as fd, boxShadowArraysEqual as ff, UiReducedMotionPolicy as fh, propertyIsInherited as fi, GridProps as fl, UiDirection as fm, Canvas2DRenderer as fn, writeOverrideProperty as fo, UiPointerKind as fp, IconContext as fr, applyCanvasTextStyle as fs, PrimitiveCommand as ft, themesEqual as fu, linkHoverOf as g, capturePointer as ga, lineLimit as gc, spanAtOffset as gd, propertyValuesEqual as gf, UiTweenOptions as gh, GridPlacement as gi, PaintProps as gl, UiObjectFit as gm, UiRenderer as gn, SelectionHost as go, noKeyModifiers as gp, iconKey as gr, fillTextRects as gs, RenderTextCache as gt, UiThemeExtensionOptions as gu, hasTextLinks as h, UiPlatformAdapter as ha, lineIndexForOffset as hc, resolvedSpansOf as hd, defineProperty as hf, UiTween as hh, GridItemRequest as hi, PaintElementProps as hl, UiGridAutoFlow as hm, RendererBackend as hn, SelectionControllerOptions as ho, UiWheelEvent as hp, IconSpec as hr, drawText as hs, RenderList as ht, UiThemeExtension as hu, UiSemanticsPatch as i, UiTimerFrameClock as ia, TextOverflow as ic, UiFontStyle as id, isMinMaxTrack as if, UiTransitionValue as ih, accumulatedOffsetTo as ii, ColumnProps as il, hasDecorationPhase as im, PaintRecorder as in, FocusSource as io, UiFocusEvent as ip, motion as ir, detectEditingPlatform as is, CLIP_STRIDE_BYTES as it, VirtualViewport as iu, markInstant as j, UiDropZone as ja, LazyColumn as jc, paintValuesEqual as jd, UiModifierLayout as jf, parseTransform as jh, LayoutNotifier as ji, UiPropertyValues as jl, UiBorderRadiuses as jm, ThemeTokenTarget as jn, scrollbarZoneAt as jo, scaleFrom as jp, AutoScrollOptions as jr, TextAlign as js, initializeWebGPU as jt, UiSpacing as ju, UiSchedulerOptions as k, UiDragState as ka, Responsive as kc, UiPath as kd, UiModifierEnvironment as kf, UiTransform as kh, layoutParagraph as ki, UiPropertyName as kl, validateSubgrid as km, resolvePropertyByName as kn, scrollbarThumb as ko, resolveMotionState as kp, ZoomState as kr, PaintState as ks, WebGPUGlyphAtlas as kt, UiDensity as ku, UiSemanticsRecord as l, isNodeSelectable as la, spannedRunsFor as lc, UiTextLink as ld, resolveLength as lf, AnimatedCell as lh, inheritedPropertyFlags as li, FlexContainerProps as ll, UiColorValue as lm, LayoutInspector as ln, overrideSources as lo, UiPinchEvent as lp, iconSource as lr, SpanPaint as ls, INSTANCE_STRIDE_FLOATS as lt, UiTheme as lu, clearLinkHover as m, PlatformSurface as ma, lineIndexAtY as mc, flattenTextSpans as md, UiPropertyDefinition as mf, UiSpringOptions as mh, GridContribution as mi, InteractionProps as ml, UiFontWeight as mm, traceRoundedRect as mn, UiFindController as mo, UiWheelDeltaMode as mp, IconRasterizerOptions as mr, createCanvasTextStyle as ms, RenderCommand as mt, withDensity as mu, UiSemanticsBox as n, UiHostFrameClockOptions as na, TextMeasureRequest as nc, UiFontKerning as nd, isAutoLength as nf, AnimationDriver as nh, noModifiers as ni, BoxProps as nl, decorationColor as nm, EMPTY_RECORDING as nn, UiPinchRecognizer as no, UiBeforeInputEvent as np, MotionArgs as nr, EditingPlatform as ns, WebGPUGlyphPages as nt, VirtualItemMeasure as nu, recordsEqual as o, isNodeFocusable as oa, TextRunSpan as oc, UiResolvedTextSpan as od, minmax as of, normalizeTransition as oh, closestPropertyName as oi, ContainerProps as ol, UI_SUBGRID_AXES as om, replayPaint as on, NodeTransitions as oo, UiInputEvent as op, IconSourceArgs as or, EditableLayout as os, CommandKind as ot, UiVideoSurface as ou, textRunOfRecordId as p, PlatformEventTarget as pa, caretRectFor as pc, defaultTextStyle as pd, boxShadowsEqual as pf, UiSpring as ph, propertyValuesEqualByName as pi, IdentityProps as pl, UiFlexWrap as pm, Canvas2DRendererOptions as pn, FindHost as po, UiTextChangeEvent as pp, IconRasterizer as pr, buildFontString as ps, PrimitiveKind as pt, withContrast as pu, Mp4VideoTrack as q, ScrollSink as qa, UiDefinition as qc, validateGradient as qd, isUiChild as qf, easings as qh, formatExplanation as qi, LazyAxis as ql, darkColors as qm, VideoState as qn, caretVisibleAt as qo, NodeProperty as qp, focusRing as qr, setSelectionRange as qs, PaintCanvasFactory as qt, UiLayoutContext as qu, UiSemanticsUpdate as r, UiManualFrameClock as ra, TextMeasurer as rc, UiFontStretch as rd, isFrLength as rf, UiTransitionSpec as rh, Transform as ri, ButtonProps as rl, decorationRect as rm, PaintOp as rn, FocusNotifier as ro, UiEventType as rp, SharedElementArgs as rr, commandForKey as rs, Affine as rt, VirtualUpdate as ru, TEXT_RUN_ID_SEPARATOR as s, isNodeHitTestable as sa, TextRunStyle as sc, UiSpannedText as sd, percent as sf, spring as sh, findPropertyDefinition as si, EditableTextProps as sl, UiAlignment as sm, INSPECTOR_HEAT_MS as sn, resetTransitionWarnings as so, UiKeyModifiers as sp, ImageSourceArgs as sr, CanvasTextStyle as ss, GlyphCommand as st, isVideoSurface as su, UiSemanticsAction as t, UiHostFrameClock as ta, TextLineRun as tc, visualStatesEqual as td, fr as tf, DirtyFlags as th, bundle as ti, BoxModelProps as tl, DecorationStroke as tm, tracePathData as tn, PinchRecognizerOptions as to, MOUSE_POINTER as tp, canDecodeVideo as tr, EditCommand as ts, splitMp3Frames as tt, VIRTUAL_WINDOW_PROP as tu, buildSemanticsSubtree as u, resolveCursor as ua, CaretRect as uc, UiTextMetrics as ud, UiBoxShadow as uf, UiAnimation as uh, inheritedPropertyNames as ui, FlexItemProps as ul, UiContentDistribution as um, LayoutInspectorOptions as un, resetOverrideWarnings as uo, UiPointerDevice as up, imageSource as ur, TextLinePlacement as us, ImageCommand as ut, darkTheme as uu, linkRunAtPointIn as v, prepareInputSurface as va, offsetAtX as vc, textContentOf as vd, UiInsetRegistry as vf, UiDurationToken as vh, placeGridItems as vi, PropsOf as vl, UiPlacement as vm, RenderContext as vn, HitTestLayoutReader as vo, DirtyNodeSet as vp, DefaultImageResolverOptions as vr, runCanvasStyleInto as vs, TEXTURED_STRIDE_BYTES as vt, defineThemeExtension as vu, paragraphGeometryFrom as w, TouchScrollerOptions as wa, nextGraphemeEnd as wc, PaintLineJoin as wd, UiContainerSize as wf, UiInterpolator as wh, parseCrossAxisAlignment as wi, TextProps as wl, UiTextDirection as wm, CanvasSurface as wn, SCROLLBAR_INSET as wo, MotionTiming as wp, ShortcutsOptions as wr, DEFAULT_FONT_FAMILY as ws, textRuns as wt, UiContrast as wu, hasDrawnText as x, EditingHost as xa, graphemeBoundaries as xc, PaintBox as xd, insetsEqual as xf, UiSpringSpec as xh, CrossAxisAlignment as xi, ScrollViewProps as xl, UiSelfAlignment as xm, drawOverlayShapes as xn, UiHitTester as xo, MotionChannel as xp, animateLayout as xr, textRunDecorations as xs, buildRenderList as xt, themeExtension as xu, setLinkHover as y, touchActionFor as ya, offsetForVerticalMove as yc, textSpansEqual as yd, UiInsetSource as yf, UiEasingToken as yh, sizeGridTracks as yi, Reactive as yl, UiPointerEvents as ym, LABEL_PADDING_X as yn, HitTestResult as yo, MOTION_CHANNELS as yp, ImageResolver as yr, runFontString as ys, TEXTURED_STRIDE_FLOATS as yt, hasThemeExtension as yu, parseWebVtt as z, UiShortcutStep as za, EditableText as zc, UiGradientOffset as zd, UiModifierHost as zf, colorValuesEqual as zh, LayoutExplanation as zi, isUiSemanticState as zl, UiShapeExtensions as zm, SizeContainerArgs as zn, findMatchesIn as zo, LayoutResult as zp, DraggableOptions as zr, resolvePaintState as zs, WebGPUCanvasHost as zt, UiTypography as zu };
|
|
16396
|
-
//# sourceMappingURL=index-
|
|
17237
|
+
export { Mp3Header as $, UiScrollBehavior as $a, BindingId as $c, ResolvedGradient as $d, UiModifierKind as $f, transformsEqual as $h, withOverrideSource as $i, LazySheetProps as $l, borderRadiusEqual as $m, VideoPlayback as $n, editorFor as $o, slideUp as $p, InteractiveOptions as $r, CharacterCountTextMeasurer as $s, PaintResolver as $t, defaultShadows as $u, MARK_PREFIX as A, UiTouchScroller as Aa, nextWordEnd as Ac, editableSpansOf as Ad, boxShadowsEqual as Af, UiAnimationOptions as Ah, FlexDirection as Ai, TypographyProps as Al, UiCursor as Am, resolveString as An, SCROLLBAR_MIN_THUMB as Ao, UiPointerKind as Ap, pinchable as Ar, DEFAULT_FONT_SIZE as As, WebGPUTextureCache as At, withDensity as Au, ByteSource as B, ShortcutRegistryOptions as Ba, LazyRow as Bc, PaintLineCap as Bd, observeViewportInsets as Bf, UiSpringSpec as Bh, AxisExplanation as Bi, UiRole as Bl, UiSelfAlignment as Bm, breakpoint as Bn, matchRangesOf as Bo, MotionChannel as Bp, draggable as Br, createPaintState as Bs, WebGPUSurface as Bt, UiContrast as Bu, paragraphGeometry as C, prepareInputSurface as Ca, offsetAtX as Cc, UiSpannedText as Cd, minmax as Cf, UiTransitionValue as Ch, sizeGridTracks as Ci, PropsOf as Cl, hasDecorationPhase as Cm, CanvasHost as Cn, HitTestLayoutReader as Co, UiInputEvent as Cp, ShortcutOptions as Cr, runCanvasStyleInto as Cs, glyphCount as Ct, isVideoSurface as Cu, UiFrameCallback as D, EditingState as Da, lineEndAt as Dc, UiTextSpan as Dd, UiBoxShadow as Df, tween as Dh, parseAlignContent as Di, StackProps as Dl, UiBorderRadiusValue as Dm, resolveNumber as Dn, UiPoint as Do, UiPinchEvent as Dp, shortcuts as Dr, Canvas2DContext as Ds, GlyphSlot as Dt, lightTheme as Du, wordRangeIn as E, EditingHost as Ea, graphemeBoundaries as Ec, UiTextMetrics as Ed, resolveLength as Ef, spring as Eh, MainAxisAlignment as Ei, ScrollViewProps as El, UiAlignment as Em, resolveBoolean as En, UiHitTester as Eo, UiPasteEvent as Ep, shortcut as Er, textRunDecorations as Es, GLYPH_SUBPIXEL_PHASES as Et, darkTheme as Eu, setPerformanceMarks as F, UiDropEffect as Fa, ResponsiveProps as Fc, textContentOf as Fd, UiInsetRegistry as Ff, UiTweenOptions as Fh, LayoutNotifier as Fi, UiPropertyValueOf as Fl, UiObjectFit as Fm, PublishInsetArgs as Fn, scrollbarThumbs as Fo, noKeyModifiers as Fp, dragSource as Fr, PaintTextSpan as Fs, DrawStats as Ft, hasThemeExtension as Fu, Mp4AudioTrack as G, formatShortcut as Ga, Grid as Gc, UiPaint as Gd, unknownContainerSize as Gf, interpolateNumber as Gh, OverrideSources as Gi, normalizeStates as Gl, UiTextWrapValue as Gm, VideoClock as Gn, UiEnvironmentProvider as Go, fade as Gp, BordersOptions as Gr, DEFAULT_LINE_HEIGHT_FACTOR as Gs, registerFontStack as Gt, UiDensity as Gu, RangeSourceOptions as H, UiShortcutBinding as Ha, Button as Hc, PaintSurface as Hd, UiContainerSizeSource as Hf, defaultMotion as Hh, Edges as Hi, UiSemanticStates as Hl, UiTextAlign as Hm, ScrollOffset as Hn, FindMatch as Ho, MotionStateInput as Hp, clickOutside as Hr, normalizeTextAlign as Hs, bumpFontStack as Ht, highContrastColors as Hu, VttCue as I, UiDropZone as Ia, LazyColumn as Ic, textSpansEqual as Id, UiInsetSource as If, createTween as Ih, LayoutEngine as Ii, UiPropertyValues as Il, UiOverflow as Im, insetPadding as In, scrollbarZoneAt as Io, wheelDeltaYOf as Ip, dropTarget as Ir, TextAlign as Is, RenderHooks as It, noThemeExtensions as Iu, demuxMp4Audio as J, UiKeyboardController as Ja, ScrollView as Jc, paintValuesEqual as Jd, UiModifierLayout as Jf, UiTransform as Jh, describeLength as Ji, validateStates as Jl, validateSubgrid as Jm, VideoTransport as Jn, EnvironmentNotifier as Jo, resolveMotionState as Jp, borderShapes as Jr, clearSelectionRange as Js, PaintPictureCache as Jt, defaultSpacing as Ju, Mp4Sample as K, parseShortcut as Ka, Paint as Kc, UiPath as Kd, UiModifierEnvironment as Kf, interpolateTransform as Kh, RelayoutExplanation as Ki, statesEqual as Kl, UiThemeColorName as Km, VideoSourceArgs as Kn, provideEnvironment as Ko, isMotionRest as Kp, Decorations as Kr, TEXT_SELECTION_PROP as Ks, PaintCanvas as Kt, densityFactors as Ku, VttTrack as L, UiDroppedFile as La, LazyGrid as Lc, textStylesEqual as Ld, UiInsets as Lf, UiDurationToken as Lh, SCROLLBAR_FADE_MS as Li, UI_ROLES as Ll, UiPlacement as Lm, publishInset as Ln, SubtreeBounds as Lo, DirtyNodeSet as Lp, reorderable as Lr, VerticalAlign as Ls, WebGPURenderer as Lt, themeExtension as Lu, markNow as M, UiDragPayload as Ma, previousWordStart as Mc, resolvedSpansOf as Md, defineProperty as Mf, UiSpring as Mh, ELLIPSIS as Mi, UiNodeRef as Ml, UiFlexWrap as Mm, themeTokens as Mn, ScrollbarAxis as Mo, UiTextChangeEvent as Mp, DragSourceOptions as Mr, DEFAULT_TEXT_COLOR as Ms, isWebGPUAvailable as Mt, UiThemeExtensionOptions as Mu, measureSpan as N, UiDragSession as Na, wordRangeAt as Nc, spanAtOffset as Nd, propertyValuesEqual as Nf, UiSpringOptions as Nh, layoutParagraph as Ni, UiProperties as Nl, UiFontWeight as Nm, sameArgs as Nn, ScrollbarThumb as No, UiWheelDeltaMode as Np, DropTargetOptions as Nr, ObjectFit as Ns, WebGPUError as Nt, UiThemeExtensions as Nu, UiScheduler as O, UiEditingController as Oa, lineStartAt as Oc, UiTextStyle as Od, boxShadow as Of, AnimatedCell as Oh, parseCrossAxisAlignment as Oi, TextContentProps as Ol, UiColorValue as Om, resolveProperty as On, SCROLLBAR_HOVER_ZONE as Oo, UiPointerDevice as Op, PinchableOptions as Or, Canvas2DGradient as Os, GlyphUpload as Ot, themesEqual as Ou, performanceMarksEnabled as P, UiDragState as Pa, Responsive as Pc, spannedTextOf as Pd, UiInsetEdge as Pf, UiTween as Ph, proportionalFontMetrics as Pi, UiPropertyName as Pl, UiGridAutoFlow as Pm, InsetPaddingArgs as Pn, scrollbarThumb as Po, UiWheelEvent as Pp, ReorderableOptions as Pr, PaintState as Ps, CapturedFrame as Pt, defineThemeExtension as Pu, Mp3Frames as Q, ScrollSink as Qa, UiDefinition as Qc, MAX_GRADIENT_STOPS as Qd, UiModifier as Qf, transformIsIdentity as Qh, labelNode as Qi, LazySheet as Ql, borderRadiusCorners as Qm, RangeResponse as Qn, caretVisibleAt as Qo, slideFrom as Qp, BUTTON_INTERACTION as Qr, setSelectionRange as Qs, PaintGradient as Qt, UiShadows as Qu, cueAt as R, UiFileDropMessage as Ra, LazyGridProps as Rc, PaintBox as Rd, insetsEqual as Rf, UiEasingToken as Rh, SCROLLBAR_LINGER_MS as Ri, UI_SEMANTIC_STATES as Rl, UiPointerEvents as Rm, BreakpointArgs as Rn, TEXT_MATCHES_PROP as Ro, MOTION_CHANNELS as Rp, DragOffset as Rr, colorToCss as Rs, WebGPURendererOptions as Rt, themeExtensionsEqual as Ru, offsetAtPointIn as S, pointerDeviceOf as Sa, offsetAtPoint as Sc, UiResolvedTextSpan as Sd, isPercentLength as Sf, UiTransitionSpec as Sh, placeGridItems as Si, PositionProps as Sl, decorationRect as Sm, labelOrigin as Sn, UiSelectionController as So, UiGestureEvent as Sp, ContextMenuOptions as Sr, layoutTextLines as Ss, createTextCache as St, UiVideoSurface as Su, selectionRectsIn as T, EditingControllerOptions as Ta, selectionRects as Tc, UiTextLink as Td, repeat as Tf, normalizeTransition as Th, CrossAxisAlignment as Ti, RowProps as Tl, UI_SUBGRID_AXES as Tm, createCanvasSurface as Tn, HitTester as To, UiKeyboardEvent as Tp, contextMenu as Tr, textRunBackgrounds as Ts, GlyphShaper as Tt, UiTheme as Tu, bufferSource as U, UiShortcutRegistry as Ua, Column as Uc, PaintTextAlign as Ud, bandOf as Uf, UiInterpolator as Uh, LayoutExplanation as Ui, isUiRole as Ul, UiTextDirection as Um, ScrollPositionArgs as Un, FindOptions as Uo, MotionTiming as Up, autoFocus as Ur, normalizeVerticalAlign as Us, clearFontStacks as Ut, raiseContrast as Uu, DEFAULT_BLOCK_SIZE as V, UiShortcut as Va, Box as Vc, PaintLineJoin as Vd, UiContainerSize as Vf, UiSpringToken as Vh, CustomLayoutExplanation as Vi, UiSemanticState as Vl, UiSubgridAxis as Vm, sizeContainer as Vn, setMatchRanges as Vo, MotionState as Vp, ClickOutsideOptions as Vr, isPaintVisible as Vs, createWebGPUSurface as Vt, contrastRatio as Vu, rangeSource as W, UiShortcutStep as Wa, EditableText as Wc, PaintTextStyle as Wd, containerBands as Wf, interpolateColor as Wh, LayoutStateExplanation as Wi, isUiSemanticState as Wl, UiTextOverflowValue as Wm, scrollPosition as Wn, findMatchesIn as Wo, ResolvedMotionState as Wp, BorderEdge as Wr, resolvePaintState as Ws, fontStackFor as Wt, relativeLuminance as Wu, Mp3Format as X, UiPointerController as Xa, Text as Xc, UiImage as Xd, UiUnknownModifierPropertyError as Xf, parseTransform as Xh, formatConstraints as Xi, EditUnit as Xl, UiBorderRadiuses as Xm, DefaultVideoResolver as Xn, CARET_WIDTH as Xo, scaleFrom as Xp, decorated as Xr, selectableTextOf as Xs, paintPictures as Xt, spacingEqual as Xu, demuxMp4Video as Y, PointerControllerOptions as Ya, Stack as Yc, pathValuesEqual as Yd, UiModifierSet as Yf, UiTransforms as Yh, describeOverrides as Yi, CompositionRange as Yl, UiBorderRadius as Ym, videoSource as Yn, CARET_BLINK_MS as Yo, rotateFrom as Yp, borders as Yr, selectableTextNodes as Ys, PaintStats as Yt, scaleSpacing as Yu, Mp3Frame as Z, ScrollContainerState as Za, createElement as Zc, GradientPaint as Zd, assertModifierList as Zf, transform as Zh, formatExplanation as Zi, EditableTextModel as Zl, borderRadius as Zm, DefaultVideoResolverOptions as Zn, EDITOR_PROP as Zo, slideDown as Zp, focusRing as Zr, selectionRangeOf as Zs, PaintContext2D as Zt, spacingSteps as Zu, linkOf as _, PlatformAdapterOptions as _a, RunMeasure as _c, visualStatesEqual as _d, auto as _f, createEnvironmentKey as _h, propertyValuesEqualByName as _i, GridProps as _l, DecorationFill as _m, LayoutReader as _n, writeOverrideProperty as _o, UiListenerErrorReporter as _p, DefaultImageResolver as _r, applyCanvasTextStyle as _s, ScissorRect as _t, VIRTUAL_WINDOW_PROP as _u, diffSemantics as a, UiHostFrameClock as aa, TextLine as ac, isTypographyRole as ad, UiRadialGradient as af, colorsEqual as ag, UiShapeName as ah, bundle as ai, UiGraphBuilder as al, LayoutStats as am, PaintRecording as an, UiGestureRecognizer as ao, ComponentLikeElement as ap, sharedElement as ar, syncEditorValue as as, CLIP_STRIDE_FLOATS as at, UiVirtualSheet as au, ParagraphGeometry as b, UiPlatformAdapter as ba, lineIndexForOffset as bc, UiFontStyle as bd, isFrLength as bf, DirtyFlags as bh, GridPlacement as bi, PaintElementProps as bl, DecorationStroke as bm, OverlayShape as bn, SelectionControllerOptions as bo, UiEventType as bp, AnimateLayoutOptions as br, drawText as bs, TextRunDraw as bt, VirtualViewport as bu, UiSemanticsMap as c, UiTimerFrameClock as ca, TextMeasurer as cc, UiLayoutChild as cd, linearGradient as cf, rgb8 as cg, isShapeName as ch, accumulatedOffsetTo as ci, ButtonProps as cl, clampSize as cm, InspectorOverlay as cn, FocusNotifier as co, isComponentLikeElement as cp, ImageSources as cr, commandForKey as cs, INSTANCE_STRIDE_BYTES as ct, sheetSource as cu, buildSemanticsTree as d, isNodeHitTestable as da, TextRunSpan as dc, isLayoutProtocol as dd, AutoLength as df, cubicBezier as dg, colorsEqualPalette as dh, findPropertyDefinition as di, ContainerProps as dl, NodeId as dm, CanvasTextMeasurer as dn, NodeTransitions as do, isUiElement as dp, IconCanvas as dr, EditableLayout as ds, NO_CLIP_INDEX as dt, LazyItemRenderer as du, UiFrame as ea, FixedMetricsOptions as ec, shadowsEqual as ed, ResolvedGradientStop as ef, UiBasicColors as eg, borderRadiusIsZero as eh, hoverable as ei, UiBinding as el, SharedClaim as em, PaintTarget as en, UiScrollability as eo, defineModifier as ep, VideoResolver as er, editorOf as es, readMp3Header as et, SheetHeaderRenderer as eu, semanticsInertAbove as f, isNodeInert as fa, TextRunStyle as fc, UiVisualState as fd, FrLength as ff, easings as fg, darkColors as fh, getPropertyNames as fi, EditableTextProps as fl, NodeProperty as fm, Canvas2DRenderer as fn, resetTransitionWarnings as fo, UiPropValue as fp, IconContext as fr, CanvasTextStyle as fs, PrimitiveCommand as ft, LazyListOptions as fu, linkHoverOf as g, CanvasPlatformSurface as ga, PlacedLine as gc, visualState as gd, UiTrackSize as gf, UiEnvironmentKey as gh, propertyIsInherited as gi, GridItemProps as gl, UiPropertyOverrides as gm, UiRenderer as gn, writeDeclaredProperty as go, UiInputDispatcher as gp, iconKey as gr, TextRunRect as gs, RenderTextCache as gt, VIRTUAL_LEAD_PROP as gu, hasTextLinks as h, resolveCursor as ha, CaretRect as hc, hasVisualState as hd, UiLength as hf, UiEnvironment as hh, propertyEffects as hi, FlexItemProps as hl, UiPropertyOverride as hm, RendererBackend as hn, resetOverrideWarnings as ho, UiEventListenerOptions as hp, IconSpec as hr, TextLinePlacement as hs, RenderList as ht, VIRTUAL_INDEX_PROP as hu, UiSemanticsPatch as i, UiFrameTime as ia, SpannedRuns as ic, defaultTypography as id, UiLinearGradient as if, colorValuesEqual as ig, UiShapeExtensions as ih, UiModifierBundle as ii, UiChildrenBinding as il, LayoutResult as im, PaintRecorder as in, GestureRecognizerOptions as io, ComponentResolver as ip, motion as ir, nextCaretToggle as is, CLIP_STRIDE_BYTES as it, SheetViewport as iu, markInstant as j, EXTERNAL_FILES as ja, previousGraphemeStart as jc, flattenTextSpans as jd, UiPropertyDefinition as jf, UiReducedMotionPolicy as jh, parseFlexDirection as ji, UiEventProps as jl, UiDirection as jm, ThemeTokenTarget as jn, SCROLLBAR_THICKNESS as jo, UiSelectionChangeEvent as jp, AutoScrollOptions as jr, DEFAULT_FONT_WEIGHT as js, initializeWebGPU as jt, UiThemeExtension as ju, UiSchedulerOptions as k, TouchScrollerOptions as ka, nextGraphemeEnd as kc, defaultTextStyle as kd, boxShadowArraysEqual as kf, UiAnimation as kh, parseMainAxisAlignment as ki, TextProps as kl, UiContentDistribution as km, resolvePropertyByName as kn, SCROLLBAR_INSET as ko, UiPointerEvent as kp, ZoomState as kr, DEFAULT_FONT_FAMILY as ks, WebGPUGlyphAtlas as kt, withContrast as ku, UiSemanticsRecord as l, UiTimerFrameClockOptions as la, TextOverflow as lc, UiLayoutContext as ld, radialGradient as lf, rgba as lg, shapesEqual as lh, contentOffset as li, ColumnProps as ll, constraintsEqual as lm, LayoutInspector as ln, FocusSource as lo, isObservable$1 as lp, iconSource as lr, detectEditingPlatform as ls, INSTANCE_STRIDE_FLOATS as lt, LazyAxis as lu, clearLinkHover as m, isNodeTabStop as ma, spannedRunsFor as mc, defaultVisualState as md, PercentLength as mf, steps as mg, LayoutRecord as mh, inheritedPropertyNames as mi, FlexContainerProps as ml, UiNodeTransitions as mm, traceRoundedRect as mn, overrideSources as mo, UiEventListener as mp, IconRasterizerOptions as mr, SpanPaint as ms, RenderCommand as mt, UiVirtualWindow as mu, UiSemanticsBox as n, UiFrameClock as na, ParagraphLayout as nc, UiTypographyExtensions as nd, UiGradientOffset as nf, colorToHex as ng, normalizeBorderRadius as nh, measure as ni, UiEventBinding as nl, Constraints as nm, EMPTY_RECORDING as nn, isScrollContainer as no, UiModifierHost as np, MotionArgs as nr, isMultiline as ns, WebGPUGlyphPages as nt, SheetRowRenderer as nu, recordsEqual as o, UiHostFrameClockOptions as oa, TextLineRun as oc, typographyEqual as od, gradientPaint as of, normalizeColor as og, UiShapes as oh, noModifiers as oi, BoxModelProps as ol, Size as om, replayPaint as on, PinchRecognizerOptions as oo, UiChild as op, IconSourceArgs as or, EditCommand as os, CommandKind as ot, UiVirtualSheetOptions as ou, textRunOfRecordId as p, isNodeSelectable as pa, TextWrap as pc, UiVisualStateSet as pd, MinMaxTrack as pf, linear as pg, lightColors as ph, inheritedPropertyFlags as pi, EnvironmentProps as pl, UiNode as pm, Canvas2DRendererOptions as pn, clearOverrideProperty as po, UiProps as pp, IconRasterizer as pr, PlacedTextRun as ps, PrimitiveKind as pt, LazySourceArgs as pu, Mp4VideoTrack as q, KeyboardControllerOptions as qa, Row as qc, inputsEqual as qd, UiModifierFocus as qf, interpolatorFor as qh, SizeDecision as qi, validateRole as ql, UiVerticalAlign as qm, VideoState as qn, UiEnvironmentKeys as qo, pop as qp, FocusRingOptions as qr, TextRange as qs, PaintCanvasFactory as qt, UiSpacing as qu, UiSemanticsUpdate as r, UiFrameClockFactory as ra, ParagraphTextMeasurer as rc, UiTypographyRole as rd, UiGradientStop as rf, colorToRgba as rg, uniformBorderRadius as rh, pressable as ri, ChildrenBindingId as rl, LayoutBox as rm, PaintOp as rn, GestureInput as ro, UiModifierTeardown as rp, SharedElementArgs as rr, isReadOnly as rs, Affine as rt, SheetSourceArgs as ru, TEXT_RUN_ID_SEPARATOR as s, UiManualFrameClock as sa, TextMeasureRequest as sc, MAX_MEASURES_PER_CHILD as sd, gradientsEqual as sf, parseColor as sg, defaultShapes as sh, Transform as si, BoxProps as sl, TightenOptions as sm, INSPECTOR_HEAT_MS as sn, UiPinchRecognizer as so, UiElement as sp, ImageSourceArgs as sr, EditingPlatform as ss, GlyphCommand as st, VIRTUAL_SHEET_PROP as su, UiSemanticsAction as t, UiAnimationFrameClock as ta, FontMetrics as tc, UiTypography as td, UiGradient as tf, UiColor as tg, borderRadiusValuesEqual as th, interactive as ti, UiGraph as tl, UiSharedElements as tm, tracePathData as tn, UiWheelController as to, isUiModifier as tp, canDecodeVideo as tr, isEditableNode as ts, splitMp3Frames as tt, SheetRange as tu, buildSemanticsSubtree as u, isNodeFocusable as ua, TextRunMeasurer as uc, UiLayoutProtocol as ud, validateGradient as uf, UiEasing as ug, UiColors as uh, closestPropertyName as ui, CommonProps as ul, tightenConstraints as um, LayoutInspectorOptions as un, UiFocusManager as uo, isUiChild as up, imageSource as ur, isPrintable as us, ImageCommand as ut, LazyGridOptions as uu, linkRunAtPointIn as v, PlatformEventTarget as va, caretRectFor as vc, UiFontKerning as vd, fr as vf, findEnvironmentKey as vh, GridContribution as vi, IdentityProps as vl, DecorationRect as vm, RenderContext as vn, FindHost as vo, MOUSE_POINTER as vp, DefaultImageResolverOptions as vr, buildFontString as vs, TEXTURED_STRIDE_BYTES as vt, VirtualItemMeasure as vu, paragraphGeometryFrom as w, touchActionFor as wa, offsetForVerticalMove as wc, UiTextDecoration as wd, percent as wf, assertTransitionMap as wh, AlignContent as wi, Reactive as wl, paintsAfterChildren as wm, CanvasSurface as wn, HitTestResult as wo, UiKeyModifiers as wp, ShortcutsOptions as wr, runFontString as ws, textRuns as wt, videoFrameSize as wu, hasDrawnText as x, capturePointer as xa, lineLimit as xc, UiFontVariant as xd, isMinMaxTrack as xf, AnimationDriver as xh, GridTrack as xi, PaintProps as xl, decorationColor as xm, drawOverlayShapes as xn, SelectionHost as xo, UiFocusEvent as xp, animateLayout as xr, fillTextRects as xs, buildRenderList as xt, lazySource as xu, setLinkHover as y, PlatformSurface as ya, lineIndexAtY as yc, UiFontStretch as yd, isAutoLength as yf, UiNodeType as yh, GridItemRequest as yi, InteractionProps as yl, DecorationShape as ym, LABEL_PADDING_X as yn, UiFindController as yo, UiBeforeInputEvent as yp, ImageResolver as yr, createCanvasTextStyle as ys, TEXTURED_STRIDE_FLOATS as yt, VirtualUpdate as yu, parseWebVtt as z, dragSessionFor as za, LazyListProps as zc, PaintFillRule as zd, noInsets as zf, UiMotion as zh, ScrollAdjustment as zi, UiLiveRegion as zl, UiPosition as zm, SizeContainerArgs as zn, clearMatchRanges as zo, MOTION_REST as zp, DraggableOptions as zr, computeObjectFitRect as zs, WebGPUCanvasHost as zt, withThemeExtension as zu };
|
|
17238
|
+
//# sourceMappingURL=index-BzXn0Bci.d.ts.map
|