@geometra/core 1.0.0 → 1.1.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/README.md +10 -1
- package/dist/a11y.d.ts.map +1 -1
- package/dist/a11y.js +6 -2
- package/dist/a11y.js.map +1 -1
- package/dist/animation.d.ts +39 -1
- package/dist/animation.d.ts.map +1 -1
- package/dist/animation.js +148 -1
- package/dist/animation.js.map +1 -1
- package/dist/app.d.ts +4 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +17 -3
- package/dist/app.js.map +1 -1
- package/dist/direction.d.ts +11 -0
- package/dist/direction.d.ts.map +1 -0
- package/dist/direction.js +18 -0
- package/dist/direction.js.map +1 -0
- package/dist/elements.d.ts +4 -4
- package/dist/elements.d.ts.map +1 -1
- package/dist/elements.js.map +1 -1
- package/dist/focus-trap.d.ts +12 -1
- package/dist/focus-trap.d.ts.map +1 -1
- package/dist/focus-trap.js +12 -1
- package/dist/focus-trap.js.map +1 -1
- package/dist/focus.d.ts +3 -2
- package/dist/focus.d.ts.map +1 -1
- package/dist/focus.js +6 -0
- package/dist/focus.js.map +1 -1
- package/dist/fonts.d.ts +35 -2
- package/dist/fonts.d.ts.map +1 -1
- package/dist/fonts.js +335 -12
- package/dist/fonts.js.map +1 -1
- package/dist/hit-test.d.ts +35 -4
- package/dist/hit-test.d.ts.map +1 -1
- package/dist/hit-test.js +195 -70
- package/dist/hit-test.js.map +1 -1
- package/dist/index.d.ts +21 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -6
- package/dist/index.js.map +1 -1
- package/dist/keyboard.d.ts +5 -2
- package/dist/keyboard.d.ts.map +1 -1
- package/dist/keyboard.js +5 -2
- package/dist/keyboard.js.map +1 -1
- package/dist/selection.d.ts +5 -2
- package/dist/selection.d.ts.map +1 -1
- package/dist/selection.js +37 -8
- package/dist/selection.js.map +1 -1
- package/dist/seo.d.ts +27 -0
- package/dist/seo.d.ts.map +1 -1
- package/dist/seo.js +240 -13
- package/dist/seo.js.map +1 -1
- package/dist/signals.d.ts.map +1 -1
- package/dist/signals.js +44 -7
- package/dist/signals.js.map +1 -1
- package/dist/text-input-history.d.ts +14 -4
- package/dist/text-input-history.d.ts.map +1 -1
- package/dist/text-input-history.js +37 -8
- package/dist/text-input-history.js.map +1 -1
- package/dist/text-input.d.ts +8 -8
- package/dist/text-input.d.ts.map +1 -1
- package/dist/text-input.js +45 -17
- package/dist/text-input.js.map +1 -1
- package/dist/tree.d.ts.map +1 -1
- package/dist/tree.js +3 -0
- package/dist/tree.js.map +1 -1
- package/dist/types.d.ts +29 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/virtual-scroll.d.ts +11 -1
- package/dist/virtual-scroll.d.ts.map +1 -1
- package/dist/virtual-scroll.js +14 -5
- package/dist/virtual-scroll.js.map +1 -1
- package/package.json +2 -2
package/dist/hit-test.js
CHANGED
|
@@ -1,19 +1,58 @@
|
|
|
1
1
|
const zIndexOrderCache = new WeakMap();
|
|
2
|
+
/**
|
|
3
|
+
* Reject NaN, ±Infinity, and negative sizes so corrupt layout cannot invert the hit rect or make
|
|
4
|
+
* `x <= absX + width` match unbounded spans when width is infinite.
|
|
5
|
+
*/
|
|
6
|
+
function layoutBoundsAreFinite(layout) {
|
|
7
|
+
return (Number.isFinite(layout.x) &&
|
|
8
|
+
Number.isFinite(layout.y) &&
|
|
9
|
+
Number.isFinite(layout.width) &&
|
|
10
|
+
Number.isFinite(layout.height) &&
|
|
11
|
+
layout.width >= 0 &&
|
|
12
|
+
layout.height >= 0);
|
|
13
|
+
}
|
|
14
|
+
/** Ignore non-finite and non-number scroll props so child offsets stay finite (±Infinity would poison abs coords). */
|
|
15
|
+
function finiteScrollOffset(value) {
|
|
16
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : 0;
|
|
17
|
+
}
|
|
2
18
|
function zIndexOf(el) {
|
|
3
|
-
|
|
19
|
+
const z = el.props.zIndex;
|
|
20
|
+
return typeof z === 'number' && Number.isFinite(z) ? z : 0;
|
|
4
21
|
}
|
|
5
|
-
function
|
|
6
|
-
const signature = boxEl.children.map((child, i) => `${i}:${zIndexOf(child)}`).join('|');
|
|
22
|
+
function getChildrenByZAsc(boxEl) {
|
|
7
23
|
const cached = zIndexOrderCache.get(boxEl);
|
|
8
|
-
if (cached && cached.
|
|
9
|
-
|
|
24
|
+
if (cached && cached.zValues.length === boxEl.children.length) {
|
|
25
|
+
let unchanged = true;
|
|
26
|
+
for (let i = 0; i < boxEl.children.length; i++) {
|
|
27
|
+
if (cached.zValues[i] !== zIndexOf(boxEl.children[i])) {
|
|
28
|
+
unchanged = false;
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (unchanged)
|
|
33
|
+
return cached.asc;
|
|
10
34
|
}
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
35
|
+
const zValues = boxEl.children.map(child => zIndexOf(child));
|
|
36
|
+
const asc = boxEl.children
|
|
37
|
+
.map((_, i) => i)
|
|
38
|
+
.sort((a, b) => zValues[a] - zValues[b]);
|
|
39
|
+
zIndexOrderCache.set(boxEl, { zValues, asc });
|
|
40
|
+
return asc;
|
|
41
|
+
}
|
|
42
|
+
function isFocusableHandlers(handlers) {
|
|
43
|
+
return !!(handlers?.onClick ||
|
|
44
|
+
handlers?.onKeyDown ||
|
|
45
|
+
handlers?.onKeyUp ||
|
|
46
|
+
handlers?.onCompositionStart ||
|
|
47
|
+
handlers?.onCompositionUpdate ||
|
|
48
|
+
handlers?.onCompositionEnd);
|
|
14
49
|
}
|
|
15
50
|
/** Walk the element tree + computed layout in parallel to find hit targets at (x, y). */
|
|
16
51
|
function collectHits(element, layout, x, y, offsetX, offsetY, results) {
|
|
52
|
+
if (!Number.isFinite(x) || !Number.isFinite(y))
|
|
53
|
+
return;
|
|
54
|
+
if (!layoutBoundsAreFinite(layout))
|
|
55
|
+
return;
|
|
17
56
|
const absX = offsetX + layout.x;
|
|
18
57
|
const absY = offsetY + layout.y;
|
|
19
58
|
// Apply scroll offset for scroll containers
|
|
@@ -27,10 +66,8 @@ function collectHits(element, layout, x, y, offsetX, offsetY, results) {
|
|
|
27
66
|
return;
|
|
28
67
|
}
|
|
29
68
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
if (scrollY)
|
|
33
|
-
childOffsetY -= scrollY;
|
|
69
|
+
childOffsetX -= finiteScrollOffset(scrollX);
|
|
70
|
+
childOffsetY -= finiteScrollOffset(scrollY);
|
|
34
71
|
}
|
|
35
72
|
const inside = x >= absX &&
|
|
36
73
|
x <= absX + layout.width &&
|
|
@@ -40,10 +77,11 @@ function collectHits(element, layout, x, y, offsetX, offsetY, results) {
|
|
|
40
77
|
return;
|
|
41
78
|
if (element.kind === 'box') {
|
|
42
79
|
const boxEl = element;
|
|
43
|
-
|
|
80
|
+
const passThrough = boxEl.props.pointerEvents === 'none';
|
|
81
|
+
if (boxEl.handlers && !passThrough) {
|
|
44
82
|
results.push({ layout, handlers: boxEl.handlers, element: boxEl, absX, absY });
|
|
45
83
|
}
|
|
46
|
-
for (const i of
|
|
84
|
+
for (const i of getChildrenByZAsc(boxEl)) {
|
|
47
85
|
const childLayout = layout.children[i];
|
|
48
86
|
if (childLayout) {
|
|
49
87
|
collectHits(boxEl.children[i], childLayout, x, y, childOffsetX, childOffsetY, results);
|
|
@@ -51,73 +89,160 @@ function collectHits(element, layout, x, y, offsetX, offsetY, results) {
|
|
|
51
89
|
}
|
|
52
90
|
}
|
|
53
91
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
target: hit.layout,
|
|
69
|
-
...extra,
|
|
70
|
-
};
|
|
71
|
-
handler(event);
|
|
72
|
-
const focusable = !!(hit.handlers.onClick ||
|
|
73
|
-
hit.handlers.onKeyDown ||
|
|
74
|
-
hit.handlers.onKeyUp ||
|
|
75
|
-
hit.handlers.onCompositionStart ||
|
|
76
|
-
hit.handlers.onCompositionUpdate ||
|
|
77
|
-
hit.handlers.onCompositionEnd);
|
|
78
|
-
const focusTarget = eventType === 'onClick' && focusable
|
|
79
|
-
? { element: hit.element, layout: hit.layout }
|
|
80
|
-
: undefined;
|
|
81
|
-
return { handled: true, focusTarget };
|
|
92
|
+
function dispatchHitRecursive(element, layout, eventType, x, y, offsetX, offsetY, extra) {
|
|
93
|
+
if (!Number.isFinite(x) || !Number.isFinite(y))
|
|
94
|
+
return { handled: false };
|
|
95
|
+
if (!layoutBoundsAreFinite(layout))
|
|
96
|
+
return { handled: false };
|
|
97
|
+
if (element.kind !== 'box')
|
|
98
|
+
return { handled: false };
|
|
99
|
+
const boxEl = element;
|
|
100
|
+
const absX = offsetX + layout.x;
|
|
101
|
+
const absY = offsetY + layout.y;
|
|
102
|
+
const { overflow, scrollX, scrollY } = boxEl.props;
|
|
103
|
+
if (overflow === 'hidden' || overflow === 'scroll') {
|
|
104
|
+
if (x < absX || x > absX + layout.width || y < absY || y > absY + layout.height) {
|
|
105
|
+
return { handled: false };
|
|
82
106
|
}
|
|
83
107
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
108
|
+
const inside = x >= absX &&
|
|
109
|
+
x <= absX + layout.width &&
|
|
110
|
+
y >= absY &&
|
|
111
|
+
y <= absY + layout.height;
|
|
112
|
+
if (!inside)
|
|
113
|
+
return { handled: false };
|
|
114
|
+
let focusTarget;
|
|
115
|
+
const childOffsetX = absX - finiteScrollOffset(scrollX);
|
|
116
|
+
const childOffsetY = absY - finiteScrollOffset(scrollY);
|
|
117
|
+
const asc = getChildrenByZAsc(boxEl);
|
|
118
|
+
for (let k = asc.length - 1; k >= 0; k--) {
|
|
119
|
+
const i = asc[k];
|
|
120
|
+
const childLayout = layout.children[i];
|
|
121
|
+
if (!childLayout)
|
|
122
|
+
continue;
|
|
123
|
+
const childResult = dispatchHitRecursive(boxEl.children[i], childLayout, eventType, x, y, childOffsetX, childOffsetY, extra);
|
|
124
|
+
if (childResult.handled)
|
|
125
|
+
return childResult;
|
|
126
|
+
if (eventType === 'onClick' && !focusTarget && childResult.focusTarget) {
|
|
127
|
+
focusTarget = childResult.focusTarget;
|
|
98
128
|
}
|
|
99
129
|
}
|
|
100
|
-
|
|
130
|
+
if (boxEl.props.pointerEvents === 'none') {
|
|
131
|
+
return focusTarget ? { handled: false, focusTarget } : { handled: false };
|
|
132
|
+
}
|
|
133
|
+
const handlers = boxEl.handlers;
|
|
134
|
+
const handler = handlers?.[eventType];
|
|
135
|
+
if (handler) {
|
|
136
|
+
const event = {
|
|
137
|
+
x,
|
|
138
|
+
y,
|
|
139
|
+
localX: x - absX,
|
|
140
|
+
localY: y - absY,
|
|
141
|
+
target: layout,
|
|
142
|
+
...extra,
|
|
143
|
+
};
|
|
144
|
+
handler(event);
|
|
145
|
+
return {
|
|
146
|
+
handled: true,
|
|
147
|
+
focusTarget: eventType === 'onClick' && isFocusableHandlers(handlers)
|
|
148
|
+
? { element: boxEl, layout }
|
|
149
|
+
: undefined,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
if (eventType === 'onClick' && !focusTarget && isFocusableHandlers(handlers)) {
|
|
153
|
+
focusTarget = { element: boxEl, layout };
|
|
154
|
+
}
|
|
155
|
+
return focusTarget ? { handled: false, focusTarget } : { handled: false };
|
|
101
156
|
}
|
|
102
|
-
/**
|
|
157
|
+
/**
|
|
158
|
+
* Dispatch a hit at `(x, y)` against the element tree for the given handler key
|
|
159
|
+
* (e.g. `onClick`, `onPointerDown`, `onKeyDown`, composition events).
|
|
160
|
+
* The deepest hit with a matching handler runs first; only one handler runs per call.
|
|
161
|
+
* Optional `extra` is shallow-merged onto the `HitEvent` after base fields so callers
|
|
162
|
+
* can pass modifier keys, `button`, wheel deltas, and other renderer-specific metadata.
|
|
163
|
+
* For `onClick` only, the return value may include `focusTarget` for focus routing
|
|
164
|
+
* (including click-to-focus when there is no `onClick` handler).
|
|
165
|
+
* Layout bounds must be finite and non-negative on `width` and `height`; otherwise the node is
|
|
166
|
+
* skipped for hit-testing (corrupt geometry from Yoga or a bad snapshot).
|
|
167
|
+
*/
|
|
168
|
+
export function dispatchHit(element, layout, eventType, x, y, extra) {
|
|
169
|
+
return dispatchHitRecursive(element, layout, eventType, x, y, 0, 0, extra);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* True when the point is over an element that participates in pointer hit-testing
|
|
173
|
+
* (`onClick`, `onPointerDown` / `Up` / `Move`, `onWheel`). Keyboard and composition
|
|
174
|
+
* handlers alone do not count — use this for hover / pointer-capture style checks.
|
|
175
|
+
*/
|
|
103
176
|
export function hasInteractiveHitAtPoint(element, layout, x, y) {
|
|
104
177
|
const hits = [];
|
|
105
178
|
collectHits(element, layout, x, y, 0, 0, hits);
|
|
106
179
|
for (let i = hits.length - 1; i >= 0; i--) {
|
|
107
180
|
const handlers = hits[i].handlers;
|
|
108
181
|
if (handlers.onClick ||
|
|
109
|
-
handlers.
|
|
110
|
-
handlers.
|
|
111
|
-
handlers.
|
|
112
|
-
handlers.
|
|
113
|
-
handlers.onCompositionEnd) {
|
|
182
|
+
handlers.onPointerDown ||
|
|
183
|
+
handlers.onPointerUp ||
|
|
184
|
+
handlers.onPointerMove ||
|
|
185
|
+
handlers.onWheel) {
|
|
114
186
|
return true;
|
|
115
187
|
}
|
|
116
188
|
}
|
|
117
189
|
return false;
|
|
118
190
|
}
|
|
191
|
+
/**
|
|
192
|
+
* Child indices from root to the deepest box under (x, y). Among overlapping siblings, prefers higher z-index (topmost);
|
|
193
|
+
* non-finite or non-number `zIndex` values match `dispatchHit` / paint order (treated as `0`).
|
|
194
|
+
* Boxes with `pointerEvents: 'none'` do not terminate the path when they have no deeper hit (same idea as `getCursorAtPoint` and `collectHits`).
|
|
195
|
+
* Returns `null` when the point misses the tree. Returns `[]` when the point hits the
|
|
196
|
+
* root (or a leaf box) with no deeper box hit.
|
|
197
|
+
*/
|
|
198
|
+
export function hitPathAtPoint(element, layout, x, y, offsetX = 0, offsetY = 0) {
|
|
199
|
+
if (!Number.isFinite(x) || !Number.isFinite(y))
|
|
200
|
+
return null;
|
|
201
|
+
if (!layoutBoundsAreFinite(layout))
|
|
202
|
+
return null;
|
|
203
|
+
const absX = offsetX + layout.x;
|
|
204
|
+
const absY = offsetY + layout.y;
|
|
205
|
+
if (element.kind === 'box') {
|
|
206
|
+
const { overflow } = element.props;
|
|
207
|
+
if (overflow === 'hidden' || overflow === 'scroll') {
|
|
208
|
+
if (x < absX || x > absX + layout.width || y < absY || y > absY + layout.height) {
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
const inside = x >= absX &&
|
|
214
|
+
x <= absX + layout.width &&
|
|
215
|
+
y >= absY &&
|
|
216
|
+
y <= absY + layout.height;
|
|
217
|
+
if (!inside)
|
|
218
|
+
return null;
|
|
219
|
+
if (element.kind !== 'box')
|
|
220
|
+
return null;
|
|
221
|
+
const boxEl = element;
|
|
222
|
+
let childOffsetX = absX;
|
|
223
|
+
let childOffsetY = absY;
|
|
224
|
+
childOffsetX -= finiteScrollOffset(boxEl.props.scrollX);
|
|
225
|
+
childOffsetY -= finiteScrollOffset(boxEl.props.scrollY);
|
|
226
|
+
const asc = getChildrenByZAsc(boxEl);
|
|
227
|
+
for (let k = asc.length - 1; k >= 0; k--) {
|
|
228
|
+
const i = asc[k];
|
|
229
|
+
const childLayout = layout.children[i];
|
|
230
|
+
if (!childLayout)
|
|
231
|
+
continue;
|
|
232
|
+
const sub = hitPathAtPoint(boxEl.children[i], childLayout, x, y, childOffsetX, childOffsetY);
|
|
233
|
+
if (sub !== null)
|
|
234
|
+
return [i, ...sub];
|
|
235
|
+
}
|
|
236
|
+
if (boxEl.props.pointerEvents === 'none')
|
|
237
|
+
return null;
|
|
238
|
+
return [];
|
|
239
|
+
}
|
|
119
240
|
/** Get the cursor style at a given point by walking the tree. Returns the deepest element's cursor prop. */
|
|
120
241
|
export function getCursorAtPoint(element, layout, x, y, offsetX = 0, offsetY = 0) {
|
|
242
|
+
if (!Number.isFinite(x) || !Number.isFinite(y))
|
|
243
|
+
return null;
|
|
244
|
+
if (!layoutBoundsAreFinite(layout))
|
|
245
|
+
return null;
|
|
121
246
|
const absX = offsetX + layout.x;
|
|
122
247
|
const absY = offsetY + layout.y;
|
|
123
248
|
const inside = x >= absX && x <= absX + layout.width &&
|
|
@@ -128,13 +253,11 @@ export function getCursorAtPoint(element, layout, x, y, offsetX = 0, offsetY = 0
|
|
|
128
253
|
if (element.kind === 'box') {
|
|
129
254
|
let childOffX = absX;
|
|
130
255
|
let childOffY = absY;
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
for (let ii = 0; ii < indices.length; ii++) {
|
|
137
|
-
const i = indices[ii];
|
|
256
|
+
childOffX -= finiteScrollOffset(element.props.scrollX);
|
|
257
|
+
childOffY -= finiteScrollOffset(element.props.scrollY);
|
|
258
|
+
const asc = getChildrenByZAsc(element);
|
|
259
|
+
for (let k = asc.length - 1; k >= 0; k--) {
|
|
260
|
+
const i = asc[k];
|
|
138
261
|
const childLayout = layout.children[i];
|
|
139
262
|
if (childLayout) {
|
|
140
263
|
const childCursor = getCursorAtPoint(element.children[i], childLayout, x, y, childOffX, childOffY);
|
|
@@ -143,6 +266,8 @@ export function getCursorAtPoint(element, layout, x, y, offsetX = 0, offsetY = 0
|
|
|
143
266
|
}
|
|
144
267
|
}
|
|
145
268
|
}
|
|
269
|
+
if (element.props.pointerEvents === 'none')
|
|
270
|
+
return null;
|
|
146
271
|
// Return this element's cursor
|
|
147
272
|
const cursor = element.props.cursor;
|
|
148
273
|
return cursor ?? null;
|
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
|
@@ -1,20 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Public entry for `@geometra/core`: reactive primitives, element constructors, app mount, layout-tree
|
|
4
|
+
* conversion, hit-testing, focus and keyboard/composition dispatch, text selection and input, web font
|
|
5
|
+
* helpers, animation and virtual-scroll utilities, SEO and accessibility snapshots, and shared element
|
|
6
|
+
* types (`UIElement`, `Renderer`, `FrameTimings`, …).
|
|
7
|
+
*
|
|
8
|
+
* Geometra keeps a single declarative tree across canvas, terminal, and server-driven clients; this file
|
|
9
|
+
* is the supported import surface. Optional `Renderer.setFrameTimings` receives layout wall time after
|
|
10
|
+
* Yoga so inspectors and telemetry can split layout from paint.
|
|
11
|
+
*/
|
|
1
12
|
export { signal, computed, effect, batch } from './signals.js';
|
|
2
13
|
export type { Signal, Computed } from './signals.js';
|
|
3
14
|
export { box, text, image } from './elements.js';
|
|
4
15
|
export { createApp } from './app.js';
|
|
5
16
|
export type { App, AppOptions } from './app.js';
|
|
6
17
|
export { toLayoutTree } from './tree.js';
|
|
7
|
-
export {
|
|
18
|
+
export { resolveDirectionValue, resolveElementDirection } from './direction.js';
|
|
19
|
+
export type { ResolvedDirection } from './direction.js';
|
|
20
|
+
export { dispatchHit, getCursorAtPoint, hasInteractiveHitAtPoint, hitPathAtPoint } from './hit-test.js';
|
|
8
21
|
export type { HitDispatchResult } from './hit-test.js';
|
|
9
|
-
export { extractFontFamiliesFromCSSFont, collectFontFamiliesFromTree, waitForFonts, } from './fonts.js';
|
|
10
|
-
export { focusedElement, setFocus, clearFocus, focusNext, focusPrev } from './focus.js';
|
|
22
|
+
export { extractFontFamiliesFromCSSFont, collectFontFamiliesFromTree, resolveFontLoadTimeoutMs, waitForFonts, } from './fonts.js';
|
|
23
|
+
export { focusedElement, setFocus, clearFocus, focusNext, focusPrev, collectFocusOrder } from './focus.js';
|
|
24
|
+
export type { FocusTarget } from './focus.js';
|
|
11
25
|
export { trapFocusStep } from './focus-trap.js';
|
|
12
|
-
export { dispatchKeyboardEvent } from './keyboard.js';
|
|
13
|
-
export { dispatchCompositionEvent } from './keyboard.js';
|
|
26
|
+
export { dispatchCompositionEvent, dispatchKeyboardEvent } from './keyboard.js';
|
|
14
27
|
export { collectTextNodes, getSelectedText, hitTestText } from './selection.js';
|
|
15
28
|
export type { TextNodeInfo, TextLineInfo, SelectionRange } from './selection.js';
|
|
16
|
-
export { transition, spring, easing, animationLoop } from './animation.js';
|
|
17
|
-
export type { EasingFn } from './animation.js';
|
|
29
|
+
export { transition, spring, easing, animationLoop, createTweenTimeline, createPropertyTimeline, setMotionPreference, getMotionPreference, } from './animation.js';
|
|
30
|
+
export type { EasingFn, TweenPlaybackState, TweenTimeline, PropertyTimeline, MotionPreference, } from './animation.js';
|
|
18
31
|
export { syncVirtualWindow } from './virtual-scroll.js';
|
|
19
32
|
export type { VirtualWindowState } from './virtual-scroll.js';
|
|
20
33
|
export { toSemanticHTML } from './seo.js';
|
|
@@ -25,5 +38,5 @@ export { isCollapsedSelection, getInputSelectionText, replaceInputSelection, ins
|
|
|
25
38
|
export type { TextInputState, TextInputEditResult, CaretGeometry } from './text-input.js';
|
|
26
39
|
export { createTextInputHistory, pushTextInputHistory, undoTextInputHistory, redoTextInputHistory, } from './text-input-history.js';
|
|
27
40
|
export type { TextInputHistoryState } from './text-input-history.js';
|
|
28
|
-
export type { UIElement, BoxElement, TextElement, ImageElement, StyleProps, SemanticProps, EventHandlers, HitEvent, KeyboardHitEvent, CompositionHitEvent, Component, Renderer, } from './types.js';
|
|
41
|
+
export type { UIElement, BoxElement, TextElement, ImageElement, StyleProps, Direction, DirectionProps, SemanticProps, EventHandlers, HitEvent, KeyboardHitEvent, CompositionHitEvent, Component, FrameTimings, Renderer, } from './types.js';
|
|
29
42
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Public entry for `@geometra/core`: reactive primitives, element constructors, app mount, layout-tree
|
|
4
|
+
* conversion, hit-testing, focus and keyboard/composition dispatch, text selection and input, web font
|
|
5
|
+
* helpers, animation and virtual-scroll utilities, SEO and accessibility snapshots, and shared element
|
|
6
|
+
* types (`UIElement`, `Renderer`, `FrameTimings`, …).
|
|
7
|
+
*
|
|
8
|
+
* Geometra keeps a single declarative tree across canvas, terminal, and server-driven clients; this file
|
|
9
|
+
* is the supported import surface. Optional `Renderer.setFrameTimings` receives layout wall time after
|
|
10
|
+
* Yoga so inspectors and telemetry can split layout from paint.
|
|
11
|
+
*/
|
|
1
12
|
// Reactivity
|
|
2
13
|
export { signal, computed, effect, batch } from './signals.js';
|
|
3
14
|
// Element constructors
|
|
@@ -6,19 +17,19 @@ export { box, text, image } from './elements.js';
|
|
|
6
17
|
export { createApp } from './app.js';
|
|
7
18
|
// Tree conversion
|
|
8
19
|
export { toLayoutTree } from './tree.js';
|
|
20
|
+
export { resolveDirectionValue, resolveElementDirection } from './direction.js';
|
|
9
21
|
// Hit testing
|
|
10
|
-
export { dispatchHit, getCursorAtPoint, hasInteractiveHitAtPoint } from './hit-test.js';
|
|
22
|
+
export { dispatchHit, getCursorAtPoint, hasInteractiveHitAtPoint, hitPathAtPoint } from './hit-test.js';
|
|
11
23
|
// Web fonts (browser)
|
|
12
|
-
export { extractFontFamiliesFromCSSFont, collectFontFamiliesFromTree, waitForFonts, } from './fonts.js';
|
|
24
|
+
export { extractFontFamiliesFromCSSFont, collectFontFamiliesFromTree, resolveFontLoadTimeoutMs, waitForFonts, } from './fonts.js';
|
|
13
25
|
// Focus management
|
|
14
|
-
export { focusedElement, setFocus, clearFocus, focusNext, focusPrev } from './focus.js';
|
|
26
|
+
export { focusedElement, setFocus, clearFocus, focusNext, focusPrev, collectFocusOrder } from './focus.js';
|
|
15
27
|
export { trapFocusStep } from './focus-trap.js';
|
|
16
|
-
export { dispatchKeyboardEvent } from './keyboard.js';
|
|
17
|
-
export { dispatchCompositionEvent } from './keyboard.js';
|
|
28
|
+
export { dispatchCompositionEvent, dispatchKeyboardEvent } from './keyboard.js';
|
|
18
29
|
// Text selection
|
|
19
30
|
export { collectTextNodes, getSelectedText, hitTestText } from './selection.js';
|
|
20
31
|
// Animation
|
|
21
|
-
export { transition, spring, easing, animationLoop } from './animation.js';
|
|
32
|
+
export { transition, spring, easing, animationLoop, createTweenTimeline, createPropertyTimeline, setMotionPreference, getMotionPreference, } from './animation.js';
|
|
22
33
|
// Virtual scroll helpers
|
|
23
34
|
export { syncVirtualWindow } from './virtual-scroll.js';
|
|
24
35
|
// SEO
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,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,MAAM,eAAe,CAAA;AAEhD,YAAY;AACZ,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGpC,kBAAkB;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;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,MAAM,eAAe,CAAA;AAEhD,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;AAGvG,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,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,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/keyboard.d.ts
CHANGED
|
@@ -2,9 +2,12 @@ import type { ComputedLayout } from 'textura';
|
|
|
2
2
|
import type { UIElement, KeyboardHitEvent, CompositionHitEvent } from './types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Dispatch keyboard events to the focused element.
|
|
5
|
-
*
|
|
5
|
+
* Tab / Shift+Tab focus traversal runs only for `'onKeyDown'` (not `'onKeyUp'`).
|
|
6
6
|
*/
|
|
7
7
|
export declare function dispatchKeyboardEvent(tree: UIElement, layout: ComputedLayout, eventType: 'onKeyDown' | 'onKeyUp', partialEvent: Omit<KeyboardHitEvent, 'target'>): boolean;
|
|
8
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* Dispatch IME composition events to the focused element.
|
|
10
|
+
* Returns `false` when there is no resolved focus target or the target has no handler for `eventType`.
|
|
11
|
+
*/
|
|
9
12
|
export declare function dispatchCompositionEvent(tree: UIElement, layout: ComputedLayout, eventType: 'onCompositionStart' | 'onCompositionUpdate' | 'onCompositionEnd', partialEvent: Omit<CompositionHitEvent, 'target'>): boolean;
|
|
10
13
|
//# sourceMappingURL=keyboard.d.ts.map
|
package/dist/keyboard.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAGlF;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,WAAW,GAAG,SAAS,EAClC,YAAY,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAC7C,OAAO,CAqBT;AAED
|
|
1
|
+
{"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAGlF;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,WAAW,GAAG,SAAS,EAClC,YAAY,EAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,GAC7C,OAAO,CAqBT;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,oBAAoB,GAAG,qBAAqB,GAAG,kBAAkB,EAC5E,YAAY,EAAE,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,GAChD,OAAO,CAQT"}
|
package/dist/keyboard.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { focusNext, focusPrev, resolveFocusedTarget } from './focus.js';
|
|
2
2
|
/**
|
|
3
3
|
* Dispatch keyboard events to the focused element.
|
|
4
|
-
*
|
|
4
|
+
* Tab / Shift+Tab focus traversal runs only for `'onKeyDown'` (not `'onKeyUp'`).
|
|
5
5
|
*/
|
|
6
6
|
export function dispatchKeyboardEvent(tree, layout, eventType, partialEvent) {
|
|
7
7
|
if (partialEvent.key === 'Tab' && eventType === 'onKeyDown') {
|
|
@@ -24,7 +24,10 @@ export function dispatchKeyboardEvent(tree, layout, eventType, partialEvent) {
|
|
|
24
24
|
}
|
|
25
25
|
return false;
|
|
26
26
|
}
|
|
27
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Dispatch IME composition events to the focused element.
|
|
29
|
+
* Returns `false` when there is no resolved focus target or the target has no handler for `eventType`.
|
|
30
|
+
*/
|
|
28
31
|
export function dispatchCompositionEvent(tree, layout, eventType, partialEvent) {
|
|
29
32
|
const focused = resolveFocusedTarget(tree, layout);
|
|
30
33
|
if (!focused)
|
package/dist/keyboard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEvE;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAe,EACf,MAAsB,EACtB,SAAkC,EAClC,YAA8C;IAE9C,IAAI,YAAY,CAAC,GAAG,KAAK,KAAK,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC5D,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC1B,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACzB,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACzB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAClD,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAA;IACrD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,KAAK,GAAqB,EAAE,GAAG,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAA;QAC3E,OAAO,CAAC,KAAK,CAAC,CAAA;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEvE;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAe,EACf,MAAsB,EACtB,SAAkC,EAClC,YAA8C;IAE9C,IAAI,YAAY,CAAC,GAAG,KAAK,KAAK,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC5D,IAAI,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC1B,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACzB,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACzB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAClD,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAA;IACrD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,KAAK,GAAqB,EAAE,GAAG,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAA;QAC3E,OAAO,CAAC,KAAK,CAAC,CAAA;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAe,EACf,MAAsB,EACtB,SAA4E,EAC5E,YAAiD;IAEjD,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAClD,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAA;IACrD,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAA;IAC1B,MAAM,KAAK,GAAwB,EAAE,GAAG,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAA;IAC9E,OAAO,CAAC,KAAK,CAAC,CAAA;IACd,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/dist/selection.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { ComputedLayout } from 'textura';
|
|
2
2
|
import type { UIElement, TextElement } from './types.js';
|
|
3
|
+
import { type ResolvedDirection } from './direction.js';
|
|
3
4
|
/** Info about a rendered text node's position and content. */
|
|
4
5
|
export interface TextNodeInfo {
|
|
5
6
|
element: TextElement;
|
|
7
|
+
/** Resolved runtime direction for this node. */
|
|
8
|
+
direction: ResolvedDirection;
|
|
6
9
|
/** Absolute x position. */
|
|
7
10
|
x: number;
|
|
8
11
|
/** Absolute y position. */
|
|
@@ -35,10 +38,10 @@ export interface SelectionRange {
|
|
|
35
38
|
focusOffset: number;
|
|
36
39
|
}
|
|
37
40
|
/** Collect all selectable text nodes from the element tree with their absolute positions. */
|
|
38
|
-
export declare function collectTextNodes(element: UIElement, layout: ComputedLayout, offsetX: number, offsetY: number, results: TextNodeInfo[]): void;
|
|
41
|
+
export declare function collectTextNodes(element: UIElement, layout: ComputedLayout, offsetX: number, offsetY: number, results: TextNodeInfo[], parentDirection?: ResolvedDirection): void;
|
|
39
42
|
/** Get the selected text from a selection range and text node info list. */
|
|
40
43
|
export declare function getSelectedText(range: SelectionRange, textNodes: TextNodeInfo[]): string;
|
|
41
|
-
/** Find which text node and character offset is at a given (x, y) point. */
|
|
44
|
+
/** Find which text node and character offset is at a given (x, y) point. Non-finite pointer coordinates return `null`; nodes with non-finite bounds are skipped (same invariant as pointer hit-testing). */
|
|
42
45
|
export declare function hitTestText(textNodes: TextNodeInfo[], px: number, py: number): {
|
|
43
46
|
nodeIndex: number;
|
|
44
47
|
charOffset: number;
|
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;
|
|
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;AAEhF,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,6FAA6F;AAC7F,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,CA6BN;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAC7B,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,YAAY,EAAE,GACxB,MAAM,CA+BR;AAWD,4MAA4M;AAC5M,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,CAkDlD"}
|