@jsenv/dom 0.17.60 → 0.17.62
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 +179 -114
- package/package.json +3 -3
package/dist/jsenv_dom.js
CHANGED
|
@@ -2134,6 +2134,9 @@ const parseCSSTransform = (transformString, normalize) => {
|
|
|
2134
2134
|
}
|
|
2135
2135
|
|
|
2136
2136
|
const transformObj = {};
|
|
2137
|
+
// Set as soon as a part of the transform cannot be said with named keys
|
|
2138
|
+
// (a complex 3D matrix, a function whose value we cannot normalize).
|
|
2139
|
+
let somethingCouldNotBeRead = false;
|
|
2137
2140
|
|
|
2138
2141
|
for (const { functionName, value, source } of readTransformFunctions(
|
|
2139
2142
|
transformString,
|
|
@@ -2144,20 +2147,32 @@ const parseCSSTransform = (transformString, normalize) => {
|
|
|
2144
2147
|
if (matrixComponents) {
|
|
2145
2148
|
// Only add non-default values to preserve original information
|
|
2146
2149
|
Object.assign(transformObj, matrixComponents);
|
|
2150
|
+
} else {
|
|
2151
|
+
// If matrix can't be parsed to simple components, skip it (keep complex transforms as-is)
|
|
2152
|
+
somethingCouldNotBeRead = true;
|
|
2147
2153
|
}
|
|
2148
|
-
// If matrix can't be parsed to simple components, skip it (keep complex transforms as-is)
|
|
2149
2154
|
continue;
|
|
2150
2155
|
}
|
|
2151
2156
|
|
|
2152
2157
|
// Handle regular transform functions
|
|
2153
2158
|
const normalizedValue = normalize(value.trim(), functionName, "js");
|
|
2154
|
-
if (normalizedValue
|
|
2155
|
-
|
|
2159
|
+
if (normalizedValue === undefined) {
|
|
2160
|
+
somethingCouldNotBeRead = true;
|
|
2161
|
+
continue;
|
|
2156
2162
|
}
|
|
2163
|
+
transformObj[functionName] = normalizedValue;
|
|
2157
2164
|
}
|
|
2158
2165
|
|
|
2159
|
-
//
|
|
2160
|
-
|
|
2166
|
+
// Nothing was extracted: either the transform truly holds nothing worth naming
|
|
2167
|
+
// (an identity matrix, what "translateX(0px)" computes to), which is an empty
|
|
2168
|
+
// object, or it holds something we could not read, which is undefined —
|
|
2169
|
+
// "there is a transform here, do not treat it as none". The two must not be
|
|
2170
|
+
// confused: an empty object stringifies back to "none" and would wipe a
|
|
2171
|
+
// transform we merely failed to understand.
|
|
2172
|
+
if (Object.keys(transformObj).length === 0 && somethingCouldNotBeRead) {
|
|
2173
|
+
return undefined;
|
|
2174
|
+
}
|
|
2175
|
+
return transformObj;
|
|
2161
2176
|
};
|
|
2162
2177
|
|
|
2163
2178
|
// Cuts "translateX(10px) translateY(env(safe-area-inset-top))" into its
|
|
@@ -2627,17 +2642,32 @@ const normalizeStyle = (
|
|
|
2627
2642
|
return value;
|
|
2628
2643
|
}
|
|
2629
2644
|
const transformProperty = propertyName.slice(10); // Remove "transform." prefix
|
|
2645
|
+
const getDefaultTransformPartValue = () => {
|
|
2646
|
+
if (transformProperty.startsWith("scale")) {
|
|
2647
|
+
return 1;
|
|
2648
|
+
}
|
|
2649
|
+
// translate, rotate, skew
|
|
2650
|
+
return 0;
|
|
2651
|
+
};
|
|
2630
2652
|
// If value is a CSS transform string, parse it first to extract the specific property
|
|
2631
2653
|
if (typeof value === "string") {
|
|
2632
2654
|
if (value === "none") {
|
|
2633
|
-
|
|
2634
|
-
return 1;
|
|
2635
|
-
}
|
|
2636
|
-
// translate, rotate, skew
|
|
2637
|
-
return 0;
|
|
2655
|
+
return getDefaultTransformPartValue();
|
|
2638
2656
|
}
|
|
2639
2657
|
const parsedTransform = parseCSSTransform(value, normalizeStyle);
|
|
2640
|
-
|
|
2658
|
+
if (!parsedTransform) {
|
|
2659
|
+
// The transform could not be read as named parts; we know nothing about
|
|
2660
|
+
// this one, and saying 0 would be inventing a position.
|
|
2661
|
+
return undefined;
|
|
2662
|
+
}
|
|
2663
|
+
const transformPartValue = parsedTransform[transformProperty];
|
|
2664
|
+
if (transformPartValue === undefined) {
|
|
2665
|
+
// The transform was read and does not translate/rotate/scale on this
|
|
2666
|
+
// axis: that is the default value, not the absence of an answer.
|
|
2667
|
+
// "rotate(45deg)" has a translateX, and it is 0.
|
|
2668
|
+
return getDefaultTransformPartValue();
|
|
2669
|
+
}
|
|
2670
|
+
return transformPartValue;
|
|
2641
2671
|
}
|
|
2642
2672
|
// If value is a transform object, extract the property directly
|
|
2643
2673
|
if (typeof value === "object" && value !== null) {
|
|
@@ -4675,6 +4705,105 @@ const waitForPressHeld = (
|
|
|
4675
4705
|
};
|
|
4676
4706
|
};
|
|
4677
4707
|
|
|
4708
|
+
/**
|
|
4709
|
+
* A press that turns out to be a tap: let go of before it went anywhere.
|
|
4710
|
+
*
|
|
4711
|
+
* The counterpart of the hold next door (press_held.js). That one is a press
|
|
4712
|
+
* saying something by NOT moving for long enough; this one is a press saying
|
|
4713
|
+
* something by being BRIEF — and it is the same ambiguity read from the other
|
|
4714
|
+
* end, so a caller that reads both gets one press told apart once.
|
|
4715
|
+
*
|
|
4716
|
+
* Its reason to exist is what a tap is NOT: a `click` is the browser's answer to
|
|
4717
|
+
* the same question and it cannot be counted, because a browser withholds the
|
|
4718
|
+
* clicks of a gesture it is keeping for itself — two taps in a row on a page
|
|
4719
|
+
* that can be double-tap-zoomed produce two `pointerup` and a single `click`.
|
|
4720
|
+
* Anything counting presses (a double click that has to mean the same thing
|
|
4721
|
+
* under a finger and under a mouse) therefore has to read the pointer, and this
|
|
4722
|
+
* is that read: one press in, "it stayed a tap" out.
|
|
4723
|
+
*
|
|
4724
|
+
* What disqualifies a press is exactly what says it became a gesture: it
|
|
4725
|
+
* travelled (past `slop`), or the browser took the touch for itself
|
|
4726
|
+
* (`pointercancel` — a scroll starting under the finger, the system's own
|
|
4727
|
+
* double-tap zoom). How LONG it lasted is not asked here: a press held still is
|
|
4728
|
+
* a tap for as long as the hand wants, and whether a slow one still counts
|
|
4729
|
+
* towards whatever is being counted belongs to the counter, which is the only
|
|
4730
|
+
* one that knows what rhythm it is looking for.
|
|
4731
|
+
*/
|
|
4732
|
+
|
|
4733
|
+
// How far the pointer may travel and still be a tap. Wider than a hold's slop
|
|
4734
|
+
// because it is a different question: a hold asks whether a finger is standing
|
|
4735
|
+
// still, a tap only asks whether the press went somewhere — and between two of
|
|
4736
|
+
// them the finger LEAVES the glass, so what a counter compares is fingertips
|
|
4737
|
+
// apart rather than pixels apart.
|
|
4738
|
+
const TAP_SLOP_DEFAULT = 30;
|
|
4739
|
+
|
|
4740
|
+
/**
|
|
4741
|
+
* Watches one press and says whether it stayed a tap.
|
|
4742
|
+
*
|
|
4743
|
+
* @param {PointerEvent} pressEvent The `pointerdown` that may be a tap.
|
|
4744
|
+
* @param {object} options
|
|
4745
|
+
* @param {number} [options.slop=30] How far (px) the pointer may travel before
|
|
4746
|
+
* the press is a gesture rather than a tap.
|
|
4747
|
+
* @param {(tapEvent: PointerEvent) => void} options.onTap The press was let go
|
|
4748
|
+
* of, having gone nowhere.
|
|
4749
|
+
* @returns {{ cancel: () => void }} Somebody else settled what the press is.
|
|
4750
|
+
*/
|
|
4751
|
+
const waitForTap = (pressEvent, { slop = TAP_SLOP_DEFAULT, onTap }) => {
|
|
4752
|
+
const { pointerId, clientX, clientY } = pressEvent;
|
|
4753
|
+
|
|
4754
|
+
const cleanupCallbacks = [];
|
|
4755
|
+
const stopWatching = () => {
|
|
4756
|
+
for (const cleanupCallback of cleanupCallbacks) {
|
|
4757
|
+
cleanupCallback();
|
|
4758
|
+
}
|
|
4759
|
+
cleanupCallbacks.length = 0;
|
|
4760
|
+
};
|
|
4761
|
+
|
|
4762
|
+
const onPointerMove = (pointerMoveEvent) => {
|
|
4763
|
+
if (pointerMoveEvent.pointerId !== pointerId) {
|
|
4764
|
+
return;
|
|
4765
|
+
}
|
|
4766
|
+
const xTravel = Math.abs(pointerMoveEvent.clientX - clientX);
|
|
4767
|
+
const yTravel = Math.abs(pointerMoveEvent.clientY - clientY);
|
|
4768
|
+
if (xTravel < slop && yTravel < slop) {
|
|
4769
|
+
return;
|
|
4770
|
+
}
|
|
4771
|
+
// The press is going somewhere: it is scrolling, swiping, panning, carrying
|
|
4772
|
+
// something. Whatever it is, it is not a tap.
|
|
4773
|
+
stopWatching();
|
|
4774
|
+
};
|
|
4775
|
+
const onPointerUp = (pointerUpEvent) => {
|
|
4776
|
+
if (pointerUpEvent.pointerId !== pointerId) {
|
|
4777
|
+
return;
|
|
4778
|
+
}
|
|
4779
|
+
stopWatching();
|
|
4780
|
+
onTap(pointerUpEvent);
|
|
4781
|
+
};
|
|
4782
|
+
// Not the hand letting go: the browser saying it is taking the touch for a
|
|
4783
|
+
// gesture of its own, which is the one press that ends without ever having
|
|
4784
|
+
// been anybody else's.
|
|
4785
|
+
const onPointerCancel = (pointerCancelEvent) => {
|
|
4786
|
+
if (pointerCancelEvent.pointerId !== pointerId) {
|
|
4787
|
+
return;
|
|
4788
|
+
}
|
|
4789
|
+
stopWatching();
|
|
4790
|
+
};
|
|
4791
|
+
// On window rather than on the element: the pointer can leave it, and the
|
|
4792
|
+
// element itself can be taken out of the document while the press is watched.
|
|
4793
|
+
window.addEventListener("pointermove", onPointerMove);
|
|
4794
|
+
window.addEventListener("pointerup", onPointerUp);
|
|
4795
|
+
window.addEventListener("pointercancel", onPointerCancel);
|
|
4796
|
+
cleanupCallbacks.push(() => {
|
|
4797
|
+
window.removeEventListener("pointermove", onPointerMove);
|
|
4798
|
+
window.removeEventListener("pointerup", onPointerUp);
|
|
4799
|
+
window.removeEventListener("pointercancel", onPointerCancel);
|
|
4800
|
+
});
|
|
4801
|
+
|
|
4802
|
+
return {
|
|
4803
|
+
cancel: stopWatching,
|
|
4804
|
+
};
|
|
4805
|
+
};
|
|
4806
|
+
|
|
4678
4807
|
const activeElementSignal = signal(
|
|
4679
4808
|
typeof document === "object" ? document.activeElement : undefined,
|
|
4680
4809
|
);
|
|
@@ -8472,7 +8601,7 @@ const installImportMetaCssBuild = (importMeta) => {
|
|
|
8472
8601
|
const stylesheet = new CSSStyleSheet({ baseUrl: importMeta.url });
|
|
8473
8602
|
stylesheet.replaceSync(value);
|
|
8474
8603
|
stylesheetMap.set(url, stylesheet);
|
|
8475
|
-
document.adoptedStyleSheets
|
|
8604
|
+
document.adoptedStyleSheets.push(stylesheet);
|
|
8476
8605
|
};
|
|
8477
8606
|
const update = (url, value) => {
|
|
8478
8607
|
stylesheetMap.get(url).replaceSync(value);
|
|
@@ -12038,113 +12167,44 @@ const findTableCellCol = (cellElement) => {
|
|
|
12038
12167
|
installImportMetaCssBuild(import.meta);
|
|
12039
12168
|
|
|
12040
12169
|
// While a pointer is on something that travels: said on the document, because
|
|
12041
|
-
// what has to be told is the document.
|
|
12170
|
+
// what has to be told is the document. The selector below writes it out rather
|
|
12171
|
+
// than reading this constant: a substitution in a selector is one the build
|
|
12172
|
+
// cannot read, and it ships the whole stylesheet unparsed and uncompressed.
|
|
12042
12173
|
const GESTURE_ATTRIBUTE = "data-drag-travel-gesture";
|
|
12043
12174
|
|
|
12044
12175
|
// …and while one is actually travelling something, which is a later moment and
|
|
12045
12176
|
// takes more away (see the CSS).
|
|
12046
12177
|
const WALKING_ATTRIBUTE = "data-drag-travel-walking";
|
|
12047
12178
|
|
|
12048
|
-
import.meta.css = /* css */ [
|
|
12049
|
-
:
|
|
12050
|
-
|
|
12051
|
-
|
|
12052
|
-
|
|
12053
|
-
|
|
12054
|
-
|
|
12055
|
-
|
|
12056
|
-
|
|
12057
|
-
|
|
12058
|
-
|
|
12059
|
-
|
|
12060
|
-
|
|
12061
|
-
|
|
12062
|
-
|
|
12063
|
-
|
|
12064
|
-
|
|
12065
|
-
|
|
12066
|
-
|
|
12067
|
-
|
|
12068
|
-
|
|
12069
|
-
|
|
12070
|
-
|
|
12071
|
-
On the axis the box travels on, and that one only: the other axis is the
|
|
12072
|
-
content's own scrolling and is left alone. Containing does not stop it from
|
|
12073
|
-
scrolling anyway — it stops it from spilling over.
|
|
12074
|
-
|
|
12075
|
-
!important because this is not a preference: a box that travels cannot let
|
|
12076
|
-
the page travel with it, and the rule has to win over whatever an
|
|
12077
|
-
application says about its own scrollers.
|
|
12078
|
-
|
|
12079
|
-
Said on the box, where it is a statement about the box and not about what
|
|
12080
|
-
it happens to hold — and read only where a browser asks the box at all:
|
|
12081
|
-
one that CLIPS is asked (it is a scroll container, which is what "asked"
|
|
12082
|
-
means to a browser), one that does not is walked past. A box that travels
|
|
12083
|
-
usually clips, because moving something in and out of a box is what
|
|
12084
|
-
clipping is for. One that does not still travels — what an inner scroller
|
|
12085
|
-
has left over reaches the page there, and the rule below says why that is
|
|
12086
|
-
the lesser of the two prices. An application that knows which of ITS
|
|
12087
|
-
elements scroll can contain those itself, on the element every engine
|
|
12088
|
-
reads; nothing in here can know that from a stylesheet. */
|
|
12089
|
-
[data-drag-travel*="x"] {
|
|
12090
|
-
overscroll-behavior-x: contain !important;
|
|
12091
|
-
}
|
|
12092
|
-
[data-drag-travel*="y"] {
|
|
12093
|
-
overscroll-behavior-y: contain !important;
|
|
12094
|
-
}
|
|
12095
|
-
/* The scrollers a browser makes on its own, wherever they are inside the box:
|
|
12096
|
-
a textarea and a list of options scroll their own content by nature, and
|
|
12097
|
-
nobody had to say so for them — no stylesheet declared them, so nothing
|
|
12098
|
-
else here can find them, and they would hand what is left of a gesture to
|
|
12099
|
-
the page like any undeclared scroller does.
|
|
12100
|
-
|
|
12101
|
-
Named rather than found, because being native is exactly what makes them
|
|
12102
|
-
nameable. An input is NOT in the list: it is the one form control that has
|
|
12103
|
-
nothing to scroll on the axis anything travels on, and containing it is how
|
|
12104
|
-
a row-wide invisible checkbox becomes a hole under the wheel.
|
|
12105
|
-
|
|
12106
|
-
A textarea with nothing in it, or a list of options short enough to fit, is
|
|
12107
|
-
contained too — a browser cannot be asked "only if it scrolls". On Blink
|
|
12108
|
-
that costs a wheel over an empty textarea, which then moves nothing rather
|
|
12109
|
-
than the list around it; elsewhere the engine already only asks what
|
|
12110
|
-
scrolls. Worth the page not moving behind a travel. */
|
|
12111
|
-
[data-drag-travel*="x"] :is(textarea, select[multiple], select[size]) {
|
|
12179
|
+
import.meta.css = /* css */ [`:root[data-drag-travel-gesture] {
|
|
12180
|
+
overscroll-behavior: none;
|
|
12181
|
+
}
|
|
12182
|
+
|
|
12183
|
+
[data-drag-travel*="x"] {
|
|
12184
|
+
overscroll-behavior-x: contain !important;
|
|
12185
|
+
}
|
|
12186
|
+
|
|
12187
|
+
[data-drag-travel*="y"] {
|
|
12188
|
+
overscroll-behavior-y: contain !important;
|
|
12189
|
+
}
|
|
12190
|
+
|
|
12191
|
+
[data-drag-travel*="x"] :is(textarea, select[multiple], select[size]) {
|
|
12192
|
+
overscroll-behavior-x: contain !important;
|
|
12193
|
+
}
|
|
12194
|
+
|
|
12195
|
+
[data-drag-travel*="y"] :is(textarea, select[multiple], select[size]) {
|
|
12196
|
+
overscroll-behavior-y: contain !important;
|
|
12197
|
+
}
|
|
12198
|
+
|
|
12199
|
+
@supports not (-webkit-app-region: none) {
|
|
12200
|
+
[data-drag-travel*="x"] * {
|
|
12112
12201
|
overscroll-behavior-x: contain !important;
|
|
12113
12202
|
}
|
|
12114
|
-
|
|
12203
|
+
|
|
12204
|
+
[data-drag-travel*="y"] * {
|
|
12115
12205
|
overscroll-behavior-y: contain !important;
|
|
12116
12206
|
}
|
|
12117
|
-
|
|
12118
|
-
is what works.
|
|
12119
|
-
|
|
12120
|
-
Two readings of "contain" are out there, and the rule above lands in only
|
|
12121
|
-
one of them. Blink walks EVERY scroll container between the pointer and the
|
|
12122
|
-
page and asks each one whether the gesture may go past it, whether or not
|
|
12123
|
-
it had anything to scroll: the box above is asked, and containing it is the
|
|
12124
|
-
whole answer. Gecko and WebKit ask only the ones that actually scroll: the
|
|
12125
|
-
box is skipped (it travels, it does not scroll), and what is left of a
|
|
12126
|
-
list's gesture reaches the page unless the LIST itself was told — which is
|
|
12127
|
-
what this does, to everything, because which descendant scrolls is not
|
|
12128
|
-
something a stylesheet can know.
|
|
12129
|
-
|
|
12130
|
-
Not said to Blink, where it is not needed and does harm: an element that
|
|
12131
|
-
clips is a scroll container to a browser (a line of text with an ellipsis,
|
|
12132
|
-
a rounded card, an invisible checkbox covering a row), and Blink asking one
|
|
12133
|
-
of those with nothing to scroll gets "no further" for an answer — the wheel
|
|
12134
|
-
stops there and the list right above it never moves. A dead zone under the
|
|
12135
|
-
pointer, wherever something inside the box happens to clip.
|
|
12136
|
-
|
|
12137
|
-
Blink is told apart by a property only it has, rather than by reading a user
|
|
12138
|
-
agent: the split above is between engines, and -webkit-app-region is one of
|
|
12139
|
-
the few things that names one. */
|
|
12140
|
-
@supports not (-webkit-app-region: none) {
|
|
12141
|
-
[data-drag-travel*="x"] * {
|
|
12142
|
-
overscroll-behavior-x: contain !important;
|
|
12143
|
-
}
|
|
12144
|
-
[data-drag-travel*="y"] * {
|
|
12145
|
-
overscroll-behavior-y: contain !important;
|
|
12146
|
-
}
|
|
12147
|
-
}
|
|
12207
|
+
}
|
|
12148
12208
|
`, "@jsenv/dom/src/interaction/drag/drag_to_travel.js"];
|
|
12149
12209
|
|
|
12150
12210
|
// How far a pointer goes before it is a travel rather than a click: below this
|
|
@@ -14077,10 +14137,15 @@ const createDragToMoveGestureController = ({
|
|
|
14077
14137
|
// (e.g. a drag clone passed by the caller) or the element itself.
|
|
14078
14138
|
// Capture any pre-existing translate so we can accumulate on top of it
|
|
14079
14139
|
// rather than resetting it to zero on the first drag event.
|
|
14080
|
-
|
|
14081
|
-
|
|
14082
|
-
|
|
14083
|
-
|
|
14140
|
+
// Nothing is written on the element on "manual" (the caller draws it where
|
|
14141
|
+
// it goes), so there is nothing to accumulate on and nothing to read.
|
|
14142
|
+
const transformAtGrabOrNull =
|
|
14143
|
+
dragPositionEffect === "manual"
|
|
14144
|
+
? null
|
|
14145
|
+
: dragStyleController.getUnderlyingValue(elementImpacted, "transform");
|
|
14146
|
+
// A transform that cannot be read as named parts (a complex 3D matrix)
|
|
14147
|
+
// comes back undefined: the drag then starts from a zero baseline.
|
|
14148
|
+
const transformAtGrab = transformAtGrabOrNull || {};
|
|
14084
14149
|
const translateXAtGrab = transformAtGrab.translateX;
|
|
14085
14150
|
const translateYAtGrab = transformAtGrab.translateY;
|
|
14086
14151
|
|
|
@@ -21675,4 +21740,4 @@ const useResizeStatus = (elementRef, { as = "number" } = {}) => {
|
|
|
21675
21740
|
};
|
|
21676
21741
|
};
|
|
21677
21742
|
|
|
21678
|
-
export { EASING, ELEMENT_SIZE_CHANGE, activeElementSignal, addActiveElementEffect, addAttributeEffect, allowWheelThrough, appendStyles, applyNewPosition, canScroll, captureScrollState, chainEvent, claimWheelGesture, clickIsSuppressed, 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, getScrollIntoViewScopedOffsets, getScrollRelativeRect, getSelfAndAncestorScrolls, getStyle, getTranslateX, getTranslateXWithoutTransition, getTranslateY, getVirtualKeyboardOverlayHeight, getVisuallyVisibleInfo, getWidth, getWidthWithoutTransition, hasCSSSizeUnit, initFlexDetailsSet, initFocusGroup, initPositionSticky, installPanZoom, isAncestorOpen, isDisplayedDespiteClosedAncestor, isPressDisputedByDrag, isPressDrivenClick, isPrimaryButtonEvent, isSameColor, isScrollable, isTouchDrivenEvent, keepTouchRefusable, markDragSource, measureLongestVisualLineWidth, measureScrollbar, measureWidestChildRow, mergeOneStyle, mergeTwoStyles, normalizeKeyboardKey, normalizeStyle, normalizeStyles, observeAncestorOpenState, onAncestorReopen, parsePositionArea, parseStyle, performTabNavigation, pickPositionRelativeTo, prefersDarkColors, prefersLightColors, preventFocusNav, preventFocusNavViaKeyboard, preventIntermediateScrollbar, refuseDragTo, releaseWheelGesture, resolveCSSColor, resolveCSSSize, resolveColorLuminance, resolveOklchLightness, scrollIntoViewScoped, scrollIntoViewThroughScrollables, scrollIntoViewWithStickyAwareness, scrollRoomTowards, setAttribute, setAttributes, setPlacementViewportInsets, setStyles, setVirtualKeyboardOverlaysContent, snapToPixel, startDragTo, startDragToResizeGesture, startDragToTravel, stickyAsRelativeCoords, stringifyStyle, subscribeVirtualKeyboardGeometryChange, subscribeVisualViewportResizeSettled, subscribeWindowResizeSettled, suppressClickAfterGesture, trapFocusInside, trapScrollInside, useActiveElement, useAvailableHeight, useAvailableWidth, useMaxHeight, useMaxWidth, useResizeStatus, visibleRectEffect, waitForPressHeld, watchWheelTravel, wheelGestureIsTakenFrom };
|
|
21743
|
+
export { EASING, ELEMENT_SIZE_CHANGE, activeElementSignal, addActiveElementEffect, addAttributeEffect, allowWheelThrough, appendStyles, applyNewPosition, canScroll, captureScrollState, chainEvent, claimWheelGesture, clickIsSuppressed, 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, getScrollIntoViewScopedOffsets, getScrollRelativeRect, getSelfAndAncestorScrolls, getStyle, getTranslateX, getTranslateXWithoutTransition, getTranslateY, getVirtualKeyboardOverlayHeight, getVisuallyVisibleInfo, getWidth, getWidthWithoutTransition, hasCSSSizeUnit, initFlexDetailsSet, initFocusGroup, initPositionSticky, installPanZoom, isAncestorOpen, isDisplayedDespiteClosedAncestor, isPressDisputedByDrag, isPressDrivenClick, isPrimaryButtonEvent, isSameColor, isScrollable, isTouchDrivenEvent, keepTouchRefusable, markDragSource, measureLongestVisualLineWidth, measureScrollbar, measureWidestChildRow, mergeOneStyle, mergeTwoStyles, normalizeKeyboardKey, normalizeStyle, normalizeStyles, observeAncestorOpenState, onAncestorReopen, parsePositionArea, parseStyle, performTabNavigation, pickPositionRelativeTo, prefersDarkColors, prefersLightColors, preventFocusNav, preventFocusNavViaKeyboard, preventIntermediateScrollbar, refuseDragTo, releaseWheelGesture, resolveCSSColor, resolveCSSSize, resolveColorLuminance, resolveOklchLightness, scrollIntoViewScoped, scrollIntoViewThroughScrollables, scrollIntoViewWithStickyAwareness, scrollRoomTowards, setAttribute, setAttributes, setPlacementViewportInsets, setStyles, setVirtualKeyboardOverlaysContent, snapToPixel, startDragTo, startDragToResizeGesture, startDragToTravel, stickyAsRelativeCoords, stringifyStyle, subscribeVirtualKeyboardGeometryChange, subscribeVisualViewportResizeSettled, subscribeWindowResizeSettled, suppressClickAfterGesture, trapFocusInside, trapScrollInside, useActiveElement, useAvailableHeight, useAvailableWidth, useMaxHeight, useMaxWidth, useResizeStatus, visibleRectEffect, waitForPressHeld, waitForTap, watchWheelTravel, wheelGestureIsTakenFrom };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jsenv/dom",
|
|
3
|
-
"version": "0.17.
|
|
3
|
+
"version": "0.17.62",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "DOM utilities for writing frontend code",
|
|
6
6
|
"repository": {
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
39
|
"@preact/signals": "^2.11.2",
|
|
40
|
-
"preact": "^11.0.0-
|
|
40
|
+
"preact": "^11.0.0-rc.2"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {},
|
|
43
43
|
"devDependencies": {
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"@jsenv/navi": "../navi",
|
|
46
46
|
"@jsenv/snapshot": "../../tooling/snapshot",
|
|
47
47
|
"@preact/signals": "2.11.2",
|
|
48
|
-
"preact": "11.0.0-
|
|
48
|
+
"preact": "11.0.0-rc.2"
|
|
49
49
|
},
|
|
50
50
|
"publishConfig": {
|
|
51
51
|
"access": "public"
|