@geometra/core 1.8.0 → 1.8.1

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/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;AA2CtF,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;;;OAGG;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"}
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;AAiCtF,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;;;OAGG;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
@@ -1,17 +1,11 @@
1
1
  import { init, computeLayout } from 'textura';
2
2
  import { toLayoutTree } from './tree.js';
3
- import { resolveElementDirection } from './direction.js';
3
+ import { resolveComputeLayoutDirection } from './direction.js';
4
4
  import { dispatchHit } from './hit-test.js';
5
5
  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
- function resolveComputeLayoutDirection(layoutDirection, root) {
10
- if (layoutDirection === 'ltr' || layoutDirection === 'rtl') {
11
- return layoutDirection;
12
- }
13
- return resolveElementDirection(root, 'ltr');
14
- }
15
9
  /** Only finite, non-negative numbers become Textura root constraints; otherwise the key is omitted (unconstrained). */
16
10
  function finiteRootExtent(value) {
17
11
  if (typeof value !== 'number' || !Number.isFinite(value))
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
@@ -16,4 +16,16 @@ export declare function resolveDirectionValue(dir: Direction | undefined, parent
16
16
  * @returns Concrete `ltr` or `rtl` for layout, text, and hit-testing.
17
17
  */
18
18
  export declare function resolveElementDirection(element: UIElement, parentDirection?: ResolvedDirection): ResolvedDirection;
19
+ /**
20
+ * Yoga / Textura **owner** direction for the layout-tree root: optional host override plus the live UI root.
21
+ *
22
+ * Only exact primitive `'ltr'` and `'rtl'` on `layoutDirection` win; any other value (omitted,
23
+ * `'auto'`, malformed config, boxed strings, etc.) falls back to {@link resolveElementDirection} on
24
+ * `root` with document default `'ltr'`, matching {@link import('./app.js').createApp} and keeping
25
+ * server-driven layout aligned with local canvas apps.
26
+ *
27
+ * @param layoutDirection — Host override (`createServer` / `createApp` option), or any runtime garbage; only `'ltr'` / `'rtl'` count.
28
+ * @param root — Live view root used when the override is absent or invalid.
29
+ */
30
+ export declare function resolveComputeLayoutDirection(layoutDirection: unknown, root: UIElement): ResolvedDirection;
19
31
  //# sourceMappingURL=direction.d.ts.map
@@ -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;;;;;;GAMG;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"}
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;;;;;;GAMG;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;;;;;;;;;;GAUG;AACH,wBAAgB,6BAA6B,CAC3C,eAAe,EAAE,OAAO,EACxB,IAAI,EAAE,SAAS,GACd,iBAAiB,CAKnB"}
package/dist/direction.js CHANGED
@@ -27,4 +27,21 @@ export function resolveElementDirection(element, parentDirection = 'ltr') {
27
27
  const dir = element.props.dir;
28
28
  return resolveDirectionValue(dir, parentDirection);
29
29
  }
30
+ /**
31
+ * Yoga / Textura **owner** direction for the layout-tree root: optional host override plus the live UI root.
32
+ *
33
+ * Only exact primitive `'ltr'` and `'rtl'` on `layoutDirection` win; any other value (omitted,
34
+ * `'auto'`, malformed config, boxed strings, etc.) falls back to {@link resolveElementDirection} on
35
+ * `root` with document default `'ltr'`, matching {@link import('./app.js').createApp} and keeping
36
+ * server-driven layout aligned with local canvas apps.
37
+ *
38
+ * @param layoutDirection — Host override (`createServer` / `createApp` option), or any runtime garbage; only `'ltr'` / `'rtl'` count.
39
+ * @param root — Live view root used when the override is absent or invalid.
40
+ */
41
+ export function resolveComputeLayoutDirection(layoutDirection, root) {
42
+ if (layoutDirection === 'ltr' || layoutDirection === 'rtl') {
43
+ return layoutDirection;
44
+ }
45
+ return resolveElementDirection(root, 'ltr');
46
+ }
30
47
  //# sourceMappingURL=direction.js.map
@@ -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;;;;;;GAMG;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"}
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;;;;;;GAMG;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;;;;;;;;;;GAUG;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"}
@@ -5,14 +5,16 @@ import type { UIElement } from './types.js';
5
5
  *
6
6
  * Focusables are boxes with any of `onClick`, `onKeyDown`, `onKeyUp`,
7
7
  * `onCompositionStart`, `onCompositionUpdate`, or `onCompositionEnd`, in tree order (same rule as
8
- * {@link collectFocusOrder}, including skipping corrupt layout bounds).
8
+ * {@link collectFocusOrder}, including skipping corrupt layout bounds and treating non-array
9
+ * `children` as empty).
9
10
  *
10
11
  * When the current {@link focusedElement} is missing or not inside the trap list, `'next'`
11
12
  * jumps to the first focusable and `'prev'` to the last — so focus can enter the trap from
12
13
  * outside without clearing focus first.
13
14
  *
14
15
  * @param scopePath — Indices from the tree root to the trap root box (inclusive). Invalid
15
- * paths (out-of-range index, non-box node, or empty focusable list under the subtree) yield `false`.
16
+ * paths (out-of-range index, non-box node, non-array `children` on a box along the path, or empty
17
+ * focusable list under the subtree) yield `false`.
16
18
  * @returns `true` if focus was moved, `false` if the scope is invalid or contains no focusables.
17
19
  */
18
20
  export declare function trapFocusStep(tree: UIElement, layout: ComputedLayout, scopePath: number[], direction?: 'next' | 'prev'): boolean;
@@ -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;AA0CvD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,GAAE,MAAM,GAAG,MAAe,GAClC,OAAO,CAgBT"}
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;AA8CvD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,GAAE,MAAM,GAAG,MAAe,GAClC,OAAO,CAgBT"}
@@ -9,8 +9,10 @@ function collectFocusable(element, layout, out) {
9
9
  if (hasFocusCandidateHandlers(element.handlers)) {
10
10
  out.push({ element, layout });
11
11
  }
12
- for (let i = 0; i < element.children.length; i++) {
13
- const child = element.children[i];
12
+ const kids = element.children;
13
+ const n = Array.isArray(kids) ? kids.length : 0;
14
+ for (let i = 0; i < n; i++) {
15
+ const child = kids[i];
14
16
  const childLayout = layout.children[i];
15
17
  if (child && childLayout)
16
18
  collectFocusable(child, childLayout, out);
@@ -22,7 +24,10 @@ function resolveSubtree(tree, layout, path) {
22
24
  for (const idx of path) {
23
25
  if (el.kind !== 'box')
24
26
  return null;
25
- const nextEl = el.children[idx];
27
+ const kids = el.children;
28
+ if (!Array.isArray(kids))
29
+ return null;
30
+ const nextEl = kids[idx];
26
31
  const nextLo = lo.children[idx];
27
32
  if (!nextEl || !nextLo)
28
33
  return null;
@@ -38,14 +43,16 @@ function resolveSubtree(tree, layout, path) {
38
43
  *
39
44
  * Focusables are boxes with any of `onClick`, `onKeyDown`, `onKeyUp`,
40
45
  * `onCompositionStart`, `onCompositionUpdate`, or `onCompositionEnd`, in tree order (same rule as
41
- * {@link collectFocusOrder}, including skipping corrupt layout bounds).
46
+ * {@link collectFocusOrder}, including skipping corrupt layout bounds and treating non-array
47
+ * `children` as empty).
42
48
  *
43
49
  * When the current {@link focusedElement} is missing or not inside the trap list, `'next'`
44
50
  * jumps to the first focusable and `'prev'` to the last — so focus can enter the trap from
45
51
  * outside without clearing focus first.
46
52
  *
47
53
  * @param scopePath — Indices from the tree root to the trap root box (inclusive). Invalid
48
- * paths (out-of-range index, non-box node, or empty focusable list under the subtree) yield `false`.
54
+ * paths (out-of-range index, non-box node, non-array `children` on a box along the path, or empty
55
+ * focusable list under the subtree) yield `false`.
49
56
  * @returns `true` if focus was moved, `false` if the scope is invalid or contains no focusables.
50
57
  */
51
58
  export function trapFocusStep(tree, layout, scopePath, direction = 'next') {
@@ -1 +1 @@
1
- {"version":3,"file":"focus-trap.js","sourceRoot":"","sources":["../src/focus-trap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"focus-trap.js","sourceRoot":"","sources":["../src/focus-trap.ts"],"names":[],"mappings":"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"}
package/dist/focus.d.ts CHANGED
@@ -18,6 +18,8 @@ export declare function clearFocus(): void;
18
18
  * A box is focusable when it defines any of `onClick`, `onKeyDown`, `onKeyUp`,
19
19
  * `onCompositionStart`, `onCompositionUpdate`, or `onCompositionEnd`.
20
20
  * Non-box leaves (`text`, `image`, `scene3d`) are ignored — only `box` nodes participate in this walk.
21
+ * Boxes with a missing or non-array `children` field are treated as leaf boxes (no throw) so bad
22
+ * deserialization cannot take down focus walks.
21
23
  * Skips boxes whose layout bounds are non-finite or have negative width/height, and does not walk
22
24
  * their subtrees — same rule as hit-testing so corrupt geometry cannot enter focus order.
23
25
  *
@@ -1 +1 @@
1
- {"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../src/focus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAIvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,UAAU,CAAA;IACnB,MAAM,EAAE,cAAc,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,qDAAqD;AACrD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAoC,CAAA;AAE1F,+BAA+B;AAC/B,wBAAgB,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAE1E;AAED,+BAA+B;AAC/B,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,cAAc,GACrB,WAAW,EAAE,CAIf;AAsDD,uFAAuF;AACvF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,WAAW,GAAG,IAAI,CAgBhG;AAED,gDAAgD;AAChD,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAgBvE;AAED,oDAAoD;AACpD,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAiBvE"}
1
+ {"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../src/focus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAIvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,UAAU,CAAA;IACnB,MAAM,EAAE,cAAc,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,qDAAqD;AACrD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAoC,CAAA;AAE1F,+BAA+B;AAC/B,wBAAgB,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAE1E;AAED,+BAA+B;AAC/B,wBAAgB,UAAU,IAAI,IAAI,CAEjC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,EAClB,MAAM,EAAE,cAAc,GACrB,WAAW,EAAE,CAIf;AAwDD,uFAAuF;AACvF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,WAAW,GAAG,IAAI,CAgBhG;AAED,gDAAgD;AAChD,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAgBvE;AAED,oDAAoD;AACpD,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAiBvE"}
package/dist/focus.js CHANGED
@@ -17,6 +17,8 @@ export function clearFocus() {
17
17
  * A box is focusable when it defines any of `onClick`, `onKeyDown`, `onKeyUp`,
18
18
  * `onCompositionStart`, `onCompositionUpdate`, or `onCompositionEnd`.
19
19
  * Non-box leaves (`text`, `image`, `scene3d`) are ignored — only `box` nodes participate in this walk.
20
+ * Boxes with a missing or non-array `children` field are treated as leaf boxes (no throw) so bad
21
+ * deserialization cannot take down focus walks.
20
22
  * Skips boxes whose layout bounds are non-finite or have negative width/height, and does not walk
21
23
  * their subtrees — same rule as hit-testing so corrupt geometry cannot enter focus order.
22
24
  *
@@ -37,10 +39,12 @@ function collectFocusable(element, layout, results) {
37
39
  if (hasFocusCandidateHandlers(element.handlers)) {
38
40
  results.push({ element, layout });
39
41
  }
40
- for (let i = 0; i < element.children.length; i++) {
42
+ const kids = element.children;
43
+ const n = Array.isArray(kids) ? kids.length : 0;
44
+ for (let i = 0; i < n; i++) {
41
45
  const childLayout = layout.children[i];
42
46
  if (childLayout) {
43
- collectFocusable(element.children[i], childLayout, results);
47
+ collectFocusable(kids[i], childLayout, results);
44
48
  }
45
49
  }
46
50
  }
package/dist/focus.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"focus.js","sourceRoot":"","sources":["../src/focus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"focus.js","sourceRoot":"","sources":["../src/focus.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -17,7 +17,7 @@ export { sphere, points, line, ring, ambientLight, directionalLight, group } fro
17
17
  export { createApp } from './app.js';
18
18
  export type { App, AppOptions } from './app.js';
19
19
  export { toLayoutTree } from './tree.js';
20
- export { resolveDirectionValue, resolveElementDirection } from './direction.js';
20
+ export { resolveDirectionValue, resolveElementDirection, resolveComputeLayoutDirection, } from './direction.js';
21
21
  export type { ResolvedDirection } from './direction.js';
22
22
  export { dispatchHit, getCursorAtPoint, hasInteractiveHitAtPoint, hitPathAtPoint } from './hit-test.js';
23
23
  export type { HitDispatchResult } from './hit-test.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -20,7 +20,7 @@ export { sphere, points, line, ring, ambientLight, directionalLight, group } fro
20
20
  export { createApp } from './app.js';
21
21
  // Tree conversion
22
22
  export { toLayoutTree } from './tree.js';
23
- export { resolveDirectionValue, resolveElementDirection } from './direction.js';
23
+ export { resolveDirectionValue, resolveElementDirection, resolveComputeLayoutDirection, } from './direction.js';
24
24
  // Hit testing
25
25
  export { dispatchHit, getCursorAtPoint, hasInteractiveHitAtPoint, hitPathAtPoint } from './hit-test.js';
26
26
  export { finiteNumberOrZero, layoutBoundsAreFinite } from './layout-bounds.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;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,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEzD,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,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAG/E,cAAc;AACd,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEvG,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAE9E,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,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,yBAAyB;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;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,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEzD,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,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAE9E,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,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,yBAAyB;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAGvD,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/tree.d.ts CHANGED
@@ -12,8 +12,9 @@ import type { UIElement } from './types.js';
12
12
  * The layout **root** omits `dir` so {@link import('./app.js').createApp}'s
13
13
  * {@link import('./app.js').AppOptions.layoutDirection} (or the root element’s resolved `dir` when that
14
14
  * option is omitted) stays the single source of truth for the Yoga owner direction passed to Textura.
15
- * Descendant nodes forward `dir` (`ltr` | `rtl` | `auto`) into Textura for per-subtree flex direction;
16
- * interaction helpers still resolve direction with {@link import('./direction.js').resolveElementDirection}.
15
+ * Descendant nodes forward `dir` (`ltr` | `rtl` | `auto`, or malformed strings from bad serialization) into Textura
16
+ * for per-subtree flex direction; Textura maps non-`ltr` / non-`rtl` values to Yoga **Inherit** (same as `auto`).
17
+ * Interaction helpers still resolve direction with {@link import('./direction.js').resolveElementDirection}.
17
18
  *
18
19
  * Does not mutate the source element or its `props` (strip list is applied to a shallow copy).
19
20
  *
@@ -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;AA0C3C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,UAAO,GAAG,UAAU,CAchF"}
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;AA0C3C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,YAAY,UAAO,GAAG,UAAU,CAchF"}
package/dist/tree.js CHANGED
@@ -49,8 +49,9 @@ function stripStyleProps(props) {
49
49
  * The layout **root** omits `dir` so {@link import('./app.js').createApp}'s
50
50
  * {@link import('./app.js').AppOptions.layoutDirection} (or the root element’s resolved `dir` when that
51
51
  * option is omitted) stays the single source of truth for the Yoga owner direction passed to Textura.
52
- * Descendant nodes forward `dir` (`ltr` | `rtl` | `auto`) into Textura for per-subtree flex direction;
53
- * interaction helpers still resolve direction with {@link import('./direction.js').resolveElementDirection}.
52
+ * Descendant nodes forward `dir` (`ltr` | `rtl` | `auto`, or malformed strings from bad serialization) into Textura
53
+ * for per-subtree flex direction; Textura maps non-`ltr` / non-`rtl` values to Yoga **Inherit** (same as `auto`).
54
+ * Interaction helpers still resolve direction with {@link import('./direction.js').resolveElementDirection}.
54
55
  *
55
56
  * Does not mutate the source element or its `props` (strip list is applied to a shallow copy).
56
57
  *
package/dist/tree.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;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,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;;;;;;;;;;;;;;;;;;;GAmBG;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"}
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;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,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,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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geometra/core",
3
- "version": "1.8.0",
3
+ "version": "1.8.1",
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.8.0"
42
+ "textura": "^1.8.1"
43
43
  },
44
44
  "optionalDependencies": {
45
45
  "@napi-rs/canvas": "^0.1.65"