@lightningtv/solid 3.0.1 → 3.0.3
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/src/core/elementNode.d.ts +3 -0
- package/dist/src/core/elementNode.js +25 -37
- package/dist/src/core/elementNode.js.map +1 -1
- package/dist/src/core/intrinsicTypes.d.ts +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.js +1 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/primitives/FadeInOut.d.ts +9 -1
- package/dist/src/primitives/FadeInOut.jsx +14 -2
- package/dist/src/primitives/FadeInOut.jsx.map +1 -1
- package/dist/src/primitives/Lazy.jsx +1 -1
- package/dist/src/primitives/Lazy.jsx.map +1 -1
- package/dist/src/primitives/Virtual.jsx +11 -3
- package/dist/src/primitives/Virtual.jsx.map +1 -1
- package/dist/src/primitives/borderBox.d.ts +8 -0
- package/dist/src/primitives/borderBox.jsx +46 -0
- package/dist/src/primitives/borderBox.jsx.map +1 -0
- package/dist/src/primitives/index.d.ts +2 -1
- package/dist/src/primitives/index.js +2 -1
- package/dist/src/primitives/index.js.map +1 -1
- package/dist/src/primitives/utils/handleNavigation.js +4 -2
- package/dist/src/primitives/utils/handleNavigation.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/core/elementNode.ts +50 -115
- package/src/core/intrinsicTypes.ts +5 -25
- package/src/index.ts +2 -11
- package/src/primitives/FadeInOut.tsx +17 -4
- package/src/primitives/Lazy.tsx +1 -1
- package/src/primitives/Virtual.tsx +14 -4
- package/src/primitives/borderBox.tsx +60 -0
- package/src/primitives/index.ts +2 -5
- package/src/primitives/utils/handleNavigation.ts +14 -39
|
@@ -6,11 +6,7 @@ function idxInArray(idx: number, arr: readonly any[]): boolean {
|
|
|
6
6
|
return idx >= 0 && idx < arr.length;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
function findFirstFocusableChildIdx(
|
|
10
|
-
el: lngp.NavigableElement,
|
|
11
|
-
from = 0,
|
|
12
|
-
delta = 1,
|
|
13
|
-
): number {
|
|
9
|
+
function findFirstFocusableChildIdx(el: lngp.NavigableElement, from = 0, delta = 1): number {
|
|
14
10
|
for (let i = from; ; i += delta) {
|
|
15
11
|
if (!idxInArray(i, el.children)) {
|
|
16
12
|
if (el.wrap) {
|
|
@@ -46,9 +42,7 @@ function selectChild(el: lngp.NavigableElement, index: number): boolean {
|
|
|
46
42
|
}
|
|
47
43
|
|
|
48
44
|
/** @deprecated Use {@link navigableForwardFocus} instead */
|
|
49
|
-
export function onGridFocus(
|
|
50
|
-
_?: lngp.OnSelectedChanged,
|
|
51
|
-
): lng.ForwardFocusHandler {
|
|
45
|
+
export function onGridFocus(_?: lngp.OnSelectedChanged): lng.ForwardFocusHandler {
|
|
52
46
|
return function () {
|
|
53
47
|
return navigableForwardFocus.call(this, this);
|
|
54
48
|
};
|
|
@@ -72,6 +66,10 @@ export const navigableForwardFocus: lng.ForwardFocusHandler = function () {
|
|
|
72
66
|
|
|
73
67
|
let selected = Math.max(navigable.selected, 0);
|
|
74
68
|
|
|
69
|
+
if (this.children.length === 0) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
|
|
75
73
|
if (selected !== 0) {
|
|
76
74
|
selected = lng.clamp(selected, 0, Math.max(0, this.children.length - 1));
|
|
77
75
|
while (!idxInArray(selected, this.children)) {
|
|
@@ -85,14 +83,9 @@ export const navigableForwardFocus: lng.ForwardFocusHandler = function () {
|
|
|
85
83
|
return selectChild(navigable, selected);
|
|
86
84
|
};
|
|
87
85
|
|
|
88
|
-
export function handleNavigation(
|
|
89
|
-
direction: 'up' | 'right' | 'down' | 'left',
|
|
90
|
-
): lng.KeyHandler {
|
|
86
|
+
export function handleNavigation(direction: 'up' | 'right' | 'down' | 'left'): lng.KeyHandler {
|
|
91
87
|
return function () {
|
|
92
|
-
return moveSelection(
|
|
93
|
-
this as lngp.NavigableElement,
|
|
94
|
-
direction === 'up' || direction === 'left' ? -1 : 1,
|
|
95
|
-
);
|
|
88
|
+
return moveSelection(this as lngp.NavigableElement, direction === 'up' || direction === 'left' ? -1 : 1);
|
|
96
89
|
};
|
|
97
90
|
}
|
|
98
91
|
|
|
@@ -113,19 +106,13 @@ export function handleNavigation(
|
|
|
113
106
|
* ```
|
|
114
107
|
*/
|
|
115
108
|
export const navigableHandleNavigation: lng.KeyHandler = function (e) {
|
|
116
|
-
return moveSelection(
|
|
117
|
-
this as lngp.NavigableElement,
|
|
118
|
-
e.key === 'ArrowUp' || e.key === 'ArrowLeft' ? -1 : 1,
|
|
119
|
-
);
|
|
109
|
+
return moveSelection(this as lngp.NavigableElement, e.key === 'ArrowUp' || e.key === 'ArrowLeft' ? -1 : 1);
|
|
120
110
|
};
|
|
121
111
|
|
|
122
112
|
/**
|
|
123
113
|
* Moves the selection within a {@link lngp.NavigableElement}.
|
|
124
114
|
*/
|
|
125
|
-
export function moveSelection(
|
|
126
|
-
el: lngp.NavigableElement,
|
|
127
|
-
delta: number,
|
|
128
|
-
): boolean {
|
|
115
|
+
export function moveSelection(el: lngp.NavigableElement, delta: number): boolean {
|
|
129
116
|
let selected = findFirstFocusableChildIdx(el, el.selected + delta, delta);
|
|
130
117
|
|
|
131
118
|
if (selected === -1) {
|
|
@@ -148,8 +135,7 @@ export function moveSelection(
|
|
|
148
135
|
lng.assertTruthy(lastSelectedChild instanceof lng.ElementNode);
|
|
149
136
|
|
|
150
137
|
const num = lastSelectedChild.selected || 0;
|
|
151
|
-
active.selected =
|
|
152
|
-
num < active.children.length ? num : active.children.length - 1;
|
|
138
|
+
active.selected = num < active.children.length ? num : active.children.length - 1;
|
|
153
139
|
}
|
|
154
140
|
|
|
155
141
|
return selectChild(el, selected);
|
|
@@ -161,10 +147,7 @@ function distanceBetweenRectCenters(a: lng.Rect, b: lng.Rect): number {
|
|
|
161
147
|
return Math.sqrt(dx * dx + dy * dy);
|
|
162
148
|
}
|
|
163
149
|
|
|
164
|
-
function findClosestFocusableChildIdx(
|
|
165
|
-
el: lng.ElementNode,
|
|
166
|
-
prevEl: lng.ElementNode,
|
|
167
|
-
): number {
|
|
150
|
+
function findClosestFocusableChildIdx(el: lng.ElementNode, prevEl: lng.ElementNode): number {
|
|
168
151
|
// select child closest to the previous active element
|
|
169
152
|
const prevRect = lng.getElementScreenRect(prevEl);
|
|
170
153
|
const elRect = lng.getElementScreenRect(el);
|
|
@@ -272,11 +255,7 @@ export const spatialHandleNavigation: lng.KeyHandler = function (e) {
|
|
|
272
255
|
|
|
273
256
|
// Select next/prev child in the current column/row
|
|
274
257
|
if (flexDelta !== 0) {
|
|
275
|
-
for (
|
|
276
|
-
let i = selected + flexDelta;
|
|
277
|
-
idxInArray(i, this.children);
|
|
278
|
-
i += flexDelta
|
|
279
|
-
) {
|
|
258
|
+
for (let i = selected + flexDelta; idxInArray(i, this.children); i += flexDelta) {
|
|
280
259
|
const child = this.children[i]!;
|
|
281
260
|
if (child.skipFocus) continue;
|
|
282
261
|
|
|
@@ -291,11 +270,7 @@ export const spatialHandleNavigation: lng.KeyHandler = function (e) {
|
|
|
291
270
|
let closestIdx = -1;
|
|
292
271
|
let closestDist = Infinity;
|
|
293
272
|
|
|
294
|
-
for (
|
|
295
|
-
let i = selected + crossDelta;
|
|
296
|
-
idxInArray(i, this.children);
|
|
297
|
-
i += crossDelta
|
|
298
|
-
) {
|
|
273
|
+
for (let i = selected + crossDelta; idxInArray(i, this.children); i += crossDelta) {
|
|
299
274
|
const child = this.children[i]!;
|
|
300
275
|
if (child.skipFocus) continue;
|
|
301
276
|
|