@jsenv/dom 0.17.7 → 0.17.9
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/jsenv_dom.js +224 -29
- package/package.json +1 -1
package/dist/jsenv_dom.js
CHANGED
|
@@ -7491,6 +7491,86 @@ const trapScrollInside = (element, { boundaryElement } = {}) => {
|
|
|
7491
7491
|
};
|
|
7492
7492
|
};
|
|
7493
7493
|
|
|
7494
|
+
/**
|
|
7495
|
+
* Who is answering the wheel gesture happening right now.
|
|
7496
|
+
*
|
|
7497
|
+
* A wheel gesture has no beginning and no end of its own: it is a burst of
|
|
7498
|
+
* events that starts when the fingers move and goes on after they are gone —
|
|
7499
|
+
* the tail of it is the momentum the system keeps sending. And it has no target
|
|
7500
|
+
* either: every event is aimed at whatever happens to be under the pointer at
|
|
7501
|
+
* that instant. So a burst that began over one box lands on another as soon as
|
|
7502
|
+
* the hand drifts, or as soon as what was under it has travelled away — and
|
|
7503
|
+
* read box by box, ONE gesture is answered twice: a slide moves, then the box
|
|
7504
|
+
* around it moves too, under a hand that pushed once.
|
|
7505
|
+
*
|
|
7506
|
+
* Hence an owner. Whoever answers a burst first says so, everyone else asks
|
|
7507
|
+
* before answering, and the owner keeps it until the events stop coming.
|
|
7508
|
+
* Silence is the only end there is, which is why an owner has to say it is
|
|
7509
|
+
* still there on every event of its gesture — a claim nobody renews is a
|
|
7510
|
+
* gesture that is over.
|
|
7511
|
+
*/
|
|
7512
|
+
|
|
7513
|
+
// How long a silence ends a gesture, for an owner that says nothing else: long
|
|
7514
|
+
// enough to survive a page that is busy — the frames right after something sets
|
|
7515
|
+
// off are the ones where the main thread has the most to do, and a silence read
|
|
7516
|
+
// there as "the hand is gone" would cut one gesture into several.
|
|
7517
|
+
const GESTURE_END_DELAY = 150;
|
|
7518
|
+
|
|
7519
|
+
let gestureOwner = null;
|
|
7520
|
+
let gestureOnEnd = null;
|
|
7521
|
+
let gestureEndTimeout = null;
|
|
7522
|
+
|
|
7523
|
+
const endGesture = () => {
|
|
7524
|
+
const onEnd = gestureOnEnd;
|
|
7525
|
+
gestureOwner = null;
|
|
7526
|
+
gestureOnEnd = null;
|
|
7527
|
+
gestureEndTimeout = null;
|
|
7528
|
+
onEnd?.();
|
|
7529
|
+
};
|
|
7530
|
+
|
|
7531
|
+
/**
|
|
7532
|
+
* Is the burst going on right now somebody else's? Asked before answering a
|
|
7533
|
+
* wheel event: `false` means it is free, or already this one's.
|
|
7534
|
+
*/
|
|
7535
|
+
const wheelGestureIsTakenFrom = (candidate) =>
|
|
7536
|
+
gestureOwner !== null && gestureOwner !== candidate;
|
|
7537
|
+
|
|
7538
|
+
/**
|
|
7539
|
+
* Take the gesture, or say it is still going. Called on every event of it: the
|
|
7540
|
+
* claim lapses on its own once `delay` goes by without a word, and `onEnd` is
|
|
7541
|
+
* how the owner hears about that — it is the only end a wheel gesture has.
|
|
7542
|
+
*
|
|
7543
|
+
* @param {any} owner - anything that can be compared, usually the element.
|
|
7544
|
+
* @param {object} [options]
|
|
7545
|
+
* @param {() => void} [options.onEnd] - the silence was long enough.
|
|
7546
|
+
* @param {number} [options.delay] - how long that silence is.
|
|
7547
|
+
*/
|
|
7548
|
+
const claimWheelGesture = (
|
|
7549
|
+
owner,
|
|
7550
|
+
{ onEnd, delay = GESTURE_END_DELAY } = {},
|
|
7551
|
+
) => {
|
|
7552
|
+
if (wheelGestureIsTakenFrom(owner)) {
|
|
7553
|
+
return false;
|
|
7554
|
+
}
|
|
7555
|
+
gestureOwner = owner;
|
|
7556
|
+
gestureOnEnd = onEnd;
|
|
7557
|
+
clearTimeout(gestureEndTimeout);
|
|
7558
|
+
gestureEndTimeout = setTimeout(endGesture, delay);
|
|
7559
|
+
return true;
|
|
7560
|
+
};
|
|
7561
|
+
|
|
7562
|
+
/**
|
|
7563
|
+
* Give it back before the silence does — the box is going away, the gesture was
|
|
7564
|
+
* handed to something else. Whoever does not own it says nothing.
|
|
7565
|
+
*/
|
|
7566
|
+
const releaseWheelGesture = (owner) => {
|
|
7567
|
+
if (gestureOwner !== owner) {
|
|
7568
|
+
return;
|
|
7569
|
+
}
|
|
7570
|
+
clearTimeout(gestureEndTimeout);
|
|
7571
|
+
endGesture();
|
|
7572
|
+
};
|
|
7573
|
+
|
|
7494
7574
|
/**
|
|
7495
7575
|
* Creates intuitive scrolling behavior when scrolling over an element that needs to stay interactive
|
|
7496
7576
|
* (we can't use pointer-events: none). Instead of scrolling the document unexpectedly,
|
|
@@ -11853,12 +11933,15 @@ installImportMetaCssBuild(import.meta);/**
|
|
|
11853
11933
|
* what to paint while the finger moves. The caller knows those and nothing else
|
|
11854
11934
|
* does — this reads the gesture and calls back.
|
|
11855
11935
|
*
|
|
11856
|
-
* Who owns a gesture is decided in
|
|
11936
|
+
* Who owns a gesture is decided in three places, and all three are read here:
|
|
11857
11937
|
* - what says so itself, with [data-no-drag-travel] or by being a field — a
|
|
11858
11938
|
* component that reads the pointer marks itself, because the container it
|
|
11859
11939
|
* ends up in cannot know what it is;
|
|
11860
11940
|
* - a scroller between the pointer and the box with room left that way, which
|
|
11861
|
-
* keeps the gesture until it has none
|
|
11941
|
+
* keeps the gesture until it has none;
|
|
11942
|
+
* - another box that travels, between the pointer and this one: the innermost
|
|
11943
|
+
* one walks the axis it walks, and leaves the others whatever axis it does
|
|
11944
|
+
* not (see axesLeftBy).
|
|
11862
11945
|
*/
|
|
11863
11946
|
|
|
11864
11947
|
// While a pointer is on something that travels: said on the document, because
|
|
@@ -11910,7 +11993,9 @@ import.meta.css = [/* css */`
|
|
|
11910
11993
|
/* A drag over text selects it on the way, and the blue trail says the
|
|
11911
11994
|
gesture was understood as something else. Not from the press: a press on
|
|
11912
11995
|
text IS how one selects it, and only a press that has become a travel has
|
|
11913
|
-
said it was about something else
|
|
11996
|
+
said it was about something else — which is also why this cannot be the
|
|
11997
|
+
whole answer, and why the selection made meanwhile is dropped by hand
|
|
11998
|
+
(see dropSelection). */
|
|
11914
11999
|
user-select: none;
|
|
11915
12000
|
}
|
|
11916
12001
|
`, "@jsenv/dom/src/interaction/drag/drag_to_travel.js"];
|
|
@@ -11938,6 +12023,79 @@ const DRAG_RESISTANCE = 0.3;
|
|
|
11938
12023
|
// click it would have made is swallowed on the way out.
|
|
11939
12024
|
const DRAG_EXCLUDED_SELECTOR = ["input", "textarea", "select", '[contenteditable=""]', '[contenteditable="true"]', "[data-no-drag-travel]"].join(",");
|
|
11940
12025
|
|
|
12026
|
+
// Which axes a box travels on, one attribute per gesture, said in the DOM by
|
|
12027
|
+
// whoever owns the box: it is what a box ABOVE another reads to know the
|
|
12028
|
+
// gesture is not its own, and the DOM is the only place where that is knowable
|
|
12029
|
+
// from the outside.
|
|
12030
|
+
const DRAG_AXES_ATTRIBUTE = "data-travel-by-drag";
|
|
12031
|
+
const WHEEL_AXES_ATTRIBUTE = "data-travel-by-wheel";
|
|
12032
|
+
|
|
12033
|
+
/**
|
|
12034
|
+
* What is left for this box of the axes it travels, once the boxes it CONTAINS
|
|
12035
|
+
* have taken theirs: a row of slides inside a page that walks between pages, a
|
|
12036
|
+
* carousel inside a carousel. Both get the same press (it bubbles), both answer
|
|
12037
|
+
* the same finger, and the one under it is the one the hand is pointing at — so
|
|
12038
|
+
* the innermost takes the axes it walks, and what it does not walk is left to
|
|
12039
|
+
* whoever is above: a row swiped sideways inside a column of screens keeps the
|
|
12040
|
+
* sideways gesture, and the column still answers a finger going down.
|
|
12041
|
+
*
|
|
12042
|
+
* Read at the press and nowhere else, because that is the only moment where the
|
|
12043
|
+
* order is still ours: from the first pixel the gesture is held by whoever asked
|
|
12044
|
+
* the browser for the pointer LAST, which is the outermost box — the wrong one,
|
|
12045
|
+
* and past that point the inner one stops being told anything. So the box that
|
|
12046
|
+
* does not own the gesture must never ask for it.
|
|
12047
|
+
*/
|
|
12048
|
+
const axesLeftBy = (axes, fromElement, stopElement, attribute) => {
|
|
12049
|
+
if (!stopElement.contains(fromElement)) {
|
|
12050
|
+
// Not a press that came up through this box: a browser view transition
|
|
12051
|
+
// delivers one to the document root instead, and the caller hands it over
|
|
12052
|
+
// by hand. Nothing was walked past, so nothing was taken.
|
|
12053
|
+
return axes;
|
|
12054
|
+
}
|
|
12055
|
+
let left = axes;
|
|
12056
|
+
let element = fromElement;
|
|
12057
|
+
while (element && element !== stopElement && element.nodeType === 1) {
|
|
12058
|
+
const taken = element.getAttribute(attribute);
|
|
12059
|
+
if (taken) {
|
|
12060
|
+
let rest = "";
|
|
12061
|
+
for (const axis of left) {
|
|
12062
|
+
if (!taken.includes(axis)) {
|
|
12063
|
+
rest += axis;
|
|
12064
|
+
}
|
|
12065
|
+
}
|
|
12066
|
+
left = rest;
|
|
12067
|
+
if (!left) {
|
|
12068
|
+
return "";
|
|
12069
|
+
}
|
|
12070
|
+
}
|
|
12071
|
+
element = element.parentElement;
|
|
12072
|
+
}
|
|
12073
|
+
return left;
|
|
12074
|
+
};
|
|
12075
|
+
|
|
12076
|
+
/**
|
|
12077
|
+
* What the browser painted blue while it was still allowed to think this press
|
|
12078
|
+
* was about text.
|
|
12079
|
+
*
|
|
12080
|
+
* A mouse dragged across a page selects what it crosses, and it starts doing so
|
|
12081
|
+
* from the first pixel — while this is still spending ten of them deciding
|
|
12082
|
+
* whether the press is a travel at all. By the time it is one, a trail is
|
|
12083
|
+
* already there. `user-select: none` (see the CSS) stops it GROWING, it does not
|
|
12084
|
+
* take back what was made, and a selection already under way goes on being
|
|
12085
|
+
* extended by some browsers whatever the property says.
|
|
12086
|
+
*
|
|
12087
|
+
* So it is dropped, and dropped again as it comes back. The cause is outside —
|
|
12088
|
+
* one gesture, two things answering it, and the browser answers first — and
|
|
12089
|
+
* cannot be removed from here; what can be removed is its trace, on every frame
|
|
12090
|
+
* of a travel that is walking.
|
|
12091
|
+
*/
|
|
12092
|
+
const dropSelection = () => {
|
|
12093
|
+
const selection = window.getSelection();
|
|
12094
|
+
if (selection && !selection.isCollapsed) {
|
|
12095
|
+
selection.removeAllRanges();
|
|
12096
|
+
}
|
|
12097
|
+
};
|
|
12098
|
+
|
|
11941
12099
|
/**
|
|
11942
12100
|
* A scroller between the pointer and the box it is in, with room left the way
|
|
11943
12101
|
* the gesture goes: it gets the gesture, and nothing travels — dragging a row
|
|
@@ -12028,7 +12186,10 @@ const travelsAfter = ({
|
|
|
12028
12186
|
* travel, which the element under the finger may not.
|
|
12029
12187
|
* @param {"x"|"y"|"xy"} [options.axes="xy"] - which ways this box can travel. A
|
|
12030
12188
|
* finger leaning on any other axis is given up on at once, whole, so whatever
|
|
12031
|
-
* else wants it (a scroller, the page) gets it whole.
|
|
12189
|
+
* else wants it (a scroller, the page) gets it whole. An axis a box NESTED in
|
|
12190
|
+
* this one travels is not one of them: it is that box's, and this call
|
|
12191
|
+
* returns null when nothing is left (see axesLeftBy). Say so in the DOM with
|
|
12192
|
+
* [data-travel-by-drag] for the boxes above to read.
|
|
12032
12193
|
* @param {false|"x"|"y"} [options.immediate=false] - the axis this press is
|
|
12033
12194
|
* already on, for a press that landed on something moving: the gesture is
|
|
12034
12195
|
* then read from its first pixel instead of waiting for an intent, and every
|
|
@@ -12075,6 +12236,19 @@ const startDragToTravel = (pointerDownEvent, {
|
|
|
12075
12236
|
if (!target.closest || target.closest(DRAG_EXCLUDED_SELECTOR)) {
|
|
12076
12237
|
return null;
|
|
12077
12238
|
}
|
|
12239
|
+
// A box between the finger and this one that travels the same way: the
|
|
12240
|
+
// gesture is its, and this one is left with the axes it does not walk — none
|
|
12241
|
+
// at all, most of the time, and then there is no gesture here to read.
|
|
12242
|
+
const axesLeft = axesLeftBy(axes, target, element, DRAG_AXES_ATTRIBUTE);
|
|
12243
|
+
if (!axesLeft) {
|
|
12244
|
+
return null;
|
|
12245
|
+
}
|
|
12246
|
+
// What was caught in flight travels on an axis of its own, and it is not up
|
|
12247
|
+
// for decision: a box below has taken that axis, so what this press caught it
|
|
12248
|
+
// cannot carry on either.
|
|
12249
|
+
if (immediate && !axesLeft.includes(immediate)) {
|
|
12250
|
+
return null;
|
|
12251
|
+
}
|
|
12078
12252
|
|
|
12079
12253
|
// The travel in hand: null until the finger has picked an axis and the caller
|
|
12080
12254
|
// has accepted it.
|
|
@@ -12188,7 +12362,7 @@ const startDragToTravel = (pointerDownEvent, {
|
|
|
12188
12362
|
return;
|
|
12189
12363
|
}
|
|
12190
12364
|
axis = reachX >= reachY ? "x" : "y";
|
|
12191
|
-
if (!
|
|
12365
|
+
if (!axesLeft.includes(axis)) {
|
|
12192
12366
|
giveUp();
|
|
12193
12367
|
return;
|
|
12194
12368
|
}
|
|
@@ -12233,6 +12407,9 @@ const startDragToTravel = (pointerDownEvent, {
|
|
|
12233
12407
|
};
|
|
12234
12408
|
document.documentElement.setAttribute(WALKING_ATTRIBUTE, axis);
|
|
12235
12409
|
}
|
|
12410
|
+
// Whatever the press was taken for until now, it was taken for something
|
|
12411
|
+
// else (see dropSelection).
|
|
12412
|
+
dropSelection();
|
|
12236
12413
|
const {
|
|
12237
12414
|
axis
|
|
12238
12415
|
} = travel;
|
|
@@ -12294,6 +12471,10 @@ const startDragToTravel = (pointerDownEvent, {
|
|
|
12294
12471
|
return;
|
|
12295
12472
|
}
|
|
12296
12473
|
finish();
|
|
12474
|
+
// Last chance: the pointer moves once more as it goes up, and by then the
|
|
12475
|
+
// attribute above is off — so a trail made on that last move would be the
|
|
12476
|
+
// one that stays (see dropSelection).
|
|
12477
|
+
dropSelection();
|
|
12297
12478
|
const {
|
|
12298
12479
|
axis,
|
|
12299
12480
|
size,
|
|
@@ -12361,14 +12542,6 @@ const startDragToTravel = (pointerDownEvent, {
|
|
|
12361
12542
|
};
|
|
12362
12543
|
};
|
|
12363
12544
|
|
|
12364
|
-
// A wheel gesture has no beginning and no end of its own: it is a stream of
|
|
12365
|
-
// events that starts when the fingers move and stops some time after they are
|
|
12366
|
-
// gone — the tail of it is the momentum the system keeps sending. So the end is
|
|
12367
|
-
// read from silence, and long enough to survive a page that is busy: the frames
|
|
12368
|
-
// right after a travel sets off are the ones where the main thread has the most
|
|
12369
|
-
// to do, and a silence read there as "the hand is gone" would cut one gesture
|
|
12370
|
-
// into several.
|
|
12371
|
-
const WHEEL_GESTURE_END_DELAY = 150;
|
|
12372
12545
|
// What each screen AFTER the first costs inside one gesture. Deliberately
|
|
12373
12546
|
// steep: reconstructing "how much did that flick mean" from a stream nobody
|
|
12374
12547
|
// agrees on is guesswork, and a guess that overshoots leaves someone three
|
|
@@ -12407,6 +12580,12 @@ const WHEEL_FADE_RUN = 2;
|
|
|
12407
12580
|
* no idea how they got there. Under-shooting costs one more push, so that is
|
|
12408
12581
|
* the side to be wrong on.
|
|
12409
12582
|
*
|
|
12583
|
+
* A burst has no target either — every event lands on whatever is under the
|
|
12584
|
+
* pointer at that instant — so it is CLAIMED at its first event and answered to
|
|
12585
|
+
* the end wherever the pointer wanders (see wheel_gesture.js). Without that, a
|
|
12586
|
+
* hand pushing a nested carousel and drifting off it walks a slide, then walks
|
|
12587
|
+
* the box around it, on one push.
|
|
12588
|
+
*
|
|
12410
12589
|
* The rest of the stream is mostly momentum, still arriving with the fingers
|
|
12411
12590
|
* gone, and it must not be counted. What gives it away is that momentum only
|
|
12412
12591
|
* ever WEAKENS: a stream that keeps shrinking is a push already answered, and a
|
|
@@ -12415,7 +12594,9 @@ const WHEEL_FADE_RUN = 2;
|
|
|
12415
12594
|
* @param {Element} element
|
|
12416
12595
|
* @param {object} options
|
|
12417
12596
|
* @param {"x"|"y"|"xy"} [options.axes="xy"] - which ways this box can travel.
|
|
12418
|
-
* The other one is the content's own scrolling and is left alone
|
|
12597
|
+
* The other one is the content's own scrolling and is left alone, and an axis
|
|
12598
|
+
* a box NESTED in this one travels is that box's (see axesLeftBy). Say so in
|
|
12599
|
+
* the DOM with [data-travel-by-wheel] for the boxes above to read.
|
|
12419
12600
|
* @param {(detail: {axis: string, sign: number, event: WheelEvent}) => void} options.onStep
|
|
12420
12601
|
* - one push, one screen. `sign` is positive towards the start of the axis,
|
|
12421
12602
|
* which brings in what comes BEFORE — a wheel says how far the CONTENT
|
|
@@ -12427,9 +12608,7 @@ const watchWheelTravel = (element, {
|
|
|
12427
12608
|
onStep
|
|
12428
12609
|
}) => {
|
|
12429
12610
|
let gesture = null;
|
|
12430
|
-
let endTimeout = null;
|
|
12431
12611
|
const forgetGesture = () => {
|
|
12432
|
-
endTimeout = null;
|
|
12433
12612
|
gesture = null;
|
|
12434
12613
|
document.documentElement.removeAttribute(GESTURE_ATTRIBUTE);
|
|
12435
12614
|
document.documentElement.removeAttribute(WALKING_ATTRIBUTE);
|
|
@@ -12471,7 +12650,10 @@ const watchWheelTravel = (element, {
|
|
|
12471
12650
|
return clientX >= left && clientX <= right && clientY >= top && clientY <= bottom;
|
|
12472
12651
|
};
|
|
12473
12652
|
const onWheel = wheelEvent => {
|
|
12474
|
-
|
|
12653
|
+
// The burst is already somebody else's — the box inside this one, a wheel
|
|
12654
|
+
// picker, whoever answered its first event. It is theirs to the end of it,
|
|
12655
|
+
// wherever the pointer has drifted since (see wheel_gesture.js).
|
|
12656
|
+
if (wheelGestureIsTakenFrom(element)) {
|
|
12475
12657
|
return;
|
|
12476
12658
|
}
|
|
12477
12659
|
const axis = Math.abs(wheelEvent.deltaX) > Math.abs(wheelEvent.deltaY) ? "x" : "y";
|
|
@@ -12484,19 +12666,30 @@ const watchWheelTravel = (element, {
|
|
|
12484
12666
|
// right.
|
|
12485
12667
|
const sign = delta > 0 ? -1 : 1;
|
|
12486
12668
|
if (!gesture) {
|
|
12669
|
+
// Where the hand is pushing, asked at the START of a burst and never
|
|
12670
|
+
// again: from there on the gesture is this box's, and a pointer that has
|
|
12671
|
+
// wandered off it says nothing about what the hand is pushing.
|
|
12672
|
+
if (!isOverElement(wheelEvent)) {
|
|
12673
|
+
return;
|
|
12674
|
+
}
|
|
12487
12675
|
if (!axes.includes(axis)) {
|
|
12488
12676
|
// The other axis: the content's own scrolling, left whole to whatever
|
|
12489
12677
|
// wants it.
|
|
12490
12678
|
return;
|
|
12491
12679
|
}
|
|
12492
12680
|
// Who owns it, asked once for the gesture rather than for every event of
|
|
12493
|
-
// it — the same
|
|
12494
|
-
// file), and
|
|
12495
|
-
// prevented and the browser scrolls as it would have.
|
|
12681
|
+
// it — the same claims a press is read against (see the top of this
|
|
12682
|
+
// file), and all of them are answered by giving the gesture up whole:
|
|
12683
|
+
// nothing is prevented and the browser scrolls as it would have.
|
|
12496
12684
|
const {
|
|
12497
12685
|
target
|
|
12498
12686
|
} = wheelEvent;
|
|
12499
|
-
if (target.closest && target.closest(DRAG_EXCLUDED_SELECTOR) || scrollRoomTowards(target, element, axis, sign)
|
|
12687
|
+
if (target.closest && target.closest(DRAG_EXCLUDED_SELECTOR) || scrollRoomTowards(target, element, axis, sign) ||
|
|
12688
|
+
// …plus the third: a box below this one that travels on this axis. Its
|
|
12689
|
+
// watcher hears the same wheel event this one does — they all listen at
|
|
12690
|
+
// the document — so without this both step, and one push moves two
|
|
12691
|
+
// things.
|
|
12692
|
+
!axesLeftBy(axis, target, element, WHEEL_AXES_ATTRIBUTE)) {
|
|
12500
12693
|
return;
|
|
12501
12694
|
}
|
|
12502
12695
|
gesture = {
|
|
@@ -12514,8 +12707,11 @@ const watchWheelTravel = (element, {
|
|
|
12514
12707
|
// — scroll the page behind the box, bounce it, go back in history — is one
|
|
12515
12708
|
// gesture answered twice.
|
|
12516
12709
|
wheelEvent.preventDefault();
|
|
12517
|
-
|
|
12518
|
-
|
|
12710
|
+
// …and said on every event of it, because a claim nobody renews is a
|
|
12711
|
+
// gesture that is over: silence is the only end a wheel has.
|
|
12712
|
+
claimWheelGesture(element, {
|
|
12713
|
+
onEnd: forgetGesture
|
|
12714
|
+
});
|
|
12519
12715
|
if (axis !== gesture.axis) {
|
|
12520
12716
|
// The other axis mid-gesture: a hand is never perfectly straight, and the
|
|
12521
12717
|
// axis was decided when the gesture set off.
|
|
@@ -12572,11 +12768,10 @@ const watchWheelTravel = (element, {
|
|
|
12572
12768
|
document.removeEventListener("wheel", onWheel, {
|
|
12573
12769
|
capture: true
|
|
12574
12770
|
});
|
|
12575
|
-
|
|
12576
|
-
|
|
12577
|
-
|
|
12578
|
-
|
|
12579
|
-
document.documentElement.removeAttribute(WALKING_ATTRIBUTE);
|
|
12771
|
+
// Handed back rather than left to lapse: a box that is gone must not hold a
|
|
12772
|
+
// gesture the boxes still there are asking about.
|
|
12773
|
+
releaseWheelGesture(element);
|
|
12774
|
+
forgetGesture();
|
|
12580
12775
|
};
|
|
12581
12776
|
};
|
|
12582
12777
|
|
|
@@ -18117,4 +18312,4 @@ const useResizeStatus = (elementRef, { as = "number" } = {}) => {
|
|
|
18117
18312
|
};
|
|
18118
18313
|
};
|
|
18119
18314
|
|
|
18120
|
-
export { EASING, ELEMENT_SIZE_CHANGE, activeElementSignal, addActiveElementEffect, addAttributeEffect, allowWheelThrough, appendStyles, applyNewPosition, canScroll, captureScrollState, chainEvent, closestOpenableAncestor, contrastColor, createBackgroundColorTransition, createBackgroundTransition, createBorderRadiusTransition, createBorderTransition, createDragGestureController, createDragToMoveGestureController, createEventGroupLogger, createGroupTransitionController, createHeightTransition, createIterableWeakSet, createOpacityTransition, createPubSub, createStyleController, createTimelineTransition, createTransition, createTranslateXTransition, createValueEffect, createWidthTransition, cubicBezier, dispatchCustomEvent, dispatchInternalCustomEvent, dispatchPublicCustomEvent, dragAfterIntent, elementIsFocusable, elementIsVisibleForFocus, elementIsVisuallyVisible, findAfter, findAncestor, findBefore, findDescendant, findEvent, findFocusDelegateTarget, findFocusable, findSelfOrAncestorFixedPosition, formatEventSideEffect, getAncestorOpenType, getAvailableHeight, getAvailableWidth, getBackground, getBackgroundColor, getBorder, getBorderRadius, getBorderSizes, getContrastRatio, getDefaultStyles, getDragCoordinates, getDropTargetInfo, getElementSignature, getFirstVisuallyVisibleAncestor, getFocusVisibilityInfo, getHeight, getHeightWithoutTransition, getInnerHeight, getInnerWidth, getKeyboardEventDefaultAction, getLuminance, getMarginSizes, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpacity, getOpacityWithoutTransition, getPaddingSizes, getPositionedParent, getPositioningScrollOffset, getPreferedColorScheme, getScrollBox, getScrollContainer, getScrollContainerSet, getScrollRelativeRect, getSelfAndAncestorScrolls, getStyle, getTranslateX, getTranslateXWithoutTransition, getTranslateY, getVisuallyVisibleInfo, getWidth, getWidthWithoutTransition, hasCSSSizeUnit, initFlexDetailsSet, initFocusGroup, initPositionSticky, isAncestorOpen, isPrimaryButtonEvent, isSameColor, isScrollable, measureLongestVisualLineWidth, measureScrollbar, measureWidestChildRow, mergeOneStyle, mergeTwoStyles, normalizeKeyboardKey, normalizeStyle, normalizeStyles, observeAncestorOpenState, onAncestorReopen, parsePositionArea, parseStyle, performTabNavigation, pickPositionRelativeTo, prefersDarkColors, prefersLightColors, preventFocusNav, preventFocusNavViaKeyboard, preventIntermediateScrollbar, resolveCSSColor, resolveCSSSize, resolveColorLuminance, resolveOklchLightness, scrollIntoViewScoped, scrollIntoViewWithStickyAwareness, scrollRoomTowards, setAttribute, setAttributes, setStyles, snapToPixel, startDragToReorder, startDragToResizeGesture, startDragToTravel, stickyAsRelativeCoords, stringifyStyle, subscribeVisualViewportResizeSettled, subscribeWindowResizeSettled, trapFocusInside, trapScrollInside, useActiveElement, useAvailableHeight, useAvailableWidth, useMaxHeight, useMaxWidth, useResizeStatus, visibleRectEffect, watchWheelTravel };
|
|
18315
|
+
export { EASING, ELEMENT_SIZE_CHANGE, activeElementSignal, addActiveElementEffect, addAttributeEffect, allowWheelThrough, appendStyles, applyNewPosition, canScroll, captureScrollState, chainEvent, claimWheelGesture, closestOpenableAncestor, contrastColor, createBackgroundColorTransition, createBackgroundTransition, createBorderRadiusTransition, createBorderTransition, createDragGestureController, createDragToMoveGestureController, createEventGroupLogger, createGroupTransitionController, createHeightTransition, createIterableWeakSet, createOpacityTransition, createPubSub, createStyleController, createTimelineTransition, createTransition, createTranslateXTransition, createValueEffect, createWidthTransition, cubicBezier, dispatchCustomEvent, dispatchInternalCustomEvent, dispatchPublicCustomEvent, dragAfterIntent, elementIsFocusable, elementIsVisibleForFocus, elementIsVisuallyVisible, findAfter, findAncestor, findBefore, findDescendant, findEvent, findFocusDelegateTarget, findFocusable, findSelfOrAncestorFixedPosition, formatEventSideEffect, getAncestorOpenType, getAvailableHeight, getAvailableWidth, getBackground, getBackgroundColor, getBorder, getBorderRadius, getBorderSizes, getContrastRatio, getDefaultStyles, getDragCoordinates, getDropTargetInfo, getElementSignature, getFirstVisuallyVisibleAncestor, getFocusVisibilityInfo, getHeight, getHeightWithoutTransition, getInnerHeight, getInnerWidth, getKeyboardEventDefaultAction, getLuminance, getMarginSizes, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpacity, getOpacityWithoutTransition, getPaddingSizes, getPositionedParent, getPositioningScrollOffset, getPreferedColorScheme, getScrollBox, getScrollContainer, getScrollContainerSet, getScrollRelativeRect, getSelfAndAncestorScrolls, getStyle, getTranslateX, getTranslateXWithoutTransition, getTranslateY, getVisuallyVisibleInfo, getWidth, getWidthWithoutTransition, hasCSSSizeUnit, initFlexDetailsSet, initFocusGroup, initPositionSticky, isAncestorOpen, isPrimaryButtonEvent, isSameColor, isScrollable, measureLongestVisualLineWidth, measureScrollbar, measureWidestChildRow, mergeOneStyle, mergeTwoStyles, normalizeKeyboardKey, normalizeStyle, normalizeStyles, observeAncestorOpenState, onAncestorReopen, parsePositionArea, parseStyle, performTabNavigation, pickPositionRelativeTo, prefersDarkColors, prefersLightColors, preventFocusNav, preventFocusNavViaKeyboard, preventIntermediateScrollbar, releaseWheelGesture, resolveCSSColor, resolveCSSSize, resolveColorLuminance, resolveOklchLightness, scrollIntoViewScoped, scrollIntoViewWithStickyAwareness, scrollRoomTowards, setAttribute, setAttributes, setStyles, snapToPixel, startDragToReorder, startDragToResizeGesture, startDragToTravel, stickyAsRelativeCoords, stringifyStyle, subscribeVisualViewportResizeSettled, subscribeWindowResizeSettled, trapFocusInside, trapScrollInside, useActiveElement, useAvailableHeight, useAvailableWidth, useMaxHeight, useMaxWidth, useResizeStatus, visibleRectEffect, watchWheelTravel, wheelGestureIsTakenFrom };
|