gesso-core 0.4.0 → 0.4.2

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.
@@ -1014,6 +1014,23 @@ declare class LayoutRecord {
1014
1014
  */
1015
1015
  clips: boolean;
1016
1016
  scrollable: boolean;
1017
+ /**
1018
+ * An editable, which scrolls its own text inside its box.
1019
+ *
1020
+ * Not `scrollable`: it has no children to translate and its offset
1021
+ * follows the caret, so every path that treats a scroll container's
1022
+ * content as children leaves it alone. What it shares with one is
1023
+ * the offset and its clamp — see `scrollRange` — and, when it is
1024
+ * multiline, the overlay scrollbars.
1025
+ */
1026
+ scrollsText: boolean;
1027
+ /**
1028
+ * A multiline editable, which shows the overlay scrollbars a scroll
1029
+ * container does over its own text. A single-line field scrolls
1030
+ * sideways too, but a bar under one line of text reads as part of
1031
+ * the control rather than a hint that there is more of it.
1032
+ */
1033
+ textScrollbars: boolean;
1017
1034
  /**
1018
1035
  * A scroll container that reads right to left, so its overlay
1019
1036
  * scrollbar hangs on the left edge and the band that reveals it is
@@ -5824,6 +5841,31 @@ declare const UiProperties: {
5824
5841
  */
5825
5842
  readonly scrollBehavior: UiPropertyDefinition<"instant" | "smooth" | undefined>;
5826
5843
  readonly scrollY: UiPropertyDefinition<number | undefined>;
5844
+ /**
5845
+ * Another node whose scroll offset this scroll container takes, on
5846
+ * the axes `scrollWithAxis` names: a line-number gutter beside an
5847
+ * editable's text, a spreadsheet's row header beside its grid.
5848
+ *
5849
+ * Taken in the same layout pass that settles the other node's
5850
+ * offset, so the two are painted in step on every frame, whatever
5851
+ * scrolled the other one — a wheel, a scrollbar, the caret, a clamp
5852
+ * after text was deleted. Binding `scrollY` to what `scrollPosition`
5853
+ * reports cannot do that: the report arrives after the frame is laid
5854
+ * out, and the follower is a frame behind.
5855
+ *
5856
+ * The follower's own `scrollX`/`scrollY` are ignored on a followed
5857
+ * axis, it shows no scrollbars, and a wheel over it scrolls the node
5858
+ * it follows. The other node may be any scroll container or an
5859
+ * editable, which scrolls its own text; the offset is clamped to the
5860
+ * follower's own range, so give it content as tall as the text.
5861
+ *
5862
+ * The follower may be `overflow: 'hidden'`, which is otherwise never
5863
+ * scrolled: following makes it scrolled, and nothing but the leader
5864
+ * moves it.
5865
+ */
5866
+ readonly scrollWith: UiPropertyDefinition<UiNode | null | undefined>;
5867
+ /** Which axes `scrollWith` follows: 'both' (default), 'x' or 'y'. */
5868
+ readonly scrollWithAxis: UiPropertyDefinition<"both" | "x" | "y" | undefined>;
5827
5869
  /**
5828
5870
  * What happens to a wheel delta this node cannot use.
5829
5871
  *
@@ -5842,6 +5884,12 @@ declare const UiProperties: {
5842
5884
  * wants the default, or the article stops scrolling whenever the
5843
5885
  * cursor crosses the canvas.
5844
5886
  *
5887
+ * Unlike the CSS property it is honoured on any node, not only a
5888
+ * scroll container. An app's root is rarely one, and neither is a
5889
+ * canvas that pans and zooms on the wheel itself — which wants
5890
+ * `'contain'` so a ctrl-wheel, or a trackpad pinch, zooms the canvas
5891
+ * and not the page around it.
5892
+ *
5845
5893
  * Like `scrollBehavior`, this is read by the input layer and
5846
5894
  * affects nothing laid out or painted.
5847
5895
  */
@@ -6062,7 +6110,7 @@ type CommonProps = IdentityProps & UiEventProps & BoxModelProps & FlexItemProps
6062
6110
  * layout replaces whatever the container would have done with its
6063
6111
  * children, whichever container it is; see `layout/CustomLayout.ts`.
6064
6112
  */
6065
- type ContainerProps = CommonProps & PropsOf<'overflow' | 'scrollX' | 'scrollY' | 'scrollBehavior' | 'overscrollBehavior' | 'layout'>;
6113
+ type ContainerProps = CommonProps & PropsOf<'overflow' | 'scrollX' | 'scrollY' | 'scrollWith' | 'scrollWithAxis' | 'scrollBehavior' | 'overscrollBehavior' | 'layout'>;
6066
6114
  /** Props of a flex container: Row, Column, ScrollView. */
6067
6115
  type FlexContainerProps = ContainerProps & PropsOf<'gap' | 'rowGap' | 'columnGap' | 'x' | 'y' | 'flexWrap' | 'alignContent' | 'direction'>;
6068
6116
  /**
@@ -7725,29 +7773,36 @@ interface Canvas2DContext {
7725
7773
  /**
7726
7774
  * A `VideoFrame` as well as an `ImageBitmap`: both are
7727
7775
  * `CanvasImageSource`, and the frame is what WebCodecs hands back.
7728
- * Kept to these two rather than the whole union because those are
7729
- * the only two anything in this renderer can produce.
7776
+ * Kept to these rather than the whole union because they are the
7777
+ * only sources anything in this renderer can produce. The third is a
7778
+ * scroll layer: a canvas of the renderer's own holding a scroll
7779
+ * container's content (see `ScrollLayers.ts`), which is drawn from
7780
+ * where it is rather than turned into a bitmap every frame it moves.
7730
7781
  */
7731
- drawImage(image: ImageBitmap | VideoFrame, dx: number, dy: number, dw: number, dh: number): void;
7782
+ drawImage(image: ImageBitmap | VideoFrame | OffscreenCanvas, dx: number, dy: number, dw: number, dh: number): void;
7732
7783
  /**
7733
- * The current transform, read to size pre-scaled image copies.
7784
+ * The current transform, read to size pre-scaled image copies and to
7785
+ * place a scroll layer.
7734
7786
  *
7735
- * Only the four scaling and skewing terms are named, because the
7736
- * only question asked of it is how many device pixels a box of a
7737
- * given size covers; the translation says where, which does not
7738
- * change the answer. A real context returns a `DOMMatrix`, which
7739
- * satisfies this structurally.
7787
+ * Pre-scaled copies ask only the four scaling and skewing terms how
7788
+ * many device pixels a box covers. A scroll layer asks the
7789
+ * translation too, because it is drawn onto whole device pixels and
7790
+ * has to know where, to the fraction, its content would have landed
7791
+ * had it been drawn directly. A real context returns a `DOMMatrix`,
7792
+ * which satisfies this structurally.
7740
7793
  *
7741
7794
  * Optional, like `letterSpacing`: a recording or stub context has
7742
- * no transform worth reporting, and the one caller falls back to
7743
- * the surface's device pixel ratio when it is absent, which is the
7744
- * right answer for everything but a scaled node.
7795
+ * no transform worth reporting. Pre-scaled copies then fall back to
7796
+ * the surface's device pixel ratio, which is the right answer for
7797
+ * everything but a scaled node, and scroll layers are not used.
7745
7798
  */
7746
7799
  getTransform?(): {
7747
7800
  a: number;
7748
7801
  b: number;
7749
7802
  c: number;
7750
7803
  d: number;
7804
+ e: number;
7805
+ f: number;
7751
7806
  };
7752
7807
  createLinearGradient(x0: number, y0: number, x1: number, y1: number): Canvas2DGradient;
7753
7808
  createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): Canvas2DGradient;
