@geometra/core 1.17.0 → 1.19.0
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/animation.d.ts +10 -0
- package/dist/animation.d.ts.map +1 -1
- package/dist/animation.js +39 -4
- package/dist/animation.js.map +1 -1
- package/dist/app.d.ts +3 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +1 -7
- package/dist/app.js.map +1 -1
- package/dist/direction.d.ts +5 -0
- package/dist/direction.d.ts.map +1 -1
- package/dist/direction.js +5 -0
- package/dist/direction.js.map +1 -1
- package/dist/focus-trap.d.ts +10 -2
- package/dist/focus-trap.d.ts.map +1 -1
- package/dist/focus-trap.js +18 -4
- package/dist/focus-trap.js.map +1 -1
- package/dist/hit-test.d.ts +1 -1
- package/dist/hit-test.d.ts.map +1 -1
- package/dist/hit-test.js +90 -69
- package/dist/hit-test.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/layout-bounds.d.ts +27 -0
- package/dist/layout-bounds.d.ts.map +1 -1
- package/dist/layout-bounds.js +38 -0
- package/dist/layout-bounds.js.map +1 -1
- package/dist/performance-now.d.ts +1 -1
- package/dist/performance-now.js +1 -1
- package/dist/responsive.d.ts +17 -1
- package/dist/responsive.d.ts.map +1 -1
- package/dist/responsive.js +33 -6
- package/dist/responsive.js.map +1 -1
- package/dist/selection.d.ts +9 -0
- package/dist/selection.d.ts.map +1 -1
- package/dist/selection.js +18 -5
- package/dist/selection.js.map +1 -1
- package/dist/seo.d.ts +11 -1
- package/dist/seo.d.ts.map +1 -1
- package/dist/seo.js +6 -2
- package/dist/seo.js.map +1 -1
- package/dist/stream-text.d.ts +21 -5
- package/dist/stream-text.d.ts.map +1 -1
- package/dist/stream-text.js +16 -4
- package/dist/stream-text.js.map +1 -1
- package/dist/tree.d.ts +2 -2
- package/dist/tree.d.ts.map +1 -1
- package/dist/tree.js +5 -4
- package/dist/tree.js.map +1 -1
- package/dist/types.d.ts +9 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/virtual-scroll.d.ts.map +1 -1
- package/dist/virtual-scroll.js +18 -6
- package/dist/virtual-scroll.js.map +1 -1
- package/package.json +2 -2
package/dist/animation.d.ts
CHANGED
|
@@ -112,6 +112,16 @@ export declare function spring(target: Signal<number>, config?: {
|
|
|
112
112
|
*
|
|
113
113
|
* When `Date.now()` moves backward (clock skew, sleep/wake, manual adjustment), `dt` is clamped to `0`
|
|
114
114
|
* so callbacks never see a negative delta.
|
|
115
|
+
*
|
|
116
|
+
* When `Date.now()` is non-finite (NaN or ±Infinity from a broken host or mock), that sample is ignored:
|
|
117
|
+
* `lastTime` is not advanced with a bad value and `dt` is `0`, so callbacks never receive a non-finite delta.
|
|
118
|
+
*
|
|
119
|
+
* When the **initial** `Date.now()` at loop start is non-finite, the loop stays unanchored until the first finite
|
|
120
|
+
* sample; that tick delivers `dt === 0` and sets the anchor so a later finite sample cannot inherit a bogus
|
|
121
|
+
* `lastTime` of `0` (which would otherwise produce a huge first delta).
|
|
122
|
+
*
|
|
123
|
+
* If the callback throws, the loop stops (`running` cleared, no further frames scheduled) and the error
|
|
124
|
+
* is rethrown so hosts retain normal exception visibility.
|
|
115
125
|
*/
|
|
116
126
|
export declare function animationLoop(callback: (dt: number) => boolean): () => void;
|
|
117
127
|
//# sourceMappingURL=animation.d.ts.map
|
package/dist/animation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../src/animation.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../src/animation.ts"],"names":[],"mappings":"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"}
|
package/dist/animation.js
CHANGED
|
@@ -302,18 +302,53 @@ export function spring(target, config = {}) {
|
|
|
302
302
|
*
|
|
303
303
|
* When `Date.now()` moves backward (clock skew, sleep/wake, manual adjustment), `dt` is clamped to `0`
|
|
304
304
|
* so callbacks never see a negative delta.
|
|
305
|
+
*
|
|
306
|
+
* When `Date.now()` is non-finite (NaN or ±Infinity from a broken host or mock), that sample is ignored:
|
|
307
|
+
* `lastTime` is not advanced with a bad value and `dt` is `0`, so callbacks never receive a non-finite delta.
|
|
308
|
+
*
|
|
309
|
+
* When the **initial** `Date.now()` at loop start is non-finite, the loop stays unanchored until the first finite
|
|
310
|
+
* sample; that tick delivers `dt === 0` and sets the anchor so a later finite sample cannot inherit a bogus
|
|
311
|
+
* `lastTime` of `0` (which would otherwise produce a huge first delta).
|
|
312
|
+
*
|
|
313
|
+
* If the callback throws, the loop stops (`running` cleared, no further frames scheduled) and the error
|
|
314
|
+
* is rethrown so hosts retain normal exception visibility.
|
|
305
315
|
*/
|
|
306
316
|
export function animationLoop(callback) {
|
|
307
|
-
|
|
317
|
+
const t0 = Date.now();
|
|
318
|
+
let lastTime = Number.isFinite(t0) ? t0 : 0;
|
|
319
|
+
let anchored = Number.isFinite(t0);
|
|
308
320
|
let running = true;
|
|
309
321
|
let id;
|
|
310
322
|
function tick() {
|
|
311
323
|
if (!running)
|
|
312
324
|
return;
|
|
313
325
|
const now = Date.now();
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
326
|
+
let dt;
|
|
327
|
+
if (!anchored) {
|
|
328
|
+
if (Number.isFinite(now)) {
|
|
329
|
+
lastTime = now;
|
|
330
|
+
anchored = true;
|
|
331
|
+
dt = 0;
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
dt = 0;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
const effectiveNow = Number.isFinite(now) ? now : lastTime;
|
|
339
|
+
const dtRaw = (effectiveNow - lastTime) / 1000;
|
|
340
|
+
dt = Number.isFinite(dtRaw) && dtRaw >= 0 ? dtRaw : 0;
|
|
341
|
+
lastTime = effectiveNow;
|
|
342
|
+
}
|
|
343
|
+
let scheduleNext;
|
|
344
|
+
try {
|
|
345
|
+
scheduleNext = callback(dt) !== false;
|
|
346
|
+
}
|
|
347
|
+
catch (err) {
|
|
348
|
+
running = false;
|
|
349
|
+
throw err;
|
|
350
|
+
}
|
|
351
|
+
if (scheduleNext) {
|
|
317
352
|
id = raf(tick);
|
|
318
353
|
}
|
|
319
354
|
else {
|
package/dist/animation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation.js","sourceRoot":"","sources":["../src/animation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"animation.js","sourceRoot":"","sources":["../src/animation.ts"],"names":[],"mappings":"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"}
|
package/dist/app.d.ts
CHANGED
|
@@ -20,7 +20,9 @@ export interface AppOptions {
|
|
|
20
20
|
waitForFonts?: boolean;
|
|
21
21
|
/**
|
|
22
22
|
* Max time to wait for fonts when `waitForFonts` is true. Default `10_000`.
|
|
23
|
-
*
|
|
23
|
+
* Sanitized with {@link import('./fonts.js').resolveFontLoadTimeoutMs}: `NaN`, `±Infinity`, negatives,
|
|
24
|
+
* and non-numbers fall back to the default. **`0` is valid** (immediate timeout in the font race);
|
|
25
|
+
* see `waitForFonts` tests in `fonts.test.ts`.
|
|
24
26
|
*/
|
|
25
27
|
fontLoadTimeoutMs?: number;
|
|
26
28
|
/**
|
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAWtF,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iDAAiD;IACjD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAClC;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;;;;;OASG;IACH,eAAe,CAAC,EAAE,KAAK,GAAG,KAAK,CAAA;CAChC;AAED,MAAM,WAAW,GAAG;IAClB,mCAAmC;IACnC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAA;IAC7B,gCAAgC;IAChC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAA;IACtB,oCAAoC;IACpC,MAAM,IAAI,IAAI,CAAA;IACd;;;;;;;;;OASG;IACH,QAAQ,CACN,SAAS,EAAE,MAAM,aAAa,EAC9B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAA;IACV;;;;OAIG;IACH,WAAW,CAAC,SAAS,EAAE,WAAW,GAAG,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAA;IACjG;;;;OAIG;IACH,mBAAmB,CACjB,SAAS,EAAE,oBAAoB,GAAG,qBAAqB,GAAG,kBAAkB,EAC5E,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GACtB,OAAO,CAAA;IACV,oFAAoF;IACpF,OAAO,IAAI,IAAI,CAAA;CAChB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,SAAS,EACrB,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,GAAG,CAAC,CA6Ed"}
|
package/dist/app.js
CHANGED
|
@@ -6,14 +6,8 @@ import { effect } from './signals.js';
|
|
|
6
6
|
import { focusedElement, setFocus } from './focus.js';
|
|
7
7
|
import { collectFontFamiliesFromTree, resolveFontLoadTimeoutMs, waitForFonts } from './fonts.js';
|
|
8
8
|
import { dispatchKeyboardEvent, dispatchCompositionEvent } from './keyboard.js';
|
|
9
|
+
import { finiteRootExtent } from './layout-bounds.js';
|
|
9
10
|
import { safePerformanceNowMs } from './performance-now.js';
|
|
10
|
-
/** Only finite, non-negative numbers become Textura root constraints; otherwise the key is omitted (unconstrained). */
|
|
11
|
-
function finiteRootExtent(value) {
|
|
12
|
-
if (typeof value !== 'number' || !Number.isFinite(value))
|
|
13
|
-
return undefined;
|
|
14
|
-
const v = Object.is(value, -0) ? 0 : value;
|
|
15
|
-
return v >= 0 ? v : undefined;
|
|
16
|
-
}
|
|
17
11
|
/**
|
|
18
12
|
* Mount a reactive UI tree onto a renderer.
|
|
19
13
|
*
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAG7C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,6BAA6B,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAChG,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AAC/E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/direction.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export type ResolvedDirection = 'ltr' | 'rtl';
|
|
|
6
6
|
* serialized props) inherit {@link parentDirection}. Document-level direction for Yoga flex rows is set
|
|
7
7
|
* separately via {@link import('./app.js').createApp}'s `layoutDirection` option (see `AppOptions` in `app.js`).
|
|
8
8
|
* Non-`ltr` / non-`rtl` {@link parentDirection} values (bad callers or deserialized state) fall back to `ltr`.
|
|
9
|
+
*
|
|
10
|
+
* @returns Resolved `ltr` or `rtl` for layout, text, and hit-testing.
|
|
9
11
|
*/
|
|
10
12
|
export declare function resolveDirectionValue(dir: Direction | undefined, parentDirection?: ResolvedDirection): ResolvedDirection;
|
|
11
13
|
/**
|
|
@@ -27,6 +29,9 @@ export declare function resolveElementDirection(element: UIElement, parentDirect
|
|
|
27
29
|
* @param layoutDirection — Host override (`createServer` / `createApp` option), or any runtime garbage; only `'ltr'` / `'rtl'` count.
|
|
28
30
|
* @param root — Live view root used when the override is absent or invalid. Any {@link UIElement} kind
|
|
29
31
|
* (`box`, `text`, `image`, `scene3d`) may be the root; `dir` is read from {@link UIElement.props} the same way.
|
|
32
|
+
*
|
|
33
|
+
* @returns Yoga / Textura owner direction: primitive `'ltr'` or `'rtl'` from the host when valid, otherwise
|
|
34
|
+
* {@link resolveElementDirection} on `root` with document default `'ltr'`.
|
|
30
35
|
*/
|
|
31
36
|
export declare function resolveComputeLayoutDirection(layoutDirection: unknown, root: UIElement): ResolvedDirection;
|
|
32
37
|
//# sourceMappingURL=direction.d.ts.map
|
package/dist/direction.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"direction.d.ts","sourceRoot":"","sources":["../src/direction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtD,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,KAAK,CAAA;AAM7C
|
|
1
|
+
{"version":3,"file":"direction.d.ts","sourceRoot":"","sources":["../src/direction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEtD,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,KAAK,CAAA;AAM7C;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,SAAS,GAAG,SAAS,EAC1B,eAAe,GAAE,iBAAyB,GACzC,iBAAiB,CAKnB;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,SAAS,EAClB,eAAe,GAAE,iBAAyB,GACzC,iBAAiB,CAGnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,6BAA6B,CAC3C,eAAe,EAAE,OAAO,EACxB,IAAI,EAAE,SAAS,GACd,iBAAiB,CAKnB"}
|
package/dist/direction.js
CHANGED
|
@@ -7,6 +7,8 @@ function normalizeResolvedDirection(value) {
|
|
|
7
7
|
* serialized props) inherit {@link parentDirection}. Document-level direction for Yoga flex rows is set
|
|
8
8
|
* separately via {@link import('./app.js').createApp}'s `layoutDirection` option (see `AppOptions` in `app.js`).
|
|
9
9
|
* Non-`ltr` / non-`rtl` {@link parentDirection} values (bad callers or deserialized state) fall back to `ltr`.
|
|
10
|
+
*
|
|
11
|
+
* @returns Resolved `ltr` or `rtl` for layout, text, and hit-testing.
|
|
10
12
|
*/
|
|
11
13
|
export function resolveDirectionValue(dir, parentDirection = 'ltr') {
|
|
12
14
|
const parent = normalizeResolvedDirection(parentDirection);
|
|
@@ -38,6 +40,9 @@ export function resolveElementDirection(element, parentDirection = 'ltr') {
|
|
|
38
40
|
* @param layoutDirection — Host override (`createServer` / `createApp` option), or any runtime garbage; only `'ltr'` / `'rtl'` count.
|
|
39
41
|
* @param root — Live view root used when the override is absent or invalid. Any {@link UIElement} kind
|
|
40
42
|
* (`box`, `text`, `image`, `scene3d`) may be the root; `dir` is read from {@link UIElement.props} the same way.
|
|
43
|
+
*
|
|
44
|
+
* @returns Yoga / Textura owner direction: primitive `'ltr'` or `'rtl'` from the host when valid, otherwise
|
|
45
|
+
* {@link resolveElementDirection} on `root` with document default `'ltr'`.
|
|
41
46
|
*/
|
|
42
47
|
export function resolveComputeLayoutDirection(layoutDirection, root) {
|
|
43
48
|
if (layoutDirection === 'ltr' || layoutDirection === 'rtl') {
|
package/dist/direction.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"direction.js","sourceRoot":"","sources":["../src/direction.ts"],"names":[],"mappings":"AAIA,SAAS,0BAA0B,CAAC,KAAc;IAChD,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;AACxC,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"direction.js","sourceRoot":"","sources":["../src/direction.ts"],"names":[],"mappings":"AAIA,SAAS,0BAA0B,CAAC,KAAc;IAChD,OAAO,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;AACxC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,GAA0B,EAC1B,kBAAqC,KAAK;IAE1C,MAAM,MAAM,GAAG,0BAA0B,CAAC,eAAe,CAAC,CAAA;IAC1D,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IAC/B,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IAC/B,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAkB,EAClB,kBAAqC,KAAK;IAE1C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAA;IAC7B,OAAO,qBAAqB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;AACpD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,6BAA6B,CAC3C,eAAwB,EACxB,IAAe;IAEf,IAAI,eAAe,KAAK,KAAK,IAAI,eAAe,KAAK,KAAK,EAAE,CAAC;QAC3D,OAAO,eAAe,CAAA;IACxB,CAAC;IACD,OAAO,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AAC7C,CAAC"}
|
package/dist/focus-trap.d.ts
CHANGED
|
@@ -13,11 +13,19 @@ import type { UIElement } from './types.js';
|
|
|
13
13
|
* outside without clearing focus first.
|
|
14
14
|
*
|
|
15
15
|
* @param tree — UI root that contains the trap subtree (same tree passed to layout and hit-testing).
|
|
16
|
+
* When `scopePath` is an empty array, this node **is** the trap root: it must be a
|
|
17
|
+
* {@link import('./types.js').BoxElement} or `trapFocusStep` returns `false` (text/image/scene3d roots cannot host a trap).
|
|
16
18
|
* @param layout — Computed layout parallel to `tree` from Textura/Yoga.
|
|
17
|
-
* @param scopePath — Indices from the tree root to the trap root box (inclusive).
|
|
19
|
+
* @param scopePath — Indices from the tree root to the trap root box (inclusive). Each segment must be a
|
|
20
|
+
* non-negative integer (`typeof idx === 'number'` and {@link Number.isInteger}); strings, booleans,
|
|
21
|
+
* `NaN`, `±Infinity`, and fractions are rejected. Pass `[]` to use
|
|
22
|
+
* `tree` / `layout` as the trap scope (cycle every focusable under that subtree). Invalid
|
|
18
23
|
* paths (out-of-range index, non-box node, non-array `children` on a box along the path, or empty
|
|
19
|
-
* focusable list under the subtree) yield `false`.
|
|
24
|
+
* focusable list under the subtree) yield `false`. The resolved scope root’s layout must satisfy
|
|
25
|
+
* {@link import('./layout-bounds.js').layoutBoundsAreFinite}; otherwise no focusables are collected.
|
|
20
26
|
* @param direction — `'next'` for forward cycling (Tab-like), `'prev'` for backward (Shift+Tab-like); default `'next'`.
|
|
27
|
+
* At runtime only exact `'prev'` selects backward; any other value (including typos from untyped callers) is treated
|
|
28
|
+
* as `'next'` so accidental strings do not flip traversal direction.
|
|
21
29
|
* @returns `true` if focus was moved, `false` if the scope is invalid or contains no focusables.
|
|
22
30
|
*/
|
|
23
31
|
export declare function trapFocusStep(tree: UIElement, layout: ComputedLayout, scopePath: number[], direction?: 'next' | 'prev'): boolean;
|
package/dist/focus-trap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-trap.d.ts","sourceRoot":"","sources":["../src/focus-trap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"focus-trap.d.ts","sourceRoot":"","sources":["../src/focus-trap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,YAAY,CAAA;AAmDvD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,GAAE,MAAM,GAAG,MAAe,GAClC,OAAO,CAiBT"}
|
package/dist/focus-trap.js
CHANGED
|
@@ -18,10 +18,15 @@ function collectFocusable(element, layout, out) {
|
|
|
18
18
|
collectFocusable(child, childLayout, out);
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
+
function isValidScopeIndex(idx) {
|
|
22
|
+
return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0;
|
|
23
|
+
}
|
|
21
24
|
function resolveSubtree(tree, layout, path) {
|
|
22
25
|
let el = tree;
|
|
23
26
|
let lo = layout;
|
|
24
27
|
for (const idx of path) {
|
|
28
|
+
if (!isValidScopeIndex(idx))
|
|
29
|
+
return null;
|
|
25
30
|
if (el.kind !== 'box')
|
|
26
31
|
return null;
|
|
27
32
|
const kids = el.children;
|
|
@@ -51,14 +56,23 @@ function resolveSubtree(tree, layout, path) {
|
|
|
51
56
|
* outside without clearing focus first.
|
|
52
57
|
*
|
|
53
58
|
* @param tree — UI root that contains the trap subtree (same tree passed to layout and hit-testing).
|
|
59
|
+
* When `scopePath` is an empty array, this node **is** the trap root: it must be a
|
|
60
|
+
* {@link import('./types.js').BoxElement} or `trapFocusStep` returns `false` (text/image/scene3d roots cannot host a trap).
|
|
54
61
|
* @param layout — Computed layout parallel to `tree` from Textura/Yoga.
|
|
55
|
-
* @param scopePath — Indices from the tree root to the trap root box (inclusive).
|
|
62
|
+
* @param scopePath — Indices from the tree root to the trap root box (inclusive). Each segment must be a
|
|
63
|
+
* non-negative integer (`typeof idx === 'number'` and {@link Number.isInteger}); strings, booleans,
|
|
64
|
+
* `NaN`, `±Infinity`, and fractions are rejected. Pass `[]` to use
|
|
65
|
+
* `tree` / `layout` as the trap scope (cycle every focusable under that subtree). Invalid
|
|
56
66
|
* paths (out-of-range index, non-box node, non-array `children` on a box along the path, or empty
|
|
57
|
-
* focusable list under the subtree) yield `false`.
|
|
67
|
+
* focusable list under the subtree) yield `false`. The resolved scope root’s layout must satisfy
|
|
68
|
+
* {@link import('./layout-bounds.js').layoutBoundsAreFinite}; otherwise no focusables are collected.
|
|
58
69
|
* @param direction — `'next'` for forward cycling (Tab-like), `'prev'` for backward (Shift+Tab-like); default `'next'`.
|
|
70
|
+
* At runtime only exact `'prev'` selects backward; any other value (including typos from untyped callers) is treated
|
|
71
|
+
* as `'next'` so accidental strings do not flip traversal direction.
|
|
59
72
|
* @returns `true` if focus was moved, `false` if the scope is invalid or contains no focusables.
|
|
60
73
|
*/
|
|
61
74
|
export function trapFocusStep(tree, layout, scopePath, direction = 'next') {
|
|
75
|
+
const step = direction === 'prev' ? 'prev' : 'next';
|
|
62
76
|
const scope = resolveSubtree(tree, layout, scopePath);
|
|
63
77
|
if (!scope)
|
|
64
78
|
return false;
|
|
@@ -69,8 +83,8 @@ export function trapFocusStep(tree, layout, scopePath, direction = 'next') {
|
|
|
69
83
|
const current = focusedElement.peek();
|
|
70
84
|
let idx = current ? targets.findIndex(t => t.element === current.element) : -1;
|
|
71
85
|
if (idx < 0)
|
|
72
|
-
idx =
|
|
73
|
-
const nextIdx =
|
|
86
|
+
idx = step === 'next' ? -1 : 0;
|
|
87
|
+
const nextIdx = step === 'next'
|
|
74
88
|
? (idx + 1) % targets.length
|
|
75
89
|
: (idx - 1 + targets.length) % targets.length;
|
|
76
90
|
const next = targets[nextIdx];
|
package/dist/focus-trap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-trap.js","sourceRoot":"","sources":["../src/focus-trap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAO1D,SAAS,gBAAgB,CAAC,OAAkB,EAAE,MAAsB,EAAE,GAAkB;IACtF,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;QAAE,OAAM;IAC1C,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK;QAAE,OAAM;IAClC,IAAI,yBAAyB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;IAC/B,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAA;IAC7B,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QACrB,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QACtC,IAAI,KAAK,IAAI,WAAW;YAAE,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,CAAA;IACrE,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CACrB,IAAe,EACf,MAAsB,EACtB,IAAc;IAEd,IAAI,EAAE,GAAc,IAAI,CAAA;IACxB,IAAI,EAAE,GAAmB,MAAM,CAAA;IAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO,IAAI,CAAA;QAClC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAA;QACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QACxB,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;QAC/B,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA;QACnC,EAAE,GAAG,MAAM,CAAA;QACX,EAAE,GAAG,MAAM,CAAA;IACb,CAAC;IACD,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAA;IAClC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;AACpC,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"focus-trap.js","sourceRoot":"","sources":["../src/focus-trap.ts"],"names":[],"mappings":"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"}
|
package/dist/hit-test.d.ts
CHANGED
|
@@ -112,7 +112,7 @@ export declare function hitPathAtPoint(element: UIElement, layout: ComputedLayou
|
|
|
112
112
|
/**
|
|
113
113
|
* Resolve the deepest `cursor` style at `(x, y)`.
|
|
114
114
|
*
|
|
115
|
-
* Walk follows the same
|
|
115
|
+
* Walk follows the same parent-bounds and scroll-offset rules as {@link dispatchHit}. {@link hitPathAtPoint} only
|
|
116
116
|
* returns box index paths, but cursor resolution also considers `text`, `image`, and `scene3d` nodes: when the point is inside
|
|
117
117
|
* such a leaf’s layout and it is not `pointerEvents: 'none'`, its {@link import('./types.js').StyleProps.cursor}
|
|
118
118
|
* is used (including a lone `text` / `image` / `scene3d` tree root). Boxes and leaves with `pointerEvents: 'none'` are skipped so hits
|
package/dist/hit-test.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hit-test.d.ts","sourceRoot":"","sources":["../src/hit-test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAY,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"hit-test.d.ts","sourceRoot":"","sources":["../src/hit-test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAY,MAAM,YAAY,CAAA;AA6GhF;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;OAOG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,UAAU,CAAC;QAAC,MAAM,EAAE,cAAc,CAAA;KAAE,CAAA;CAC9D;AA2HD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,aAAa,EAC9B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,SAAI,EACX,OAAO,SAAI,GACV,iBAAiB,CAWnB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,cAAc,EACtB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,OAAO,SAAI,EACX,OAAO,SAAI,GACV,OAAO,CAgBT;AA2BD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,cAAc,EACtB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,OAAO,SAAI,EACX,OAAO,SAAI,GACV,MAAM,EAAE,GAAG,IAAI,CAuBjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,cAAc,EACtB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,OAAO,SAAI,EACX,OAAO,SAAI,GACV,MAAM,GAAG,IAAI,CAiCf"}
|
package/dist/hit-test.js
CHANGED
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
import { hasFocusCandidateHandlers } from './focus-candidates.js';
|
|
2
|
-
import { finiteNumberOrZero, layoutBoundsAreFinite, pointInInclusiveLayoutRect, } from './layout-bounds.js';
|
|
2
|
+
import { finiteNumberOrZero, layoutBoundsAreFinite, pointInInclusiveLayoutRect, scrollSafeChildOffsets, } from './layout-bounds.js';
|
|
3
3
|
const zIndexOrderCache = new WeakMap();
|
|
4
4
|
function zIndexOf(el) {
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
if (el == null)
|
|
6
|
+
return 0;
|
|
7
|
+
return finiteNumberOrZero(el.props.zIndex);
|
|
7
8
|
}
|
|
8
9
|
function getChildrenByZAsc(boxEl) {
|
|
9
|
-
const
|
|
10
|
+
const kids = boxEl.children;
|
|
11
|
+
if (!Array.isArray(kids))
|
|
12
|
+
return [];
|
|
13
|
+
const n = kids.length;
|
|
10
14
|
if (n === 0)
|
|
11
15
|
return [];
|
|
12
16
|
if (n === 1)
|
|
13
17
|
return [0];
|
|
14
18
|
// Two children: compare z-index without map/sort allocations (common flex rows, label+control pairs).
|
|
15
19
|
if (n === 2) {
|
|
16
|
-
const z0 = zIndexOf(
|
|
17
|
-
const z1 = zIndexOf(
|
|
20
|
+
const z0 = zIndexOf(kids[0]);
|
|
21
|
+
const z1 = zIndexOf(kids[1]);
|
|
18
22
|
const asc = z0 <= z1 ? [0, 1] : [1, 0];
|
|
19
23
|
const cached = zIndexOrderCache.get(boxEl);
|
|
20
24
|
if (cached &&
|
|
@@ -27,31 +31,44 @@ function getChildrenByZAsc(boxEl) {
|
|
|
27
31
|
zIndexOrderCache.set(boxEl, { zValues, asc });
|
|
28
32
|
return asc;
|
|
29
33
|
}
|
|
30
|
-
// Three children
|
|
31
|
-
if (n
|
|
32
|
-
const z0 = zIndexOf(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
// Three+ children sharing one z-index: stable paint order matches source order; avoid map/sort allocations.
|
|
35
|
+
if (n >= 3) {
|
|
36
|
+
const z0 = zIndexOf(kids[0]);
|
|
37
|
+
let allEqual = true;
|
|
38
|
+
for (let i = 1; i < n; i++) {
|
|
39
|
+
if (zIndexOf(kids[i]) !== z0) {
|
|
40
|
+
allEqual = false;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (allEqual) {
|
|
36
45
|
const cached = zIndexOrderCache.get(boxEl);
|
|
37
|
-
if (cached &&
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
46
|
+
if (cached && cached.zValues.length === n) {
|
|
47
|
+
let match = true;
|
|
48
|
+
for (let j = 0; j < n; j++) {
|
|
49
|
+
if (cached.zValues[j] !== z0) {
|
|
50
|
+
match = false;
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (match)
|
|
55
|
+
return cached.asc;
|
|
56
|
+
}
|
|
57
|
+
const zValues = new Array(n);
|
|
58
|
+
const asc = new Array(n);
|
|
59
|
+
for (let i = 0; i < n; i++) {
|
|
60
|
+
zValues[i] = z0;
|
|
61
|
+
asc[i] = i;
|
|
43
62
|
}
|
|
44
|
-
const zValues = [z0, z1, z2];
|
|
45
|
-
const asc = [0, 1, 2];
|
|
46
63
|
zIndexOrderCache.set(boxEl, { zValues, asc });
|
|
47
64
|
return asc;
|
|
48
65
|
}
|
|
49
66
|
}
|
|
50
67
|
const cached = zIndexOrderCache.get(boxEl);
|
|
51
|
-
if (cached && cached.zValues.length ===
|
|
68
|
+
if (cached && cached.zValues.length === kids.length) {
|
|
52
69
|
let unchanged = true;
|
|
53
|
-
for (let i = 0; i <
|
|
54
|
-
if (cached.zValues[i] !== zIndexOf(
|
|
70
|
+
for (let i = 0; i < kids.length; i++) {
|
|
71
|
+
if (cached.zValues[i] !== zIndexOf(kids[i])) {
|
|
55
72
|
unchanged = false;
|
|
56
73
|
break;
|
|
57
74
|
}
|
|
@@ -59,8 +76,8 @@ function getChildrenByZAsc(boxEl) {
|
|
|
59
76
|
if (unchanged)
|
|
60
77
|
return cached.asc;
|
|
61
78
|
}
|
|
62
|
-
const zValues =
|
|
63
|
-
const asc =
|
|
79
|
+
const zValues = kids.map(child => zIndexOf(child));
|
|
80
|
+
const asc = kids
|
|
64
81
|
.map((_, i) => i)
|
|
65
82
|
.sort((a, b) => zValues[a] - zValues[b]);
|
|
66
83
|
zIndexOrderCache.set(boxEl, { zValues, asc });
|
|
@@ -79,16 +96,18 @@ function collectHits(element, layout, x, y, offsetX, offsetY, results) {
|
|
|
79
96
|
if (element.kind !== 'box')
|
|
80
97
|
return;
|
|
81
98
|
const boxEl = element;
|
|
82
|
-
const
|
|
83
|
-
const childOffsetY = absY - finiteNumberOrZero(boxEl.props.scrollY);
|
|
99
|
+
const childOrigin = scrollSafeChildOffsets(absX, absY, boxEl.props.scrollX, boxEl.props.scrollY);
|
|
84
100
|
const passThrough = boxEl.props.pointerEvents === 'none';
|
|
85
101
|
if (boxEl.handlers && !passThrough) {
|
|
86
102
|
results.push({ layout, handlers: boxEl.handlers, element: boxEl, absX, absY });
|
|
87
103
|
}
|
|
88
|
-
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
104
|
+
if (childOrigin) {
|
|
105
|
+
for (const i of getChildrenByZAsc(boxEl)) {
|
|
106
|
+
const childLayout = layout.children[i];
|
|
107
|
+
const childEl = boxEl.children[i];
|
|
108
|
+
if (childLayout && childEl) {
|
|
109
|
+
collectHits(childEl, childLayout, x, y, childOrigin.ox, childOrigin.oy, results);
|
|
110
|
+
}
|
|
92
111
|
}
|
|
93
112
|
}
|
|
94
113
|
}
|
|
@@ -107,19 +126,21 @@ function dispatchHitRecursive(element, layout, eventType, x, y, offsetX, offsetY
|
|
|
107
126
|
return { handled: false };
|
|
108
127
|
}
|
|
109
128
|
let focusTarget;
|
|
110
|
-
const
|
|
111
|
-
const childOffsetY = absY - finiteNumberOrZero(scrollY);
|
|
129
|
+
const childOrigin = scrollSafeChildOffsets(absX, absY, scrollX, scrollY);
|
|
112
130
|
const asc = getChildrenByZAsc(boxEl);
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
131
|
+
if (childOrigin) {
|
|
132
|
+
for (let k = asc.length - 1; k >= 0; k--) {
|
|
133
|
+
const i = asc[k];
|
|
134
|
+
const childLayout = layout.children[i];
|
|
135
|
+
const childEl = boxEl.children[i];
|
|
136
|
+
if (!childLayout || !childEl)
|
|
137
|
+
continue;
|
|
138
|
+
const childResult = dispatchHitRecursive(childEl, childLayout, eventType, x, y, childOrigin.ox, childOrigin.oy, extra);
|
|
139
|
+
if (childResult.handled)
|
|
140
|
+
return childResult;
|
|
141
|
+
if (eventType === 'onClick' && !focusTarget && childResult.focusTarget) {
|
|
142
|
+
focusTarget = childResult.focusTarget;
|
|
143
|
+
}
|
|
123
144
|
}
|
|
124
145
|
}
|
|
125
146
|
if (boxEl.props.pointerEvents === 'none') {
|
|
@@ -230,8 +251,8 @@ export function hasInteractiveHitAtPoint(element, layout, x, y, offsetX = 0, off
|
|
|
230
251
|
}
|
|
231
252
|
/**
|
|
232
253
|
* Root-anchored containment for {@link hitPathAtPoint} and {@link getCursorAtPoint}: finite pointer coords,
|
|
233
|
-
* finite layout bounds, then the same inclusive rect test as {@link collectHits} (
|
|
234
|
-
*
|
|
254
|
+
* finite layout bounds, then the same inclusive rect test as {@link collectHits} (parent layout rect per
|
|
255
|
+
* level; child coordinates subtract this box’s `scrollX`/`scrollY` in the recursive walk).
|
|
235
256
|
* Returns the node’s absolute origin `(absX, absY)` when the point hits the layout rect.
|
|
236
257
|
*/
|
|
237
258
|
function rootedLayoutPointContainment(layout, x, y, offsetX, offsetY) {
|
|
@@ -274,19 +295,19 @@ export function hitPathAtPoint(element, layout, x, y, offsetX = 0, offsetY = 0)
|
|
|
274
295
|
if (element.kind !== 'box')
|
|
275
296
|
return null;
|
|
276
297
|
const boxEl = element;
|
|
277
|
-
|
|
278
|
-
let childOffsetY = absY;
|
|
279
|
-
childOffsetX -= finiteNumberOrZero(boxEl.props.scrollX);
|
|
280
|
-
childOffsetY -= finiteNumberOrZero(boxEl.props.scrollY);
|
|
298
|
+
const childOrigin = scrollSafeChildOffsets(absX, absY, boxEl.props.scrollX, boxEl.props.scrollY);
|
|
281
299
|
const asc = getChildrenByZAsc(boxEl);
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
300
|
+
if (childOrigin) {
|
|
301
|
+
for (let k = asc.length - 1; k >= 0; k--) {
|
|
302
|
+
const i = asc[k];
|
|
303
|
+
const childLayout = layout.children[i];
|
|
304
|
+
const childEl = boxEl.children[i];
|
|
305
|
+
if (!childLayout || !childEl)
|
|
306
|
+
continue;
|
|
307
|
+
const sub = hitPathAtPoint(childEl, childLayout, x, y, childOrigin.ox, childOrigin.oy);
|
|
308
|
+
if (sub !== null)
|
|
309
|
+
return [i, ...sub];
|
|
310
|
+
}
|
|
290
311
|
}
|
|
291
312
|
if (boxEl.props.pointerEvents === 'none')
|
|
292
313
|
return null;
|
|
@@ -295,7 +316,7 @@ export function hitPathAtPoint(element, layout, x, y, offsetX = 0, offsetY = 0)
|
|
|
295
316
|
/**
|
|
296
317
|
* Resolve the deepest `cursor` style at `(x, y)`.
|
|
297
318
|
*
|
|
298
|
-
* Walk follows the same
|
|
319
|
+
* Walk follows the same parent-bounds and scroll-offset rules as {@link dispatchHit}. {@link hitPathAtPoint} only
|
|
299
320
|
* returns box index paths, but cursor resolution also considers `text`, `image`, and `scene3d` nodes: when the point is inside
|
|
300
321
|
* such a leaf’s layout and it is not `pointerEvents: 'none'`, its {@link import('./types.js').StyleProps.cursor}
|
|
301
322
|
* is used (including a lone `text` / `image` / `scene3d` tree root). Boxes and leaves with `pointerEvents: 'none'` are skipped so hits
|
|
@@ -324,18 +345,18 @@ export function getCursorAtPoint(element, layout, x, y, offsetX = 0, offsetY = 0
|
|
|
324
345
|
const { absX, absY } = hit;
|
|
325
346
|
// Check children (deepest first via recursion)
|
|
326
347
|
if (element.kind === 'box') {
|
|
327
|
-
|
|
328
|
-
let childOffY = absY;
|
|
329
|
-
childOffX -= finiteNumberOrZero(element.props.scrollX);
|
|
330
|
-
childOffY -= finiteNumberOrZero(element.props.scrollY);
|
|
348
|
+
const childOrigin = scrollSafeChildOffsets(absX, absY, element.props.scrollX, element.props.scrollY);
|
|
331
349
|
const asc = getChildrenByZAsc(element);
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
const
|
|
337
|
-
if (
|
|
338
|
-
|
|
350
|
+
if (childOrigin) {
|
|
351
|
+
for (let k = asc.length - 1; k >= 0; k--) {
|
|
352
|
+
const i = asc[k];
|
|
353
|
+
const childLayout = layout.children[i];
|
|
354
|
+
const childEl = element.children[i];
|
|
355
|
+
if (childLayout && childEl) {
|
|
356
|
+
const childCursor = getCursorAtPoint(childEl, childLayout, x, y, childOrigin.ox, childOrigin.oy);
|
|
357
|
+
if (childCursor)
|
|
358
|
+
return childCursor;
|
|
359
|
+
}
|
|
339
360
|
}
|
|
340
361
|
}
|
|
341
362
|
}
|