gesso-core 0.6.26 → 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 +14 -0
- package/dist/{CanvasSurface-BZ-F5ASX.js → CanvasSurface-BTZ3A3MN.js} +150 -15
- package/dist/CanvasSurface-BTZ3A3MN.js.map +1 -0
- package/dist/{index-DrJnB24f.d.ts → index-v2fhm7Pn.d.ts} +171 -4
- package/dist/index.d.ts +2 -2
- package/dist/index.js +169 -7
- package/dist/index.js.map +1 -1
- package/dist/testing.d.ts +1 -1
- package/dist/testing.js +1 -1
- package/package.json +1 -1
- package/dist/CanvasSurface-BZ-F5ASX.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as isImeKey, $a as
|
|
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. */
|
|
@@ -2333,6 +2333,7 @@ var UiGraphBuilder = class {
|
|
|
2333
2333
|
}
|
|
2334
2334
|
reconcile(parent, definitions) {
|
|
2335
2335
|
const existing = this.collectChildren(parent);
|
|
2336
|
+
const staying = this.inOrder(parent, existing, definitions);
|
|
2336
2337
|
const matched = /* @__PURE__ */ new Set();
|
|
2337
2338
|
const unkeyed = {
|
|
2338
2339
|
existing,
|
|
@@ -2384,7 +2385,7 @@ var UiGraphBuilder = class {
|
|
|
2384
2385
|
}
|
|
2385
2386
|
}
|
|
2386
2387
|
this.reconciledFrom.set(node, definition);
|
|
2387
|
-
if (this.moveBefore(parent, node, cursor)) changed = true;
|
|
2388
|
+
if (!staying.has(node) && this.moveBefore(parent, node, cursor)) changed = true;
|
|
2388
2389
|
cursor = node.nextSibling;
|
|
2389
2390
|
result.push(node);
|
|
2390
2391
|
}
|
|
@@ -2556,6 +2557,41 @@ var UiGraphBuilder = class {
|
|
|
2556
2557
|
return node;
|
|
2557
2558
|
}
|
|
2558
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
|
+
/**
|
|
2559
2595
|
* Positions a node immediately before the reference node.
|
|
2560
2596
|
*/
|
|
2561
2597
|
moveBefore(parent, node, reference) {
|
|
@@ -2820,6 +2856,32 @@ var UiGraphBuilder = class {
|
|
|
2820
2856
|
return `${parent.id}:component:${String(key)}`;
|
|
2821
2857
|
}
|
|
2822
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
|
+
}
|
|
2823
2885
|
//#endregion
|
|
2824
2886
|
//#region src/composition/UiVirtualWindow.ts
|
|
2825
2887
|
/** Marks an item wrapper with its index so the host can measure it. */
|
|
@@ -2871,6 +2933,14 @@ var UiVirtualWindow = class {
|
|
|
2871
2933
|
leadExtent = -1;
|
|
2872
2934
|
trailExtent = -1;
|
|
2873
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;
|
|
2874
2944
|
/** Measured extent minus the estimate, per index; zero for one not measured. */
|
|
2875
2945
|
corrections;
|
|
2876
2946
|
/** Wrappers of the items currently mounted, so a row that stays is not re-rendered. */
|
|
@@ -2968,12 +3038,63 @@ var UiVirtualWindow = class {
|
|
|
2968
3038
|
extentOf(index) {
|
|
2969
3039
|
return this.measured.get(index) ?? this.estimate;
|
|
2970
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
|
+
}
|
|
2971
3071
|
/** The item whose span contains `offset`; clamped to the list. */
|
|
2972
3072
|
indexAt(offset) {
|
|
2973
3073
|
if (this.count === 0) return 0;
|
|
2974
3074
|
return Math.min(this.count - 1, this.corrections.lastAtOrBefore(offset, this.estimate));
|
|
2975
3075
|
}
|
|
2976
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
|
+
/**
|
|
2977
3098
|
* One step, run by the host each frame before layout: take the
|
|
2978
3099
|
* measurements of mounted items, keep the first mounted item anchored,
|
|
2979
3100
|
* recompute the window for the viewport, and emit children when the
|
|
@@ -2983,9 +3104,10 @@ var UiVirtualWindow = class {
|
|
|
2983
3104
|
this.viewport = viewport;
|
|
2984
3105
|
const anchorBefore = this.last >= this.first ? this.offsetOf(this.first) : 0;
|
|
2985
3106
|
for (const measure of measures) this.record(measure.index, measure.extent);
|
|
2986
|
-
|
|
3107
|
+
let scrollAdjust = (this.last >= this.first ? this.offsetOf(this.first) : 0) - anchorBefore;
|
|
2987
3108
|
const total = this.totalExtent();
|
|
2988
3109
|
const header = viewport.lead ?? 0;
|
|
3110
|
+
if (this.held !== null) scrollAdjust = this.keepHeldInView(viewport, Math.max(header, this.heldLead), scrollAdjust);
|
|
2989
3111
|
this.checkViewport(viewport.extent, total + header);
|
|
2990
3112
|
const scrolled = clamp$2(viewport.scroll + scrollAdjust, 0, Math.max(0, total + header - viewport.extent));
|
|
2991
3113
|
const scroll = Math.max(0, scrolled - header);
|
|
@@ -3094,7 +3216,8 @@ var UiVirtualWindow = class {
|
|
|
3094
3216
|
columnGap: this.grid.columnGap,
|
|
3095
3217
|
rowGap: 0,
|
|
3096
3218
|
autoFlow: "row",
|
|
3097
|
-
width: percent(100)
|
|
3219
|
+
width: percent(100),
|
|
3220
|
+
minWidth: tracksMinimum(this.grid.columns, this.grid.columnGap ?? 0)
|
|
3098
3221
|
}, ...children)];
|
|
3099
3222
|
}
|
|
3100
3223
|
spacer(key, extent) {
|
|
@@ -3138,6 +3261,24 @@ var UiVirtualWindow = class {
|
|
|
3138
3261
|
}
|
|
3139
3262
|
};
|
|
3140
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
|
+
/**
|
|
3141
3282
|
* Copies the window's own props onto a row of a lazy grid.
|
|
3142
3283
|
*
|
|
3143
3284
|
* The row must be a `Grid` with `subgrid: 'columns'`, because that is
|
|
@@ -3751,11 +3892,28 @@ var UiVirtualSheet = class {
|
|
|
3751
3892
|
* fill handle, a selection being stretched — is usually heading for
|
|
3752
3893
|
* one that has not been mounted, so there is no node to hit-test and
|
|
3753
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.
|
|
3754
3908
|
*/
|
|
3755
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);
|
|
3756
3914
|
return {
|
|
3757
|
-
row: this.rowAt(
|
|
3758
|
-
column: this.columnAt(
|
|
3915
|
+
row: this.rowAt(overRows ? y : scrollY + y),
|
|
3916
|
+
column: this.columnAt(overColumns ? along : scrollX + along)
|
|
3759
3917
|
};
|
|
3760
3918
|
}
|
|
3761
3919
|
/**
|
|
@@ -15690,6 +15848,10 @@ function describe(node, parent, disabled, nextIndex) {
|
|
|
15690
15848
|
posInSet: node.properties.get("posInSet"),
|
|
15691
15849
|
setSize: node.properties.get("setSize"),
|
|
15692
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"),
|
|
15693
15855
|
activeDescendant: node.properties.get("activeDescendant")?.id,
|
|
15694
15856
|
controls: node.properties.get("controls")?.id,
|
|
15695
15857
|
autocomplete: node.properties.get("autocomplete"),
|
|
@@ -15952,6 +16114,6 @@ function recordsEqual(a, b) {
|
|
|
15952
16114
|
return true;
|
|
15953
16115
|
}
|
|
15954
16116
|
//#endregion
|
|
15955
|
-
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 };
|
|
15956
16118
|
|
|
15957
16119
|
//# sourceMappingURL=index.js.map
|