@@ -8231,6 +8286,23 @@ declare const SCROLLBAR_MIN_THUMB = 24;
8231
8286
  /** Distance from the end edge within which the pointer reveals the bar. */
8232
8287
  declare const SCROLLBAR_HOVER_ZONE = 16;
8233
8288
  type ScrollbarAxis = 'x' | 'y';
8289
+ /**
8290
+ * The node a `scrollWith` container follows, or null for one that
8291
+ * scrolls on its own. A follower has no scrollbar of its own, and what
8292
+ * would scroll it scrolls this instead.
8293
+ */
8294
+ declare function scrollLeaderOf(node: UiNode): UiNode | null;
8295
+ /**
8296
+ * The furthest a record's content can be scrolled along an axis.
8297
+ *
8298
+ * The one answer the layout engine's clamp, the scrollbars and the
8299
+ * scroll sinks all read, so a wheel stops exactly where the caret
8300
+ * would. A field may go one caret width past its text, so that a
8301
+ * caret at the very end is inside the box and not on the clipped
8302
+ * edge; a field wide enough for its text gets no allowance, or the
8303
+ * line would shift by a pixel the moment the caret reached the end.
8304
+ */
8305
+ declare function scrollRange(rec: LayoutRecord, axis: ScrollbarAxis): number;
8234
8306
  /**
8235
8307
  * One scrollbar's geometry, in the container's record coordinates
8236
8308
  * (pre-scroll, like the record box): the thumb rectangle and the
@@ -9308,6 +9380,11 @@ interface GestureInput {
9308
9380
  * long press raises nothing: it has a secondary button, and the
9309
9381
  * pointer controller dispatches the event from that instead.
9310
9382
  *
9383
+ * A mouse long press does not cost the Click either, unless its
9384
+ * LongPress was `preventDefault()`ed or it went on to a Drag: a button
9385
+ * held down a moment before letting go is a slow click, and dropping
9386
+ * it made toolbar buttons seem to ignore a deliberate press.
9387
+ *
9311
9388
  * ## Two contacts
9312
9389
  *
9313
9390
  * Every contact the controller sees is fed to a `UiPinchRecognizer`,
@@ -9571,6 +9648,19 @@ declare class UiWheelController {
9571
9648
  * what keeps a fast flick from jumping out to the page.
9572
9649
  */
9573
9650
  private scrollChain;
9651
+ /**
9652
+ * Whether the application's root asked to keep every wheel.
9653
+ *
9654
+ * Asked of `rootNode` first, because in a mounted app the tree's
9655
+ * topmost node is not the application's: the runtime wraps the app
9656
+ * in a stack beside its overlay layer, and `contain` set on the app's
9657
+ * own root — which is where the property's documentation says to set
9658
+ * it — was on a node `rootOf` never reached. A node in the overlay
9659
+ * layer is not under the app's root either, so the chain walk alone
9660
+ * would miss it too. `rootOf` is kept for a host that passes no
9661
+ * root, where the topmost node is the only root there is.
9662
+ */
9663
+ private appContainsOverscroll;
9574
9664
  private applyDelta;
9575
9665
  /**
9576
9666
  * A wheel delta in whatever unit it arrived in, as pixels.
@@ -11565,6 +11655,21 @@ declare class LayoutEngine {
11565
11655
  * changed rather than a walk of the tree on every pointer move.
11566
11656
  */
11567
11657
  subtreeBoundsFor(node: UiNode): SubtreeBounds | undefined;
11658
+ /**
11659
+ * A number that changes whenever a box may have moved: every box
11660
+ * written, every pass that did any work, every sticky shift and every
11661
+ * node newly given a transform. It is the counter subtree bounds are
11662
+ * kept honest by, read out for a renderer.
11663
+ *
11664
+ * What it deliberately does not count is a scroll offset on its own.
11665
+ * A scroll container's descendants keep their pre-scroll records, so
11666
+ * a frame that only scrolled leaves this alone, and that is what lets
11667
+ * Canvas2D tell a frame that scrolled a list from one that moved it.
11668
+ * The answer is conservative the other way: a pass that did work and
11669
+ * moved nothing still counts, because proving it moved nothing would
11670
+ * cost the walk the counter exists to avoid.
11671
+ */
11672
+ get geometryVersion(): number;
11568
11673
  /** The node the last `layout` / `layoutForFrame` started from, if any. */
11569
11674
  get root(): UiNode | null;
11570
11675
  /**
@@ -11699,6 +11804,8 @@ declare class LayoutEngine {
11699
11804
  revealScrollbars(node: UiNode): void;
11700
11805
  /** Every scroll container that has been laid out. */
11701
11806
  scrollContainers(): Iterable<UiNode>;
11807
+ /** Everything that can show a scrollbar: scroll containers, then fields. */
11808
+ private scrollbarNodes;
11702
11809
  /**
11703
11810
  * When the next scrollbar changes appearance (starts fading or
11704
11811
  * disappears), or undefined when none is showing. Lets a host schedule
@@ -12080,18 +12187,18 @@ declare class LayoutEngine {
12080
12187
  */
12081
12188
  private markLayoutDirty;
12082
12189
  private applyScroll;
12190
+ /**
12191
+ * A `scrollWith` container's offset: the leader's, on the axes it
12192
+ * follows, clamped to the follower's own range. No scrollbar shows
12193
+ * for it, since what is being scrolled is the leader.
12194
+ */
12195
+ private applyFollowedScroll;
12083
12196
  /**
12084
12197
  * Brings a record's scroll offset up to date with its `scrollX` and
12085
- * `scrollY` properties, clamped to what there is to scroll. This runs
12086
- * every pass, so an offset written against a larger content — a field
12087
- * whose text has since been deleted, a list that lost rows — comes
12088
- * back into range on its own.
12089
- *
12090
- * A field that scrolls may go one caret width further than its text,
12091
- * so that a caret at the very end is inside the box and not on its
12092
- * edge, where the clip would take it. A field wide enough for its
12093
- * text does not: the allowance would shift the line by a pixel the
12094
- * moment the caret reached the end.
12198
+ * `scrollY` properties, clamped to what there is to scroll (see
12199
+ * `scrollRange`). This runs every pass, so an offset written against
12200
+ * a larger content — a field whose text has since been deleted, a
12201
+ * list that lost rows — comes back into range on its own.
12095
12202
  */
