gesso-core 0.6.25 → 0.6.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as isImeKey, $a as visualStatesEqual, $i as scaleSpacing, $n as spannedRunsFor, $r as transformIsIdentity, $t as registerFontStack, A as withOverrideSource, Aa as UiBasicColors, Ai as noInsets, An as clearLinkHover, Ar as inheritedPropertyFlags, At as adjacentField, B as FlexDirection, Ba as findEnvironmentKey, Bi as withDensity, Bn as editorFor, Br as isUiSemanticState, Bt as createCanvasTextStyle, C as SCROLLBAR_LINGER_MS, Ca as spansDifferOnlyInPaint, Ci as normalizeBorderRadius, Cn as isNodeInert, Cr as resolveNumber, Ct as hasDrawnText, D as formatExplanation, Da as colorsEqualPalette, Di as UiEnvironmentKeys, Dn as isSubtreeInert, Dr as closestPropertyName, Dt as selectionRectsIn, E as formatConstraints, Ea as textStylesEqual, Ei as propertyValuesEqual, En as isPressable, Er as resolveString, Et as paragraphGeometryFrom, F as clampSize, Fa as normalizeColor, Fi as unknownContainerSize, Fn as setLinkHover, Fr as propertyValuesEqualByName, Ft as detectEditingPlatform, G as CrossAxisAlignment, Ga as overrideSources, Gi as themeExtensionsEqual, Gn as maskText, Gr as UI_SUBGRID_AXES, Gt as runFontString, H as placeGridItems, Ha as UiNode, Hi as hasThemeExtension, Hn as isEditableNode, Hr as statesEqual, Ht as fillTextRects, I as constraintsEqual, Ia as parseColor, Ii as darkTheme, In as CARET_BLINK_MS, Ir as UiProperties, It as isPrintable, J as parseCrossAxisAlignment, Ja as writeOverrideProperty, Ji as highContrastColors, Jn as resolveColorValue, Jr as paintValuesEqual, Jt as textRunBackgrounds, K as MainAxisAlignment, Ka as resetOverrideWarnings, Ki as withThemeExtension, Kn as nextCaretToggle, Kr as validateSubgrid, Kt as spanOf, L as tightenConstraints, La as rgb8, Li as lightTheme, Ln as CARET_WIDTH, Lr as UI_ROLES, Lt as EditableLayout, M as contentOffset, Ma as colorToRgba, Mi as UiContainerSizeSource, Mn as linkHoverOf, Mr as propertyEffects, Mt as edgeField, N as LayoutRecord, Na as colorValuesEqual, Ni as bandOf, Nn as linkOf, Nr as propertyIsInherited, Nt as editingGroupOf, O as formatNumber, Oa as darkColors, Oi as UiInsetRegistry, On as pointerEventsOf, Or as findPropertyDefinition, Ot as wordRangeIn, P as Constraints, Pa as colorsEqual, Pi as containerBands, Pn as linkRunAtPointIn, Pr as propertyNarrowers, Pt as commandForKey, Q as capturePointer, Qa as visualState, Qi as defaultSpacing, Qn as ParagraphTextMeasurer, Qr as transform, Qt as fontStackFor, R as MAX_MEASURES_PER_CHILD, Ra as rgba, Ri as themesEqual, Rn as EDITOR_PROP, Rr as UI_SEMANTIC_STATES, Rt as applyCanvasTextStyle, S as SCROLLBAR_FADE_MS, Sa as spannedTextOf, Si as borderRadiusValuesEqual, Sn as isNodeHitTestable, Sr as resolveBoolean, St as UiInputDispatcher, T as describeOverrides, Ta as textSpansEqual, Ti as defineProperty, Tn as isNodeTabStop, Tr as resolvePropertyByName, Tt as paragraphGeometry, U as sizeGridTracks, Ua as DirtyNodeSet, Ui as noThemeExtensions, Un as isMultiline, Ur as validateRole, Ut as layoutTextLines, V as parseFlexDirection, Va as UiEnvironment, Vi as defineThemeExtension, Vn as editorOf, Vr as normalizeStates, Vt as drawText, W as AlignContent, Wa as clearOverrideProperty, Wi as themeExtension, Wn as isReadOnly, Wr as validateStates, Wt as runCanvasStyleInto, X as CanvasPlatformSurface, Xa as defaultVisualState, Xi as relativeLuminance, Xn as videoFrameSize, Xr as UiTransforms, Xt as bumpFontStack, Y as parseMainAxisAlignment, Ya as UiVisualState, Yi as raiseContrast, Yn as isVideoSurface, Yr as pathValuesEqual, Yt as textRunDecorations, Z as UiPlatformAdapter, Za as hasVisualState, Zi as densityFactors, Zn as CharacterCountTextMeasurer, Zr as parseTransform, Zt as clearFontStacks, _ as LABEL_PADDING_X, _a as editableSpansOf, _i as UiBorderRadiuses, _n as selectableTextNodes, _o as UiNodeType, _r as previousGraphemeStart, _t as scrollLeaderOf, a as PaintPictureCache, aa as boxShadow, ai as radialGradient, an as computeObjectFitRect, ao as UiGestureEvent, ar as lineIndexForOffset, at as UiGestureRecognizer, b as snapScroll, ba as resolvedSpansOf, bi as borderRadiusEqual, bn as setSelectionRange, br as UiGraph, bt as scrollbarThumbs, c as EMPTY_RECORDING, ca as boxShadowReach, ci as fr, cn as normalizeTextAlign, co as UiPasteEvent, cr as offsetAtX, ct as isScrollContainer, d as tracePathData, da as isShapeName, di as isMinMaxTrack, dn as TEXT_MATCHES_PROP, do as UiSelectionChangeEvent, dr as EditableTextModel, dt as UiFocusManager, ea as spacingEqual, ei as transformsEqual, en as DEFAULT_FONT_FAMILY, eo as MOUSE_POINTER, er as ELLIPSIS, et as pointerDeviceOf, f as ScaledImageCache, fa as shapesEqual, fi as isPercentLength, fn as clearMatchRanges, fo as UiTextChangeEvent, fr as graphemeBoundaries, ft as UiHitTester, g as paintsAfterChildren, ga as defaultTextStyle, gi as resolveLength, gn as clearSelectionRange, go as wheelDeltaYOf, gr as nextWordEnd, gt as SCROLLBAR_THICKNESS, h as hasDecorationPhase, ha as typographyEqual, hi as repeat, hn as TEXT_SELECTION_PROP, ho as noKeyModifiers, hr as nextGraphemeEnd, ht as SCROLLBAR_MIN_THUMB, i as traceRoundedRect, ia as BOX_SHADOW_BLUR_REACH, ii as linearGradient, in as colorToCss, io as UiFocusEvent, ir as lineIndexAtY, it as UiTouchScroller, j as accumulatedOffsetTo, ja as colorToHex, ji as observeViewportInsets, jn as hasTextLinks, jr as inheritedPropertyNames, jt as comparePositions, k as labelNode, ka as lightColors, ki as insetsEqual, kn as resolveCursor, kr as getPropertyNames, kt as textInputOf, l as PaintRecorder, la as boxShadowsEqual, li as isAutoLength, ln as normalizeVerticalAlign, lo as UiPinchEvent, lr as offsetForVerticalMove, lt as UiKeyboardController, m as decorationRect, ma as isTypographyRole, mi as percent, mn as setMatchRanges, mo as UiWheelEvent, mr as lineStartAt, mt as SCROLLBAR_INSET, n as createCanvasSurface, na as defaultShadows, ni as gradientPaint, nn as DEFAULT_FONT_WEIGHT, no as UiCompositionEvent, nr as proportionalFontMetrics, nt as touchActionFor, o as paintPictures, oa as boxShadowArraysEqual, oi as validateGradient, on as createPaintState, oo as UiInputEvent, or as lineLimit, ot as UiPinchRecognizer, p as decorationColor, pa as defaultTypography, pi as minmax, pn as matchRangesOf, po as UiWheelDeltaMode, pr as lineEndAt, pt as SCROLLBAR_HOVER_ZONE, q as parseAlignContent, qa as writeDeclaredProperty, qi as contrastRatio, qn as syncEditorValue, qr as inputsEqual, qt as textMeasureRequest, r as Canvas2DRenderer, ra as shadowsEqual, ri as gradientsEqual, rn as DEFAULT_TEXT_COLOR, ro as UiEventType, rr as caretRectFor, rt as UiEditingController, s as PaintTarget, sa as boxShadowRadius, si as auto, sn as isPaintVisible, so as UiKeyboardEvent, sr as offsetAtPoint, st as UiWheelController, t as CanvasSurface, ta as spacingSteps, ti as MAX_GRADIENT_STOPS, tn as DEFAULT_FONT_SIZE, to as UiBeforeInputEvent, tr as layoutParagraph, tt as prepareInputSurface, u as replayPaint, ua as defaultShapes, ui as isFrLength, un as resolvePaintState, uo as UiPointerEvent, ur as selectionRects, ut as UiPointerController, v as drawOverlayShapes, va as flattenTextSpans, vi as borderRadius, vn as selectableTextOf, vo as DirtyFlags, vr as previousWordStart, vt as scrollRange, w as describeLength, wa as textContentOf, wi as uniformBorderRadius, wn as isNodeSelectable, wr as resolveProperty, wt as offsetAtPointIn, x as LayoutEngine, xa as spanAtOffset, xi as borderRadiusIsZero, xn as isNodeFocusable, xr as DEFAULT_LINE_HEIGHT_FACTOR, xt as scrollbarZoneAt, y as labelOrigin, ya as hiddenRangesOf, yi as borderRadiusCorners, yn as selectionRangeOf, yo as UiBinding, yr as wordRangeAt, yt as scrollbarThumb, z as isLayoutProtocol, za as createEnvironmentKey, zi as withContrast, zn as caretVisibleAt, zr as isUiRole, zt as buildFontString } from "./CanvasSurface-BZ-F5ASX.js";
1
+ import { $ as isImeKey, $a as hasVisualState, $i as densityFactors, $n as CharacterCountTextMeasurer, $r as parseTransform, $t as clearFontStacks, A as withOverrideSource, Aa as darkColors, Ai as UiInsetRegistry, An as pointerEventsOf, Ar as findPropertyDefinition, At as wordRangeIn, B as FlexDirection, Ba as rgba, Bi as themesEqual, Bn as EDITOR_PROP, Br as UI_SEMANTIC_STATES, Bt as applyCanvasTextStyle, C as SCROLLBAR_LINGER_MS, Ca as spanAtOffset, Ci as borderRadiusIsZero, Cn as isNodeFocusable, Cr as DEFAULT_LINE_HEIGHT_FACTOR, Ct as scrollsFromRight, D as formatExplanation, Da as textSpansEqual, Di as defineProperty, Dn as isNodeTabStop, Dr as resolvePropertyByName, Dt as paragraphGeometry, E as formatConstraints, Ea as textContentOf, Ei as uniformBorderRadius, En as isNodeSelectable, Er as resolveProperty, Et as offsetAtPointIn, F as clampSize, Fa as colorValuesEqual, Fi as bandOf, Fn as linkOf, Fr as propertyIsInherited, Ft as editingGroupOf, G as CrossAxisAlignment, Ga as DirtyNodeSet, Gi as noThemeExtensions, Gn as isMultiline, Gr as validateRole, Gt as layoutTextLines, H as placeGridItems, Ha as findEnvironmentKey, Hi as withDensity, Hn as editorFor, Hr as isUiSemanticState, Ht as createCanvasTextStyle, I as constraintsEqual, Ia as colorsEqual, Ii as containerBands, In as linkRunAtPointIn, Ir as propertyNarrowers, It as commandForKey, J as parseCrossAxisAlignment, Ja as resetOverrideWarnings, Ji as withThemeExtension, Jn as nextCaretToggle, Jr as validateSubgrid, Jt as spanOf, K as MainAxisAlignment, Ka as clearOverrideProperty, Ki as themeExtension, Kn as isReadOnly, Kr as validateStates, Kt as runCanvasStyleInto, L as tightenConstraints, La as normalizeColor, Li as unknownContainerSize, Ln as setLinkHover, Lr as propertyValuesEqualByName, Lt as detectEditingPlatform, M as contentOffset, Ma as UiBasicColors, Mi as noInsets, Mn as clearLinkHover, Mr as inheritedPropertyFlags, Mt as adjacentField, N as LayoutRecord, Na as colorToHex, Ni as observeViewportInsets, Nn as hasTextLinks, Nr as inheritedPropertyNames, Nt as comparePositions, O as formatNumber, Oa as textStylesEqual, Oi as propertyValuesEqual, On as isPressable, Or as resolveString, Ot as paragraphGeometryFrom, P as Constraints, Pa as colorToRgba, Pi as UiContainerSizeSource, Pn as linkHoverOf, Pr as propertyEffects, Pt as edgeField, Q as capturePointer, Qa as defaultVisualState, Qi as relativeLuminance, Qn as videoFrameSize, Qr as UiTransforms, Qt as bumpFontStack, R as MAX_MEASURES_PER_CHILD, Ra as parseColor, Ri as darkTheme, Rn as CARET_BLINK_MS, Rr as UiProperties, Rt as isPrintable, S as SCROLLBAR_FADE_MS, Sa as resolvedSpansOf, Si as borderRadiusEqual, Sn as setSelectionRange, Sr as UiGraph, St as scrollbarZoneAt, T as describeOverrides, Ta as spansDifferOnlyInPaint, Ti as normalizeBorderRadius, Tn as isNodeInert, Tr as resolveNumber, Tt as hasDrawnText, U as sizeGridTracks, Ua as UiEnvironment, Ui as defineThemeExtension, Un as editorOf, Ur as normalizeStates, Ut as drawText, V as parseFlexDirection, Va as createEnvironmentKey, Vi as withContrast, Vn as caretVisibleAt, Vr as isUiRole, Vt as buildFontString, W as AlignContent, Wa as UiNode, Wi as hasThemeExtension, Wn as isEditableNode, Wr as statesEqual, Wt as fillTextRects, X as CanvasPlatformSurface, Xa as writeOverrideProperty, Xi as highContrastColors, Xn as resolveColorValue, Xr as paintValuesEqual, Xt as textRunBackgrounds, Y as parseMainAxisAlignment, Ya as writeDeclaredProperty, Yi as contrastRatio, Yn as syncEditorValue, Yr as inputsEqual, Yt as textMeasureRequest, Z as UiPlatformAdapter, Za as UiVisualState, Zi as raiseContrast, Zn as isVideoSurface, Zr as pathValuesEqual, Zt as textRunDecorations, _ as LABEL_PADDING_X, _a as typographyEqual, _i as repeat, _n as TEXT_SELECTION_PROP, _o as noKeyModifiers, _r as nextGraphemeEnd, _t as scrollBounds, a as PaintPictureCache, aa as shadowsEqual, ai as gradientsEqual, an as DEFAULT_TEXT_COLOR, ao as UiEventType, ar as caretRectFor, at as UiGestureRecognizer, b as snapScroll, ba as flattenTextSpans, bi as borderRadius, bn as selectableTextOf, bo as DirtyFlags, br as previousWordStart, bt as scrollbarThumb, c as EMPTY_RECORDING, ca as boxShadowArraysEqual, ci as validateGradient, cn as createPaintState, co as UiInputEvent, cr as lineLimit, ct as isScrollContainer, d as tracePathData, da as boxShadowsEqual, di as isAutoLength, dn as normalizeVerticalAlign, do as UiPinchEvent, dr as offsetForVerticalMove, dt as UiFocusManager, ea as defaultSpacing, ei as transform, en as fontStackFor, eo as visualState, er as ParagraphTextMeasurer, et as pointerDeviceOf, f as ScaledImageCache, fa as defaultShapes, fi as isFrLength, fn as resolvePaintState, fo as UiPointerEvent, fr as selectionRects, ft as UiHitTester, g as paintsAfterChildren, ga as isTypographyRole, gi as percent, gn as setMatchRanges, go as UiWheelEvent, gr as lineStartAt, gt as SCROLLBAR_THICKNESS, h as hasDecorationPhase, ha as defaultTypography, hi as minmax, hn as matchRangesOf, ho as UiWheelDeltaMode, hr as lineEndAt, ht as SCROLLBAR_MIN_THUMB, i as traceRoundedRect, ia as defaultShadows, ii as gradientPaint, in as DEFAULT_FONT_WEIGHT, io as UiCompositionEvent, ir as proportionalFontMetrics, it as UiTouchScroller, j as accumulatedOffsetTo, ja as lightColors, ji as insetsEqual, jn as resolveCursor, jr as getPropertyNames, jt as textInputOf, k as labelNode, ka as colorsEqualPalette, ki as UiEnvironmentKeys, kn as isSubtreeInert, kr as closestPropertyName, kt as selectionRectsIn, l as PaintRecorder, la as boxShadowRadius, li as auto, ln as isPaintVisible, lo as UiKeyboardEvent, lr as offsetAtPoint, lt as UiKeyboardController, m as decorationRect, ma as shapesEqual, mi as isPercentLength, mn as clearMatchRanges, mo as UiTextChangeEvent, mr as graphemeBoundaries, mt as SCROLLBAR_INSET, n as createCanvasSurface, na as spacingEqual, ni as transformsEqual, nn as DEFAULT_FONT_FAMILY, no as MOUSE_POINTER, nr as ELLIPSIS, nt as touchActionFor, o as paintPictures, oa as BOX_SHADOW_BLUR_REACH, oi as linearGradient, on as colorToCss, oo as UiFocusEvent, or as lineIndexAtY, ot as UiPinchRecognizer, p as decorationColor, pa as isShapeName, pi as isMinMaxTrack, pn as TEXT_MATCHES_PROP, po as UiSelectionChangeEvent, pr as EditableTextModel, pt as SCROLLBAR_HOVER_ZONE, q as parseAlignContent, qa as overrideSources, qi as themeExtensionsEqual, qn as maskText, qr as UI_SUBGRID_AXES, qt as runFontString, r as Canvas2DRenderer, ra as spacingSteps, ri as MAX_GRADIENT_STOPS, rn as DEFAULT_FONT_SIZE, ro as UiBeforeInputEvent, rr as layoutParagraph, rt as UiEditingController, s as PaintTarget, sa as boxShadow, si as radialGradient, sn as computeObjectFitRect, so as UiGestureEvent, sr as lineIndexForOffset, st as UiWheelController, t as CanvasSurface, ta as scaleSpacing, ti as transformIsIdentity, tn as registerFontStack, to as visualStatesEqual, tr as spannedRunsFor, tt as prepareInputSurface, u as replayPaint, ua as boxShadowReach, ui as fr, un as normalizeTextAlign, uo as UiPasteEvent, ur as offsetAtX, ut as UiPointerController, v as drawOverlayShapes, va as defaultTextStyle, vi as resolveLength, vn as clearSelectionRange, vo as wheelDeltaYOf, vr as nextWordEnd, vt as scrollLeaderOf, w as describeLength, wa as spannedTextOf, wi as borderRadiusValuesEqual, wn as isNodeHitTestable, wr as resolveBoolean, wt as UiInputDispatcher, x as LayoutEngine, xa as hiddenRangesOf, xi as borderRadiusCorners, xn as selectionRangeOf, xo as UiBinding, xr as wordRangeAt, xt as scrollbarThumbs, y as labelOrigin, ya as editableSpansOf, yi as UiBorderRadiuses, yn as selectableTextNodes, yo as UiNodeType, yr as previousGraphemeStart, yt as scrollRange, z as isLayoutProtocol, za as rgb8, zi as lightTheme, zn as CARET_WIDTH, zr as UI_ROLES, zt as EditableLayout } from "./CanvasSurface-BTZ3A3MN.js";
2
2
  import { BehaviorSubject, EMPTY, Subject, combineLatest, distinctUntilChanged, isObservable as isObservable$1, map, of } from "rxjs";
