@geometra/core 1.3.1 → 1.5.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 +8 -1
- package/dist/a11y.d.ts.map +1 -1
- package/dist/a11y.js +24 -16
- package/dist/a11y.js.map +1 -1
- package/dist/animation.d.ts +7 -3
- package/dist/animation.d.ts.map +1 -1
- package/dist/animation.js +22 -15
- package/dist/animation.js.map +1 -1
- package/dist/app.d.ts +26 -7
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +32 -8
- package/dist/app.js.map +1 -1
- package/dist/elements.d.ts +3 -0
- package/dist/elements.d.ts.map +1 -1
- package/dist/elements.js +3 -0
- package/dist/elements.js.map +1 -1
- package/dist/focus-candidates.d.ts +8 -0
- package/dist/focus-candidates.d.ts.map +1 -0
- package/dist/focus-candidates.js +14 -0
- package/dist/focus-candidates.js.map +1 -0
- package/dist/focus-trap.d.ts.map +1 -1
- package/dist/focus-trap.js +2 -6
- package/dist/focus-trap.js.map +1 -1
- package/dist/focus.d.ts +1 -0
- package/dist/focus.d.ts.map +1 -1
- package/dist/focus.js +3 -6
- package/dist/focus.js.map +1 -1
- package/dist/fonts.d.ts +5 -2
- package/dist/fonts.d.ts.map +1 -1
- package/dist/fonts.js +12 -3
- package/dist/fonts.js.map +1 -1
- package/dist/hit-test.d.ts +56 -11
- package/dist/hit-test.d.ts.map +1 -1
- package/dist/hit-test.js +80 -41
- package/dist/hit-test.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/keyboard.d.ts +23 -3
- package/dist/keyboard.d.ts.map +1 -1
- package/dist/keyboard.js +23 -3
- package/dist/keyboard.js.map +1 -1
- package/dist/layout-bounds.d.ts +8 -0
- package/dist/layout-bounds.d.ts.map +1 -1
- package/dist/layout-bounds.js +10 -0
- package/dist/layout-bounds.js.map +1 -1
- package/dist/selection.d.ts +12 -1
- package/dist/selection.d.ts.map +1 -1
- package/dist/selection.js +28 -12
- package/dist/selection.js.map +1 -1
- package/dist/text-input.d.ts +14 -2
- package/dist/text-input.d.ts.map +1 -1
- package/dist/text-input.js +20 -11
- package/dist/text-input.js.map +1 -1
- package/dist/tree.d.ts +9 -6
- package/dist/tree.d.ts.map +1 -1
- package/dist/tree.js +9 -6
- package/dist/tree.js.map +1 -1
- package/dist/types.d.ts +5 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/virtual-scroll.d.ts +7 -4
- package/dist/virtual-scroll.d.ts.map +1 -1
- package/dist/virtual-scroll.js +15 -8
- package/dist/virtual-scroll.js.map +1 -1
- package/package.json +1 -1
package/dist/tree.js
CHANGED
|
@@ -43,13 +43,16 @@ function stripStyleProps(props) {
|
|
|
43
43
|
*
|
|
44
44
|
* Strips everything that is not consumed by Textura layout: colors, borders, opacity, cursor,
|
|
45
45
|
* `pointerEvents`, `zIndex`, `overflow` / `scrollX` / `scrollY`, `boxShadow`, `gradient`,
|
|
46
|
-
* `selectable`, `dir`,
|
|
47
|
-
*
|
|
46
|
+
* `selectable`, `dir`, image `src` / `alt` / `objectFit`, and scene3d host fields (`background`,
|
|
47
|
+
* `objects`, `fov`, `near`, `far`, `cameraPosition`, `cameraTarget`, `orbitControls`, `maxPixelRatio`).
|
|
48
|
+
* Remaining props are flex and sizing fields that belong in the layout pipeline.
|
|
48
49
|
*
|
|
49
|
-
* `dir` is
|
|
50
|
-
*
|
|
51
|
-
* `
|
|
52
|
-
* {@link UIElement} tree
|
|
50
|
+
* Per-node `dir` is intentionally stripped from layout nodes: Yoga/Textura receives one document
|
|
51
|
+
* direction from {@link import('./app.js').createApp}'s {@link import('./app.js').AppOptions.layoutDirection}
|
|
52
|
+
* (or the root element’s resolved `dir` when that option is omitted), while nested `dir` on the live
|
|
53
|
+
* {@link UIElement} tree is resolved at text, focus, selection, and hit-test time with
|
|
54
|
+
* {@link import('./direction.js').resolveElementDirection}. ROADMAP.md “Deferred / research” tracks an
|
|
55
|
+
* optional future pass that would thread per-node direction through Textura layout props.
|
|
53
56
|
*
|
|
54
57
|
* Does not mutate the source element or its `props` (strip list is applied to a shallow copy).
|
|
55
58
|
*
|
package/dist/tree.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAA8B;IACrD,MAAM,WAAW,GAAG,EAAE,GAAG,KAAK,EAAE,CAAA;IAChC,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,wEAAwE;IACxE,OAAO,WAAW,CAAC,GAAG,CAAA;IACtB,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
|
|
1
|
+
{"version":3,"file":"tree.js","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAA8B;IACrD,MAAM,WAAW,GAAG,EAAE,GAAG,KAAK,EAAE,CAAA;IAChC,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,wEAAwE;IACxE,OAAO,WAAW,CAAC,GAAG,CAAA;IACtB,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;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,YAAY,CAAC,OAAkB;IAC7C,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAA;IAE7E,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,YAAY,CAAC;KAC/B,CAAA;AACjB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -8,8 +8,9 @@ export type Direction = 'ltr' | 'rtl' | 'auto';
|
|
|
8
8
|
/**
|
|
9
9
|
* CSS `cursor` keyword for box props (canvas hosts assign it to `canvas.style.cursor` when supported).
|
|
10
10
|
* Use `''` so {@link import('./hit-test.js').getCursorAtPoint} can fall through to an ancestor cursor.
|
|
11
|
+
* The union is a curated subset of valid CSS keywords, not an exhaustive list.
|
|
11
12
|
*/
|
|
12
|
-
export type CursorProp = '' | 'default' | 'pointer' | 'grab' | 'grabbing' | 'text' | 'not-allowed' | 'crosshair' | 'move' | 'help' | 'cell';
|
|
13
|
+
export type CursorProp = '' | 'default' | 'pointer' | 'grab' | 'grabbing' | 'text' | 'not-allowed' | 'crosshair' | 'move' | 'help' | 'cell' | 'zoom-in' | 'zoom-out';
|
|
13
14
|
/** Optional direction metadata carried on UI props (see {@link Direction}). */
|
|
14
15
|
export interface DirectionProps {
|
|
15
16
|
/** When omitted or `auto`, inherits the parent’s resolved `ltr` / `rtl`. */
|
|
@@ -31,8 +32,9 @@ export interface StyleProps {
|
|
|
31
32
|
*/
|
|
32
33
|
zIndex?: number;
|
|
33
34
|
/**
|
|
34
|
-
* Pointer hit targeting. `'none'`
|
|
35
|
-
*
|
|
35
|
+
* Pointer hit targeting. Only `'none'` is pass-through: this box is omitted from the pointer stack and
|
|
36
|
+
* cursor walk so hits reach geometry behind. `'auto'` and omitting the prop behave the same (the box stays
|
|
37
|
+
* in the stack). Descendants still receive hits under a `'none'` parent unless they also set `'none'`.
|
|
36
38
|
*/
|
|
37
39
|
pointerEvents?: 'auto' | 'none';
|
|
38
40
|
/**
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAExD;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA;AAE9C
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/virtual-scroll.d.ts
CHANGED
|
@@ -10,10 +10,13 @@ export interface VirtualWindowState {
|
|
|
10
10
|
/**
|
|
11
11
|
* Keep the selected row index visible inside a fixed-size virtual window.
|
|
12
12
|
*
|
|
13
|
-
* @param totalRows — Non-negative row count; negative values are treated as zero.
|
|
14
|
-
*
|
|
15
|
-
* @param
|
|
16
|
-
*
|
|
13
|
+
* @param totalRows — Non-negative row count; negative values are treated as zero. Non-integer finite values are
|
|
14
|
+
* floored so row counts stay whole indices (same rule as `windowSize`).
|
|
15
|
+
* @param windowSize — Visible row count; values below 1 are clamped to 1. Non-integer finite values are floored
|
|
16
|
+
* so `start` / `end` stay whole row indices (same as counting visible list rows).
|
|
17
|
+
* @param selected — Desired selection index; floored to a whole row, then clamped into `[0, totalRows - 1]`.
|
|
18
|
+
* @param currentStart — Current window start index; floored to a whole row, then clamped into valid range before
|
|
19
|
+
* adjusting for selection.
|
|
17
20
|
* Non-finite arguments use the same defaults as empty/reset UI state (`0` rows, window `1`, selection/start `0`).
|
|
18
21
|
*/
|
|
19
22
|
export declare function syncVirtualWindow(totalRows: number, windowSize: number, selected: number, currentStart: number): VirtualWindowState;
|
|
@@ -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;AAYD;;;;;;;;;;;GAWG;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
|
@@ -2,22 +2,29 @@
|
|
|
2
2
|
function finiteOr(n, fallback) {
|
|
3
3
|
return typeof n === 'number' && Number.isFinite(n) ? n : fallback;
|
|
4
4
|
}
|
|
5
|
+
/** Non-negative integer row index / count: finite numbers only, then floored (aligned with `windowSize` flooring). */
|
|
6
|
+
function intRowMetric(n, fallback) {
|
|
7
|
+
return Math.max(0, Math.floor(finiteOr(n, fallback)));
|
|
8
|
+
}
|
|
5
9
|
/**
|
|
6
10
|
* Keep the selected row index visible inside a fixed-size virtual window.
|
|
7
11
|
*
|
|
8
|
-
* @param totalRows — Non-negative row count; negative values are treated as zero.
|
|
9
|
-
*
|
|
10
|
-
* @param
|
|
11
|
-
*
|
|
12
|
+
* @param totalRows — Non-negative row count; negative values are treated as zero. Non-integer finite values are
|
|
13
|
+
* floored so row counts stay whole indices (same rule as `windowSize`).
|
|
14
|
+
* @param windowSize — Visible row count; values below 1 are clamped to 1. Non-integer finite values are floored
|
|
15
|
+
* so `start` / `end` stay whole row indices (same as counting visible list rows).
|
|
16
|
+
* @param selected — Desired selection index; floored to a whole row, then clamped into `[0, totalRows - 1]`.
|
|
17
|
+
* @param currentStart — Current window start index; floored to a whole row, then clamped into valid range before
|
|
18
|
+
* adjusting for selection.
|
|
12
19
|
* Non-finite arguments use the same defaults as empty/reset UI state (`0` rows, window `1`, selection/start `0`).
|
|
13
20
|
*/
|
|
14
21
|
export function syncVirtualWindow(totalRows, windowSize, selected, currentStart) {
|
|
15
|
-
const safeTotal =
|
|
16
|
-
const safeWindow = Math.max(1, finiteOr(windowSize, 1));
|
|
22
|
+
const safeTotal = intRowMetric(totalRows, 0);
|
|
23
|
+
const safeWindow = Math.max(1, Math.floor(finiteOr(windowSize, 1)));
|
|
17
24
|
const maxIndex = Math.max(0, safeTotal - 1);
|
|
18
|
-
const nextSelected = Math.max(0, Math.min(maxIndex,
|
|
25
|
+
const nextSelected = Math.max(0, Math.min(maxIndex, intRowMetric(selected, 0)));
|
|
19
26
|
const maxStart = Math.max(0, safeTotal - safeWindow);
|
|
20
|
-
let start = Math.max(0, Math.min(maxStart,
|
|
27
|
+
let start = Math.max(0, Math.min(maxStart, intRowMetric(currentStart, 0)));
|
|
21
28
|
const end = Math.min(maxIndex, start + safeWindow - 1);
|
|
22
29
|
if (nextSelected < start) {
|
|
23
30
|
start = nextSelected;
|
|
@@ -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
|
|
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;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAAiB,EACjB,UAAkB,EAClB,QAAgB,EAChB,YAAoB;IAEpB,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAA;IAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,CAAA;IAEpD,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC,CAAA;IAEtD,IAAI,YAAY,GAAG,KAAK,EAAE,CAAC;QACzB,KAAK,GAAG,YAAY,CAAA;IACtB,CAAC;SAAM,IAAI,YAAY,GAAG,GAAG,EAAE,CAAC;QAC9B,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,GAAG,UAAU,GAAG,CAAC,CAAC,CAAA;IACpD,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;IAC3D,OAAO;QACL,KAAK,EAAE,YAAY;QACnB,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,GAAG,UAAU,GAAG,CAAC,CAAC;QACtD,QAAQ,EAAE,YAAY;KACvB,CAAA;AACH,CAAC"}
|