12096
12203
  private applyScrollOffset;
12097
12204
  /**
@@ -14542,6 +14649,43 @@ interface RenderContext {
14542
14649
  * draw them, so the inspector looks the same on either.
14543
14650
  */
14544
14651
  readonly overlay?: readonly OverlayShape[];
14652
+ /**
14653
+ * What changed since the previous frame this renderer was handed,
14654
+ * when the caller knows. Absent, a renderer knows nothing about the
14655
+ * last frame and draws this one from scratch, which is always right.
14656
+ *
14657
+ * Only the runtime passes it, and only when it can vouch for it.
14658
+ * Canvas2D uses it to keep a scroll container's content as pixels
14659
+ * across frames that only scrolled it (see `ScrollLayers.ts`), and a
14660
+ * change it was not told about would leave those pixels stale, so
14661
+ * the promise matters more than the saving.
14662
+ */
14663
+ readonly changes?: RenderChanges;
14664
+ }
14665
+ /**
14666
+ * The change set a frame was drawn for: what the frame dirtied, and
14667
+ * whether layout moved anything since the last frame.
14668
+ *
14669
+ * The two halves answer different questions. The dirty set says which
14670
+ * nodes had a property written or were marked for a repaint — the
14671
+ * paint changes, and the scroll offsets, which dirty the container
14672
+ * and nothing else. It cannot say which boxes a layout pass moved,
14673
+ * because a pass moves siblings and descendants that nobody dirtied;
14674
+ * the version answers that, bluntly, for the whole tree.
14675
+ */
14676
+ interface RenderChanges {
14677
+ /**
14678
+ * The nodes dirtied since the previous frame this renderer drew,
14679
+ * with the flags they were dirtied under. Nothing was dirtied after
14680
+ * it was collected: a caller that cannot promise that passes no
14681
+ * `changes` at all.
14682
+ */
14683
+ readonly frame: UiFrame;
14684
+ /**
14685
+ * `LayoutEngine.geometryVersion` as of this frame. Unchanged since
14686
+ * the previous frame means no box moved anywhere in the tree.
14687
+ */
14688
+ readonly geometryVersion: number;
14545
14689
  }
14546
14690
  //#endregion
14547
14691
  //#region src/rendering/UiRenderer.d.ts
@@ -14579,6 +14723,78 @@ interface UiRenderer {
14579
14723
  dispose(): void;
14580
14724
  }
14581
14725
  //#endregion
14726
+ //#region src/rendering/canvas2d/ScrollLayers.d.ts
14727
+ /**
14728
+ * Scroll layers: a scroll container's content kept as pixels, so that
14729
+ * a frame which only scrolled it copies what it already drew and
14730
+ * paints the strip that came into view, instead of drawing everything
14731
+ * again.
14732
+ *
14733
+ * **Why.** Canvas2D clears the surface and draws every visible node on
14734
+ * every frame. With a GPU that is cheap. Without one — a headless
14735
+ * browser, a locked-down machine, a driver on the blocklist — the
14736
+ * browser rasterises each frame's draw calls on the CPU when the frame
14737
+ * is committed, and a screen covered by a few layers of pictures costs
14738
+ * that raster a whole frame's budget before any JavaScript has run.
14739
+ * gessologic's canvas, panned with nothing else moving, measured 17.5
14740
+ * ms between frames on exactly that path, all of it the recomposite of
14741
+ * pixels that had only moved. A layer turns such a frame into two
14742
+ * copies of the viewport and the raster of a strip: a screen of
14743
+ * three-picture tiles at a fractional offset, scrolled a few pixels a
14744
+ * frame in software Chrome with the raster forced into the frame so it
14745
+ * could be timed, went from 8.6 ms a frame to 2.4.
14746
+ *
14747
+ * **What a layer holds.** Exactly what `renderNode` draws between a
14748
+ * scroll container's scroll translation and its restore: the children,
14749
+ * clipped to the viewport, with nothing under them. The container's
14750
+ * own background and border, its scrollbars, its text, everything
14751
+ * drawn after it and every overlay are drawn onto the frame as before,
14752
+ * every frame. So the only claim a layer makes is about the container's
14753
+ * subtree, and the only thing it has to be told is whether that
14754
+ * subtree changed.
14755
+ *
14756
+ * **When one is trusted.** Only when the caller vouches for what
14757
+ * changed (`RenderContext.changes`), and only while all of these hold:
14758
+ *
14759
+ * - no box moved anywhere (`geometryVersion` is unchanged), and the
14760
+ * frame dirtied nothing but paint, scroll and semantics;
14761
+ * - nothing in the container's subtree, and none of its ancestors,
14762
+ * was dirtied, except the container's own scroll offset — an
14763
+ * ancestor because inherited paint (a text colour, a font) reaches
14764
+ * the subtree without dirtying it, and because the runtime marks
14765
+ * the root to ask for a repaint and says nothing about what for;
14766
+ * - the container lands on the same device-pixel phase, at the same
14767
+ * device scale, with no rotation, skew or scale above it and no
14768
+ * opacity in force, so a copy is exact rather than resampled;
14769
+ * - the scroll moved it by a whole number of device pixels;
14770
+ * - nothing the layer drew depends on the clock (a caret, a fading
14771
+ * scrollbar, a video frame) or escaped it (a lifted node).
14772
+ *
14773
+ * Anything else, and the container is drawn directly, exactly as it
14774
+ * was before layers existed. The first frame a container scrolls on
14775
+ * pays for the layer — its content drawn into it, then the copy onto
14776
+ * the frame — and every scroll-only frame after that is repaid.
14777
+ *
14778
+ * **What it cannot help.** A frame where the content itself changes —
14779
+ * a live layer redrawn every tick, a zoom that resizes every tile — is
14780
+ * drawn as before: there is nothing retained that is still right.
14781
+ * Nor an app that pans by moving each child's position rather than by
14782
+ * scrolling: that is a layout change, and it moves boxes.
14783
+ */
14784
+ /** Makes a layer canvas, or null where none can be had. Injectable for specs. */
14785
+ type LayerCanvasFactory = (width: number, height: number) => CanvasHost | null;
14786
+ /** What the layers did, for `ScrollLayers.budget.spec.ts`. */
14787
+ interface ScrollLayerStats {
14788
+ /** Layers made and filled from a full walk of the container's children. */
14789
+ built: number;
14790
+ /** Frames a layer was copied onto the surface. */
14791
+ composited: number;
14792
+ /** Frames a layer was moved by a scroll and had its exposed strips painted. */
14793
+ shifted: number;
14794
+ /** Layers dropped because something they held changed or could not be trusted. */
14795
+ dropped: number;
14796
+ }
14797
+ //#endregion
14582
14798
  //#region src/rendering/canvas2d/Canvas2DRenderer.d.ts