3
3
  //#region src/animation/UiEasing.ts
4
4
  /** Progress equals time. What a spinner and a sweep want. */
@@ -174,6 +174,8 @@ var UiAnimation = class {
174
174
  /** When the first tick reached it, on the frame clock. */
175
175
  startedAt = 0;
176
176
  begun = false;
177
+ /** The frame time it was last advanced at, or null before its first; see `continueFrom`. */
178
+ lastAdvancedAt = null;
177
179
  subject = new Subject();
178
180
  /**
179
181
  * When this animation next *wants* a sample, on the ideal timeline.
@@ -260,10 +262,31 @@ var UiAnimation = class {
260
262
  get hasBegun() {
261
263
  return this.begun;
262
264
  }
265
+ /**
266
+ * Begins on the frame the animation it replaces last drew, rather than
267
+ * on the next one.
268
+ *
269
+ * For a retarget that carries the motion on: a spring aimed further
270
+ * along while it moves, as each notch of a wheel aims a scroll. Begun
271
+ * on its first frame, as `begin` would, the new one samples at zero
272
+ * elapsed time and draws where the old one stopped, so the motion
273
+ * stood still for a frame at every notch — a scroll that hitched ten
274
+ * times a second on a wheel spun steadily. Begun where the old one
275
+ * last advanced, its first frame moves by a frame's worth, at the
276
+ * velocity it was handed.
277
+ *
278
+ * Does nothing for an animation that has begun or has a delay, or
279
+ * when the one it replaces never drew.
280
+ */
281
+ continueFrom(previous) {
282
+ if (this.begun || this.delayMs > 0 || previous.lastAdvancedAt === null) return;
283
+ this.begin(previous.lastAdvancedAt);
284
+ }
263
285
  onBegin() {}
264
286
  advance(now) {
265
287
  if (this.finished) return;
266
288
  this.begin(now);
289
+ this.lastAdvancedAt = now;
267
290
  const elapsed = now - this.startedAt;
268
291
  if (elapsed < this.delayMs) return;
269
292
  const { value, done } = this.sample(now, elapsed - this.delayMs);
@@ -2310,6 +2333,7 @@ var UiGraphBuilder = class {
2310
2333
  }
2311
2334
  reconcile(parent, definitions) {
2312
2335
  const existing = this.collectChildren(parent);
2336
+ const staying = this.inOrder(parent, existing, definitions);
2313
2337
  const matched = /* @__PURE__ */ new Set();
2314
2338
  const unkeyed = {
2315
2339
  existing,
@@ -2361,7 +2385,7 @@ var UiGraphBuilder = class {
2361
2385
  }
2362
2386
  }
2363
2387
  this.reconciledFrom.set(node, definition);
2364
- if (this.moveBefore(parent, node, cursor)) changed = true;
2388
+ if (!staying.has(node) && this.moveBefore(parent, node, cursor)) changed = true;
2365
2389
  cursor = node.nextSibling;
2366
2390
  result.push(node);
2367
2391
  }
@@ -2533,6 +2557,41 @@ var UiGraphBuilder = class {
2533
2557
  return node;
2534
2558
  }
2535
2559
  /**
2560
+ * The keyed children that can stay where they are: the longest run of
2561
+ * them whose old order is already their new order.
2562
+ *
2563
+ * The pass places children by moving each one in front of a cursor,
2564
+ * which is fine for a child moved towards the front and ruinous for
2565
+ * one moved to the back: everything it used to precede is moved in
2566
+ * front of it, one at a time. A lazy sheet keeping its rows in slots
2567
+ * moves the top row to the bottom on every row of a scroll down, so a
2568
+ * scroll down moved every row on screen while a scroll up moved one,
2569
+ * and the wheel lagged one way and not the other. Leaving this run
2570
+ * alone moves exactly the children that are out of order, the way a
2571
+ * keyed list diff does it everywhere else.
2572
+ *
2573
+ * Keyed elements only, matched as `matchNode` would match them. Others
2574
+ * are placed as before.
2575
+ */
2576
+ inOrder(parent, existing, definitions) {
2577
+ if (definitions.length < 3) return NO_NODES;
2578
+ const at = /* @__PURE__ */ new Map();
2579
+ for (const [index, node] of existing.entries()) at.set(node, index);
2580
+ const nodes = [];
2581
+ const positions = [];
2582
+ for (const definition of definitions) {
2583
+ if (isObservable(definition) || isComponentLikeElement(definition)) continue;
2584
+ const key = this.elementKey(definition);
2585
+ if (key === void 0) continue;
2586
+ const candidate = this.graph.getNode(`${parent.id}:${key}`);
2587
+ const position = candidate === void 0 ? void 0 : at.get(candidate);
2588
+ if (candidate === void 0 || position === void 0 || candidate.type !== definition.type) continue;
2589
+ nodes.push(candidate);
2590
+ positions.push(position);
2591
+ }
2592
+ return new Set(longestIncreasing(positions).map((index) => nodes[index]));
2593
+ }
2594
+ /**
2536
2595
  * Positions a node immediately before the reference node.
2537
2596
  */
2538
2597
  moveBefore(parent, node, reference) {
@@ -2797,6 +2856,32 @@ var UiGraphBuilder = class {
2797
2856
  return `${parent.id}:component:${String(key)}`;
2798
2857
  }
2799
2858
  };
2859
+ const NO_NODES = /* @__PURE__ */ new Set();
2860
+ /**
2861
+ * The indices of a longest strictly increasing run in `values`, in order.
2862
+ *
2863
+ * Patience sorting: each value goes on the leftmost pile whose top is not
2864
+ * smaller, and a back-link to the pile before recovers the run.
2865
+ */
2866
+ function longestIncreasing(values) {
2867
+ const tops = [];
2868
+ const previous = new Array(values.length);
2869
+ for (let index = 0; index < values.length; index++) {
2870
+ const value = values[index];
2871
+ let low = 0;
2872
+ let high = tops.length;
2873
+ while (low < high) {
2874
+ const middle = low + high >> 1;
2875
+ if (values[tops[middle]] < value) low = middle + 1;
2876
+ else high = middle;
2877
+ }
2878
+ previous[index] = low > 0 ? tops[low - 1] : -1;
2879
+ tops[low] = index;
2880
+ }
2881
+ const run = [];
2882
+ for (let index = tops.length > 0 ? tops[tops.length - 1] : -1; index !== -1; index = previous[index]) run.push(index);
2883
+ return run.reverse();
2884
+ }
2800
2885
  //#endregion
2801
2886
  //#region src/composition/UiVirtualWindow.ts
2802
2887
  /** Marks an item wrapper with its index so the host can measure it. */
@@ -2848,6 +2933,14 @@ var UiVirtualWindow = class {
2848
2933
  leadExtent = -1;
2849
2934
  trailExtent = -1;
2850
2935
  measured = /* @__PURE__ */ new Map();
2936
+ /** An item a caller scrolled to before it was measured; see `holdInView`. */
2937
+ held = null;
2938
+ /**
2939
+ * What covers the top of the viewport for the held item: a sticky
2940
+ * header the caller measured itself, which the host's own `lead` may
2941
+ * not count.
2942
+ */
2943
+ heldLead = 0;
2851
2944
  /** Measured extent minus the estimate, per index; zero for one not measured. */
2852
2945
  corrections;
2853
2946
  /** Wrappers of the items currently mounted, so a row that stays is not re-rendered. */
@@ -2945,12 +3038,63 @@ var UiVirtualWindow = class {
2945
3038
  extentOf(index) {
2946
3039
  return this.measured.get(index) ?? this.estimate;
2947
3040
  }
3041
+ /** Whether an item's extent is its own, measured, rather than the estimate. */
3042
+ isMeasured(index) {
3043
+ return this.measured.has(index);
3044
+ }
3045
+ /**
3046
+ * Keeps an item in view until it has been measured.
3047
+ *
3048
+ * A caller that scrolls to an item that is not mounted places it by
3049
+ * `offsetOf`, which goes by the estimate for every unmeasured item on
3050
+ * the way. When the real items are taller or shorter the jump lands
3051
+ * off by the difference, and the item it was for can end up outside
3052
+ * the viewport. Held, the item is brought back into view by the
3053
+ * correction the next update returns, once its own extent and those
3054
+ * around it are known, and then let go. `lead` is the extent of a
3055
+ * sticky header over the top of the viewport, which the item has to
3056
+ * clear.
3057
+ */
3058
+ holdInView(index, lead = 0) {
3059
+ this.held = index >= 0 && index < this.count && !this.measured.has(index) ? index : null;
3060
+ this.heldLead = lead;
3061
+ }
3062
+ /**
3063
+ * Whether an item is held in view and not yet measured, so the host
3064
+ * has to run another frame to hand this the measurements. A jump that
3065
+ * mounts new items is otherwise the last frame until something else
3066
+ * happens, and the item it was for stays where the estimate put it.
3067
+ */
3068
+ get holding() {
3069
+ return this.held !== null;
3070
+ }
2948
3071
  /** The item whose span contains `offset`; clamped to the list. */
2949
3072
  indexAt(offset) {
2950
3073
  if (this.count === 0) return 0;
2951
3074
  return Math.min(this.count - 1, this.corrections.lastAtOrBefore(offset, this.estimate));
2952
3075
  }
2953
3076
  /**
3077
+ * The correction that brings the held item inside the viewport, below
3078
+ * the header, from where anchoring alone would leave the scroll; the
3079
+ * held item is let go once it has been measured, when its place is
3080
+ * exact.
3081
+ */
3082
+ keepHeldInView(viewport, header, anchored) {
3083
+ const held = this.held;
3084
+ if (held >= this.count) {
3085
+ this.held = null;
3086
+ return anchored;
3087
+ }
3088
+ const top = header + this.offsetOf(held);
3089
+ const bottom = top + this.extentOf(held);
3090
+ const at = viewport.scroll + anchored;
3091
+ let adjust = anchored;
3092
+ if (top < at + header) adjust = top - header - viewport.scroll;
3093
+ else if (bottom > at + viewport.extent) adjust = bottom - viewport.extent - viewport.scroll;
3094
+ if (this.measured.has(held)) this.held = null;
3095
+ return adjust;
3096
+ }
3097
+ /**
2954
3098
  * One step, run by the host each frame before layout: take the
2955
3099
  * measurements of mounted items, keep the first mounted item anchored,
2956
3100
  * recompute the window for the viewport, and emit children when the
@@ -2960,9 +3104,10 @@ var UiVirtualWindow = class {
2960
3104
  this.viewport = viewport;
2961
3105
  const anchorBefore = this.last >= this.first ? this.offsetOf(this.first) : 0;
2962
3106
  for (const measure of measures) this.record(measure.index, measure.extent);
2963
- const scrollAdjust = (this.last >= this.first ? this.offsetOf(this.first) : 0) - anchorBefore;
3107
+ let scrollAdjust = (this.last >= this.first ? this.offsetOf(this.first) : 0) - anchorBefore;
2964
3108
  const total = this.totalExtent();
2965
3109
  const header = viewport.lead ?? 0;
3110
+ if (this.held !== null) scrollAdjust = this.keepHeldInView(viewport, Math.max(header, this.heldLead), scrollAdjust);
2966
3111
  this.checkViewport(viewport.extent, total + header);
2967
3112
  const scrolled = clamp$2(viewport.scroll + scrollAdjust, 0, Math.max(0, total + header - viewport.extent));
2968
3113
  const scroll = Math.max(0, scrolled - header);
@@ -3071,7 +3216,8 @@ var UiVirtualWindow = class {
3071
3216
  columnGap: this.grid.columnGap,
3072
3217
  rowGap: 0,
3073
3218
  autoFlow: "row",
3074
- width: percent(100)
3219
+ width: percent(100),
3220
+ minWidth: tracksMinimum(this.grid.columns, this.grid.columnGap ?? 0)
3075
3221
  }, ...children)];
3076
3222
  }
3077
3223
  spacer(key, extent) {
@@ -3115,6 +3261,24 @@ var UiVirtualWindow = class {
3115
3261
  }
3116
3262
  };
3117
3263
  /**
3264
+ * The width a lazy grid's tracks need before any of them is given
3265
+ * free space: every fixed track, the floor of every `minmax`, and the
3266
+ * gaps between them.
3267
+ *
3268
+ * A track sized by its content (`auto`, or the minimum an `fr` track
3269
+ * takes from its cells) adds nothing here, because nothing is laid out
3270
+ * yet to ask; a percentage adds nothing either, being a share of the
3271
+ * very width this answers. So a table of fixed widths scrolls sideways
3272
+ * exactly as far as it is wide, and one of `fr` tracks still fits its
3273
+ * box, as it did.
3274
+ */
3275
+ function tracksMinimum(columns, gap) {
3276
+ let total = gap * Math.max(0, columns.length - 1);
3277
+ for (const track of columns) if (typeof track === "number") total += track;
3278
+ else if (track.unit === "minmax" && typeof track.min === "number") total += track.min;
3279
+ return total;
3280
+ }
3281
+ /**
3118
3282
  * Copies the window's own props onto a row of a lazy grid.
3119
3283
  *
3120
3284
  * The row must be a `Grid` with `subgrid: 'columns'`, because that is
@@ -3728,11 +3892,28 @@ var UiVirtualSheet = class {
3728
3892
  * fill handle, a selection being stretched — is usually heading for
3729
3893
  * one that has not been mounted, so there is no node to hit-test and
3730
3894
  * arithmetic is the only answer available.
3895
+ *
3896
+ * The point is measured from the container's top left, as a pointer
3897
+ * event's local position is, in either direction. A sheet that starts
3898
+ * at its right edge has its columns measured from there, so the point
3899
+ * is turned around first.
3900
+ *
3901
+ * A frozen pane does not scroll: it is held at the start edge by
3902
+ * sticky, so a point over it is over a frozen row or column however
3903
+ * far the sheet has scrolled, and is measured without the scroll.
3904
+ * The header and the gutter are left out of that on purpose. They
3905
+ * hold no cells, and a drag that strays onto them is heading for the
3906
+ * cells scrolled out of view behind them, which measuring through
3907
+ * the scroll finds.
3731
3908
  */
3732
3909
  cellAt(x, y) {
3910
+ const { scrollX, scrollY, width, fromRight } = this.viewport;
3911
+ const along = fromRight === true ? width - x : x;
3912
+ const overColumns = along >= this.gutterWidth && along < this.gutterWidth + this.frozenWidth;
3913
+ const overRows = y >= this.headerHeight && y < this.headerHeight + this.rowOffsetOf(this.frozenRows);
3733
3914
  return {
3734
- row: this.rowAt(this.viewport.scrollY + y),
3735
- column: this.columnAt(this.viewport.scrollX + x)
3915
+ row: this.rowAt(overRows ? y : scrollY + y),
3916
+ column: this.columnAt(overColumns ? along : scrollX + along)
3736
3917
  };
3737
3918
  }
3738
3919
  /**
@@ -15667,6 +15848,10 @@ function describe(node, parent, disabled, nextIndex) {
15667
15848
  posInSet: node.properties.get("posInSet"),
15668
15849
  setSize: node.properties.get("setSize"),
15669
15850
  level: node.properties.get("level"),
15851
+ rowIndex: node.properties.get("rowIndex"),
15852
+ columnIndex: node.properties.get("columnIndex"),
15853
+ rowCount: node.properties.get("rowCount"),
15854
+ columnCount: node.properties.get("columnCount"),
15670
15855
  activeDescendant: node.properties.get("activeDescendant")?.id,
15671
15856
  controls: node.properties.get("controls")?.id,
15672
15857
  autocomplete: node.properties.get("autocomplete"),
@@ -15929,6 +16114,6 @@ function recordsEqual(a, b) {
15929
16114
  return true;
15930
16115
  }
15931
16116
  //#endregion
15932
- export { AlignContent, AnimationDriver, BOX_SHADOW_BLUR_REACH, BUTTON_INTERACTION, Box, Button, CARET_BLINK_MS, CARET_WIDTH, CLIP_STRIDE_BYTES, CLIP_STRIDE_FLOATS, Canvas2DRenderer, CanvasPlatformSurface, CanvasSurface, CanvasTextMeasurer, CharacterCountTextMeasurer, Column, CommandKind, Constraints, CrossAxisAlignment, DEFAULT_BLOCK_SIZE, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, DEFAULT_FONT_WEIGHT, DEFAULT_LINE_HEIGHT_FACTOR, DEFAULT_TEXT_COLOR, DefaultImageResolver, DefaultVideoResolver, DirtyFlags, DirtyNodeSet, EDITOR_PROP, ELLIPSIS, EMPTY_RECORDING, EXTERNAL_FILES, EditableLayout, EditableText, EditableTextModel, EnvironmentNotifier, FlexDirection, FocusNotifier, GLYPH_SUBPIXEL_PHASES, GlyphShaper, Grid, INSPECTOR_HEAT_MS, INSTANCE_STRIDE_BYTES, INSTANCE_STRIDE_FLOATS, IconRasterizer, LABEL_PADDING_X, LayoutEngine, LayoutInspector, LayoutNotifier, LayoutRecord, LazyColumn, LazyGrid, LazyRow, LazySheet, MARK_PREFIX, MAX_GRADIENT_STOPS, MAX_MEASURES_PER_CHILD, MOTION_CHANNELS, MOTION_REST, MOUSE_POINTER, MainAxisAlignment, Mp3Frames, NO_CLIP_INDEX, NodeTransitions, Paint, PaintPictureCache, PaintRecorder, PaintTarget, ParagraphTextMeasurer, PrimitiveKind, Responsive, Row, SCROLLBAR_FADE_MS, SCROLLBAR_HOVER_ZONE, SCROLLBAR_INSET, SCROLLBAR_LINGER_MS, SCROLLBAR_MIN_THUMB, SCROLLBAR_THICKNESS, ScrollView, Stack, TEXTURED_STRIDE_BYTES, TEXTURED_STRIDE_FLOATS, TEXT_MATCHES_PROP, TEXT_RUN_ID_SEPARATOR, TEXT_SELECTION_PROP, Text, UI_ROLES, UI_SEMANTIC_STATES, UI_SUBGRID_AXES, UiAnimation, UiAnimationFrameClock, UiBasicColors, UiBeforeInputEvent, UiBinding, UiBorderRadiuses, UiChildrenBinding, UiCompositionEvent, UiContainerSizeSource, UiDragSession, UiEditingController, UiEnvironment, UiEnvironmentKeys, UiEventBinding, UiEventType, UiFindController, UiFocusEvent, UiFocusManager, UiFrame, UiGestureEvent, UiGestureRecognizer, UiGraph, UiGraphBuilder, UiHitTester, UiHostFrameClock, UiInputDispatcher, UiInputEvent, UiInsetRegistry, UiKeyboardController, UiKeyboardEvent, UiManualFrameClock, UiModifierSet, UiNode, UiNodeType, UiPasteEvent, UiPinchEvent, UiPinchRecognizer, UiPlatformAdapter, UiPointerController, UiPointerEvent, UiProperties, UiScheduler, UiSelectionChangeEvent, UiSelectionController, UiSharedElements, UiShortcutRegistry, UiSpring, UiTextChangeEvent, UiTimerFrameClock, UiTouchScroller, UiTransforms, UiTween, UiUnknownModifierPropertyError, UiVirtualSheet, UiVirtualWindow, UiVisualState, UiWheelController, UiWheelDeltaMode, UiWheelEvent, VIRTUAL_INDEX_PROP, VIRTUAL_LEAD_PROP, VIRTUAL_SHEET_PROP, VIRTUAL_WINDOW_PROP, WebGPUError, WebGPUGlyphAtlas, WebGPUGlyphPages, WebGPURenderer, WebGPUSurface, WebGPUTextureCache, accumulatedOffsetTo, adjacentField, animateLayout, applyCanvasTextStyle, assertModifierList, assertTransitionMap, auto, autoFocus, bandOf, borderRadius, borderRadiusCorners, borderRadiusEqual, borderRadiusIsZero, borderRadiusValuesEqual, borderShapes, borders, boxShadow, boxShadowArraysEqual, boxShadowRadius, boxShadowReach, boxShadowsEqual, breakpoint, bufferSource, buildFontString, buildRenderList, buildSemanticsSubtree, buildSemanticsTree, bumpFontStack, bundle, canDecodeVideo, capturePointer, caretRectFor, caretVisibleAt, clampSize, clearFontStacks, clearLinkHover, clearMatchRanges, clearOverrideProperty, clearSelectionRange, clickOutside, closestPropertyName, colorToCss, colorToHex, colorToRgba, colorValuesEqual, colorsEqual, colorsEqualPalette, commandForKey, comparePositions, computeObjectFitRect, constraintsEqual, containerBands, contentOffset, contextMenu, contrastRatio, createCanvasSurface, createCanvasTextStyle, createElement, createEnvironmentKey, createPaintState, createTextCache, createTween, createWebGPUSurface, cubicBezier, cueAt, darkColors, darkTheme, decorated, decorationColor, decorationRect, defaultMotion, defaultShadows, defaultShapes, defaultSpacing, defaultTextStyle, defaultTypography, defaultVisualState, defineModifier, defineProperty, defineThemeExtension, demuxMp4Audio, demuxMp4Video, densityFactors, describeLength, describeOverrides, describeShortcut, detectEditingPlatform, diffSemantics, dragSessionFor, dragSource, draggable, drawOverlayShapes, drawText, dropIndexShifts, dropTarget, easings, edgeField, editableSpansOf, editingGroupOf, editorFor, editorOf, fade, fillTextRects, findEnvironmentKey, findMatchesIn, findPropertyDefinition, flattenTextSpans, focusRing, fontStackFor, formatConstraints, formatExplanation, formatShortcut, fr, getPropertyNames, glyphCount, gradientPaint, gradientsEqual, graphemeBoundaries, hasDecorationPhase, hasDrawnText, hasTextLinks, hasThemeExtension, hasVisualState, hiddenRangesOf, highContrastColors, hoverable, iconKey, iconSource, imageSource, inheritedPropertyFlags, inheritedPropertyNames, initializeWebGPU, inputsEqual, insetPadding, insetsEqual, interactive, interpolateColor, interpolateNumber, interpolateTransform, interpolatorFor, isAutoLength, isComponentLikeElement, isEditableNode, isFrLength, isImeKey, isLayoutProtocol, isMinMaxTrack, isMotionRest, isMultiline, isNodeFocusable, isNodeHitTestable, isNodeInert, isNodeSelectable, isNodeTabStop, isObservable, isPaintVisible, isPercentLength, isPrintable, isReadOnly, isScrollContainer, isShapeName, isSubtreeInert, isTypographyRole, isUiChild, isUiElement, isUiModifier, isUiRole, isUiSemanticState, isVideoSurface, isWebGPUAvailable, labelNode, labelOrigin, layoutParagraph, layoutTextLines, lazySource, lightColors, lightTheme, lineEndAt, lineIndexAtY, lineIndexForOffset, lineLimit, lineStartAt, linear, linearGradient, linkHoverOf, linkOf, linkRunAtPointIn, markInstant, markNow, matchRangesOf, measure, measureFlow, measureSpan, minmax, motion, nextCaretToggle, nextGraphemeEnd, nextWordEnd, noInsets, noKeyModifiers, noModifiers, noThemeExtensions, normalizeBorderRadius, normalizeColor, normalizeStates, normalizeTextAlign, normalizeTransition, normalizeVerticalAlign, observeViewportInsets, offsetAtPoint, offsetAtPointIn, offsetAtX, offsetForVerticalMove, overrideSources, paintPictures, paintValuesEqual, paintsAfterChildren, paragraphGeometry, paragraphGeometryFrom, parseAlignContent, parseColor, parseCrossAxisAlignment, parseFlexDirection, parseMainAxisAlignment, parseShortcut, parseTransform, parseWebVtt, pathValuesEqual, percent, performanceMarksEnabled, pinchable, placeGridItems, pointerDeviceOf, pointerEventsOf, pop, prepareInputSurface, pressable, previousGraphemeStart, previousWordStart, propertyEffects, propertyIsInherited, propertyNarrowers, propertyValuesEqual, propertyValuesEqualByName, proportionalFontMetrics, provideEnvironment, publishInset, radialGradient, raiseContrast, rangeSource, readMp3Header, recordsEqual, registerFontStack, relativeLuminance, reorderable, repeat, replayPaint, resetOverrideWarnings, resetTransitionWarnings, resolveBoolean, resolveCursor, resolveLength, resolveMotionState, resolveNumber, resolvePaintState, resolveProperty, resolvePropertyByName, resolveString, resolvedSpansOf, rewalkSemantics, rgb8, rgba, rotateFrom, runCanvasStyleInto, runFontString, sameArgs, scaleFrom, scaleSpacing, scrollLeaderOf, scrollPosition, scrollRange, scrollbarThumb, scrollbarThumbs, scrollbarZoneAt, selectableTextNodes, selectableTextOf, selectionRangeOf, selectionRects, selectionRectsIn, semanticsInertAbove, semanticsMemory, setLinkHover, setMatchRanges, setPerformanceMarks, setSelectionRange, shadowsEqual, shapesEqual, sharedElement, sheetSource, shortcut, shortcutKeyCaps, shortcuts, sizeContainer, sizeGridTracks, slideDown, slideFrom, slideUp, spacingEqual, spacingSteps, spanAtOffset, spannedRunsFor, spannedTextOf, spansDifferOnlyInPaint, splitMp3Frames, spring, statesEqual, steps, syncEditorValue, textContentOf, textInputOf, textRunBackgrounds, textRunDecorations, textRunOfRecordId, textRuns, textSpansEqual, textStylesEqual, themeExtension, themeExtensionsEqual, themeTokens, themesEqual, tightenConstraints, touchActionFor, tracePathData, traceRoundedRect, transform, transformIsIdentity, transformsEqual, tween, typographyEqual, uniformBorderRadius, unknownContainerSize, validateGradient, validateRole, validateStates, validateSubgrid, videoFrameSize, videoSource, visualState, visualStatesEqual, wheelDeltaYOf, withContrast, withDensity, withOverrideSource, withThemeExtension, wordRangeAt, wordRangeIn, writeDeclaredProperty, writeOverrideProperty };
16117
+ export { AlignContent, AnimationDriver, BOX_SHADOW_BLUR_REACH, BUTTON_INTERACTION, Box, Button, CARET_BLINK_MS, CARET_WIDTH, CLIP_STRIDE_BYTES, CLIP_STRIDE_FLOATS, Canvas2DRenderer, CanvasPlatformSurface, CanvasSurface, CanvasTextMeasurer, CharacterCountTextMeasurer, Column, CommandKind, Constraints, CrossAxisAlignment, DEFAULT_BLOCK_SIZE, DEFAULT_FONT_FAMILY, DEFAULT_FONT_SIZE, DEFAULT_FONT_WEIGHT, DEFAULT_LINE_HEIGHT_FACTOR, DEFAULT_TEXT_COLOR, DefaultImageResolver, DefaultVideoResolver, DirtyFlags, DirtyNodeSet, EDITOR_PROP, ELLIPSIS, EMPTY_RECORDING, EXTERNAL_FILES, EditableLayout, EditableText, EditableTextModel, EnvironmentNotifier, FlexDirection, FocusNotifier, GLYPH_SUBPIXEL_PHASES, GlyphShaper, Grid, INSPECTOR_HEAT_MS, INSTANCE_STRIDE_BYTES, INSTANCE_STRIDE_FLOATS, IconRasterizer, LABEL_PADDING_X, LayoutEngine, LayoutInspector, LayoutNotifier, LayoutRecord, LazyColumn, LazyGrid, LazyRow, LazySheet, MARK_PREFIX, MAX_GRADIENT_STOPS, MAX_MEASURES_PER_CHILD, MOTION_CHANNELS, MOTION_REST, MOUSE_POINTER, MainAxisAlignment, Mp3Frames, NO_CLIP_INDEX, NodeTransitions, Paint, PaintPictureCache, PaintRecorder, PaintTarget, ParagraphTextMeasurer, PrimitiveKind, Responsive, Row, SCROLLBAR_FADE_MS, SCROLLBAR_HOVER_ZONE, SCROLLBAR_INSET, SCROLLBAR_LINGER_MS, SCROLLBAR_MIN_THUMB, SCROLLBAR_THICKNESS, ScrollView, Stack, TEXTURED_STRIDE_BYTES, TEXTURED_STRIDE_FLOATS, TEXT_MATCHES_PROP, TEXT_RUN_ID_SEPARATOR, TEXT_SELECTION_PROP, Text, UI_ROLES, UI_SEMANTIC_STATES, UI_SUBGRID_AXES, UiAnimation, UiAnimationFrameClock, UiBasicColors, UiBeforeInputEvent, UiBinding, UiBorderRadiuses, UiChildrenBinding, UiCompositionEvent, UiContainerSizeSource, UiDragSession, UiEditingController, UiEnvironment, UiEnvironmentKeys, UiEventBinding, UiEventType, UiFindController, UiFocusEvent, UiFocusManager, UiFrame, UiGestureEvent, UiGestureRecognizer, UiGraph, UiGraphBuilder, UiHitTester, UiHostFrameClock, UiInputDispatcher, UiInputEvent, UiInsetRegistry, UiKeyboardController, UiKeyboardEvent, UiManualFrameClock, UiModifierSet, UiNode, UiNodeType, UiPasteEvent, UiPinchEvent, UiPinchRecognizer, UiPlatformAdapter, UiPointerController, UiPointerEvent, UiProperties, UiScheduler, UiSelectionChangeEvent, UiSelectionController, UiSharedElements, UiShortcutRegistry, UiSpring, UiTextChangeEvent, UiTimerFrameClock, UiTouchScroller, UiTransforms, UiTween, UiUnknownModifierPropertyError, UiVirtualSheet, UiVirtualWindow, UiVisualState, UiWheelController, UiWheelDeltaMode, UiWheelEvent, VIRTUAL_INDEX_PROP, VIRTUAL_LEAD_PROP, VIRTUAL_SHEET_PROP, VIRTUAL_WINDOW_PROP, WebGPUError, WebGPUGlyphAtlas, WebGPUGlyphPages, WebGPURenderer, WebGPUSurface, WebGPUTextureCache, accumulatedOffsetTo, adjacentField, animateLayout, applyCanvasTextStyle, assertModifierList, assertTransitionMap, auto, autoFocus, bandOf, borderRadius, borderRadiusCorners, borderRadiusEqual, borderRadiusIsZero, borderRadiusValuesEqual, borderShapes, borders, boxShadow, boxShadowArraysEqual, boxShadowRadius, boxShadowReach, boxShadowsEqual, breakpoint, bufferSource, buildFontString, buildRenderList, buildSemanticsSubtree, buildSemanticsTree, bumpFontStack, bundle, canDecodeVideo, capturePointer, caretRectFor, caretVisibleAt, clampSize, clearFontStacks, clearLinkHover, clearMatchRanges, clearOverrideProperty, clearSelectionRange, clickOutside, closestPropertyName, colorToCss, colorToHex, colorToRgba, colorValuesEqual, colorsEqual, colorsEqualPalette, commandForKey, comparePositions, computeObjectFitRect, constraintsEqual, containerBands, contentOffset, contextMenu, contrastRatio, createCanvasSurface, createCanvasTextStyle, createElement, createEnvironmentKey, createPaintState, createTextCache, createTween, createWebGPUSurface, cubicBezier, cueAt, darkColors, darkTheme, decorated, decorationColor, decorationRect, defaultMotion, defaultShadows, defaultShapes, defaultSpacing, defaultTextStyle, defaultTypography, defaultVisualState, defineModifier, defineProperty, defineThemeExtension, demuxMp4Audio, demuxMp4Video, densityFactors, describeLength, describeOverrides, describeShortcut, detectEditingPlatform, diffSemantics, dragSessionFor, dragSource, draggable, drawOverlayShapes, drawText, dropIndexShifts, dropTarget, easings, edgeField, editableSpansOf, editingGroupOf, editorFor, editorOf, fade, fillTextRects, findEnvironmentKey, findMatchesIn, findPropertyDefinition, flattenTextSpans, focusRing, fontStackFor, formatConstraints, formatExplanation, formatShortcut, fr, getPropertyNames, glyphCount, gradientPaint, gradientsEqual, graphemeBoundaries, hasDecorationPhase, hasDrawnText, hasTextLinks, hasThemeExtension, hasVisualState, hiddenRangesOf, highContrastColors, hoverable, iconKey, iconSource, imageSource, inheritedPropertyFlags, inheritedPropertyNames, initializeWebGPU, inputsEqual, insetPadding, insetsEqual, interactive, interpolateColor, interpolateNumber, interpolateTransform, interpolatorFor, isAutoLength, isComponentLikeElement, isEditableNode, isFrLength, isImeKey, isLayoutProtocol, isMinMaxTrack, isMotionRest, isMultiline, isNodeFocusable, isNodeHitTestable, isNodeInert, isNodeSelectable, isNodeTabStop, isObservable, isPaintVisible, isPercentLength, isPrintable, isReadOnly, isScrollContainer, isShapeName, isSubtreeInert, isTypographyRole, isUiChild, isUiElement, isUiModifier, isUiRole, isUiSemanticState, isVideoSurface, isWebGPUAvailable, labelNode, labelOrigin, layoutParagraph, layoutTextLines, lazySource, lightColors, lightTheme, lineEndAt, lineIndexAtY, lineIndexForOffset, lineLimit, lineStartAt, linear, linearGradient, linkHoverOf, linkOf, linkRunAtPointIn, markInstant, markNow, matchRangesOf, measure, measureFlow, measureSpan, minmax, motion, nextCaretToggle, nextGraphemeEnd, nextWordEnd, noInsets, noKeyModifiers, noModifiers, noThemeExtensions, normalizeBorderRadius, normalizeColor, normalizeStates, normalizeTextAlign, normalizeTransition, normalizeVerticalAlign, observeViewportInsets, offsetAtPoint, offsetAtPointIn, offsetAtX, offsetForVerticalMove, overrideSources, paintPictures, paintValuesEqual, paintsAfterChildren, paragraphGeometry, paragraphGeometryFrom, parseAlignContent, parseColor, parseCrossAxisAlignment, parseFlexDirection, parseMainAxisAlignment, parseShortcut, parseTransform, parseWebVtt, pathValuesEqual, percent, performanceMarksEnabled, pinchable, placeGridItems, pointerDeviceOf, pointerEventsOf, pop, prepareInputSurface, pressable, previousGraphemeStart, previousWordStart, propertyEffects, propertyIsInherited, propertyNarrowers, propertyValuesEqual, propertyValuesEqualByName, proportionalFontMetrics, provideEnvironment, publishInset, radialGradient, raiseContrast, rangeSource, readMp3Header, recordsEqual, registerFontStack, relativeLuminance, reorderable, repeat, replayPaint, resetOverrideWarnings, resetTransitionWarnings, resolveBoolean, resolveCursor, resolveLength, resolveMotionState, resolveNumber, resolvePaintState, resolveProperty, resolvePropertyByName, resolveString, resolvedSpansOf, rewalkSemantics, rgb8, rgba, rotateFrom, runCanvasStyleInto, runFontString, sameArgs, scaleFrom, scaleSpacing, scrollBounds, scrollLeaderOf, scrollPosition, scrollRange, scrollbarThumb, scrollbarThumbs, scrollbarZoneAt, scrollsFromRight, selectableTextNodes, selectableTextOf, selectionRangeOf, selectionRects, selectionRectsIn, semanticsInertAbove, semanticsMemory, setLinkHover, setMatchRanges, setPerformanceMarks, setSelectionRange, shadowsEqual, shapesEqual, sharedElement, sheetSource, shortcut, shortcutKeyCaps, shortcuts, sizeContainer, sizeGridTracks, slideDown, slideFrom, slideUp, spacingEqual, spacingSteps, spanAtOffset, spannedRunsFor, spannedTextOf, spansDifferOnlyInPaint, splitMp3Frames, spring, statesEqual, steps, syncEditorValue, textContentOf, textInputOf, textRunBackgrounds, textRunDecorations, textRunOfRecordId, textRuns, textSpansEqual, textStylesEqual, themeExtension, themeExtensionsEqual, themeTokens, themesEqual, tightenConstraints, touchActionFor, tracePathData, traceRoundedRect, transform, transformIsIdentity, transformsEqual, tween, typographyEqual, uniformBorderRadius, unknownContainerSize, validateGradient, validateRole, validateStates, validateSubgrid, videoFrameSize, videoSource, visualState, visualStatesEqual, wheelDeltaYOf, withContrast, withDensity, withOverrideSource, withThemeExtension, wordRangeAt, wordRangeIn, writeDeclaredProperty, writeOverrideProperty };
15933
16118
 
15934
16119
  //# sourceMappingURL=index.js.map