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/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # gesso-core
2
2
 
3
+ ## 0.6.27
4
+
5
+ ### Patch Changes
6
+
7
+ - ff9dd85: A grid can say where its rows and cells sit in the whole of its data, not only among the ones that are mounted. Four new semantics properties carry it: `rowCount` and `columnCount` on the `grid`, `treegrid` or `table` (use -1 when the count is not known), `rowIndex` on each `row` and `columnIndex` on each cell, all counting from 1. They are carried into the semantics record under the same names, and the accessibility mirror writes them as `aria-rowcount`, `aria-colcount`, `aria-rowindex` and `aria-colindex`. A virtualized grid used to leave a screen reader counting the cells in view, so after scrolling sideways the first visible cell was announced as column 1 whatever column it was really in.
8
+ - bdc4780: A key release the application claims cancels the browser's default, as a key press already did. A lone Alt opens a Windows browser's menu when it is released, so a `MenuBar` that takes focus on Alt also had the browser's own menu open over it. On the main thread the platform adapter now passes a claimed release on to the browser event; in a render worker, `interceptKey` is asked about releases as well as presses.
9
+ - baf8dec: Reconciling keyed children moves only the ones that are out of order. Children were placed by moving each in front of a cursor, so moving one child to the back moved every child after it instead; a `LazySheet` with `recycleRows` does that on every row of a scroll down, which made scrolling down cost more than scrolling up. The longest run of children already in order now stays where it is.
10
+ - cbac578: A `DataTable`, or any `LazyGrid`, whose columns are wider than it is scrolls sideways to reach them. The grid that holds the header and the rows was exactly as wide as the list, however far its tracks ran past it, and a scroll container measures its content by its children's boxes, so the columns past the edge were cut off with nothing to scroll to. The grid is now at least as wide as its fixed tracks, the floors of its `minmax` tracks and the gaps between them, so a sideways wheel or swipe moves the header and the rows together until the last column is in view. A table of `fr`, `auto` or `percent` columns still fits its box. Under right-to-left the overflowing columns are still out of reach, because scroll containers do not yet scroll toward their start side.
11
+ - bdc4780: Scrolling a `DataTable`, `LazyList` or `Tree` to a row that was never mounted lands the row in view even when the rows are taller or shorter than the estimate. The jump goes by the estimate for every row on the way, and when that was short of the real height the row it was for ended up below the bottom edge, and stayed there: nothing ran another frame to measure it. A `UiVirtualWindow` can now hold an item in view (`holdInView`) until it has been measured, the runtime runs the frame that measures it, and the window folds the correction into the scroll adjustment it already returns.
12
+ - ff9dd85: A text that names a type role keeps the reading direction an ancestor set with `textDirection`. Every component's labels name a role now, and a role was looked up whole, direction included, so inside a box set to read right to left a component mirrored its layout while its labels went back to reading left to right. A role is a size and a weight, not a direction, as `font` leaves `direction` alone in CSS; it still brings its own direction where nothing above set one, so a theme whose roles all read right to left mirrors a page from its root as before. The direction travels as a new environment key, `UiEnvironmentKeys.textDirection`.
13
+ - 69e5d47: A scroll container that reads right to left can reach everything in it. Its content starts at the right edge and overflows to the left, but its horizontal offset was clamped to `[0, overflow]`, toward the right, so a wide right-to-left table, row or sheet showed its first columns and nothing a wheel, a swipe or a dragged thumb could do reached the rest. Such a container now follows CSS: `scrollX` runs from minus the overflow up to `0`, where `0` shows the start edge and is where an unscrolled container sits. Its content extent is measured from the right edge, the horizontal thumb starts at the right of its track, revealing a row scrolls left to it, a sticky column at `right: 0` holds there, and a `LazyRow` or `LazySheet` mounts what the offset shows. `scrollBounds` and `scrollsFromRight` answer the range and the direction for a record. Text fields are unchanged: a field scrolls its own text by the caret, from `0` up.
14
+ - bdc4780: `UiVirtualSheet.cellAt` finds the right cell under right-to-left and over a frozen pane. A `LazySheet` that reads right to left starts at its right edge, with column 0 the rightmost, but `cellAt` measured a point from the left, so it answered with a column on the far side of the viewport. The window's viewport now says whether the sheet starts at its right edge (`SheetViewport.fromRight`), and `cellAt` turns the point around when it does; the point is still given in the container's own coordinates, measured from its top left, as a pointer event's local position is. A point over a frozen row or column now finds that row or column however far the sheet has scrolled, in either direction, rather than the cell scrolled out of sight behind it.
15
+ - 3daa932: A mouse wheel glides whatever legacy delta its notches report. A wheel step was animated only when its `wheelDeltaY` was a multiple of 120, and drivers, scroll settings and display scaling all change that number: a notch that failed the test landed in a single frame, as a jump. A large step (50 pixels or more) that starts a burst is now taken for a notch on its size, and the burst stays one while its steps stay large. A trackpad gesture starts with small steps, so it is still caught as precise and paced as before, and a dispatch with no legacy delta still lands at once.
16
+
17
+ ## 0.6.26
18
+
19
+ ### Patch Changes
20
+
21
+ - 0dbea31: A notched mouse wheel scrolls without stalling. Each notch retargets the scroll's spring, and the new spring used to spend its first frame standing still where the old one stopped: a one-frame freeze at every notch, and a scroll that barely moved while a wheel was spun fast. A spring that takes over from a running one now continues its clock as well as its velocity (`UiAnimation.continueFrom`), so it moves on its first frame.
22
+
3
23
  ## 0.6.25