14583
14799
  interface Canvas2DRendererOptions {
14584
14800
  /**
@@ -14590,6 +14806,27 @@ interface Canvas2DRendererOptions {
14590
14806
  * runtime knowing.
14591
14807
  */
14592
14808
  surface: CanvasSurface;
14809
+ /**
14810
+ * Whether a scroll container's content is kept as pixels across
14811
+ * frames that only scroll it. Defaults to true.
14812
+ *
14813
+ * It only ever acts on a frame whose `RenderContext.changes` says
14814
+ * what changed, which only the runtime supplies, so a caller drawing
14815
+ * frames of its own is unaffected either way. False draws every
14816
+ * frame from scratch, as before layers existed. See `ScrollLayers.ts`.
14817
+ */
14818
+ scrollLayers?: boolean;
14819
+ /**
14820
+ * Makes the canvases scroll layers are kept in. Defaults to an
14821
+ * `OffscreenCanvas`; a spec passes a double.
14822
+ */
14823
+ createLayerCanvas?: LayerCanvasFactory;
14824
+ /**
14825
+ * How many frames in a row a container must scroll quietly before it
14826
+ * gets a layer. Defaults to `SCROLL_LAYER_SETTLE_FRAMES`; a spec of
14827
+ * the layers themselves passes 1.
14828
+ */
14829
+ scrollLayerSettleFrames?: number;
14593
14830
  }
14594
14831
  /**
14595
14832
  * Canvas2D rendering backend.
@@ -14622,6 +14859,9 @@ interface Canvas2DRendererOptions {
14622
14859
  * The frame strategy is a full clear + full traversal. Off-screen
14623
14860
  * subtrees are culled (while no ancestor transform is active) so
14624
14861
  * scrolling large lists only issues draws for the visible window.
14862
+ * The one exception is a scroll container's content on a frame that
14863
+ * only scrolled it, which is copied from the last frame's pixels and
14864
+ * has only the strip that came into view drawn (`ScrollLayers.ts`).
14625
14865
  */
