@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.
Files changed (33) hide show
  1. package/dist/src/core/elementNode.d.ts +3 -0
  2. package/dist/src/core/elementNode.js +25 -37
  3. package/dist/src/core/elementNode.js.map +1 -1
  4. package/dist/src/core/intrinsicTypes.d.ts +1 -1
  5. package/dist/src/index.d.ts +2 -2
  6. package/dist/src/index.js +1 -2
  7. package/dist/src/index.js.map +1 -1
  8. package/dist/src/primitives/FadeInOut.d.ts +9 -1
  9. package/dist/src/primitives/FadeInOut.jsx +14 -2
  10. package/dist/src/primitives/FadeInOut.jsx.map +1 -1
  11. package/dist/src/primitives/Lazy.jsx +1 -1
  12. package/dist/src/primitives/Lazy.jsx.map +1 -1
  13. package/dist/src/primitives/Virtual.jsx +11 -3
  14. package/dist/src/primitives/Virtual.jsx.map +1 -1
  15. package/dist/src/primitives/borderBox.d.ts +8 -0
  16. package/dist/src/primitives/borderBox.jsx +46 -0
  17. package/dist/src/primitives/borderBox.jsx.map +1 -0
  18. package/dist/src/primitives/index.d.ts +2 -1
  19. package/dist/src/primitives/index.js +2 -1
  20. package/dist/src/primitives/index.js.map +1 -1
  21. package/dist/src/primitives/utils/handleNavigation.js +4 -2
  22. package/dist/src/primitives/utils/handleNavigation.js.map +1 -1
  23. package/dist/tsconfig.tsbuildinfo +1 -1
  24. package/package.json +1 -1
  25. package/src/core/elementNode.ts +50 -115
  26. package/src/core/intrinsicTypes.ts +5 -25
  27. package/src/index.ts +2 -11
  28. package/src/primitives/FadeInOut.tsx +17 -4
  29. package/src/primitives/Lazy.tsx +1 -1
  30. package/src/primitives/Virtual.tsx +14 -4
  31. package/src/primitives/borderBox.tsx +60 -0
  32. package/src/primitives/index.ts +2 -5
  33. 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