4
24
 
5
25
  ### Patch Changes
@@ -2741,6 +2741,22 @@ const UiEnvironmentKeys = {
2741
2741
  defaultValue: defaultTextStyle.color,
2742
2742
  compare: colorValuesEqual
2743
2743
  }),
2744
+ /**
2745
+ * The reading direction an ancestor set itself, with `textDirection`,
2746
+ * or none.
2747
+ *
2748
+ * Its own key because a type role is a size and a weight, not a
2749
+ * reading direction: a label naming `bodySmall` inside a box that
2750
+ * reads right to left keeps reading right to left, as `font` in CSS
2751
+ * leaves `direction` alone. A role still brings its own direction
2752
+ * where nothing above set one, which is how a theme whose roles all
2753
+ * read right to left mirrors a page from its root.
2754
+ */
2755
+ textDirection: createEnvironmentKey({
2756
+ name: "textDirection",
2757
+ defaultValue: void 0,
2758
+ compare: (a, b) => a === b
2759
+ }),
2744
2760
  contentColor: createEnvironmentKey({
2745
2761
  name: "contentColor",
2746
2762
  defaultValue: UiBasicColors.black,
@@ -4545,6 +4561,55 @@ const UiProperties = {
4545
4561
  inherited: false,
4546
4562
  affects: S
4547
4563
  }),
4564
+ /**
4565
+ * A row's 1-based place among all the rows of its grid or table,
4566
+ * counting the header and the rows that are not mounted. A
4567
+ * virtualized grid mounts a window of its rows, and without this a
4568
+ * reader counts the mounted ones and calls the first of them row 1.
4569
+ * Set on the `row`, not on its cells, which read it from there. See
4570
+ * `aria-rowindex`.
4571
+ */
4572
+ rowIndex: defineProperty({
4573
+ name: "rowIndex",
4574
+ defaultValue: void 0,
4575
+ inherited: false,
4576
+ affects: S
4577
+ }),
4578
+ /**
4579
+ * A cell's 1-based place among all the columns of its grid or table,
4580
+ * counting the ones that are not mounted. A grid that virtualizes
4581
+ * sideways mounts only the columns in view, so once it scrolls a
4582
+ * cell's place among its siblings is no longer the column it is in.
4583
+ * See `aria-colindex`.
4584
+ */
4585
+ columnIndex: defineProperty({
4586
+ name: "columnIndex",
4587
+ defaultValue: void 0,
4588
+ inherited: false,
4589
+ affects: S
4590
+ }),
4591
+ /**
4592
+ * How many rows a grid or table holds in all, header included, when
4593
+ * not all of them are mounted; -1 when the count is not known. Set on
4594
+ * the `grid`, `treegrid` or `table`. See `aria-rowcount`.
4595
+ */
4596
+ rowCount: defineProperty({
4597
+ name: "rowCount",
4598
+ defaultValue: void 0,
4599
+ inherited: false,
4600
+ affects: S
4601
+ }),
4602
+ /**
4603
+ * How many columns a grid or table holds in all, when not all of them
4604
+ * are mounted; -1 when the count is not known. Set on the `grid`,
4605
+ * `treegrid` or `table`. See `aria-colcount`.
4606
+ */
4607
+ columnCount: defineProperty({
4608
+ name: "columnCount",
4609
+ defaultValue: void 0,
4610
+ inherited: false,
4611
+ affects: S
4612
+ }),
4548
4613
  /** Any subset of x, y, scaleX, scaleY, rotation; the rest is identity. */
4549
4614
  transform: defineProperty({
4550
4615
  name: "transform",
@@ -5606,6 +5671,11 @@ var UiGraph = class {
5606
5671
  let style;
5607
5672
  if (isTypographyRole(textStyle, scale)) style = scale[textStyle];
5608
5673
  else if (typeof textStyle !== "string") style = textStyle;
5674
+ const set = env.get(UiEnvironmentKeys.textDirection);
5675
+ if (style !== void 0 && set !== void 0 && typeof textStyle === "string" && style.textDirection !== set) style = {
5676
+ ...style,
5677
+ textDirection: set
5678
+ };
5609
5679
  if (style !== void 0) {
5610
5680
  env = env.set(UiEnvironmentKeys.textStyle, style);
5611
5681
  env = env.set(UiEnvironmentKeys.color, style.color);
@@ -5621,6 +5691,8 @@ var UiGraph = class {
5621
5691
  own[field] = value;
5622
5692
  }
5623
5693
  }
5694
+ const direction = node.getProperty("textDirection");
5695
+ if (direction === "ltr" || direction === "rtl") env = env.set(UiEnvironmentKeys.textDirection, direction);
5624
5696
  if (own !== null) {
5625
5697
  if (positive(node.getProperty("lineHeight")) === void 0 && node.getProperty("fontSize") !== void 0) own.lineHeight = (positive(own.fontSize) ?? UiEnvironmentKeys.textStyle.defaultValue.fontSize) * DEFAULT_LINE_HEIGHT_FACTOR;
5626
5698
  env = env.set(UiEnvironmentKeys.textStyle, own);
@@ -9710,6 +9782,36 @@ function scrollRange(rec, axis) {
9710
9782
  return rec.scrollsText ? overflow + 1 : overflow;
9711
9783
  }
9712
9784
  /**
9785
+ * Whether a record scrolls from its right edge: a scroll container that
9786
+ * reads right to left.
9787
+ *
9788
+ * Its content starts at the right and overflows to the left, so its
9789
+ * horizontal offset follows CSS: 0 shows the start edge, and the offset
9790
+ * runs down to minus the overflow to show the rest. A field is left
9791
+ * out: it scrolls its own text by the caret (see
9792
+ * `LayoutEngine.textScrollAdjustment`), from 0 up, in either direction.
9793
+ */
9794
+ function scrollsFromRight(rec) {
9795
+ return rec.mirrored && rec.scrollable && !rec.scrollsText;
9796
+ }
9797
+ /**
9798
+ * The lowest and highest offset along an axis: `[0, scrollRange]`, or
9799
+ * `[-scrollRange, 0]` across a container that scrolls from its right
9800
+ * edge. Every clamp of an offset reads this, so the engine, the wheel,
9801
+ * a scrollbar drag and a reveal agree about where the content ends in
9802
+ * both directions.
9803
+ */
9804
+ function scrollBounds(rec, axis) {
9805
+ const range = scrollRange(rec, axis);
9806
+ return axis === "x" && scrollsFromRight(rec) ? {
9807
+ min: -range,
9808
+ max: 0
9809
+ } : {
9810
+ min: 0,
9811
+ max: range
9812
+ };
9813
+ }
9814
+ /**
9713
9815
  * The scrollbars a scroll container shows: one per axis whose content
9714
9816
  * overflows. Renderers draw exactly these rectangles and the hit
9715
9817
  * tester grabs them, so what is seen is what is dragged.
@@ -9732,7 +9834,8 @@ function thumbFor(rec, axis) {
9732
9834
  const length = Math.min(track, Math.max(24, track * viewport / content));
9733
9835
  const travel = Math.max(0, track - length);
9734
9836
  const maxScroll = scrollRange(rec, axis);
9735
- const offset = axis === "y" ? rec.scrollY : rec.scrollX;
9837
+ const { min } = scrollBounds(rec, axis);
9838
+ const offset = (axis === "y" ? rec.scrollY : rec.scrollX) - min;
9736
9839
  const along = 2 + (maxScroll > 0 ? travel * offset / maxScroll : 0);
9737
9840
  return {
9738
9841
  axis,
@@ -11279,6 +11382,13 @@ var UiWheelController = class {
11279
11382
  */
11280
11383
  preciseUntil = -Infinity;
11281
11384
  /**
11385
+ * Until when the wheel is taken to be a mouse wheel, which a burst of
11386
+ * large steps keeps it; see `wheel`.
11387
+ */
11388
+ wheelUntil = -Infinity;
11389
+ /** When the last wheel event arrived, to tell a step that starts a burst. */
11390
+ lastArrived = -Infinity;
11391
+ /**
11282
11392
  * The node the last wheel landed on, or null before any.
11283
11393
  *
11284
11394
  * A wheel is evidence of where the pointer is, and sometimes the
@@ -11300,8 +11410,12 @@ var UiWheelController = class {
11300
11410
  const event = new UiWheelEvent("wheel", x, y, deltaX, deltaY, modifiers, deltaMode, wheelDeltaY);
11301
11411
  if (target !== null) this.dispatcher.dispatch(event, target);
11302
11412
  const arrived = this.now();
11303
- const notched = isNotchedWheel(deltaMode, wheelDeltaY) && arrived > this.preciseUntil;
11304
- if (!notched) this.preciseUntil = arrived + PRECISE_MEMORY_MS;
11413
+ const large = deltaMode === 0 && wheelDeltaY !== void 0 && Math.max(Math.abs(deltaX), Math.abs(deltaY)) >= WHEEL_STEP_PX;
11414
+ const startsBurst = arrived - this.lastArrived >= QUIET_BEFORE_NOTCH_MS;
11415
+ const notched = (isNotchedWheel(deltaMode, wheelDeltaY) || large && (startsBurst || arrived <= this.wheelUntil)) && arrived > this.preciseUntil;
11416
+ if (notched) this.wheelUntil = arrived + PRECISE_MEMORY_MS;
11417
+ else this.preciseUntil = arrived + PRECISE_MEMORY_MS;
11418
+ this.lastArrived = arrived;
11305
11419
  if (!event.defaultPrevented && target !== null) {
11306
11420
  this.eventTime = at ?? arrived;
11307
11421
  this.scrollChain(target, event, deltaX, deltaY, deltaMode, notched);
@@ -11635,6 +11749,18 @@ function isScrollContainer(node) {
11635
11749
  */
11636
11750
  const PRECISE_MEMORY_MS = 400;
11637
11751
  /**
11752
+ * The smallest step, in pixels, taken for a wheel's notch on its size
11753
+ * alone. A notch is a hundred pixels or more in every browser at its
11754
+ * defaults; a trackpad's first step is a few.
11755
+ */
11756
+ const WHEEL_STEP_PX = 50;
11757
+ /**
11758
+ * How long the wheel has to have been still for a step to start a burst.
11759
+ * Longer than the gap between a trackpad's events, momentum included, so
11760
+ * a large step in the middle of a gesture is never mistaken for a notch.
11761
+ */
11762
+ const QUIET_BEFORE_NOTCH_MS = 150;
11763
+ /**
11638
11764
  * How far back the steps are fitted: five or six of a trackpad's. Less, and
11639
11765
  * the line follows each step's rounding; more, and it lags a flick that is
11640
11766
  * speeding up or slowing down. Measured on a real flick on a Mac, 48 ms left
@@ -13387,7 +13513,7 @@ var UiPlatformAdapter = class {
13387
13513
  this.keyUpHandler = (e) => {
13388
13514
  const k = e;
13389
13515
  if (isImeKey(k)) return;
13390
- this.keyboard.keyUp(k.key, modifiersFromEvent(k), k.code ?? "");
13516
+ if (this.keyboard.keyUp(k.key, modifiersFromEvent(k), k.code ?? "").defaultPrevented) k.preventDefault();
13391
13517
  };
13392
13518
  surface.pointerTarget.addEventListener("pointerdown", this.pointerDownHandler);
13393
13519
  surface.pointerTarget.addEventListener("pointermove", this.pointerMoveHandler);
@@ -16396,8 +16522,8 @@ var LayoutEngine = class {
16396
16522
  const viewTop = container.y + container.scrollY;
16397
16523
  let scrollX = container.scrollX + revealShift(left, right, viewLeft, container.width);
16398
16524
  let scrollY = container.scrollY + revealShift(top, bottom, viewTop, container.height);
16399
- scrollX = this.clamp(scrollX, 0, Math.max(0, container.contentWidth - container.width));
16400
- scrollY = this.clamp(scrollY, 0, Math.max(0, container.contentHeight - container.height));
16525
+ scrollX = this.clampScroll(container, "x", scrollX);
16526
+ scrollY = this.clampScroll(container, "y", scrollY);
16401
16527
  if (scrollX !== container.scrollX || scrollY !== container.scrollY) adjustments.push({
16402
16528
  container: current,
16403
16529
  scrollX,
@@ -17768,14 +17894,17 @@ var LayoutEngine = class {
17768
17894
  * this already, but placement is the truth for any container.
17769
17895
  */
17770
17896
  updateContentExtent(node, rec) {
17897
+ const fromRight = scrollsFromRight(rec);
17898
+ let left = rec.x + rec.width - rec.paddingRight;
17771
17899
  let right = rec.x + rec.paddingLeft;
17772
17900
  let bottom = rec.y + rec.paddingTop;
17773
17901
  this.forEachChild(node, (child) => {
17774
17902
  const cRec = this.record(child);
17903
+ left = Math.min(left, cRec.x - cRec.marginLeft);
17775
17904
  right = Math.max(right, cRec.x + cRec.width + cRec.marginRight);
17776
17905
  bottom = Math.max(bottom, cRec.y + cRec.height + cRec.marginBottom);
17777
17906
  });
17778
- rec.contentWidth = right - rec.x + rec.paddingRight;
17907
+ rec.contentWidth = fromRight ? rec.x + rec.width - left + rec.paddingLeft : right - rec.x + rec.paddingRight;
17779
17908
  rec.contentHeight = bottom - rec.y + rec.paddingBottom;
17780
17909
  }
17781
17910
  /**
@@ -18586,10 +18715,15 @@ var LayoutEngine = class {
18586
18715
  const followsY = axis !== "x";
18587
18716
  const rawX = followsX ? source?.scrollX ?? 0 : this.numberProp(node, "scrollX") ?? 0;
18588
18717
  const rawY = followsY ? source?.scrollY ?? 0 : this.numberProp(node, "scrollY") ?? 0;
18589
- rec.scrollX = this.clamp(rawX, 0, scrollRange(rec, "x"));
18590
- rec.scrollY = this.clamp(rawY, 0, scrollRange(rec, "y"));
18718
+ rec.scrollX = this.clampScroll(rec, "x", rawX);
18719
+ rec.scrollY = this.clampScroll(rec, "y", rawY);
18591
18720
  rec.transformDirty = false;
18592
18721
  }
18722
+ /** An offset clamped to what the record can scroll along the axis; see `scrollBounds`. */
18723
+ clampScroll(rec, axis, offset) {
18724
+ const { min, max } = scrollBounds(rec, axis);
18725
+ return this.clamp(offset, min, max);
18726
+ }
18593
18727
  /**
18594
18728
  * Brings a record's scroll offset up to date with its `scrollX` and
18595
18729
  * `scrollY` properties, clamped to what there is to scroll (see
@@ -18601,8 +18735,8 @@ var LayoutEngine = class {
18601
18735
  const rec = this.record(node);
18602
18736
  const rawX = this.numberProp(node, "scrollX") ?? 0;
18603
18737
  const rawY = this.numberProp(node, "scrollY") ?? 0;
18604
- const scrollX = this.clamp(rawX, 0, scrollRange(rec, "x"));
18605
- const scrollY = this.clamp(rawY, 0, scrollRange(rec, "y"));
18738
+ const scrollX = this.clampScroll(rec, "x", rawX);
18739
+ const scrollY = this.clampScroll(rec, "y", rawY);
18606
18740
  if (scrollX !== rec.scrollX || scrollY !== rec.scrollY) {
18607
18741
  rec.scrollX = scrollX;
18608
18742
  rec.scrollY = scrollY;
@@ -18649,10 +18783,11 @@ var LayoutEngine = class {
18649
18783
  const sRec = this.record(scroller);
18650
18784
  const pRec = this.record(parent);
18651
18785
  const parentIsScroller = parent === scroller;
18786
+ const fromRight = parentIsScroller && scrollsFromRight(pRec);
18652
18787
  const boundTop = pRec.y + pRec.paddingTop;
18653
- const boundLeft = pRec.x + pRec.paddingLeft;
18788
+ const boundLeft = fromRight ? pRec.x + pRec.width - pRec.contentWidth + pRec.paddingLeft : pRec.x + pRec.paddingLeft;
18654
18789
  const boundBottom = parentIsScroller ? pRec.y + pRec.contentHeight - pRec.paddingBottom : pRec.y + pRec.height - pRec.paddingBottom;
18655
- const boundRight = parentIsScroller ? pRec.x + pRec.contentWidth - pRec.paddingRight : pRec.x + pRec.width - pRec.paddingRight;
18790
+ const boundRight = parentIsScroller && !fromRight ? pRec.x + pRec.contentWidth - pRec.paddingRight : pRec.x + pRec.width - pRec.paddingRight;
18656
18791
  const viewTop = sRec.y + sRec.scrollY + (parentIsScroller ? 0 : 0);
18657
18792
  const viewLeft = sRec.x + sRec.scrollX;
18658
18793
  const viewBottom = viewTop + sRec.height;
@@ -22609,6 +22744,6 @@ function createCanvasSurface(host) {
22609
22744
  return new CanvasSurface(host);
22610
22745
  }
22611
22746
  //#endregion
22612
- export { isImeKey as $, visualStatesEqual as $a, scaleSpacing as $i, spannedRunsFor as $n, transformIsIdentity as $r, registerFontStack as $t, withOverrideSource as A, UiBasicColors as Aa, noInsets as Ai, clearLinkHover as An, inheritedPropertyFlags as Ar, adjacentField as At, FlexDirection as B, findEnvironmentKey as Ba, withDensity as Bi, editorFor as Bn, isUiSemanticState as Br, createCanvasTextStyle as Bt, SCROLLBAR_LINGER_MS as C, spansDifferOnlyInPaint as Ca, normalizeBorderRadius as Ci, isNodeInert as Cn, resolveNumber as Cr, hasDrawnText as Ct, formatExplanation as D, colorsEqualPalette as Da, UiEnvironmentKeys as Di, isSubtreeInert as Dn, closestPropertyName as Dr, selectionRectsIn as Dt, formatConstraints as E, textStylesEqual as Ea, propertyValuesEqual as Ei, isPressable as En, resolveString as Er, paragraphGeometryFrom as Et, clampSize as F, normalizeColor as Fa, unknownContainerSize as Fi, setLinkHover as Fn, propertyValuesEqualByName as Fr, detectEditingPlatform as Ft, CrossAxisAlignment as G, overrideSources as Ga, themeExtensionsEqual as Gi, maskText as Gn, UI_SUBGRID_AXES as Gr, runFontString as Gt, placeGridItems as H, UiNode as Ha, hasThemeExtension as Hi, isEditableNode as Hn, statesEqual as Hr, fillTextRects as Ht, constraintsEqual as I, parseColor as Ia, darkTheme as Ii, CARET_BLINK_MS as In, UiProperties as Ir, isPrintable as It, parseCrossAxisAlignment as J, writeOverrideProperty as Ja, highContrastColors as Ji, resolveColorValue as Jn, paintValuesEqual as Jr, textRunBackgrounds as Jt, MainAxisAlignment as K, resetOverrideWarnings as Ka, withThemeExtension as Ki, nextCaretToggle as Kn, validateSubgrid as Kr, spanOf as Kt, tightenConstraints as L, rgb8 as La, lightTheme as Li, CARET_WIDTH as Ln, UI_ROLES as Lr, EditableLayout as Lt, contentOffset as M, colorToRgba as Ma, UiContainerSizeSource as Mi, linkHoverOf as Mn, propertyEffects as Mr, edgeField as Mt, LayoutRecord as N, colorValuesEqual as Na, bandOf as Ni, linkOf as Nn, propertyIsInherited as Nr, editingGroupOf as Nt, formatNumber as O, darkColors as Oa, UiInsetRegistry as Oi, pointerEventsOf as On, findPropertyDefinition as Or, wordRangeIn as Ot, Constraints as P, colorsEqual as Pa, containerBands as Pi, linkRunAtPointIn as Pn, propertyNarrowers as Pr, commandForKey as Pt, capturePointer as Q, visualState as Qa, defaultSpacing as Qi, ParagraphTextMeasurer as Qn, transform as Qr, fontStackFor as Qt, MAX_MEASURES_PER_CHILD as R, rgba as Ra, themesEqual as Ri, EDITOR_PROP as Rn, UI_SEMANTIC_STATES as Rr, applyCanvasTextStyle as Rt, SCROLLBAR_FADE_MS as S, spannedTextOf as Sa, borderRadiusValuesEqual as Si, isNodeHitTestable as Sn, resolveBoolean as Sr, UiInputDispatcher as St, describeOverrides as T, textSpansEqual as Ta, defineProperty as Ti, isNodeTabStop as Tn, resolvePropertyByName as Tr, paragraphGeometry as Tt, sizeGridTracks as U, DirtyNodeSet as Ua, noThemeExtensions as Ui, isMultiline as Un, validateRole as Ur, layoutTextLines as Ut, parseFlexDirection as V, UiEnvironment as Va, defineThemeExtension as Vi, editorOf as Vn, normalizeStates as Vr, drawText as Vt, AlignContent as W, clearOverrideProperty as Wa, themeExtension as Wi, isReadOnly as Wn, validateStates as Wr, runCanvasStyleInto as Wt, CanvasPlatformSurface as X, defaultVisualState as Xa, relativeLuminance as Xi, videoFrameSize as Xn, UiTransforms as Xr, bumpFontStack as Xt, parseMainAxisAlignment as Y, UiVisualState as Ya, raiseContrast as Yi, isVideoSurface as Yn, pathValuesEqual as Yr, textRunDecorations as Yt, UiPlatformAdapter as Z, hasVisualState as Za, densityFactors as Zi, CharacterCountTextMeasurer as Zn, parseTransform as Zr, clearFontStacks as Zt, LABEL_PADDING_X as _, editableSpansOf as _a, UiBorderRadiuses as _i, selectableTextNodes as _n, UiNodeType as _o, previousGraphemeStart as _r, scrollLeaderOf as _t, PaintPictureCache as a, boxShadow as aa, radialGradient as ai, computeObjectFitRect as an, UiGestureEvent as ao, lineIndexForOffset as ar, UiGestureRecognizer as at, snapScroll as b, resolvedSpansOf as ba, borderRadiusEqual as bi, setSelectionRange as bn, UiGraph as br, scrollbarThumbs as bt, EMPTY_RECORDING as c, boxShadowReach as ca, fr as ci, normalizeTextAlign as cn, UiPasteEvent as co, offsetAtX as cr, isScrollContainer as ct, tracePathData as d, isShapeName as da, isMinMaxTrack as di, TEXT_MATCHES_PROP as dn, UiSelectionChangeEvent as do, EditableTextModel as dr, UiFocusManager as dt, spacingEqual as ea, transformsEqual as ei, DEFAULT_FONT_FAMILY as en, MOUSE_POINTER as eo, ELLIPSIS as er, pointerDeviceOf as et, ScaledImageCache as f, shapesEqual as fa, isPercentLength as fi, clearMatchRanges as fn, UiTextChangeEvent as fo, graphemeBoundaries as fr, UiHitTester as ft, paintsAfterChildren as g, defaultTextStyle as ga, resolveLength as gi, clearSelectionRange as gn, wheelDeltaYOf as go, nextWordEnd as gr, SCROLLBAR_THICKNESS as gt, hasDecorationPhase as h, typographyEqual as ha, repeat as hi, TEXT_SELECTION_PROP as hn, noKeyModifiers as ho, nextGraphemeEnd as hr, SCROLLBAR_MIN_THUMB as ht, traceRoundedRect as i, BOX_SHADOW_BLUR_REACH as ia, linearGradient as ii, colorToCss as in, UiFocusEvent as io, lineIndexAtY as ir, UiTouchScroller as it, accumulatedOffsetTo as j, colorToHex as ja, observeViewportInsets as ji, hasTextLinks as jn, inheritedPropertyNames as jr, comparePositions as jt, labelNode as k, lightColors as ka, insetsEqual as ki, resolveCursor as kn, getPropertyNames as kr, textInputOf as kt, PaintRecorder as l, boxShadowsEqual as la, isAutoLength as li, normalizeVerticalAlign as ln, UiPinchEvent as lo, offsetForVerticalMove as lr, UiKeyboardController as lt, decorationRect as m, isTypographyRole as ma, percent as mi, setMatchRanges as mn, UiWheelEvent as mo, lineStartAt as mr, SCROLLBAR_INSET as mt, createCanvasSurface as n, defaultShadows as na, gradientPaint as ni, DEFAULT_FONT_WEIGHT as nn, UiCompositionEvent as no, proportionalFontMetrics as nr, touchActionFor as nt, paintPictures as o, boxShadowArraysEqual as oa, validateGradient as oi, createPaintState as on, UiInputEvent as oo, lineLimit as or, UiPinchRecognizer as ot, decorationColor as p, defaultTypography as pa, minmax as pi, matchRangesOf as pn, UiWheelDeltaMode as po, lineEndAt as pr, SCROLLBAR_HOVER_ZONE as pt, parseAlignContent as q, writeDeclaredProperty as qa, contrastRatio as qi, syncEditorValue as qn, inputsEqual as qr, textMeasureRequest as qt, Canvas2DRenderer as r, shadowsEqual as ra, gradientsEqual as ri, DEFAULT_TEXT_COLOR as rn, UiEventType as ro, caretRectFor as rr, UiEditingController as rt, PaintTarget as s, boxShadowRadius as sa, auto as si, isPaintVisible as sn, UiKeyboardEvent as so, offsetAtPoint as sr, UiWheelController as st, CanvasSurface as t, spacingSteps as ta, MAX_GRADIENT_STOPS as ti, DEFAULT_FONT_SIZE as tn, UiBeforeInputEvent as to, layoutParagraph as tr, prepareInputSurface as tt, replayPaint as u, defaultShapes as ua, isFrLength as ui, resolvePaintState as un, UiPointerEvent as uo, selectionRects as ur, UiPointerController as ut, drawOverlayShapes as v, flattenTextSpans as va, borderRadius as vi, selectableTextOf as vn, DirtyFlags as vo, previousWordStart as vr, scrollRange as vt, describeLength as w, textContentOf as wa, uniformBorderRadius as wi, isNodeSelectable as wn, resolveProperty as wr, offsetAtPointIn as wt, LayoutEngine as x, spanAtOffset as xa, borderRadiusIsZero as xi, isNodeFocusable as xn, DEFAULT_LINE_HEIGHT_FACTOR as xr, scrollbarZoneAt as xt, labelOrigin as y, hiddenRangesOf as ya, borderRadiusCorners as yi, selectionRangeOf as yn, UiBinding as yo, wordRangeAt as yr, scrollbarThumb as yt, isLayoutProtocol as z, createEnvironmentKey as za, withContrast as zi, caretVisibleAt as zn, isUiRole as zr, buildFontString as zt };
22747
+ export { isImeKey as $, hasVisualState as $a, densityFactors as $i, CharacterCountTextMeasurer as $n, parseTransform as $r, clearFontStacks as $t, withOverrideSource as A, darkColors as Aa, UiInsetRegistry as Ai, pointerEventsOf as An, findPropertyDefinition as Ar, wordRangeIn as At, FlexDirection as B, rgba as Ba, themesEqual as Bi, EDITOR_PROP as Bn, UI_SEMANTIC_STATES as Br, applyCanvasTextStyle as Bt, SCROLLBAR_LINGER_MS as C, spanAtOffset as Ca, borderRadiusIsZero as Ci, isNodeFocusable as Cn, DEFAULT_LINE_HEIGHT_FACTOR as Cr, scrollsFromRight as Ct, formatExplanation as D, textSpansEqual as Da, defineProperty as Di, isNodeTabStop as Dn, resolvePropertyByName as Dr, paragraphGeometry as Dt, formatConstraints as E, textContentOf as Ea, uniformBorderRadius as Ei, isNodeSelectable as En, resolveProperty as Er, offsetAtPointIn as Et, clampSize as F, colorValuesEqual as Fa, bandOf as Fi, linkOf as Fn, propertyIsInherited as Fr, editingGroupOf as Ft, CrossAxisAlignment as G, DirtyNodeSet as Ga, noThemeExtensions as Gi, isMultiline as Gn, validateRole as Gr, layoutTextLines as Gt, placeGridItems as H, findEnvironmentKey as Ha, withDensity as Hi, editorFor as Hn, isUiSemanticState as Hr, createCanvasTextStyle as Ht, constraintsEqual as I, colorsEqual as Ia, containerBands as Ii, linkRunAtPointIn as In, propertyNarrowers as Ir, commandForKey as It, parseCrossAxisAlignment as J, resetOverrideWarnings as Ja, withThemeExtension as Ji, nextCaretToggle as Jn, validateSubgrid as Jr, spanOf as Jt, MainAxisAlignment as K, clearOverrideProperty as Ka, themeExtension as Ki, isReadOnly as Kn, validateStates as Kr, runCanvasStyleInto as Kt, tightenConstraints as L, normalizeColor as La, unknownContainerSize as Li, setLinkHover as Ln, propertyValuesEqualByName as Lr, detectEditingPlatform as Lt, contentOffset as M, UiBasicColors as Ma, noInsets as Mi, clearLinkHover as Mn, inheritedPropertyFlags as Mr, adjacentField as Mt, LayoutRecord as N, colorToHex as Na, observeViewportInsets as Ni, hasTextLinks as Nn, inheritedPropertyNames as Nr, comparePositions as Nt, formatNumber as O, textStylesEqual as Oa, propertyValuesEqual as Oi, isPressable as On, resolveString as Or, paragraphGeometryFrom as Ot, Constraints as P, colorToRgba as Pa, UiContainerSizeSource as Pi, linkHoverOf as Pn, propertyEffects as Pr, edgeField as Pt, capturePointer as Q, defaultVisualState as Qa, relativeLuminance as Qi, videoFrameSize as Qn, UiTransforms as Qr, bumpFontStack as Qt, MAX_MEASURES_PER_CHILD as R, parseColor as Ra, darkTheme as Ri, CARET_BLINK_MS as Rn, UiProperties as Rr, isPrintable as Rt, SCROLLBAR_FADE_MS as S, resolvedSpansOf as Sa, borderRadiusEqual as Si, setSelectionRange as Sn, UiGraph as Sr, scrollbarZoneAt as St, describeOverrides as T, spansDifferOnlyInPaint as Ta, normalizeBorderRadius as Ti, isNodeInert as Tn, resolveNumber as Tr, hasDrawnText as Tt, sizeGridTracks as U, UiEnvironment as Ua, defineThemeExtension as Ui, editorOf as Un, normalizeStates as Ur, drawText as Ut, parseFlexDirection as V, createEnvironmentKey as Va, withContrast as Vi, caretVisibleAt as Vn, isUiRole as Vr, buildFontString as Vt, AlignContent as W, UiNode as Wa, hasThemeExtension as Wi, isEditableNode as Wn, statesEqual as Wr, fillTextRects as Wt, CanvasPlatformSurface as X, writeOverrideProperty as Xa, highContrastColors as Xi, resolveColorValue as Xn, paintValuesEqual as Xr, textRunBackgrounds as Xt, parseMainAxisAlignment as Y, writeDeclaredProperty as Ya, contrastRatio as Yi, syncEditorValue as Yn, inputsEqual as Yr, textMeasureRequest as Yt, UiPlatformAdapter as Z, UiVisualState as Za, raiseContrast as Zi, isVideoSurface as Zn, pathValuesEqual as Zr, textRunDecorations as Zt, LABEL_PADDING_X as _, typographyEqual as _a, repeat as _i, TEXT_SELECTION_PROP as _n, noKeyModifiers as _o, nextGraphemeEnd as _r, scrollBounds as _t, PaintPictureCache as a, shadowsEqual as aa, gradientsEqual as ai, DEFAULT_TEXT_COLOR as an, UiEventType as ao, caretRectFor as ar, UiGestureRecognizer as at, snapScroll as b, flattenTextSpans as ba, borderRadius as bi, selectableTextOf as bn, DirtyFlags as bo, previousWordStart as br, scrollbarThumb as bt, EMPTY_RECORDING as c, boxShadowArraysEqual as ca, validateGradient as ci, createPaintState as cn, UiInputEvent as co, lineLimit as cr, isScrollContainer as ct, tracePathData as d, boxShadowsEqual as da, isAutoLength as di, normalizeVerticalAlign as dn, UiPinchEvent as do, offsetForVerticalMove as dr, UiFocusManager as dt, defaultSpacing as ea, transform as ei, fontStackFor as en, visualState as eo, ParagraphTextMeasurer as er, pointerDeviceOf as et, ScaledImageCache as f, defaultShapes as fa, isFrLength as fi, resolvePaintState as fn, UiPointerEvent as fo, selectionRects as fr, UiHitTester as ft, paintsAfterChildren as g, isTypographyRole as ga, percent as gi, setMatchRanges as gn, UiWheelEvent as go, lineStartAt as gr, SCROLLBAR_THICKNESS as gt, hasDecorationPhase as h, defaultTypography as ha, minmax as hi, matchRangesOf as hn, UiWheelDeltaMode as ho, lineEndAt as hr, SCROLLBAR_MIN_THUMB as ht, traceRoundedRect as i, defaultShadows as ia, gradientPaint as ii, DEFAULT_FONT_WEIGHT as in, UiCompositionEvent as io, proportionalFontMetrics as ir, UiTouchScroller as it, accumulatedOffsetTo as j, lightColors as ja, insetsEqual as ji, resolveCursor as jn, getPropertyNames as jr, textInputOf as jt, labelNode as k, colorsEqualPalette as ka, UiEnvironmentKeys as ki, isSubtreeInert as kn, closestPropertyName as kr, selectionRectsIn as kt, PaintRecorder as l, boxShadowRadius as la, auto as li, isPaintVisible as ln, UiKeyboardEvent as lo, offsetAtPoint as lr, UiKeyboardController as lt, decorationRect as m, shapesEqual as ma, isPercentLength as mi, clearMatchRanges as mn, UiTextChangeEvent as mo, graphemeBoundaries as mr, SCROLLBAR_INSET as mt, createCanvasSurface as n, spacingEqual as na, transformsEqual as ni, DEFAULT_FONT_FAMILY as nn, MOUSE_POINTER as no, ELLIPSIS as nr, touchActionFor as nt, paintPictures as o, BOX_SHADOW_BLUR_REACH as oa, linearGradient as oi, colorToCss as on, UiFocusEvent as oo, lineIndexAtY as or, UiPinchRecognizer as ot, decorationColor as p, isShapeName as pa, isMinMaxTrack as pi, TEXT_MATCHES_PROP as pn, UiSelectionChangeEvent as po, EditableTextModel as pr, SCROLLBAR_HOVER_ZONE as pt, parseAlignContent as q, overrideSources as qa, themeExtensionsEqual as qi, maskText as qn, UI_SUBGRID_AXES as qr, runFontString as qt, Canvas2DRenderer as r, spacingSteps as ra, MAX_GRADIENT_STOPS as ri, DEFAULT_FONT_SIZE as rn, UiBeforeInputEvent as ro, layoutParagraph as rr, UiEditingController as rt, PaintTarget as s, boxShadow as sa, radialGradient as si, computeObjectFitRect as sn, UiGestureEvent as so, lineIndexForOffset as sr, UiWheelController as st, CanvasSurface as t, scaleSpacing as ta, transformIsIdentity as ti, registerFontStack as tn, visualStatesEqual as to, spannedRunsFor as tr, prepareInputSurface as tt, replayPaint as u, boxShadowReach as ua, fr as ui, normalizeTextAlign as un, UiPasteEvent as uo, offsetAtX as ur, UiPointerController as ut, drawOverlayShapes as v, defaultTextStyle as va, resolveLength as vi, clearSelectionRange as vn, wheelDeltaYOf as vo, nextWordEnd as vr, scrollLeaderOf as vt, describeLength as w, spannedTextOf as wa, borderRadiusValuesEqual as wi, isNodeHitTestable as wn, resolveBoolean as wr, UiInputDispatcher as wt, LayoutEngine as x, hiddenRangesOf as xa, borderRadiusCorners as xi, selectionRangeOf as xn, UiBinding as xo, wordRangeAt as xr, scrollbarThumbs as xt, labelOrigin as y, editableSpansOf as ya, UiBorderRadiuses as yi, selectableTextNodes as yn, UiNodeType as yo, previousGraphemeStart as yr, scrollRange as yt, isLayoutProtocol as z, rgb8 as za, lightTheme as zi, CARET_WIDTH as zn, UI_ROLES as zr, EditableLayout as zt };
22613
22748
 
22614
- //# sourceMappingURL=CanvasSurface-BZ-F5ASX.js.map
22749
+ //# sourceMappingURL=CanvasSurface-BTZ3A3MN.js.map