14626
14866
  declare class Canvas2DRenderer implements UiRenderer {
14627
14867
  private readonly options;
@@ -14670,7 +14910,26 @@ declare class Canvas2DRenderer implements UiRenderer {
14670
14910
  * Drained after the walk; see `render`.
14671
14911
  */
14672
14912
  private readonly liftedPass;
14913
+ /** Scroll containers' content held as pixels; see `ScrollLayers.ts`. */
14914
+ private readonly layers;
14915
+ /**
14916
+ * How deep inside a layer's walk the traversal is. A layer is drawn
14917
+ * onto the frame, never onto another layer: an inner container that
14918
+ * scrolls dirties the outer one's subtree anyway, so a layer inside
14919
+ * a layer would be rebuilt every frame the inner one was useful.
14920
+ */
14921
+ private layerDepth;
14922
+ /**
14923
+ * Bumped whenever something is drawn whose pixels change without the
14924
+ * frame's changes saying so — a caret, a scrollbar still fading, a
14925
+ * video frame. A layer's walk compares it before and after, and does
14926
+ * not keep what it drew if it moved.
14927
+ */
14928
+ private volatileDraws;
14673
14929
  constructor(options: Canvas2DRendererOptions);
14930
+ /** What the scroll layers did since the last reset. For budget specs. */
14931
+ get scrollLayerStats(): ScrollLayerStats;
14932
+ resetScrollLayerStats(): void;
14674
14933
  private get surface();
14675
14934
  /** A 2D context needs no asynchronous setup. */
14676
14935
  initialize(): Promise<void>;
@@ -14772,6 +15031,30 @@ declare class Canvas2DRenderer implements UiRenderer {
14772
15031
  * layer places the caret with.
14773
15032
  */
14774
15033
  private paintEditable;
15034
+ /**
15035
+ * Draws a scroll container's children through its layer, and returns
15036
+ * whether it did. False means the caller draws them directly, as it
15037
+ * always used to; that is the answer to every doubt below.
15038
+ *
15039
+ * Called where the direct path would translate by the scroll offset,
15040
+ * so the container's clip is open and its background and border are
15041
+ * already drawn. The layer is copied onto the frame under that clip,
15042
+ * which is how a rounded viewport stays rounded.
15043
+ */
15044
+ private renderScrolledThroughLayer;
15045
+ /**
15046
+ * Draws the container's children into its layer: the whole of it
15047
+ * when `strip` is null, otherwise only the strip a scroll exposed.
15048
+ *
15049
+ * A strip is clipped, not culled. The walk visits exactly the nodes a
15050
+ * direct draw of the viewport would, and the clip keeps their pixels
15051
+ * inside the strip; culling to the strip instead would miss a shadow,
15052
+ * a focus ring or overflowing text reaching into it from a node whose
15053
+ * box does not, and leave a seam where a direct draw has none. What a
15054
+ * strip saves is raster, which is the cost it exists for; the walk
15055
+ * costs what a direct draw's walk would.
15056
+ */
15057
+ private paintLayer;
14775
15058
  private applyTransform;
14776
15059
  private intersectsCull;
14777
15060
  /**
@@ -15347,6 +15630,11 @@ interface PaintStats {
15347
15630
  rasterized: number;
15348
15631
  /** How many times a renderer asked for a node's picture. */
15349
15632
  resolved: number;
15633
+ /**
15634
+ * How many times a new recording was replayed straight onto the
15635
+ * frame's context instead of into a bitmap. See `draw`.
15636
+ */
15637
+ direct: number;
15350
15638
  }
15351
15639
  /**
15352
15640
  * The pictures painted nodes have produced, keyed by node.
@@ -15362,6 +15650,14 @@ interface PaintStats {
15362
15650
  * is what remains: that both place the same picture in the same box,
15363
15651
  * at the same point in paint order, under the same clip and opacity.
15364
15652
  *
15653
+ * **A picture that changes every frame is the exception**, on Canvas2D:
15654
+ * `draw` replays its new recording straight onto the frame and makes a
15655
+ * bitmap only on the first frame its inputs hold still. The parity
15656
+ * claim is kept where it is made — both backends draw the same bitmap of
15657
+ * a settled picture, and a changing one is the same recording through
15658
+ * the same `PaintTarget` — and a canvas whose layers move every frame
15659
+ * stops paying for a bitmap per layer per frame that nobody draws twice.
15660
+ *
15365
15661
  * **The cost follows the change.** A frame that draws a painted node
15366
15662
  * whose inputs, box, scale and theme are unchanged makes no recording
15367
15663
  * and no bitmap; it draws the one already here. The key holds the
@@ -15392,6 +15688,42 @@ declare class PaintPictureCache {
15392
15688
  * how a picture degrades: the rest of the node still draws.
15393
15689
  */
15394
15690
  pictureFor(node: UiNode, rec: LayoutRecord, scale: number): UiImage | undefined;
15691
+ /**
15692
+ * Draws a node's picture onto a Canvas2D frame, making a bitmap only
15693
+ * when one will be drawn more than once.
15694
+ *
15695
+ * `pictureFor` rasterises every new recording into a bitmap, which
15696
+ * pays for itself when the picture is drawn again — a chart that
15697
+ * changed once and is panned for a minute. It does not when the
15698
+ * picture changes every frame: the bitmap is drawn once and thrown
15699
+ * away, and the frame has paid for a canvas cleared, a separate
15700
+ * flush, and a composite of every pixel of it. gessologic's canvas
15701
+ * redraws a layer of live wires per tile per frame, and in software
15702
+ * rendering `transferToImageBitmap` alone was a quarter of the render
15703
+ * worker's time.
15704
+ *
15705
+ * So a recording made because the painter's inputs changed is
15706
+ * replayed straight onto the frame's context, clipped to the node's
15707
+ * box, and no bitmap is made. Once it has held still for
15708
+ * `SETTLE_FRAMES` frames it makes the bitmap and draws that from there
15709
+ * on, exactly as `pictureFor` would. A picture that changes every
15710
+ * frame, or nearly every frame, is never rasterised; one that settles
15711
+ * is rasterised once, a few frames late.
15712
+ * A picture seen for the first time, or at a new size, is rasterised
15713
+ * at once, because it most likely holds still.
15714
+ *
15715
+ * Canvas2D only. WebGPU has no path pipeline to replay onto, which is
15716
+ * the reason the cache exists (see the class comment), and asks
15717
+ * `pictureFor`. The two backends then differ only in when the pixels
15718
+ * of a changing picture are made, not in which: both come from the
15719
+ * same recording through the same `PaintTarget`.
15720
+ */
15721
+ draw(node: UiNode, rec: LayoutRecord, scale: number, ctx: PaintContext2D): void;
15722
+ /** A recording drawn straight onto the frame, clipped to the box its bitmap would fill. */
15723
+ private replay;
15724
+ /** A slot's bitmap, made now if it has not been. */
15725
+ private pictureOf;
15726
+ private remember;
15395
15727
  /**
15396
15728
  * The recording a node's picture was made from.
15397
15729
  *
@@ -17234,5 +17566,5 @@ interface UiSemanticsAction {
17234
17566
  readonly value?: string;
17235
17567
  }
17236
17568
  //#endregion
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
17569
+ export { Mp3Header as $, UiPointerController as $a, ScrollView as $c, paintValuesEqual as $d, UiModifierLayout as $f, UiTransform as $h, formatConstraints as $i, validateStates as $l, validateSubgrid as $m, DefaultVideoResolver as $n, EnvironmentNotifier as $o, resolveMotionState as $p, decorated as $r, clearSelectionRange as $s, PaintResolver as $t, defaultSpacing as $u, MARK_PREFIX as A, EditingState as Aa, selectionRects as Ac, UiTextLink as Ad, repeat as Af, normalizeTransition as Ah, parseAlignContent as Ai, RowProps as Al, UI_SUBGRID_AXES as Am, resolveNumber as An, UiPoint as Ao, UiKeyboardEvent as Ap, shortcuts as Ar, textRunBackgrounds as As, WebGPUTextureCache as At, UiTheme as Au, ByteSource as B, UiDroppedFile as Ba, ResponsiveProps as Bc, textContentOf as Bd, UiInsetRegistry as Bf, UiTweenOptions as Bh, SCROLLBAR_FADE_MS as Bi, UiPropertyValueOf as Bl, UiObjectFit as Bm, publishInset as Bn, scrollbarThumbs as Bo, noKeyModifiers as Bp, reorderable as Br, PaintTextSpan as Bs, WebGPUSurface as Bt, hasThemeExtension as Bu, paragraphGeometry as C, UiPlatformAdapter as Ca, caretRectFor as Cc, UiFontKerning as Cd, fr as Cf, findEnvironmentKey as Ch, GridPlacement as Ci, IdentityProps as Cl, DecorationRect as Cm, OverlayShape as Cn, SelectionControllerOptions as Co, MOUSE_POINTER as Cp, AnimateLayoutOptions as Cr, buildFontString as Cs, glyphCount as Ct, VirtualItemMeasure as Cu, UiFrameCallback as D, touchActionFor as Da, offsetAtPoint as Dc, UiResolvedTextSpan as Dd, isPercentLength as Df, UiTransitionSpec as Dh, AlignContent as Di, PositionProps as Dl, decorationRect as Dm, CanvasSurface as Dn, HitTestResult as Do, UiGestureEvent as Dp, ShortcutsOptions as Dr, layoutTextLines as Ds, GlyphSlot as Dt, UiVideoSurface as Du, wordRangeIn as E, prepareInputSurface as Ea, lineLimit as Ec, UiFontVariant as Ed, isMinMaxTrack as Ef, AnimationDriver as Eh, sizeGridTracks as Ei, PaintProps as El, decorationColor as Em, CanvasHost as En, HitTestLayoutReader as Eo, UiFocusEvent as Ep, ShortcutOptions as Er, fillTextRects as Es, GLYPH_SUBPIXEL_PHASES as Et, lazySource as Eu, setPerformanceMarks as F, UiDragPayload as Fa, nextWordEnd as Fc, editableSpansOf as Fd, boxShadowsEqual as Ff, UiAnimationOptions as Fh, ELLIPSIS as Fi, TypographyProps as Fl, UiCursor as Fm, themeTokens as Fn, ScrollbarAxis as Fo, UiPointerKind as Fp, DragSourceOptions as Fr, DEFAULT_FONT_SIZE as Fs, DrawStats as Ft, withDensity as Fu, Mp4AudioTrack as G, UiShortcutBinding as Ga, LazyRow as Gc, PaintLineCap as Gd, observeViewportInsets as Gf, UiSpringSpec as Gh, Edges as Gi, UiRole as Gl, UiSelfAlignment as Gm, ScrollOffset as Gn, matchRangesOf as Go, MotionChannel as Gp, clickOutside as Gr, createPaintState as Gs, registerFontStack as Gt, UiContrast as Gu, RangeSourceOptions as H, dragSessionFor as Ha, LazyGrid as Hc, textStylesEqual as Hd, UiInsets as Hf, UiDurationToken as Hh, ScrollAdjustment as Hi, UI_ROLES as Hl, UiPlacement as Hm, SizeContainerArgs as Hn, SubtreeBounds as Ho, DirtyNodeSet as Hp, DraggableOptions as Hr, VerticalAlign as Hs, bumpFontStack as Ht, themeExtension as Hu, VttCue as I, UiDragSession as Ia, previousGraphemeStart as Ic, flattenTextSpans as Id, UiPropertyDefinition as If, UiReducedMotionPolicy as Ih, layoutParagraph as Ii, UiEventProps as Il, UiDirection as Im, sameArgs as In, ScrollbarThumb as Io, UiSelectionChangeEvent as Ip, DropTargetOptions as Ir, DEFAULT_FONT_WEIGHT as Is, RenderHooks as It, UiThemeExtension as Iu, demuxMp4Audio as J, formatShortcut as Ja, Column as Jc, PaintTextAlign as Jd, bandOf as Jf, UiInterpolator as Jh, OverrideSources as Ji, isUiRole as Jl, UiTextDirection as Jm, VideoClock as Jn, FindOptions as Jo, MotionTiming as Jp, BordersOptions as Jr, normalizeVerticalAlign as Js, PaintPictureCache as Jt, raiseContrast as Ju, Mp4Sample as K, UiShortcutRegistry as Ka, Box as Kc, PaintLineJoin as Kd, UiContainerSize as Kf, UiSpringToken as Kh, LayoutExplanation as Ki, UiSemanticState as Kl, UiSubgridAxis as Km, ScrollPositionArgs as Kn, setMatchRanges as Ko, MotionState as Kp, autoFocus as Kr, isPaintVisible as Ks, PaintCanvas as Kt, contrastRatio as Ku, VttTrack as L, UiDragState as La, previousWordStart as Lc, resolvedSpansOf as Ld, defineProperty as Lf, UiSpring as Lh, proportionalFontMetrics as Li, UiNodeRef as Ll, UiFlexWrap as Lm, InsetPaddingArgs as Ln, scrollLeaderOf as Lo, UiTextChangeEvent as Lp, ReorderableOptions as Lr, DEFAULT_TEXT_COLOR as Ls, WebGPURenderer as Lt, UiThemeExtensionOptions as Lu, markNow as M, TouchScrollerOptions as Ma, lineEndAt as Mc, UiTextSpan as Md, UiBoxShadow as Mf, tween as Mh, parseMainAxisAlignment as Mi, StackProps as Ml, UiBorderRadiusValue as Mm, resolvePropertyByName as Mn, SCROLLBAR_INSET as Mo, UiPinchEvent as Mp, ZoomState as Mr, Canvas2DContext as Ms, isWebGPUAvailable as Mt, lightTheme as Mu, measureSpan as N, UiTouchScroller as Na, lineStartAt as Nc, UiTextStyle as Nd, boxShadow as Nf, AnimatedCell as Nh, FlexDirection as Ni, TextContentProps as Nl, UiColorValue as Nm, resolveString as Nn, SCROLLBAR_MIN_THUMB as No, UiPointerDevice as Np, pinchable as Nr, Canvas2DGradient as Ns, WebGPUError as Nt, themesEqual as Nu, UiScheduler as O, EditingControllerOptions as Oa, offsetAtX as Oc, UiSpannedText as Od, minmax as Of, UiTransitionValue as Oh, CrossAxisAlignment as Oi, PropsOf as Ol, hasDecorationPhase as Om, createCanvasSurface as On, HitTester as Oo, UiInputEvent as Op, contextMenu as Or, runCanvasStyleInto as Os, GlyphUpload as Ot, isVideoSurface as Ou, performanceMarksEnabled as P, EXTERNAL_FILES as Pa, nextGraphemeEnd as Pc, defaultTextStyle as Pd, boxShadowArraysEqual as Pf, UiAnimation as Ph, parseFlexDirection as Pi, TextProps as Pl, UiContentDistribution as Pm, ThemeTokenTarget as Pn, SCROLLBAR_THICKNESS as Po, UiPointerEvent as Pp, AutoScrollOptions as Pr, DEFAULT_FONT_FAMILY as Ps, CapturedFrame as Pt, withContrast as Pu, Mp3Frames as Q, PointerControllerOptions as Qa, Row as Qc, inputsEqual as Qd, UiModifierFocus as Qf, interpolatorFor as Qh, describeOverrides as Qi, validateRole as Ql, UiVerticalAlign as Qm, videoSource as Qn, UiEnvironmentKeys as Qo, pop as Qp, borders as Qr, TextRange as Qs, PaintGradient as Qt, UiSpacing as Qu, cueAt as R, UiDropEffect as Ra, wordRangeAt as Rc, spanAtOffset as Rd, propertyValuesEqual as Rf, UiSpringOptions as Rh, LayoutNotifier as Ri, UiProperties as Rl, UiFontWeight as Rm, PublishInsetArgs as Rn, scrollRange as Ro, UiWheelDeltaMode as Rp, dragSource as Rr, ObjectFit as Rs, WebGPURendererOptions as Rt, UiThemeExtensions as Ru, offsetAtPointIn as S, PlatformSurface as Sa, RunMeasure as Sc, visualStatesEqual as Sd, auto as Sf, createEnvironmentKey as Sh, GridItemRequest as Si, GridProps as Sl, DecorationFill as Sm, LABEL_PADDING_X as Sn, UiFindController as So, UiListenerErrorReporter as Sp, ImageResolver as Sr, applyCanvasTextStyle as Ss, createTextCache as St, VIRTUAL_WINDOW_PROP as Su, selectionRectsIn as T, pointerDeviceOf as Ta, lineIndexForOffset as Tc, UiFontStyle as Td, isFrLength as Tf, DirtyFlags as Th, placeGridItems as Ti, PaintElementProps as Tl, DecorationStroke as Tm, labelOrigin as Tn, UiSelectionController as To, UiEventType as Tp, ContextMenuOptions as Tr, drawText as Ts, GlyphShaper as Tt, VirtualViewport as Tu, bufferSource as U, ShortcutRegistryOptions as Ua, LazyGridProps as Uc, PaintBox as Ud, insetsEqual as Uf, UiEasingToken as Uh, AxisExplanation as Ui, UI_SEMANTIC_STATES as Ul, UiPointerEvents as Um, breakpoint as Un, TEXT_MATCHES_PROP as Uo, MOTION_CHANNELS as Up, draggable as Ur, colorToCss as Us, clearFontStacks as Ut, themeExtensionsEqual as Uu, DEFAULT_BLOCK_SIZE as V, UiFileDropMessage as Va, LazyColumn as Vc, textSpansEqual as Vd, UiInsetSource as Vf, createTween as Vh, SCROLLBAR_LINGER_MS as Vi, UiPropertyValues as Vl, UiOverflow as Vm, BreakpointArgs as Vn, scrollbarZoneAt as Vo, wheelDeltaYOf as Vp, DragOffset as Vr, TextAlign as Vs, createWebGPUSurface as Vt, noThemeExtensions as Vu, rangeSource as W, UiShortcut as Wa, LazyListProps as Wc, PaintFillRule as Wd, noInsets as Wf, UiMotion as Wh, CustomLayoutExplanation as Wi, UiLiveRegion as Wl, UiPosition as Wm, sizeContainer as Wn, clearMatchRanges as Wo, MOTION_REST as Wp, ClickOutsideOptions as Wr, computeObjectFitRect as Ws, fontStackFor as Wt, withThemeExtension as Wu, Mp3Format as X, KeyboardControllerOptions as Xa, Grid as Xc, UiPaint as Xd, unknownContainerSize as Xf, interpolateNumber as Xh, SizeDecision as Xi, normalizeStates as Xl, UiTextWrapValue as Xm, VideoState as Xn, UiEnvironmentProvider as Xo, fade as Xp, FocusRingOptions as Xr, DEFAULT_LINE_HEIGHT_FACTOR as Xs, paintPictures as Xt, UiDensity as Xu, demuxMp4Video as Y, parseShortcut as Ya, EditableText as Yc, PaintTextStyle as Yd, containerBands as Yf, interpolateColor as Yh, RelayoutExplanation as Yi, isUiSemanticState as Yl, UiTextOverflowValue as Ym, VideoSourceArgs as Yn, findMatchesIn as Yo, ResolvedMotionState as Yp, Decorations as Yr, resolvePaintState as Ys, PaintStats as Yt, relativeLuminance as Yu, Mp3Frame as Z, UiKeyboardController as Za, Paint as Zc, UiPath as Zd, UiModifierEnvironment as Zf, interpolateTransform as Zh, describeLength as Zi, statesEqual as Zl, UiThemeColorName as Zm, VideoTransport as Zn, provideEnvironment as Zo, isMotionRest as Zp, borderShapes as Zr, TEXT_SELECTION_PROP as Zs, PaintContext2D as Zt, densityFactors as Zu, linkOf as _, isNodeTabStop as _a, TextRunStyle as _c, UiVisualState as _d, FrLength as _f, easings as _g, darkColors as _h, inheritedPropertyNames as _i, EditableTextProps as _l, NodeProperty as _m, RendererBackend as _n, overrideSources as _o, UiPropValue as _p, IconRasterizerOptions as _r, CanvasTextStyle as _s, ScissorRect as _t, LazyListOptions as _u, diffSemantics as a, UiFrameClock as aa, FixedMetricsOptions as ac, shadowsEqual as ad, ResolvedGradientStop as af, UiBasicColors as ag, borderRadiusIsZero as ah, measure as ai, UiBinding as al, SharedClaim as am, PaintRecording as an, isScrollContainer as ao, defineModifier as ap, MotionArgs as ar, editorOf as as, CLIP_STRIDE_FLOATS as at, SheetHeaderRenderer as au, ParagraphGeometry as b, PlatformAdapterOptions as ba, CaretRect as bc, hasVisualState as bd, UiLength as bf, UiEnvironment as bh, propertyValuesEqualByName as bi, FlexItemProps as bl, UiPropertyOverride as bm, RenderChanges as bn, writeOverrideProperty as bo, UiEventListenerOptions as bp, DefaultImageResolver as br, TextLinePlacement as bs, TextRunDraw as bt, VIRTUAL_INDEX_PROP as bu, UiSemanticsMap as c, UiHostFrameClock as ca, ParagraphTextMeasurer as cc, UiTypographyRole as cd, UiGradientStop as cf, colorToRgba as cg, uniformBorderRadius as ch, bundle as ci, ChildrenBindingId as cl, LayoutBox as cm, InspectorOverlay as cn, UiGestureRecognizer as co, UiModifierTeardown as cp, sharedElement as cr, isReadOnly as cs, INSTANCE_STRIDE_BYTES as ct, SheetSourceArgs as cu, buildSemanticsTree as d, UiTimerFrameClock as da, TextLineRun as dc, typographyEqual as dd, gradientPaint as df, normalizeColor as dg, UiShapes as dh, accumulatedOffsetTo as di, BoxModelProps as dl, Size as dm, CanvasTextMeasurer as dn, FocusNotifier as do, UiChild as dp, ImageSources as dr, EditCommand as ds, NO_CLIP_INDEX as dt, UiVirtualSheetOptions as du, formatExplanation as ea, selectableTextNodes as ec, scaleSpacing as ed, pathValuesEqual as ef, UiTransforms as eg, UiBorderRadius as eh, focusRing as ei, Stack as el, rotateFrom as em, PaintTarget as en, ScrollContainerState as eo, UiModifierSet as ep, DefaultVideoResolverOptions as er, CARET_BLINK_MS as es, readMp3Header as et, CompositionRange as eu, semanticsInertAbove as f, UiTimerFrameClockOptions as fa, TextMeasureRequest as fc, MAX_MEASURES_PER_CHILD as fd, gradientsEqual as ff, parseColor as fg, defaultShapes as fh, contentOffset as fi, BoxProps as fl, TightenOptions as fm, Canvas2DRenderer as fn, FocusSource as fo, UiElement as fp, iconSource as fr, EditingPlatform as fs, PrimitiveCommand as ft, VIRTUAL_SHEET_PROP as fu, linkHoverOf as g, isNodeSelectable as ga, TextRunSpan as gc, isLayoutProtocol as gd, AutoLength as gf, cubicBezier as gg, colorsEqualPalette as gh, inheritedPropertyFlags as gi, ContainerProps as gl, NodeId as gm, ScrollLayerStats as gn, clearOverrideProperty as go, isUiElement as gp, IconRasterizer as gr, EditableLayout as gs, RenderTextCache as gt, LazyItemRenderer as gu, hasTextLinks as h, isNodeInert as ha, TextRunMeasurer as hc, UiLayoutProtocol as hd, validateGradient as hf, UiEasing as hg, UiColors as hh, getPropertyNames as hi, CommonProps as hl, tightenConstraints as hm, LayerCanvasFactory as hn, resetTransitionWarnings as ho, isUiChild as hp, IconContext as hr, isPrintable as hs, RenderList as ht, LazyGridOptions as hu, UiSemanticsPatch as i, UiAnimationFrameClock as ia, CharacterCountTextMeasurer as ic, defaultShadows as id, ResolvedGradient as if, transformsEqual as ig, borderRadiusEqual as ih, interactive as ii, BindingId as il, slideUp as im, PaintRecorder as in, UiWheelController as io, UiModifierKind as ip, canDecodeVideo as ir, editorFor as is, CLIP_STRIDE_BYTES as it, LazySheetProps as iu, markInstant as j, UiEditingController as ja, graphemeBoundaries as jc, UiTextMetrics as jd, resolveLength as jf, spring as jh, parseCrossAxisAlignment as ji, ScrollViewProps as jl, UiAlignment as jm, resolveProperty as jn, SCROLLBAR_HOVER_ZONE as jo, UiPasteEvent as jp, PinchableOptions as jr, textRunDecorations as js, initializeWebGPU as jt, darkTheme as ju, UiSchedulerOptions as k, EditingHost as ka, offsetForVerticalMove as kc, UiTextDecoration as kd, percent as kf, assertTransitionMap as kh, MainAxisAlignment as ki, Reactive as kl, paintsAfterChildren as km, resolveBoolean as kn, UiHitTester as ko, UiKeyModifiers as kp, shortcut as kr, runFontString as ks, WebGPUGlyphAtlas as kt, videoFrameSize as ku, UiSemanticsRecord as l, UiHostFrameClockOptions as la, SpannedRuns as lc, defaultTypography as ld, UiLinearGradient as lf, colorValuesEqual as lg, UiShapeExtensions as lh, noModifiers as li, UiChildrenBinding as ll, LayoutResult as lm, LayoutInspector as ln, PinchRecognizerOptions as lo, ComponentResolver as lp, IconSourceArgs as lr, nextCaretToggle as ls, INSTANCE_STRIDE_FLOATS as lt, SheetViewport as lu, clearLinkHover as m, isNodeHitTestable as ma, TextOverflow as mc, UiLayoutContext as md, radialGradient as mf, rgba as mg, shapesEqual as mh, findPropertyDefinition as mi, ColumnProps as ml, constraintsEqual as mm, traceRoundedRect as mn, NodeTransitions as mo, isObservable$1 as mp, IconCanvas as mr, detectEditingPlatform as ms, RenderCommand as mt, LazyAxis as mu, UiSemanticsBox as n, withOverrideSource as na, selectionRangeOf as nc, spacingSteps as nd, GradientPaint as nf, transform as ng, borderRadius as nh, InteractiveOptions as ni, createElement as nl, slideDown as nm, EMPTY_RECORDING as nn, UiScrollBehavior as no, assertModifierList as np, VideoPlayback as nr, EDITOR_PROP as ns, WebGPUGlyphPages as nt, EditableTextModel as nu, recordsEqual as o, UiFrameClockFactory as oa, FontMetrics as oc, UiTypography as od, UiGradient as of, UiColor as og, borderRadiusValuesEqual as oh, pressable as oi, UiGraph as ol, UiSharedElements as om, replayPaint as on, GestureInput as oo, isUiModifier as op, SharedElementArgs as or, isEditableNode as os, CommandKind as ot, SheetRange as ou, textRunOfRecordId as p, isNodeFocusable as pa, TextMeasurer as pc, UiLayoutChild as pd, linearGradient as pf, rgb8 as pg, isShapeName as ph, closestPropertyName as pi, ButtonProps as pl, clampSize as pm, Canvas2DRendererOptions as pn, UiFocusManager as po, isComponentLikeElement as pp, imageSource as pr, commandForKey as ps, PrimitiveKind as pt, sheetSource as pu, Mp4VideoTrack as q, UiShortcutStep as qa, Button as qc, PaintSurface as qd, UiContainerSizeSource as qf, defaultMotion as qh, LayoutStateExplanation as qi, UiSemanticStates as ql, UiTextAlign as qm, scrollPosition as qn, FindMatch as qo, MotionStateInput as qp, BorderEdge as qr, normalizeTextAlign as qs, PaintCanvasFactory as qt, highContrastColors as qu, UiSemanticsUpdate as r, UiFrame as ra, setSelectionRange as rc, UiShadows as rd, MAX_GRADIENT_STOPS as rf, transformIsIdentity as rg, borderRadiusCorners as rh, hoverable as ri, UiDefinition as rl, slideFrom as rm, PaintOp as rn, UiScrollability as ro, UiModifier as rp, VideoResolver as rr, caretVisibleAt as rs, Affine as rt, LazySheet as ru, TEXT_RUN_ID_SEPARATOR as s, UiFrameTime as sa, ParagraphLayout as sc, UiTypographyExtensions as sd, UiGradientOffset as sf, colorToHex as sg, normalizeBorderRadius as sh, UiModifierBundle as si, UiEventBinding as sl, Constraints as sm, INSPECTOR_HEAT_MS as sn, GestureRecognizerOptions as so, UiModifierHost as sp, motion as sr, isMultiline as ss, GlyphCommand as st, SheetRowRenderer as su, UiSemanticsAction as t, labelNode as ta, selectableTextOf as tc, spacingEqual as td, UiImage as tf, parseTransform as tg, UiBorderRadiuses as th, BUTTON_INTERACTION as ti, Text as tl, scaleFrom as tm, tracePathData as tn, ScrollSink as to, UiUnknownModifierPropertyError as tp, RangeResponse as tr, CARET_WIDTH as ts, splitMp3Frames as tt, EditUnit as tu, buildSemanticsSubtree as u, UiManualFrameClock as ua, TextLine as uc, isTypographyRole as ud, UiRadialGradient as uf, colorsEqual as ug, UiShapeName as uh, Transform as ui, UiGraphBuilder as ul, LayoutStats as um, LayoutInspectorOptions as un, UiPinchRecognizer as uo, ComponentLikeElement as up, ImageSourceArgs as ur, syncEditorValue as us, ImageCommand as ut, UiVirtualSheet as uu, linkRunAtPointIn as v, resolveCursor as va, TextWrap as vc, UiVisualStateSet as vd, MinMaxTrack as vf, linear as vg, lightColors as vh, propertyEffects as vi, EnvironmentProps as vl, UiNode as vm, UiRenderer as vn, resetOverrideWarnings as vo, UiProps as vp, IconSpec as vr, PlacedTextRun as vs, TEXTURED_STRIDE_BYTES as vt, LazySourceArgs as vu, paragraphGeometryFrom as w, capturePointer as wa, lineIndexAtY as wc, UiFontStretch as wd, isAutoLength as wf, UiNodeType as wh, GridTrack as wi, InteractionProps as wl, DecorationShape as wm, drawOverlayShapes as wn, SelectionHost as wo, UiBeforeInputEvent as wp, animateLayout as wr, createCanvasTextStyle as ws, textRuns as wt, VirtualUpdate as wu, hasDrawnText as x, PlatformEventTarget as xa, PlacedLine as xc, visualState as xd, UiTrackSize as xf, UiEnvironmentKey as xh, GridContribution as xi, GridItemProps as xl, UiPropertyOverrides as xm, RenderContext as xn, FindHost as xo, UiInputDispatcher as xp, DefaultImageResolverOptions as xr, TextRunRect as xs, buildRenderList as xt, VIRTUAL_LEAD_PROP as xu, setLinkHover as y, CanvasPlatformSurface as ya, spannedRunsFor as yc, defaultVisualState as yd, PercentLength as yf, steps as yg, LayoutRecord as yh, propertyIsInherited as yi, FlexContainerProps as yl, UiNodeTransitions as ym, LayoutReader as yn, writeDeclaredProperty as yo, UiEventListener as yp, iconKey as yr, SpanPaint as ys, TEXTURED_STRIDE_FLOATS as yt, UiVirtualWindow as yu, parseWebVtt as z, UiDropZone as za, Responsive as zc, spannedTextOf as zd, UiInsetEdge as zf, UiTween as zh, LayoutEngine as zi, UiPropertyName as zl, UiGridAutoFlow as zm, insetPadding as zn, scrollbarThumb as zo, UiWheelEvent as zp, dropTarget as zr, PaintState as zs, WebGPUCanvasHost as zt, defineThemeExtension as zu };
17570
+ //# sourceMappingURL=index-BiN3WdTh.d.ts.map