@geometra/core 1.46.0 → 1.48.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/a11y.d.ts +5 -0
- package/dist/a11y.d.ts.map +1 -1
- package/dist/a11y.js +29 -16
- package/dist/a11y.js.map +1 -1
- package/dist/app.d.ts +3 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js.map +1 -1
- package/dist/direction.d.ts +6 -0
- package/dist/direction.d.ts.map +1 -1
- package/dist/direction.js +6 -0
- package/dist/direction.js.map +1 -1
- package/dist/find.d.ts +5 -4
- package/dist/find.d.ts.map +1 -1
- package/dist/find.js +4 -3
- package/dist/find.js.map +1 -1
- package/dist/hit-test.d.ts.map +1 -1
- package/dist/hit-test.js +22 -6
- package/dist/hit-test.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/layout-bounds.d.ts +22 -4
- package/dist/layout-bounds.d.ts.map +1 -1
- package/dist/layout-bounds.js +26 -16
- package/dist/layout-bounds.js.map +1 -1
- package/dist/selection.d.ts +5 -0
- package/dist/selection.d.ts.map +1 -1
- package/dist/selection.js +13 -5
- package/dist/selection.js.map +1 -1
- package/dist/tree.d.ts +2 -0
- package/dist/tree.d.ts.map +1 -1
- package/dist/tree.js +24 -5
- package/dist/tree.js.map +1 -1
- package/dist/virtual-scroll.d.ts +13 -0
- package/dist/virtual-scroll.d.ts.map +1 -1
- package/dist/virtual-scroll.js +19 -3
- package/dist/virtual-scroll.js.map +1 -1
- package/package.json +2 -2
package/dist/a11y.d.ts
CHANGED
|
@@ -27,6 +27,11 @@ export interface AccessibilityNode {
|
|
|
27
27
|
* leaf with zero bounds, no children, and `focusable: false` (even if it has pointer/keyboard handlers).
|
|
28
28
|
* Subtrees under corrupt geometry are not walked — same rule as {@link import('./focus.js').collectFocusOrder}
|
|
29
29
|
* and hit-testing so bad Yoga output cannot surface misleading bounds or hidden descendants.
|
|
30
|
+
* When composed absolute `offsetX + layout.x` / `offsetY + layout.y` overflows to non-finite values, the
|
|
31
|
+
* same degenerate node is emitted (no infinite bounds from IEEE double sums).
|
|
32
|
+
* Box children use {@link import('./layout-bounds.js').scrollSafeChildOffsets} for `scrollX` / `scrollY` (same rule as hit-testing and
|
|
33
|
+
* text selection): when the scroll-adjusted origin overflows to non-finite values, descendants are not
|
|
34
|
+
* walked so corrupt extremes cannot surface misleading child bounds.
|
|
30
35
|
*/
|
|
31
36
|
export declare function toAccessibilityTree(tree: UIElement, layout: ComputedLayout): AccessibilityNode;
|
|
32
37
|
//# sourceMappingURL=a11y.d.ts.map
|
package/dist/a11y.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a11y.d.ts","sourceRoot":"","sources":["../src/a11y.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAyC,MAAM,YAAY,CAAA;AAIlF,MAAM,WAAW,mBAAmB;IAClC,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAA;IACD,MAAM,EAAE,mBAAmB,CAAA;IAC3B,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,QAAQ,EAAE,iBAAiB,EAAE,CAAA;IAC7B,SAAS,EAAE,OAAO,CAAA;CACnB;
|
|
1
|
+
{"version":3,"file":"a11y.d.ts","sourceRoot":"","sources":["../src/a11y.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAyC,MAAM,YAAY,CAAA;AAIlF,MAAM,WAAW,mBAAmB;IAClC,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAA;IACD,MAAM,EAAE,mBAAmB,CAAA;IAC3B,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,QAAQ,EAAE,iBAAiB,EAAE,CAAA;IAC7B,SAAS,EAAE,OAAO,CAAA;CACnB;AAuHD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,iBAAiB,CAE9F"}
|
package/dist/a11y.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { hasFocusCandidateHandlers } from './focus-candidates.js';
|
|
2
|
-
import {
|
|
2
|
+
import { layoutBoundsAreFinite, scrollSafeChildOffsets } from './layout-bounds.js';
|
|
3
3
|
function inferTextRole(element) {
|
|
4
4
|
if (element.semantic?.role)
|
|
5
5
|
return element.semantic.role;
|
|
@@ -80,28 +80,36 @@ function roleFor(element) {
|
|
|
80
80
|
return element.semantic?.role ?? 'img';
|
|
81
81
|
return inferBoxRole(element);
|
|
82
82
|
}
|
|
83
|
+
/** Degenerate node when geometry is unusable — matches corrupt-layout handling. */
|
|
84
|
+
function degenerateAccessibilityNode(element, path) {
|
|
85
|
+
return {
|
|
86
|
+
role: roleFor(element),
|
|
87
|
+
...(inferName(element) !== undefined ? { name: inferName(element) } : {}),
|
|
88
|
+
...(stateFor(element) !== undefined ? { state: stateFor(element) } : {}),
|
|
89
|
+
bounds: { x: 0, y: 0, width: 0, height: 0 },
|
|
90
|
+
path,
|
|
91
|
+
children: [],
|
|
92
|
+
focusable: false,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
83
95
|
function walk(element, layout, offsetX, offsetY, path) {
|
|
84
96
|
if (!layoutBoundsAreFinite(layout)) {
|
|
85
|
-
return
|
|
86
|
-
role: roleFor(element),
|
|
87
|
-
...(inferName(element) !== undefined ? { name: inferName(element) } : {}),
|
|
88
|
-
...(stateFor(element) !== undefined ? { state: stateFor(element) } : {}),
|
|
89
|
-
bounds: { x: 0, y: 0, width: 0, height: 0 },
|
|
90
|
-
path,
|
|
91
|
-
children: [],
|
|
92
|
-
focusable: false,
|
|
93
|
-
};
|
|
97
|
+
return degenerateAccessibilityNode(element, path);
|
|
94
98
|
}
|
|
95
99
|
const x = offsetX + layout.x;
|
|
96
100
|
const y = offsetY + layout.y;
|
|
101
|
+
if (!Number.isFinite(x) || !Number.isFinite(y)) {
|
|
102
|
+
return degenerateAccessibilityNode(element, path);
|
|
103
|
+
}
|
|
97
104
|
const children = [];
|
|
98
105
|
if (element.kind === 'box') {
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
106
|
+
const childOrigin = scrollSafeChildOffsets(x, y, element.props.scrollX, element.props.scrollY);
|
|
107
|
+
if (childOrigin) {
|
|
108
|
+
for (let i = 0; i < element.children.length; i++) {
|
|
109
|
+
const childLayout = layout.children[i];
|
|
110
|
+
if (childLayout) {
|
|
111
|
+
children.push(walk(element.children[i], childLayout, childOrigin.ox, childOrigin.oy, [...path, i]));
|
|
112
|
+
}
|
|
105
113
|
}
|
|
106
114
|
}
|
|
107
115
|
}
|
|
@@ -122,6 +130,11 @@ function walk(element, layout, offsetX, offsetY, path) {
|
|
|
122
130
|
* leaf with zero bounds, no children, and `focusable: false` (even if it has pointer/keyboard handlers).
|
|
123
131
|
* Subtrees under corrupt geometry are not walked — same rule as {@link import('./focus.js').collectFocusOrder}
|
|
124
132
|
* and hit-testing so bad Yoga output cannot surface misleading bounds or hidden descendants.
|
|
133
|
+
* When composed absolute `offsetX + layout.x` / `offsetY + layout.y` overflows to non-finite values, the
|
|
134
|
+
* same degenerate node is emitted (no infinite bounds from IEEE double sums).
|
|
135
|
+
* Box children use {@link import('./layout-bounds.js').scrollSafeChildOffsets} for `scrollX` / `scrollY` (same rule as hit-testing and
|
|
136
|
+
* text selection): when the scroll-adjusted origin overflows to non-finite values, descendants are not
|
|
137
|
+
* walked so corrupt extremes cannot surface misleading child bounds.
|
|
125
138
|
*/
|
|
126
139
|
export function toAccessibilityTree(tree, layout) {
|
|
127
140
|
return walk(tree, layout, 0, 0, []);
|
package/dist/a11y.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a11y.js","sourceRoot":"","sources":["../src/a11y.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"a11y.js","sourceRoot":"","sources":["../src/a11y.ts"],"names":[],"mappings":"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"}
|
package/dist/app.d.ts
CHANGED
|
@@ -34,6 +34,9 @@ export interface AppOptions {
|
|
|
34
34
|
*
|
|
35
35
|
* Nested `dir` on descendants is forwarded into Textura for per-subtree flex layout; the layout-tree root
|
|
36
36
|
* still omits `dir` so this option and the resolved root direction stay aligned.
|
|
37
|
+
*
|
|
38
|
+
* Forwards to {@link ComputeOptions.direction} on the Textura {@link computeLayout} call (owner context for
|
|
39
|
+
* `dir: 'auto'` nodes).
|
|
37
40
|
*/
|
|
38
41
|
layoutDirection?: 'ltr' | 'rtl';
|
|
39
42
|
}
|
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;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
|
|
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;;;;;;;;;;;;OAYG;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.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,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/direction.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export type ResolvedDirection = 'ltr' | 'rtl';
|
|
|
8
8
|
* Non-`ltr` / non-`rtl` {@link parentDirection} values (bad callers or deserialized state) fall back to `ltr`.
|
|
9
9
|
*
|
|
10
10
|
* @returns Resolved `ltr` or `rtl` for layout, text, and hit-testing.
|
|
11
|
+
*
|
|
12
|
+
* @see {@link resolveComputeLayoutDirection} — host `layoutDirection` plus root element for Yoga / Textura owner direction.
|
|
11
13
|
*/
|
|
12
14
|
export declare function resolveDirectionValue(dir: Direction | undefined, parentDirection?: ResolvedDirection): ResolvedDirection;
|
|
13
15
|
/**
|
|
@@ -16,6 +18,8 @@ export declare function resolveDirectionValue(dir: Direction | undefined, parent
|
|
|
16
18
|
* @param element Any {@link UIElement}; `dir` is read from {@link UIElement.props} when present.
|
|
17
19
|
* @param parentDirection Resolved direction of the visual parent (default `'ltr'`). Invalid values are normalized like {@link resolveDirectionValue}.
|
|
18
20
|
* @returns Concrete `ltr` or `rtl` for layout, text, and hit-testing.
|
|
21
|
+
*
|
|
22
|
+
* @see {@link resolveComputeLayoutDirection} — when resolving the document / server `layoutDirection` together with the UI root.
|
|
19
23
|
*/
|
|
20
24
|
export declare function resolveElementDirection(element: UIElement, parentDirection?: ResolvedDirection): ResolvedDirection;
|
|
21
25
|
/**
|
|
@@ -34,6 +38,8 @@ export declare function resolveElementDirection(element: UIElement, parentDirect
|
|
|
34
38
|
* {@link resolveElementDirection} on `root` with document default `'ltr'`.
|
|
35
39
|
*
|
|
36
40
|
* @see `RTL_PARITY_MATRIX.md` (repo root) for server/client RTL and text-metric parity expectations.
|
|
41
|
+
* @see {@link resolveDirectionValue} — per-node `dir` resolution rules used when the host override is absent or invalid.
|
|
42
|
+
* @see {@link resolveElementDirection} — same inheritance semantics applied to the live root element.
|
|
37
43
|
*/
|
|
38
44
|
export declare function resolveComputeLayoutDirection(layoutDirection: unknown, root: UIElement): ResolvedDirection;
|
|
39
45
|
//# 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;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,SAAS,GAAG,SAAS,EAC1B,eAAe,GAAE,iBAAyB,GACzC,iBAAiB,CAKnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,SAAS,EAClB,eAAe,GAAE,iBAAyB,GACzC,iBAAiB,CAGnB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,6BAA6B,CAC3C,eAAe,EAAE,OAAO,EACxB,IAAI,EAAE,SAAS,GACd,iBAAiB,CAKnB"}
|
package/dist/direction.js
CHANGED
|
@@ -9,6 +9,8 @@ function normalizeResolvedDirection(value) {
|
|
|
9
9
|
* Non-`ltr` / non-`rtl` {@link parentDirection} values (bad callers or deserialized state) fall back to `ltr`.
|
|
10
10
|
*
|
|
11
11
|
* @returns Resolved `ltr` or `rtl` for layout, text, and hit-testing.
|
|
12
|
+
*
|
|
13
|
+
* @see {@link resolveComputeLayoutDirection} — host `layoutDirection` plus root element for Yoga / Textura owner direction.
|
|
12
14
|
*/
|
|
13
15
|
export function resolveDirectionValue(dir, parentDirection = 'ltr') {
|
|
14
16
|
const parent = normalizeResolvedDirection(parentDirection);
|
|
@@ -24,6 +26,8 @@ export function resolveDirectionValue(dir, parentDirection = 'ltr') {
|
|
|
24
26
|
* @param element Any {@link UIElement}; `dir` is read from {@link UIElement.props} when present.
|
|
25
27
|
* @param parentDirection Resolved direction of the visual parent (default `'ltr'`). Invalid values are normalized like {@link resolveDirectionValue}.
|
|
26
28
|
* @returns Concrete `ltr` or `rtl` for layout, text, and hit-testing.
|
|
29
|
+
*
|
|
30
|
+
* @see {@link resolveComputeLayoutDirection} — when resolving the document / server `layoutDirection` together with the UI root.
|
|
27
31
|
*/
|
|
28
32
|
export function resolveElementDirection(element, parentDirection = 'ltr') {
|
|
29
33
|
const dir = element.props.dir;
|
|
@@ -45,6 +49,8 @@ export function resolveElementDirection(element, parentDirection = 'ltr') {
|
|
|
45
49
|
* {@link resolveElementDirection} on `root` with document default `'ltr'`.
|
|
46
50
|
*
|
|
47
51
|
* @see `RTL_PARITY_MATRIX.md` (repo root) for server/client RTL and text-metric parity expectations.
|
|
52
|
+
* @see {@link resolveDirectionValue} — per-node `dir` resolution rules used when the host override is absent or invalid.
|
|
53
|
+
* @see {@link resolveElementDirection} — same inheritance semantics applied to the live root element.
|
|
48
54
|
*/
|
|
49
55
|
export function resolveComputeLayoutDirection(layoutDirection, root) {
|
|
50
56
|
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;;;;;;;;;;GAUG;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;;;;;;;;GAQG;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;;;;;;;;;;;;;;;;;;GAkBG;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/find.d.ts
CHANGED
|
@@ -18,9 +18,10 @@ import type { TextNodeInfo, SelectionRange } from './selection.js';
|
|
|
18
18
|
* @param nodes — Text nodes in document order (typically from {@link import('./selection.js').collectTextNodes}).
|
|
19
19
|
* Entries whose `element.props.text` is not a string are skipped so mistyped or partially deserialized trees
|
|
20
20
|
* cannot throw in `slice` / `length` paths. An empty `nodes` array yields `[]`.
|
|
21
|
-
* @param query — Candidate substring
|
|
22
|
-
*
|
|
23
|
-
*
|
|
21
|
+
* @param query — Candidate substring (`unknown` at the type level so deserialized or host data can be passed
|
|
22
|
+
* safely). Only a **non-empty primitive string** can produce matches: `''`, `null`, `undefined`, boxed
|
|
23
|
+
* strings, and other non-strings return `[]` without throwing. Whitespace-only queries are valid when the
|
|
24
|
+
* same UTF-16 run exists in the original text (same sliding-window rules as other queries).
|
|
24
25
|
*/
|
|
25
|
-
export declare function findInTextNodes(nodes: TextNodeInfo[], query:
|
|
26
|
+
export declare function findInTextNodes(nodes: TextNodeInfo[], query: unknown): SelectionRange[];
|
|
26
27
|
//# sourceMappingURL=find.d.ts.map
|
package/dist/find.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../src/find.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAElE
|
|
1
|
+
{"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../src/find.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAElE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,cAAc,EAAE,CAwBvF"}
|
package/dist/find.js
CHANGED
|
@@ -17,9 +17,10 @@
|
|
|
17
17
|
* @param nodes — Text nodes in document order (typically from {@link import('./selection.js').collectTextNodes}).
|
|
18
18
|
* Entries whose `element.props.text` is not a string are skipped so mistyped or partially deserialized trees
|
|
19
19
|
* cannot throw in `slice` / `length` paths. An empty `nodes` array yields `[]`.
|
|
20
|
-
* @param query — Candidate substring
|
|
21
|
-
*
|
|
22
|
-
*
|
|
20
|
+
* @param query — Candidate substring (`unknown` at the type level so deserialized or host data can be passed
|
|
21
|
+
* safely). Only a **non-empty primitive string** can produce matches: `''`, `null`, `undefined`, boxed
|
|
22
|
+
* strings, and other non-strings return `[]` without throwing. Whitespace-only queries are valid when the
|
|
23
|
+
* same UTF-16 run exists in the original text (same sliding-window rules as other queries).
|
|
23
24
|
*/
|
|
24
25
|
export function findInTextNodes(nodes, query) {
|
|
25
26
|
if (typeof query !== 'string' || !query || nodes.length === 0)
|
package/dist/find.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.js","sourceRoot":"","sources":["../src/find.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"find.js","sourceRoot":"","sources":["../src/find.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,eAAe,CAAC,KAAqB,EAAE,KAAc;IACnE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACxE,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;IACtC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAA;IACzB,MAAM,OAAO,GAAqB,EAAE,CAAA;IAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAA;QACxC,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,SAAQ;QAC1C,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAA;QACzB,IAAI,IAAI,GAAG,CAAC;YAAE,SAAQ;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,UAAU,EAAE,CAAC;gBAC7D,OAAO,CAAC,IAAI,CAAC;oBACX,UAAU,EAAE,IAAI,CAAC,KAAK;oBACtB,YAAY,EAAE,CAAC;oBACf,SAAS,EAAE,IAAI,CAAC,KAAK;oBACrB,WAAW,EAAE,CAAC,GAAG,IAAI;iBACtB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
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;AA2HhF;;;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
|
@@ -65,9 +65,9 @@ function getChildrenByZAsc(boxEl) {
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
const cached = zIndexOrderCache.get(boxEl);
|
|
68
|
-
if (cached && cached.zValues.length ===
|
|
68
|
+
if (cached && cached.zValues.length === n) {
|
|
69
69
|
let unchanged = true;
|
|
70
|
-
for (let i = 0; i <
|
|
70
|
+
for (let i = 0; i < n; i++) {
|
|
71
71
|
if (cached.zValues[i] !== zIndexOf(kids[i])) {
|
|
72
72
|
unchanged = false;
|
|
73
73
|
break;
|
|
@@ -76,10 +76,26 @@ function getChildrenByZAsc(boxEl) {
|
|
|
76
76
|
if (unchanged)
|
|
77
77
|
return cached.asc;
|
|
78
78
|
}
|
|
79
|
-
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
// Single pass: stale or missing cache must not re-call zIndexOf after validation (was map + prior loop).
|
|
80
|
+
const zValues = new Array(n);
|
|
81
|
+
for (let i = 0; i < n; i++) {
|
|
82
|
+
zValues[i] = zIndexOf(kids[i]);
|
|
83
|
+
}
|
|
84
|
+
const asc = new Array(n);
|
|
85
|
+
for (let i = 0; i < n; i++) {
|
|
86
|
+
asc[i] = i;
|
|
87
|
+
}
|
|
88
|
+
asc.sort((a, b) => {
|
|
89
|
+
const za = zValues[a];
|
|
90
|
+
const zb = zValues[b];
|
|
91
|
+
if (za < zb)
|
|
92
|
+
return -1;
|
|
93
|
+
if (za > zb)
|
|
94
|
+
return 1;
|
|
95
|
+
// Same z-index: keep source order (ascending index). Hit-test walks this list in reverse so the
|
|
96
|
+
// last sibling wins, matching canvas/terminal paint order for stacked ties.
|
|
97
|
+
return a - b;
|
|
98
|
+
});
|
|
83
99
|
zIndexOrderCache.set(boxEl, { zValues, asc });
|
|
84
100
|
return asc;
|
|
85
101
|
}
|
package/dist/hit-test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hit-test.js","sourceRoot":"","sources":["../src/hit-test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hit-test.js","sourceRoot":"","sources":["../src/hit-test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export { resolveDirectionValue, resolveElementDirection, resolveComputeLayoutDir
|
|
|
23
23
|
export type { ResolvedDirection } from './direction.js';
|
|
24
24
|
export { dispatchHit, getCursorAtPoint, hasInteractiveHitAtPoint, hitPathAtPoint } from './hit-test.js';
|
|
25
25
|
export type { HitDispatchResult } from './hit-test.js';
|
|
26
|
-
export { finiteNumberOrZero, finiteRootExtent, layoutBoundsAreFinite, pointInInclusiveLayoutRect, scrollSafeChildOffsets, } from './layout-bounds.js';
|
|
26
|
+
export { finiteNumberOrZero, finiteRootExtent, isFinitePlainNumber, layoutBoundsAreFinite, pointInInclusiveLayoutRect, scrollSafeChildOffsets, } from './layout-bounds.js';
|
|
27
27
|
export { safePerformanceNowMs, readPerformanceNow } from './performance-now.js';
|
|
28
28
|
export { extractFontFamiliesFromCSSFont, collectFontFamiliesFromTree, resolveFontLoadTimeoutMs, waitForFonts, } from './fonts.js';
|
|
29
29
|
export { focusedElement, setFocus, clearFocus, focusNext, focusPrev, collectFocusOrder } from './focus.js';
|
|
@@ -40,7 +40,7 @@ export { streamText } from './stream-text.js';
|
|
|
40
40
|
export type { StreamText } from './stream-text.js';
|
|
41
41
|
export { createViewport, breakpoint, responsive, defaultBreakpoints, } from './responsive.js';
|
|
42
42
|
export type { Viewport, BreakpointMap } from './responsive.js';
|
|
43
|
-
export { syncVirtualWindow } from './virtual-scroll.js';
|
|
43
|
+
export { inclusiveEndIndex, syncVirtualWindow } from './virtual-scroll.js';
|
|
44
44
|
export type { VirtualWindowState } from './virtual-scroll.js';
|
|
45
45
|
export { toSemanticHTML } from './seo.js';
|
|
46
46
|
export type { SemanticHTMLOptions } from './seo.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAC9D,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAGpD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAGnE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAGjG,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACpC,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAG/C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,gBAAgB,CAAA;AACvB,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAGvD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACvG,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAG/E,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,EAC3B,wBAAwB,EACxB,YAAY,GACb,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC1G,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAG/E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC/E,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAGhF,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAG3C,OAAO,EACL,UAAU,EACV,MAAM,EACN,qBAAqB,EACrB,MAAM,EACN,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AACvB,YAAY,EACV,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAGlD,OAAO,EACL,cAAc,EACd,UAAU,EACV,UAAU,EACV,kBAAkB,GACnB,MAAM,iBAAiB,CAAA;AACxB,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -25,7 +25,7 @@ export { toLayoutTree } from './tree.js';
|
|
|
25
25
|
export { resolveDirectionValue, resolveElementDirection, resolveComputeLayoutDirection, } from './direction.js';
|
|
26
26
|
// Hit testing
|
|
27
27
|
export { dispatchHit, getCursorAtPoint, hasInteractiveHitAtPoint, hitPathAtPoint } from './hit-test.js';
|
|
28
|
-
export { finiteNumberOrZero, finiteRootExtent, layoutBoundsAreFinite, pointInInclusiveLayoutRect, scrollSafeChildOffsets, } from './layout-bounds.js';
|
|
28
|
+
export { finiteNumberOrZero, finiteRootExtent, isFinitePlainNumber, layoutBoundsAreFinite, pointInInclusiveLayoutRect, scrollSafeChildOffsets, } from './layout-bounds.js';
|
|
29
29
|
export { safePerformanceNowMs, readPerformanceNow } from './performance-now.js';
|
|
30
30
|
// Web fonts (browser)
|
|
31
31
|
export { extractFontFamiliesFromCSSFont, collectFontFamiliesFromTree, resolveFontLoadTimeoutMs, waitForFonts, } from './fonts.js';
|
|
@@ -45,7 +45,7 @@ export { streamText } from './stream-text.js';
|
|
|
45
45
|
// Responsive helpers
|
|
46
46
|
export { createViewport, breakpoint, responsive, defaultBreakpoints, } from './responsive.js';
|
|
47
47
|
// Virtual scroll helpers
|
|
48
|
-
export { syncVirtualWindow } from './virtual-scroll.js';
|
|
48
|
+
export { inclusiveEndIndex, syncVirtualWindow } from './virtual-scroll.js';
|
|
49
49
|
// SEO
|
|
50
50
|
export { toSemanticHTML } from './seo.js';
|
|
51
51
|
// Runtime accessibility
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,aAAa;AACb,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAG9D,uBAAuB;AACvB,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEnE,yBAAyB;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAEjG,YAAY;AACZ,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGpC,kBAAkB;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,gBAAgB,CAAA;AAGvB,cAAc;AACd,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEvG,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAE/E,sBAAsB;AACtB,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,EAC3B,wBAAwB,EACxB,YAAY,GACb,MAAM,YAAY,CAAA;AAEnB,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE1G,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAE/E,iBAAiB;AACjB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAG/E,sBAAsB;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,YAAY;AACZ,OAAO,EACL,UAAU,EACV,MAAM,EACN,qBAAqB,EACrB,MAAM,EACN,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AASvB,iBAAiB;AACjB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAG7C,qBAAqB;AACrB,OAAO,EACL,cAAc,EACd,UAAU,EACV,UAAU,EACV,kBAAkB,GACnB,MAAM,iBAAiB,CAAA;AAGxB,yBAAyB;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,aAAa;AACb,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAG9D,uBAAuB;AACvB,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEnE,yBAAyB;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAEjG,YAAY;AACZ,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGpC,kBAAkB;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,gBAAgB,CAAA;AAGvB,cAAc;AACd,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEvG,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAE/E,sBAAsB;AACtB,OAAO,EACL,8BAA8B,EAC9B,2BAA2B,EAC3B,wBAAwB,EACxB,YAAY,GACb,MAAM,YAAY,CAAA;AAEnB,mBAAmB;AACnB,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE1G,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAE/E,iBAAiB;AACjB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAG/E,sBAAsB;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,YAAY;AACZ,OAAO,EACL,UAAU,EACV,MAAM,EACN,qBAAqB,EACrB,MAAM,EACN,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AASvB,iBAAiB;AACjB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAG7C,qBAAqB;AACrB,OAAO,EACL,cAAc,EACd,UAAU,EACV,UAAU,EACV,kBAAkB,GACnB,MAAM,iBAAiB,CAAA;AAGxB,yBAAyB;AACzB,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAG1E,MAAM;AACN,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAGzC,wBAAwB;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAG/C,wBAAwB;AACxB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,yBAAyB,CAAA"}
|
package/dist/layout-bounds.d.ts
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared layout coordinate helpers for hit-testing, text selection, focus routing, a11y bounds, text-input
|
|
3
|
+
* caret math, root extent options, and animation timelines. All entry points assume plain deserialized
|
|
4
|
+
* geometry; `typeof` / `Number.isFinite` guards avoid `BigInt` mixing and accidental coercion from boxed
|
|
5
|
+
* or string values.
|
|
6
|
+
*/
|
|
1
7
|
import type { ComputedLayout } from 'textura';
|
|
8
|
+
/**
|
|
9
|
+
* True only for finite **primitive** numbers: `typeof` rejects `BigInt`, boxed numbers, and objects before
|
|
10
|
+
* `Number.isFinite`. Shared with protocol patch validation (`@geometra/server` `coalescePatches`) so corrupt
|
|
11
|
+
* serialized scalars are rejected under the same rules as layout bounds and hit-testing.
|
|
12
|
+
*/
|
|
13
|
+
export declare function isFinitePlainNumber(value: unknown): value is number;
|
|
2
14
|
/**
|
|
3
15
|
* Coerce a runtime value to a finite number for scroll offsets, root paint offsets, and similar layout math.
|
|
4
16
|
* Non-numbers, NaN, and ±Infinity become `0`. `typeof` rejects `BigInt` before any numeric coercion that could throw.
|
|
@@ -17,9 +29,14 @@ export declare function finiteNumberOrZero(value: unknown): number;
|
|
|
17
29
|
* offsets that would become `0` inside downstream math using {@link finiteNumberOrZero} (which would
|
|
18
30
|
* misplace children).
|
|
19
31
|
*
|
|
20
|
-
*
|
|
21
|
-
* (mixing `bigint` with `number` throws in JS) and rejects
|
|
22
|
-
*
|
|
32
|
+
* @param absX — Absolute X of the current node in parent space; must be a **primitive** finite `number`.
|
|
33
|
+
* `typeof` rejects `BigInt` before subtraction (mixing `bigint` with `number` throws in JS) and rejects
|
|
34
|
+
* boxed numbers / strings so corrupt host input cannot coerce via `-`.
|
|
35
|
+
* @param absY — Same rules as `absX`, for the Y axis.
|
|
36
|
+
* @param scrollX — Horizontal scroll offset; coerced with {@link finiteNumberOrZero} (same rule as element `scrollX` props).
|
|
37
|
+
* @param scrollY — Vertical scroll offset; coerced with {@link finiteNumberOrZero}.
|
|
38
|
+
* @returns `{ ox, oy }` when both differences are finite (may be **negative** when scroll exceeds `abs`),
|
|
39
|
+
* or `null` when `absX`/`absY` are not primitive finite numbers or when either axis overflows to non-finite.
|
|
23
40
|
*/
|
|
24
41
|
export declare function scrollSafeChildOffsets(absX: number, absY: number, scrollX: unknown, scrollY: unknown): {
|
|
25
42
|
ox: number;
|
|
@@ -68,7 +85,8 @@ export declare function layoutBoundsAreFinite(layout: ComputedLayout): boolean;
|
|
|
68
85
|
* two large finite operands can still produce `±Infinity`, and naive `x <= absX + width` would then accept
|
|
69
86
|
* every finite `x`. Shared by hit-testing and overflow clipping so behavior stays consistent.
|
|
70
87
|
*
|
|
71
|
-
* @param x — Pointer X
|
|
88
|
+
* @param x — Pointer X; must pass the same primitive finite-number guard as {@link layoutBoundsAreFinite}
|
|
89
|
+
* (`typeof` + `Number.isFinite`; boxed numbers and non-numbers yield `false`).
|
|
72
90
|
* @param y — Pointer Y (same rules as `x`).
|
|
73
91
|
* @param absX — Rectangle minimum X in the same coordinate space as `x`.
|
|
74
92
|
* @param absY — Rectangle minimum Y in the same coordinate space as `y`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout-bounds.d.ts","sourceRoot":"","sources":["../src/layout-bounds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"layout-bounds.d.ts","sourceRoot":"","sources":["../src/layout-bounds.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEnE;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEzD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GACf;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQnC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAInE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAWrE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CACxC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAkBT"}
|
package/dist/layout-bounds.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* True only for finite **primitive** numbers: `typeof` rejects `BigInt`, boxed numbers, and objects before
|
|
3
|
+
* `Number.isFinite`. Shared with protocol patch validation (`@geometra/server` `coalescePatches`) so corrupt
|
|
4
|
+
* serialized scalars are rejected under the same rules as layout bounds and hit-testing.
|
|
5
|
+
*/
|
|
6
|
+
export function isFinitePlainNumber(value) {
|
|
3
7
|
return typeof value === 'number' && Number.isFinite(value);
|
|
4
8
|
}
|
|
5
9
|
/**
|
|
@@ -22,9 +26,14 @@ export function finiteNumberOrZero(value) {
|
|
|
22
26
|
* offsets that would become `0` inside downstream math using {@link finiteNumberOrZero} (which would
|
|
23
27
|
* misplace children).
|
|
24
28
|
*
|
|
25
|
-
*
|
|
26
|
-
* (mixing `bigint` with `number` throws in JS) and rejects
|
|
27
|
-
*
|
|
29
|
+
* @param absX — Absolute X of the current node in parent space; must be a **primitive** finite `number`.
|
|
30
|
+
* `typeof` rejects `BigInt` before subtraction (mixing `bigint` with `number` throws in JS) and rejects
|
|
31
|
+
* boxed numbers / strings so corrupt host input cannot coerce via `-`.
|
|
32
|
+
* @param absY — Same rules as `absX`, for the Y axis.
|
|
33
|
+
* @param scrollX — Horizontal scroll offset; coerced with {@link finiteNumberOrZero} (same rule as element `scrollX` props).
|
|
34
|
+
* @param scrollY — Vertical scroll offset; coerced with {@link finiteNumberOrZero}.
|
|
35
|
+
* @returns `{ ox, oy }` when both differences are finite (may be **negative** when scroll exceeds `abs`),
|
|
36
|
+
* or `null` when `absX`/`absY` are not primitive finite numbers or when either axis overflows to non-finite.
|
|
28
37
|
*/
|
|
29
38
|
export function scrollSafeChildOffsets(absX, absY, scrollX, scrollY) {
|
|
30
39
|
if (typeof absX !== 'number' || !Number.isFinite(absX) || typeof absY !== 'number' || !Number.isFinite(absY)) {
|
|
@@ -79,10 +88,10 @@ export function layoutBoundsAreFinite(layout) {
|
|
|
79
88
|
const { x, y, width, height, children } = layout;
|
|
80
89
|
if (!Array.isArray(children))
|
|
81
90
|
return false;
|
|
82
|
-
return (
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
91
|
+
return (isFinitePlainNumber(x) &&
|
|
92
|
+
isFinitePlainNumber(y) &&
|
|
93
|
+
isFinitePlainNumber(width) &&
|
|
94
|
+
isFinitePlainNumber(height) &&
|
|
86
95
|
width >= 0 &&
|
|
87
96
|
height >= 0);
|
|
88
97
|
}
|
|
@@ -94,7 +103,8 @@ export function layoutBoundsAreFinite(layout) {
|
|
|
94
103
|
* two large finite operands can still produce `±Infinity`, and naive `x <= absX + width` would then accept
|
|
95
104
|
* every finite `x`. Shared by hit-testing and overflow clipping so behavior stays consistent.
|
|
96
105
|
*
|
|
97
|
-
* @param x — Pointer X
|
|
106
|
+
* @param x — Pointer X; must pass the same primitive finite-number guard as {@link layoutBoundsAreFinite}
|
|
107
|
+
* (`typeof` + `Number.isFinite`; boxed numbers and non-numbers yield `false`).
|
|
98
108
|
* @param y — Pointer Y (same rules as `x`).
|
|
99
109
|
* @param absX — Rectangle minimum X in the same coordinate space as `x`.
|
|
100
110
|
* @param absY — Rectangle minimum Y in the same coordinate space as `y`.
|
|
@@ -103,12 +113,12 @@ export function layoutBoundsAreFinite(layout) {
|
|
|
103
113
|
* @returns `true` when the point lies inside the inclusive rect and all arguments are finite with non-negative size.
|
|
104
114
|
*/
|
|
105
115
|
export function pointInInclusiveLayoutRect(x, y, absX, absY, width, height) {
|
|
106
|
-
if (!
|
|
107
|
-
!
|
|
108
|
-
!
|
|
109
|
-
!
|
|
110
|
-
!
|
|
111
|
-
!
|
|
116
|
+
if (!isFinitePlainNumber(x) ||
|
|
117
|
+
!isFinitePlainNumber(y) ||
|
|
118
|
+
!isFinitePlainNumber(absX) ||
|
|
119
|
+
!isFinitePlainNumber(absY) ||
|
|
120
|
+
!isFinitePlainNumber(width) ||
|
|
121
|
+
!isFinitePlainNumber(height) ||
|
|
112
122
|
width < 0 ||
|
|
113
123
|
height < 0) {
|
|
114
124
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout-bounds.js","sourceRoot":"","sources":["../src/layout-bounds.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"layout-bounds.js","sourceRoot":"","sources":["../src/layout-bounds.ts"],"names":[],"mappings":"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"}
|
package/dist/selection.d.ts
CHANGED
|
@@ -55,6 +55,9 @@ export interface SelectionRange {
|
|
|
55
55
|
* When `abs - scroll` overflows to non-finite values, child subtrees are skipped (same
|
|
56
56
|
* {@link import('./layout-bounds.js').scrollSafeChildOffsets} rule as hit-testing) so corrupt extremes
|
|
57
57
|
* cannot emit text nodes with non-finite coordinates.
|
|
58
|
+
* When `offsetX + layout.x` or `offsetY + layout.y` overflows IEEE double range, the walk returns without
|
|
59
|
+
* emitting nodes for that subtree (same non-finite absolute-origin rule as
|
|
60
|
+
* {@link import('./layout-bounds.js').pointInInclusiveLayoutRect} in hit-testing).
|
|
58
61
|
*
|
|
59
62
|
* Sibling order is **element child index** (tree source order), not {@link import('./types.js').StyleProps.zIndex}
|
|
60
63
|
* paint order — pointer routing uses z-index for topmost hits; selection indexing stays stable for a11y and ranges.
|
|
@@ -84,6 +87,8 @@ export declare function getSelectedText(range: SelectionRange, textNodes: TextNo
|
|
|
84
87
|
*
|
|
85
88
|
* `charOffset` matches **JavaScript string indices** (UTF-16 code units) when each line’s `charOffsets` /
|
|
86
89
|
* `charWidths` entry corresponds to one code unit — the usual shape from canvas `measureText` and Pretext.
|
|
90
|
+
* Missing entries and non-finite values are coerced with the same `finiteNumberOrZero` helper as scroll props
|
|
91
|
+
* so corrupt metrics cannot yield `NaN` midpoint comparisons.
|
|
87
92
|
* Supplementary characters then occupy two adjacent indices, aligned with `String` slicing and text-input caret math.
|
|
88
93
|
*
|
|
89
94
|
* Vertical line bands are half-open between stacked lines so a y exactly on an interior boundary belongs to the
|
package/dist/selection.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAQhF,8DAA8D;AAC9D,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,WAAW,CAAA;IACpB,gDAAgD;IAChD,SAAS,EAAE,iBAAiB,CAAA;IAC5B,2BAA2B;IAC3B,CAAC,EAAE,MAAM,CAAA;IACT,2BAA2B;IAC3B,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,mDAAmD;IACnD,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,uEAAuE;IACvE,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,+BAA+B;IAC/B,UAAU,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,2DAA2D;IAC3D,YAAY,EAAE,MAAM,CAAA;IACpB,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAA;CACpB;AAED
|
|
1
|
+
{"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxD,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAQhF,8DAA8D;AAC9D,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,WAAW,CAAA;IACpB,gDAAgD;IAChD,SAAS,EAAE,iBAAiB,CAAA;IAC5B,2BAA2B;IAC3B,CAAC,EAAE,MAAM,CAAA;IACT,2BAA2B;IAC3B,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,mDAAmD;IACnD,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,uEAAuE;IACvE,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,+BAA+B;IAC/B,UAAU,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,2DAA2D;IAC3D,YAAY,EAAE,MAAM,CAAA;IACpB,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,EAAE,EACvB,eAAe,GAAE,iBAAyB,GACzC,IAAI,CASN;AAkED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,YAAY,EAAE,GACxB,MAAM,CAwDR;AAYD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,YAAY,EAAE,EACzB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA2DlD"}
|
package/dist/selection.js
CHANGED
|
@@ -18,6 +18,9 @@ import { finiteNumberOrZero, layoutBoundsAreFinite, pointInInclusiveLayoutRect,
|
|
|
18
18
|
* When `abs - scroll` overflows to non-finite values, child subtrees are skipped (same
|
|
19
19
|
* {@link import('./layout-bounds.js').scrollSafeChildOffsets} rule as hit-testing) so corrupt extremes
|
|
20
20
|
* cannot emit text nodes with non-finite coordinates.
|
|
21
|
+
* When `offsetX + layout.x` or `offsetY + layout.y` overflows IEEE double range, the walk returns without
|
|
22
|
+
* emitting nodes for that subtree (same non-finite absolute-origin rule as
|
|
23
|
+
* {@link import('./layout-bounds.js').pointInInclusiveLayoutRect} in hit-testing).
|
|
21
24
|
*
|
|
22
25
|
* Sibling order is **element child index** (tree source order), not {@link import('./types.js').StyleProps.zIndex}
|
|
23
26
|
* paint order — pointer routing uses z-index for topmost hits; selection indexing stays stable for a11y and ranges.
|
|
@@ -30,6 +33,8 @@ function collectTextNodesWalk(element, layout, offsetX, offsetY, results, parent
|
|
|
30
33
|
return;
|
|
31
34
|
const x = offsetX + layout.x;
|
|
32
35
|
const y = offsetY + layout.y;
|
|
36
|
+
if (!Number.isFinite(x) || !Number.isFinite(y))
|
|
37
|
+
return;
|
|
33
38
|
const direction = resolveElementDirection(element, parentDirection);
|
|
34
39
|
if (element.kind === 'text') {
|
|
35
40
|
if (element.props.selectable !== false) {
|
|
@@ -158,6 +163,8 @@ function textNodeBoundsAreFinite(node) {
|
|
|
158
163
|
*
|
|
159
164
|
* `charOffset` matches **JavaScript string indices** (UTF-16 code units) when each line’s `charOffsets` /
|
|
160
165
|
* `charWidths` entry corresponds to one code unit — the usual shape from canvas `measureText` and Pretext.
|
|
166
|
+
* Missing entries and non-finite values are coerced with the same `finiteNumberOrZero` helper as scroll props
|
|
167
|
+
* so corrupt metrics cannot yield `NaN` midpoint comparisons.
|
|
161
168
|
* Supplementary characters then occupy two adjacent indices, aligned with `String` slicing and text-input caret math.
|
|
162
169
|
*
|
|
163
170
|
* Vertical line bands are half-open between stacked lines so a y exactly on an interior boundary belongs to the
|
|
@@ -193,14 +200,15 @@ export function hitTestText(textNodes, px, py) {
|
|
|
193
200
|
// Find the character within the line
|
|
194
201
|
const localX = px - line.x;
|
|
195
202
|
const lineVisualWidth = line.charOffsets.length > 0
|
|
196
|
-
? (line.charOffsets[line.charOffsets.length - 1]
|
|
203
|
+
? finiteNumberOrZero(line.charOffsets[line.charOffsets.length - 1]) +
|
|
204
|
+
finiteNumberOrZero(line.charWidths[line.charWidths.length - 1])
|
|
197
205
|
: 0;
|
|
198
206
|
if (node.direction === 'rtl') {
|
|
199
207
|
// In RTL mode, map visual x from the right edge back to logical indices.
|
|
200
208
|
const visualFromRight = lineVisualWidth - localX;
|
|
201
209
|
for (let c = 0; c < line.charOffsets.length; c++) {
|
|
202
|
-
const charStart = line.charOffsets[c];
|
|
203
|
-
const charEnd = charStart + line.charWidths[c];
|
|
210
|
+
const charStart = finiteNumberOrZero(line.charOffsets[c]);
|
|
211
|
+
const charEnd = charStart + finiteNumberOrZero(line.charWidths[c]);
|
|
204
212
|
if (visualFromRight < (charStart + charEnd) / 2) {
|
|
205
213
|
return { nodeIndex: node.index, charOffset: globalCharOffset + c };
|
|
206
214
|
}
|
|
@@ -208,8 +216,8 @@ export function hitTestText(textNodes, px, py) {
|
|
|
208
216
|
}
|
|
209
217
|
else {
|
|
210
218
|
for (let c = 0; c < line.charOffsets.length; c++) {
|
|
211
|
-
const charStart = line.charOffsets[c];
|
|
212
|
-
const charEnd = charStart + line.charWidths[c];
|
|
219
|
+
const charStart = finiteNumberOrZero(line.charOffsets[c]);
|
|
220
|
+
const charEnd = charStart + finiteNumberOrZero(line.charWidths[c]);
|
|
213
221
|
if (localX < (charStart + charEnd) / 2) {
|
|
214
222
|
return { nodeIndex: node.index, charOffset: globalCharOffset + c };
|
|
215
223
|
}
|
package/dist/selection.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selection.js","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAA0B,MAAM,gBAAgB,CAAA;AAChF,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAyC3B
|
|
1
|
+
{"version":3,"file":"selection.js","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"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"}
|
package/dist/tree.d.ts
CHANGED
|
@@ -5,6 +5,8 @@ import type { UIElement } from './types.js';
|
|
|
5
5
|
*
|
|
6
6
|
* Strips everything that is not consumed by Textura layout: colors, borders, opacity, cursor,
|
|
7
7
|
* `pointerEvents`, `zIndex`, `overflow` / `scrollX` / `scrollY`, `boxShadow`, `gradient`,
|
|
8
|
+
* event-handler-style props (`on` + uppercase; same shape as {@link import('./types.js').EventHandlers}) and mistaken
|
|
9
|
+
* `handlers` on `props`,
|
|
8
10
|
* `selectable`, `key` / `semantic` (runtime metadata; constructors normally lift these off `props`),
|
|
9
11
|
* `dir` on the layout root only, image `src` / `alt` / `objectFit`, and scene3d host fields (`background`,
|
|
10
12
|
* `objects`, `fov`, `near`, `far`, `cameraPosition`, `cameraTarget`, `orbitControls`, `maxPixelRatio`).
|
package/dist/tree.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAqE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,UAAO,GAAG,UAAU,CAchF"}
|
package/dist/tree.js
CHANGED
|
@@ -1,19 +1,36 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* Strip `onFoo`-style handler keys (leading `on` + uppercase) so stray callbacks from bad casts or
|
|
3
|
+
* DOM-era names never reach Textura/Yoga. Matches every {@link import('./types.js').EventHandlers} name
|
|
4
|
+
* and unknown `on*` props such as `onUnknown`, without touching keys like `online` or `onlyChild`.
|
|
5
|
+
*/
|
|
6
|
+
function stripOnHandlerProps(layoutProps) {
|
|
7
|
+
for (const k of Object.keys(layoutProps)) {
|
|
8
|
+
if (/^on[A-Z]/.test(k))
|
|
9
|
+
delete layoutProps[k];
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Shallow-copy `props` and remove paint, hit-target, scroll-container, and non-Yoga metadata before Yoga.
|
|
14
|
+
*
|
|
15
|
+
* Keep the delete list aligned with {@link StyleProps}, text/image-only fields, `selectable`, and runtime
|
|
4
16
|
* metadata (`key`, `semantic`) that belong on {@link UIElement} but must never reach Yoga when mistakenly
|
|
5
|
-
* present on `props` (bad casts / corrupt snapshots).
|
|
6
|
-
*
|
|
7
|
-
* (see {@link toLayoutTree}).
|
|
17
|
+
* present on `props` (bad casts / corrupt snapshots). See `tree.test.ts`. Per-node `dir` is forwarded to Textura
|
|
18
|
+
* for non-root nodes only (see {@link toLayoutTree}).
|
|
8
19
|
*
|
|
9
20
|
* `overflow`, `scrollX`, and `scrollY` stay on the **live** {@link UIElement} tree for
|
|
10
21
|
* {@link import('./hit-test.js').dispatchHit}, canvas/terminal paint, and {@link import('./selection.js').collectTextNodes},
|
|
11
22
|
* but are omitted here so the Textura snapshot stays a pure flex/measure input. Scroll offsets and parent-bounds
|
|
12
23
|
* containment come from the live tree in hit-testing/selection; renderers apply `overflow` clip modes when painting
|
|
13
24
|
* instead of threading these props through Yoga/WASM for layout.
|
|
25
|
+
*
|
|
26
|
+
* {@link import('./types.js').EventHandlers} keys (any `on` + uppercase prefix), mistaken `handlers` on `props`,
|
|
27
|
+
* and keys removed above are stripped so bad casts, manual trees, or corrupt snapshots cannot thread functions or
|
|
28
|
+
* paint-only fields into the layout pipeline. Runs {@link stripOnHandlerProps} first.
|
|
14
29
|
*/
|
|
15
30
|
function stripStyleProps(props) {
|
|
16
31
|
const layoutProps = { ...props };
|
|
32
|
+
stripOnHandlerProps(layoutProps);
|
|
33
|
+
delete layoutProps.handlers;
|
|
17
34
|
delete layoutProps.backgroundColor;
|
|
18
35
|
delete layoutProps.color;
|
|
19
36
|
delete layoutProps.borderColor;
|
|
@@ -52,6 +69,8 @@ function stripStyleProps(props) {
|
|
|
52
69
|
*
|
|
53
70
|
* Strips everything that is not consumed by Textura layout: colors, borders, opacity, cursor,
|
|
54
71
|
* `pointerEvents`, `zIndex`, `overflow` / `scrollX` / `scrollY`, `boxShadow`, `gradient`,
|
|
72
|
+
* event-handler-style props (`on` + uppercase; same shape as {@link import('./types.js').EventHandlers}) and mistaken
|
|
73
|
+
* `handlers` on `props`,
|
|
55
74
|
* `selectable`, `key` / `semantic` (runtime metadata; constructors normally lift these off `props`),
|
|
56
75
|
* `dir` on the layout root only, image `src` / `alt` / `objectFit`, and scene3d host fields (`background`,
|
|
57
76
|
* `objects`, `fov`, `near`, `far`, `cameraPosition`, `cameraTarget`, `orbitControls`, `maxPixelRatio`).
|
package/dist/tree.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,WAAoC;IAC/D,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACzC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;IAC/C,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAS,eAAe,CAAC,KAA8B;IACrD,MAAM,WAAW,GAAG,EAAE,GAAG,KAAK,EAAE,CAAA;IAChC,mBAAmB,CAAC,WAAW,CAAC,CAAA;IAChC,OAAO,WAAW,CAAC,QAAQ,CAAA;IAC3B,OAAO,WAAW,CAAC,eAAe,CAAA;IAClC,OAAO,WAAW,CAAC,KAAK,CAAA;IACxB,OAAO,WAAW,CAAC,WAAW,CAAA;IAC9B,OAAO,WAAW,CAAC,YAAY,CAAA;IAC/B,OAAO,WAAW,CAAC,WAAW,CAAA;IAC9B,OAAO,WAAW,CAAC,OAAO,CAAA;IAC1B,OAAO,WAAW,CAAC,MAAM,CAAA;IACzB,OAAO,WAAW,CAAC,aAAa,CAAA;IAChC,OAAO,WAAW,CAAC,MAAM,CAAA;IACzB,OAAO,WAAW,CAAC,QAAQ,CAAA;IAC3B,OAAO,WAAW,CAAC,OAAO,CAAA;IAC1B,OAAO,WAAW,CAAC,OAAO,CAAA;IAC1B,OAAO,WAAW,CAAC,SAAS,CAAA;IAC5B,OAAO,WAAW,CAAC,QAAQ,CAAA;IAC3B,OAAO,WAAW,CAAC,UAAU,CAAA;IAC7B,OAAO,WAAW,CAAC,GAAG,CAAA;IACtB,OAAO,WAAW,CAAC,QAAQ,CAAA;IAC3B,mBAAmB;IACnB,OAAO,WAAW,CAAC,GAAG,CAAA;IACtB,OAAO,WAAW,CAAC,GAAG,CAAA;IACtB,OAAO,WAAW,CAAC,SAAS,CAAA;IAC5B,qBAAqB;IACrB,OAAO,WAAW,CAAC,UAAU,CAAA;IAC7B,OAAO,WAAW,CAAC,OAAO,CAAA;IAC1B,OAAO,WAAW,CAAC,GAAG,CAAA;IACtB,OAAO,WAAW,CAAC,IAAI,CAAA;IACvB,OAAO,WAAW,CAAC,GAAG,CAAA;IACtB,OAAO,WAAW,CAAC,cAAc,CAAA;IACjC,OAAO,WAAW,CAAC,YAAY,CAAA;IAC/B,OAAO,WAAW,CAAC,aAAa,CAAA;IAChC,OAAO,WAAW,CAAC,aAAa,CAAA;IAChC,OAAO,WAAW,CAAA;AACpB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,UAAU,YAAY,CAAC,OAAkB,EAAE,YAAY,GAAG,IAAI;IAClE,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAA;IAC7E,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,WAAW,CAAC,GAAG,CAAA;IACxB,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACtF,OAAO,WAAyB,CAAA;IAClC,CAAC;IAED,OAAO;QACL,GAAG,WAAW;QACd,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KACxD,CAAA;AACjB,CAAC"}
|
package/dist/virtual-scroll.d.ts
CHANGED
|
@@ -7,6 +7,19 @@ export interface VirtualWindowState {
|
|
|
7
7
|
/** Selection index after clamping to valid row range. */
|
|
8
8
|
selected: number;
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Inclusive last row index for a window starting at `start`. When `start + safeWindow - 1` overflows or is
|
|
12
|
+
* otherwise non-finite, returns `maxIndex` when it is finite, else `0` (same overflow idea as
|
|
13
|
+
* {@link import('./layout-bounds.js').pointInInclusiveLayoutRect}).
|
|
14
|
+
*
|
|
15
|
+
* When `spanEnd` is finite but `maxIndex` is not, returns `spanEnd` so corrupt caps cannot yield `NaN` from
|
|
16
|
+
* `Math.min`. {@link syncVirtualWindow} always passes a non-negative integer `maxIndex`. When both are
|
|
17
|
+
* finite, `maxIndex` is clamped to `≥ 0` before `Math.min` so a negative cap cannot produce a negative end
|
|
18
|
+
* while `spanEnd` is still positive.
|
|
19
|
+
*
|
|
20
|
+
* Exported for parity tests and advanced virtual-list math; {@link syncVirtualWindow} is the primary API.
|
|
21
|
+
*/
|
|
22
|
+
export declare function inclusiveEndIndex(start: number, maxIndex: number, safeWindow: number): number;
|
|
10
23
|
/**
|
|
11
24
|
* Keep the selected row index visible inside a fixed-size virtual window.
|
|
12
25
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtual-scroll.d.ts","sourceRoot":"","sources":["../src/virtual-scroll.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,MAAM,WAAW,kBAAkB;IACjC,yFAAyF;IACzF,KAAK,EAAE,MAAM,CAAA;IACb,0FAA0F;IAC1F,GAAG,EAAE,MAAM,CAAA;IACX,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAA;CACjB;
|
|
1
|
+
{"version":3,"file":"virtual-scroll.d.ts","sourceRoot":"","sources":["../src/virtual-scroll.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,MAAM,WAAW,kBAAkB;IACjC,yFAAyF;IACzF,KAAK,EAAE,MAAM,CAAA;IACb,0FAA0F;IAC1F,GAAG,EAAE,MAAM,CAAA;IACX,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAA;CACjB;AAiBD;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAW7F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,kBAAkB,CAsBpB"}
|
package/dist/virtual-scroll.js
CHANGED
|
@@ -12,11 +12,27 @@ function nonNegativeOrZero(n) {
|
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
14
|
* Inclusive last row index for a window starting at `start`. When `start + safeWindow - 1` overflows or is
|
|
15
|
-
* otherwise non-finite, returns `maxIndex` (same
|
|
15
|
+
* otherwise non-finite, returns `maxIndex` when it is finite, else `0` (same overflow idea as
|
|
16
|
+
* {@link import('./layout-bounds.js').pointInInclusiveLayoutRect}).
|
|
17
|
+
*
|
|
18
|
+
* When `spanEnd` is finite but `maxIndex` is not, returns `spanEnd` so corrupt caps cannot yield `NaN` from
|
|
19
|
+
* `Math.min`. {@link syncVirtualWindow} always passes a non-negative integer `maxIndex`. When both are
|
|
20
|
+
* finite, `maxIndex` is clamped to `≥ 0` before `Math.min` so a negative cap cannot produce a negative end
|
|
21
|
+
* while `spanEnd` is still positive.
|
|
22
|
+
*
|
|
23
|
+
* Exported for parity tests and advanced virtual-list math; {@link syncVirtualWindow} is the primary API.
|
|
16
24
|
*/
|
|
17
|
-
function inclusiveEndIndex(start, maxIndex, safeWindow) {
|
|
25
|
+
export function inclusiveEndIndex(start, maxIndex, safeWindow) {
|
|
18
26
|
const spanEnd = start + safeWindow - 1;
|
|
19
|
-
|
|
27
|
+
if (!Number.isFinite(spanEnd)) {
|
|
28
|
+
return Number.isFinite(maxIndex) ? maxIndex : 0;
|
|
29
|
+
}
|
|
30
|
+
if (!Number.isFinite(maxIndex)) {
|
|
31
|
+
return spanEnd;
|
|
32
|
+
}
|
|
33
|
+
// maxIndex is always non-negative from syncVirtualWindow; clamp so direct callers with corrupt
|
|
34
|
+
// negative caps cannot produce a negative end when spanEnd is still positive.
|
|
35
|
+
return Math.min(Math.max(0, maxIndex), spanEnd);
|
|
20
36
|
}
|
|
21
37
|
/**
|
|
22
38
|
* Keep the selected row index visible inside a fixed-size virtual window.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtual-scroll.js","sourceRoot":"","sources":["../src/virtual-scroll.ts"],"names":[],"mappings":"AAUA,0IAA0I;AAC1I,SAAS,QAAQ,CAAC,CAAS,EAAE,QAAgB;IAC3C,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;AACnE,CAAC;AAED,sHAAsH;AACtH,SAAS,YAAY,CAAC,CAAS,EAAE,QAAgB;IAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;AACvD,CAAC;AAED,2GAA2G;AAC3G,SAAS,iBAAiB,CAAC,CAAS;IAClC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAChD,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"virtual-scroll.js","sourceRoot":"","sources":["../src/virtual-scroll.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geometra/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.48.0",
|
|
4
4
|
"description": "DOM-free UI framework core: components, signals, reconciler",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"check": "tsc --noEmit"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"textura": "^1.
|
|
42
|
+
"textura": "^1.48.0"
|
|
43
43
|
},
|
|
44
44
|
"optionalDependencies": {
|
|
45
45
|
"@napi-rs/canvas": "^0.1.65"
|